:root{--bg:#ffffff;--surface:#f8f9fa;--ink:#1e293b;--ink-muted:#5b6a80;--accent:#2563eb;--line:#e2e8f0;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--high:#ea580c;--row-hover:#f1f5f9;--sel:#dbeafe;--shadow:0 8px 24px -8px rgb(15 23 42/0.18),0 2px 6px -2px rgb(15 23 42/0.1);--s1:4px;--s2:8px;--s3:12px;--s4:16px;--s6:24px;--s8:32px;--s14:56px;--ui:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:"JetBrains Mono",ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,monospace;--t-xs:0.6875rem;--t-sm:0.75rem;--t-base:0.8125rem;--t-md:0.9375rem;--t-lg:1.1875rem;--t-xl:1.3125rem;--nav-w:196px;--header-h:44px;--rail-h:62px}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){--bg:#0f1520;--surface:#161e2c;--ink:#e6ecf5;--ink-muted:#9fb0c7;--accent:#7aa5ff;--line:#27324a;--ok:#4ade80;--warn:#fbbf24;--bad:#f87171;--high:#fb923c;--row-hover:#1b2434;--sel:#1e3054;--shadow:0 8px 24px -8px rgb(0 0 0/0.6),0 2px 6px -2px rgb(0 0 0/0.4)}}:root[data-theme=dark]{--bg:#0f1520;--surface:#161e2c;--ink:#e6ecf5;--ink-muted:#9fb0c7;--accent:#7aa5ff;--line:#27324a;--ok:#4ade80;--warn:#fbbf24;--bad:#f87171;--high:#fb923c;--row-hover:#1b2434;--sel:#1e3054;--shadow:0 8px 24px -8px rgb(0 0 0/0.6),0 2px 6px -2px rgb(0 0 0/0.4)}*{box-sizing:border-box}body,html{margin:0;padding:0;height:100%}body{background:var(--bg);color:var(--ink);font:400 var(--t-base)/1.5 var(--ui);font-feature-settings:"tnum";font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}.mono,.num,code,pre{font-family:var(--mono);font-size:var(--t-sm)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}h1,h2,h3,h4{margin:0;font-weight:600;letter-spacing:-.01em}h1{font-size:var(--t-lg)}h2{font-size:var(--t-md)}h3{font-size:var(--t-base)}p{margin:0 0 var(--s3)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:3px}button,input,select,textarea{font:inherit;color:inherit}.btn{display:inline-flex;align-items:center;gap:var(--s2);min-height:30px;padding:0 var(--s3);border:1px solid var(--line);border-radius:5px;background:var(--bg);color:var(--ink);font-size:var(--t-base);font-weight:500;cursor:pointer;transition:background .15s ease-out,border-color .15s ease-out}.btn:hover:not(:disabled){background:var(--row-hover);border-color:var(--ink-muted)}.btn:active:not(:disabled){background:var(--sel)}.btn:disabled{opacity:.5;cursor:not-allowed}.btn[aria-busy=true]{color:var(--ink-muted);pointer-events:none}.btn-primary{color:#fff}.btn-primary,.btn-primary:hover:not(:disabled){background:var(--accent);border-color:var(--accent)}.btn-primary:hover:not(:disabled){filter:brightness(1.08)}.btn-danger{color:var(--bad);border-color:var(--line)}.btn-danger:hover:not(:disabled){border-color:var(--bad)}.btn-sm{min-height:26px;padding:0 var(--s2);font-size:var(--t-sm)}input[type=email],input[type=number],input[type=password],input[type=search],input[type=text],select,textarea{min-height:30px;padding:var(--s1) var(--s2);border:1px solid var(--line);border-radius:5px;background:var(--bg);color:var(--ink);font-size:var(--t-base);width:100%}textarea{min-height:120px;padding:var(--s2);line-height:1.55;resize:vertical}input::placeholder,textarea::placeholder{color:var(--ink-muted);opacity:.75}label{display:block;font-size:var(--t-sm);font-weight:500;color:var(--ink-muted);margin-bottom:var(--s1)}table.grid{width:100%;border-collapse:collapse}table.grid th{position:-webkit-sticky;position:sticky;top:0;z-index:2;background:var(--bg);padding:var(--s2) var(--s3);text-align:left;font-size:var(--t-xs);font-weight:600;color:var(--ink-muted)}table.grid td,table.grid th{border-bottom:1px solid var(--line);white-space:nowrap}table.grid td{height:34px;padding:0 var(--s3);overflow:hidden;text-overflow:ellipsis}table.grid tbody tr{transition:background .15s ease-out}table.grid tbody tr:hover{background:var(--row-hover)}table.grid .r{text-align:right}table.grid .empty td{height:96px;text-align:center;color:var(--ink-muted)}.chip{display:inline-flex;align-items:center;gap:5px;height:19px;padding:0 6px;border:1px solid var(--line);border-radius:4px;background:var(--surface);font-size:var(--t-xs);font-weight:500;color:var(--ink-muted);white-space:nowrap}.chip-wp{border-color:color-mix(in srgb,var(--accent) 40%,var(--line));color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,transparent)}.chip-ok{border-color:color-mix(in srgb,var(--ok) 40%,var(--line));color:var(--ok);background:color-mix(in srgb,var(--ok) 8%,transparent)}.chip-warn{border-color:color-mix(in srgb,var(--warn) 40%,var(--line));color:var(--warn);background:color-mix(in srgb,var(--warn) 8%,transparent)}.chip-bad{border-color:color-mix(in srgb,var(--bad) 40%,var(--line));color:var(--bad);background:color-mix(in srgb,var(--bad) 8%,transparent)}.score{display:inline-block;min-width:26px;padding:1px 5px;border-radius:4px;font-family:var(--mono);font-size:var(--t-xs);font-weight:600;text-align:center;border:1px solid transparent}.score-bad{color:var(--bad);background:color-mix(in srgb,var(--bad) 12%,transparent);border-color:color-mix(in srgb,var(--bad) 30%,transparent)}.score-warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 12%,transparent);border-color:color-mix(in srgb,var(--warn) 30%,transparent)}.score-ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 12%,transparent);border-color:color-mix(in srgb,var(--ok) 30%,transparent)}.muted{color:var(--ink-muted)}.tiny{font-size:var(--t-xs)}.nowrap{white-space:nowrap}.panel{border:1px solid var(--line);border-radius:8px;background:var(--bg)}.panel>header{display:flex;align-items:center;justify-content:space-between;gap:var(--s3);padding:var(--s2) var(--s3);border-bottom:1px solid var(--line)}.panel>.body{padding:var(--s3)}.kv{display:grid;grid-template-columns:152px 1fr;grid-gap:var(--s1) var(--s3);gap:var(--s1) var(--s3);align-items:baseline}.kv dt{color:var(--ink-muted)}.kv dd,.kv dt{font-size:var(--t-sm)}.kv dd{margin:0;font-family:var(--mono);overflow-wrap:anywhere}hr.rule{border:0;border-top:1px solid var(--line);margin:var(--s6) 0}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01ms!important;transition-duration:.01ms!important}}