:root{--bg: #0a0e17;--panel: rgba(148, 184, 255, .04);--panel-border: rgba(0, 240, 255, .12);--text: #d6e4f5;--muted: #6b7d96;--cyan: #00f0ff;--purple: #8b5cf6;--red: #ff4d6a;--amber: #ffb02e;--mono: "JetBrains Mono", ui-monospace, SFMono-Regular, Menlo, Consolas, monospace}*{box-sizing:border-box;margin:0;padding:0}html{color-scheme:dark}body{background:radial-gradient(1100px 500px at 80% -10%,rgba(139,92,246,.12),transparent 60%),radial-gradient(900px 480px at 10% 0%,rgba(0,240,255,.08),transparent 55%),linear-gradient(rgba(120,160,255,.025) 1px,transparent 1px),linear-gradient(90deg,rgba(120,160,255,.025) 1px,transparent 1px),var(--bg);background-size:auto,auto,42px 42px,42px 42px,auto;color:var(--text);font-family:PingFang SC,HarmonyOS Sans SC,Microsoft YaHei,system-ui,sans-serif;min-height:100vh;-webkit-font-smoothing:antialiased}#app{max-width:1440px;margin:0 auto;padding:0 20px 24px}.topbar{position:sticky;top:0;z-index:10;display:flex;justify-content:space-between;align-items:center;padding:14px 4px;backdrop-filter:blur(10px);background:#0a0e17b3;border-bottom:1px solid rgba(0,240,255,.08)}.brand{display:flex;align-items:center;gap:10px}.brand-dot{width:9px;height:9px;border-radius:50%;background:var(--cyan);box-shadow:0 0 10px var(--cyan);animation:breathe 2.4s ease-in-out infinite}.brand-text{font-family:var(--mono);font-size:13px;letter-spacing:4px;color:var(--muted)}.top-right{display:flex;align-items:center;gap:10px}.updated{font-family:var(--mono);font-size:12px;color:var(--muted)}.updated.stale{color:var(--amber)}.live-badge{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:2px;padding:2px 8px;border-radius:999px;border:1px solid rgba(0,240,255,.25);color:var(--muted)}.live-badge[data-mode=sse]{color:#4ef0a0;border-color:#4ef0a073;text-shadow:0 0 8px rgba(78,240,160,.7);animation:breathe 2.4s ease-in-out infinite}.live-badge[data-mode=poll]{color:var(--amber);border-color:#ffb02e66}.hero{text-align:center;padding-top:42px}.hero-title{font-family:var(--mono);font-size:clamp(34px,6vw,62px);font-weight:700;letter-spacing:.14em;background:linear-gradient(100deg,var(--cyan) 10%,#7dd3fc 45%,var(--purple) 90%);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 24px rgba(0,240,255,.25))}.hero-sub{margin-top:10px;color:var(--muted);font-size:14px;letter-spacing:.35em}.map{height:440px;margin-top:8px}.stats{display:grid;grid-template-columns:repeat(6,1fr);gap:14px;margin-top:6px}.stat{background:var(--panel);border:1px solid var(--panel-border);border-radius:12px;padding:18px 10px 14px;backdrop-filter:blur(8px);transition:border-color .3s,box-shadow .3s}.stat:hover{border-color:#00f0ff66;box-shadow:0 0 24px #00f0ff14 inset}.stat-num{font-family:var(--mono);font-size:clamp(22px,3vw,34px);font-weight:700;color:var(--cyan);text-shadow:0 0 18px rgba(0,240,255,.35)}.stat-num small{font-size:.5em;color:var(--muted);font-weight:400}.stat-label{margin-top:6px;font-size:12px;color:var(--muted);letter-spacing:.2em}.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:14px;margin-top:26px}.card{position:relative;cursor:pointer;background:var(--panel);border:1px solid var(--panel-border);border-radius:14px;padding:14px 16px 12px;backdrop-filter:blur(8px);transition:transform .25s,border-color .3s,box-shadow .3s;overflow:hidden}.card:before{content:"";position:absolute;inset:0;background:radial-gradient(420px 140px at 50% -40px,rgba(0,240,255,.07),transparent);opacity:0;transition:opacity .3s;pointer-events:none}.card:hover{transform:translateY(-3px);border-color:#00f0ff73;box-shadow:0 8px 30px #00000073,0 0 18px #00f0ff1a}.card:hover:before{opacity:1}.card-head{display:flex;align-items:center;gap:10px}.flag{font-size:22px;line-height:1}.card-title{flex:1;min-width:0}.card-title h3{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.card-title h3 small{font-family:var(--mono);font-size:11px;color:var(--muted);margin-left:6px;letter-spacing:1px}.vendor{font-size:11px;color:var(--muted)}.uptime-badge{font-family:var(--mono);font-size:11px;color:#9fe8d0;background:#32dca014;border:1px solid rgba(50,220,160,.22);border-radius:999px;padding:2px 9px;white-space:nowrap}.status-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.online .status-dot{background:var(--cyan);box-shadow:0 0 9px var(--cyan);animation:breathe 2.4s ease-in-out infinite}.offline .status-dot{background:var(--red);box-shadow:0 0 9px var(--red)}.gauges{display:flex;justify-content:space-around;margin-top:12px}.gauge{position:relative;width:64px;text-align:center}.gauge .ring{width:56px;height:56px;transform:rotate(-90deg)}.ring-bg{fill:none;stroke:#a0beff1a;stroke-width:5}.ring-fg{fill:none;stroke-width:5;stroke-linecap:round;transition:stroke-dashoffset .9s cubic-bezier(.4,0,.2,1),stroke .4s}.gauge[data-level=ok] .ring-fg{stroke:var(--cyan);filter:drop-shadow(0 0 4px rgba(0,240,255,.55))}.gauge[data-level=warn] .ring-fg{stroke:var(--amber);filter:drop-shadow(0 0 4px rgba(255,176,46,.55))}.gauge[data-level=crit] .ring-fg{stroke:var(--red);filter:drop-shadow(0 0 4px rgba(255,77,106,.6))}.gauge[data-level=na] .ring-fg{stroke:transparent}.gauge-val{position:absolute;top:21px;left:0;right:0;font-family:var(--mono);font-size:11px;font-weight:600}.gauge[data-level=na] .gauge-val{color:var(--muted);font-size:9px}.gauge-name{margin-top:2px;font-size:10px;color:var(--muted);letter-spacing:.18em}.net{display:flex;gap:14px;margin-top:12px}.net-item{flex:1;display:flex;align-items:center;gap:7px;min-width:0}.net-arrow{font-weight:700;font-size:13px}.net-arrow.up{color:var(--purple);text-shadow:0 0 8px rgba(139,92,246,.7)}.net-arrow.down{color:var(--cyan);text-shadow:0 0 8px rgba(0,240,255,.7)}.net-item b{font-family:var(--mono);font-size:12px;font-weight:600;white-space:nowrap}.flow{flex:1;height:3px;border-radius:2px;min-width:18px;background:repeating-linear-gradient(90deg,transparent 0 7px,currentColor 7px 11px);opacity:.55}.net-item:nth-child(1) .flow{color:var(--purple)}.net-item:nth-child(2) .flow{color:var(--cyan);animation-direction:reverse}.flow[data-speed=slow]{animation:flow 1.8s linear infinite}.flow[data-speed=mid]{animation:flow .9s linear infinite}.flow[data-speed=fast]{animation:flow .4s linear infinite}.flow[data-speed="0"]{opacity:.12}.net-item:nth-child(2) .flow[data-speed]{animation-direction:reverse}.sub{display:grid;grid-template-columns:repeat(3,1fr);gap:6px 10px;margin-top:11px;padding-top:9px;border-top:1px dashed rgba(120,160,255,.1)}.sub-cell{min-width:0;display:flex;flex-direction:column;gap:1px}.sub-label{font-size:8.5px;color:var(--muted);letter-spacing:.1em;text-transform:uppercase;white-space:nowrap}.sub-cell b{font-family:var(--mono);font-size:10.5px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.spark-wrap{position:relative;margin-top:10px}.spark{display:block;width:100%;height:34px}.spark-line{fill:none;stroke:var(--cyan);stroke-width:1.3;vector-effect:non-scaling-stroke;filter:drop-shadow(0 0 3px rgba(0,240,255,.5))}.spark-label{position:absolute;right:2px;top:0;font-size:9px;color:var(--muted);letter-spacing:.12em}.offline-veil{position:absolute;inset:0;display:none;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#0a0e178c;backdrop-filter:blur(2px)}.offline .offline-veil{display:flex}.offline-stamp{font-family:var(--mono);font-size:22px;font-weight:800;letter-spacing:.3em;color:var(--red);border:3px double var(--red);border-radius:6px;padding:4px 14px 4px 18px;transform:rotate(-8deg);text-shadow:0 0 14px rgba(255,77,106,.8);box-shadow:0 0 18px #ff4d6a40,inset 0 0 12px #ff4d6a26;mix-blend-mode:screen;animation:stamp-flicker 3.2s steps(1) infinite}.offline-sub{font-family:var(--mono);font-size:10px;letter-spacing:.5em;color:#ff4d6abf}.offline{border-color:#ff4d6a8c;box-shadow:0 0 22px #ff4d6a1f,inset 0 0 28px #ff4d6a0d}.just-down{animation:glitch .55s steps(2) 3}.just-down .offline-stamp{animation:stamp-in .4s cubic-bezier(.2,2.4,.4,1) both,stamp-flicker 3.2s steps(1) .5s infinite}.just-up{animation:recover-pulse 2.2s ease-out 1}@keyframes glitch{0%{transform:translate(0);filter:none}20%{transform:translate(-3px,1px) skew(-2deg);filter:hue-rotate(-40deg) saturate(2)}40%{transform:translate(3px,-2px);filter:none}60%{transform:translate(-2px,-1px) skew(2deg);filter:hue-rotate(35deg) saturate(2.4)}80%{transform:translate(2px,2px);filter:none}to{transform:translate(0)}}@keyframes stamp-in{0%{transform:rotate(-8deg) scale(2.6);opacity:0}to{transform:rotate(-8deg) scale(1);opacity:1}}@keyframes stamp-flicker{0%,92%,to{opacity:1}93%,95%{opacity:.45}94%,96%{opacity:.9}}@keyframes recover-pulse{0%{border-color:#4ef0a0f2;box-shadow:0 0 #4ef0a08c}60%{border-color:#4ef0a099;box-shadow:0 0 0 18px #4ef0a000}to{border-color:var(--panel-border);box-shadow:0 0 #4ef0a000}}.drawer-backdrop{position:fixed;inset:0;z-index:40;background:#04060c99;backdrop-filter:blur(3px);opacity:0;pointer-events:none;transition:opacity .28s}.drawer-backdrop.show{opacity:1;pointer-events:auto}.drawer{position:fixed;z-index:41;top:0;right:0;bottom:0;width:min(480px,94vw);display:flex;flex-direction:column;background:linear-gradient(160deg,#0c1220,#0a0e17 70%);border-left:1px solid rgba(0,240,255,.18);box-shadow:-18px 0 50px #0009;transform:translate(105%);transition:transform .32s cubic-bezier(.32,.9,.3,1);overscroll-behavior:contain}.drawer.show{transform:translate(0)}.drawer-handle{display:none}.drawer-head{display:flex;align-items:center;gap:10px;padding:16px 18px 10px;border-bottom:1px solid rgba(0,240,255,.1);flex-shrink:0}.drawer-titles{flex:1;min-width:0}.drawer-title{font-size:17px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer-sub{font-size:11px;color:var(--muted);font-family:var(--mono)}.drawer-status{font-family:var(--mono);font-size:10px;font-weight:700;letter-spacing:2px;padding:2px 9px;border-radius:999px;flex-shrink:0}.drawer-status[data-s=on]{color:#4ef0a0;border:1px solid rgba(78,240,160,.4)}.drawer-status[data-s=off]{color:var(--red);border:1px solid rgba(255,77,106,.5)}.drawer-close{width:34px;height:34px;flex-shrink:0;border:1px solid rgba(120,160,255,.18);border-radius:9px;background:transparent;color:var(--muted);font-size:15px;cursor:pointer;transition:color .2s,border-color .2s}.drawer-close:hover{color:var(--cyan);border-color:#00f0ff80}.drawer-hint{padding:8px 18px 0;font-family:var(--mono);font-size:10px;color:var(--muted);letter-spacing:.12em;flex-shrink:0}.drawer-body{flex:1;overflow-y:auto;padding:6px 12px 18px;-webkit-overflow-scrolling:touch}.dpanel{margin-top:12px}.dpanel h4{font-size:11px;font-weight:600;color:var(--muted);letter-spacing:.2em;padding-left:6px}.dchart{height:150px;margin-top:2px}body.drawer-open{overflow:hidden}@media(max-width:700px){.drawer{inset:auto 0 0;width:100%;height:82dvh;border-left:none;border-top:1px solid rgba(0,240,255,.25);border-radius:18px 18px 0 0;transform:translateY(105%)}.drawer.show{transform:translateY(0)}.drawer-handle{display:flex;justify-content:center;padding:9px 0 2px;flex-shrink:0;touch-action:none}.drawer-handle span{width:44px;height:4px;border-radius:2px;background:#78a0ff4d}.drawer-head{padding-top:6px}.dchart{height:132px}}.footer{margin-top:34px;text-align:center;font-size:11px;color:var(--muted);letter-spacing:.15em}@keyframes breathe{0%,to{opacity:1;transform:scale(1)}50%{opacity:.55;transform:scale(.82)}}@keyframes flow{0%{background-position-x:0}to{background-position-x:22px}}@media(max-width:900px){.map{height:320px}.stats{grid-template-columns:repeat(3,1fr)}}@media(max-width:560px){#app{padding:0 12px 20px}.topbar{padding:10px 2px}.brand-text{letter-spacing:2px;font-size:12px}.updated{font-size:10px}.hero{padding-top:22px}.hero-sub{font-size:12px;letter-spacing:.18em}.map{height:40vh;min-height:210px;max-height:380px}.stats{grid-template-columns:repeat(2,1fr);gap:9px}.stat{padding:12px 8px 10px;border-radius:10px}.stat-num{font-size:21px}.stat-label{margin-top:4px;font-size:10px;letter-spacing:.14em}.grid{grid-template-columns:1fr;gap:12px;margin-top:18px}.card{padding:13px 14px 11px}.card:hover{transform:none}.uptime-badge{font-size:10px;padding:2px 7px}.sub{gap:6px 8px}.footer{margin-top:24px}}@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
