:root{--bg:#0b0d10;--card:#14181d;--line:#262c34;--text:#e6e9ee;--muted:#9aa4b2;--accent:#ff4d5e;--good:#3ddc84;--low:#9fb3c8;--med:#ffb020;--high:#ff4d5e;
--sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue",Arial,sans-serif;--mono:ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}
*,*::before,*::after{box-sizing:border-box}
html{background:var(--bg);color:var(--text);font:16px/1.55 var(--sans);-webkit-text-size-adjust:100%}
body{margin:0}
a{color:#ff8a95}a:focus-visible,button:focus-visible,textarea:focus-visible,summary:focus-visible{outline:3px solid #ffd166;outline-offset:2px}
.skip{position:absolute;left:-999px}.skip:focus{left:1rem;top:1rem;background:#000;padding:.5rem;z-index:9}
.top,.foot,main{max-width:56rem;margin:0 auto;padding:0 1rem}
.top{display:flex;justify-content:space-between;align-items:center;padding-top:1rem;padding-bottom:1rem}
.brand{display:flex;gap:.5rem;align-items:center;color:var(--text);font-weight:800;text-decoration:none;font-size:1.2rem;letter-spacing:.02em}
.top nav a{margin-left:1rem;color:var(--muted)}
.hero h1{font-size:clamp(1.6rem,5vw,2.4rem);line-height:1.15;margin:.5rem 0}
.lede{color:var(--muted);max-width:40rem}
.card{background:var(--card);border:1px solid var(--line);border-radius:12px;padding:1rem;margin:1rem 0}
label{font-weight:600;display:block;margin-bottom:.4rem}
textarea{width:100%;background:#0e1115;color:var(--text);border:1px solid var(--line);border-radius:8px;padding:.75rem;font:15px/1.5 var(--mono);resize:vertical}
.hint{color:var(--muted);font-size:.9rem;margin:.5rem 0}
.row{display:flex;flex-wrap:wrap;gap:.5rem}
button{font:600 1rem var(--sans);border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#120507;padding:.65rem 1.2rem;min-height:44px;cursor:pointer}
button.ghost{background:transparent;color:var(--text);border-color:var(--line)}
button:disabled{opacity:.45;cursor:not-allowed}
.status{color:var(--muted);min-height:1.5em}
.pending{color:var(--muted);animation:p 1.2s ease-in-out infinite}@keyframes p{50%{opacity:.5}}
@media (prefers-reduced-motion:reduce){.pending{animation:none}}
.result{border-left:4px solid var(--good)}.result.band-low{border-left-color:var(--low)}.result.band-medium{border-left-color:var(--med)}.result.band-high{border-left-color:var(--high)}
.rhead{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.rhead h2{margin:0;font-size:1.1rem;word-break:break-all;flex:1 1 12rem}
.type{font-size:.8rem;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}
.badge{font-weight:700;font-size:.85rem;padding:.2rem .6rem;border-radius:99px;background:#1f3b2b;color:var(--good)}
.badge.band-low{background:#1e2a36;color:var(--low)}.badge.band-medium{background:#3a2c0b;color:var(--med)}.badge.band-high{background:#3d1117;color:#ff8a95}
.signals{list-style:none;padding:0;margin:.75rem 0}
.sig{padding:.5rem 0;border-top:1px solid var(--line)}.sig p{margin:.2rem 0 0;color:var(--muted);font-size:.92rem;word-break:break-word}
.lvl{display:inline-block;min-width:5.2rem;font:700 .75rem var(--mono);text-transform:uppercase;margin-right:.4rem}
.sig.high .lvl{color:var(--high)}.sig.medium .lvl{color:var(--med)}.sig.low .lvl{color:var(--low)}.sig.info .lvl{color:var(--muted)}.sig.good .lvl{color:var(--good)}
details summary{cursor:pointer;color:var(--muted)}
dl{display:grid;grid-template-columns:minmax(6rem,max-content) 1fr;gap:.25rem .75rem;margin:.5rem 0}dt{color:var(--muted)}dd{margin:0;word-break:break-all}
.mono,code{font-family:var(--mono)}code{background:#0e1115;padding:.05rem .3rem;border-radius:4px}
.checked,.errors{font-size:.82rem;color:var(--muted);margin:.5rem 0 0}.errors{color:var(--med)}
.prose h2{font-size:1.2rem;margin-top:1.2rem}.prose h2:first-child{margin-top:0}.prose li{margin:.3rem 0}
.foot{color:var(--muted);font-size:.85rem;padding-bottom:2rem}
@media (min-width:40rem){.card{padding:1.25rem 1.5rem}}
.tabs{display:flex;gap:.25rem;margin:1rem 0 -.5rem;border-bottom:1px solid var(--line)}
.tabs button{background:transparent;color:var(--muted);border:1px solid transparent;border-bottom:none;border-radius:8px 8px 0 0;padding:.6rem 1rem}
.tabs button[aria-selected="true"]{color:var(--text);background:var(--card);border-color:var(--line);box-shadow:inset 0 3px 0 var(--accent)}
.result.band-good{border-left-color:var(--good)}.badge.band-good{background:#1f3b2b;color:var(--good)}
.h3{font-size:1.05rem;margin:0 0 .5rem}
.tablewrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.hops{border-collapse:collapse;width:100%;font-size:.85rem;margin:.5rem 0}
.hops th,.hops td{text-align:left;padding:.35rem .5rem;border-top:1px solid var(--line);vertical-align:top}.hops th{color:var(--muted);font-weight:600}
.hops td.mono{word-break:break-all;min-width:6rem}
.score-note{font-size:.82rem;color:var(--muted);margin:.35rem 0 0;font-style:italic}
.score-note.emph{color:var(--med);font-style:normal;font-weight:600}
.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
label.button{display:inline-flex;align-items:center;font:600 1rem var(--sans);border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#120507;padding:.65rem 1.2rem;min-height:44px;cursor:pointer;margin:0}
label.button.ghost{background:transparent;color:var(--text);border-color:var(--line)}
input.visually-hidden:focus-visible+label.button{outline:3px solid #ffd166;outline-offset:2px}
.drop{border:2px dashed var(--line);border-radius:12px;padding:1rem;margin:.5rem 0}.drop.over{border-color:var(--accent);background:#1a1013}
.drop:focus-visible{outline:3px solid #ffd166;outline-offset:2px}.drop p{margin:0 0 .75rem}
.samples button{padding:.45rem .8rem;min-height:40px;font-size:.9rem}
button.small{padding:.2rem .6rem;min-height:32px;font-size:.8rem}
.qtop{display:flex;flex-wrap:wrap;gap:1rem;align-items:flex-start;margin:.75rem 0}.qtop dl{flex:1 1 16rem;margin:0}
.qprev{max-width:220px;height:auto;border-radius:8px;border:1px solid var(--line);background:#fff}
pre.payload{white-space:pre-wrap;word-break:break-all;background:#0e1115;border:1px solid var(--line);border-radius:8px;padding:.6rem;font-size:.85rem;max-height:20rem;overflow:auto}
details.profile{margin:.75rem 0;border-top:1px solid var(--line);padding-top:.6rem}
details.profile>summary{color:var(--text);font-weight:600}
.profile-sum{margin:.5rem 0;color:var(--text)}
.h4{font-size:.95rem;margin:.9rem 0 .3rem}
ul.plain{list-style:none;padding:0;margin:.25rem 0}ul.plain li{padding:.15rem 0}.muted{color:var(--muted);font-size:.9rem}
.sig .lvl+span{color:var(--text)}
