:root{--bg: #f3f4fb;--surface: #ffffff;--surface-2: #f7f8fc;--surface-3: #eef0f7;--border: #e6e8f2;--border-strong: #d6d9e6;--text: #161a27;--text-2: #5a6173;--text-3: #9499a9;--accent: #4f46e5;--accent-soft: #edecfd;--accent-text: #4f46e5;--sidebar-bg: #10121c;--sidebar-text: #aeb4c6;--sidebar-muted: #717892;--green: #16a34a;--green-soft: #e7f6ed;--amber: #d97706;--amber-soft: #fdf2e3;--red: #dc2626;--red-soft: #fdeaea;--sky: #0284c7;--sky-soft: #e6f3fb;--violet: #7c3aed;--violet-soft: #f1ebfd;--shadow: 0 1px 2px rgba(16, 24, 40, .04), 0 1px 3px rgba(16, 24, 40, .07);--shadow-lg: 0 4px 12px rgba(16, 24, 40, .06), 0 12px 32px rgba(16, 24, 40, .08);--font-sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--font-mono: "IBM Plex Mono", ui-monospace, monospace}html[data-theme=dark]{--bg: #0a0c13;--surface: #13161f;--surface-2: #171b25;--surface-3: #1e222e;--border: #252a37;--border-strong: #303645;--text: #e8eaf2;--text-2: #9aa1b4;--text-3: #646b7e;--accent: #6366f1;--accent-soft: #1f2236;--accent-text: #a5a9f5;--sidebar-bg: #070810;--sidebar-text: #aeb4c6;--sidebar-muted: #646b80;--green: #34d399;--green-soft: #0f2a22;--amber: #fbbf24;--amber-soft: #2c2110;--red: #f87171;--red-soft: #2c1414;--sky: #38bdf8;--sky-soft: #0c2230;--violet: #a78bfa;--violet-soft: #1c1630;--shadow: 0 1px 2px rgba(0, 0, 0, .3);--shadow-lg: 0 12px 32px rgba(0, 0, 0, .4)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased;transition:background .3s ease,color .3s ease}.mono{font-family:var(--font-mono)}a{color:inherit}button,input,select,textarea{font-family:inherit}*::-webkit-scrollbar{width:11px;height:11px}*::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:3px solid var(--bg)}*::-webkit-scrollbar-track{background:transparent}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}@keyframes fadeUp{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}@keyframes mOverlay{0%{opacity:0}to{opacity:1}}@keyframes mCard{0%{opacity:0;transform:translateY(10px) scale(.985)}to{opacity:1;transform:none}}.page-enter{animation:fadeUp .35s ease both}
