:root{--bg:#fff;--bg-soft:#f5f7fb;--fg:#18181b;--fg-soft:#52525b;--border:#e4e4e7;--primary:#6b46c1;--primary-soft:#ede9fe;--accent:#f59e0b;--danger:#dc2626;--success:#16a34a}*{box-sizing:border-box}body,html{margin:0;padding:0;background:var(--bg);color:var(--fg);font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,sans-serif}a{color:var(--primary);text-decoration:none}a:hover{text-decoration:underline}button{font-family:inherit}.dark{background:#0c0d10;color:#f1f5f9}.dark a{color:#a78bfa}input,select,textarea{font:inherit;padding:.6rem .8rem;border:1px solid var(--border);border-radius:6px;background:#fff;color:inherit;width:100%}textarea{min-height:110px;resize:vertical}label{display:block;font-size:.9rem;color:var(--fg-soft);margin-bottom:.3rem}.btn{display:inline-flex;align-items:center;gap:.4rem;padding:.6rem 1.1rem;border-radius:8px;border:1px solid var(--border);background:#fff;color:var(--fg);cursor:pointer;font-weight:500}.btn:hover{background:var(--bg-soft)}.btn-primary{background:var(--primary);color:#fff;border-color:var(--primary)}.btn-primary:hover{background:#5b3aa5}.btn-danger{background:#fff;color:var(--danger);border-color:var(--danger)}.card{border:1px solid var(--border);border-radius:10px;padding:1.25rem;background:#fff}.badge{display:inline-block;padding:.15rem .5rem;border-radius:999px;font-size:.75rem;background:var(--primary-soft);color:var(--primary)}.badge-warn{background:#fef3c7;color:#92400e}.badge-success{background:#dcfce7;color:#14532d}.badge-danger{background:#fee2e2;color:#991b1b}table{width:100%;border-collapse:collapse}td,th{text-align:left;padding:.6rem .75rem;border-bottom:1px solid var(--border);font-size:.92rem}th{color:var(--fg-soft);font-weight:500}.app-main{flex:1 1;min-width:0;height:100vh;overflow-y:auto;padding:2rem 2.5rem}.table-wrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}@media (max-width:640px){.app-main,.card{padding:1rem}td,th{padding:.5rem;font-size:.85rem}h1{font-size:1.4rem}}@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}