@import url('fonts/fonts.css?v=muu5xo8v');
:root{font-family:'DM Sans',sans-serif;font-synthesis:none;color:#e7e5d8;--ink:#e7e5d8;--paper:#e7e5d8;--mint:#c7d8ba;--console:#36424d}
*{box-sizing:border-box}body{margin:0;overscroll-behavior:none;background:#24333b}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:3px solid #efbe67;outline-offset:3px}.hidden{display:none!important}
#app{width:100%;max-width:540px;height:100dvh;position:relative;margin:auto;overflow:hidden;isolation:isolate;background:#148da1;box-shadow:0 0 60px #08111966}#airspace{position:absolute;inset:0;overflow:hidden;isolation:isolate}canvas{display:block;width:100%;height:100%;touch-action:none;cursor:crosshair}
/* Painted cockpit aluminium. Narrow machined edges, no padded enclosure. */
.topbar,.panel{border:1px solid #90999e;border-bottom:4px solid #252e36;border-radius:5px;background:linear-gradient(110deg,#707c85,#53606b);box-shadow:inset 0 1px 0 #b3b9ba,inset 1px 0 0 #839099,0 3px 0 #101a20,0 9px 18px #0b202e55;color:#e7e5d8}
.topbar:before,.topbar:after,.panel:before,.panel:after{content:'';position:absolute;width:6px;height:6px;border:1px solid #222e36;border-radius:50%;background:linear-gradient(45deg,#859099 42%,#26333c 43%,#26333c 56%,#859099 57%);box-shadow:0 1px 0 #aeb5b5;pointer-events:none}.topbar:before,.panel:before{left:5px;top:5px}.topbar:after,.panel:after{right:5px;bottom:5px}
.topbar{position:absolute;z-index:4;top:max(8px,env(safe-area-inset-top));left:8px;right:8px;display:flex;align-items:center;gap:8px;padding:8px 10px;min-height:63px}
.brand{display:flex;align-items:center;gap:10px;flex:1;padding-left:3px;color:#f0eee1;text-decoration:none;font:600 25px/.95 'Barlow Condensed',sans-serif;letter-spacing:1px}.brand svg{width:24px;height:30px;transform:rotate(-12deg);color:#e0e4de}.brand small{font:500 10px 'DM Sans',sans-serif;display:block;letter-spacing:0;margin-top:4px;color:#d7dedb}.in-flight .brand{display:none}
.tools{display:flex;gap:6px;flex-shrink:0}.icon-button{position:relative;display:grid;place-items:center;width:44px;height:46px;min-width:44px;border:2px solid #232e36;border-bottom:4px solid #111b22;border-radius:3px;color:#dbe2db;background:linear-gradient(#35414b,#26313b);box-shadow:inset 0 1px 0 #879097,0 1px 0 #a0a9ac}.icon-button:hover{background:#45525b}.icon-button:active{transform:translateY(1px);border-bottom-width:2px}.icon-button:disabled{opacity:.4}.icon-button svg{width:19px;height:19px;fill:currentColor}.icon-button .slash{position:absolute;left:21px;top:9px;height:25px;width:2px;background:#d6a24e;transform:rotate(-43deg)}.icon-button.enabled .slash{display:none}#pause{color:#f0c978;border-color:#26313a;border-bottom-color:#111b22;background:linear-gradient(#414b50,#2e383f)}
.hud{position:relative;display:grid;grid-template-columns:1fr 1fr;grid-template-rows:auto auto;flex:1;min-width:0;gap:3px 10px;padding:5px 8px 9px;background:#141d24;border:2px solid #26313a;border-radius:2px;box-shadow:inset 0 2px 5px #0008,0 1px 0 #97a0a4;color:#dce8cd;pointer-events:none}.mission{grid-column:1/3;grid-row:1;display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;border-bottom:1px solid #566268;padding-bottom:4px}#location{font:500 12px 'Barlow Condensed',sans-serif;letter-spacing:.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#mission-label{font-size:9px;color:#b1bcb5;white-space:nowrap}.score{grid-row:2;min-width:0}.score-counter{display:flex;align-items:baseline;gap:4px;font-variant-numeric:tabular-nums}.score-counter>span{font:500 28px/.95 'Barlow Condensed',sans-serif;color:#dce8cd}.score-counter small{font:500 11px 'Barlow Condensed',sans-serif;color:#aebbae}.instrument-label{display:block;margin-top:3px;font:500 9px/1 'DM Sans',sans-serif;color:#aeb8b2}.progress-track{position:absolute;bottom:3px;left:8px;right:8px;height:2px;background:#35413d}.progress-track i{display:block;height:100%;width:0;background:#c7d8ba;transition:width .2s}.traffic{grid-row:2;display:grid;grid-template-columns:14px auto;grid-template-rows:27px 10px;column-gap:4px;justify-content:end;align-items:center;border-left:1px solid #53606866;padding-left:7px}.traffic svg{width:12px;height:12px;transform:rotate(35deg);color:#c3cbbb}.traffic>span{font:500 27px/1 'Barlow Condensed',sans-serif;font-variant-numeric:tabular-nums}.traffic .instrument-label{grid-column:1/3;margin:0;text-align:right}
.hint,.toast{position:absolute;z-index:2;left:50%;bottom:max(16px,env(safe-area-inset-bottom));transform:translateX(-50%);width:calc(100% - 32px);max-width:430px;padding:11px 13px;border:1px solid #85928a;border-radius:3px;background:#202e36ed;color:#e2e6db;font-size:11px;line-height:1.45;text-align:center;pointer-events:none;box-shadow:0 3px 0 #16232b88}.hint-dot{display:none}.toast{z-index:3;opacity:0;width:max-content;max-width:calc(100% - 30px);transition:opacity .18s}.toast.visible{opacity:1}
.overlay{position:absolute;z-index:3;inset:0;pointer-events:none;display:flex;align-items:flex-end;padding:14px 14px max(20px,env(safe-area-inset-bottom))}.overlay:empty{display:none}.overlay.center{align-items:center;justify-content:center;background:#10233080;backdrop-filter:blur(3px)}.panel{pointer-events:auto;position:relative;width:100%;max-width:410px;margin:auto auto 0;padding:23px}.overlay.center .panel{max-height:calc(100% - 114px);margin:auto auto 0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#8f9b9f #323e48}.panel h1,.panel h2{font:600 32px/1.08 'Barlow Condensed',sans-serif;letter-spacing:.1px;margin:0 0 12px;color:#f0eee0}.panel p{font-size:12px;line-height:1.55;color:#d1d9d6;margin:0 0 17px}.panel .eyebrow{font:500 12px 'Barlow Condensed',sans-serif;letter-spacing:.7px;color:#d4dcd7;margin:0 0 13px;padding-right:25px}.close{position:absolute;top:5px;right:5px;width:44px;height:44px;border:0;background:transparent;color:#f0eee1;font-size:27px}.briefing-top{display:flex;align-items:center;gap:7px;border-bottom:1px solid #a7b1b055;padding-bottom:10px;margin-bottom:17px;font-size:10px;color:#e0e4dc}.briefing-top>span:last-child{margin-left:auto;color:#ced8d0;font-size:9px}.panel .mini-note{font-size:10px;margin:14px 0 0;text-align:center;color:#d0d9d4}.pause-note{margin-bottom:22px!important}
/* Radio rack, navigation CRT and physical mode keys. */
.tower-deck{padding:14px 16px 9px;max-width:420px;border-radius:5px}.deck-rail{display:flex;align-items:center;gap:12px;padding-bottom:12px;margin-bottom:13px;border-bottom:1px solid #2c3843;box-shadow:0 1px 0 #89959b}.radio-unit{display:flex;align-items:center;gap:10px;flex:1}.radio-label{font:500 11px/1.2 'Barlow Condensed',sans-serif;max-width:42px;letter-spacing:.5px;color:#f0eee3}.radio-frequency{display:block;font:500 23px/1 'Barlow Condensed',sans-serif;letter-spacing:1px;font-variant-numeric:tabular-nums;color:#e9c894;background:#1b242b;border:2px solid #34414c;padding:6px 8px;box-shadow:0 1px 0 #9aa3a6,inset 0 1px 3px #0008}.radio-frequency small{font:9px 'DM Sans',sans-serif;letter-spacing:0;color:#b5baa9}.tower-status{font:500 10px 'Barlow Condensed',sans-serif;letter-spacing:.3px;color:#dee3da}.radio-knob{flex-shrink:0;position:relative;width:44px;height:44px;border-radius:50%;border:4px solid #202b33;background:repeating-conic-gradient(#4d5964 0deg 8deg,#303b45 8deg 15deg);box-shadow:0 2px 2px #18232b,inset 0 0 0 2px #687680}.radio-knob span{position:absolute;inset:4px;border-radius:50%;background:#3e4c57;border:1px solid #65727b}.radio-knob span:after{content:'';position:absolute;left:11px;top:2px;width:3px;height:8px;background:#ede9d8;transform:rotate(30deg);transform-origin:50% 10px}.radio-knob:active{transform:rotate(20deg)}
.dispatch-screen{position:relative;padding:11px 13px 10px;margin-bottom:15px;border:5px solid #293540;border-top-color:#202b34;border-bottom-color:#879198;border-radius:7px;background:radial-gradient(ellipse at 40% 40%,#243832,#131f20);box-shadow:0 0 0 1px #1c2730,inset 0 0 18px #050c1280;color:#c7d8ba}.dispatch-heading{display:flex;align-items:center;justify-content:space-between;padding-bottom:8px;border-bottom:1px solid #75917b55;font-size:10px;color:#b8c6af}.dispatch-heading>span:last-child{font-variant-numeric:tabular-nums;color:#dbe6c7}.dispatch-main{display:flex;align-items:center;gap:13px;min-height:117px}.approach-display{width:88px;flex-shrink:0}.approach-display svg{display:block;width:100%;fill:none;stroke:#749b7d;stroke-width:.6}.approach-display .dial-bezel{fill:#111b20;stroke:#63766e;stroke-width:2}.approach-display .dial-tick{stroke:#b2c2a3;stroke-width:.7}.dial-cardinals{font:6px "DM Sans",sans-serif;fill:#b8c8a7;stroke:none;text-anchor:middle}.approach-display .crosshair{opacity:.45}.approach-route{stroke:#c4d6a6;stroke-width:1.7;stroke-dasharray:3 3}.approach-display .radar-plane{fill:#d2dfb8;stroke:none}.approach-display .mini-runway{fill:#597356;stroke:#bace9e}.approach-display .runway-stripe{stroke:#e1dfba;stroke-width:1.5}.dispatch-copy{min-width:0}.panel .dispatch-copy h1{font-size:29px;line-height:1;margin:0 0 6px;color:#dae7c2}.panel .dispatch-copy p{font-size:10px;margin:0 0 12px;color:#acbca4;line-height:1.3}.landing-order{font-size:9px;color:#acbca4;white-space:nowrap}.landing-order strong{font:500 23px/.8 'Barlow Condensed',sans-serif;vertical-align:-2px;margin-right:4px;color:#e0e8c6}.dispatch-bottom{display:flex;justify-content:space-between;gap:6px;align-items:center;padding-top:8px;border-top:1px solid #75917b55;font-size:8px;color:#a6b79f}.dispatch-bottom b{font:500 14px 'Barlow Condensed',sans-serif;margin-left:4px;color:#d5e1b8}
.panel .primary,.secondary,.deck-navigation button,.airport-choice,.level,.sound-preview{border:1px solid #17242d;border-top-color:#9ba5a9;border-bottom:3px solid #14212a;border-radius:3px;background:linear-gradient(#3b4954,#283640);box-shadow:0 1px 0 #9ba3a3,inset 1px 0 0 #586772;color:#e9e9dc}.panel .primary:hover,.secondary:hover,.deck-navigation button:hover,.airport-choice:hover,.sound-preview:hover{background:#455662}.panel .primary:active,.secondary:active,.deck-navigation button:active,.airport-choice:active{transform:translateY(1px);border-bottom-width:2px}.panel .primary{display:flex;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:52px;padding:12px 14px;font-size:13px;font-weight:600;border-left:4px solid #bbce9e}.primary b{font-size:22px;font-weight:400;line-height:1}.secondary{width:100%;min-height:46px;padding:12px;margin-top:10px;font-size:12px;font-weight:500}.mode-keys,.deck-navigation{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.mode-keys .primary,.mode-keys .secondary{min-height:67px;margin:0;padding:10px;font-size:12px;line-height:1.25;text-align:left}.launch-key svg{display:none}.launch-key>span{flex:1}.mode-keys b{display:none}.free-flight-key{display:flex;align-items:center;gap:8px}.free-flight-key .key-symbol{font-size:21px;color:#c6cfc5}.free-flight-key small{display:block;font-size:8px;font-weight:400;color:#afbcb9;margin-top:5px}.deck-navigation{margin-top:9px}.deck-navigation button{display:flex;align-items:center;justify-content:center;gap:7px;min-height:48px;padding:8px 6px;font-size:10px;font-weight:500}.deck-navigation svg{width:16px;height:16px;fill:none;stroke:#d6ddce;stroke-width:1.5;flex-shrink:0}.deck-navigation button:last-child svg{fill:#d6ddce;stroke:none}.deck-base{display:flex;justify-content:space-between;align-items:center;padding:12px 10px 0;font:500 9px 'Barlow Condensed',sans-serif;letter-spacing:1px;color:#d6dbd6}.deck-base i{width:42px;height:5px;background:repeating-linear-gradient(0deg,#24313b 0 1px,#839096 1px 2px)}#app:not(.in-flight) #pause{display:none}
.levels{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:20px 0}.level{padding:10px 4px;font:500 24px 'Barlow Condensed',sans-serif}.level small{display:block;font:8px 'DM Sans',sans-serif;color:#bac7bd;margin-top:4px}.level:disabled{opacity:.4;cursor:default}.level.current{color:#f2ce8d;border-color:#c29b58;border-bottom-color:#664d30}.level.current small{color:#e3bf85}.level.done{border-color:#b4c49b}.fleet{display:grid;grid-template-columns:1fr 1fr;gap:8px}.fleet-item{display:flex;align-items:center;gap:7px;background:#25323a;border:1px solid #81909755;border-radius:2px;padding:8px;box-shadow:inset 0 1px 4px #111a2266}.fleet-item canvas{width:42px;height:42px;flex-shrink:0;cursor:default}.fleet-item strong{font-size:11px;display:block;color:#e4e9da}.fleet-item small{font-size:9px;color:#afc0b7;display:block;margin-top:4px}.result-stats{display:flex;justify-content:space-between;background:#1e2c31;border:2px solid #2b3841;border-radius:2px;padding:13px;margin-bottom:20px}.result-stats strong{display:block;font:500 32px 'Barlow Condensed',sans-serif;color:#d8e4bd}.result-stats span{font-size:9px;color:#aebeaa}.airports{display:grid;gap:10px}.airport-choice{display:flex;gap:12px;align-items:center;text-align:left;padding:12px;min-height:74px}.airport-choice strong{display:block;font-size:13px;margin-bottom:5px}.airport-choice small{display:block;font-size:10px;color:#bcc8bd;line-height:1.4}.airport-choice b{font-size:24px;font-weight:400;margin-left:auto}.airport-icon{width:36px;height:36px;display:grid;place-items:center;background:#202e38;color:#d7b778;border:1px solid #7c898c;border-radius:2px;font-size:26px;flex-shrink:0}.airport-1{color:#c2d6ab}.airport-2{color:#e6b183}
.audio-channel{background:#26343c;border:1px solid #8c999b;border-top:3px solid #1c2932;border-radius:3px;padding:12px;margin-bottom:13px;color:#e5e7db}.audio-toggle{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:44px;font-size:13px;font-weight:600}.audio-toggle small{display:block;font-size:10px;font-weight:400;color:#b2c1b8;margin-top:4px}.audio-toggle input{width:23px;height:23px;accent-color:#c3ceae;cursor:pointer}.volume-control{display:flex;gap:12px;align-items:center;min-height:44px;font-size:10px;color:#becbc1}.volume-control input{width:100%;min-width:0;height:36px;accent-color:#c4cdb1;cursor:pointer}.sound-preview{min-height:44px;width:100%;font:500 11px 'DM Sans',sans-serif}.audio-panel .primary{margin-top:17px}
.landing-result{padding:16px 18px}.landing-result h2{font-size:27px;margin-bottom:5px}.landing-result p{margin-bottom:13px;font-size:10px}.landing-result .briefing-top{margin-bottom:10px;padding-bottom:8px}.result-actions{display:flex;gap:9px}.result-actions .secondary{width:67px;margin:0;flex-shrink:0}.result-actions .primary{min-height:47px;font-size:12px;padding:10px 12px}
@media(min-width:700px){#app{height:min(100dvh,1000px);border-inline:1px solid #677b8244}.overlay{padding-bottom:30px}}
@media(max-width:360px){.topbar{gap:6px;padding:7px 8px}.hud{gap:2px 6px;padding:5px 6px 8px}#location{font-size:11px}#mission-label{font-size:8px}.tools{gap:4px}.traffic{padding-left:5px}.score-counter small{font-size:10px}.overlay{padding:12px;padding-bottom:16px}.panel{padding:20px}.tower-deck{padding:13px 12px 9px}.deck-rail{gap:6px}.radio-unit{gap:6px}.radio-label{font-size:10px;max-width:37px}.radio-frequency{font-size:21px;padding:6px}.tower-status{font-size:9px}.dispatch-main{gap:8px;min-height:110px}.approach-display{width:72px}.panel .dispatch-copy h1{font-size:26px}.dispatch-bottom{font-size:7px}.mode-keys .primary,.mode-keys .secondary{font-size:11px;padding:8px}.deck-navigation button{font-size:9px;gap:5px}.fleet{grid-template-columns:1fr}.fleet-item{padding:8px 12px;gap:13px}.fleet-item strong{font-size:12px}.fleet-item small{font-size:10px}.hint{font-size:10px}}
@media(max-height:680px){.overlay{padding-bottom:14px}.tower-deck{padding-top:12px}.deck-rail{margin-bottom:10px;padding-bottom:10px}.dispatch-main{min-height:95px}.approach-display{width:70px}.dispatch-screen{margin-bottom:11px}.mode-keys .primary,.mode-keys .secondary{min-height:56px}.deck-base{padding-top:10px}.panel .dispatch-copy p{margin-bottom:9px}.overlay:not(.center){padding-top:92px;overflow-y:auto}.tower-deck{max-height:100%;overflow-y:auto}.audio-panel{padding:16px}.audio-panel>.eyebrow,.audio-panel>p{display:none}.audio-panel h2{font-size:29px;margin-bottom:14px;padding-right:30px}.audio-channel{padding:8px;margin-bottom:10px}.audio-panel .primary{margin-top:10px;min-height:48px;padding-block:10px}}
@media(prefers-reduced-motion:reduce){.toast,.progress-track i{transition:none}}

/* Airport chart selector: geography is visible before entering a map. */
.airport-panel{padding:20px}.airport-panel h2{padding-right:25px}.airport-panel>p{margin-bottom:14px}.airport-choice{min-height:83px;padding:8px;gap:11px}.map-preview{width:88px;height:110px;cursor:inherit;pointer-events:none;flex-shrink:0;border:2px solid #172630;background:#245f73}.airport-choice>span{min-width:0}.airport-choice .map-route{font-size:9px;color:#9fb7ad;margin-top:4px}.airport-choice small{font-size:10px}.airport-choice strong{margin-bottom:3px}.airport-panel .airports{gap:8px}
@media(max-width:360px){.airport-panel{padding:17px}.map-preview{width:72px;height:90px}.airport-choice{gap:8px}.airport-choice .map-route{font-size:8px}.airport-choice strong{font-size:12px}}

/* Mission charts use the same terrain renderer as the live airport. */
.mission-panel{padding:20px}.mission-panel h2{padding-right:24px}.mission-panel .levels{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin:18px 0 0}
.mission-panel .level{min-width:0;padding:0;text-align:left;overflow:hidden;border-color:#8c999d;border-bottom-color:#17242d}
.level-chart{display:block;position:relative;border-bottom:1px solid #839394}
.level-chart canvas{width:100%;height:auto;aspect-ratio:4/5;cursor:inherit;pointer-events:none}
.level-number{position:absolute;top:7px;left:7px;display:grid;place-items:center;min-width:30px;height:32px;padding:0 5px;background:#1b2b34ed;border:1px solid #8b9a9e;font:600 23px/1 'Barlow Condensed',sans-serif;color:#f0eee1}
.level-status{position:absolute;bottom:0;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:5px;min-height:24px;padding:4px;background:#1b2b34ed;color:#e0e6df;font:500 9px/1.3 'DM Sans',sans-serif}
.level-status svg{width:12px;height:12px;fill:none;stroke:currentColor;stroke-width:1.4}
.level-info{display:block;padding:10px 9px 11px}.level-info strong{display:block;font:600 19px/1.1 'Barlow Condensed',sans-serif;color:#f0eee1}.level-info>span{display:block;font:10px/1.4 'DM Sans',sans-serif;margin-top:4px;color:#d1dad5}.level-info small{font-size:10px;margin-top:7px;color:#d1dad5}
.mission-panel .level:disabled{opacity:1}.mission-panel .level:disabled .level-chart canvas{filter:saturate(.8)}
.mission-panel .level.current{border-color:#efbe67;box-shadow:0 0 0 1px #efbe67}.level.current .level-number,.level.current .level-status{color:#f2ce8d;border-color:#efbe67}
.mission-panel .level.done{border-color:#b4c49b}.level.done .level-status{color:#d2e7bd}
.mission-panel .level:not(:disabled):hover{background:#455662}.mission-panel .level:focus-visible{outline-offset:-3px}
@media(max-width:360px){.mission-panel{padding:16px}.mission-panel .levels{gap:9px}.level-info{padding:9px 7px}.level-info strong{font-size:18px}.level-info>span{font-size:9px}.level-status{font-size:8px}}

/* Center the aircraft guide within the screen, retaining its scroll limit. */
.overlay.center:has(.fleet-panel){padding-block:max(14px,env(safe-area-inset-top)) max(14px,env(safe-area-inset-bottom))}
.overlay.center .fleet-panel{margin:auto;max-height:calc(100% - 114px)}
