
:root{--bg:#f4f5f7;--surface:#fff;--line:#d8dce2;--ink:#1d232b;--muted:#5e6875;--accent:#25567f;--accent-soft:#dce6f0;--good:#1f7a4d;--good-soft:#ddf1e6;--warn:#9a5b00;--warn-soft:#fbecd4;--bad:#b3261e;--bad-soft:#f9dedc;--mono:ui-monospace,SFMono-Regular,Menlo,monospace;--sans:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;color-scheme:light}
@media (prefers-color-scheme:dark){:root{--bg:#101317;--surface:#181c22;--line:#2e353e;--ink:#e6e9ee;--muted:#9aa4b1;--accent:#8db8e0;--accent-soft:#1e2c3a;--good:#5fcf95;--good-soft:#16301f;--warn:#e7b35d;--warn-soft:#352813;--bad:#f2a49d;--bad-soft:#3a1a18;color-scheme:dark}}
*{box-sizing:border-box}[hidden]{display:none!important}body{margin:0;background:var(--bg);color:var(--ink);font:14px/1.5 var(--sans)}
.top{display:flex;align-items:center;gap:12px;padding:calc(12px + env(safe-area-inset-top,0px)) 20px 12px;border-bottom:1px solid var(--line);background:var(--surface)}
.brand{font-weight:700}.top .btn{margin-left:auto}
main{max-width:1080px;margin:0 auto;padding:20px 16px 40px}
.card{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.card.narrow{max-width:380px;margin:60px auto}
.card-head{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin-bottom:8px}
h1{font-size:20px;margin:0 0 12px}h2{font-size:16px;margin:0}h3{font-size:13px;color:var(--muted);margin:16px 0 8px;font-weight:600}
.muted{color:var(--muted)}.small{font-size:12.5px}.err{color:var(--bad);min-height:1.2em;margin:8px 0 0}
a{color:var(--accent)}
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:16px}.grid .card{margin-bottom:0}.grid{margin-bottom:16px}
.pill{font-size:12.5px;padding:2px 10px;border-radius:999px;background:var(--accent-soft);color:var(--accent);white-space:nowrap}
.pill.good{background:var(--good-soft);color:var(--good)}.pill.warn{background:var(--warn-soft);color:var(--warn)}.pill.bad{background:var(--bad-soft);color:var(--bad)}
.where{font-size:18px;margin:4px 0 14px}.where b{font-weight:700}
.nodes{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}
.node{border:1px solid var(--line);border-radius:10px;padding:12px 14px}.node.active{border-color:var(--good);box-shadow:inset 3px 0 0 var(--good)}
.node-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:6px}.node-name{font-weight:600}
.kv{display:flex;justify-content:space-between;gap:12px;padding:2px 0;font-size:13px}.kv span:first-child{color:var(--muted)}.kv span:last-child{text-align:right;font-family:var(--mono);font-size:12.5px;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin:8px 0}.row.check{flex-wrap:nowrap;align-items:flex-start;cursor:pointer}.row.check input{margin-top:3px;flex:none}
.seg{display:inline-flex;border:1px solid var(--line);border-radius:8px;overflow:hidden}.seg button{border:0;background:transparent;color:var(--ink);padding:6px 14px;font:inherit;cursor:pointer}.seg button[aria-pressed=true]{background:var(--accent);color:#fff}
@media (prefers-color-scheme:dark){.seg button[aria-pressed=true]{color:#101317}}
.btn{white-space:nowrap;font:inherit;border-radius:8px;padding:7px 14px;cursor:pointer;border:1px solid var(--line);background:var(--surface);color:var(--ink)}
.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}@media (prefers-color-scheme:dark){.btn.primary{color:#101317}}
.btn.ghost{background:transparent}.btn:disabled{opacity:.5;cursor:not-allowed}
.confirm{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 12px;border-radius:8px;background:var(--warn-soft);color:var(--warn)}
label{display:block}input[type=password]{display:block;width:100%;margin:6px 0 12px;padding:9px 10px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--ink);font:inherit}
.list{list-style:none;margin:0;padding:0}.list li{display:flex;justify-content:space-between;gap:12px;padding:6px 0;border-top:1px solid var(--line);font-size:13px}.list li:first-child{border-top:0}
.tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:4px}
