:root{--bg-primary: #f5f5f7;--bg-secondary: #ffffff;--bg-card: #ffffff;--bg-card-hover: #fafafa;--bg-disabled: #f0f0f0;--text-primary: #1d1d1f;--text-secondary: #6e6e73;--text-muted: #86868b;--text-disabled: #d2d2d7;--accent-blue: #0071e3;--accent-blue-hover: #0077ed;--accent-green: #34c759;--accent-orange: #ff9500;--accent-red: #ff3b30;--accent-purple: #af52de;--status-success: #34c759;--status-warning: #ff9500;--status-error: #ff3b30;--status-info: #0071e3;--border-color: #d2d2d7;--border-light: #e5e5ea;--shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, .05);--shadow-md: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -2px rgba(0, 0, 0, .05);--shadow-xl: 0 20px 25px -5px rgba(0, 0, 0, .1), 0 10px 10px -5px rgba(0, 0, 0, .04);--spacing-xs: .25rem;--spacing-sm: .5rem;--spacing-md: .75rem;--spacing-lg: 1rem;--spacing-xl: 1.5rem;--spacing-2xl: 2rem;--spacing-3xl: 2.5rem;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--radius-xl: 18px;--radius-full: 9999px;--transition-fast: .15s cubic-bezier(.4, 0, .2, 1);--transition-normal: .25s cubic-bezier(.4, 0, .2, 1);--transition-slow: .35s cubic-bezier(.4, 0, .2, 1)}*{margin:0;padding:0;box-sizing:border-box}html{font-size:16px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;touch-action:manipulation}body{padding-top:env(safe-area-inset-top);padding-bottom:env(safe-area-inset-bottom);padding-left:env(safe-area-inset-left);padding-right:env(safe-area-inset-right)}button,a,[role=button],.clickable{-webkit-tap-highlight-color:transparent;touch-action:manipulation;min-height:44px;min-width:44px}button.small-btn,.icon-btn{min-height:unset;min-width:unset;position:relative}button.small-btn:before,.icon-btn:before{content:"";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;min-width:44px;min-height:44px}body{font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;font-weight:400;background:var(--bg-primary);color:var(--text-primary);line-height:1.5;min-height:100vh}#root{min-height:100vh}h1,h2,h3,h4,h5,h6{font-weight:600;letter-spacing:-.01em;line-height:1.2;color:var(--text-primary)}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1rem}a{color:var(--accent-blue);text-decoration:none;transition:color var(--transition-fast)}a:hover{color:var(--accent-blue-hover)}button{font-family:inherit;cursor:pointer;border:none;outline:none;background:none}html{scrollbar-width:none}html::-webkit-scrollbar{display:none}::selection{background:var(--accent-blue);color:#fff}@keyframes slide-up{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.glass-ui{--ink: #0C1318;--muted: #56636E;--dim: #8994A0;--accent: #0E8076;--accent-soft: rgba(14, 128, 118, .3);--ok: #1F8A4C;--warn: #B8690A;--crit: #CF3328;--glass-fill: rgba(255, 255, 255, .46);--glass-line: rgba(255, 255, 255, .8);--glass-drop: rgba(40, 60, 80, .2);--chip-fill: rgba(12, 19, 24, .06);--rule: rgba(12, 19, 24, .1);--bg-base: #EEF2F7;--g1: rgba(150, 185, 255, .6);--g2: rgba(140, 225, 210, .55);--g3: rgba(255, 196, 140, .55);--g4: rgba(215, 180, 245, .5);color:var(--ink);font:15px/1.55 PingFang SC,Hiragino Sans GB,Microsoft YaHei,system-ui,sans-serif;-webkit-font-smoothing:antialiased;color-scheme:light}@media(prefers-color-scheme:dark){.glass-ui{--ink: #EDF1F4;--muted: #8E99A4;--dim: #5E6A75;--accent: #7ED8CF;--accent-soft: rgba(126, 216, 207, .38);--ok: #5AD08C;--warn: #F5B04C;--crit: #FF6257;--glass-fill: rgba(16, 22, 30, .42);--glass-line: rgba(255, 255, 255, .14);--glass-drop: rgba(0, 0, 0, .5);--chip-fill: rgba(255, 255, 255, .08);--rule: rgba(255, 255, 255, .1);--bg-base: #0A0F1C;--g1: rgba(46, 82, 190, .55);--g2: rgba(18, 128, 130, .5);--g3: rgba(170, 92, 38, .42);--g4: rgba(92, 48, 140, .45);color-scheme:dark}}.glass-ui h1,.glass-ui h2,.glass-ui h3,.glass-ui h4{color:inherit}.glass-ui button{min-width:0;min-height:0;color:inherit;font:inherit}.glass-ui .mono{font-family:IBM Plex Mono,ui-monospace,Menlo,monospace}.glass-ui .num{font-family:Sora,PingFang SC,system-ui,sans-serif;font-variant-numeric:tabular-nums}.glass-ui .lg-card,.glass-ui .lg-bar,.glass-ui .lg-lens{background:var(--glass-fill);backdrop-filter:var(--hyalite, blur(22px) saturate(1.5));-webkit-backdrop-filter:var(--hyalite, blur(22px) saturate(1.5));box-shadow:var(--hyalite-edge, inset 0 0 0 1px var(--glass-line)),0 28px 60px -30px var(--glass-drop)}.glass-ui .lg-card{border-radius:26px;padding:20px}.glass-ui .lg-card.lg-paused{backdrop-filter:blur(6px) saturate(1.2);-webkit-backdrop-filter:blur(6px) saturate(1.2)}.glass-ui .lg-bar{border-radius:22px}.glass-ui .lg-lens{border-radius:50%}.glass-nav{position:fixed;z-index:1100;top:16px;left:50%;transform:translate(-50%);display:flex;align-items:center;gap:2px;padding:6px;border-radius:999px!important;max-width:calc(100% - 32px)}.glass-nav .brand{padding:0 14px 0 12px;font:600 14px/1 Sora,system-ui,sans-serif;letter-spacing:-.01em;white-space:nowrap}.glass-nav a,.glass-nav button{padding:9px 16px;border-radius:999px;color:var(--muted);font-size:14px;white-space:nowrap;transition:color .2s,background-color .2s}.glass-nav a:hover,.glass-nav button:hover{color:var(--ink)}.glass-nav a.on{color:var(--ink);background:var(--chip-fill)}.glass-nav button.icon{display:grid;place-items:center;width:36px;height:36px;padding:0}.glass-nav button.icon svg{width:16px;height:16px}.glass-ui a:focus-visible,.glass-ui button:focus-visible,.glass-ui select:focus-visible,.glass-ui input:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.glass-ui .dot{width:7px;height:7px;border-radius:50%;background:var(--ok);flex:none}.glass-ui .dot.warn{background:var(--warn)}.glass-ui .dot.crit{background:var(--crit)}.glass-ui .dot.idle{background:var(--dim)}.glass-ui .eyebrow{font:500 11px/1 IBM Plex Mono,ui-monospace,monospace;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.glass-ui .chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:999px;font-size:12px;line-height:1;color:var(--muted);background:var(--chip-fill);white-space:nowrap}.glass-ui .chip.warn{color:var(--warn);background:color-mix(in srgb,var(--warn) 15%,transparent)}.glass-ui .chip.ok{color:var(--ok);background:color-mix(in srgb,var(--ok) 14%,transparent)}.glass-ui .chip.crit{color:var(--crit);background:color-mix(in srgb,var(--crit) 14%,transparent)}.glass-ui .chip.accent{color:var(--accent);background:color-mix(in srgb,var(--accent) 14%,transparent)}.glass-ui .card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.glass-ui .hint{margin:0;font-size:12px;color:var(--muted)}.glass-ui .hint b{color:var(--ink);font-weight:500}.glass-ui svg text.ax{fill:var(--muted);font:11px IBM Plex Mono,ui-monospace,monospace}.glass-ui svg text.ax-cn{fill:var(--muted);font:12px PingFang SC,system-ui,sans-serif}.glass-ui svg text.val{fill:var(--ink);font:500 12px Sora,system-ui,sans-serif}.glass-ui svg .gridline{stroke:var(--rule);stroke-width:1}.glass-ui{--map-ground: #F1EFEA;--route-casing: #FFFFFF}@media(prefers-color-scheme:dark){.glass-ui{--map-ground: #10161D;--route-casing: #0B1016}}.glass-ui .maplibregl-map{background:var(--map-ground);font:inherit}.glass-ui .page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px 24px;flex-wrap:wrap;margin-bottom:20px;padding-inline:4px}.glass-ui .page-head h1{margin:0;font-size:34px;font-weight:600;letter-spacing:-.02em;line-height:1.1}.glass-ui .page-head p{margin:6px 0 0;font-size:12px;color:var(--muted)}.glass-ui .kpi-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));padding:0}.glass-ui .kpi-bar>div{padding:16px 20px;display:flex;flex-direction:column;gap:4px;min-width:0}.glass-ui .kpi-bar>div+div{border-left:1px solid var(--rule)}.glass-ui .kpi-bar small{font-size:12px;color:var(--muted);white-space:nowrap}.glass-ui .kpi-bar strong{font:300 28px/1.1 Sora,system-ui,sans-serif;letter-spacing:-.02em;font-variant-numeric:tabular-nums;white-space:nowrap}.glass-ui .kpi-bar strong em{font-style:normal;font-size:13px;color:var(--muted);margin-left:4px;letter-spacing:0}.glass-ui .seg{display:inline-flex;gap:2px;padding:4px;border-radius:999px;background:var(--chip-fill)}.glass-ui .seg button{padding:7px 14px;border-radius:999px;font-size:13px;color:var(--muted);white-space:nowrap}.glass-ui .seg button:hover{color:var(--ink)}.glass-ui .seg button.on{background:var(--glass-fill);color:var(--ink);box-shadow:0 1px 4px #00000014,inset 0 0 0 1px var(--glass-line)}.glass-ui .switch{display:inline-flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);cursor:pointer}.glass-ui .switch input{accent-color:var(--accent);width:16px;height:16px;margin:0}.glass-ui .empty{padding:32px 16px;text-align:center;font-size:13px;color:var(--muted)}.glass-ui .more{display:block;margin:16px auto 0;padding:10px 20px;border-radius:999px;background:var(--chip-fill);font-size:13px}.glass-ui .more:hover{color:var(--accent)}.glass-ui .more:disabled{opacity:.6;cursor:default}.glass-page{position:relative;min-height:100vh;background:var(--bg-base)}.glass-page:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(60% 70% at 12% 8%,var(--g1),transparent 70%),radial-gradient(55% 65% at 92% 18%,var(--g2),transparent 70%),radial-gradient(60% 60% at 78% 96%,var(--g3),transparent 70%),radial-gradient(55% 60% at 8% 92%,var(--g4),transparent 70%)}.glass-page>main{position:relative;max-width:1240px;margin:0 auto;padding-inline:24px;padding-block:96px 64px}@media(max-width:640px){.glass-nav{top:auto;bottom:calc(14px + env(safe-area-inset-bottom))}.glass-nav .brand{display:none}.glass-nav a{padding:10px 16px}.glass-page>main{padding-inline:16px;padding-block:24px 120px}.glass-ui .page-head h1{font-size:28px}.glass-ui .kpi-bar{grid-template-columns:repeat(2,minmax(0,1fr))}.glass-ui .kpi-bar>div+div{border-left:0}.glass-ui .kpi-bar strong{font-size:22px}}.page-fallback{display:grid;place-items:center}.page-fallback .lg-bar{position:relative;padding:10px 18px;font-size:13px;color:var(--muted);opacity:0;animation:page-fallback-in .3s ease .4s forwards}@keyframes page-fallback-in{to{opacity:1}}
