:root{--bg:#0f1216;--card:#181c22;--line:#262c35;--txt:#e8ebef;--mut:#9aa4b2;--ok:#2fb67c;--warn:#f0a531;--bad:#ef5a5a;--off:#6b7684;--acc:#5aa9ff;--r:14px;color-scheme:dark}
@media (prefers-color-scheme:light){:root{--bg:#f3f5f8;--card:#fff;--line:#e2e6ec;--txt:#121820;--mut:#5b6573;--ok:#14845a;--warn:#a85f00;--bad:#c62828;--off:#6b7684;--acc:#1f6fd1;color-scheme:light}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--txt);font:15px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;padding-bottom:env(safe-area-inset-bottom)}
a{color:var(--acc);text-decoration:none}
.banner{position:sticky;top:0;z-index:5;padding:calc(10px + env(safe-area-inset-top)) 14px 10px;background:var(--card);border-bottom:3px solid var(--off)}
.banner.lvl-ok{border-color:var(--ok)}.banner.lvl-warn{border-color:var(--warn)}.banner.lvl-bad{border-color:var(--bad)}
.banner-row{display:flex;align-items:center;gap:12px;max-width:560px;margin:0 auto}
.b-icon{flex:none;width:40px;height:40px;border-radius:50%;display:grid;place-items:center;font-size:22px;font-weight:800;color:#fff;background:var(--off)}
.lvl-ok .b-icon{background:var(--ok)}.lvl-warn .b-icon{background:var(--warn);color:#111}.lvl-bad .b-icon{background:var(--bad)}
.b-text{flex:1;min-width:0}.b-head{font-size:20px;font-weight:750;letter-spacing:-.01em}.b-sub{color:var(--mut);font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.b-age{flex:none;font-size:12px;color:var(--mut);text-align:right;font-variant-numeric:tabular-nums}
.b-age.stale{color:var(--bad);font-weight:700}
main{max-width:560px;margin:0 auto;padding:10px 10px 0;display:flex;flex-direction:column;gap:10px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:12px 14px}
.card h2{margin:0 0 8px;font-size:13px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--mut);display:flex;justify-content:space-between;gap:8px}
.card h2 small{font-weight:500;text-transform:none;letter-spacing:0}
.skeleton{height:110px;background:linear-gradient(90deg,var(--card),var(--line),var(--card));background-size:200% 100%;animation:sh 1.4s infinite}
@keyframes sh{to{background-position:-200% 0}}
@media (prefers-reduced-motion:reduce){.skeleton{animation:none}}
.issues{list-style:none;margin:0;padding:0}.issues li{display:flex;gap:8px;padding:6px 0;border-top:1px solid var(--line)}.issues li:first-child{border-top:0}
.chips{display:flex;flex-wrap:wrap;gap:6px}
.chip{display:inline-flex;align-items:center;gap:6px;padding:6px 10px;border-radius:999px;border:1px solid var(--line);font-size:13px;font-weight:600}
.chip .k{color:var(--mut);font-weight:500}
.mark{display:inline-grid;place-items:center;flex:none;width:20px;height:20px;border-radius:50%;font-size:12px;font-weight:800;color:#fff;background:var(--off)}
.mark.ok{background:var(--ok)}.mark.warn{background:var(--warn);color:#111}.mark.bad{background:var(--bad)}
.row{display:flex;gap:10px;align-items:flex-start;padding:9px 0;border-top:1px solid var(--line)}.row:first-of-type{border-top:0}
.row .main{flex:1;min-width:0}.row .t{font-weight:650}.row .s{color:var(--mut);font-size:13px}
.row .end{flex:none;text-align:right;font-variant-numeric:tabular-nums;font-size:13px;color:var(--mut)}
.big{font-size:17px;font-weight:700;color:var(--txt)}
.bar{position:relative;height:28px;border-radius:8px;background:var(--line);overflow:hidden;margin:3px 0}
.bar .fill{position:absolute;inset:0 auto 0 0;background:var(--acc);opacity:.85;border-radius:8px;min-width:3px}
.bar .lab{position:relative;display:flex;justify-content:space-between;align-items:center;height:100%;padding:0 10px;font-size:13px;font-weight:600;gap:8px}
.bar .lab span:first-child{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar .n{font-variant-numeric:tabular-nums}
.hint{color:var(--mut);font-size:12px;margin:-1px 0 6px 2px}
.stack{display:flex;height:10px;border-radius:5px;overflow:hidden;background:var(--line);margin-top:5px}
.stack .p{background:var(--ok)}.stack .f{background:var(--bad)}.stack .u{background:var(--off)}
.meter{margin:8px 0}.meter .top{display:flex;justify-content:space-between;font-size:14px}.meter .top b{font-variant-numeric:tabular-nums}
.meter .track{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:4px}.meter .track i{display:block;height:100%;background:var(--ok)}
.meter.warn .track i{background:var(--warn)}.meter.bad .track i{background:var(--bad)}
.meter .s{color:var(--mut);font-size:12px;margin-top:2px}
.spark{display:flex;align-items:center;gap:10px;margin:8px 0}.spark svg{flex:1;height:36px}.spark .num{flex:none;text-align:right;min-width:86px}
.spark .num b{display:block;font-size:17px;font-variant-numeric:tabular-nums}.spark .num span{color:var(--mut);font-size:12px}
.spark .cap{color:var(--mut);font-size:12px}
.badge{display:inline-block;font-size:11px;font-weight:800;letter-spacing:.04em;padding:2px 7px;border-radius:6px;text-transform:uppercase;color:#fff;background:var(--off)}
.badge.pass{background:var(--ok)}.badge.fail{background:var(--bad)}.badge.unsure{background:var(--warn);color:#111}
.tok{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:13px;padding:6px 0;display:inline-block;min-height:28px}
.kv{display:grid;grid-template-columns:auto 1fr;gap:4px 12px;font-size:14px}.kv dt{color:var(--mut)}.kv dd{margin:0;text-align:right;font-variant-numeric:tabular-nums}
.note{color:var(--mut);font-size:12px;margin-top:6px}
details summary{cursor:pointer;color:var(--acc);font-size:13px;padding:8px 0;min-height:32px;list-style:none}
details summary::-webkit-details-marker{display:none}
.foot{max-width:560px;margin:14px auto 24px;padding:0 14px;color:var(--mut);font-size:12px;text-align:center}
.empty{color:var(--mut);font-size:14px;padding:6px 0}
