:root{--bg:#f4f6f5;--surface:#fff;--sunk:#eef1ef;--line:#d9dfdb;--text:#1c2420;--muted:#5f6b65;--accent:#2e7d32;--accent-t:#fff;--ok:#1a7f37;--warn:#9a6700;--danger:#c62828;--info:#0b5cad;color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#121614;--surface:#1b201d;--sunk:#232a26;--line:#323b36;--text:#e6ebe8;--muted:#9aa6a0;--accent:#5cb860;--accent-t:#0d130f;--ok:#5cb860;--warn:#e3b341;--danger:#ef6b6b;--info:#6cb0f5;color-scheme:dark}}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif}
.boot{padding:40px;text-align:center;color:var(--muted)}
header.top{display:flex;align-items:center;gap:12px;flex-wrap:wrap;padding:10px 16px;background:var(--surface);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
header.top .brand{font-weight:700;display:flex;align-items:center;gap:8px}header.top .brand i{width:22px;height:22px;border-radius:50%;background:var(--accent);display:inline-block}
header.top .sp{flex:1}
nav.tabs{display:flex;gap:4px;flex-wrap:wrap;padding:10px 16px 0;max-width:1200px;margin:0 auto}
nav.tabs button{border:1px solid transparent;background:none;color:var(--muted);padding:8px 12px;border-radius:10px;cursor:pointer;font:inherit}
nav.tabs button[aria-current=true]{background:var(--surface);border-color:var(--line);color:var(--text);font-weight:600}
.badge{display:inline-block;min-width:20px;padding:0 6px;border-radius:10px;background:var(--danger);color:#fff;font-size:12px;text-align:center;margin-left:4px}
main{max-width:1200px;margin:0 auto;padding:16px}
h1{font-size:22px;margin:0 0 4px}h2{font-size:17px;margin:0 0 8px}.sub{color:var(--muted);margin:0 0 14px}
.panel{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:14px}
.row{display:flex;gap:8px;flex-wrap:wrap;align-items:flex-end}
.btn{border:1px solid var(--line);background:var(--surface);color:var(--text);padding:8px 14px;border-radius:10px;cursor:pointer;font:inherit;display:inline-flex;gap:6px;align-items:center}
.btn:hover{border-color:var(--muted)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--accent-t)}.btn.danger{color:var(--danger)}.btn.sm{padding:4px 10px;font-size:13.5px}.btn:disabled{opacity:.55;cursor:wait}
.btn.quiet{border-color:transparent;background:none}
label.f{display:flex;flex-direction:column;gap:4px;font-size:13.5px;color:var(--muted);min-width:150px}label.f.full{grid-column:1/-1}
input,select,textarea{font:inherit;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:9px;padding:8px 10px;width:100%}
input[type=checkbox]{width:auto}textarea{resize:vertical}
.fgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px 12px}
.tw{overflow-x:auto;border:1px solid var(--line);border-radius:12px;background:var(--surface)}
table{border-collapse:collapse;width:100%;font-size:14px}th,td{padding:8px 10px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}th{background:var(--sunk);font-weight:600;font-size:13px;color:var(--muted);white-space:nowrap}
tr.click{cursor:pointer}tr.click:hover td{background:var(--sunk)}td.n,th.n{text-align:right;white-space:nowrap}
.chip{display:inline-block;padding:2px 9px;border-radius:20px;font-size:12.5px;background:var(--sunk);color:var(--muted);white-space:nowrap}
.chip.ok{background:color-mix(in srgb,var(--ok) 15%,transparent);color:var(--ok)}.chip.info{background:color-mix(in srgb,var(--info) 15%,transparent);color:var(--info)}
.chip.warn{background:color-mix(in srgb,var(--warn) 18%,transparent);color:var(--warn)}.chip.off{background:color-mix(in srgb,var(--danger) 14%,transparent);color:var(--danger)}
.note{color:var(--muted);font-size:13px}.err{color:var(--danger);min-height:1.2em;margin:8px 0 0}
.tiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.tile{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px}.tile b{display:block;font-size:22px}.tile span{color:var(--muted);font-size:13px}
dialog{border:none;border-radius:16px;padding:0;width:min(860px,96vw);max-height:92vh;background:var(--surface);color:var(--text);box-shadow:0 20px 60px rgba(0,0,0,.35)}
dialog::backdrop{background:rgba(0,0,0,.4)}
.dh{display:flex;justify-content:space-between;align-items:center;padding:14px 18px;border-bottom:1px solid var(--line);position:sticky;top:0;background:var(--surface)}.dh h2{margin:0}
.db{padding:16px 18px}.df{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end;padding:12px 18px;border-top:1px solid var(--line);position:sticky;bottom:0;background:var(--surface)}
.steps{display:flex;gap:6px;flex-wrap:wrap;margin:8px 0}.steps span{padding:3px 10px;border-radius:20px;border:1px solid var(--line);font-size:13px}.steps span.done{background:color-mix(in srgb,var(--ok) 15%,transparent);border-color:transparent;color:var(--ok)}.steps span.now{border-color:var(--accent);color:var(--accent);font-weight:600}
.log{font-size:13.5px;margin:0;padding-left:18px}.log li{margin:4px 0}
.lines td input{min-width:90px}
.auth{max-width:380px;margin:8vh auto;padding:0 16px}
#toast{position:fixed;left:50%;bottom:20px;transform:translateX(-50%);background:var(--text);color:var(--bg);padding:10px 16px;border-radius:10px;opacity:0;transition:opacity .2s;pointer-events:none;max-width:90vw}#toast.on{opacity:1}
.guide ol{padding-left:20px}.guide li{margin:6px 0}.guide code{background:var(--sunk);padding:1px 6px;border-radius:5px}
.co{border:1px solid var(--line);border-radius:12px;padding:14px;margin-bottom:12px}
@media (max-width:640px){main{padding:12px}header.top{padding:8px 12px}.hide-s{display:none}}
