:root{--bg:#0f1115;--panel:#171a21;--panel2:#1d212b;--line:#282d38;--ink:#e8eaf0;--soft:#9aa2b1;--faint:#626b7d;--brand:#6ee7a8;--brand-ink:#0f1115;--crit:#f0705a;--high:#e0a13c;--med:#5aa9e0;--low:#6ee7a8}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.55}a{color:var(--brand)}.wrap{max-width:1000px;margin:0 auto;padding:28px 20px 80px}header.top{display:flex;align-items:baseline;gap:12px;margin-bottom:6px}header.top h1{font-size:1.7rem;margin:0;letter-spacing:-.01em}header.top .tag{font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:var(--brand)}.subtitle{color:var(--soft);margin:0 0 24px}.controls{display:flex;gap:10px;flex-wrap:wrap;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:20px}.controls label{font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:var(--faint);display:block;margin-bottom:5px}.controls input,.controls select{background:var(--panel2);border:1px solid var(--line);color:var(--ink);border-radius:8px;padding:9px 11px;font-size:.9rem;font-family:inherit}.controls input{min-width:340px}.controls .col{flex:1 1;min-width:220px}button.run{background:var(--brand);color:var(--brand-ink);border:none;border-radius:9px;padding:11px 20px;font-weight:600;font-size:.9rem;cursor:pointer;align-self:flex-end}button.run:disabled{opacity:.5;cursor:default}.scorehead{display:flex;gap:22px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:22px;margin-bottom:18px}.ring{--pct:0;width:104px;height:104px;flex:none;background:conic-gradient(var(--brand) calc(var(--pct)*1%),var(--panel2) 0);place-items:center}.ring,.ring .inner{border-radius:50%;display:grid}.ring .inner{width:82px;height:82px;background:var(--panel);place-items:center;text-align:center}.ring .inner b{font-size:1.7rem;line-height:1}.ring .inner span{font-size:.62rem;color:var(--faint);letter-spacing:.06em}.scorehead .meta h2{margin:0 0 4px;font-size:1.15rem}.scorehead .meta p{margin:0;color:var(--soft);font-size:.88rem}.pill{display:inline-block;font-size:.66rem;letter-spacing:.05em;padding:2px 8px;border-radius:20px;color:var(--soft);margin-right:6px}.factor,.pill{border:1px solid var(--line)}.factor{background:var(--panel);border-radius:12px;margin-bottom:12px;overflow:hidden}.factor .fh{display:flex;justify-content:space-between;align-items:center;padding:13px 16px;border-bottom:1px solid var(--line)}.factor .fh .name{font-weight:600;text-transform:capitalize}.factor .fh .fscore{font-feature-settings:"tnum";font-variant-numeric:tabular-nums;color:var(--soft);font-size:.9rem}.metric{display:grid;grid-template-columns:210px 1fr auto;grid-gap:12px;gap:12px;padding:11px 16px;border-bottom:1px solid var(--line);align-items:start}.metric:last-child{border-bottom:0}.metric .mname{font-size:.9rem}.metric .mname .src{display:block;font-size:.64rem;color:var(--faint);letter-spacing:.04em;margin-top:2px}.metric .mbody{font-size:.84rem;color:var(--soft)}.metric .mbody .rec{color:var(--ink)}.metric .mbody .research{color:var(--faint);font-size:.76rem;margin-top:3px}.metric .mright{text-align:right;white-space:nowrap}.bar{width:120px;height:7px;background:var(--panel2);overflow:hidden;margin-top:6px;margin-left:auto}.bar,.bar>i{border-radius:5px}.bar>i{display:block;height:100%}.chip{font-size:.6rem;letter-spacing:.05em;text-transform:uppercase;padding:2px 7px;border-radius:6px}.chip.measured{background:rgba(110,231,168,.12);color:var(--brand)}.chip.pending{background:rgba(98,107,125,.15);color:var(--faint)}.sev-critical{color:var(--crit)}.sev-high{color:var(--high)}.sev-medium{color:var(--med)}.sev-low{color:var(--low)}.b-critical{background:var(--crit)}.b-high{background:var(--high)}.b-medium{background:var(--med)}.b-low{background:var(--low)}.err{background:hsla(9,83%,65%,.1);border:1px solid var(--crit);color:var(--crit);border-radius:10px;padding:12px 14px;margin-bottom:16px;font-size:.88rem}.empty{color:var(--faint);text-align:center;padding:40px}