:root{--bg:#0b0f17;--panel:#131a26;--border:#232d3f;--text:#e6e9ef;--muted:#8b94a7;--accent:#4f8cff;--critical:#ff4d5e;--high:#ff8a3d;--medium:#ffd23d;--low:#58c1ff;--info:#9aa3b2;--ok:#35c98a}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font-family:ui-sans-serif,system-ui,Segoe UI,Roboto,sans-serif}.nav{display:flex;align-items:center;gap:20px;padding:14px 24px;border-bottom:1px solid var(--border);background:var(--panel)}.brand{font-weight:700;font-size:18px}.nav a{color:var(--muted);text-decoration:none}.nav a:hover{color:var(--text)}.main{max-width:1100px;margin:0 auto;padding:28px 20px}h1{font-size:22px;margin:0 0 16px}h2{font-size:16px;margin:24px 0 10px}.card{background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:16px}.grid{display:grid;grid-gap:14px;gap:14px}.grid.cols4{grid-template-columns:repeat(4,1fr);text-align:center}.grid.cols2{grid-template-columns:1fr 1fr}.stat-num{font-size:30px;font-weight:700}.muted{color:var(--muted);font-size:13px}.badge{display:inline-block;padding:2px 10px;border-radius:999px;font-size:12px;font-weight:600;text-transform:uppercase}.badge.critical{background:rgba(255,77,94,.15);color:var(--critical)}.badge.high{background:rgba(255,138,61,.15);color:var(--high)}.badge.medium{background:rgba(255,210,61,.12);color:var(--medium)}.badge.low{background:rgba(88,193,255,.12);color:var(--low)}.badge.info{background:rgba(154,163,178,.12);color:var(--info)}.badge.ok{background:rgba(53,201,138,.12);color:var(--ok)}.badge.neutral{background:rgba(139,148,167,.12);color:var(--muted)}table{width:100%;border-collapse:collapse;font-size:14px}td,th{padding:10px 8px;text-align:left;border-bottom:1px solid var(--border)}th{color:var(--muted);font-weight:500;font-size:12px;text-transform:uppercase}.btn,button{background:var(--accent);color:#fff;border:none;border-radius:8px;padding:8px 16px;font-size:14px;cursor:pointer}button:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent}button.ghost,input,select{border:1px solid var(--border);color:var(--text)}input,select{background:var(--bg);border-radius:8px;padding:8px 12px;font-size:14px}.row{display:flex;gap:10px;align-items:center;flex-wrap:wrap}pre{background:var(--bg);border:1px solid var(--border);border-radius:8px;padding:12px;overflow-x:auto;white-space:pre-wrap;font-size:13px}.err{color:var(--critical);font-size:14px}.spin{animation:spin 1s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(1turn)}}