:root{--bg: #0e0e0f;--bg-elevated: #18181a;--card-bg: rgba(14, 14, 15, .62);--card-border: rgba(255, 255, 255, .06);--card-shadow: 0 4px 32px rgba(0, 0, 0, .32);--text: rgba(255, 255, 255, .96);--text-strong: #ffffff;--muted: rgb(135, 138, 144);--muted-50: rgba(135, 138, 144, .55);--muted-20: rgba(135, 138, 144, .2);--divider: rgba(135, 138, 144, .3);--accent-green: rgb(82, 164, 94);--accent-amber: rgb(255, 208, 136);--accent-tan: rgb(178, 160, 134);--accent-amber-glow: rgba(255, 208, 136, .45);--gradient-header: linear-gradient(rgba(14, 14, 15, 0) 0%, rgba(14, 14, 15, .7) 100%);--trail-grad: linear-gradient( to right, rgb(132, 27, 192) 0%, rgb(255, 94, 0) 27%, rgb(228, 161, 28) 59%, rgb(153, 153, 153) 90% );--label-bg: rgba(0, 0, 0, .5);--label-fg: #ffffff}.theme-light{--bg: #eef1f5;--bg-elevated: #ffffff;--card-bg: rgba(255, 255, 255, .82);--card-border: rgba(20, 28, 48, .1);--card-shadow: 0 1px 2px rgba(20, 28, 48, .04), 0 8px 28px rgba(20, 28, 48, .1);--text: rgb(20, 24, 36);--text-strong: rgb(10, 14, 24);--muted: rgb(96, 104, 120);--muted-50: rgba(96, 104, 120, .55);--muted-20: rgba(96, 104, 120, .18);--divider: rgba(20, 28, 48, .1);--accent-amber: rgb(216, 138, 38);--accent-tan: rgb(140, 118, 86);--accent-amber-glow: rgba(216, 138, 38, .4);--gradient-header: linear-gradient(rgba(238, 241, 245, 0) 0%, rgba(238, 241, 245, 0) 100%);--label-bg: rgba(20, 28, 48, .78);--label-fg: #ffffff}:root{--fs-2xs: clamp(.625rem, .18vw + .55rem, .95rem);--fs-xs: clamp(.7rem, .2vw + .63rem, 1.1rem);--fs-sm: clamp(.8rem, .22vw + .72rem, 1.25rem);--fs-md: clamp(.9rem, .26vw + .8rem, 1.45rem);--fs-lg: clamp(1rem, .32vw + .86rem, 1.7rem);--fs-xl: clamp(1.2rem, .48vw + .96rem, 2.1rem);--fs-2xl: clamp(1.5rem, .8vw + 1.18rem, 2.8rem);--fs-3xl: clamp(2.2rem, 1.4vw + 1.55rem, 4.2rem);--sp-1: 4px;--sp-2: 8px;--sp-3: 12px;--sp-4: 16px;--sp-5: 20px;--sp-6: 24px;--sp-8: 32px;--sp-10: 40px;--r-sm: 6px;--r-md: 10px;--r-lg: 14px;--r-pill: 9999px;--blur: 20px;--tracking-tight: -.012em;--tracking-wide: .04em}@media (min-width: 1920px){:root{--fs-2xs: .95rem;--fs-xs: 1.1rem;--fs-sm: 1.25rem;--fs-md: 1.4rem;--fs-lg: 1.65rem;--fs-xl: 2.1rem;--fs-2xl: 2.75rem;--fs-3xl: 4rem}}@media (max-width: 720px){:root{--fs-2xs: .78rem;--fs-xs: .88rem;--fs-sm: 1rem;--fs-md: 1.13rem;--fs-lg: 1.31rem;--fs-xl: 1.6rem;--fs-2xl: 2rem;--fs-3xl: 2.6rem}}@media (min-width: 2880px){:root{--fs-2xs: 1.1rem;--fs-xs: 1.3rem;--fs-sm: 1.5rem;--fs-md: 1.7rem;--fs-lg: 2rem;--fs-xl: 2.5rem;--fs-2xl: 3.2rem;--fs-3xl: 4.8rem}}*{box-sizing:border-box}html,body{margin:0;padding:0;height:100%;background:var(--bg);color:var(--text);font-family:Barlow,Helvetica Neue,system-ui,sans-serif;font-size:var(--fs-sm);line-height:1.4;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility;font-feature-settings:"tnum" 1,"lnum" 1}body{overflow:hidden}button{font-family:inherit;cursor:pointer}#app{position:fixed;inset:0;overflow:hidden;isolation:isolate}.card{background:var(--card-bg);border:1px solid var(--card-border);border-radius:var(--r-lg);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur)) saturate(140%);overflow:hidden}.card .head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4);gap:var(--sp-3)}.card .head .l{display:flex;align-items:center;gap:var(--sp-2);min-width:0}.card .head .title{font-weight:500;font-size:var(--fs-md);color:var(--text)}.card .head .sub{font-weight:500;font-size:var(--fs-xs);color:var(--muted)}.card .head .r{display:flex;align-items:center;gap:var(--sp-2);color:var(--muted)}.card .head i{font-size:var(--fs-lg)}.card .head .r i{cursor:pointer;transition:color .15s}.card .head .r i:hover{color:var(--text)}.card .divider{height:1px;background:var(--divider)}.pill{display:inline-flex;align-items:center;gap:var(--sp-2);height:clamp(40px,4.2vh,60px);padding:0 var(--sp-4);border-radius:var(--r-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);-webkit-backdrop-filter:blur(var(--blur)) saturate(140%);color:var(--text);font-size:var(--fs-sm);font-weight:500;white-space:nowrap}.pill i{color:var(--muted);font-size:var(--fs-md)}.pill .divider{width:1px;height:60%;background:var(--muted-50)}.pill .dot{width:10px;height:10px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 0 4px #52a45e26}.pill input{background:transparent;border:0;outline:0;color:var(--text);font-family:inherit;font-size:var(--fs-sm);font-weight:500;min-width:0}.pill input::placeholder{color:var(--muted-50)}.iconbtn{background:transparent;border:0;padding:0;color:var(--muted);font-size:var(--fs-md);display:inline-flex;align-items:center;cursor:pointer;transition:color .15s}.iconbtn:hover{color:var(--text)}.pill .iconbtn{display:flex}.label-pill{display:inline-flex;align-items:center;height:24px;padding:0 var(--sp-2);border-radius:var(--r-sm);background:var(--label-bg);color:var(--label-fg);font-size:var(--fs-xs);font-weight:600;letter-spacing:.3px;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);text-shadow:0 1px 2px rgba(0,0,0,.4)}.scroll{overflow-y:auto;overscroll-behavior:contain}.scroll::-webkit-scrollbar{width:0}:focus-visible{outline:2px solid var(--accent-amber);outline-offset:2px;border-radius:var(--r-sm)}.map-base{position:absolute;inset:0;width:100%;height:100%;z-index:0}.map-tint{position:absolute;inset:0;pointer-events:none;z-index:1;background:radial-gradient(ellipse at 50% 50%,#0e0e0f00 30%,#0e0e0f26 75%,#0e0e0f4d)}.theme-light .map-tint{background:transparent}.stage{position:absolute;inset:0;z-index:2;pointer-events:none}.stage>*{pointer-events:auto}.header-band{position:absolute;left:0;right:0;top:0;height:clamp(72px,9vh,140px);background:var(--gradient-header);pointer-events:none;z-index:2}.brand{position:absolute;left:var(--sp-5);top:var(--sp-5);display:flex;align-items:center;gap:var(--sp-2);color:var(--text);font-weight:700;font-size:var(--fs-lg);z-index:5;text-shadow:0 1px 2px rgba(0,0,0,.4)}.theme-light .brand{text-shadow:none}.brand i{font-size:calc(var(--fs-lg) * 1.6)}.topbar{position:absolute;top:var(--sp-4);right:var(--sp-5);display:flex;gap:var(--sp-3);flex-wrap:wrap;justify-content:flex-end;z-index:5;max-width:calc(100% - 280px)}.left-rail{position:absolute;left:var(--sp-5);top:clamp(80px,10vh,160px);bottom:var(--sp-5);width:clamp(280px,24vw,480px);display:flex;flex-direction:column;gap:var(--sp-3);z-index:4;pointer-events:none}.left-rail>*{pointer-events:auto}.left-rail .detail{flex:0 0 auto}.left-rail .realtime{flex:1 1 auto;min-height:200px;max-height:50vh;display:flex;flex-direction:column}.right-rail{position:absolute;right:var(--sp-5);top:clamp(80px,10vh,160px);bottom:calc(var(--sp-5) + 36px);width:clamp(280px,22vw,440px);display:flex;flex-direction:column;gap:var(--sp-2);z-index:4;pointer-events:none;transition:opacity .25s ease,transform .25s ease}.right-rail>*{pointer-events:auto}.right-rail .ap-scroll{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:var(--sp-3);padding-bottom:var(--sp-2);overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--card-border) transparent}.right-rail .ap-scroll>*{flex-shrink:0}.right-rail .ap-scroll::-webkit-scrollbar{width:6px}.right-rail .ap-scroll::-webkit-scrollbar-thumb{background:var(--card-border);border-radius:3px}.right-rail .ap-scroll::-webkit-scrollbar-thumb:hover{background:var(--muted)}.right-rail .ap-scroll::-webkit-scrollbar-track{background:transparent}.right-rail .ap-toggles{display:flex;gap:var(--sp-2);justify-content:flex-end;padding:2px}.right-rail .ap-toggles .chip{display:inline-flex;align-items:center;gap:6px;height:30px;padding:0 10px;border-radius:var(--r-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);color:var(--muted);font-family:inherit;font-size:var(--fs-xs);font-weight:600;cursor:pointer;transition:color .15s,background .15s}.right-rail .ap-toggles .chip i{font-size:var(--fs-sm)}.right-rail .ap-toggles .chip:hover{color:var(--text)}.right-rail .ap-toggles .chip.on{color:var(--accent-amber);border-color:#ffd08866}.right-rail.hidden{opacity:0;transform:translate(20px);pointer-events:none}.legend-bar{position:absolute;left:50%;bottom:var(--sp-5);transform:translate(-50%);width:min(480px,50vw);display:flex;align-items:center;padding:clamp(22px,2.4vh,32px) var(--sp-3) var(--sp-3);gap:var(--sp-3);z-index:4}.legend-bar .lbl{font-size:var(--fs-xs);font-weight:500;color:var(--muted);white-space:nowrap}.legend-bar .bar-track{position:relative;flex:1;height:3px;background:var(--trail-grad);border-radius:2px;margin:0 var(--sp-3)}.legend-bar .ticks{position:absolute;left:0;right:0;bottom:100%;margin-bottom:6px;height:14px;font-size:var(--fs-xs);color:var(--muted);font-weight:500;font-variant-numeric:tabular-nums;pointer-events:none}.legend-bar .ticks span{position:absolute;top:0;transform:translate(-50%);line-height:14px;white-space:nowrap}@media (max-width: 1099px){.right-rail{width:min(340px,36vw);max-height:calc(100vh - clamp(80px,10vh,160px) - var(--sp-5) - 60px)}.topbar{max-width:calc(100% - 120px)}}@media (max-width: 720px){.stage{display:none}.mobile-app{display:block}}@media (min-width: 721px){.mobile-app{display:none}}.detail .badges{display:flex;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-2) var(--sp-4) var(--sp-3)}.detail .badge{display:inline-flex;align-items:center;gap:var(--sp-1);height:clamp(22px,2.6vh,32px);padding:0 var(--sp-2);border-radius:var(--r-sm);font-size:var(--fs-xs);font-weight:700;text-transform:uppercase;letter-spacing:.5px;background:var(--muted-20);color:var(--muted);border:1px solid var(--card-border)}.detail .badge.active{background:#52a45e2e;color:var(--accent-green);border-color:#52a45e4d}.detail .badge.landed{background:#878a9038;color:var(--text);border-color:var(--muted-50)}.detail .badge.scheduled{background:#ffd08829;color:var(--accent-amber);border-color:#ffd0884d}.detail .badge i{font-size:var(--fs-xs)}.detail .route{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-4) var(--sp-3)}.detail .route .ap{flex:1;min-width:0}.detail .route .ap.right{text-align:right}.detail .route .ap .code{font-size:var(--fs-xl);font-weight:600;color:var(--text-strong);line-height:1;letter-spacing:var(--tracking-tight)}.detail .route .ap .meta{font-size:var(--fs-2xs);color:var(--muted);margin-top:4px;font-weight:500;text-transform:uppercase;letter-spacing:.4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail .route .ap .time{font-size:var(--fs-sm);color:var(--text);margin-top:6px;font-weight:500}.detail .route .ap .time .zone{color:var(--muted);font-size:var(--fs-2xs);margin-left:4px}.detail .route .arrow{display:flex;flex-direction:column;align-items:center;color:var(--muted);gap:2px;flex:0 0 auto}.detail .route .arrow .dur{font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.4px;font-weight:600}.detail .route .arrow .line{width:clamp(40px,4vw,80px);height:2px;background:repeating-linear-gradient(to right,var(--muted) 0 4px,transparent 4px 8px)}.detail .route .arrow i{font-size:var(--fs-md);color:var(--accent-amber)}.detail .grid-info{padding:var(--sp-2) var(--sp-4) var(--sp-3);display:grid;grid-template-columns:repeat(3,1fr);gap:var(--sp-2) var(--sp-3)}.detail .grid-info .cell{display:flex;flex-direction:column;min-width:0}.detail .grid-info .k{color:var(--muted);font-weight:500;font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.5px;line-height:1}.detail .grid-info .v{color:var(--text);font-weight:500;font-size:var(--fs-sm);margin-top:4px;line-height:1.1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.detail .grid-info .v.delayed{color:var(--accent-amber)}.detail .codeshare{padding:0 var(--sp-4) var(--sp-3);font-size:var(--fs-2xs);color:var(--muted);font-weight:500}.detail .codeshare b{color:var(--text);font-weight:600;margin-left:4px}.realtime .table{padding:var(--sp-2) var(--sp-4) var(--sp-3);flex:1;display:flex;flex-direction:column;min-height:0}.realtime .colhead,.realtime .row{display:grid;grid-template-columns:24px 1fr 72px 84px 44px 64px;align-items:center;font-size:var(--fs-xs)}.realtime .colhead{color:var(--muted);font-weight:700;padding:2px 0 var(--sp-2);border-bottom:1px solid var(--divider)}.realtime .colhead span:nth-child(n+3){text-align:right}.realtime .row{padding:var(--sp-2) 0;font-weight:500;color:var(--text);cursor:pointer;transition:background .12s;border-radius:var(--r-sm)}.realtime .row:hover{background:#7f7f7f1a}.realtime .row.active{background:#ffd0881a}.realtime .row.active .call b{color:var(--accent-amber)}.realtime .row i.ico{color:var(--muted);font-size:var(--fs-sm)}.realtime .row .call{display:flex;align-items:center;gap:var(--sp-2);padding-left:0;min-width:0}.realtime .row .call b{font-size:var(--fs-sm);color:var(--text);font-weight:600}.realtime .row .num{text-align:right;color:var(--text);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}.realtime .row .ctry{text-align:right;color:var(--muted);font-size:var(--fs-xs);letter-spacing:.4px}.realtime .row .ident{text-align:right;color:var(--muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}.realtime .scroll{flex:1;min-height:0}.realtime .empty{padding:var(--sp-4);color:var(--muted);font-size:var(--fs-xs);text-align:center}.ap-head{display:flex;align-items:center;justify-content:space-between;padding:var(--sp-3) var(--sp-4) var(--sp-2);gap:var(--sp-3)}.ap-head .l{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-md);font-weight:600}.ap-head .l i{color:var(--muted);font-size:var(--fs-lg)}.ap-head .l .code-tag{font-size:var(--fs-xs);color:var(--muted);font-weight:500;letter-spacing:1px}.ap-head .right-meta{font-size:var(--fs-2xs);color:var(--muted);font-family:JetBrains Mono,ui-monospace,monospace;font-weight:500}.wx{padding:0 var(--sp-4) var(--sp-3)}.wx .big{display:flex;align-items:baseline;gap:var(--sp-2);padding:var(--sp-1) 0 var(--sp-3);flex-wrap:wrap}.wx .big .t{font-size:var(--fs-3xl);font-weight:600;line-height:1;color:var(--text);letter-spacing:var(--tracking-tight)}.wx .big .unit{font-size:var(--fs-sm);color:var(--muted);font-weight:500}.wx .big .cond{margin-left:auto;display:flex;align-items:center;gap:var(--sp-1);color:var(--muted);font-size:var(--fs-sm)}.wx .big .cond i{font-size:var(--fs-xl);color:var(--text);opacity:.85}.wx .grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2) var(--sp-3);padding-top:var(--sp-2);border-top:1px solid var(--divider)}.wx .grid .item{display:flex;align-items:center;gap:var(--sp-2);padding-top:var(--sp-2)}.wx .grid .item i{font-size:var(--fs-lg);color:var(--muted)}.wx .grid .item .k{font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.4px;font-weight:500;line-height:1}.wx .grid .item .v{font-size:var(--fs-sm);color:var(--text);font-weight:500;line-height:1.2;margin-top:3px}.rw{padding:var(--sp-3) var(--sp-4) var(--sp-4)}.rw .top{display:flex;align-items:center;justify-content:space-between;margin-bottom:var(--sp-2)}.rw .top .title{font-size:var(--fs-sm);font-weight:500;color:var(--text)}.rw .top .sub{font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.rw .diagram{position:relative;aspect-ratio:1 / .7;min-height:140px;border-radius:var(--r-sm);overflow:hidden;background:#7f7f7f14}.rw .diagram .rw-mini-map{position:absolute;inset:0;pointer-events:none;z-index:0;opacity:.55}.rw .diagram .rw-mini-map .maplibregl-canvas{width:100%!important;height:100%!important}.rw .diagram svg{position:relative;z-index:1;width:100%;height:100%;display:block}.rw .rw-legend{display:flex;gap:var(--sp-3);padding:var(--sp-2) 0 0;flex-wrap:wrap}.rw .rw-legend .it{display:flex;align-items:center;gap:var(--sp-1);font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.rw .rw-legend .it .sw{width:12px;height:2px;background:var(--muted)}.rw .rw-legend .it.act .sw{background:var(--accent-amber)}.wc{padding:var(--sp-3) var(--sp-4) var(--sp-4);display:flex;gap:var(--sp-4);align-items:center}.wc .compass{position:relative;width:clamp(96px,12vw,160px);aspect-ratio:1;flex:0 0 auto}.wc .compass .face{position:absolute;inset:0;border-radius:50%;border:1px solid var(--muted-50)}.wc .compass .lbl{position:absolute;font-size:var(--fs-2xs);color:var(--muted);font-weight:500}.wc .compass .lbl.n{top:4px;left:50%;transform:translate(-50%);color:var(--text)}.wc .compass .lbl.e{right:4px;top:50%;transform:translateY(-50%)}.wc .compass .lbl.s{bottom:4px;left:50%;transform:translate(-50%)}.wc .compass .lbl.w{left:4px;top:50%;transform:translateY(-50%)}.wc .compass .arrow{position:absolute;left:50%;top:50%;width:16%;height:42%;background:var(--accent-amber);clip-path:polygon(50% 0,100% 100%,0 100%);transform-origin:50% 100%;transform:translate(-50%,-100%) rotate(0);filter:drop-shadow(0 0 8px var(--accent-amber-glow));transition:transform .4s ease-out}.wc .compass .center{position:absolute;left:50%;top:50%;width:9px;height:9px;border-radius:50%;background:var(--text);transform:translate(-50%,-50%)}.wc .nums{flex:1;display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}.wc .nums .big{font-size:var(--fs-2xl);font-weight:600;color:var(--text);line-height:1;letter-spacing:var(--tracking-tight)}.wc .nums .big small{font-size:var(--fs-sm);font-weight:500;color:var(--muted);margin-left:6px}.wc .nums .row{display:flex;justify-content:space-between;font-size:var(--fs-xs);white-space:nowrap}.wc .nums .row .k{color:var(--muted);text-transform:uppercase;letter-spacing:.4px}.wc .nums .row .v{color:var(--text);font-weight:500}.plane{display:inline-flex;align-items:center;gap:4px;cursor:pointer;user-select:none;transform-origin:center;transition:filter .2s}.plane i{font-size:clamp(22px,1.7vw,36px);color:var(--accent-tan);filter:drop-shadow(0 1px 2px rgba(0,0,0,.45));transition:transform .35s ease-out,color .15s,filter .15s}.plane .plane-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:4px;padding:2px 6px;border-radius:var(--r-sm);background:var(--label-bg);color:var(--label-fg);font-size:var(--fs-2xs);font-weight:600;letter-spacing:.3px;white-space:nowrap;opacity:.7;transition:opacity .15s,transform .15s}.plane:hover .plane-label,.plane.selected .plane-label{opacity:1;transform:translateY(calc(-50% - 1px))}.plane.selected i{color:var(--accent-amber);filter:drop-shadow(0 0 10px var(--accent-amber-glow)) drop-shadow(0 0 2px rgba(0,0,0,.4))}.plane.selected:before{content:"";position:absolute;left:50%;top:50%;width:64px;height:64px;border-radius:50%;border:2px solid var(--accent-amber);transform:translate(-50%,-50%);animation:ping 1.8s ease-out infinite;pointer-events:none}@keyframes ping{0%{transform:translate(-50%,-50%) scale(.5);opacity:.9}to{transform:translate(-50%,-50%) scale(1.6);opacity:0}}.ap-pin{display:inline-flex;flex-direction:column;align-items:center;gap:2px;background:transparent;border:0;padding:0;cursor:pointer;filter:drop-shadow(0 1px 2px rgba(0,0,0,.5));font-family:inherit;transition:filter .15s}.ap-pin .ap-pin-dot{transition:transform .15s}.ap-pin:hover .ap-pin-dot{transform:scale(1.18)}.ap-pin:active .ap-pin-dot{transform:scale(1)}.ap-pin-dot{width:10px;height:10px;border-radius:50%;background:var(--accent-amber);box-shadow:0 0 0 3px var(--bg),0 0 0 4px var(--accent-amber)}.ap-pin-lbl{position:absolute;top:100%;left:50%;transform:translate(-50%);margin-top:2px;font-size:var(--fs-2xs);font-weight:700;letter-spacing:.5px;color:var(--text);background:var(--card-bg);border:1px solid var(--card-border);padding:1px 6px;border-radius:var(--r-sm);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);white-space:nowrap}.station-pin{display:inline-flex;flex-direction:column;align-items:center;pointer-events:none}.station-pin .station-ring{position:absolute;left:50%;top:50%;width:32px;height:32px;margin-left:-16px;margin-top:-16px;border-radius:50%;border:2px solid var(--accent-green);opacity:.6;animation:station-pulse 2.5s ease-out infinite}.station-pin .station-dot{width:12px;height:12px;border-radius:50%;background:var(--accent-green);box-shadow:0 0 0 3px var(--bg),0 0 8px #52a45e99}.station-pin .station-lbl{position:absolute;top:26px;font-size:10px;font-weight:700;letter-spacing:.8px;color:var(--text);background:var(--card-bg);border:1px solid var(--card-border);padding:1px 6px;border-radius:var(--r-sm);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);white-space:nowrap}@keyframes station-pulse{0%{transform:scale(.7);opacity:.7}to{transform:scale(2.4);opacity:0}}.pin-btn.on{color:var(--accent-amber)}.pin-btn.on i{transform:rotate(-25deg)}.maplibregl-ctrl-attrib{background:var(--card-bg)!important;color:var(--text);font-size:10px;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);border-radius:var(--r-sm)}.maplibregl-ctrl-attrib-inner,.maplibregl-ctrl-attrib-inner *{color:var(--text)!important}.maplibregl-ctrl-attrib a{color:var(--accent-amber)!important;text-decoration:underline}.maplibregl-ctrl-attrib a:hover{text-decoration:none}.maplibregl-ctrl-attrib-button{background-color:var(--card-bg)!important;background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><circle cx='10' cy='10' r='9' fill='none' stroke='%23ffd088' stroke-width='1.6'/><circle cx='10' cy='6.4' r='1.1' fill='%23ffd088'/><rect x='9.1' y='9' width='1.8' height='6' fill='%23ffd088'/></svg>")!important;background-position:center;background-repeat:no-repeat}.theme-light .maplibregl-ctrl-attrib-button{background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='20' height='20' viewBox='0 0 20 20'><circle cx='10' cy='10' r='9' fill='none' stroke='%23222222' stroke-width='1.6'/><circle cx='10' cy='6.4' r='1.1' fill='%23222222'/><rect x='9.1' y='9' width='1.8' height='6' fill='%23222222'/></svg>")!important}@media (max-width: 768px){.maplibregl-ctrl-bottom-right .maplibregl-ctrl-group:has(.maplibregl-ctrl-geolocate),.maplibregl-ctrl-bottom-right .maplibregl-ctrl-geolocate{display:none!important}.maplibregl-ctrl-bottom-right{bottom:96px!important}}.mobile-app{display:none;position:absolute;inset:0;overflow:hidden;z-index:3;pointer-events:none}.mobile-app>*{pointer-events:auto}@media (max-width: 720px){.mobile-app{display:block}}.m-header{position:absolute;left:0;right:0;top:0;height:calc(140px + env(safe-area-inset-top,0px));background:var(--gradient-header);pointer-events:none}.m-top{position:absolute;left:var(--sp-3);right:var(--sp-3);top:calc(var(--sp-3) + env(safe-area-inset-top,0px));display:flex;align-items:center;gap:var(--sp-2);z-index:6}.m-brand{display:flex;align-items:center;gap:var(--sp-2);color:var(--text);font-weight:700;font-size:var(--fs-md);flex:1}.m-brand i{font-size:calc(var(--fs-md) * 1.6)}.m-pill{display:inline-flex;align-items:center;gap:6px;height:36px;padding:0 12px;border-radius:var(--r-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);color:var(--text);font-size:var(--fs-xs);font-weight:500}.m-pill i{font-size:var(--fs-sm);color:var(--muted)}.m-pill.btn{padding:0;width:36px;justify-content:center;cursor:pointer;background:var(--card-bg);border:1px solid var(--card-border);color:var(--muted)}.m-search{position:absolute;left:var(--sp-3);right:var(--sp-3);top:calc(60px + env(safe-area-inset-top,0px));height:44px;border-radius:var(--r-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);display:flex;align-items:center;gap:var(--sp-2);padding:0 var(--sp-3);z-index:6}.m-search i{color:var(--muted);font-size:var(--fs-md)}.m-search input{flex:1;background:transparent;border:0;outline:0;color:var(--text);font-family:inherit;font-size:var(--fs-sm);font-weight:500}.m-search input::placeholder{color:var(--muted-50)}.m-search .jst{font-size:var(--fs-2xs);color:var(--muted)}.m-fab{position:absolute;right:var(--sp-3);top:calc(140px + env(safe-area-inset-top,0px));display:flex;flex-direction:column;gap:var(--sp-2);z-index:5}.m-fab .btn{width:46px;height:46px;border-radius:var(--r-md);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);display:grid;place-items:center;color:var(--muted);font-size:var(--fs-lg)}.m-fab .btn:active{transform:scale(.96)}.m-selected{position:absolute;left:var(--sp-3);right:var(--sp-3);bottom:calc(296px + env(safe-area-inset-bottom,0px));border-radius:var(--r-lg);background:var(--card-bg);border:1px solid var(--card-border);box-shadow:var(--card-shadow);backdrop-filter:blur(var(--blur)) saturate(140%);padding:var(--sp-3) var(--sp-3);z-index:4;display:flex;align-items:center;gap:var(--sp-3)}.mobile-app:has(.m-sheet.expanded) .m-selected{display:none!important}.m-selected .ic{width:36px;height:36px;border-radius:var(--r-sm);background:#ffd08829;display:grid;place-items:center;color:var(--accent-amber);font-size:var(--fs-lg);flex-shrink:0}.m-selected .body{flex:1;min-width:0}.m-selected .row1{display:flex;align-items:baseline;gap:var(--sp-2);color:var(--text)}.m-selected .row1 .call{font-size:var(--fs-md);font-weight:600}.m-selected .row1 .type{font-size:var(--fs-xs);color:var(--muted)}.m-selected .row2{display:flex;gap:var(--sp-2);margin-top:2px;font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.4px;flex-wrap:wrap}.m-selected .row2 b{color:var(--text);font-weight:500;text-transform:none;letter-spacing:0;margin-left:3px;font-variant-numeric:tabular-nums}.m-selected .row3{display:flex;gap:var(--sp-3);margin-top:4px;font-size:var(--fs-xs);color:var(--text);flex-wrap:wrap}.m-time{display:inline-flex;align-items:baseline;gap:4px;font-variant-numeric:tabular-nums}.m-time .k{color:var(--muted);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.4px}.m-time .z{color:var(--muted);font-size:var(--fs-2xs);margin-left:2px}.m-badge{display:inline-flex;align-items:center;padding:1px 8px;border-radius:999px;font-size:var(--fs-2xs);font-weight:600;letter-spacing:.3px;text-transform:uppercase}.m-badge.landed{background:#52a45e2e;color:var(--accent-green)}.m-badge.active{background:#ffd0882e;color:var(--accent-amber)}.m-badge.scheduled{background:#7f7f7f2e;color:var(--muted)}.m-selected .close{background:none;border:0;color:var(--muted);font-size:var(--fs-md);cursor:pointer;padding:4px}.m-sheet{position:absolute;left:0;right:0;bottom:0;background:var(--card-bg);border-top:1px solid var(--card-border);box-shadow:0 -8px 32px #0000004d;backdrop-filter:blur(24px) saturate(140%);-webkit-backdrop-filter:blur(24px) saturate(140%);border-radius:18px 18px 0 0;padding-bottom:env(safe-area-inset-bottom,0);height:296px;display:flex;flex-direction:column;transition:height .25s ease;z-index:3}.m-sheet.expanded{height:82vh}.m-sheet .handle{display:flex;justify-content:center;padding:var(--sp-2) 0 var(--sp-1);cursor:grab}.m-sheet .handle span{width:42px;height:4px;border-radius:2px;background:var(--muted-50)}.m-tabs{display:flex;gap:var(--sp-1);padding:0 var(--sp-3) var(--sp-2);border-bottom:1px solid var(--divider)}.m-tab{flex:1;height:38px;border-radius:var(--r-sm);border:0;background:transparent;color:var(--muted);font-family:inherit;font-size:var(--fs-xs);font-weight:500;cursor:pointer;display:flex;align-items:center;justify-content:center;gap:var(--sp-1)}.m-tab i{font-size:var(--fs-sm)}.m-tab.on{color:var(--text);background:#7f7f7f24}.m-tab .badge{font-size:var(--fs-2xs);padding:1px 6px;border-radius:8px;background:var(--muted-20);color:var(--muted)}.m-tab.on .badge{background:var(--accent-amber);color:#0e0e0f}.m-tabcontent{flex:1;overflow-y:auto;overscroll-behavior:contain}.m-tabcontent::-webkit-scrollbar{width:0}.m-detail-host{padding:8px 12px 0}.m-detail-host:empty{display:none}.m-detail-host .card{margin:0}.m-airport-host{padding:8px 12px;display:flex;flex-direction:column;gap:12px}.m-airport-host .ap-toggles{display:none}.m-airport-host .ap-scroll{display:flex;flex-direction:column;gap:12px;overflow:visible}.m-airport-host .card{margin:0}.m-flightrow{display:grid;grid-template-columns:auto 1fr auto auto;gap:var(--sp-2);align-items:center;padding:var(--sp-3) var(--sp-3);border-bottom:1px solid var(--divider);cursor:pointer}.route-pill{display:inline-block;margin-left:6px;padding:1px 6px;border-radius:var(--r-sm);background:#7f7f7f1f;color:var(--muted);font-size:var(--fs-2xs);font-weight:600;letter-spacing:.3px;vertical-align:2px}.m-selected .route-pill{vertical-align:middle;margin-left:0;margin-right:6px}.m-flightrow .ic{width:30px;height:30px;border-radius:var(--r-sm);background:#7f7f7f1a;display:grid;place-items:center;color:var(--muted);font-size:var(--fs-sm)}.m-flightrow.active .ic{background:#ffd0882e;color:var(--accent-amber)}.m-flightrow .meta .call{font-size:var(--fs-sm);color:var(--text);font-weight:600}.m-flightrow.active .meta .call{color:var(--accent-amber)}.m-flightrow .meta .sub{font-size:var(--fs-2xs);color:var(--muted);margin-top:2px}.m-flightrow .stat{text-align:right;font-size:var(--fs-xs);color:var(--text);font-weight:500;min-width:60px;font-variant-numeric:tabular-nums}.m-flightrow .stat .k{font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.4px;display:block}.m-ap{padding:var(--sp-3)}.m-ap h3{margin:0 0 var(--sp-2);font-size:var(--fs-2xs);color:var(--muted);text-transform:uppercase;letter-spacing:.5px;font-weight:600;display:flex;align-items:center;gap:var(--sp-1)}.m-ap h3 i{font-size:var(--fs-sm)}.m-ap .block{margin-bottom:var(--sp-5)}.notam-pill{position:relative}.notam-pill .badge{position:absolute;top:-4px;right:-6px;min-width:16px;height:16px;padding:0 4px;border-radius:8px;background:var(--muted);color:var(--bg);font-size:10px;font-weight:700;display:inline-flex;align-items:center;justify-content:center}.notam-pill.has-warn .badge{background:var(--accent-amber);color:#1a1612}.notam-pill.has-crit .badge{background:#ff5e5e;color:#fff}.notam-pill.has-crit i{color:#ff5e5e}.notam-pill.has-warn i{color:var(--accent-amber)}.notam-panel{position:absolute;top:clamp(80px,10vh,160px);right:var(--sp-5);width:min(420px,90vw);max-height:calc(100vh - 200px);display:flex;flex-direction:column;z-index:6;transform:translate(110%);transition:transform .25s ease;pointer-events:auto}.notam-panel.open{transform:translate(0)}.notam-panel .head .title{font-size:var(--fs-md);font-weight:600}.notam-panel .head .sub{color:var(--muted);font-size:var(--fs-xs)}.notam-list{padding:var(--sp-2) var(--sp-4) var(--sp-4)}.notam-list .empty{padding:var(--sp-5);text-align:center;color:var(--muted);font-size:var(--fs-xs)}.notam-row{padding:var(--sp-3) 0;border-bottom:1px solid var(--divider);font-size:var(--fs-xs)}.notam-row:last-child{border-bottom:0}.notam-head{display:flex;align-items:center;gap:var(--sp-2);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.4px}.notam-sev{display:inline-block;padding:1px 8px;border-radius:6px;font-weight:700;background:var(--muted-20);color:var(--muted)}.notam-row.sev-warn .notam-sev{background:#ffd0882e;color:var(--accent-amber)}.notam-row.sev-crit .notam-sev{background:#ff5e5e2e;color:#ff7e7e}.notam-id{color:var(--muted);font-family:JetBrains Mono,ui-monospace,monospace;font-weight:600}.notam-code{color:var(--text);font-family:JetBrains Mono,ui-monospace,monospace;cursor:help;border-bottom:1px dotted var(--muted)}.notam-qmeaning{color:var(--text);font-weight:600;letter-spacing:0;text-transform:none;margin-left:2px}.notam-abbr{text-decoration:underline dotted var(--muted-50);text-underline-offset:3px;cursor:help;font-style:normal}.notam-abbr:hover{text-decoration-color:var(--accent-amber)}.notam-sev i{font-size:var(--fs-xs)}.notam-title{margin-top:6px;font-size:var(--fs-sm);font-weight:600;color:var(--text)}.notam-row.notam-flash{animation:notamFlash 1.5s ease-out}@keyframes notamFlash{0%{background:#ffd08847;box-shadow:0 0 0 2px var(--accent-amber)}to{background:transparent;box-shadow:0 0 0 0 transparent}}.notam-summary{margin-top:6px;padding:6px 8px;border-left:3px solid var(--accent-amber);background:#ffd08814;font-size:var(--fs-sm);font-weight:500;color:var(--text);line-height:1.5;border-radius:0 4px 4px 0}.notam-body{margin-top:4px;font-size:var(--fs-xs);color:var(--text);line-height:1.45;white-space:pre-wrap;font-family:JetBrains Mono,ui-monospace,monospace;word-break:break-word}.notam-period{margin-top:6px;color:var(--muted);font-size:var(--fs-2xs);text-transform:uppercase;letter-spacing:.4px}.maplibregl-popup-content{background:var(--card-bg);color:var(--text);border:1px solid var(--card-border);border-radius:var(--r-md);backdrop-filter:blur(var(--blur)) saturate(140%);padding:12px 14px}.maplibregl-popup-tip{border-top-color:var(--card-bg)}.maplibregl-popup-close-button{color:var(--muted);font-size:18px}
