
:root{--bg:#f6f8fa;--card:#ffffff;--fg:#1f2328;--muted:#57606a;--line:#d0d7de;
--pass:#1a7f37;--fail:#cf222e;--partial:#bf8700;--link:#0969da;
--cloud-bg:#ddf4ff;--cloud-fg:#0550ae;--cloud-line:#b6e3ff;
--local-bg:#eef1f4;--local-fg:#57606a}
*{box-sizing:border-box}
body{margin:0;background:var(--bg);color:var(--fg);font:15px/1.5 system-ui,sans-serif}
a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}
.wrap{max-width:1100px;margin:0 auto;padding:24px}
h1{font-size:22px}h2{font-size:18px;margin-top:32px}
.muted{color:var(--muted)}
table{border-collapse:collapse;width:100%;margin:12px 0;background:var(--card);
border:1px solid var(--line);border-radius:8px;overflow:hidden}
th,td{border:1px solid var(--line);padding:8px 10px;text-align:left}
th{background:#f0f3f6;font-weight:600}
.cell{font-weight:700;text-align:center;color:#fff;border-radius:4px}
.pass{background:var(--pass)}.fail{background:var(--fail)}.partial{background:var(--partial)}
.ungraded{background:var(--line);color:var(--muted)}
.cell a{color:#fff}
.crumb{margin-bottom:16px}
.rep{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:14px;margin:16px 0}
.rep h3{margin:0 0 8px}
.badge{display:inline-block;padding:2px 8px;border-radius:10px;font-size:12px;color:#fff}
pre{background:#f6f8fa;border:1px solid var(--line);border-radius:6px;padding:10px;overflow:auto;font-size:13px}
.file-path{color:var(--muted);font-size:12px;margin:10px 0 2px}
img.shot{max-width:100%;border:1px solid var(--line);border-radius:6px}
details summary{cursor:pointer;color:var(--link);margin:6px 0}
.meta{font-size:13px;color:var(--muted)}
/* cloud/local tag */
.tag{display:inline-block;padding:1px 7px;border-radius:10px;font-size:11px;font-weight:600;
border:1px solid var(--line);vertical-align:middle}
.tag.cloud{background:var(--cloud-bg);color:var(--cloud-fg);border-color:var(--cloud-line)}
.tag.local{background:var(--local-bg);color:var(--local-fg)}
/* filter toolbar */
.toolbar{display:flex;gap:8px;align-items:center;margin:16px 0;flex-wrap:wrap}
.toolbar .label{color:var(--muted);font-size:13px;margin-right:2px}
.toolbar button{background:var(--card);border:1px solid var(--line);color:var(--fg);
padding:6px 12px;border-radius:6px;cursor:pointer;font:inherit;font-size:13px}
.toolbar button:hover{border-color:var(--link)}
.toolbar button.active{background:var(--link);color:#fff;border-color:var(--link)}
/* leaderboard */
#leaderboard th[data-key]{cursor:pointer;user-select:none;white-space:nowrap}
#leaderboard th.sorted-asc::after{content:' \2191';font-size:11px;color:var(--muted)}
#leaderboard th.sorted-desc::after{content:' \2193';font-size:11px;color:var(--muted)}
#leaderboard td.rank{text-align:right;color:var(--muted);font-variant-numeric:tabular-nums;width:34px}
#leaderboard td.model{font-weight:600}
.bar{display:inline-block;width:110px;height:9px;background:var(--line);border-radius:5px;
overflow:hidden;vertical-align:middle;margin-right:8px}
.bar>i{display:block;height:100%}
.bar>i.pass{background:var(--pass)}.bar>i.partial{background:var(--partial)}
.bar>i.fail{background:var(--fail)}.bar>i.muted{background:var(--muted)}
.score-num{font-variant-numeric:tabular-nums}
/* notes (findings not tied to one run) */
.note{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:8px 24px 24px}
.note h1{font-size:24px;line-height:1.3}
.note h2{font-size:18px;border-bottom:1px solid var(--line);padding-bottom:6px}
.note p,.note li{max-width:74ch}
.note blockquote{margin:12px 0;padding:2px 14px;border-left:3px solid var(--line);color:var(--muted)}
.note table{font-size:14px}
.note hr{border:0;border-top:1px solid var(--line);margin:24px 0}
.note code{background:#f0f3f6;border-radius:4px;padding:1px 5px;font-size:13px}
.note pre code{background:none;padding:0;font-size:inherit}
.notelist{background:var(--card);border:1px solid var(--line);border-radius:8px;padding:4px 18px}
.notelist li{margin:10px 0}
