*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%}#root{height:100%}body{font-family:IBM Plex Sans,system-ui,sans-serif;-webkit-font-smoothing:antialiased}:root{--canvas: #eef2f6;--surface: #ffffff;--surface-2: #f8fafc;--surface-3: #f1f5f9;--border: #e2e8f0;--border-strong: #cbd5e1;--fg: #0f172a;--fg-muted: #64748b;--fg-subtle: #94a3b8;--accent: #2563eb;--accent-hover: #1d4ed8;--accent-fg: #ffffff;--accent-soft: #eff6ff;--accent-border: #bfdbfe;--success: #16a34a;--success-soft: #dcfce7;--success-fg: #166534;--warning: #d97706;--warning-soft: #fef3c7;--warning-fg: #92400e;--danger: #dc2626;--danger-soft: #fee2e2;--danger-fg: #991b1b;--sidebar-bg: #0f172a;--sidebar-fg: #94a3b8;--sidebar-fg-active: #ffffff;--sidebar-border: #1e293b;--sidebar-hover: #1e293b;--shadow: 0 1px 2px rgba(15, 23, 42, .06), 0 4px 12px rgba(15, 23, 42, .06);--shadow-lg: 0 10px 40px rgba(15, 23, 42, .18);--ring: rgba(37, 99, 235, .25)}[data-theme=dark]{--canvas: #070b14;--surface: #0f172a;--surface-2: #131c2e;--surface-3: #1a2438;--border: #1e293b;--border-strong: #334155;--fg: #e5edf7;--fg-muted: #94a3b8;--fg-subtle: #64748b;--accent: #3b82f6;--accent-hover: #2563eb;--accent-fg: #ffffff;--accent-soft: #172033;--accent-border: #1e3a5f;--success: #22c55e;--success-soft: #0f2a1a;--success-fg: #4ade80;--warning: #f59e0b;--warning-soft: #2e2410;--warning-fg: #fbbf24;--danger: #ef4444;--danger-soft: #2e1414;--danger-fg: #f87171;--sidebar-bg: #05080f;--sidebar-fg: #7c8ba1;--sidebar-fg-active: #ffffff;--sidebar-border: #131c2e;--sidebar-hover: #131c2e;--shadow: 0 1px 2px rgba(0, 0, 0, .4), 0 4px 12px rgba(0, 0, 0, .4);--shadow-lg: 0 10px 40px rgba(0, 0, 0, .6);--ring: rgba(59, 130, 246, .35)}.mono{font-family:IBM Plex Mono,monospace;font-variant-numeric:tabular-nums}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--border-strong);border-radius:8px;border:2px solid transparent;background-clip:content-box}::-webkit-scrollbar-track{background:transparent}@keyframes toastIn{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}@keyframes panelIn{0%{opacity:0;transform:translate(24px)}to{opacity:1;transform:none}}@keyframes popIn{0%{opacity:0;transform:translateY(8px) scale(.97)}to{opacity:1;transform:none}}@keyframes pulseDot{0%,to{opacity:1}50%{opacity:.35}}
