/* Keep mobile text metrics stable when rotating the installed game. */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;background:#103e48;color:#f6f9ef;font-family:ui-rounded,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;overflow:hidden}button,select{font:inherit;touch-action:manipulation;-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:focus-visible,select:focus-visible{outline:3px solid #fff;outline-offset:2px}#app{width:100%;height:100dvh;position:relative;overflow:hidden;isolation:isolate}.dashboard{position:absolute;z-index:15;left:max(12px,env(safe-area-inset-left));top:max(7px,env(safe-area-inset-top));right:max(12px,env(safe-area-inset-right));height:49px;display:flex;align-items:center;gap:12px;padding:5px 10px;background:#0b3945e8;border:1px solid #d7f4df33;border-radius:15px;box-shadow:0 3px 12px #163c4633;max-width:610px;margin:0 auto}.scorebox{min-width:65px}.scorebox small{display:block;font-size:9px;letter-spacing:1px;color:#a8cbbd}.scorebox strong{font-size:23px;line-height:1.1;font-variant-numeric:tabular-nums}.goal{flex:1}.goal>div:first-child{display:flex;justify-content:space-between;font-size:12px;gap:10px}.track{height:4px;background:#082d35;border-radius:3px;overflow:hidden;margin-top:4px}.track i{display:block;height:100%;background:#d2efa1;width:0}.substats{display:flex;justify-content:space-between;font-size:9px;color:#bad4c9;margin-top:3px}#hearts{color:#ffa98c;letter-spacing:3px}.icon{width:40px;height:40px;flex-shrink:0;border:0;border-radius:10px;background:#ffffff0e;color:#e3f3e6;font-size:21px}.field{position:absolute;inset:0;isolation:isolate;overflow:hidden}.scene{position:absolute;inset:0;background:center/100% 100% no-repeat;z-index:-2}.scene:after{content:'';position:absolute;inset:0;background:linear-gradient(#08354130,transparent 30%,transparent 80%,#103d4922)}.location{position:absolute;top:16px;left:max(16px,env(safe-area-inset-left));font-size:10px;letter-spacing:1.5px;font-weight:850;text-shadow:0 2px 5px #16383c}.spot{position:absolute;transform:translate(-50%,-50%);z-index:2;border:1px solid #ffffffa0;border-radius:11px;color:white;background:#123e4bbd;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:44px;min-height:42px;padding:3px 7px;box-shadow:0 3px 9px #173e4330;touch-action:manipulation}.spot b{font-size:14px;letter-spacing:1px}.spot small{font-size:9px;letter-spacing:.7px;margin-top:2px}.runway{left:50%;width:72%;height:12%;border:1px dashed #fff8;background:#163c4b25;flex-direction:row;justify-content:flex-start;gap:8px;padding:0 14px}.runway b{font-size:11px}.runway span{font-size:23px}.runway small{margin-left:auto;font-size:14px}.landing{top:23%;color:#e5ffe9}.departure{top:79%;color:#fff0bc}.gate{top:46%;width:7.5%;height:12%;border:2px solid var(--c);background:color-mix(in srgb,var(--c) 45%,#123c46)}.gate[data-gate='0']{left:39%;--c:#54ddcc}.gate[data-gate='1']{left:55%;--c:#ffac94}.gate[data-gate='2']{left:71%;--c:#f5d979}.fuel{left:40%;top:66%;width:7.5%;height:11%;background:#556d3de8;border-color:#d7eda0}.repair{left:64%;top:66%;width:7.5%;height:11%;background:#586493eb;border-color:#cfd7ff}.repair b{font-size:22px}.holding{left:92%;width:7%;height:11%;background:#294e64cc;border:1px dashed #e8f7ff}.holding[data-hold='0']{top:35%}.holding[data-hold='1']{top:51%}.holding[data-hold='2']{top:67%}.spot.available{border-color:white;box-shadow:0 0 0 3px #edffbc44,0 0 14px #f2ffbb66}.spot.busy{opacity:.7}.lesson-target{z-index:25!important;outline:3px solid #fff39f!important;outline-offset:4px;animation:lessonPulse 1s infinite}.plane{position:absolute;width:clamp(52px,8vw,82px);height:clamp(48px,15vh,70px);border:0;background:transparent;padding:0;z-index:5;transform:translate(-50%,-50%);touch-action:manipulation}.plane img{width:100%;height:100%;object-fit:contain;pointer-events:none;will-change:transform}.plane.selected:before{content:'';position:absolute;inset:4px;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 4px #faffdb25}.plane .tag{position:absolute;bottom:-4px;left:50%;transform:translateX(-50%);white-space:nowrap;background:var(--c);color:#123940;padding:2px 5px;font-size:9px;font-weight:850;border-radius:5px;box-shadow:0 2px 4px #163e4330;max-width:122px;overflow:hidden}.patience{position:absolute;bottom:-8px;left:16px;right:16px;height:3px;background:#163e4366;border-radius:3px;overflow:hidden}.patience i{display:block;height:100%;background:var(--c)}.plane[data-mood='impatient'] .patience i{background:#ff775e}.plane.working:after{content:'';position:absolute;width:5px;height:5px;right:3px;top:14px;background:#eaffaf;border-radius:50%;box-shadow:0 0 9px #fff;animation:blink .8s infinite}.ready-mark{position:absolute;right:0;top:0;border-radius:50%;width:18px;height:18px;display:grid;place-items:center;background:#d7f39f;color:#164149;font-weight:900;font-size:12px;opacity:0;z-index:2}.ready .ready-mark{opacity:1;animation:readyPulse 2s infinite}.flight-plan{position:absolute;z-index:16;bottom:max(5px,env(safe-area-inset-bottom));left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));max-width:850px;margin:auto;background:#0e3a46ed;border:1px solid #ffffff30;border-radius:13px;padding:4px 10px;box-shadow:0 2px 12px #153b4344}.plan-head{display:flex;gap:8px;align-items:center;min-height:32px}.plan-head button{border:0;background:#ffffff0c;color:#dceddf;border-radius:7px;min-height:32px;min-width:44px;padding:4px 8px;font-size:12px}.plan-head button:disabled{opacity:.3}.plan-head small{font-size:9px;color:#b6d2c4;letter-spacing:1px;flex:1}#needs{font-size:11px;color:#f7d898}#planStops{display:flex;gap:5px;overflow-x:auto;white-space:nowrap;min-height:27px;align-items:center;font-size:11px;color:#c3ded1}.plan-stop{padding:4px 7px;border:1px solid #9ed1c344;border-radius:6px}.plan-stop.current{background:#c8eaa3;color:#1b4148}.flight-plan.collapsed #planStops,.flight-plan.collapsed footer{display:none}footer{display:flex;align-items:center;gap:5px;padding-top:3px}footer p{font-size:11px;margin:0;flex:1}#combo{font-size:12px;color:#e4f09b}#toast{position:absolute;z-index:26;left:50%;top:15%;transform:translateX(-50%);background:#103e48f0;color:#fff;font-size:12px;text-align:center;border-radius:9px;padding:7px 12px;max-width:60%;width:max-content;opacity:0;pointer-events:none;transition:opacity .15s}#toast.show{opacity:1}.intro{position:absolute;inset:0;z-index:30;background:linear-gradient(90deg,#0b3443f8,#0c3542db 48%,#0c354226);padding:clamp(16px,5vh,40px) 7%;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;overflow:auto}.eyebrow{font-size:10px;letter-spacing:2px;color:#d2eabb;font-weight:800}h1{font-size:clamp(24px,6vh,46px);line-height:1.02;letter-spacing:-1px;margin:10px 0 14px}.map-label{font-size:12px;color:#cce6d7;margin-bottom:6px}select{width:300px;max-width:85%;padding:9px 12px;border:1px solid #adcbbc66;border-radius:10px;color:#f0f7ed;background:#23515c;font-size:14px}.instructions{display:none}.start-actions{display:flex;gap:12px;align-items:center;margin-top:15px}.primary{border:0;border-radius:12px;padding:13px 18px;background:linear-gradient(#ddf7ad,#bde794);color:#183d42;font-size:15px;font-weight:800;box-shadow:0 3px 0 #789f66;min-height:44px}.tutorial-button{background:#ffffff10;border:1px solid #d1e7c85c;color:#e4f2e6;border-radius:12px;padding:12px 14px;min-height:44px;font-size:14px}.intro>small{font-size:10px;color:#a5c5b5;margin-top:12px}.overlay{position:absolute;inset:0;z-index:35;background:#082d40a8;backdrop-filter:blur(7px);padding:12px;display:grid;place-items:center;overflow:auto}.modal{width:min(90%,620px);max-height:100%;overflow:auto;padding:18px 24px;background:#103d49f5;border:1px solid #fff3;border-radius:20px;text-align:center}.modal h2{font-size:26px;line-height:1.1;margin:10px 0}.modal p{font-size:13px;color:#c6ded1;line-height:1.4;margin:9px 0}.secondary{display:inline-block;border:0;background:transparent;padding:9px 10px;color:#d3e9df;font-size:13px;min-height:36px}#result{font-size:25px;color:#eaf1ad;margin:8px 0}.best{font-size:10px!important;letter-spacing:1px;display:inline-block;margin:6px 10px!important}details{font-size:11px;color:#a4c4bd;margin-top:6px}details p{font-size:11px!important}a{color:#d6f1b9}.tutorial-panel{position:absolute;z-index:24;left:25%;right:22%;top:32%;display:flex;gap:8px;align-items:center;background:#153e4aef;border:1px solid #fff3;border-radius:12px;padding:10px 12px;box-shadow:0 4px 20px #10354155}.tutorial-panel small{font-size:9px;letter-spacing:1px;color:#d8edac}.tutorial-panel p{font-size:12px;line-height:1.3;margin:4px 0 0}.tutorial-panel button{border:0;background:transparent;color:#d1e3d5;padding:8px;min-height:36px}.tutorial-panel div{flex:1}.rotate-gate{position:fixed;inset:0;z-index:100;background:radial-gradient(ellipse at top,#296671,#0c3542);display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:30px}.rotate-gate h2{font-size:27px;letter-spacing:-.5px}.rotate-gate p{font-size:15px;line-height:1.6;color:#c5ded1}.rotate-icon{font-size:65px;color:#d2f0aa}.hidden{display:none!important}.float{position:absolute;z-index:27;font-size:21px;font-weight:900;color:#fff7bd;text-shadow:0 2px 6px #164249;animation:rise 1.4s forwards;pointer-events:none}.confetti{position:absolute;z-index:27;width:5px;height:8px;border-radius:1px;pointer-events:none;animation:confetti 1.2s ease-out forwards}@keyframes confetti{to{transform:translate(var(--dx),var(--dy)) rotate(220deg);opacity:0}}@keyframes rise{to{transform:translateY(-50px);opacity:0}}@keyframes blink{50%{opacity:.3}}@keyframes readyPulse{50%{box-shadow:0 0 0 5px #d7f39f22}}@keyframes lessonPulse{50%{outline-offset:7px}}@media(max-height:360px){.dashboard{height:42px;top:4px;max-width:530px}.icon{height:34px;width:36px}.scorebox strong{font-size:20px}.scorebox small{font-size:8px}.substats{font-size:8px}.plane{width:50px;height:46px}.plane .tag{font-size:8px}.spot{min-height:34px;min-width:40px}.spot small{font-size:8px}.spot b{font-size:12px}.flight-plan{bottom:3px}.plan-head{min-height:28px}.plan-head button{min-height:28px}.location{display:none}.tutorial-panel{top:30%;padding:7px 9px}.tutorial-panel p{font-size:11px}.intro{padding:15px 6%}.intro h1{margin:7px 0;font-size:28px}.intro>small{margin-top:8px}}@media(orientation:portrait){.rotate-gate{display:flex}#app>.dashboard,#app>.flight-plan{visibility:hidden}}@media(prefers-reduced-motion:reduce){.spot,.ready-mark,.lesson-target{animation:none!important}.confetti{display:none}}
.scene{top:12%}.gate{width:6%;}.holding{width:6%}.fuel,.repair{width:6%}.tutorial-panel{top:30%;left:22%;right:21%}.plane img{transform-origin:center}

/* Home Screen onboarding is usable in either orientation, including short Safari viewports. */
.install-gate{position:fixed;inset:0;z-index:110;overflow:auto;overscroll-behavior:contain;background:radial-gradient(ellipse at top,#246b73,#0c303b 75%);color:#effaf4;padding:max(20px,env(safe-area-inset-top)) max(22px,env(safe-area-inset-right)) max(24px,env(safe-area-inset-bottom)) max(22px,env(safe-area-inset-left));box-sizing:border-box;touch-action:pan-y}
.install-card{max-width:720px;margin:0 auto;padding:18px 0}.install-heading{display:flex;gap:18px;align-items:center}.install-heading img{width:80px;height:80px;border-radius:22px;box-shadow:0 8px 25px #001c2540}.install-heading h1{font-size:clamp(25px,4vw,38px);line-height:1.1;margin:8px 0}.install-card p,.install-card li{font-size:16px;line-height:1.5}.install-card ol{padding-left:25px;margin:20px 0}.install-card li{padding:0 0 12px 7px}.install-card li::marker{color:#d9f49b;font-weight:800}.install-note{border-top:1px solid #ffffff25;padding-top:16px;color:#c4dcda}.install-card a{color:#d9f49b;display:inline-block;padding:10px 0}.install-gate.hidden{display:none!important}
@media(orientation:landscape) and (max-height:500px){.install-card{max-width:840px;padding:0}.install-heading img{width:56px;height:56px;border-radius:16px}.install-heading h1{font-size:26px}.install-heading h1 br{display:none}.install-card ol{columns:2;column-gap:35px}.install-card li{break-inside:avoid;font-size:14px}.install-card p{font-size:14px;margin:10px 0}.install-note{padding-top:8px}}

/* One header layout owns the airport name and all controls: no independent overlap. */
.dashboard{max-width:900px;height:49px;gap:10px}.airport-name{width:105px;flex-shrink:0;padding-right:10px;border-right:1px solid #d7f4df26}.airport-name small{display:block;font-size:8px;letter-spacing:1.5px;color:#a8cbbd;margin-bottom:3px}.airport-name strong{display:block;font-size:11px;letter-spacing:1px;line-height:1.15}.gate small{font-size:8px;letter-spacing:0}.plane .tag{max-width:145px}#needs:empty{display:none}#app[data-mode='intro'] .dashboard,#app[data-mode='intro'] .flight-plan,#app[data-mode='paused'] .flight-plan,#app[data-mode='ended'] .flight-plan{visibility:hidden}
#ambience{position:absolute;inset:0;pointer-events:none;z-index:3}.sky-bird{position:absolute;width:16px;height:9px;opacity:0;filter:drop-shadow(2px 5px 2px #103b4950)}.sky-bird i,.sky-bird b{position:absolute;top:3px;width:9px;height:3px;background:#fff5d9;border-radius:80% 80% 10% 10%;animation:wing .8s ease-in-out infinite alternate}.sky-bird i{right:50%;transform-origin:right center}.sky-bird b{left:50%;transform-origin:left center;animation-name:wingRight}.service-life{display:none;position:absolute;left:-10px;bottom:16px;width:30px;height:20px;pointer-events:none}.boarding .service-life,.fueling .service-life,.repairing .service-life{display:block}.firework{position:absolute;z-index:27;width:4px;height:4px;border-radius:50%;pointer-events:none;box-shadow:0 0 6px currentColor;animation:burst 1.1s ease-out both}#app:not([data-mode='playing']) .sky-bird i,#app:not([data-mode='playing']) .sky-bird b,#app:not([data-mode='playing']) .plane *{animation-play-state:paused}
@keyframes wing{from{transform:rotate(25deg)}to{transform:rotate(-25deg)}}@keyframes wingRight{from{transform:rotate(-25deg)}to{transform:rotate(25deg)}}@keyframes passenger{0%{transform:translate(-9px,2px);opacity:0}20%{opacity:1}85%{opacity:1}100%{transform:translate(22px,-2px);opacity:0}}@keyframes bubble{0%{transform:translate(0,8px);opacity:0}30%{opacity:1}100%{transform:translate(8px,-15px);opacity:0}}@keyframes spark{0%{transform:translate(5px,10px);opacity:0}20%{opacity:1}100%{transform:translate(-10px,-15px);opacity:0}}@keyframes burst{0%{transform:scale(.4);opacity:0}10%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(.3);opacity:0}}
@media(max-width:740px){.dashboard{gap:6px;padding:5px 8px}.airport-name{width:83px;padding-right:5px}.airport-name strong{font-size:9px}.scorebox{min-width:53px}.icon{width:35px}.goal>div:first-child{font-size:11px}.plan-head small{letter-spacing:0}}
@media(max-height:360px){.dashboard{height:42px;max-width:850px}.airport-name small{font-size:7px}.airport-name strong{font-size:9px}.gate small{font-size:7px}}
@media(prefers-reduced-motion:reduce){.sky-bird,.firework,.service-life{display:none!important}.plane:after{animation:none!important}}
/* Routes live on the playfield; no expandable panel can cover a runway. */
#routeLayer{position:absolute;inset:0;z-index:6;pointer-events:none}#routeLayer svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;z-index:-1}#routeLayer polyline{fill:none;stroke-width:.32;stroke-dasharray:1 1;opacity:.7;vector-effect:non-scaling-stroke;stroke-width:2px}.route-number{position:absolute;transform:translate(-50%,-50%);width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:var(--c,#daf1a7);color:#153d49;border:2px solid white;font-size:13px;font-weight:900;box-shadow:0 2px 6px #12384566}.route-number.current{background:#fff9cf}.route-tools{position:absolute;z-index:22;right:max(14px,env(safe-area-inset-right));bottom:max(8px,env(safe-area-inset-bottom));display:flex;gap:6px}.route-tools button{width:42px;height:40px;border:1px solid #ffffff60;border-radius:12px;background:#103e48e8;color:#e6f7ce;font-size:24px}.route-tools button:disabled{opacity:.35}.tap-confirm{position:absolute;z-index:28;transform:translate(-50%,-50%);width:40px;height:40px;display:grid;place-items:center;border:2px solid #f2ffb7;border-radius:50%;color:#f2ffb7;background:#1b5b6166;pointer-events:none;animation:tapConfirm .5s ease-out forwards}.helipad{left:75%;top:64%;width:8%;height:15%;border:2px solid #eee8ff;border-radius:50%;background:radial-gradient(#687a8ce8,#303f54e8);box-shadow:0 0 0 4px #cabce645,0 6px 12px #15313b44}.helipad b{font-size:23px;border:1px solid #fff9;border-radius:50%;width:33px;height:33px;line-height:31px;text-align:center}.helipad small{font-size:7px;letter-spacing:.3px}.helicopter img{filter:drop-shadow(0 5px 3px #123a4466)}.helicopter:not(.working) img{animation:heliHover 1.2s ease-in-out infinite alternate}.update-status{position:fixed;z-index:120;bottom:max(8px,env(safe-area-inset-bottom));left:50%;transform:translateX(-50%);background:#103e48f5;color:#eaf8d6;border:1px solid #d7ecb56b;border-radius:12px;padding:9px 15px;font-size:12px;max-width:75%;text-align:center}.overlay:not(.hidden){animation:resultIn .7s ease-out}.plane .tag{font-size:9px}.tutorial-panel{top:32%;left:24%;right:26%}
@keyframes tapConfirm{to{transform:translate(-50%,-50%) scale(1.6);opacity:0}}@keyframes heliHover{from{translate:0 -1px}to{translate:0 2px}}@keyframes resultIn{from{opacity:0}to{opacity:1}}
@media(prefers-reduced-motion:reduce){.tap-confirm,.overlay,.helicopter img{animation:none!important}}

.route-tools{left:16%;right:auto;top:39%;bottom:auto;flex-direction:column}.route-number.current{animation:readyPulse 1.2s infinite}.route-tools button:active{transform:scale(.92)}

.pace-label{font-size:12px;margin:8px 0 4px;color:#cce6d7}#pace{padding:5px 10px;font-size:12px;width:180px}.intro h1{margin-bottom:10px}@media(max-height:390px){.intro h1{font-size:25px;margin:6px 0}.start-actions{margin-top:9px}.intro>small{margin-top:6px}}

.extra-runway{left:57%;width:74%;height:7%;min-height:30px}.runway-expansion{position:absolute;left:20%;width:74%;height:6%;transform:translateY(-50%);display:grid;place-items:center;z-index:2;background:repeating-linear-gradient(135deg,#8c703aa8 0 12px,#463e32ba 12px 24px);border:1px dashed #e7c88f;border-radius:7px;font-size:10px;font-weight:800;letter-spacing:1px;color:#fff3d2;pointer-events:none}

#progressNote{max-width:480px;line-height:1.4}#installHelp{padding:4px 0;min-height:28px;font-size:11px}.install-card .secondary{margin:8px;color:#effaf4}.install-card #installDocs{display:block}
/* Date build: a fixed-ratio desktop stage and a tutorial dock outside play space. */
:root{--lesson-height:96px}body{display:grid;place-items:center;min-height:100dvh}
#app[data-device='desktop']{width:min(100vw,216dvh,1600px);height:min(100dvh,46.2963vw,740.74px);box-shadow:0 18px 70px #021e2ccc;border:1px solid #ffffff18;border-radius:14px}
#app[data-device='desktop'] .dashboard{max-width:1150px;height:clamp(49px,7vh,66px)}
#app[data-device='desktop'] .airport-name{width:140px}#app[data-device='desktop'] .airport-name strong{font-size:14px}#app[data-device='desktop'] .airport-name small{font-size:10px}
#app[data-device='desktop'] .spot b{font-size:clamp(14px,1.3vw,19px)}#app[data-device='desktop'] .spot small{font-size:clamp(9px,.9vw,13px)}
#app[data-device='desktop'] .plane{width:clamp(56px,7vw,100px);height:clamp(52px,6vw,90px)}#app[data-device='desktop'] .plane .tag{font-size:clamp(9px,.85vw,12px)}
#app[data-device='desktop'] .spot:hover{outline:2px solid #f7ffd499;outline-offset:2px}#app[data-device='desktop']>.dashboard{visibility:visible}
#app[data-device='desktop'][data-mode='intro']>.dashboard{visibility:hidden}
#app[data-device='mobile'] .desktop-help{display:none}
#app[data-tutorial='true'] .dashboard{display:none}#app[data-tutorial='true'] #toast{top:2%;max-width:85%}
.tutorial-panel{position:fixed;inset:auto 0 0;height:var(--lesson-height);border-radius:0;border-width:1px 0 0;padding:10px max(18px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(18px,env(safe-area-inset-left));background:#0b3442;box-shadow:0 -4px 18px #082d4033;z-index:40;gap:14px;overflow:auto}
.tutorial-panel>div{max-width:1000px;margin:auto}.tutorial-panel h2{font-size:17px;margin:3px 0}.tutorial-panel p{font-size:13px;line-height:1.35;margin:3px 0;max-width:850px}.tutorial-panel small{font-size:10px}.tutorial-panel button{flex-shrink:0;border:1px solid #bedcce66;border-radius:9px;min-height:40px;padding:7px 10px}
#weatherCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none}
.scene{transition:filter 8s ease}#app[data-light='dusk'] .scene{filter:brightness(.84) saturate(1.13) sepia(.12)}#app[data-light='night'] .scene{filter:brightness(.56) saturate(.76)}
#app[data-weather='storm'] .scene:after{background:linear-gradient(#17384e44,#17384e22)}#app[data-weather='snow'] .scene:after{background:linear-gradient(#e2f3fa22,transparent)}
.weather-status{color:#d1e4bb!important;font-size:12px!important}.landing-puff{position:absolute;width:28px;height:10px;border-radius:50%;background:#fff7d9aa;pointer-events:none;z-index:4;transform:translate(-50%,-50%);animation:touchdown .7s ease-out forwards}.just-ready .ready-mark{animation:serviceDone .7s ease-out}
@keyframes touchdown{to{transform:translate(-50%,-50%) scale(2.5);opacity:0}}@keyframes serviceDone{0%{transform:scale(.4)}60%{transform:scale(1.4)}100%{transform:scale(1)}}
@media(max-height:400px){:root{--lesson-height:88px}.tutorial-panel{gap:8px;padding-top:6px;padding-bottom:6px}.tutorial-panel h2{font-size:14px;margin:1px 0}.tutorial-panel p{font-size:12px}.tutorial-panel small{font-size:9px}.tutorial-panel button{font-size:12px;min-height:34px}.intro{justify-content:flex-start;padding-top:12px;padding-bottom:12px}.intro h1{font-size:23px}#installHelp{padding:2px 0}}
@media(prefers-reduced-motion:reduce){.scene{transition:none}.landing-puff{display:none}.just-ready .ready-mark{animation:none}}

#app[data-tutorial='true'] .route-tools{display:none}

/* Tutorial uses the normal-sized airport. Only the unused scoreboard area changes. */
.tutorial-panel{position:absolute;inset:4px max(12px,env(safe-area-inset-right)) auto max(12px,env(safe-area-inset-left));height:clamp(44px,14vh,56px);padding:4px 9px;gap:8px;border:1px solid #ffffff44;border-radius:12px;overflow:hidden;background:#0b3442f5}
.tutorial-panel>div{min-width:0;margin:0;max-width:none}.tutorial-panel small{display:inline;font-size:9px;letter-spacing:.5px}.tutorial-panel h2{display:inline;font-size:13px;margin:0 0 0 8px}.tutorial-panel p{font-size:11px;line-height:1.2;margin:3px 0 0}.tutorial-panel button{font-size:12px;min-height:36px;padding:5px 10px}
#skipTutorial,.exit-tutorial{background:#ffd2b6;color:#422d29;font-weight:800;border:1px solid #ffe8d8}
.exit-tutorial{position:absolute;right:max(14px,env(safe-area-inset-right));top:max(8px,env(safe-area-inset-top));padding:10px 14px;border-radius:10px;z-index:50;min-height:40px;font-size:14px}
#app[data-mode='playing']>.exit-tutorial{display:none}#app[data-tutorial='true'] .runway{height:10%}#app[data-tutorial='true'] #toast{top:31%;max-width:70%}
#musicStatus{color:#f4deab;letter-spacing:0;font-size:10px}.icon:disabled{opacity:.45;cursor:wait}.tip-card{position:absolute;left:50%;bottom:1.5%;transform:translateX(-50%);z-index:23;display:flex;gap:8px;align-items:center;width:max-content;max-width:88%;height:32px;padding:3px 4px 3px 10px;background:#0b3442ee;border:1px solid #dcf2c34d;border-radius:9px;color:#e9f2dd;box-shadow:0 2px 10px #082d4033;font-size:11px;pointer-events:auto}.tip-card button{flex-shrink:0;width:30px;height:28px;border:0;border-radius:6px;background:#ffffff15;color:white;font-size:21px}.tip-card span{line-height:1.15}
.anger-mark{display:none;position:absolute;right:0;top:-4px;width:22px;height:22px;line-height:20px;border-radius:50%;background:#cf4039;color:#fff;border:2px solid #ffd4bf;font-size:16px;font-weight:900;box-shadow:0 0 9px #ff4b3d99}.plane[data-mood='impatient'] .anger-mark{display:block}.plane[data-mood='impatient']:after{content:'';position:absolute;inset:3px;border-radius:50%;box-shadow:0 0 12px 3px #e8494277;pointer-events:none;animation:angryPulse 1.6s ease-in-out infinite}.plane[data-mood='impatient'] .ready-mark{display:none}@keyframes angryPulse{50%{box-shadow:0 0 16px 5px #e8494244}}
@media(max-height:360px){.tutorial-panel{top:0;padding:3px 7px}.tutorial-panel h2{font-size:12px}.tutorial-panel p{font-size:10px}.tutorial-panel button{padding:4px 7px}.tutorial-panel small{font-size:8px}}
@media(prefers-reduced-motion:reduce){.plane[data-mood='impatient']:after{animation:none}}

.exit-tutorial{z-index:105}

.substats{gap:3px}#musicStatus{font-size:9px;text-align:center;min-width:0}#flightCount{flex-shrink:0}

.secret-trigger{background:transparent;border:0;color:inherit;cursor:pointer;padding:6px 12px;font:inherit;letter-spacing:.2em;font-size:12px;font-weight:700}.secret-trigger:focus-visible{outline:2px solid #dafaab}
#guestDialog{border:1px solid #8ac8c5;border-radius:22px;padding:16px;background:#103f48;color:#fff;width:min(760px,90vw);max-height:85dvh;box-sizing:border-box;overflow:auto}
#guestDialog[open]{display:flex;align-items:center;gap:20px}#guestDialog::backdrop{background:#001d28d9}#guestDialog img{width:45%;max-height:70dvh;object-fit:contain;border-radius:16px}#guestDialog .guest-copy{flex:1}#guestDialog h2{font-size:clamp(20px,4vw,34px);line-height:1.1;margin:12px 0}#guestDialog p{font-size:14px}#guestDialog button.primary{font-size:15px;padding:12px 18px}
@media(orientation:portrait){#guestDialog[open]{flex-direction:column-reverse}#guestDialog img{width:65%;max-height:40dvh}}

/* Dedicated control rail and glass surfaces, 2026-10-09 Build 4. */
#app{--hud-height:48px;--hud-top:max(6px,env(safe-area-inset-top));--field-top:calc(var(--hud-top) + var(--hud-height) + 8px)}
#app .field{top:var(--field-top)}
#app[data-mode='intro'] .field,#app[data-tutorial='true'] .field{top:0}
#app .dashboard{top:var(--hud-top);height:var(--hud-height);max-width:1100px;gap:10px;padding:4px 8px 4px 14px;border-radius:20px;background:linear-gradient(145deg,#507b80d9,#123e4ce8);border:1px solid #e6ffff60;box-shadow:inset 0 1px 0 #ffffff66,inset 0 -1px 0 #001e3544,0 5px 18px #001f363d;backdrop-filter:blur(20px) saturate(150%);-webkit-backdrop-filter:blur(20px) saturate(150%)}
#app .airport-name{width:120px;padding-right:10px}#app .airport-name small{font-size:7px;letter-spacing:1.6px;color:#d1e6e6}#app .airport-name strong{font-size:11px;letter-spacing:.8px}
#app .scorebox{min-width:66px}#app .scorebox small{font-size:8px;color:#d1e6e6}#app .scorebox strong{font-size:23px}
#app .goal{min-width:0}#app .goal>div:first-child{font-size:12px}#app .icon{width:40px;height:40px;border-radius:14px;font-size:21px;background:linear-gradient(#ffffff25,#ffffff09);border:1px solid #ffffff32;box-shadow:inset 0 1px 0 #ffffff30;color:#f5ffff}
#app .icon:active{background:#ffffff30;transform:scale(.96)}
#app[data-mode='paused']>.dashboard,#app[data-mode='ended']>.dashboard{visibility:hidden;pointer-events:none}
#app>.overlay{z-index:40;padding:max(12px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(12px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left));background:#092b3c88;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);animation:none}
#app>.overlay .modal{width:min(760px,94%);max-height:100%;padding:16px 22px;border-radius:26px;background:linear-gradient(145deg,#416773ed,#163c4cf5);border:1px solid #e1ffff55;box-shadow:inset 0 1px 0 #ffffff50,0 16px 50px #00152466;overscroll-behavior:contain;scrollbar-width:thin}
.modal .secondary{border:1px solid #ffffff25;background:#ffffff09;border-radius:12px;margin:3px;min-height:40px}.modal h2{font-size:clamp(23px,5vh,32px)}.modal .secret-trigger{color:#dceebe;min-height:36px}.modal select{background:#ffffff18;border-color:#ffffff40}.modal select option{background:#234957;color:white}
@media(max-width:740px){#app .dashboard{gap:6px;padding-left:9px}#app .airport-name{width:94px}#app .airport-name strong{font-size:9px}#app .scorebox{min-width:52px}#app .scorebox strong{font-size:21px}}
@media(max-height:360px){#app{--hud-height:44px;--hud-top:max(3px,env(safe-area-inset-top));--field-top:calc(var(--hud-top) + var(--hud-height) + 5px)}#app .icon{height:36px;width:36px}#app>.overlay .modal{padding:10px 16px}.modal h2{margin:5px 0}.modal p{margin:6px 0}}
@media(prefers-reduced-transparency:reduce){#app .dashboard,#app>.overlay .modal{background:#204b59;backdrop-filter:none;-webkit-backdrop-filter:none}}

/* Allow menu scrolling without browser pinch or double-tap zoom. */
html,body{touch-action:pan-x pan-y}#app,#installGate{touch-action:pan-x pan-y}#app button,#app select,#installGate button{touch-action:pan-x pan-y}
@media(pointer:coarse){select,input,textarea{font-size:16px!important}}

/* Floating HUD: the airport always occupies the complete stage. */
#app .field{inset:0}
#app .dashboard{top:max(5px,env(safe-area-inset-top));height:44px;max-width:none;gap:7px;padding:0;background:none;border:0;border-radius:0;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;pointer-events:none}
#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{pointer-events:auto;background:linear-gradient(145deg,#416c78cc,#103944db);border:1px solid #e6ffff55;box-shadow:inset 0 1px 0 #ffffff45,0 3px 10px #001e3433;backdrop-filter:blur(14px) saturate(140%);-webkit-backdrop-filter:blur(14px) saturate(140%);border-radius:16px;height:44px}
#app .dashboard>.airport-name{width:116px;padding:7px 11px}#app .dashboard>.scorebox{padding:4px 11px;min-width:72px}#app .dashboard>.goal{flex:0 1 280px;padding:5px 11px;margin-left:auto;margin-right:auto}#app .dashboard>.icon{width:44px;flex-shrink:0;border-radius:50%}
#app .dashboard .goal>div:first-child{font-size:11px}#app .dashboard .track{margin-top:3px;height:3px}#app .dashboard .substats{font-size:8px;margin-top:2px}#app .dashboard .scorebox strong{font-size:21px}#app .dashboard .airport-name small{font-size:7px;margin-bottom:3px}
@media(max-width:740px){#app .dashboard{gap:5px}#app .dashboard>.airport-name{width:92px;padding:7px 8px}#app .dashboard>.scorebox{min-width:59px;padding:4px 8px}#app .dashboard>.goal{flex-basis:220px;padding:5px 8px}}
@media(prefers-reduced-transparency:reduce){#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background:#204b59;backdrop-filter:none;-webkit-backdrop-filter:none}}

.modal .reset-game{color:#ffd2c5;border-color:#ffbaaa55}

/* Extend the map's top scenery behind the HUD without moving airport hit targets. */
#app:not([data-map='mesa']) .scene:before{content:'';position:absolute;left:0;right:0;top:-13.636364%;height:13.636364%;background-image:inherit;background-size:100% 733.3333%;background-position:center top;background-repeat:no-repeat;transform:scaleY(-1)}
#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background:linear-gradient(145deg,#ffffff28,#12334245);border-color:#ffffff70;box-shadow:inset 0 1px 0 #ffffff80,inset 0 -1px 0 #ffffff18,0 3px 12px #001b2c38;backdrop-filter:blur(10px) saturate(125%);-webkit-backdrop-filter:blur(10px) saturate(125%);text-shadow:0 1px 3px #001a2de6}
#app .dashboard small,#app .dashboard .substats{color:#f0ffff}
#app>.overlay .modal{width:min(900px,96%);padding:10px 16px;overflow:visible;position:relative}
.modal .secret-trigger{min-height:26px;padding:3px 10px;font-size:10px}.modal h2{font-size:23px;margin:3px 0 9px}.modal #modalText{font-size:11px;line-height:1.2;margin:4px 0 8px}#app[data-mode='paused'] #modalText{display:none}.modal #result:empty{display:none}
.pause-actions{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.modal .pause-actions button{margin:0;min-height:38px;padding:6px 8px;font-size:12px;line-height:1.15;border-radius:12px}.modal .pause-actions .primary{box-shadow:0 2px 0 #789f66}.modal #weatherStatus{display:inline-block;font-size:10px;margin:7px 12px 4px}.modal .best{font-size:10px!important;margin:4px!important}.modal #nowPlaying{display:none}.modal details{display:inline-block;margin:3px 12px;font-size:10px}.modal details[open]>p{position:absolute;left:12px;right:12px;bottom:28px;z-index:3;background:#163947;border:1px solid #bfe9ef66;border-radius:12px;padding:12px;max-height:170px;overflow:auto;text-align:left;box-shadow:0 8px 25px #001b2c99}
@media(max-height:360px){#app>.overlay{padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left))}#app>.overlay .modal{padding:7px 12px}.modal h2{font-size:20px;margin:2px 0 5px}.modal .pause-actions button{min-height:34px;font-size:11px}.pause-actions{gap:4px}.modal #weatherStatus{margin:4px 8px 2px}}
@media(prefers-reduced-transparency:reduce){#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background:#204b59;backdrop-filter:none;-webkit-backdrop-filter:none}}

/* Impatience is expressed by the face, not flashing warnings. */
.plane[data-mood='impatient']:after{display:none}.plane[data-mood='impatient'] .anger-mark{display:block;position:absolute;left:27%;right:auto;top:35%;width:52%;height:35%;border:0;border-radius:50%;background:radial-gradient(ellipse,#f45a50aa,transparent 72%);box-shadow:none;opacity:var(--blush,.2);z-index:1;pointer-events:none;mix-blend-mode:multiply;animation:none}

/* Pads share the aircraft's exact stopping position; labels stay above the sprite. */
#app .gate,#app .fuel,#app .repair,#app .holding{width:9%;height:13%;background:#173f4a30;border:2px solid #e1f5e199;box-shadow:inset 0 0 0 4px #ffffff0b,0 2px 8px #08273533;border-radius:14px;overflow:visible}
#app .gate{border-color:var(--c);background:color-mix(in srgb,var(--c) 12%,transparent)}
#app .holding{width:8%;height:12%;border-style:dashed}
#app .gate>b,#app .fuel>b,#app .repair>b{position:absolute;top:-19px;left:6px;font-size:12px;line-height:18px;background:#153b48e8;border:1px solid #ffffff55;border-radius:6px;padding:0 6px;text-shadow:0 1px 2px #001b28}
#app .gate>small,#app .fuel>small,#app .repair>small{position:absolute;top:-18px;right:3px;margin:0;font-size:8px;line-height:16px;background:#153b48e8;border-radius:5px;padding:0 3px;letter-spacing:0}
#app .gate.busy,#app .fuel.busy,#app .repair.busy,#app .holding.busy{opacity:1;background:#153c4920}
#app .helipad{width:7%;height:14%;box-shadow:0 0 0 2px #cabce630,0 4px 8px #15313b33}
.needs-badges{position:absolute;right:-8px;top:-8px;display:flex;gap:3px;z-index:4;pointer-events:none}.needs-badges>span{display:grid;place-items:center;width:21px;height:21px;font-size:13px;border-radius:7px;border:1px solid #fff8;box-shadow:0 2px 4px #001c3366;background:#f2d28e;color:#223c43}.needs-badges>.need-repair{background:#c7d2fa}.needs-badges>.scheduled{border:2px solid #a9f1c3;box-shadow:0 0 0 1px #163a40,0 2px 4px #001c3366}

/* Keep the helipad identifier outside its landing surface. */
#app .helipad{overflow:visible}#app .helipad small{position:absolute;top:-21px;left:50%;transform:translateX(-50%);margin:0;padding:3px 7px;white-space:nowrap;font-size:9px;line-height:13px;letter-spacing:.6px;border-radius:6px;color:#f5f7ff;background:#273c50ed;border:1px solid #dce6ff70}#app .helipad b{flex-shrink:0}
/* Low-cost glints limited to the water along the bottom of the coastal maps. */
#app[data-map='coral'] #ambience:after,#app[data-map='alpine'] #ambience:after{content:'';position:absolute;left:22%;right:14%;bottom:0;height:6%;pointer-events:none;opacity:.24;background:repeating-radial-gradient(ellipse at 35% 50%,transparent 0 12px,#ddffff55 14px 15px,transparent 17px 36px);background-size:170px 26px;mask-image:linear-gradient(transparent,#000);-webkit-mask-image:linear-gradient(transparent,#000);animation:waterGlints 9s linear infinite}
#app[data-map='alpine'] #ambience:after{left:38%;right:28%;height:5%;opacity:.13}#app:not([data-mode='playing']) #ambience:after{animation-play-state:paused}#app[data-light='night'] #ambience:after{opacity:.09}@keyframes waterGlints{from{background-position:0 0}to{background-position:170px 26px}}
@media(prefers-reduced-motion:reduce){#app #ambience:after{display:none}}

/* Terminal collection: etched aluminum, warm white enamel and graphite signage. */
:root{--terminal-ink:#29313a;--terminal-muted:#56616b;--terminal-line:#525b652b;--terminal-amber:#e2b052;--terminal-grain:repeating-linear-gradient(0deg,#ffffff10 0 1px,#27313a04 1px 2px)}
#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background-image:var(--terminal-grain),linear-gradient(145deg,#ffffffc2,#e0e5e982);border:1px solid #ffffffe0;box-shadow:inset 0 1px 0 #fff,inset 0 -1px 0 #58616a25,0 3px 12px #19212a33;backdrop-filter:blur(14px) saturate(70%);-webkit-backdrop-filter:blur(14px) saturate(70%);color:var(--terminal-ink);text-shadow:0 1px 0 #ffffff80}
#app .dashboard small,#app .dashboard .substats,#app .dashboard .airport-name small,#app .dashboard .scorebox small{color:#414c56}#app .dashboard #hearts{color:#b85342}#app .dashboard #musicStatus{color:#684d18}#app .dashboard .track{background:#27313a22}#app .dashboard .track i{background:#627b83}#app .dashboard .airport-name strong{letter-spacing:1.1px}
#app>.overlay{background:#141d286b;backdrop-filter:blur(16px) saturate(70%);-webkit-backdrop-filter:blur(16px) saturate(70%)}
#app>.overlay .modal,#guestDialog{background-image:var(--terminal-grain),linear-gradient(135deg,#fafaf4f5,#dce1e5ed);color:var(--terminal-ink);border:1px solid #ffffffed;box-shadow:inset 0 1px 0 white,inset 0 -1px 0 #50596755,0 18px 55px #111e3255;border-radius:20px}
.modal .secret-trigger{color:#58636a;letter-spacing:3px;border-bottom:2px solid var(--terminal-amber);border-radius:0}.modal h2{color:#27313a;letter-spacing:-.6px;font-weight:750}.modal p,.modal .best,.modal details{color:var(--terminal-muted)}
.modal .pause-actions .secondary{background-image:var(--terminal-grain),linear-gradient(#ffffffad,#e4e8eaa6);border:1px solid #87909b55;box-shadow:inset 0 1px 0 #ffffff,0 1px 2px #28313c14;color:#303b45;border-radius:9px}.modal .pause-actions .secondary:active{background:#d4dbe1;box-shadow:inset 0 2px 3px #28313c22}
.primary,.modal .pause-actions .primary{background-image:var(--terminal-grain),linear-gradient(#444f59,#29333d);color:#fffdf4;border:1px solid #17212b;box-shadow:inset 0 1px 0 #ffffff40,0 2px 0 #111d27;border-radius:9px}.primary:active{background:#253039}
.modal .pause-actions .reset-game{color:#943d34;border-color:#aa53454d}.modal select,.intro select{background:#f6f7f5e8;color:#27313a;border:1px solid #7d879b66;border-radius:8px;box-shadow:inset 0 1px 2px #25344917}.modal select option{background:#f4f5f5;color:#27313a}.modal details[open]>p{background:#f0f2f2;color:#39444e;border-color:#8b949e66}.modal a{color:#345c72}
.intro{background:linear-gradient(90deg,#eff1eff5,#edf0eecc 48%,#edf0ee08);color:#27313a}.intro .eyebrow{color:#56626d;border-left:3px solid var(--terminal-amber);padding-left:9px}.intro h1{letter-spacing:-1.2px}.intro .map-label,.intro .pace-label,.intro>small{color:#495760}.intro .tutorial-button,.intro .secondary{background:#ffffffa6;color:#303d49;border:1px solid #76839266;box-shadow:inset 0 1px 0 #fff;border-radius:9px}
#toast,.tip-card,.route-tools button{background-image:var(--terminal-grain),linear-gradient(#f7f8f3ed,#e2e7e8e8);color:#293640;border:1px solid #ffffffcc;box-shadow:0 3px 12px #16233033}.tip-card button{color:#293640;background:#26313d10}
#app .gate>b,#app .gate>small,#app .fuel>b,#app .fuel>small,#app .repair>b,#app .repair>small,#app .helipad small{background:#eff2eeeb;color:#303b44;border-color:#ffffffcc;text-shadow:none;box-shadow:0 1px 4px #17273333}
#guestDialog .eyebrow{color:#596874}
@media(prefers-reduced-transparency:reduce){#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon,#app>.overlay .modal{background:#eef0ed;backdrop-filter:none;-webkit-backdrop-filter:none}}

/* Quiet smoked glass keeps the airport, not the controls, in the foreground. */
#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background:linear-gradient(145deg,#ffffff19,#1e263b32);border:1px solid #ffffff55;box-shadow:inset 0 1px 0 #ffffff40,0 2px 8px #17212a24;backdrop-filter:blur(9px) saturate(85%);-webkit-backdrop-filter:blur(9px) saturate(85%);color:#fffef8;text-shadow:0 1px 3px #172330e6}
#app .dashboard>.airport-name{width:140px;flex:0 0 140px;padding:7px 10px}#app .dashboard .airport-name strong{white-space:nowrap;font-size:11px;letter-spacing:.65px;line-height:15px}#app .dashboard .airport-name small{font-size:7px;letter-spacing:1.3px;margin-bottom:2px}
#app .dashboard small,#app .dashboard .substats,#app .dashboard .airport-name small,#app .dashboard .scorebox small{color:#eef3f5}#app .dashboard #musicStatus{color:#ffe4ab}#app .dashboard #hearts{color:#ffc0ac}#app .dashboard .track{background:#17263038}#app .dashboard .track i{background:#e0e8df}#app .dashboard>.goal{flex-basis:245px}
#app .dashboard>.icon{border-radius:50%;background:linear-gradient(145deg,#ffffff20,#20283a38)}#app .dashboard>.icon svg{width:22px;height:22px;display:block;margin:auto;filter:drop-shadow(0 1px 2px #17233077)}#app .dashboard>.icon:active{background:#ffffff30;box-shadow:inset 0 1px 4px #19233333}
#app .gate>b,#app .gate>small,#app .fuel>b,#app .fuel>small,#app .repair>b,#app .repair>small,#app .helipad small{background:#26313f70;color:#fffef4;border:1px solid #ffffff35;box-shadow:0 1px 3px #14202b25;text-shadow:0 1px 2px #14202bdd;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}
#app>.overlay .modal,#guestDialog{background-image:var(--terminal-grain),linear-gradient(135deg,#d4d8d8e8,#aab4bce0);border-color:#ffffff88;box-shadow:inset 0 1px 0 #ffffff70,0 12px 40px #17253344}
.modal .pause-actions .secondary{background-image:var(--terminal-grain),linear-gradient(#ffffff40,#ffffff16);border-color:#3b485d40;box-shadow:inset 0 1px 0 #ffffff50,0 1px 2px #28313c12}.modal select{background:#e0e4e4b8;border-color:#3b485d55}.modal details[open]>p{background:#d4dadd}.intro{background:linear-gradient(90deg,#cbd3d7eb,#d3d8d9b0 48%,#d3d8d900)}
#toast,.tip-card,.route-tools button{background:linear-gradient(#3d475b9c,#24303eb8);color:#fffaf2;border:1px solid #ffffff40;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 2px 7px #16233025}.tip-card button{color:#fffaf2;background:#ffffff15}
@media(max-width:740px){#app .dashboard>.airport-name{width:116px;flex-basis:116px;padding:7px 8px}#app .dashboard .airport-name strong{font-size:10px;letter-spacing:.35px}#app .dashboard>.goal{flex-basis:200px}}
@media(prefers-reduced-transparency:reduce){#app .dashboard>.airport-name,#app .dashboard>.scorebox,#app .dashboard>.goal,#app .dashboard>.icon{background:#34414e;backdrop-filter:none;-webkit-backdrop-filter:none}#app>.overlay .modal{background:#c7ced2}}

/* A single symbol family and consistent utility screens. */
.maintenance-icon{display:block;width:18px;height:18px;flex:none}.need-repair .maintenance-icon{width:14px;height:14px}
.rotate-gate,.install-gate{background-image:var(--terminal-grain),radial-gradient(ellipse at 50% 25%,#586575,#26313f 75%);color:#f4f5f1}.rotate-gate{gap:12px}.rotate-icon{width:96px;height:96px;display:grid;place-items:center;color:#e7eceb;font-size:0}.rotate-icon svg{width:96px;height:96px;filter:drop-shadow(0 2px 5px #14202b44)}.rotate-gate h2{font-size:clamp(23px,5vw,30px);line-height:1.2;margin:8px 0;max-width:420px}.rotate-gate p{color:#d4dce1;font-size:15px;max-width:390px;margin:0;line-height:1.6}.install-card .eyebrow{color:#e9cd97}.install-card li::marker{color:#e9cd97}.install-card p,.install-card li,.install-note{color:#d9e1e6}.install-card a{color:#f3d9ac}.install-card .secondary{color:#f4f5f1}
.pause-groups{display:grid;grid-template-columns:1fr 1fr;gap:16px;text-align:left;margin-top:10px}.pause-groups h3{font-size:9px;letter-spacing:1.6px;color:#4d5964;margin:0 0 5px;font-weight:700}.pause-groups .pause-actions{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}.pause-groups section+section{border-left:1px solid #3b485d25;padding-left:16px}.pause-utilities{display:flex;justify-content:flex-end;align-items:center;gap:6px;border-top:1px solid #3b485d25;margin-top:10px;padding-top:5px}.modal .pause-utilities button{font-size:10px;min-height:30px;padding:5px 8px;border:0;background:transparent;box-shadow:none;margin:0}.modal .pause-utilities #checkUpdate{margin-right:auto}.modal .pause-utilities .reset-game{color:#874139}.modal #weatherStatus{color:#4d5964!important;font-size:10px!important}.modal .pause-actions button{min-height:40px;font-size:11px}
@media(max-width:740px){.pause-groups{gap:10px}.pause-groups section+section{padding-left:10px}.modal .pause-actions button{font-size:10px;padding:5px;min-height:40px}}
@media(max-height:360px){.pause-groups{margin-top:5px}.pause-utilities{margin-top:6px;padding-top:3px}.modal .pause-actions button{min-height:36px}}

.fuel-icon{display:block;width:18px;height:18px;flex:none}.need-fuel .fuel-icon{width:14px;height:14px}

.plane .tag{pointer-events:auto;cursor:pointer;min-height:24px;padding:4px 6px}#clock{font-size:10px;white-space:nowrap}

/* Lunar apron and short, telegraphed runway disruptions. */
#app[data-map='moon'] .scene:before{display:none}
#app[data-map='moon'] .scene{filter:none}
#app[data-map='moon'] .airport-name strong{font-size:10px;letter-spacing:1px}
.runway-weather{position:absolute;left:14%;width:78%;height:9%;transform:translateY(-50%);z-index:8;pointer-events:none;border:2px dashed #ffcf82;border-radius:12px;background:repeating-linear-gradient(125deg,#46352370 0 12px,#f8c46b25 12px 24px);display:flex;align-items:center;justify-content:center}
.runway-weather span{font-size:11px;font-weight:700;padding:5px 10px;border-radius:12px;background:#2c2935e8;color:#ffe2a9;text-shadow:0 1px 2px #000}
.runway-weather[data-phase='warning']{background:#ffc76b18;border-style:dotted}
.runway-weather i{position:absolute;right:6%;width:52px;height:52px;border-radius:50%;background:repeating-radial-gradient(ellipse,#ceab7c99 0 3px,transparent 5px 9px);transform:skewX(-12deg);animation:weatherSwirl 2.3s linear infinite;filter:blur(1px)}
.runway-weather[data-kind='moon'] i{background:repeating-conic-gradient(#b8a3ffa0 0deg 18deg,transparent 20deg 60deg)}
.runway-weather[data-kind='alpine'] i{background:repeating-radial-gradient(ellipse,#efffffaa 0 3px,transparent 5px 9px)}
#app:not([data-mode='playing']) .runway-weather i{animation-play-state:paused}
@keyframes weatherSwirl{to{transform:rotate(360deg) skewX(-12deg)}}
@media(prefers-reduced-motion:reduce){.runway-weather i{animation:none}}

/* Space-only costumes and scenery; no additional touch targets. */
.space-helmet{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none;transform-origin:center}
#app[data-map='moon'] .space-helmet{display:block}
#app[data-map='moon'] .sky-bird{display:none!important}

/* Tags sit outside the sprite box, including airborne scale clearance. */
.plane .tag{top:calc(100% + 7px);bottom:auto;min-height:24px;line-height:16px;padding:4px 6px;z-index:5}
.plane .patience{top:calc(100% + 34px);bottom:auto}

/* Quiet aircraft labels; preserve their independent selection target. */
.plane .tag,#app[data-device='desktop'] .plane .tag{font-size:9px;font-weight:650;letter-spacing:.1px;background:linear-gradient(145deg,#39444d8c,#18252bb8);color:#f5fafc;border:1px solid #e8f8ff40;border-radius:10px;box-shadow:inset 0 1px 0 #ffffff18,0 2px 5px #07131e30;backdrop-filter:blur(12px) saturate(125%);-webkit-backdrop-filter:blur(12px) saturate(125%);padding:3px 7px;line-height:16px;min-height:24px;text-shadow:0 1px 2px #0008}
.plane .tag:before{content:'';display:inline-block;width:5px;height:5px;border-radius:50%;background:var(--c);margin-right:5px;vertical-align:1px}
.plane.selected .tag{border-color:#e7f6ffa6;background:linear-gradient(145deg,#465862ab,#1d2d38cf)}
#app[data-map='moon'] .plane.selected:before{display:none}

#rewardBreakdown{font-size:11px;line-height:1.5;white-space:pre-line;margin:4px auto 10px;max-width:680px;color:#35434d}

#app[data-mode='ended'] .pause-groups{grid-template-columns:1fr}#app[data-mode='ended'] .pause-groups section[aria-label='Preferences'],#app[data-mode='ended'] .pause-utilities,#app[data-mode='ended'] .music-settings,#app[data-mode='ended'] #weatherStatus{display:none}

/* Small flight dispatch badge; never covers the face or service requests. */
.priority-mark{position:absolute;left:-8px;top:-12px;font-size:10px;line-height:18px;padding:0 6px;border-radius:9px;color:#ffe5a0;background:#34312bdd;border:1px solid #e5bc6266;pointer-events:none;z-index:3}
.priority-mark[hidden]{display:none}
#medalReplays{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}#medalReplays button{font-size:12px;padding:9px 12px}

/* Destination guidance remains on the apron, clear of aircraft faces. */
#app .next-destination{outline:2px solid #e4f6baaa;outline-offset:3px;box-shadow:0 0 10px #daf1a724}
#app .passengers-first>small{opacity:.5}
.need-gate{display:inline-grid;place-items:center;width:20px;height:20px;border-radius:7px;background:#263b48dd;color:#f4f9ef;border:1px solid #d3edee77;font-size:16px}.need-gate.scheduled{opacity:.45}
.plane:not(.selected) .tag{font-size:8px;padding:2px 5px}.plane.selected{z-index:7}
.route-number{pointer-events:none;width:18px;height:18px;font-size:10px;border-width:1px;background:#263b48cc;color:#fff;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}

.need-gate{width:auto;min-width:25px;padding:0 3px;font-size:8px;font-weight:700}.awaiting-passengers .need-fuel,.awaiting-passengers .need-repair{opacity:.4}

/* Aircraft annotations have separate positions: selector left, needs right, patience below. */
#app .plane .tag,#app[data-device='desktop'] .plane .tag{left:-27px;top:50%;bottom:auto;right:auto;transform:translateY(-50%);width:26px;height:30px;min-height:30px;padding:4px;line-height:1;border-radius:12px;display:grid;place-items:center;color:var(--c);font-size:0;letter-spacing:0}
#app .plane .tag:before{display:none}#app .plane .tag svg{width:18px;height:18px;display:block}
#app .plane .needs-badges{left:calc(100% + 2px);right:auto;top:50%;transform:translateY(-50%);flex-direction:column;gap:3px;width:19px}
#app .plane .needs-badges>span{width:19px;min-width:19px;height:19px;padding:2px;flex:none;border:1px solid #ecf6ff65;background:#293944b8;color:#f2f7f4;border-radius:6px;box-shadow:0 1px 3px #17283833;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
#app .plane .needs-badges>.scheduled{color:#b9e9d0;border-color:#b9e9d077;opacity:.55}
#app .plane .needs-badges>.hidden{display:none!important}
#app .needs-badges svg{display:block;width:14px;height:14px;flex:none}.gate-icon circle{fill:currentColor}
#app .plane .patience{top:calc(100% + 4px);bottom:auto;left:25%;width:50%}
#app .plane .ready-mark{right:0;top:auto;bottom:-2px;width:17px;height:17px;font-size:11px;pointer-events:none}

/* Shared passenger symbol on gates, quiet single-row aircraft guidance. */
#app .gate>b{display:flex;align-items:center;gap:5px;padding:0 5px;white-space:nowrap}#app .gate>b .gate-icon{width:15px;height:15px;display:block;flex:none}
#app .plane .needs-badges{left:50%;right:auto;top:calc(100% + 3px);transform:translateX(-50%);flex-direction:row;gap:3px;width:max-content;max-width:none;pointer-events:none}
#app .plane .needs-badges>span{width:17px;min-width:17px;height:17px;padding:2px;border-color:#ffffff44;background:#29394488;box-shadow:none}
#app .plane .needs-badges svg{width:12px;height:12px}
#app .plane .patience{top:calc(100% + 23px);height:2px}
#app .plane .tag{display:none!important}

/* Quiet state cues replace selection rings and permanent editing controls. */
#app .plane.selected:before{display:none!important}
#app .plane.selected .patience{box-shadow:0 0 0 1px #e3f3ff99}
#app .plane .ready-mark{display:none!important}
#app .plane .needs-badges>[data-status='complete']{color:#aaf0c2;border-color:#85dba477;background:#2349399c}
#app .plane .needs-badges>[data-status='queued']{color:#c0def4;border-style:dotted;border-color:#aed6f188}
#app .plane .needs-badges>[data-status='active']{color:#ffe6a1;border-color:#f2d17caa}
#app .plane .needs-badges>[data-status='missing']{color:#ffd2c9;border-color:#ff8b79;background:#713d3ac4}
#app .plane .needs-badges>.route-complete{color:#b8f1cb;border-color:#b8f1cb88;background:#294c3c9c;font-size:12px;font-weight:700}
#app #routeTools{left:max(12px,env(safe-area-inset-left));top:auto;bottom:max(9px,env(safe-area-inset-bottom));width:auto;display:flex;transform:none;gap:0;padding:0;background:none;border:0}
#app #routeTools.hidden{display:none!important}#app #routeTools #clearPlan{display:none!important}
#app #routeTools #undoPlan{width:auto;height:32px;min-height:32px;padding:6px 10px;font-size:11px;border-radius:12px;background:#27384680;color:#eff7f4;border:1px solid #ffffff40;box-shadow:none}

/* Service equipment and directional passenger movement stay beside the fuselage. */
.service-equipment{position:absolute;left:-18px;bottom:6px;width:38px;height:26px;pointer-events:none;display:none;fill:none;stroke:#e9efdd;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;filter:drop-shadow(0 1px 2px #162a39)}
.fueling .service-equipment,.repairing .service-equipment{display:block}.service-equipment .hose,.service-equipment .spanner{display:none}.fueling .service-equipment .hose{display:block;stroke:#bee6c0}.repairing .service-equipment .spanner{display:block;transform-origin:25px 13px;animation:toolTurn 1s ease-in-out infinite alternate}
@keyframes walkBoard{0%{transform:translate(-12px,-7px);opacity:0}20%{opacity:1}80%{opacity:1}100%{transform:translate(22px,3px);opacity:0}}@keyframes toolTurn{to{transform:rotate(-22deg)}}
@media(prefers-reduced-motion:reduce){.service-equipment .spanner{animation:none!important}}

/* Readable secondary controls on the brushed-glass pause panel. */
.modal .pause-utilities button{color:#25333d;background:linear-gradient(145deg,#ffffff50,#d1dce340);border:1px solid #35475255;border-radius:10px;box-shadow:inset 0 1px 0 #ffffff70;min-height:34px;font-weight:600;text-shadow:none}
.modal .pause-utilities button[aria-pressed='true']{background:#d0e5dc99;border-color:#46695e88;color:#254d3f}
.modal .pause-utilities button:focus-visible{outline:2px solid #335e7c;outline-offset:2px}
.modal .pause-utilities button:active{background:#adbecb88}
.modal .pause-utilities .reset-game{color:#793c35}

/* Selected route controls remain compact; only numbered future stops are interactive. */
#routeLayer .route-number{pointer-events:auto;cursor:pointer;width:28px;height:28px;padding:0;min-height:0;font-family:inherit;font-size:11px;font-weight:700;touch-action:manipulation;box-shadow:0 1px 5px #13202b55}
#routeLayer .route-number:disabled{pointer-events:none}
#routeLayer .route-number:focus-visible{outline:2px solid #fff;outline-offset:3px}
#app .route-target{outline:2px solid #e6f7ffbb;outline-offset:3px;animation:routeTargetPulse 1.8s ease-in-out infinite}
@keyframes routeTargetPulse{50%{outline-color:#e6f7ff55}}
#app #routeTools{gap:6px}#app #routeTools #restoreRoute{width:auto;height:32px;min-height:32px;font-size:11px;padding:6px 10px;border-radius:12px;background:#ddeadddc;color:#254235}
#app .plane .needs-badges>.wait-mark{color:#ffe5a4;border-color:#e1bf7770;font-size:13px}
#awardCelebration{margin:0;text-align:center}#awardCelebration img{display:block;width:100%;height:auto;object-fit:contain;border-radius:18px}#awardCelebration strong{display:block;font-size:19px;color:#263744}#awardCelebration figcaption span{display:block;font-size:10px;color:#485964;margin-top:5px;line-height:1.4}
#overlay[data-award='true'] .modal{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);column-gap:22px;align-content:center;width:92vw;max-width:1000px;padding:18px 22px}
#overlay[data-award='true'] .modal>*{grid-column:2;min-width:0}
#overlay[data-award='true'] #awardCelebration{grid-column:1;grid-row:1 / span 9;align-self:center;animation:awardEntrance .65s ease-out}
#overlay[data-award='true'] #awardArt{max-height:48dvh}#overlay[data-award='true'] .pause-groups{margin-top:4px}#overlay[data-award='true'] #rewardBreakdown{font-size:10px;line-height:1.35;margin:4px 0}
#overlay[data-award='true'] .modal h2{font-size:22px}#overlay[data-award='true'] .pause-groups h3{display:none}
@keyframes awardEntrance{from{opacity:0;transform:translateY(10px) scale(.96)}to{opacity:1;transform:none}}
@media(max-height:360px){#overlay[data-award='true'] .modal{padding:10px 16px;column-gap:14px}#overlay[data-award='true'] .modal h2{font-size:19px;margin:2px 0}#overlay[data-award='true'] #awardArt{max-height:43dvh}#awardCelebration strong{font-size:16px}}
@media(prefers-reduced-motion:reduce){#app .route-target,#overlay[data-award='true'] #awardCelebration{animation:none}}

/* Symmetric safe-area margins keep result and pause panels visually centered. */
#app>.overlay{padding:12px max(16px,env(safe-area-inset-left),env(safe-area-inset-right));min-width:0}
#app>.overlay .modal,#app #overlay[data-award='true'] .modal{width:100%;max-width:1000px;min-width:0;margin-inline:auto}
#app .modal #result{color:#344b59;text-shadow:none;font-weight:700;font-size:clamp(16px,2.3vw,25px)}
#resultCabinet{display:none}#app[data-mode='ended'] #resultCabinet{display:block;justify-self:center;color:#304b5c;background:#ffffff40;border:1px solid #586b7955;border-radius:9px;padding:5px 10px;font-size:11px;min-height:28px}
#openCabinet{margin-top:8px;padding:8px 14px;font-size:12px;color:#293f4f;background:#edf2f0bb;border:1px solid #5c708077;border-radius:10px}
#trophyCabinet{width:min(940px,90vw);max-height:88dvh;padding:18px;border:1px solid #e8f0f4aa;border-radius:22px;background:linear-gradient(145deg,#dae0e3f5,#bcc8cef5);color:#273d4b;box-shadow:0 15px 60px #09151a66;overflow:auto}
#trophyCabinet::backdrop{background:#142735b0;backdrop-filter:blur(12px)}#trophyCabinet header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}#trophyCabinet h2{margin:0;font-size:23px}#trophyCabinet button,#cabinetAirport{color:#293e4b;background:#edf2f080;border:1px solid #5b738166;border-radius:10px;padding:8px 12px}#cabinetAirport{margin-left:10px;font-size:13px}#cabinetGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:14px}
#cabinetGrid .trophy-card{display:flex;flex-direction:column;align-items:center;gap:7px;text-align:center;padding:12px}#cabinetGrid img{width:100%;height:115px;object-fit:contain}#cabinetGrid strong{font-size:13px}#cabinetGrid span{font-size:12px}#cabinetGrid small{font-size:11px;line-height:1.4}#cabinetGrid b{font-size:11px;margin-top:auto;color:#285771}#trophyCabinet button:focus-visible{outline:2px solid #285771;outline-offset:2px}
@media(max-width:650px){#cabinetGrid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-height:360px){#app>.overlay{padding-block:6px}#cabinetGrid img{height:85px}}
#app .station-unavailable>b,#app .station-unavailable>small{opacity:.62}#app .station-unavailable{cursor:pointer}

/* Game gestures must not invoke browser selection or image callouts. */
#app,#app *,#trophyCabinet,#trophyCabinet *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#app img,#trophyCabinet img{-webkit-user-drag:none;user-drag:none}

/* Aircraft positions use transforms; field geometry is measured on resize only. */
#app .plane,.sky-bird{left:0;top:0}
/* Tiny moving badges retain their tint and border without a separate live blur. */
#app .plane .needs-badges>span,.route-number{backdrop-filter:none;-webkit-backdrop-filter:none}
#app:not([data-mode='playing']) .spot,#app:not([data-mode='playing']) .runway-weather i,#app:not([data-mode='playing']) #particles *{animation-play-state:paused}
#app[data-battery-saver='true'] #ambience{display:none}
#app[data-battery-saver='true'] .scene{transition:none}
#app[data-battery-saver='true'] .plane *,#app[data-battery-saver='true'] .route-target{animation:none!important}
#app[data-battery-saver='true'] .dashboard>div,#app[data-battery-saver='true'] .dashboard>.icon{backdrop-filter:none;-webkit-backdrop-filter:none;background:linear-gradient(145deg,#425363c9,#243644c9)}
#app[data-battery-saver='true'] .spot>b,#app[data-battery-saver='true'] .spot>small{backdrop-filter:none;-webkit-backdrop-filter:none}
.modal .pause-utilities{flex-wrap:wrap}

#app .runway-streak{position:absolute;right:13%;top:3px;font-size:9px;line-height:15px;padding:0 5px;color:#fff;border:1px solid var(--c);border-radius:5px;background:#26313f90;pointer-events:none;text-shadow:0 1px 2px #000}

/* Selection is a small pool of light under the aircraft, never a face ring. */
.selection-glow{display:none;position:absolute;left:12%;right:12%;bottom:2px;height:9px;border-radius:50%;background:radial-gradient(ellipse,var(--c) 0%,#e8ffff85 36%,transparent 72%);pointer-events:none}
.plane.selected .selection-glow{display:block}.plane.selection-pulse .selection-glow{animation:selectionPulse .4s ease-out}
@keyframes selectionPulse{from{transform:scale(.65);opacity:.35}55%{transform:scale(1.3);opacity:1}to{transform:scale(1);opacity:1}}
@media(prefers-reduced-motion:reduce){.plane.selection-pulse .selection-glow{animation:none}}
#app[data-battery-saver='true'] .plane.selection-pulse .selection-glow{animation:none}

/* Destination feedback remains at the actual contact point. */
#app .spot:active{border-color:#fff;box-shadow:inset 0 0 0 3px #eafaff70,0 0 12px #ddf5ff55}
#app .tap-confirm{width:34px;height:34px;font-size:21px;line-height:1;border-color:#b7eddd;color:#ecfff9;background:#253e4cbb;animation:tapConfirm .65s ease-out forwards}
#app .tap-confirm.rejected{border-color:#e6a296;color:#ffe0d9;background:#623e42bb}
#routeLayer polyline{stroke-linecap:round;stroke-linejoin:round}

/* Reef life stays below the airport, outside every playable target. */
.reef-life{display:none;position:absolute;left:0;top:0;pointer-events:none}
#app[data-map='reef'] .reef-life{display:block}
.reef-mermaid{width:54px;height:36px;background:url('reef-swimmer.webp') center/contain no-repeat;opacity:.9}
.reef-fish{width:12px;height:6px;border-radius:60% 45%;background:#ffd687;opacity:.65}
.reef-fish:after{content:'';position:absolute;left:-4px;top:0;border-left:5px solid #e8a879;border-top:3px solid transparent;border-bottom:3px solid transparent}
@media(prefers-reduced-motion:reduce){#app .reef-life{display:none}}

/* One aircraft meter: service progress while working, patience while waiting. */
#app .plane.working .patience i{background:#d7e9a5}

/* Departure lounge: landscape app launch surface, with a live airport backdrop. */
#intro{padding:clamp(14px,4vh,32px) max(22px,env(safe-area-inset-right)) clamp(14px,4vh,32px) max(22px,env(safe-area-inset-left));display:grid;grid-template-columns:minmax(180px,.8fr) minmax(380px,1.35fr);align-items:center;gap:4vw;background:linear-gradient(90deg,#101e2bd4,#172c3752 75%);color:#f3f6f5;justify-content:normal}
#intro.hidden{display:none!important}.home-brand{max-width:380px;justify-self:end;width:100%}#intro .home-brand .eyebrow{border:0;padding:0;color:#d2d9d8;font-size:10px;letter-spacing:2.4px}#intro h1{font-size:clamp(24px,3.8vw,43px);line-height:1.05;margin:12px 0;letter-spacing:-1.1px}.home-plane{width:clamp(95px,14vw,185px);height:clamp(80px,23vh,150px);object-fit:contain;filter:drop-shadow(0 8px 14px #081c2955)}.home-brand p{font-size:13px;line-height:1.5;color:#d4dedd;margin:4px 0}
.departure-lounge{max-width:630px;width:100%;padding:clamp(15px,2.3vw,28px);border-radius:24px;border:1px solid #e4f1f04d;background:linear-gradient(140deg,#34434b9e,#223139a3);backdrop-filter:blur(18px) saturate(1.15);-webkit-backdrop-filter:blur(18px) saturate(1.15);box-shadow:inset 0 1px 0 #ffffff38,0 12px 36px #03121e35}.departure-lounge header{display:flex;justify-content:space-between;align-items:center;gap:8px}.home-kicker{font-size:9px;letter-spacing:2px;color:#d1dcd9}#intro .home-utility{border:0;background:transparent;color:#e4edeb;font-size:11px;min-height:32px;padding:5px}.departure-lounge h2{font-size:clamp(19px,2.2vw,28px);margin:7px 0 16px;letter-spacing:-.5px}.airport-cards{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:7px}.airport-card{min-width:0;padding:0 0 8px;border:1px solid #ffffff22;border-radius:11px;background:#15262b55;color:#eaf2ef;overflow:hidden;text-align:left;transition:border-color .15s,background .15s}.airport-card img{width:100%;height:clamp(44px,12vh,83px);object-fit:cover;display:block;opacity:.8}.airport-card span{font-size:10px;font-weight:700;display:block;padding:7px 6px 0;line-height:1.2}.airport-card small{display:block;font-size:8px;padding:4px 6px 0;color:#bfcfcb;line-height:1.2}.airport-card[aria-pressed='true']{border-color:#d3eadf;background:#a2cfb826;box-shadow:0 0 0 1px #d3eadf55}.airport-card[aria-pressed='true'] img{opacity:1}.traffic-choice{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:16px 0;color:#dfe9e5;font-size:12px}.traffic-choice>div{display:flex;gap:3px;border:1px solid #ffffff20;background:#0d202949;padding:3px;border-radius:11px}.traffic-choice button{background:none;border:0;border-radius:8px;color:#d6e3dd;min-height:34px;padding:6px 12px;font-size:11px}.traffic-choice button[aria-pressed='true']{background:#e1ede52b;box-shadow:inset 0 1px 0 #ffffff22;color:white}#intro .start-actions{display:grid;grid-template-columns:1.45fr 1fr;gap:9px;margin:0}#intro #start{background:linear-gradient(135deg,#e3ecdf,#c8d9cc);color:#203d3a;border:1px solid #f3fff278;box-shadow:inset 0 1px 0 #fff7,0 3px 8px #0d182733;font-size:15px;padding:12px;border-radius:13px;min-height:45px}#intro #tutorial{background:#ffffff0e;border:1px solid #d9e7de40;color:#edf3ef;box-shadow:none;font-size:12px;padding:8px;border-radius:13px;min-height:45px}#intro #progressNote{display:block;color:#c2d0cb;font-size:9px;line-height:1.4;margin-top:12px}#intro .home-release{color:#9dafaa;font-size:8px;letter-spacing:.6px;margin-top:9px}
#app[data-mode='intro'] .spot,#app[data-mode='intro'] #runwayExpansion,#app[data-mode='intro'] #traffic,#app[data-mode='intro'] #routeLayer{visibility:hidden}
@media(max-height:410px){#intro{padding-top:10px;padding-bottom:10px;gap:3vw}.departure-lounge{padding:13px 16px;border-radius:18px}.departure-lounge h2{margin:2px 0 10px}.airport-card small{display:none}.traffic-choice{margin:11px 0}.home-brand p{font-size:11px}.home-plane{height:80px}#intro #progressNote{margin-top:8px;font-size:8px}.home-release{margin-top:5px!important}}
@media(max-width:740px){#intro{grid-template-columns:minmax(145px,.6fr) minmax(350px,1.4fr);gap:18px;padding-left:16px;padding-right:16px}.home-brand p{display:none}.traffic-choice button{padding:6px 9px}.airport-cards{gap:4px}}
@media(prefers-reduced-motion:reduce){.airport-card{transition:none}}

/* Shared lounge surfaces: quiet glass, readable controls and compact spacing. */
:root{--lounge-panel:linear-gradient(140deg,#35434cde,#1e2d36e8);--lounge-text:#edf4f0;--lounge-muted:#bdcec7;--lounge-line:#d7e9e22e;--lounge-control:linear-gradient(145deg,#ffffff15,#ffffff08);--lounge-primary:linear-gradient(135deg,#e3ecdf,#c8d9cc)}
#app>.overlay{background:#0c1c285e;backdrop-filter:blur(12px) saturate(.9);-webkit-backdrop-filter:blur(12px) saturate(.9);padding:12px max(20px,env(safe-area-inset-left),env(safe-area-inset-right))}
#app>.overlay .modal,#app #overlay[data-award='true'] .modal{background:var(--lounge-panel);color:var(--lounge-text);border:1px solid #d9eee44f;box-shadow:inset 0 1px 0 #ffffff2e,0 18px 50px #06131e55;border-radius:23px;padding:18px 22px;max-width:920px;max-height:calc(100dvh - 24px);overflow:auto;scrollbar-width:thin;scrollbar-color:#abc8bb66 transparent}
#app .modal .secret-trigger{display:block;width:max-content;max-width:100%;border:0;border-radius:6px;padding:3px 0;min-height:20px;color:#b7cec3;font-size:9px;letter-spacing:2px;text-align:left}
#app .modal h2{color:var(--lounge-text);font-size:25px;line-height:1.1;letter-spacing:-.7px;margin:3px 0 16px;text-align:left;font-weight:750}
#app .modal p,#app .modal .best,#app .modal details{color:var(--lounge-muted)}
#app .modal .pause-groups{gap:20px;margin-top:0}#app .modal .pause-groups h3{color:#b4c9bf;font-size:9px;letter-spacing:1.6px;margin:0 0 7px}#app .modal .pause-groups section+section{border-color:var(--lounge-line);padding-left:20px}
#app .modal .pause-actions{gap:7px}#app .modal .pause-actions button,#app .modal .pause-utilities button{background:var(--lounge-control);color:var(--lounge-text);border:1px solid var(--lounge-line);box-shadow:inset 0 1px 0 #ffffff0f;border-radius:11px;font-size:11px;font-weight:550;line-height:1.25;min-height:44px;padding:8px;text-shadow:none;margin:0}
#app .modal .pause-actions .primary{background:var(--lounge-primary);border-color:#efffec77;color:#203d3a;font-weight:750;box-shadow:inset 0 1px 0 #fff7,0 3px 8px #0d182733}
#app .modal button[aria-pressed='true']{background:#9bc7af22;border-color:#b7dcc255;color:#def2e4}
#app .modal .pause-utilities{display:flex;flex-wrap:wrap;justify-content:flex-start;gap:7px;margin-top:14px;padding-top:12px;border-color:var(--lounge-line)}
#app .modal .pause-utilities button{min-height:36px;font-size:10px;padding:7px 11px}#app .modal .pause-utilities #checkUpdate{margin-right:auto}#app .modal .pause-utilities .reset-game{color:#e6b8af;background:#cf827009;border-color:#d3927b33}
#app .modal button:active{transform:translateY(1px)}#app .modal button:focus-visible,#app .modal select:focus-visible{outline:2px solid #cee9da;outline-offset:3px}
#app .modal #weatherStatus{display:inline-block!important;color:var(--lounge-muted)!important;font-size:10px!important;line-height:1.3;margin:12px 10px 7px 0}#app .modal .best{font-size:9px!important;letter-spacing:1px;margin:6px 0}#app .modal select{background:#16263080;border:1px solid #d0e4d738;color:var(--lounge-text);border-radius:10px;box-shadow:inset 0 1px 0 #ffffff12;padding:8px 12px;font-size:13px;width:min(320px,60%);max-width:75%;min-height:36px}#app .modal select option{background:#263740;color:#edf4f0}#app .modal #nowPlaying{display:none}
#app .modal details{font-size:9px;margin-top:8px}#app .modal details>summary{width:max-content;max-width:100%;margin:auto;cursor:pointer;padding:3px 8px;border-radius:7px}#app .modal details[open]>p{background:#11222c85;border:1px solid var(--lounge-line);color:#d3e1d9;border-radius:10px;padding:10px;max-height:24dvh;overflow:auto}#app .modal a{color:#c6e8dd}
/* Awards retain their artwork; text and actions use the same surface hierarchy. */
#app[data-mode='ended'] .modal #weatherStatus{display:none!important}#app[data-mode='ended'] .modal h2{text-align:center;margin-bottom:10px}#app[data-mode='ended'] .modal .secret-trigger{margin-inline:auto}#app .modal #result{color:#e2d9a4;font-size:clamp(17px,2.4vw,26px);line-height:1.3;margin:7px 0 10px}#app .modal #rewardBreakdown{color:#c6d6cd;line-height:1.5}#app #awardCelebration strong{color:#eef4ef}#app #awardCelebration figcaption span{color:#bdcec7}#app #resultCabinet{color:#d4e9dd;background:#c0dfc910;border-color:#d0e5d638;border-radius:10px;min-height:32px}#app #overlay[data-award='true'] .modal{column-gap:24px}#app[data-mode='ended'] .modal .pause-groups{margin-top:8px}#app[data-mode='ended'] .modal .pause-groups section{border:0;padding-left:0}
/* Flight-school guidance occupies the existing reserved area, not the apron. */
#app .tutorial-panel{background:linear-gradient(135deg,#33444cef,#1d303bef);color:var(--lounge-text);border-color:#d8eade50;box-shadow:inset 0 1px 0 #ffffff26,0 3px 12px #10202b33;border-radius:13px}#app .tutorial-panel h2{color:#edf5ef}#app .tutorial-panel small{color:#bed8ca}#app .tutorial-panel p{color:#d5e4db}#app .tutorial-panel button,#app .exit-tutorial{background:#ffffff12;color:#f0f5f1;border:1px solid #c7dfd345;border-radius:9px;font-weight:600}#app #skipTutorial{color:#f0cec0;background:#ba7f6815;border-color:#d0a28855}
#app .tip-card{background:linear-gradient(140deg,#34444aee,#22343eea);color:#e3eee7;border-color:#d2e4db45;box-shadow:0 3px 12px #0c202a35;border-radius:12px}#app .tip-card button{background:#ffffff12;color:#eaf4ec}#app #toast{background:#253842ef;color:#eef6ef;border-color:#cfe4d54d;box-shadow:0 3px 12px #0d1d2a33}
/* Trophy browsing belongs to the same interface family. */
#trophyCabinet{background:var(--lounge-panel);color:var(--lounge-text);border-color:#d9eee44f;box-shadow:inset 0 1px 0 #ffffff2e,0 18px 50px #06131e55}#trophyCabinet button,#cabinetAirport{background:var(--lounge-control);color:var(--lounge-text);border-color:var(--lounge-line)}#cabinetAirport option{background:#263740;color:#edf4f0}#cabinetGrid .trophy-card{border-radius:14px}#cabinetGrid small,#cabinetEmpty{color:var(--lounge-muted)}#cabinetGrid b{color:#c6e4d0}#trophyCabinet button:focus-visible{outline-color:#cee9da}
@media(max-height:410px){#app>.overlay .modal,#app #overlay[data-award='true'] .modal{padding:12px 16px;border-radius:18px}#app .modal h2{font-size:22px;margin-bottom:11px}#app .modal .pause-groups{gap:14px}#app .modal .pause-groups section+section{padding-left:14px}#app .modal .pause-utilities{margin-top:10px;padding-top:9px}#app .modal #weatherStatus{margin-top:8px;margin-bottom:5px}#app .modal details{margin-top:5px}#app #overlay[data-award='true'] #awardArt{max-height:43dvh}}
@media(max-width:740px){#app .modal .pause-actions button{font-size:10px;padding:6px}#app .modal .pause-utilities{gap:5px}#app .modal .pause-utilities button{font-size:9px;padding:6px 8px}#app .modal .pause-groups{gap:10px}#app .modal .pause-groups section+section{padding-left:10px}}
@media(prefers-reduced-transparency:reduce){#app>.overlay{backdrop-filter:none;-webkit-backdrop-filter:none;background:#15242bed}#app>.overlay .modal,#app #overlay[data-award='true'] .modal,#trophyCabinet,.departure-lounge{background:#2a3a43;backdrop-filter:none;-webkit-backdrop-filter:none}}

/* Keep pause-only controls out of every end-of-day state. */
#app[data-mode="ended"] .modal .pause-utilities,#app[data-mode="ended"] .modal .music-settings{display:none}

/* One meter, beneath a quiet row of task badges. Facilities have no second bar. */
#app .plane .patience{top:calc(100% + 26px);height:3px;left:20%;right:auto;width:60%;background:#12242e80;border-radius:3px;pointer-events:none}
#app .plane.selected .patience{box-shadow:none}
#app .plane .needs-badges>.instruction-mark{color:#d5e4e7;border-color:#b9cfd755;font-size:15px;line-height:10px;font-weight:700}
#app .route-target{animation:none;outline:1px solid #e1f3e4a6;outline-offset:3px}
#app .route-focus{animation:routeFocus 1.2s ease-out}
@keyframes routeFocus{0%,35%{outline:3px solid #f0ffdf;outline-offset:5px}100%{outline:1px solid #e1f3e4a6;outline-offset:3px}}
/* Task-specific miniatures stay beside the aircraft, clear of faces and badges. */
#app .plane.working:after{display:none}
.service-life{left:-14px;bottom:9px;width:28px;height:24px;transform:scaleX(var(--facing,1));transform-origin:right center}
.fueling .service-life,.repairing .service-life{display:none}
.service-life svg{position:absolute;left:0;bottom:0;width:10px;height:17px;fill:#dfebdf;stroke:#d4e4de;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:0;animation:passengerWalk 2.1s linear infinite}
.service-life svg:nth-child(2){animation-delay:-.7s}.service-life svg:nth-child(3){animation-delay:-1.4s}
.service-life svg circle{fill:#f5d9bc;stroke:none}.service-life svg rect{fill:#83afbd;stroke:none}
.unloading .service-life svg{animation-direction:reverse}
@keyframes passengerWalk{0%{transform:translate(-10px,0);opacity:0}15%{opacity:1}35%{transform:translate(1px,-1px)}55%{transform:translate(9px,0)}80%{opacity:1}100%{transform:translate(22px,-3px);opacity:0}}
.service-equipment{left:-17px;bottom:4px;width:36px;height:26px;filter:none}
.service-equipment .fuel-flow{display:none;stroke:#f4edb9;stroke-width:2;stroke-dasharray:3 5;animation:fuelFlow .9s linear infinite}
.fueling .service-equipment .fuel-flow{display:block}
@keyframes fuelFlow{to{stroke-dashoffset:-16}}
.service-sparks{display:none;position:absolute;left:-5px;bottom:10px;width:20px;height:18px;pointer-events:none}
.repairing .service-sparks{display:block}.service-sparks i{position:absolute;width:2px;height:3px;left:8px;top:7px;background:#ffe9ab;border-radius:1px;opacity:0;animation:repairSpark 1.4s ease-out infinite}.service-sparks i:nth-child(2){animation-delay:-.4s;left:12px}.service-sparks i:nth-child(3){animation-delay:-.8s;left:4px}
@keyframes repairSpark{15%{opacity:.9}55%,100%{transform:translate(-6px,-10px) rotate(65deg);opacity:0}}
.flight-wake{display:none;position:absolute;left:-32%;top:16%;width:75%;height:70%;pointer-events:none;fill:none;stroke:#e4f4f3;stroke-width:1.5;stroke-linecap:round;opacity:.45;transform:scaleX(var(--facing,1));animation:flightSlip .65s ease-in-out infinite}
.departing .flight-wake,.landing .flight-wake{display:block}.landing .flight-wake{opacity:.25;animation-duration:1s}
@keyframes flightSlip{50%{translate:-3px 0;stroke-dasharray:12 5;opacity:.15}}
#app[data-map='moon'] .landing-puff{background:#bfc4d383}
#app[data-battery-saver='true'] .service-life,#app[data-battery-saver='true'] .service-sparks,#app[data-battery-saver='true'] .flight-wake{display:none}
#app .desktop-help{display:none}
@media(prefers-reduced-motion:reduce){.service-life,.service-sparks,.flight-wake{display:none!important}.service-equipment .fuel-flow,#app .route-focus{animation:none!important}}

/* Build 4: one quiet feedback row. No routine selected-flight narration. */
#app #flightDock{position:absolute;z-index:24;left:max(12px,env(safe-area-inset-left));right:max(12px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom));display:flex;align-items:center;gap:8px;pointer-events:none}
#app:not([data-mode='playing']) #flightDock{display:none}
#app #flightDock #routeTools{position:static;display:flex;flex-direction:row;flex:0 0 auto;align-items:center;gap:6px;transform:none;margin:0;padding:0;pointer-events:auto}
#app #flightDock #routeTools button{width:auto;min-width:44px;min-height:40px;height:40px;padding:7px 12px;border-radius:14px;font-size:11px;font-weight:650;line-height:1.25;color:var(--route-color,#edf4ee)}
#app #flightDock #undoPlan:disabled{display:none}
#app #flightDock .flight-messages{flex:0 1 auto;min-width:0;max-width:min(420px,62vw)}
#app #flightDock #toast,#app #flightDock #tipCard{position:static;inset:auto;transform:none;width:auto;max-width:100%;height:auto;min-height:40px;margin:0;padding:8px 12px;display:none;opacity:1;border-radius:14px;font-size:11px;line-height:1.3;white-space:normal;overflow-wrap:anywhere;transition:none;text-align:left}
#app #flightDock #routeTools button,#app #flightDock #toast,#app #flightDock #tipCard{background:linear-gradient(135deg,#87969e5c,#243642a6);border:1px solid #eef5f263;box-shadow:inset 0 1px 0 #ffffff38,inset 0 -1px 0 #0d202c20,0 3px 10px #10202b20;backdrop-filter:blur(14px) saturate(1.15);-webkit-backdrop-filter:blur(14px) saturate(1.15);text-shadow:0 1px 2px #14232eb3;color:#f4f8f5}
#app #flightDock #routeTools button{color:var(--route-color,#edf4ee)}
#app #flightDock[data-message='toast'] #toast{display:flex;align-items:center}
#app #flightDock[data-message='tip'] #tipCard:not(.hidden){display:flex;align-items:center;pointer-events:auto}
#app #flightDock #dismissTip{min-width:32px;min-height:32px;height:32px;color:#f4f8f5}
#app #flightDock button:focus-visible{outline:2px solid #ecf5e7;outline-offset:3px}
/* Menus use real artwork in a separate column, never over control labels. */
#app>.overlay{background:#14212d52;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
#app>.overlay .modal,#app #overlay[data-award='true'] .modal{display:grid;grid-template-columns:minmax(155px,.65fr) minmax(0,1.65fr);gap:0;width:100%;max-width:1000px;padding:0;overflow:auto;border-radius:24px;background:linear-gradient(135deg,#485762de,#263641e8);border:1px solid #edf4f269;box-shadow:inset 0 1px 0 #ffffff40,0 18px 50px #06131e40;text-align:left}
#app #overlay .modal>.menu-art{grid-column:1;position:relative;min-width:0;min-height:0;align-self:stretch;border-radius:23px 0 0 23px;overflow:hidden;display:flex;align-items:center;justify-content:center;background:linear-gradient(#e5eeee12,#cdd6d839),url('menu-hangar.webp') center/cover no-repeat;border-right:1px solid #e5eeee45}
#app #overlay .modal>.menu-content{grid-column:2;min-width:0;padding:20px 22px;align-self:center}
.menu-plane{width:88%;max-width:230px;height:auto;object-fit:contain;filter:drop-shadow(0 10px 9px #29343f33);margin-top:20px}
.menu-art-caption{position:absolute;bottom:18px;left:12px;right:12px;text-align:center;font-size:8px;font-weight:700;letter-spacing:2px;color:#4d6069}
#app #overlay[data-award='true'] .menu-plane,#app #overlay[data-award='true'] .menu-art-caption{display:none}
#app #overlay #awardCelebration{display:flex;flex-direction:column;align-items:center;justify-content:center;position:static;grid-row:auto;grid-column:auto;align-self:center;margin:0;padding:14px 10px;width:100%}
#app #overlay #awardCelebration.hidden{display:none!important}
#app #overlay #awardArt{width:100%;max-width:280px;height:auto;max-height:42dvh;object-fit:contain}
#app #overlay #awardCelebration strong{font-size:19px;color:#263e4d;text-shadow:0 1px 0 #ffffff90}
#app #overlay #awardCelebration figcaption span{font-size:10px;color:#435967;line-height:1.4}
#app #overlay .secret-trigger{color:#c2d3da;font-size:9px;letter-spacing:2px;margin:0;padding:0;min-height:18px}
#app #overlay h2{font-size:25px;margin:5px 0 18px;line-height:1.1;text-align:left;color:#f4f7f8}
#app #overlay .pause-groups{grid-template-columns:1fr;gap:14px;margin:0}
#app #overlay .pause-groups section+section{border:0;padding-left:0}
#app #overlay .pause-groups h3{font-size:8px;letter-spacing:1.7px;color:#b8cbd5;margin:0 0 5px}
#app #overlay .pause-actions{gap:7px}
#app #overlay .pause-actions button,#app #overlay .pause-utilities button{background:linear-gradient(135deg,#dcebf017,#edf5f507);border:1px solid #d9e8ee38;box-shadow:inset 0 1px 0 #ffffff1c;color:#edf4f7;border-radius:11px;min-height:38px;padding:7px 9px;font-size:11px;line-height:1.2}
#app #overlay .pause-actions .primary{background:linear-gradient(135deg,#eff4f2,#c9d9dd);color:#213c4d;border-color:#f1f6f2aa;font-weight:750;box-shadow:inset 0 1px 0 #fff9}
#app #overlay .pause-utilities{gap:6px;justify-content:flex-start;margin-top:12px;padding-top:10px;border-color:#d1e1e324}
#app #overlay .pause-utilities button{min-height:30px;font-size:9px;padding:5px 8px}
#app #overlay .pause-utilities #checkUpdate{margin-right:0}
#app #overlay .pause-utilities .reset-game{margin-left:auto;color:#efbdb6;background:none;border-color:transparent}
#app #overlay #weatherStatus{margin:9px 10px 8px 0;color:#c0d0d8!important;font-size:9px!important}
#app #overlay .best{font-size:9px!important;color:#b3c7d1}
#app #overlay select{width:auto;flex:1;max-width:100%;min-height:32px;font-size:12px;padding:5px 10px;color:#eef5f7;background:#1d2e3a60;border-color:#d9e8ee38}
#app #overlay details{font-size:9px;margin:6px 0 0;color:#afc3ce}
#app #overlay details>summary{margin:0;padding:3px 0}
#app #overlay details[open]>p{position:static;max-height:65px;margin:5px 0;background:#1c2e3b;color:#e2edf2}
#app[data-mode='ended'] #overlay .pause-groups{grid-template-columns:1fr;margin-top:12px}
#app[data-mode='ended'] #overlay h2{text-align:left;margin:5px 0 12px}
#app[data-mode='ended'] #overlay #modalText{font-size:11px;line-height:1.45;color:#c4d4db;margin:0 0 10px}
#app #overlay #result{font-size:22px;line-height:1.2;color:#e5d9a4;margin:8px 0 12px;text-align:left}
#app #overlay #rewardBreakdown{font-size:10px;line-height:1.5;text-align:left;color:#c4d4db;margin:8px 0}
#app #overlay #resultCabinet{padding:5px 8px;min-height:28px;font-size:10px;margin:0;background:#e1eef30b;color:#d8e7ef;border-color:#d9e8ee38}
/* The launch screen is the airport picker, now with the same luminous hangar. */
#intro{background:linear-gradient(90deg,#e8eff113,#1e344350 45%,#14293699),url('menu-hangar.webp') left center/cover no-repeat;grid-template-columns:minmax(160px,.7fr) minmax(350px,1.4fr);gap:4vw}
#intro .home-brand{color:#294453;text-shadow:0 1px 0 #fff6}
#intro .home-brand .eyebrow,#intro .home-brand p{color:#425e6c}
#intro h1{color:#233e50;font-size:clamp(25px,3.7vw,42px)}
#intro .home-plane{width:clamp(130px,20vw,220px);height:clamp(100px,27vh,180px);filter:drop-shadow(0 10px 10px #23374730)}
#intro .departure-lounge{background:linear-gradient(135deg,#4e606bd9,#243945e3);border-color:#e4f0f36b;box-shadow:inset 0 1px 0 #ffffff35,0 12px 36px #10293626}
@media(max-height:410px){#app #overlay .modal>.menu-content{padding:12px 16px}#app #overlay h2{font-size:22px;margin-bottom:10px}#app #overlay .pause-groups{gap:9px}#app #overlay .pause-actions button{min-height:34px;font-size:10px;padding:6px}#app #overlay .pause-utilities{margin-top:9px;padding-top:8px}#app #overlay .pause-utilities button{font-size:8px;min-height:28px;padding:5px 6px}#app #overlay #weatherStatus{margin:7px 8px 6px 0}#app #overlay #awardArt{max-height:40dvh}#app #overlay #result{font-size:19px}#app #overlay #rewardBreakdown{font-size:9px}#app #overlay #awardCelebration strong{font-size:16px}}
@media(max-width:740px){#app>.overlay .modal,#app #overlay[data-award='true'] .modal{grid-template-columns:minmax(130px,.55fr) minmax(0,1.7fr)}#app #overlay .modal>.menu-content{padding:12px}#app #overlay .pause-actions{gap:4px}#app #overlay .pause-utilities{gap:4px}#app #overlay .pause-utilities .reset-game{margin-left:0}#app #flightDock{gap:6px}#app #flightDock #routeTools button{padding:7px 9px}#intro{gap:16px}}
@media(prefers-reduced-transparency:reduce){#app #flightDock #routeTools button,#app #flightDock #toast,#app #flightDock #tipCard{background:#2c3e49;backdrop-filter:none;-webkit-backdrop-filter:none}#app>.overlay .modal,#app #overlay[data-award='true'] .modal,#intro .departure-lounge{background:#2e414e}}

/* Pause artwork never determines the grid row height. */
#app[data-mode='paused'] #overlay .menu-plane{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);margin:0;max-height:65%;object-fit:contain}
#app #overlay .modal>.menu-content{min-height:0}
#app #overlay #modalEyebrow,#app #overlay #modalEyebrow:active{transform:none;transition:none;line-height:18px;height:18px;min-height:18px;padding:0;border-width:0;background:transparent;box-shadow:none;touch-action:manipulation}
/* State is conveyed by text as well as color. Neutral actions stay neutral. */
#app #overlay .pause-actions button[aria-pressed='true'],#app #overlay .pause-utilities button[aria-pressed='true']{color:#c3f0d0;background:linear-gradient(135deg,#79c79924,#5a9f7a0e);border-color:#9bd3ad63}
#app #overlay .pause-actions button[aria-pressed='false'],#app #overlay .pause-utilities button[aria-pressed='false']{color:#f1c2bc;background:linear-gradient(135deg,#bc7f7a1c,#a16c6809);border-color:#d7a09a4d}

/* Fixed game surfaces: no page panning or elastic menu scrolling. */
html,body{position:fixed;inset:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
#app,#app .field,#app>.overlay,#app #intro,#app .modal,#app .menu-content{overscroll-behavior:none;touch-action:none;overflow:hidden}
#app>.overlay{place-items:center}
#app>.overlay .modal,#app #overlay[data-award='true'] .modal{max-height:none;overflow:hidden;transform:scale(var(--menu-scale,1));transform-origin:center}
#app #intro{inset:auto 0;top:50%;height:auto;min-height:0;transform:translateY(-50%) scale(var(--menu-scale,1));transform-origin:center}
#app #overlay details[open]>p{max-height:none;overflow:visible}
#trophyCabinet,#guestDialog{max-height:none;overflow:hidden;overscroll-behavior:none;touch-action:none;transform:scale(var(--menu-scale,1));transform-origin:center}
#cabinetGrid{overflow:hidden;max-height:none}
.cabinet-pages{display:flex;justify-content:center;align-items:center;gap:12px;margin-top:10px;font-size:12px}
.cabinet-pages button{min-width:44px;min-height:36px;border-radius:10px;border:1px solid #d9e8ee55;background:#ffffff12;color:inherit}

#app>.overlay .modal,#app #overlay[data-award='true'] .modal{position:absolute;left:50%;top:50%;width:calc(100% - max(32px,env(safe-area-inset-left)) - max(32px,env(safe-area-inset-right)));transform:translate(-50%,-50%) scale(var(--menu-scale,1))}
#trophyCabinet,#guestDialog{position:fixed;inset:auto;left:50%;top:50%;margin:0;transform:translate(-50%,-50%) scale(var(--menu-scale,1))}
#cabinetGrid{grid-template-columns:repeat(3,minmax(0,1fr))}

/* Per-map dimensions follow the painted bays and runway edges. Invisible hit
   extensions keep the smaller painted areas usable on a phone. */
#app .runway,#app .holding{min-height:0;min-width:0}
#app .runway:after,#app .holding:after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;height:100%;min-width:44px;min-height:44px;background:transparent}
#app .runway{border-radius:7px}

#app .runway>b{font-family:inherit;font-size:11px;font-weight:700;letter-spacing:1px;line-height:1.2}
#app .runway:active>b,#app .runway:active>span:not(.runway-streak),#app .runway.route-target>b,#app .runway.next-destination>b,#app .runway.lesson-target>b{color:#f6fff7;text-shadow:0 0 7px #d6f7e7,0 1px 3px #10242f}
#app .runway:focus-visible>b{outline:2px solid #eef9f2;outline-offset:3px;border-radius:4px}

/* Career uses the same compact glass panels; no scrolling surfaces. */
.career-home{font-size:12px;color:#b9dfd1;margin:5px 0}
.career-tabs{display:flex;gap:8px;margin:8px 0}
.career-tabs button,.career-day{color:#eef6f4;background:#d4e6ef12;border:1px solid #d6e4e744;border-radius:10px;padding:8px 10px;min-height:36px}
.career-tabs [aria-pressed='true']{background:#d8eee32b;border-color:#b5e2cb;color:#c6f0d9}
#careerDays{display:grid;grid-template-columns:repeat(5,1fr);gap:7px}
.career-day[data-medal='3']{color:#f4da8a;border-color:#f4da8a77}
.career-day[data-medal='2']{color:#dce9f1}
.career-day[data-medal='1']{color:#e3bb99}
.career-day:disabled{opacity:.45}
.career-panel p{margin:7px 0;font-size:13px}.career-panel small{font-size:10px;color:#c4d4d6}
#trophyCabinet[data-view='career'] #cabinetGrid,#trophyCabinet[data-view='career'] #cabinetEmpty,#trophyCabinet[data-view='career'] .cabinet-pages,#trophyCabinet[data-view='trophies'] .career-panel{display:none}
#app .overlay[data-career='true'] .menu-art{background:radial-gradient(ellipse at 50% 48%,#e9ce8438,transparent 68%),#263b43}
#app .overlay[data-career='true'] #awardArt{filter:drop-shadow(0 8px 20px #e7c47430)}
#app .overlay[data-career='true'] #awardTitle{color:#f4dda5}

#trophyCabinet .career-tabs [aria-pressed='true']{background:#d8eee32b;border-color:#b5e2cb;color:#c6f0d9}
#trophyCabinet .career-day[data-medal='3']{color:#f4da8a;border-color:#f4da8a77}
#trophyCabinet .career-day[data-medal='1']{color:#e3bb99}
.career-award{text-align:center;background:radial-gradient(ellipse,#e8cc8124,transparent 65%)}
.career-award img{height:130px;max-height:32dvh;max-width:80%;object-fit:contain}
.career-award h3{color:#f4dda5;margin:5px 0}.career-award p{font-size:12px;margin:5px 0}
#trophyCabinet:not([data-view='award']) .career-award,#trophyCabinet[data-view='award'] .career-panel,#trophyCabinet[data-view='award'] #cabinetGrid,#trophyCabinet[data-view='award'] #cabinetEmpty,#trophyCabinet[data-view='award'] .cabinet-pages{display:none}
#app #careerEndless{min-height:28px;padding:5px 8px;font-size:10px;margin:0 6px 0 0;background:#e1eef30b;color:#d8e7ef;border-color:#d9e8ee38}

.day-briefing{font-size:11px;line-height:1.4;color:#c9ddd9;margin:8px 0;max-width:62ch}
.backup-actions{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin-top:10px;font-size:11px}
#trophyCabinet .backup-actions button{font-size:11px;min-height:36px;padding:7px 10px}
#backupStatus{flex-basis:100%;font-size:11px;color:#c9e9d9;line-height:1.3}
.happy-departure{position:absolute;z-index:27;pointer-events:none;color:#baf0cd;background:#243f478c;border:1px solid #baf0cd55;border-radius:12px;padding:3px 8px;font-size:12px;transform:translate(-50%,-50%);animation:happyCredit 1.3s ease-out both}
@keyframes happyCredit{0%{opacity:0}20%,65%{opacity:1}100%{opacity:0;transform:translate(-50%,calc(-50% - 10px))}}
#app:not([data-mode='playing']) .plane,#app:not([data-mode='playing']) .plane *,#app:not([data-mode='playing']) .plane::before,#app:not([data-mode='playing']) .plane::after{animation-play-state:paused!important}
#app[data-battery-saver='true'] .plane,#app[data-battery-saver='true'] .spot,#app[data-battery-saver='true'] .runway-weather i,#app[data-battery-saver='true'] .float,#app[data-battery-saver='true'] .tap-confirm,#app[data-battery-saver='true'] .route-focus,#app[data-battery-saver='true'] .happy-departure,#app[data-battery-saver='true'] #awardCelebration{animation:none!important;transition:none!important}
#app[data-battery-saver='true'] .confetti,#app[data-battery-saver='true'] .firework,#app[data-battery-saver='true'] .landing-puff{display:none!important}
#app[data-battery-saver='true'] .needs-badges>span,#app[data-battery-saver='true'] .route-number,#app[data-battery-saver='true'] #flightDock button,#app[data-battery-saver='true'] #toast,#app[data-battery-saver='true'] #tipCard{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
@media(prefers-reduced-motion:reduce){#app .happy-departure,#app .float,#app .tap-confirm,#app .plane,#app .spot{animation:none!important;transition:none!important}}
@media(max-height:410px){.day-briefing{font-size:10px;margin:5px 0}.backup-actions{margin-top:6px}#trophyCabinet .backup-actions button{padding:5px 8px;min-height:30px}}

/* Build 3: compact settings links and player track picker. No scrolling surfaces. */
.settings-career{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;border-top:1px solid #d1e1e324;padding-top:10px}
#app .settings-career button{border:1px solid #d9e8ee38;background:#e1eef30b;color:#d8e7ef;border-radius:12px;min-height:40px;padding:7px;font-size:11px}
#app[data-mode='ended'] .settings-career{display:none}
#musicPicker{position:fixed;inset:auto;left:50%;top:50%;margin:0;width:min(680px,86vw);max-width:none;max-height:none;padding:20px;border-radius:24px;border:1px solid #d9eee455;background:linear-gradient(135deg,#304b55ed,#20343def);color:#edf4f0;box-shadow:inset 0 1px 0 #ffffff30,0 20px 70px #06131e77;backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);transform:translate(-50%,-50%) scale(var(--menu-scale,1));overflow:hidden;touch-action:none;overscroll-behavior:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
#musicPicker::backdrop{background:#11252d88}#musicPicker header{display:flex;align-items:center;justify-content:space-between;gap:20px}#musicPicker h2{font-size:22px;margin:5px 0}#musicPicker small{font-size:11px;color:#c4d5d9}#musicPicker header small{letter-spacing:2px}#musicPicker p{font-size:12px;color:#c7dfd6;margin:9px 0}
#musicPicker button{background:#ffffff0c;border:1px solid #d9e8ee38;color:#eef5f1;border-radius:12px;min-height:44px;padding:9px 14px;font-size:13px}#trackGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}#musicPicker #trackGrid [aria-pressed='true']{border-color:#a4e3c0;color:#baf1d2;background:#b0e4c91a}#musicPicker nav{display:flex;justify-content:center;align-items:center;gap:18px;margin:10px 0}#musicPicker button:disabled{opacity:.4}#musicPicker button:focus-visible{outline:2px solid #baf1d2;outline-offset:2px}#cabinetGrid .award-dates{font-size:10px;color:#c4d5d9}
@media(max-height:410px){.settings-career{padding-top:7px;gap:5px}#app .settings-career button{min-height:34px;font-size:10px}#musicPicker{padding:14px}#musicPicker h2{font-size:20px}#musicPicker nav{margin:6px 0}}

/* Build 4: a floating hangar surface, with the lounge raised above it. */
#app #intro{left:max(16px,env(safe-area-inset-left));right:max(16px,env(safe-area-inset-right));border-radius:32px;border:1px solid #f0f7f3a6;background-clip:padding-box;box-shadow:0 18px 42px #061c2866,0 4px 12px #061c2840,inset 0 1px 0 #ffffffb3;isolation:isolate}
#app #intro::after{content:'';position:absolute;inset:5px;border:1px solid #ffffff30;border-radius:27px;pointer-events:none;z-index:2}
#intro .home-brand p{font-family:ui-rounded,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:clamp(13px,1.5vw,17px);font-weight:650;line-height:1.35;letter-spacing:-.25px;color:#2d4a58;margin:10px 0 0;text-shadow:0 1px 1px #ffffffa6;max-width:23ch;text-wrap:balance}
#intro .departure-lounge{border-radius:26px;box-shadow:inset 0 1px 0 #ffffff59,0 10px 26px #10293645,0 2px 5px #10293626}
@media(max-height:410px){#app #intro{border-radius:24px}#app #intro::after{border-radius:19px}#intro .departure-lounge{border-radius:20px}#intro .home-brand p{font-size:13px;margin-top:6px}}
