:root{--bg: #06080c;--bg-1: #0d1117;--bg-2: #151b24;--bg-3: #1c2433;--ac: #4f9cf7;--ac-dim: #2d6abf;--ac-glow: rgba(79, 156, 247, .15);--gn: #34d399;--gn-dim: rgba(52, 211, 153, .15);--wn: #fbbf24;--wn-dim: rgba(251, 191, 36, .15);--rd: #f87171;--rd-dim: rgba(248, 113, 113, .15);--tx: #e2e8f0;--tx-2: #94a3b8;--tx-3: #475569;--font-ui: "DM Sans", system-ui, sans-serif;--font-mono: "JetBrains Mono", "Fira Code", monospace;--radius: 8px;--radius-lg: 12px;--gap: 16px;--gap-sm: 8px;--gap-lg: 24px;--shadow: 0 1px 3px rgba(0,0,0,.4), 0 1px 2px rgba(0,0,0,.3);--shadow-lg: 0 4px 24px rgba(0,0,0,.5);--border: 1px solid var(--bg-3);--ease: cubic-bezier(.4, 0, .2, 1);--dur: .15s}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{height:100%;font-size:14px;-webkit-font-smoothing:antialiased}body{height:100%;background:var(--bg);color:var(--tx);font-family:var(--font-ui);font-size:14px;line-height:1.5;overflow-x:hidden}#root{height:100%;display:flex;flex-direction:column}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--bg-3);border-radius:3px}::-webkit-scrollbar-thumb:hover{background:var(--tx-3)}.mono{font-family:var(--font-mono)}.num{font-family:var(--font-mono);font-variant-numeric:tabular-nums;letter-spacing:-.01em}.text-muted{color:var(--tx-2)}.text-ok{color:var(--gn)}.text-warn{color:var(--wn)}.text-crit{color:var(--rd)}.text-ac{color:var(--ac)}.card{background:var(--bg-1);border:var(--border);border-radius:var(--radius-lg);padding:var(--gap)}.grid-2{display:grid;grid-template-columns:repeat(2,1fr);gap:var(--gap)}.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:var(--gap)}.grid-4{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--gap)}@media (max-width: 1024px){.grid-4,.grid-3{grid-template-columns:repeat(2,1fr)}}@media (max-width: 640px){.grid-4,.grid-3,.grid-2{grid-template-columns:1fr}}@keyframes fadeIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-in{animation:fadeIn .2s var(--ease) both}.animate-pulse{animation:pulse 2s ease-in-out infinite}
