:root{--bg:#0b0d10;--panel:#14171c;--panel2:#1a1e24;--line:#262b33;--text:#e8eaed;--muted:#9aa3ad;--accent:#3e8bff;--ok:#2fbf71;--bad:#ff5a52;--warn:#f0b43c;--r:14px}
*{box-sizing:border-box}html,body{margin:0;height:100%;background:var(--bg);color:var(--text);font:14px/1.45 -apple-system,"Segoe UI",Inter,Roboto,sans-serif}
button,input{font:inherit;color:inherit}
.app{display:grid;grid-template-columns:220px 1fr;height:100vh}
.rail{background:#0f1115;border-right:1px solid var(--line);padding:20px 12px;display:flex;flex-direction:column;gap:4px}
.brand{display:flex;align-items:center;gap:10px;font-weight:600;letter-spacing:.02em;padding:0 8px 20px}
.mark{display:grid;place-items:center;width:30px;height:30px;border-radius:9px;background:linear-gradient(135deg,#3e8bff,#1b4fa8);font-size:12px}
.nav{background:none;border:0;text-align:left;padding:10px 12px;border-radius:10px;color:var(--muted);cursor:pointer}
.nav:hover{background:var(--panel)}.nav.active{background:var(--panel2);color:var(--text)}
.nav:focus-visible,input:focus-visible,.vrow:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
.rail-foot{margin-top:auto;color:var(--muted);font-size:12px;padding:8px}
.main{display:flex;flex-direction:column;min-width:0}
.status{display:flex;align-items:center;gap:22px;padding:12px 22px;border-bottom:1px solid var(--line);font-size:13px}
.muted{color:var(--muted)}.muted b{color:var(--text);font-weight:500}
.pill{display:inline-flex;align-items:center;gap:7px;padding:4px 10px;border-radius:99px;background:var(--panel2);font-size:12px}
.pill::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--muted)}
.pill.on::before{background:var(--ok);box-shadow:0 0 8px var(--ok)}.pill.off::before{background:var(--bad)}
.toggle{margin-left:auto;display:flex;align-items:center;gap:8px;cursor:pointer;color:var(--muted)}
.toggle input{position:absolute;opacity:0}.toggle span{width:34px;height:20px;border-radius:99px;background:var(--line);position:relative;transition:.2s}
.toggle span::after{content:"";position:absolute;top:3px;left:3px;width:14px;height:14px;border-radius:50%;background:#fff;transition:.2s}
.toggle input:checked+span{background:var(--accent)}.toggle input:checked+span::after{left:17px}
.toggle input:focus-visible+span{outline:2px solid var(--accent)}
.panes{display:grid;grid-template-columns:380px 1fr;flex:1;min-height:0}
.list{border-right:1px solid var(--line);display:flex;flex-direction:column;min-height:0}
#search{margin:16px;padding:11px 14px;border-radius:12px;border:1px solid var(--line);background:var(--panel);outline:none}
ul{list-style:none;margin:0;padding:0 10px 16px;overflow:auto}
.vrow{padding:14px;border-radius:var(--r);cursor:pointer;margin-bottom:6px;border:1px solid transparent}
.vrow:hover{background:var(--panel)}.vrow.sel{background:var(--panel2);border-color:var(--line)}
.vtop{display:flex;justify-content:space-between;align-items:center}.vname{font-weight:600}
.vsub{color:var(--muted);font-size:13px;margin-top:3px}.vmeta{display:flex;gap:10px;align-items:center;margin-top:8px;font-size:12px;color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}
.badge{padding:2px 8px;border-radius:99px;font-size:11px;font-weight:600;background:var(--panel2);color:var(--muted)}
.badge.bad{background:rgba(255,90,82,.16);color:#ff8a84}.badge.on{background:rgba(47,191,113,.14);color:#5fd897}
.detail,.full{overflow:auto;padding:22px 26px}.full{flex:1}.hidden{display:none!important}
.map{position:relative;height:240px;border-radius:var(--r);background:radial-gradient(ellipse at 60% 50%,#18202b,#101318);border:1px solid var(--line);overflow:hidden}
.map svg{position:absolute;inset:0;width:100%;height:100%}
.pin{position:absolute;width:12px;height:12px;border-radius:50%;background:var(--muted);transform:translate(-50%,-50%);border:2px solid #0b0d10}
.pin.on{background:var(--ok)}.pin.sel{width:18px;height:18px;background:var(--accent);box-shadow:0 0 0 8px rgba(62,139,255,.18)}
.maplabel{position:absolute;left:14px;bottom:12px;font-size:12px;color:var(--muted)}
h2{font-size:22px;font-weight:600;margin:20px 0 4px}h3{font-size:13px;font-weight:500;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:26px 0 10px}
.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px 16px}
.card .k{font-size:12px;color:var(--muted)}.card .v{margin-top:4px;font-weight:500;word-break:break-all}
.mod{margin-bottom:12px}.modhead{display:flex;justify-content:space-between;align-items:center}
.dtc{display:flex;justify-content:space-between;padding:10px 0;border-top:1px solid var(--line);margin-top:10px}
.dtc .code{font-weight:600;color:#ff8a84}
.clear{display:flex;align-items:center;gap:10px;color:#5fd897;margin-top:10px}
.clear::before{content:"✓";display:grid;place-items:center;width:22px;height:22px;border-radius:50%;background:rgba(47,191,113,.15)}
pre{margin:0;white-space:pre-wrap;color:#c8d1db}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:12px}
.empty{color:var(--muted);padding:40px;text-align:center}
@media(max-width:1100px){.app{grid-template-columns:72px 1fr}.brand span:last-child,.rail-foot{display:none}.nav{font-size:12px;padding:10px 6px;text-align:center}.panes{grid-template-columns:320px 1fr}.facts{grid-template-columns:1fr 1fr}}
