:root{--bg:#0b1220;--card:#131c2e;--card2:#0e1626;--line:#24314a;--tx:#e5e9f0;--mu:#8b98ad;--g:#22c55e;--r:#ef4444;--y:#f59e0b;--b:#60a5fa;--p:#c084fc}
*{box-sizing:border-box}html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--tx);font:15px/1.45 -apple-system,BlinkMacSystemFont,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;padding:env(safe-area-inset-top) env(safe-area-inset-right) env(safe-area-inset-bottom) env(safe-area-inset-left)}
.hidden{display:none!important}.muted{color:var(--mu)}.tiny{font-size:12px}.err{color:#f87171;font-weight:600}
.login{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:16px}
.lcard{background:var(--card);border-radius:16px;padding:22px;width:100%;max-width:360px}
.lcard h1{margin:0 0 4px;font-size:22px}.lcard label{display:block;margin:12px 0;font-size:13px;color:var(--mu)}
.lcard input{display:block;width:100%;margin-top:5px;padding:11px;border-radius:10px;border:1px solid var(--line);background:var(--card2);color:var(--tx);font-size:16px}
.lcard button{width:100%;padding:12px;border:0;border-radius:10px;background:#2563eb;color:#fff;font-size:16px;font-weight:600;margin-top:6px}
header{position:sticky;top:0;z-index:5;background:rgba(11,18,32,.92);backdrop-filter:blur(8px);padding:10px 12px 8px;border-bottom:1px solid var(--line)}
.hrow,.hrow2{display:flex;align-items:center;justify-content:space-between;gap:8px;max-width:900px;margin:auto}.hrow2{margin-top:8px}
header h1{font-size:19px;margin:0}
.small-btn{background:var(--card);color:var(--tx);border:1px solid var(--line);border-radius:8px;padding:5px 10px;font-size:13px;text-decoration:none}
.seg{display:flex;background:var(--card);border-radius:9px;padding:2px}.seg button{border:0;background:none;color:var(--mu);padding:5px 11px;border-radius:7px;font-size:13px}
.seg button.on{background:#2563eb;color:#fff}
main{max-width:900px;margin:auto;padding:4px 10px}
.node{background:var(--card);border-radius:16px;padding:14px;margin:12px 0}
.nhead{display:flex;justify-content:space-between;align-items:flex-start;gap:8px}
.nhead h2{font-size:17px;margin:0}.nsub{font-size:12px;color:var(--mu);margin-top:2px}
.badges{display:flex;gap:5px;flex-wrap:wrap;justify-content:flex-end}
.badge{font-size:12px;padding:3px 8px;border-radius:99px;background:var(--card2);white-space:nowrap}
.badge.up{color:var(--g)}.badge.down{color:var(--r)}.badge.warn{color:var(--y)}
.dot{display:inline-block;width:7px;height:7px;border-radius:50%;background:currentColor;margin-right:4px;vertical-align:1px}
.metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:8px;margin-top:12px}
@media(min-width:620px){.metrics{grid-template-columns:repeat(4,1fr)}}
.m{background:var(--card2);border-radius:11px;padding:9px 10px}.m .k{font-size:12px;color:var(--mu)}.m .v{font-size:17px;font-weight:600;margin-top:1px}
.m .s{font-size:11.5px;color:var(--mu)}.mbar{height:4px;background:var(--line);border-radius:3px;margin-top:6px;overflow:hidden}.mbar i{display:block;height:100%;background:var(--b)}
.sys{font-size:12px;color:var(--mu);margin-top:10px;line-height:1.6}
h3{font-size:14px;margin:16px 0 6px;color:#cbd5e1}
.chart{background:var(--card2);border-radius:11px;padding:6px 4px 2px;margin-bottom:8px;min-height:60px}.chart .ct{font-size:12px;color:var(--mu);padding:0 6px}
.u-legend{font-size:11px!important;color:var(--mu)}.u-legend .u-marker{width:9px;height:9px}
.tgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px}.tgrid div{background:var(--card2);border-radius:10px;padding:8px 4px;text-align:center}
.tgrid span{display:block;font-size:11.5px;color:var(--mu)}.tgrid b{font-size:15px}
.quota{margin-top:10px;font-size:13px}.qbar{height:12px;background:var(--line);border-radius:7px;overflow:hidden;margin:6px 0}.qbar i{display:block;height:100%;background:var(--g)}.qbar i.red{background:var(--r)}
.redt{color:#f87171;font-weight:700}.note{font-size:12px;color:var(--mu);margin:6px 0}
details{margin-top:8px;background:var(--card2);border-radius:10px;padding:6px 10px}summary{font-size:13px;color:#cbd5e1;padding:3px 0}
table{width:100%;border-collapse:collapse;font-size:12.5px;margin:4px 0}th,td{padding:5px 3px;border-bottom:1px solid var(--line);text-align:right}th:first-child,td:first-child{text-align:left}th{color:var(--mu);font-weight:500}
footer{max-width:900px;margin:8px auto 30px;padding:0 14px;line-height:1.6}
.summary{max-width:900px;margin:8px auto 0;padding:0 10px;display:flex;gap:6px;flex-wrap:wrap}
.summary a{flex:1;min-width:30%;text-align:center;background:var(--card);border-radius:10px;padding:7px 4px;font-size:12.5px;color:var(--tx);text-decoration:none}
.summary a b{display:block;font-size:13px}
.node.off{outline:1px solid rgba(239,68,68,.55)}.node.off .metrics,.node.off .chart,.node.off .sys{opacity:.55}
.offmsg{background:rgba(239,68,68,.12);color:#fca5a5;border-radius:10px;padding:8px 10px;font-size:12.5px;margin-top:10px}
.lcard .muted{font-size:13px}
.ipt{margin-top:10px;background:var(--card2);border-radius:11px;padding:8px 10px}.ipt .iph{font-size:12px;color:var(--mu);margin-bottom:2px}
.iprow{display:flex;flex-wrap:wrap;align-items:center;gap:5px;font-size:12.5px;padding:4px 0}.iprow+.iprow{border-top:1px solid var(--line)}
.ipaddr{color:var(--mu);margin-right:2px;word-break:break-all}.ipaddr b{color:var(--tx);font-weight:600}.asn{color:#cbd5e1;font-size:12px}
.tag{font-size:12px;padding:2px 8px;border-radius:99px;background:var(--card);white-space:nowrap;border:1px solid var(--line)}.tag small{opacity:.75}
.t-host{color:var(--b)}.t-res{color:var(--g)}.t-mob{color:var(--p)}.t-biz{color:#2dd4bf}.t-unk{color:var(--mu)}.t-ok{color:var(--g)}.t-warn{color:var(--y)}.t-bad{color:var(--r)}
.ipt details{background:var(--card)}.ipt td,.ipt th{font-size:11.5px}
