*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%}body{background:var(--bg-page);color:var(--tx-primary);-webkit-font-smoothing:antialiased;min-height:100dvh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;line-height:1.5}img,svg{max-width:100%;display:block}button{cursor:pointer;background:0 0;border:none;font-family:inherit}input,select,textarea{font-family:inherit;font-size:inherit}a{color:inherit;text-decoration:none}:root{--brand:#1a56e8;--brand-dark:#0f3db0;--brand-light:#1a56e814;--brand-ring:#1a56e833;--ok:#166534;--ok-bg:#f0fdf4;--ok-border:#16a34a;--warn:#92400e;--warn-bg:#fffbeb;--warn-border:#92400e40;--err:#991b1b;--err-bg:#fef2f2;--err-border:#991b1b40;--info:#1e40af;--info-bg:#eff6ff;--info-border:#1e40af33;--bg-page:#f0f2f5;--bg-card:#fff;--bg-subtle:#f8fafc;--bg-hover:#f1f5f9;--tx-primary:#0f172a;--tx-secondary:#475569;--tx-muted:#94a3b8;--tx-inverse:#fff;--border:#e2e8f0;--border-strong:#cbd5e1;--shadow-sm:0 1px 3px #00000014;--shadow-md:0 4px 16px #0000001a;--shadow-lg:0 12px 40px #00000024;--shadow-xl:0 24px 64px #0000002e;--r-sm:6px;--r-md:8px;--r-lg:12px;--r-xl:16px;--r-full:9999px;--space-xs:4px;--space-sm:8px;--space-md:12px;--space-lg:16px;--space-xl:24px;--t-fast:.1s ease;--t-base:.15s ease;--t-slow:.25s ease;--sidebar-w:240px;--topbar-h:56px;--content-max:900px}@media (prefers-color-scheme:dark){:root{--bg-page:#0f1623;--bg-card:#1a2235;--bg-subtle:#141d2e;--bg-hover:#1e2a3e;--tx-primary:#f1f5f9;--tx-secondary:#94a3b8;--tx-muted:#475569;--border:#1e2a3e;--border-strong:#2d3a4e}}.card{background:var(--bg-card);border:.5px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--shadow-sm)}::-webkit-scrollbar{width:4px;height:4px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:4px}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes spin{to{transform:rotate(360deg)}}.animate-fade{animation:.18s fadeIn}.spin{animation:.8s linear infinite spin}
