*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}:root{--bg: #0d0f14;--surface: #13161e;--surface2: #1a1e2a;--surface3: #222738;--border: rgba(255,255,255,.06);--border2: rgba(255,255,255,.1);--text: #e8eaf0;--text2: #8b90a0;--text3: #545870;--accent: #6c63ff;--accent2: #8b85ff;--green: #2dd4a0;--red: #ff5f7e;--amber: #fbbf24;--blue: #38bdf8;--pink: #f472b6;--teal: #2dd4bf;--sidebar-w: 220px;--topbar-h: 60px;--radius: 12px;--radius-sm: 8px;--radius-xs: 5px;--font-sans: "DM Sans", sans-serif;--font-mono: "DM Mono", monospace;--transition: .15s ease}[data-theme=light]{--bg: #f0f2f8;--surface: #ffffff;--surface2: #f7f8fc;--surface3: #edf0f7;--border: rgba(0,0,0,.07);--border2: rgba(0,0,0,.12);--text: #0d0f1a;--text2: #525770;--text3: #9499b0;--accent: #5b52f0;--accent2: #7a73f7;--green: #0ea573;--red: #e5374e;--amber: #d97706;--blue: #0284c7;--pink: #db2777;--teal: #0d9488}html{font-size:14px}body{font-family:var(--font-sans);background:var(--bg);color:var(--text);line-height:1.5;min-height:100vh;overflow-x:hidden;-webkit-font-smoothing:antialiased;transition:background var(--transition),color var(--transition)}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}::selection{background:#6c63ff4d;color:var(--text)}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.fade-in{animation:fadeIn .3s ease forwards}.slide-up{animation:slideUp .2s ease forwards}.mono{font-family:var(--font-mono)}.text-sm{font-size:12px}.text-xs{font-size:11px}.text-muted{color:var(--text2)}.text-hint{color:var(--text3)}.text-green{color:var(--green)}.text-red{color:var(--red)}.text-amber{color:var(--amber)}.text-accent{color:var(--accent)}.flex{display:flex}.flex-col{display:flex;flex-direction:column}.items-center{align-items:center}.justify-between{justify-content:space-between}.gap-1{gap:4px}.gap-2{gap:8px}.gap-3{gap:12px}.gap-4{gap:16px}input,select,textarea,button{font-family:var(--font-sans);font-size:13px}select option{background:var(--surface);color:var(--text)}
