:root{
  --bg1:#ffe3f1; --bg2:#e7e9ff; --panel:#ffffff; --ink:#241024; --muted:#6b5566;
  --pink:#ff2d6f; --lime:#84cc16; --blue:#4da3ff;
  --red:#ff3b3b; --yellow:#e8a200; --green:#1fae67;
  --line:#241024;
}
*{box-sizing:border-box}
body{margin:0;color:var(--ink);background:linear-gradient(135deg,var(--bg1),var(--bg2)) fixed;
  font-family:system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;min-height:100vh}
.wrap{max-width:820px;margin:0 auto;padding:28px 20px 64px}
a{color:inherit}
.topbar{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.topbar .logo{font-weight:900;font-size:1.2rem;margin-left:0;text-decoration:none;color:inherit}
.topbar form{margin:0} .topbar a,.topbar button{margin-left:auto}
h1{font-size:2.4rem;font-weight:900;letter-spacing:-.02em;line-height:1.05;margin:0 0 10px}
h2{font-size:1.4rem;font-weight:900;margin:0 0 14px}
.hl{color:var(--pink)}
.muted,.tag{color:var(--muted)}
.lede{font-size:1.05rem;line-height:1.5;font-weight:500;max-width:560px;margin:8px 0 22px}
/* pill buttons */
.pill{display:inline-block;background:var(--pink);color:#fff;font-weight:800;border:0;
  padding:13px 24px;border-radius:999px;text-decoration:none;cursor:pointer;
  box-shadow:4px 4px 0 var(--line)}
.pill:active{transform:translate(2px,2px);box-shadow:2px 2px 0 var(--line)}
.pill.ghost{background:#fff;color:var(--ink);border:2px solid var(--line);box-shadow:3px 3px 0 var(--line)}
.pill.lime{background:var(--lime);color:#111}
/* stickers */
.sticker{display:inline-block;transform:rotate(8deg);background:var(--lime);color:#111;font-weight:900;
  font-size:.75rem;padding:6px 12px;border-radius:999px;border:2px solid var(--line)}
.sticker-lime{background:var(--lime)} .sticker-blue{background:var(--blue);color:#fff}
/* hero */
.hero{background:var(--panel);border:2px solid var(--line);border-radius:20px;padding:30px;
  box-shadow:8px 8px 0 var(--line);margin-bottom:26px;position:relative}
.hero .sticker{position:absolute;top:-12px;right:22px}
/* sections */
.section{margin:26px 0}
.steps{display:flex;gap:12px;flex-wrap:wrap}
.step{flex:1;min-width:150px;background:#fff;border:2px solid var(--line);border-radius:14px;
  padding:14px 16px;font-weight:600;box-shadow:3px 3px 0 var(--line)}
.step b{display:inline-block;background:var(--pink);color:#fff;width:24px;height:24px;border-radius:999px;
  text-align:center;line-height:24px;margin-right:8px}
.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:10px}
.chip{background:#fff;border:2px solid var(--line);border-radius:999px;padding:7px 14px;font-weight:700;font-size:.85rem}
.faq{display:flex;flex-direction:column;gap:10px}
.faq details{background:#fff;border:2px solid var(--line);border-radius:14px;box-shadow:3px 3px 0 var(--line);overflow:hidden}
.faq summary{cursor:pointer;list-style:none;padding:14px 16px;font-weight:800;display:flex;justify-content:space-between;align-items:center}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:1.3rem;line-height:1;color:var(--pink);font-weight:900}
.faq details[open] summary::after{content:"\2013"}
.faq details p{margin:0;padding:0 16px 16px;color:var(--muted);font-weight:500}
/* score + report */
.score{font-size:6rem;font-weight:900;line-height:1;letter-spacing:-.04em}
.score.red{color:var(--red)} .score.yellow{color:var(--yellow)} .score.green{color:var(--green)}
.score span{font-size:1.6rem}
.score-meaning{display:flex;flex-direction:column;gap:3px;margin:4px 0 10px;max-width:620px}
.score-meaning strong{font-size:1.15rem}
.score-meaning span{color:var(--muted);font-weight:650;line-height:1.35}
.counts{display:flex;gap:16px;margin:14px 0 24px;font-weight:800}
.counts .c-critical{color:var(--red)} .counts .c-medium{color:var(--yellow)} .counts .c-low{color:var(--green)}
.report-summary,.priority-panel,.group-panel{background:#fff;border:2px solid var(--line);border-radius:12px;
  padding:16px 18px;margin:16px 0;box-shadow:3px 3px 0 var(--line)}
.report-summary p{margin:0 0 12px;font-weight:750;line-height:1.4}
.summary-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(145px,1fr));gap:10px}
.summary-stat{border:2px solid var(--line);border-radius:10px;padding:10px 12px;background:#fff}
.summary-stat strong{display:block;font-size:1.6rem;line-height:1;color:var(--pink)}
.summary-stat span{display:block;margin-top:4px;color:var(--muted);font-weight:750}
.priority-list{margin:0;padding-left:22px}
.priority-list li{margin:10px 0;font-weight:800}
.priority-list span{display:block;color:var(--muted);font-weight:650;font-size:.9rem;margin-top:2px}
.finding-groups{display:flex;flex-direction:column;gap:8px}
.finding-group{display:flex;justify-content:space-between;gap:12px;align-items:center;border:2px solid var(--line);
  border-left:8px solid var(--red);border-radius:10px;padding:10px 12px;background:#fff}
.finding-group.medium{border-left-color:var(--yellow)} .finding-group.low{border-left-color:var(--green)}
.finding-group span{color:var(--muted);font-weight:750;white-space:nowrap}
.issue{background:var(--panel);border:2px solid var(--line);border-left:8px solid var(--red);
  padding:16px 18px;border-radius:12px;margin:12px 0;box-shadow:3px 3px 0 var(--line)}
.issue.medium{border-left-color:var(--yellow)} .issue.low{border-left-color:var(--green)}
.issue strong{font-size:1.02rem}
.issue .where{color:var(--muted);font-size:.82rem;margin-top:4px;font-family:ui-monospace,monospace}
.issue .impact{margin:8px 0 0;font-weight:600}
.issue .confidence{margin:8px 0 0;color:var(--muted);font-weight:650}
.issue .fix{margin:6px 0 0;color:var(--muted)}
.issue .impact b,.issue .confidence b,.issue .fix b{color:var(--ink)}
.locked{background:#fff;border:2px solid var(--line);border-radius:12px;padding:16px 18px;margin:12px 0;
  filter:blur(5px);user-select:none}
.lockbar{background:#fff;border:2px dashed var(--line);border-radius:12px;padding:18px;margin:18px 0}
/* ephemeral banner */
.banner{background:#fff5d6;border:2px solid var(--line);border-radius:12px;padding:14px 16px;
  margin:16px 0;font-weight:700;box-shadow:3px 3px 0 var(--line)}
/* tos unlock box */
.tos-box{background:#fff;border:2px solid var(--line);border-radius:12px;padding:16px;margin:14px 0}
.tos-box label{display:flex;gap:10px;align-items:flex-start;font-weight:600;cursor:pointer}
/* misc */
.err{background:#ffe0e0;border:2px solid var(--red);border-radius:12px;padding:14px;margin:14px 0;font-weight:700}
.filter{width:100%;padding:11px 14px;margin:8px 0 14px;background:#fff;border:2px solid var(--line);border-radius:12px;color:var(--ink)}
ul.repos{list-style:none;padding:0;margin:0}
.repo-row{display:flex;align-items:center;gap:12px;padding:12px;border:2px solid var(--line);border-radius:12px;margin:8px 0;background:#fff}
.repo-row .repo-name{flex:1;font-weight:700} .repo-row .repo-meta{color:var(--muted);font-size:.82rem}
.repo-row form{margin:0}
.footer{margin-top:48px;padding-top:18px;border-top:2px solid var(--line);display:flex;gap:14px;
  align-items:center;font-size:.85rem;color:var(--muted)}
.footer a{font-weight:800;color:var(--ink)}
.prose{line-height:1.6} .prose h2{margin-top:26px}
.fp-btn,.restore-btn{margin-top:10px;background:#fff;border:2px solid var(--line);border-radius:999px;
  padding:6px 14px;font-weight:700;font-size:.8rem;cursor:pointer;box-shadow:2px 2px 0 var(--line)}
.fp-btn:active,.restore-btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--line)}
.issue.dismissed{opacity:.6} .issue.dismissed strong{text-decoration:line-through}
#dismissed-section .issue{border-left-color:#aaa}
@media(max-width:560px){h1{font-size:1.9rem}.hero{padding:22px}.score{font-size:4.4rem}
  .finding-group{align-items:flex-start;flex-direction:column}.finding-group span{white-space:normal}}
