:root {
  --bg: #07100f; --panel: rgba(10,20,19,.94); --soft: rgba(15,28,26,.9);
  --line: rgba(174,207,196,.16); --strong: rgba(174,207,196,.3);
  --text: #eef7f2; --muted: #8ea59c; --lime: #b8f36b; --cyan: #63d5e8;
  --amber: #f3bb55; --danger: #ff7b6f; --mono: "IBM Plex Mono",monospace;
  --sans: "Noto Sans SC",system-ui,sans-serif; --top: 58px; --side: 352px;
}
*{box-sizing:border-box}html,body,#map{width:100%;height:100%;margin:0}html{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-synthesis:none}body{overflow:hidden;color:var(--text);background:var(--bg);font-family:var(--sans)}
button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible{outline:2px solid var(--lime);outline-offset:2px}[hidden]{display:none!important}
#map{position:fixed;inset:0;background:var(--bg)}#map:after{content:"";position:absolute;inset:0;z-index:1;pointer-events:none;background:linear-gradient(90deg,rgba(7,16,15,.24),transparent 35%,transparent 78%,rgba(7,16,15,.14))}
.topbar{position:fixed;z-index:1000;inset:0 0 auto;height:var(--top);display:grid;grid-template-columns:var(--side) 1fr auto;align-items:center;border-bottom:1px solid var(--line);background:rgba(7,16,15,.92);backdrop-filter:blur(16px)}
.brand{height:100%;padding:0 18px;display:flex;align-items:center;gap:12px;border-right:1px solid var(--line)}.brand-mark{width:30px;height:30px;display:grid;place-items:center;border:1px solid var(--lime);color:var(--lime)}.brand-mark svg{width:17px}.brand-title{font:600 15px/1 var(--mono)}.brand-sub{margin-top:4px;color:var(--muted);font:500 9px/1 var(--mono);text-transform:uppercase}
.mission-status{min-width:0;padding:0 18px;display:flex;align-items:center;gap:10px;color:var(--muted);font:500 11px/1 var(--mono)}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--amber);box-shadow:0 0 0 4px rgba(243,187,85,.12)}.live-dot.online{background:var(--lime);box-shadow:0 0 0 4px rgba(184,243,107,.12)}.live-dot.error{background:var(--danger);box-shadow:0 0 0 4px rgba(255,123,111,.12)}
.top-stats{display:flex;height:100%;align-items:center}.top-stat{min-width:86px;padding:0 16px;border-left:1px solid var(--line)}.top-stat b{display:block;font:600 15px/1.1 var(--mono)}.top-stat span{display:block;margin-top:4px;color:var(--muted);font-size:9px}
.sidebar{position:fixed;z-index:900;top:var(--top);bottom:0;left:0;width:var(--side);display:flex;flex-direction:column;background:var(--panel);border-right:1px solid var(--line);backdrop-filter:blur(18px)}
.search-wrap{padding:14px;border-bottom:1px solid var(--line)}.search-box{position:relative}.search-box>svg{position:absolute;left:12px;top:50%;width:16px;transform:translateY(-50%);color:var(--muted);pointer-events:none}.search-box input{width:100%;height:40px;padding:0 38px;border:1px solid var(--line);border-radius:4px;color:var(--text);background:rgba(255,255,255,.035);font:500 12px var(--mono)}.search-box input::placeholder{color:#6f837b}
.search-clear,.drawer-close{display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;background:transparent;cursor:pointer}.search-clear{position:absolute;right:7px;top:7px;width:26px;height:26px}.search-clear svg,.drawer-close svg{width:16px}
.tabs{display:grid;grid-template-columns:1fr 1fr;padding:0 14px;border-bottom:1px solid var(--line)}.tab{position:relative;height:45px;border:0;background:transparent;color:var(--muted);cursor:pointer;font-size:12px}.tab.active{color:var(--text)}.tab.active:after{content:"";position:absolute;right:8px;bottom:-1px;left:8px;height:2px;background:var(--lime)}.tab-count{margin-left:5px;color:var(--lime);font-family:var(--mono)}
.filter-row{display:flex;gap:7px;padding:10px 14px;overflow-x:auto;border-bottom:1px solid var(--line);scrollbar-width:none}.filter-row::-webkit-scrollbar{display:none}.chip{flex:0 0 auto;height:29px;padding:0 10px;border:1px solid var(--line);border-radius:3px;background:transparent;color:var(--muted);cursor:pointer;font-size:10px}.chip.active{color:#0b140d;background:var(--lime);border-color:var(--lime);font-weight:700}
.list-head{height:34px;padding:0 15px;display:flex;align-items:center;justify-content:space-between;color:var(--muted);font:500 9px var(--mono);text-transform:uppercase;border-bottom:1px solid var(--line)}.traffic-list{min-height:0;flex:1;overflow-y:auto;overscroll-behavior:contain}.traffic-list::-webkit-scrollbar{width:5px}.traffic-list::-webkit-scrollbar-thumb{background:var(--strong)}
.traffic-item{position:relative;display:block;width:100%;min-height:75px;padding:12px 14px;border:0;border-bottom:1px solid var(--line);background:transparent;cursor:pointer;text-align:left;overflow:hidden}.traffic-item:before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--lime);transform:scaleY(0)}.traffic-item:hover,.traffic-item.selected{background:rgba(184,243,107,.055)}.traffic-item:hover:before,.traffic-item.selected:before{transform:scaleY(1)}
.item-main,.item-meta{display:flex;align-items:center;justify-content:space-between;gap:10px}.callsign{font:600 13px var(--mono)}.level{color:var(--lime);font:500 11px var(--mono)}.item-meta{margin-top:8px;color:var(--muted);font:500 10px var(--mono)}.route{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.atc-frequency{color:var(--cyan)}
.empty{padding:52px 28px;text-align:center;color:var(--muted)}.empty svg{width:26px;margin-bottom:10px}.empty b{display:block;color:var(--text);font-size:13px}.empty span{display:block;margin-top:6px;font-size:11px;line-height:1.6}
.map-tools{position:fixed;z-index:850;top:76px;right:18px;display:flex;flex-direction:column;gap:7px}.tool-btn{position:relative;width:42px;height:42px;display:grid;place-items:center;border:1px solid var(--line);border-radius:4px;background:var(--soft);cursor:pointer;box-shadow:0 6px 22px rgba(0,0,0,.22)}.tool-link{color:var(--muted);text-decoration:none}.tool-link:focus-visible{outline:2px solid var(--lime);outline-offset:2px}.tool-btn svg{width:17px}.tool-btn.active{border-color:var(--lime);color:var(--lime)}.tool-btn:after{content:attr(aria-label);position:absolute;right:50px;padding:6px 8px;border:1px solid var(--line);border-radius:3px;background:var(--panel);color:var(--text);font-size:10px;white-space:nowrap;opacity:0;pointer-events:none;transform:translateX(6px)}.tool-btn:hover:after{opacity:1;transform:translateX(0)}.tool-divider{height:1px;margin:3px 4px;background:var(--line)}
.layer-menu{position:fixed;z-index:840;top:76px;right:69px;width:226px;padding:13px;border:1px solid var(--line);border-radius:5px;background:var(--panel);box-shadow:0 16px 46px rgba(0,0,0,.38);backdrop-filter:blur(18px);transform-origin:top right}.menu-title{margin:0 0 10px;color:var(--muted);font:500 9px var(--mono);text-transform:uppercase}.menu-title.map-title{margin-top:12px}.switch-row{min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:11px}.switch{width:32px;height:18px;padding:2px;border:0;border-radius:10px;background:#35423d;cursor:pointer}.switch span{display:block;width:14px;height:14px;border-radius:50%;background:#8ea59c;transform:translateX(0)}.switch.active{background:rgba(184,243,107,.25)}.switch.active span{background:var(--lime);transform:translateX(14px)}.map-style{display:grid;grid-template-columns:1fr 1fr;gap:6px}.map-style button{height:32px;border:1px solid var(--line);border-radius:3px;color:var(--muted);background:transparent;cursor:pointer;font-size:10px}.map-style button.active{border-color:var(--lime);color:var(--lime)}.map-attribution{margin:9px 0 0;color:#61756d;font:400 8px/1.4 var(--mono)}
.detail-drawer{position:fixed;z-index:880;top:var(--top);right:0;bottom:0;width:332px;border-left:1px solid var(--line);background:var(--panel);backdrop-filter:blur(20px);box-shadow:-20px 0 60px rgba(0,0,0,.25);will-change:transform,opacity}.drawer-accent{height:3px;background:var(--lime)}.drawer-header{padding:18px;display:flex;align-items:flex-start;justify-content:space-between;border-bottom:1px solid var(--line)}.drawer-kicker{color:var(--muted);font:500 9px var(--mono);text-transform:uppercase}.drawer-title{margin:6px 0 0;font:600 21px var(--mono)}.drawer-close{width:30px;height:30px}.drawer-body{height:calc(100% - 158px);overflow-y:auto;padding:18px}
.route-block{padding-bottom:16px;border-bottom:1px solid var(--line)}.route-airports{display:flex;align-items:center;gap:10px}.airport{font:600 18px var(--mono)}.route-line{height:1px;flex:1;background:var(--strong);position:relative}.route-line:after{content:"";position:absolute;right:0;top:-2px;border-left:5px solid var(--strong);border-top:2px solid transparent;border-bottom:2px solid transparent}.aircraft-name{margin-top:8px;color:var(--muted);font:500 10px var(--mono)}
.telemetry{display:grid;grid-template-columns:1fr 1fr;margin-top:16px;border-top:1px solid var(--line);border-left:1px solid var(--line)}.telemetry-item{min-height:76px;padding:12px;border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.telemetry-item span{display:block;color:var(--muted);font-size:9px;text-transform:uppercase}.telemetry-item b{display:block;margin-top:8px;font:600 14px var(--mono)}.telemetry-item b.accent{color:var(--lime)}.section-label{margin:20px 0 8px;color:var(--muted);font:500 9px var(--mono);text-transform:uppercase}.route-text{margin:0;color:#bdd0c8;font:400 10px/1.7 var(--mono);overflow-wrap:anywhere}
.drawer-actions{position:absolute;right:0;bottom:0;left:0;height:73px;padding:13px 18px;display:grid;grid-template-columns:1fr 1fr;gap:8px;border-top:1px solid var(--line);background:rgba(7,16,15,.96)}.action-btn{border:1px solid var(--line);border-radius:3px;background:transparent;cursor:pointer;font-size:11px}.action-btn.primary{color:#0b140d;border-color:var(--lime);background:var(--lime);font-weight:700}
.map-legend{position:fixed;z-index:800;left:calc(var(--side) + 18px);bottom:18px;display:flex;align-items:center;gap:15px;padding:8px 11px;border:1px solid var(--line);border-radius:4px;background:rgba(7,16,15,.82);color:var(--muted);font:500 9px var(--mono)}.map-legend span{display:flex;align-items:center;gap:6px}.legend-dot{width:7px;height:7px;border-radius:50%;background:var(--lime)}.legend-dot.atc{background:var(--cyan)}.toast{position:fixed;z-index:1200;left:50%;bottom:22px;padding:9px 13px;border:1px solid var(--line);border-radius:4px;background:var(--panel);font-size:11px;transform:translateX(-50%);will-change:transform,opacity}.mobile-handle{display:none}
.aircraft-marker{position:relative;width:34px;height:34px;display:grid;place-items:center;color:var(--lime);cursor:pointer;filter:drop-shadow(0 2px 4px rgba(0,0,0,.6))}.aircraft-marker .plane{width:23px;height:23px;fill:currentColor;transform:rotate(var(--heading));transform-origin:center;will-change:transform}.aircraft-marker.selected:before{content:"";position:absolute;inset:-5px;border:1px solid var(--lime);border-radius:50%}.atc-marker{position:relative;width:30px;height:30px;display:grid;place-items:center;cursor:pointer}.atc-marker.selected:before{content:"";position:absolute;inset:-5px;border:1px solid var(--cyan);border-radius:50%}.atc-core{width:8px;height:8px;border:2px solid var(--bg);border-radius:50%;background:var(--cyan);box-shadow:0 0 0 2px var(--cyan)}.atc-ring{position:absolute;inset:2px;border:1px solid rgba(99,213,232,.65);border-radius:50%}.radar-label{padding:5px 7px;border:1px solid rgba(184,243,107,.4);border-radius:2px;background:rgba(5,13,12,.94);color:#f4faF6;font:600 11px/1.2 var(--mono);text-shadow:0 1px 1px #000;white-space:nowrap;-webkit-font-smoothing:antialiased;text-rendering:geometricPrecision}.radar-label.atc{border-color:rgba(99,213,232,.5);color:#8ce4f1}.amap-marker-label{padding:0!important;border:0!important;background:transparent!important;image-rendering:auto}.amap-logo,.amap-copyright{opacity:.38}

@media(hover:hover){.tool-btn:hover:not(.active){border-color:var(--strong);color:var(--text)}}

.boot-loader{position:fixed;z-index:5000;inset:0;display:grid;place-items:center;overflow:hidden;background:transparent;color:var(--text);font-family:var(--mono)}
.boot-loader:before{content:"";position:absolute;z-index:1;inset:0;pointer-events:none;opacity:.22;background-image:linear-gradient(rgba(184,243,107,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(184,243,107,.08) 1px,transparent 1px);background-size:48px 48px;mask-image:linear-gradient(to bottom,transparent,black 18%,black 82%,transparent)}
.boot-shutter{position:absolute;z-index:0;right:0;left:0;height:50.5%;background:#07100f;will-change:transform}.boot-shutter-top{top:0;transform-origin:top}.boot-shutter-bottom{bottom:0;transform-origin:bottom}
.boot-shell{position:relative;z-index:2;width:min(840px,calc(100vw - 48px));height:min(560px,calc(100svh - 48px));min-height:420px;display:grid;grid-template-rows:46px 1fr 82px;border:1px solid rgba(174,207,196,.22);background:rgba(7,16,15,.62);visibility:hidden;will-change:transform,opacity}
.boot-corner{position:absolute;width:18px;height:18px;border-color:var(--lime);border-style:solid}.boot-corner-tl{top:-1px;left:-1px;border-width:2px 0 0 2px}.boot-corner-tr{top:-1px;right:-1px;border-width:2px 2px 0 0}.boot-corner-bl{bottom:-1px;left:-1px;border-width:0 0 2px 2px}.boot-corner-br{right:-1px;bottom:-1px;border-width:0 2px 2px 0}
.boot-head,.boot-meta,.boot-phase{display:flex;align-items:center;justify-content:space-between}.boot-head{padding:0 18px;border-bottom:1px solid var(--line);color:var(--muted);font-size:9px}.boot-link{display:flex;align-items:center;gap:8px;color:var(--lime)}.boot-link i{width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 12px rgba(184,243,107,.8)}
.boot-main{min-height:0;display:grid;grid-template-columns:minmax(280px,1fr) minmax(260px,.8fr);align-items:center;gap:52px;padding:28px 56px}
.boot-radar{position:relative;width:min(34vw,340px);max-width:100%;aspect-ratio:1;justify-self:end;border:1px solid rgba(99,213,232,.24);border-radius:50%;overflow:hidden;background:rgba(4,13,12,.82);box-shadow:inset 0 0 42px rgba(99,213,232,.04),0 0 44px rgba(0,0,0,.26);will-change:transform,opacity}
.radar-ring{position:absolute;border:1px solid rgba(99,213,232,.19);border-radius:50%;inset:16.66%}.radar-ring.ring-2{inset:33.33%}.radar-ring.ring-3{inset:44%}.radar-axis{position:absolute;background:rgba(99,213,232,.17)}.axis-x{top:50%;right:0;left:0;height:1px}.axis-y{top:0;bottom:0;left:50%;width:1px}
.radar-sweep{position:absolute;inset:-1px;border-radius:50%;background:conic-gradient(from -18deg,transparent 0 300deg,rgba(99,213,232,.02) 322deg,rgba(99,213,232,.28) 358deg,rgba(184,243,107,.78) 360deg);will-change:transform}
.radar-core{position:absolute;top:50%;left:50%;width:28px;height:28px;display:grid;place-items:center;border:1px solid rgba(184,243,107,.5);border-radius:50%;transform:translate(-50%,-50%)}.radar-core span{width:6px;height:6px;border-radius:50%;background:var(--lime);box-shadow:0 0 14px var(--lime);will-change:transform,opacity}
.boot-blip{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--cyan);box-shadow:0 0 0 3px rgba(99,213,232,.12),0 0 12px rgba(99,213,232,.8);will-change:transform,opacity}.blip-1{top:25%;left:62%}.blip-2{top:62%;left:27%;background:var(--lime)}.blip-3{top:70%;left:71%}.blip-4{top:39%;left:36%;background:var(--amber)}
.radar-bearing{position:absolute;color:rgba(174,207,196,.55);font-size:8px}.bearing-n{top:8px;left:50%;transform:translateX(-50%)}.bearing-e{top:50%;right:10px;transform:translateY(-50%)}.bearing-s{bottom:8px;left:50%;transform:translateX(-50%)}.bearing-w{top:50%;left:10px;transform:translateY(-50%)}
.boot-identity{align-self:center}.boot-kicker{display:block;color:var(--lime);font-size:9px}.boot-wordmark{display:flex;margin-top:14px;font:600 clamp(46px,6vw,76px)/.9 var(--mono);letter-spacing:0}.boot-wordmark span{display:inline-block;will-change:transform,opacity}.boot-identity>p{margin:10px 0 0;color:var(--muted);font:500 12px var(--mono);letter-spacing:0}
.boot-telemetry{margin-top:34px;border-top:1px solid var(--line)}.boot-telemetry div{min-height:35px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);font-size:9px}.boot-telemetry span{color:var(--muted)}.boot-telemetry b{color:var(--cyan);font-weight:500}
.boot-foot{padding:14px 18px;border-top:1px solid var(--line)}.boot-phase{color:var(--text);font-size:10px}.boot-phase b{color:var(--lime);font-size:12px}.boot-track{height:3px;margin-top:10px;overflow:hidden;background:rgba(255,255,255,.06)}.boot-track span{display:block;width:100%;height:100%;background:var(--lime);box-shadow:0 0 12px rgba(184,243,107,.5);transform:scaleX(0);transform-origin:left;will-change:transform}.boot-meta{margin-top:9px;color:#61756d;font-size:8px}

@media(max-width:620px){.boot-shell{width:calc(100vw - 28px);height:calc(100svh - 28px);min-height:480px;grid-template-rows:42px 1fr 82px}.boot-main{grid-template-columns:1fr;grid-template-rows:minmax(220px,1fr) auto;gap:18px;padding:22px 28px}.boot-radar{width:min(64vw,300px);justify-self:center}.boot-identity{width:100%}.boot-wordmark{margin-top:9px;font-size:48px}.boot-telemetry{display:none}.boot-head{padding:0 13px}.boot-foot{padding:13px}.boot-loader:before{background-size:32px 32px}}
@media(max-width:800px){:root{--side:100%;--top:52px}.topbar{grid-template-columns:1fr auto}.brand{border-right:0;padding:0 13px}.brand-sub,.mission-status,.top-stat:nth-child(n+3){display:none}.top-stat{min-width:58px;padding:0 10px}.sidebar{top:auto;height:42vh;min-height:290px;border-top:1px solid var(--line);border-right:0;will-change:transform}.mobile-handle{display:grid;place-items:center;position:absolute;z-index:2;top:-20px;left:50%;width:54px;height:21px;border:1px solid var(--line);border-bottom:0;border-radius:4px 4px 0 0;background:var(--panel);transform:translateX(-50%)}.mobile-handle:before{content:"";width:20px;height:2px;background:var(--muted)}.search-wrap{padding:9px 12px}.search-box input{height:36px}.tabs{padding:0 12px}.tab{height:39px}.filter-row{padding:8px 12px}.list-head{display:none}.map-tools{top:64px;right:10px}.tool-btn{width:38px;height:38px}.tool-btn:after{display:none}.layer-menu{top:64px;right:56px}.detail-drawer{top:auto;width:100%;height:54vh;border-top:1px solid var(--line);border-left:0}.drawer-body{height:calc(100% - 145px)}.map-legend{display:none}.toast{bottom:calc(42vh + 18px)}}
