: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}}
