:root{color-scheme:dark;--bg:#07101d;--panel:#0f1b2d;--panel2:#111f33;--line:#263750;--text:#edf5ff;--muted:#91a4bd;--brand:#5eead4;--blue:#38bdf8;--ok:#4ade80;--warn:#fbbf24;--bad:#fb7185}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;min-height:100vh;background:radial-gradient(circle at 12% 0,#12345a 0,transparent 28%),radial-gradient(circle at 95% 12%,#10392f 0,transparent 25%),var(--bg);color:var(--text);font-family:Inter,"HarmonyOS Sans SC","Microsoft YaHei",system-ui,sans-serif}
.wrap{width:min(1120px,100%);margin:auto;padding:22px 18px 72px}
.top{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:20px}
.brand{display:flex;align-items:center;gap:12px}
.logo{width:43px;height:43px;border-radius:14px;background:linear-gradient(135deg,#2dd4bf,#38bdf8);display:grid;place-items:center;color:#04111d;font-weight:950;font-size:21px}
.brand h1{font-size:19px;margin:0}.brand p{font-size:12px;color:var(--muted);margin:3px 0 0}
.logout{color:#b9c8da;text-decoration:none;border:1px solid var(--line);border-radius:11px;padding:8px 12px;font-size:13px;background:rgba(15,27,45,.72)}
.summary{display:grid;grid-template-columns:1.35fr .65fr;gap:16px;margin-bottom:20px}
.hero,.status{border:1px solid var(--line);background:linear-gradient(145deg,rgba(17,31,51,.97),rgba(12,24,40,.94));border-radius:22px;padding:22px;box-shadow:0 22px 60px rgba(0,0,0,.18)}
.eyebrow{font-size:12px;color:var(--brand);letter-spacing:.1em;text-transform:uppercase;font-weight:800}
.actual{font-size:clamp(22px,5vw,35px);font-weight:850;margin:9px 0 8px;overflow-wrap:anywhere}
.chain{font-size:13px;color:var(--muted);overflow-wrap:anywhere}
.pills{display:flex;gap:8px;flex-wrap:wrap;margin-top:17px}
.pill{border:1px solid var(--line);background:#091525;border-radius:999px;padding:6px 10px;color:#b9c8da;font-size:12px}
.pill.ok{color:var(--ok);border-color:rgba(74,222,128,.3)}.pill.bad{color:var(--bad);border-color:rgba(251,113,133,.35)}
.status{display:grid;align-content:center;gap:12px}.status-row{display:flex;justify-content:space-between;gap:14px;color:var(--muted);font-size:13px}.status-row strong{color:var(--text);text-align:right}
.toolbar{position:sticky;top:10px;z-index:5;display:grid;grid-template-columns:1fr auto;gap:12px;padding:12px;border:1px solid rgba(52,73,103,.85);background:rgba(7,16,29,.88);backdrop-filter:blur(14px);border-radius:17px;margin-bottom:22px}
.search{border:1px solid var(--line);border-radius:12px;background:#0b1728;color:var(--text);padding:11px 13px;font:inherit;outline:none;min-width:0}.search:focus{border-color:var(--blue)}
.disconnect{display:flex;align-items:center;gap:8px;color:#b9c8da;font-size:13px;white-space:nowrap;padding:0 5px}.disconnect input{accent-color:#2dd4bf;width:17px;height:17px}
.flash,.api-error{border-radius:14px;padding:12px 14px;margin-bottom:16px;font-size:14px}.flash.success{background:rgba(74,222,128,.1);border:1px solid rgba(74,222,128,.3);color:#bbf7d0}.flash.error,.api-error{background:rgba(251,113,133,.1);border:1px solid rgba(251,113,133,.3);color:#fecdd3}
.region{margin:25px 0}.region-head{display:flex;align-items:end;justify-content:space-between;margin-bottom:11px}.region h2{font-size:17px;margin:0}.region-count{font-size:12px;color:var(--muted)}
.nodes{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.node{position:relative;display:flex;min-height:114px;flex-direction:column;justify-content:space-between;gap:14px;padding:15px;border:1px solid var(--line);border-radius:17px;background:linear-gradient(145deg,#101d30,#0c1727);transition:.16s ease}.node:hover{border-color:#456284;transform:translateY(-1px)}.node.current{border-color:#2dd4bf;box-shadow:0 0 0 1px rgba(45,212,191,.22),0 16px 44px rgba(20,184,166,.1)}
.node-name{font-size:14px;font-weight:720;line-height:1.45;overflow-wrap:anywhere;padding-right:42px}.badge{position:absolute;right:12px;top:12px;border-radius:999px;padding:3px 7px;font-size:10px;background:#0a1524;color:#9eb0c7;border:1px solid var(--line)}.badge.selected{color:#99f6e4;border-color:rgba(45,212,191,.45);background:rgba(20,184,166,.1)}
.node-bottom{display:flex;align-items:center;justify-content:space-between;gap:8px}.delay{font-size:12px;color:var(--muted)}.delay.good{color:var(--ok)}.delay.medium{color:var(--warn)}.select-form{margin:0}.select-btn{border:1px solid #334a68;background:#13233a;color:#dce9f8;border-radius:10px;padding:7px 11px;font:inherit;font-size:12px;font-weight:750;cursor:pointer}.select-btn:hover{border-color:var(--blue)}.node.current .select-btn{color:#a7f3d0;border-color:rgba(45,212,191,.38);background:rgba(20,184,166,.1)}
.empty{padding:30px;text-align:center;color:var(--muted);border:1px dashed var(--line);border-radius:17px}.footer{margin-top:35px;color:#64748b;font-size:12px;text-align:center}.hidden{display:none!important}
.login-body{display:grid;place-items:center;padding:24px}.login{width:min(420px,100%);padding:30px;border:1px solid var(--line);border-radius:24px;background:rgba(15,27,45,.94);box-shadow:0 28px 80px rgba(0,0,0,.35)}.login .logo{width:52px;height:52px;border-radius:17px;font-size:25px}.login h1{font-size:25px;margin:20px 0 7px}.login .sub{color:var(--muted);margin:0 0 24px}.field{display:grid;gap:8px;margin:15px 0}.field label{font-size:13px;color:#b8c7da}.field input{width:100%;border:1px solid var(--line);border-radius:13px;background:#091424;color:var(--text);padding:13px 14px;font:inherit;outline:none}.field input:focus{border-color:var(--blue);box-shadow:0 0 0 3px rgba(56,189,248,.13)}.login button{width:100%;border:0;border-radius:13px;padding:13px 16px;margin-top:8px;background:linear-gradient(135deg,#2dd4bf,#38bdf8);color:#04111d;font-weight:800;font-size:15px;cursor:pointer}.login-error{padding:11px 13px;background:rgba(244,63,94,.12);border:1px solid rgba(251,113,133,.35);color:#fda4af;border-radius:12px;margin-bottom:16px;font-size:14px}.login-foot{color:#64748b;font-size:12px;margin-top:18px;text-align:center}
@media(max-width:800px){.summary{grid-template-columns:1fr}.nodes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:560px){.wrap{padding:16px 12px 55px}.top{margin-bottom:15px}.brand p{display:none}.summary{gap:10px}.hero,.status{border-radius:18px;padding:18px}.toolbar{top:7px;grid-template-columns:1fr}.disconnect{padding:0 2px 2px}.nodes{grid-template-columns:1fr}.node{min-height:104px}.actual{font-size:24px}}
