:root{--bg:#fff;--fg:#1b1f24;--mut:#59636e;--card:#f4f6f8;--bd:#d0d7de;--ac:#0b57d0;--ok:#1a7f37;--bad:#cf222e}
@media (prefers-color-scheme:dark){:root{--bg:#0d1117;--fg:#e6edf3;--mut:#9198a1;--card:#161b22;--bd:#30363d;--ac:#6ea8fe;--ok:#3fb950;--bad:#ff7b72}}
body{background:var(--bg);color:var(--fg);font:15px/1.45 system-ui,sans-serif;margin:0;padding:12px 16px;max-width:1100px}
h1{font-size:1.25rem;margin:.2rem 0}h2{font-size:1.05rem;margin:.2rem 0}
.banner{background:var(--card);border:1px solid var(--bd);padding:8px 12px;border-radius:8px;margin-bottom:12px}
.card{background:var(--card);border:1px solid var(--bd);border-radius:8px;padding:10px 12px;margin:8px 0}
.card p{margin:.3rem 0;color:var(--mut)}
.row{display:flex;flex-wrap:wrap;gap:6px;align-items:center;margin:6px 0}
button{font:inherit;padding:5px 10px;border:1px solid var(--bd);border-radius:6px;background:var(--bg);color:var(--fg);cursor:pointer}
button:hover{border-color:var(--ac)}button.p{background:var(--ac);color:#fff;border-color:var(--ac)}
button.gated{opacity:.45}
input[type=text],select{font:inherit;padding:4px 6px;border:1px solid var(--bd);border-radius:6px;background:var(--bg);color:var(--fg);min-width:14rem}
.tag{font-size:.75rem;padding:1px 6px;border-radius:10px;border:1px solid var(--bd);color:var(--mut)}
#log{max-height:340px;overflow:auto;font:12px/1.35 ui-monospace,monospace;background:var(--card);border:1px solid var(--bd);border-radius:8px;padding:8px;white-space:pre-wrap;word-break:break-word}
.pass{color:var(--ok)}.fail{color:var(--bad)}
pre.out{white-space:pre-wrap;font:12px ui-monospace,monospace;margin:4px 0}
textarea{width:100%;min-height:5rem;font:12px ui-monospace,monospace;background:var(--card);color:var(--fg);border:1px solid var(--bd)}
