:root{--bg:#f6f7f9;--fg:#1c1f24;--muted:#6b7280;--card:#fff;--border:#e3e5e8;--accent:#2f6fed;--error:#c62828;font-family:system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:15px;line-height:1.5}@media (prefers-color-scheme:dark){:root{--bg:#15171b;--fg:#e6e8eb;--muted:#9aa1ab;--card:#1e2126;--border:#2d3138;--accent:#5b8ff9;--error:#ef5350}}*{box-sizing:border-box}body{background:var(--bg);color:var(--fg);margin:0}button{font:inherit;background:var(--accent);color:#fff;cursor:pointer;border:0;border-radius:6px;padding:.5rem 1rem}button:disabled{opacity:.6;cursor:default}button.link{color:var(--accent);background:0 0;padding:0}input{font:inherit;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);border-radius:6px;padding:.5rem .6rem}.muted{color:var(--muted)}.error{color:var(--error)}.center{text-align:center;margin-top:20vh}.card{background:var(--card);border:1px solid var(--border);border-radius:10px;padding:1.5rem}.login{place-items:center;min-height:100vh;display:grid}.login form{gap:1rem;width:340px;display:grid}.login h1{margin:0;font-size:1.3rem}.login label{gap:.3rem;display:grid}.topbar{background:var(--card);border-bottom:1px solid var(--border);align-items:center;gap:1.5rem;padding:.75rem 1.5rem;display:flex}.topbar nav a{color:var(--muted);text-decoration:none}.topbar nav a.active{color:var(--fg);font-weight:600}.spacer{flex:1}.content{max-width:1200px;margin:0 auto;padding:1.5rem}h2,h3{margin:0}h3{font-size:1.05rem}a{color:var(--accent)}select{font:inherit;border:1px solid var(--border);background:var(--bg);width:100%;color:var(--fg);border-radius:6px;padding:.5rem .6rem}.stack{gap:1rem;display:grid}.row{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.form-grid{grid-template-columns:1fr 1fr;gap:1rem;display:grid}.form-grid label{gap:.3rem;display:grid}.form-grid .wide{grid-column:1/-1}.table{border-collapse:collapse;background:var(--card);border:1px solid var(--border);border-radius:8px;width:100%}.table th,.table td{text-align:left;border-bottom:1px solid var(--border);vertical-align:top;padding:.5rem .75rem}.table thead th{color:var(--muted);font-size:.85rem;font-weight:600}.table .num{text-align:right;font-variant-numeric:tabular-nums}.table.compact th,.table.compact td{white-space:nowrap;padding:.25rem .5rem;font-size:.85rem}.table.clickable tbody tr{cursor:pointer}.table.clickable tbody tr:hover{background:color-mix(in srgb, var(--accent) 8%, transparent)}.table tr.selected{background:color-mix(in srgb, var(--accent) 18%, transparent);font-weight:600}.table .rownum{color:var(--muted);width:2.5rem;font-weight:400}.scroll{max-width:100%;overflow-x:auto}.warn{color:#b26a00;font-weight:600}.badge{border-radius:999px;padding:.1rem .5rem;font-size:.8rem;display:inline-block}.badge.ok{color:#2e7d32;background:#2e7d3226}.badge.bad{background:color-mix(in srgb, var(--error) 15%, transparent);color:var(--error)}.tabs{border-bottom:1px solid var(--border);gap:.25rem;display:flex}.tab{color:var(--muted);background:0 0;border-bottom:2px solid #0000;border-radius:6px 6px 0 0}.tab.active{color:var(--fg);border-bottom-color:var(--accent);font-weight:600}input[type=file]{background:0 0;border:0;flex:1;width:auto;min-width:0;padding:0}.topbar nav{gap:1.25rem;display:flex}.small{font-size:.82rem}code{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.85em}.row.tight{flex-wrap:nowrap;gap:.5rem}.checks{align-content:end;gap:.4rem;display:grid}.checks label,label.small{align-items:center;gap:.4rem;display:flex}input[type=checkbox]{width:auto}.table tr.attention{background:#b26a001a}.table tr.inactive{opacity:.5}.badge{background:color-mix(in srgb, var(--muted) 15%, transparent)}.badge.warnbg{color:#b26a00;background:#b26a002e}a.button{background:var(--accent);color:#fff;border-radius:6px;padding:.5rem 1rem;text-decoration:none;display:inline-block}.stats{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:.75rem;display:grid}.stats>div{background:var(--card);border:1px solid var(--border);border-radius:8px;gap:.2rem;padding:.75rem 1rem;display:grid}.stats strong{font-size:1.15rem}.card.error ul{margin:.5rem 0 0}
