
*{box-sizing:border-box}
:root{--ink:#16181d;--muted:#5b6170;--line:#dfe2e8;--canvas:#f4f5f7;--panel:#fff;--accent:#1d4ed8;--ok:#166534;--warn:#92400e;--bad:#991b1b}
body{margin:0;background:var(--canvas);color:var(--ink);font:15px/1.5 system-ui,-apple-system,"Segoe UI",Roboto,Arial,sans-serif}
header{background:var(--panel);border-bottom:1px solid var(--line)}
.top{max-width:960px;margin:0 auto;padding:12px 16px;display:flex;flex-wrap:wrap;gap:8px 20px;align-items:center}
.brand{font-weight:700;color:var(--ink);text-decoration:none;margin-right:auto}
nav{display:flex;flex-wrap:wrap;gap:4px 14px}
nav a{color:var(--muted);text-decoration:none;padding:4px 0;border-bottom:2px solid transparent}
nav a[aria-current=page]{color:var(--ink);border-bottom-color:var(--accent)}
nav form{display:inline}
main{max-width:960px;margin:0 auto;padding:20px 16px 48px}
h1{font-size:22px;margin:4px 0 6px}
.sub{color:var(--muted);margin:0 0 18px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:16px 18px;margin:0 0 16px}
.narrow{max-width:460px;margin:40px auto}
dl.kv{display:grid;grid-template-columns:minmax(120px,max-content) 1fr;gap:8px 18px;margin:0}
dl.kv dt{color:var(--muted)}
dl.kv dd{margin:0}
.scroll{overflow-x:auto}
table{width:100%;border-collapse:collapse}
th,td{text-align:left;padding:8px 10px;border-bottom:1px solid var(--line);vertical-align:top}
th{color:var(--muted);font-weight:600;font-size:13px;white-space:nowrap}
.num{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}
.mono{font-family:ui-monospace,Menlo,Consolas,monospace;font-size:13px;word-break:break-all}
.tag{display:inline-block;padding:1px 8px;border-radius:999px;font-size:13px;border:1px solid currentColor}
.tag.ok{color:var(--ok)}.tag.warn{color:var(--warn)}.tag.bad{color:var(--bad)}.tag.none{color:var(--muted)}
.note{color:var(--muted);font-size:14px}
.empty{color:var(--muted);padding:8px 0}
.alert{border:1px solid var(--bad);color:var(--bad);border-radius:8px;padding:10px 12px;margin:0 0 14px}
.done{border:1px solid var(--ok);color:var(--ok);border-radius:8px;padding:10px 12px;margin:0 0 14px}
label{display:block;margin:0 0 12px}
label span{display:block;font-weight:600;font-size:14px;margin:0 0 4px}
label small{display:block;color:var(--muted);font-size:13px}
input{width:100%;font:inherit;padding:9px 10px;border:1px solid #b8bdc8;border-radius:8px;background:#fff;color:var(--ink)}
input[aria-invalid=true]{border-color:var(--bad)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 16px}
button{font:inherit;padding:9px 16px;border-radius:8px;border:1px solid var(--accent);background:var(--accent);color:#fff;cursor:pointer}
button.link{background:none;border:0;color:var(--muted);padding:4px 0}
a{color:var(--accent)}
.once{background:var(--canvas);border:1px dashed var(--line);border-radius:8px;padding:10px 12px}
