:root{--bg:#f7f8fa;--surface:#fff;--text:#1c2230;--muted:#5d6576;--border:#dfe3ea;--accent:#1f4fd8;--accent-text:#fff;--danger:#b42318;--ok:#067647;--warn-bg:#fff6e0;--warn-text:#7a4b00;--radius:8px;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f1218;--surface:#171b23;--text:#e6e9ef;--muted:#9aa3b2;--border:#2a3140;--accent:#5b82ff;--danger:#ff6b5f;--ok:#3ccf8e;--warn-bg:#3a2e12;--warn-text:#ffd27a;color-scheme:dark}}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.5 system-ui,-apple-system,Segoe UI,sans-serif}a{color:var(--accent)}h1{font-size:1.4rem;margin:0 0 1rem}h2{font-size:1.1rem;margin:1.5rem 0 .75rem}.mono,code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.9em}.shell{display:grid;grid-template-columns:220px 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:1rem;display:flex;flex-direction:column;gap:.25rem}.sidebar .brand{font-weight:700;font-size:1.1rem;margin-bottom:.75rem}.sidebar a{color:var(--text);text-decoration:none;padding:.35rem .5rem;border-radius:6px}.sidebar a:hover,.sidebar a[aria-current=page]{background:var(--bg)}.sidebar .section{color:var(--muted);font-size:.75rem;text-transform:uppercase;letter-spacing:.04em;margin:.75rem .5rem .25rem}.main{padding:1.5rem 2rem;max-width:1100px;width:100%}.topbar{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1.25rem}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:1rem 1.25rem;margin-bottom:1rem}.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));grid-gap:1rem;gap:1rem}.stat .value{font-size:1.5rem;font-weight:600}.stat .label{color:var(--muted);font-size:.85rem}table{width:100%;border-collapse:collapse;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);overflow:hidden}td,th{text-align:left;padding:.55rem .75rem;border-bottom:1px solid var(--border);vertical-align:top}th{font-size:.8rem;color:var(--muted);font-weight:600}tr:last-child td{border-bottom:0}form.stack{display:grid;grid-gap:.75rem;gap:.75rem;max-width:34rem}form.inline{display:flex;gap:.5rem;flex-wrap:wrap;align-items:flex-end}label{display:grid;grid-gap:.25rem;gap:.25rem;font-size:.9rem}input,select,textarea{font:inherit;color:inherit;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:.45rem .6rem}textarea{min-height:10rem;font-family:ui-monospace,monospace;font-size:.85rem}a:focus-visible,button:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.button,button{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-text);border-radius:6px;padding:.45rem .9rem;cursor:pointer;text-decoration:none;display:inline-block}.button.secondary,button.secondary{background:transparent;color:var(--accent)}button.danger{background:transparent;border-color:var(--danger);color:var(--danger)}button:disabled{opacity:.6;cursor:progress}.badge{display:inline-block;font-size:.75rem;padding:.05rem .5rem;border-radius:999px;border:1px solid var(--border);color:var(--muted);white-space:nowrap}.badge.ok{color:var(--ok)}.badge.bad,.badge.ok{border-color:currentColor}.badge.bad{color:var(--danger)}.muted{color:var(--muted)}.error{color:var(--danger)}.success{color:var(--ok)}.banner{background:var(--warn-bg);color:var(--warn-text);border-radius:var(--radius);padding:.75rem 1rem;margin-bottom:1rem}.reveal{background:var(--bg);border:1px dashed var(--accent);border-radius:6px;padding:.75rem;word-break:break-all}.auth{max-width:26rem;margin:6vh auto;padding:0 1rem}.row{display:flex;gap:.5rem;flex-wrap:wrap;align-items:center}@media (max-width:760px){.shell{grid-template-columns:1fr}.sidebar{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--border)}.sidebar .section{display:none}.main{padding:1rem}table{display:block;overflow-x:auto}}.chart{margin:0}.chart figcaption{margin-bottom:.5rem}.chart svg{width:100%;height:auto;display:block;overflow:visible}.chart .gridline{stroke:var(--border);stroke-width:1}.chart .tick{fill:var(--muted);font-size:11px}.chart .mark{fill:var(--accent)}.chart .hit{fill:transparent}.chart .bar:hover .hit{fill:var(--border);opacity:.35}details summary{cursor:pointer;margin:1rem 0 .5rem;color:var(--muted)}.qr{background:#fff;padding:.5rem;border-radius:var(--radius);display:inline-block;line-height:0}h3{font-size:1rem;margin:1.25rem 0 .5rem}