/* ShipClarity scanner - shared stylesheet for / and /leaderboard.
   Palette tokens are filled from lib/brand.js at startup (see lib/views.js),
   so the scanner and shipclarity.app share one colour family. */
:root{
  --bg:#faf9f6; --card:#fff; --ink:#1a1a1a; --muted:#5f5f5f; --line:#e8e5df;
  --brand:#2f6f4f; --brandsoft:#e7f2ec;
  --tier-clean:#2f6f4f; --tier-minor:#3b7a99; --tier-notable:#c98a2f; --tier-risk:#c0392b;
  --fail:var(--tier-risk); --failbg:#fdecea; --warn:var(--tier-notable); --warnbg:#fef7e0;
  --pass:var(--tier-clean); --passbg:#e7f2ec; --info:#4a6a8a; --infobg:#eef3f8;
}
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    --bg:#14130f; --card:#1e1d1a; --ink:#ece9e2; --muted:#a49e93; --line:#332f28;
    --brand:#7fbf9e; --brandsoft:#22322a;
    --pass:var(--brand);
    --failbg:#2a1614; --warnbg:#2a2312; --passbg:#22322a; --info:#8fb0cc; --infobg:#1b2229;
  }
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--ink);
  font:15px/1.55 'Segoe UI',system-ui,-apple-system,sans-serif;}
.wrap{max-width:760px;margin:0 auto;padding:32px 20px 80px}
header{text-align:center;margin-bottom:8px}
.logo{font-size:1.5rem;font-weight:800;color:var(--brand);letter-spacing:-.5px}
h1{font-size:1.5rem;margin:22px 0 6px;text-align:center;line-height:1.25}
.sub{color:var(--muted);text-align:center;margin:0 auto 26px;max-width:520px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:20px}
.row{display:flex;gap:10px;flex-wrap:wrap}
input[type=url]{flex:1;min-width:220px;padding:12px 14px;font-size:15px;border:1px solid var(--line);
  border-radius:9px;background:var(--bg);color:var(--ink)}
button{background:var(--brand);color:#fff;border:0;border-radius:9px;padding:12px 22px;
  font-size:15px;font-weight:600;cursor:pointer}
button:disabled{opacity:.55;cursor:default}
.own{display:flex;align-items:center;gap:8px;margin-top:12px;font-size:.85rem;color:var(--muted)}
.own input{width:16px;height:16px}
.hint{font-size:.8rem;color:var(--muted);margin-top:10px}
.status{margin:22px 0;text-align:center;color:var(--muted)}
.scorewrap{display:flex;flex-direction:column;align-items:center;margin:22px 0 6px;gap:8px}
.scorenum{font-size:3.4rem;font-weight:800;line-height:1}
.scorenum small{font-size:1.2rem;font-weight:600;color:var(--muted)}
.verdictlabel{font-size:1.05rem;font-weight:700}
.tier-clean{color:var(--tier-clean)} .tier-minor{color:var(--tier-minor)} .tier-notable{color:var(--tier-notable)} .tier-risk{color:var(--tier-risk)}
.sharebox{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin:14px 0 4px}
.sharebtn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:9px;border:1px solid var(--line);
  background:var(--card);color:var(--ink);font-size:.85rem;font-weight:600;text-decoration:none;cursor:pointer}
.cardimg{max-width:100%;border:1px solid var(--line);border-radius:12px;margin:14px 0}
.scoreline{display:flex;gap:10px;flex-wrap:wrap;justify-content:center;margin:22px 0 6px}
.pill{padding:6px 12px;border-radius:999px;font-weight:700;font-size:.85rem}
.pill.fail{background:var(--failbg);color:var(--fail)}
.pill.warn{background:var(--warnbg);color:var(--warn)}
.pill.pass{background:var(--passbg);color:var(--pass)}
.cat{margin:26px 0 8px;font-size:.72rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);
  border-bottom:1px solid var(--line);padding-bottom:6px}
.item{display:flex;gap:12px;padding:12px 0;border-bottom:1px solid var(--line)}
.dot{flex:0 0 22px;height:22px;border-radius:6px;font-weight:700;font-size:.8rem;
  display:flex;align-items:center;justify-content:center;margin-top:1px}
.dot.fail{background:var(--failbg);color:var(--fail)}
.dot.warn{background:var(--warnbg);color:var(--warn)}
.dot.pass{background:var(--passbg);color:var(--pass)}
.dot.info,.dot.skip{background:var(--infobg);color:var(--info)}
.it-title{font-weight:600}
.it-detail{color:var(--muted);font-size:.88rem;margin-top:2px}
.it-ev{font-family:ui-monospace,Consolas,monospace;font-size:.78rem;color:var(--muted);
  margin-top:4px;word-break:break-all;background:var(--bg);padding:4px 8px;border-radius:6px;display:inline-block}
.sev{font-size:.68rem;font-weight:700;padding:1px 6px;border-radius:4px;margin-left:6px;vertical-align:middle}
.sev.high{background:var(--failbg);color:var(--fail)}
.sev.medium{background:var(--warnbg);color:var(--warn)}
.sev.low{background:var(--infobg);color:var(--info)}
.cta{margin-top:34px;background:var(--brandsoft);border:1px solid var(--brand);border-radius:14px;padding:22px}
.cta h2{margin:0 0 10px;font-size:1.1rem}
.cta p{margin:0 0 10px}
.cta a{color:var(--brand);font-weight:700}
.locked{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:8px;margin:14px 0}
.lk{font-size:.82rem;color:var(--muted);display:flex;gap:6px;align-items:center}
/* landing: what gets checked, rendered from /api/checks (single source of truth) */
.what{margin-top:26px}
.what .count{text-align:center;color:var(--muted);font-size:.9rem;margin:0 auto 14px;max-width:560px}
.what .count b{color:var(--ink)}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:12px}
.g{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:12px 14px}
.g h3{font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--brand);margin:0 0 6px}
.g ul{margin:0;padding-left:16px}
.g li{font-size:.86rem;margin:3px 0;color:var(--ink)}
footer{text-align:center;color:var(--muted);font-size:.8rem;margin-top:40px}
footer a{color:var(--brand)}
.err{background:var(--failbg);color:var(--fail);padding:12px 14px;border-radius:9px;margin-top:18px}
/* result-page bits that used to be inline style attributes (CSP: style-src 'self') */
.lblink{float:right;color:var(--muted);font-size:.85rem;text-decoration:none;line-height:1.9}
.pill.info{background:var(--infobg);color:var(--info)}
.summaryline{text-align:center;color:var(--muted);margin:0 0 8px}
.sharenote{text-align:center;color:var(--muted);font-size:.78rem;margin:-6px 0 4px}
.sharebtn.ghost{background:transparent}
.lbwrap{text-align:center;margin:2px 0 4px}
.lbnote{text-align:center;margin:2px 0 4px;font-size:.8rem;color:var(--muted)}
.lbmsg{font-size:.8rem;color:var(--muted);margin-top:6px}
.leadbox{margin-top:18px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.leadtitle{font-weight:600;margin-bottom:4px}
.leadsub{color:var(--muted);font-size:.85rem;margin-bottom:10px}
.leadbox input[type=email]{flex:1;min-width:200px;padding:10px 12px;font-size:15px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--ink)}
.leadmsg{font-size:.85rem;margin-top:8px;color:var(--muted)}
.leadmsg a{color:var(--brand);font-weight:600}
/* "URL + email" request block: landing view (#quote) and inside a result (#quote-result) */
.quotebox{margin-top:26px;background:var(--card);border:1px solid var(--brand);border-radius:14px;padding:18px 20px}
.quotetitle{margin:0 0 4px;font-size:1.05rem}
.quotesub{margin:0 0 12px;color:var(--ink)}
.quotebox input[type=email]{flex:1;min-width:200px;padding:12px 14px;font-size:15px;border:1px solid var(--line);border-radius:9px;background:var(--bg);color:var(--ink)}

/* /admin/scans (body.admin): private log table, same palette */
body.admin{font:14px/1.5 system-ui,sans-serif;margin:24px}
.admin h1{font-size:18px;margin:0 0 4px;text-align:left}
.admin p{color:var(--muted);margin:0 0 14px}
.admin a{color:var(--brand)}
.admin table{border-collapse:collapse;width:100%;background:var(--card)}
.admin th,.admin td{border:1px solid var(--line);padding:6px 9px;text-align:left;vertical-align:top}
.admin th{background:var(--brandsoft);color:var(--brand);font-size:12px;text-transform:uppercase;letter-spacing:.05em}
.admin .t{white-space:nowrap;font-family:ui-monospace,monospace;font-size:12px}
.admin .m{color:var(--muted);font-size:12px}
.admin .bad{color:var(--tier-risk);font-weight:600}
.admin .ok{color:var(--brand)}

/* /leaderboard (body.lb): same family, narrower column, list rows instead of the form row */
.lb .wrap{max-width:680px}
.lb header{position:relative}
.lb h1{font-size:1.4rem}
.lb .sub{font-size:.92rem}
.back{position:absolute;left:0;top:6px;color:var(--muted);font-size:.85rem;text-decoration:none}
.lb .row{align-items:center;gap:12px;flex-wrap:nowrap;padding:12px 14px;background:var(--card);
  border:1px solid var(--line);border-radius:12px;margin-bottom:8px;text-decoration:none;color:var(--ink)}
.rank{flex:0 0 26px;font-weight:800;color:var(--muted);text-align:center}
.host{flex:1;font-weight:600;word-break:break-all}
.verdict{font-size:.75rem;color:var(--muted)}
.score{flex:0 0 auto;font-size:1.3rem;font-weight:800}
.empty{text-align:center;color:var(--muted);padding:40px 0}
