:root{
  --bg:#0f1216; --panel:#171c23; --panel-2:#1d242d; --line:#2a333d;
  --ink:#e7edf3; --muted:#9aa7b4; --accent:#3ea6ff; --accent-ink:#06243d;
  --crit:#ff5470; --high:#ff9f43; --med:#ffd24a; --low:#6fcf97; --unassigned:#8aa0b3;
  --radius:12px;
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code,.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.9em}

.topbar{display:flex;align-items:center;justify-content:space-between;
  padding:14px 28px;background:var(--panel);border-bottom:1px solid var(--line)}
.brand{display:flex;flex-direction:column;line-height:1.1;gap:3px}
.brand-logo{height:26px;width:auto;display:block}
.brand-sub{font-size:12px;color:var(--muted);letter-spacing:.04em}
.login-logo{height:34px;width:auto;display:block;margin:0 auto 18px}
.topnav{display:flex;align-items:center;gap:18px;font-size:14px}
.topnav .who{color:var(--muted)}
.topnav em{color:var(--accent);font-style:normal}
.inline{display:inline;margin:0}
.link-btn{background:none;border:none;color:var(--accent);cursor:pointer;font:inherit;padding:0}

.container{max-width:1040px;margin:0 auto;padding:32px 24px 64px}
.page-head{margin-bottom:22px}
.page-head h1{margin:.1em 0;font-size:24px}
.ver{color:var(--muted);font-weight:500;font-size:.7em;vertical-align:middle}
.muted{color:var(--muted)} .small{font-size:13px}
.back{font-size:13px}

.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:20px}
.empty{text-align:center;color:var(--muted)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-bottom:24px}
@media(max-width:720px){.grid-2{grid-template-columns:1fr}}

.project-card{display:block;color:var(--ink);transition:border-color .15s,transform .15s}
.project-card:hover{border-color:var(--accent);text-decoration:none;transform:translateY(-2px)}
.project-title{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:12px}
.project-title .name{font-weight:600}
.sev-row{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:12px}
.project-card .meta{display:flex;justify-content:space-between;color:var(--muted);font-size:12px}

.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:12px;font-weight:600;color:#0c0f13}
.sev-crit,.sev-critical{background:var(--crit)} .sev-high{background:var(--high)}
.sev-med,.sev-medium{background:var(--med)} .sev-low{background:var(--low)}
.sev-unassigned{background:var(--unassigned)}

.summary-row{display:flex;gap:14px;flex-wrap:wrap;margin:18px 0}
.stat{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);
  padding:14px 18px;min-width:96px;text-align:center;color:var(--muted);font-size:12px}
.stat .num{display:block;font-size:26px;font-weight:700;color:var(--ink)}
.num.sev-crit{color:var(--crit)} .num.sev-high{color:var(--high)}
.num.sev-med{color:var(--med)} .num.sev-low{color:var(--low)}

.downloads{margin:22px 0}
.downloads h2{margin-top:0}

table.findings{width:100%;border-collapse:collapse;margin:10px 0 28px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
table.findings th,table.findings td{text-align:left;padding:10px 14px;border-bottom:1px solid var(--line)}
table.findings th{background:var(--panel-2);color:var(--muted);font-size:12px;
  text-transform:uppercase;letter-spacing:.05em}
table.findings tr:last-child td{border-bottom:none}
tr.suppressed{opacity:.5}
.src{color:var(--muted);font-size:12px}

label{display:block;margin:12px 0;font-size:13px;color:var(--muted)}
input,select,textarea{display:block;width:100%;margin-top:6px;padding:10px 12px;
  background:var(--panel-2);border:1px solid var(--line);border-radius:8px;color:var(--ink);font:inherit}
.btn{display:inline-block;padding:10px 18px;border-radius:8px;border:1px solid var(--line);
  background:var(--panel-2);color:var(--ink);cursor:pointer;font:inherit;margin-right:8px;margin-top:6px}
.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-ink);font-weight:600}
.btn:hover{text-decoration:none;filter:brightness(1.08)}

.login-wrap{display:flex;justify-content:center;padding-top:6vh}
.login-card{width:360px}
.login-card h1{margin-top:0}
.alert{padding:10px 14px;border-radius:8px;margin:12px 0}
.alert.error{background:#3a1620;color:#ffb3c0;border:1px solid #5e2230}
.alert.info{background:#13283a;color:#bfe0ff;border:1px solid #244a66}
/* admin: product checkboxes + customer cards */
.prodset{border:1px solid var(--line);border-radius:8px;padding:10px 12px;margin:12px 0;max-height:260px;overflow:auto}
.prodset legend{color:var(--muted);font-size:12px;padding:0 6px}
.chk{display:flex;align-items:center;gap:9px;margin:5px 0;font-size:13px;color:var(--ink);cursor:pointer}
.chk input[type=checkbox]{width:16px;height:16px;margin:0;flex:none;accent-color:var(--accent)}
.cust-card{margin-bottom:14px}
.cust-head{display:flex;align-items:center;gap:10px;margin-bottom:4px}
.cust-head .name{font-weight:600;font-size:16px}

.foot{color:var(--muted);text-align:center;font-size:12px;padding:24px}
