@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700&family=Manrope:wght@400;500;600;700;800&display=swap');
:root{--bg:#07131f;--side:#0a1825;--surface:#102231;--surface2:#122838;--border:#233746;--text:#f1f4f1;--soft:#bfd0d6;--muted:#8197a3;--green:#c6ee83;--cyan:#69c8d2;--orange:#f6b96d;--red:#f49286}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font:15px/1.55 'DM Sans',sans-serif}button,a{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible{outline:2px solid var(--green);outline-offset:3px}h1,h2,h3,p{margin-top:0}h1,h2,h3,strong,b{font-family:Manrope,'DM Sans',sans-serif}h1{font-size:clamp(36px,4vw,60px);letter-spacing:-.055em;line-height:1.08;margin:10px 0 14px}h1 span{color:var(--green)}h2{letter-spacing:-.035em;line-height:1.2}.eyebrow{font:700 10px/1.4 Manrope,sans-serif;letter-spacing:.16em;color:var(--muted)}.eyebrow.accent{color:var(--green)}.muted{color:var(--muted)}.app-shell{display:grid;grid-template-columns:228px minmax(0,1fr);min-height:100vh}.sidebar{position:sticky;top:0;height:100vh;background:var(--side);border-right:1px solid var(--border);display:flex;flex-direction:column;padding:28px 16px 24px}.brand{display:flex;gap:12px;align-items:center;padding:0 10px 54px}.brand-mark{width:36px;height:36px;display:grid;place-items:center;border-radius:11px;background:var(--green);color:#0c231b;font-size:22px;transform:rotate(-23deg)}.brand strong,.brand small{display:block;line-height:1.12;letter-spacing:.13em}.brand strong{font-size:15px}.brand small{font-size:9px;color:var(--green);margin-top:5px}.nav-label{font-size:10px;letter-spacing:.17em;color:#627e8c;font-weight:700;padding:0 14px 10px}.side-nav{display:grid;gap:4px}.nav-link{padding:12px 14px;display:flex;align-items:center;gap:12px;border-radius:9px;color:#9db1bc;font-weight:600}.nav-link span{font-size:19px;width:23px;text-align:center;color:#7895a1}.nav-link.active,.nav-link:hover{background:#1a3442;color:white}.nav-link.active span{color:var(--green)}.sidebar-bottom{margin-top:auto}.sidebar-plane{border:1px solid #31505b;background:#132d39;border-radius:13px;padding:16px}.sidebar-plane strong,.sidebar-plane small{display:block}.sidebar-plane strong{font-size:22px;margin:5px 0 0}.sidebar-plane small{font-size:11px;color:var(--soft)}.sidebar-bottom p{font-size:11px;line-height:1.6;color:#688291;padding:0 8px;margin:18px 0 0}.main-shell{min-width:0}.topbar{height:72px;border-bottom:1px solid var(--border);display:flex;align-items:center;justify-content:space-between;padding:0 38px;background:#0a1926}.breadcrumb{font:700 10px Manrope,sans-serif;letter-spacing:.15em;color:#7e97a3}.breadcrumb span{padding:0 10px;color:#425a67}.breadcrumb b{color:var(--text)}.topbar-right{display:flex;gap:12px;align-items:center;font-size:12px;color:var(--soft)}.utc-clock{font:600 11px Manrope,sans-serif;color:#9eafbc;margin-right:14px}.header-dot{width:7px;height:7px;border-radius:50%;background:var(--orange);box-shadow:0 0 0 4px #f6b96d22}.header-dot.live{background:var(--green);box-shadow:0 0 0 4px #c6ee8326}.mobile-brand{display:none}main{max-width:1650px;margin:auto;padding:32px 38px 50px}.view{display:none}.view.active{display:block}.page-intro{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:28px}.page-intro p:last-child{color:#9fb4c0;margin:0}.intro-actions{display:flex;align-items:center;gap:10px;padding-bottom:4px}.icon-button{width:39px;height:39px;border-radius:10px;background:var(--surface);color:var(--green);border:1px solid var(--border);font-size:24px;line-height:1}.refresh-note{font-size:11px;color:var(--muted);white-space:nowrap}.notice{display:flex;align-items:center;gap:14px;padding:14px 18px;background:#172d38;border:1px solid #34505b;border-radius:12px;margin-bottom:18px}.notice.live{background:#1c342d;border-color:#416853}.notice.stale{background:#392a27;border-color:#685046}.notice-icon{font-size:23px;color:var(--orange)}.notice.live .notice-icon{color:var(--green)}.notice.stale .notice-icon{color:var(--orange)}.notice strong{font-size:13px}.notice p{margin:2px 0 0;color:#abc0c7;font-size:12px}.notice-time{margin-left:auto;font-size:11px;color:var(--soft);white-space:nowrap}.flight-grid{display:grid;grid-template-columns:minmax(0,1.8fr) minmax(280px,.75fr);gap:18px}.map-card,.position-card,.metric,.panel,.aircraft-hero,.logbook-banner{background:var(--surface);border:1px solid var(--border);border-radius:15px;overflow:hidden}.map-head{height:86px;padding:17px 22px;display:flex;align-items:center;justify-content:space-between;gap:12px}.map-kicker{display:block;color:var(--green);font:700 10px Manrope,sans-serif;letter-spacing:.14em}.map-head h2{font-size:21px;margin:1px 0 0}.map-head p{font-size:12px;color:var(--soft);margin:0}.map-actions{display:flex;gap:6px}.map-actions button,.map-footer button{border:1px solid #405665;color:#dce9e9;background:#1d3443;border-radius:7px;padding:7px 10px;font-size:11px;font-weight:700}.map-actions button:hover,.map-footer button:hover{background:#2a4758}.map-stage{height:495px;position:relative;background:#153047}.map-stage #map,.map-stage iframe{height:100%;width:100%;border:0}.map-stage iframe{position:absolute;inset:0;z-index:500;background:#1c2b38}.map-stage iframe[hidden]{display:none}.map-empty{position:absolute;inset:0;display:grid;place-items:center;background:#153047;padding:30px;text-align:center;z-index:3}.map-empty[hidden]{display:none}.leaflet-container{background:#234050}.leaflet-tile-pane{filter:grayscale(.2) brightness(.78) saturate(.75)}.leaflet-control-attribution{font-size:9px!important}.map-footer{height:43px;display:flex;align-items:center;justify-content:space-between;padding:0 15px;gap:10px}.map-legend{display:flex;gap:18px;font-size:10px;color:#9fb4c0}.map-legend span{display:flex;align-items:center;gap:6px}.map-legend i{display:inline-block;width:14px;height:2px;background:var(--green)}.map-legend .legend-last{height:8px;width:8px;border-radius:50%;background:var(--orange)}.map-footer button{background:transparent;border:0;color:var(--green);padding:4px}.plane-marker{width:44px;height:44px;display:grid;place-items:center;border-radius:50%;background:#c6ee83;color:#0c302c;border:3px solid #fff;box-shadow:0 3px 18px #0009;font-size:23px}.plane-marker.stale{background:#f6b96d}.position-card{padding:22px;display:flex;flex-direction:column}.card-label-row{display:flex;align-items:center;justify-content:space-between}.status-pill{font:800 9px Manrope,sans-serif;letter-spacing:.1em;padding:6px 9px;background:#44502a;color:#d9edaf;border-radius:30px}.status-pill.stale{background:#694a2d;color:#f9d5a6}.status-pill.none{background:#344654;color:#b2c0c8}.place-block{display:flex;flex-direction:column;align-items:start;padding:32px 0 24px}.place-icon{font-size:30px;line-height:1;color:var(--green)}.place-block strong{font-size:clamp(19px,2.3vw,28px);line-height:1.25;margin:8px 0 4px}.place-block>span:last-child{color:var(--muted);font-size:12px}.coordinate-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.coordinate-row>div{background:#182e3d;border:1px solid #2a4352;border-radius:9px;padding:11px}.coordinate-row small,.source-stamp small{font-size:9px;font-weight:700;letter-spacing:.13em;color:var(--muted);display:block}.coordinate-row strong{font-size:15px;display:block;margin-top:5px}.position-divider{height:1px;background:var(--border);margin:26px 0}.route-mini{padding-bottom:24px}.route-codes{display:flex;align-items:center;gap:14px;margin:13px 0}.route-codes div{display:flex;flex-direction:column}.route-codes b{font-size:27px;line-height:1}.route-codes small{font-size:11px;color:var(--soft);margin-top:5px}.route-arrow{flex:1;color:var(--green);border-bottom:1px dashed #527583;text-align:center;line-height:0}.route-mini p{font-size:11px;color:var(--muted);line-height:1.5;margin:0}.source-stamp{margin-top:auto;border-top:1px solid var(--border);padding-top:18px;display:flex;gap:10px;align-items:start}.source-orb{width:10px;height:10px;border-radius:50%;background:var(--green);margin-top:5px}.source-stamp strong,.source-stamp span:last-child{display:block}.source-stamp strong{font-size:12px}.source-stamp span:last-child{font-size:11px;color:var(--muted);margin-top:3px}.section-heading{display:flex;align-items:end;justify-content:space-between;margin:34px 0 15px}.section-heading h2,.panel h2{font-size:22px;margin:5px 0 0}.section-heading>p{font-size:11px;color:var(--muted);margin:0}.telemetry-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}.metric{padding:18px;min-height:161px}.metric-icon{color:var(--green);font-size:20px;margin-bottom:9px}.metric small{font:700 9px Manrope,sans-serif;letter-spacing:.12em;color:var(--muted);display:block}.metric strong{font-size:clamp(19px,2.4vw,31px);letter-spacing:-.045em;display:block;margin-top:8px;white-space:nowrap}.metric>span{font-size:10px;color:var(--muted)}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px;margin-top:19px}.panel{padding:22px}.panel-top{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:20px}.panel-tag{font:700 9px Manrope,sans-serif;letter-spacing:.12em;color:#aed4d2;background:#22434a;padding:7px 8px;border-radius:5px;white-space:nowrap}.text-button{background:none;color:var(--green);border:0;font-size:11px;font-weight:700;padding:5px}.detail-table,.spec-list{display:grid}.detail-table>div,.spec-list>div,.weather-row{display:flex;justify-content:space-between;gap:15px;padding:11px 0;border-top:1px solid var(--border);font-size:12px}.detail-table span,.spec-list span,.weather-row span{color:var(--muted)}.detail-table b,.spec-list b,.weather-row b{text-align:right;font-size:12px}.detail-table b em{color:var(--orange);font-style:normal;font-size:10px}.panel-footnote{font-size:11px;color:var(--muted);margin:18px 0 0}.source-panel{margin-top:19px}.source-explain{font-size:12px;color:var(--soft);max-width:800px}.source-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.source-item{background:#172c3a;border:1px solid #2b4350;border-radius:9px;padding:13px;min-height:93px}.source-item strong{font-size:12px;display:block}.source-item small{font-size:10px;color:var(--muted);display:block;margin-top:8px;line-height:1.4}.source-item .source-state{font-size:10px;color:var(--green);margin-top:5px}.source-item .source-state.down{color:var(--orange)}.logbook-banner{padding:30px;display:flex;align-items:center;justify-content:space-between;gap:15px;background:linear-gradient(120deg,#1d3b44,#142936)}.logbook-banner h2{font-size:clamp(24px,3vw,37px);margin:8px 0}.logbook-banner h2 span{color:var(--green)}.logbook-banner p{color:var(--soft);font-size:12px;max-width:600px;margin:0}.logbook-banner>span{font:800 24px Manrope,sans-serif;color:var(--green);white-space:nowrap}.logbook-banner i{font-style:normal;padding:0 12px}.history-heading{display:flex;justify-content:space-between;align-items:center;margin:35px 0 12px}.history-heading h2{margin:0}.history-heading span,.history-footnote{color:var(--muted);font-size:11px}.history-list{display:grid;gap:9px}.history-row{display:grid;grid-template-columns:120px 1fr 1fr 85px;gap:14px;align-items:center;background:var(--surface);border:1px solid var(--border);border-radius:10px;padding:14px 20px}.history-row small{font-size:10px;color:var(--muted);display:block}.history-row strong{font-size:13px}.history-row .duration{text-align:right;color:var(--green)}.history-footnote{margin:15px 0}.aircraft-hero{height:265px;display:flex;align-items:end;justify-content:space-between;padding:32px;background:linear-gradient(115deg,#143642,#15303e,#0e2230);position:relative}.plane-art{font-size:220px;position:absolute;right:12%;top:-45px;line-height:1;color:#b7d9c3;transform:rotate(-24deg);opacity:.26}.aircraft-hero>div:last-child{z-index:1}.aircraft-hero h2{font-size:clamp(38px,5vw,65px);margin:6px 0 0}.aircraft-hero p{color:var(--soft);margin:0}.spec-list>div{font-size:13px}.spec-list b{font-size:13px}.metar-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.metar-card{background:#162e3a;border:1px solid #294550;border-radius:10px;padding:16px}.metar-card strong{display:block;font-size:16px}.metar-card small{display:block;color:var(--muted);font-size:10px}.metar-card p{color:var(--soft);font-size:11px;margin:8px 0 0}footer{border-top:1px solid var(--border);padding:18px 38px;color:#7c929c;font-size:10px}footer>span{padding:0 4px}.footer-right{float:right}.footer-right span{padding-left:12px}dialog{width:min(850px,90vw);max-height:85vh;border:1px solid #42606c;border-radius:15px;background:#0d2130;color:white;padding:20px;box-shadow:0 30px 100px #000b}dialog::backdrop{background:#000a}.dialog-head{display:flex;justify-content:space-between}.dialog-head h2{margin:0}.dialog-head button{border:0;background:transparent;color:white;font-size:26px}dialog p{color:var(--soft);font-size:12px}dialog pre{overflow:auto;background:#06131e;padding:14px;border-radius:8px;font-size:11px}.map-card.expanded{position:fixed;z-index:2000;inset:12px;background:var(--surface);display:flex;flex-direction:column}.map-card.expanded .map-stage{height:auto;flex:1}.map-card.expanded .map-head{flex:none}.map-card.expanded .map-footer{flex:none}
@media(max-width:1150px){.app-shell{grid-template-columns:190px minmax(0,1fr)}.sidebar{padding-left:10px;padding-right:10px}.flight-grid{grid-template-columns:minmax(0,1.5fr) minmax(240px,.8fr)}.map-stage{height:420px}.source-grid{grid-template-columns:repeat(2,1fr)}.topbar{padding:0 24px}main{padding:28px 24px}.metric{padding:14px}}
@media(max-width:850px){.app-shell{display:block}.sidebar{position:fixed;top:auto;bottom:0;left:0;right:0;height:63px;z-index:1500;padding:0;background:#0a1926;border-right:0;border-top:1px solid var(--border)}.brand,.nav-label,.sidebar-bottom{display:none}.side-nav{display:grid;grid-template-columns:repeat(3,1fr);height:100%;gap:0}.nav-link{border-radius:0;flex-direction:column;gap:0;justify-content:center;padding:4px;font-size:10px}.nav-link span{font-size:20px}.main-shell{padding-bottom:63px}.mobile-brand{display:block;font-size:14px;letter-spacing:.09em}.mobile-brand:first-letter{color:var(--green)}.breadcrumb{display:none}.flight-grid{grid-template-columns:1fr}.position-card{display:grid;grid-template-columns:1fr 1fr;gap:12px}.card-label-row,.source-stamp{grid-column:span 2}.place-block{padding:14px 0}.coordinate-row{align-self:center}.position-divider{display:none}.route-mini{padding:0}.source-stamp{margin-top:0}.telemetry-grid{grid-template-columns:repeat(2,1fr)}.map-stage{height:450px}footer{padding:18px 24px}.footer-right{float:none;display:block;margin-top:5px}}
@media(max-width:570px){.topbar{height:57px;padding:0 17px}.utc-clock{display:none}.topbar-right{font-size:10px}main{padding:22px 14px 32px}.page-intro{align-items:start}.page-intro h1{font-size:37px}.page-intro p:last-child{font-size:12px}.intro-actions{gap:0}.refresh-note{display:none}.notice{align-items:flex-start;padding:12px}.notice-time{font-size:10px}.map-head{height:77px;padding:13px}.map-head h2{font-size:17px}.map-head p{font-size:10px}.map-actions button{padding:6px;font-size:10px}.map-stage{height:380px}.map-footer{padding:0 9px}.map-legend{gap:8px;font-size:9px}.position-card{padding:17px}.place-block strong{font-size:20px}.route-codes b{font-size:22px}.section-heading{display:block}.section-heading>p{margin-top:5px}.telemetry-grid{gap:9px}.metric{min-height:139px;padding:13px}.metric strong{font-size:23px}.detail-grid{grid-template-columns:1fr;gap:12px}.source-grid{grid-template-columns:repeat(2,1fr)}.panel{padding:17px}.history-row{grid-template-columns:75px 1fr 1fr;gap:8px;padding:12px}.history-row .duration{grid-column:3}.history-row strong{font-size:11px}.logbook-banner{padding:20px}.logbook-banner>span{display:none}.metar-grid{grid-template-columns:1fr}.aircraft-hero{height:220px;padding:20px}.plane-art{font-size:180px;right:0;top:-18px}.footer-right span{display:block;padding:0}.map-card.expanded{inset:0;border-radius:0;bottom:63px}}
/* Recorded-position replay */
.replay-bar{padding:15px 20px 13px;border-top:1px solid var(--border);background:#132937}
.replay-head,.replay-controls{display:flex;align-items:center;gap:12px}
.replay-head{justify-content:space-between;margin-bottom:10px}
.replay-head strong{display:block;font-size:12px}
.replay-head span{display:block;color:var(--muted);font-size:10px}
.replay-head>span{white-space:nowrap;text-align:right}
.replay-controls button{height:32px;border:1px solid #4a6972;border-radius:7px;background:#233f49;color:var(--green);font-weight:700}
.replay-controls button:first-child{width:38px;font-size:15px}
.replay-controls button:last-child{padding:0 11px;font-size:11px}
.replay-controls button:disabled{opacity:.45;cursor:not-allowed}
.replay-controls input{flex:1;min-width:0;accent-color:var(--green);cursor:pointer}
.replay-controls input:disabled{cursor:not-allowed;opacity:.5}
.replay-readout{font-size:10px;color:#a9c3c9;margin-top:8px;min-height:15px}
.map-legend .legend-replay{height:8px;width:8px;border-radius:50%;background:var(--cyan)}
.route-replay-link{margin-top:17px;border:1px solid #7eab9a;border-radius:7px;background:#2b544e;color:var(--green);font-size:11px;font-weight:700;padding:9px 12px}
.route-replay-link:hover{background:#34645b}
.map-card.expanded .replay-bar{flex:none}
@media(max-width:570px){.replay-bar{padding:11px 12px}.replay-head{gap:6px}.replay-head strong{font-size:11px}.replay-head span,.replay-readout{font-size:9px}.map-legend .replay-legend{display:none}.map-legend{font-size:9px;gap:7px}.map-footer button{font-size:9px}.route-replay-link{margin-top:12px}}
.map-card.provider-active .replay-bar{display:none}
.alert-optin{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:12px 0 18px;padding:15px 18px;border:1px solid #31505a;border-radius:11px;background:#102b36}
.alert-optin strong{font-size:13px}.alert-optin p{margin:2px 0 0;color:var(--soft);font-size:11px}
.alert-optin button{flex:none;border:1px solid var(--green);border-radius:7px;background:#bce783;color:#102621;font-size:11px;font-weight:800;padding:9px 13px}
.alert-optin button.active{background:transparent;color:var(--green)}
@media(max-width:570px){.alert-optin{align-items:flex-start;flex-direction:column;gap:9px}.alert-optin button{width:100%}}
