@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;500;600;700;800&family=Fredoka:wght@400;500;600;700&display=swap');
:root{font-family:'DM Sans',sans-serif;color:#143453}*{box-sizing:border-box}body{margin:0;overflow:hidden;background:#87b8cf}button{font:inherit;cursor:pointer;border:0}button:focus-visible{outline:4px solid #ffca57;outline-offset:3px}#world,.vignette{position:fixed;inset:0;width:100%;height:100%}.vignette{pointer-events:none;background:linear-gradient(90deg,rgba(11,36,58,.3),transparent 60%),linear-gradient(0deg,rgba(8,40,62,.25),transparent 30%)}header{position:fixed;z-index:3;top:0;left:0;right:0;padding:27px 4.2%;display:flex;align-items:center;justify-content:space-between;color:white;text-shadow:0 2px 15px #254b5d}.brand{display:flex;gap:11px;align-items:center}.brand-icon{width:42px;height:42px;border:1px solid #ffffff96;border-radius:14px;display:grid;place-items:center;font-size:23px;background:#ffffff27}.brand small,.header-right{font-size:9px;letter-spacing:.17em;font-weight:800}.brand small{display:block;opacity:.85;margin-bottom:3px}.brand strong{font:600 21px Fredoka,sans-serif}.header-right{display:flex;align-items:center;gap:10px}.live-dot{width:6px;height:6px;background:#d3f8bf;border-radius:50%;box-shadow:0 0 10px #d3f8bf}.header-star{font-size:20px;margin-left:12px}.panel{position:absolute;z-index:2;left:6%;top:50%;transform:translateY(-45%);width:min(480px,44vw);background:#fffdf8f2;box-shadow:0 25px 90px #173c5270;border:1px solid #ffffffb3;border-radius:26px;padding:31px 34px 23px;backdrop-filter:blur(18px)}.eyebrow{font-size:10px;letter-spacing:.18em;font-weight:800;color:#df805d}.eyebrow span{color:#edaa52}.panel h1{font:600 clamp(36px,4.1vw,57px)/.98 Fredoka,sans-serif;letter-spacing:-.025em;margin:16px 0;color:#173957}.panel h1 em{color:#ef8d69;font-style:normal}.intro{font-size:14px;line-height:1.55;color:#6c7e89;margin:0 0 20px}.route{display:flex;align-items:center;background:#f1f5ef;border-radius:14px;padding:14px 16px;margin-bottom:22px}.route>div:not(.route-line){display:flex;flex-direction:column;gap:4px}.route small,.route span,.label-row span,.flight-chip small,.altitude small,.message small{font-size:9px;letter-spacing:.12em;font-weight:800;color:#8a9da5}.route b{font:600 17px Fredoka}.route span{font-size:9px;color:#94a09a}.destination{text-align:right}.route-line{flex:1;margin:0 17px;border-top:1px dashed #b5c9c3;position:relative;text-align:center}.route-line span{position:absolute;top:-13px;left:40%;background:#f1f5ef;padding:2px 6px;font-size:16px;color:#ef8d69}.label-row{display:flex;align-items:center;justify-content:space-between;margin-bottom:10px}h2{font:600 17px Fredoka;margin:0}.label-row span{color:#ec9a79}.planes{display:grid;grid-template-columns:repeat(4,1fr);gap:7px}.plane-option{background:#f5f6f2;border:2px solid transparent;border-radius:11px;padding:9px 3px 8px;color:#456072;min-width:0}.plane-option.selected{border-color:#ef9877;background:#fff6ef;color:#d56f4e}.plane-option i{display:block;font-style:normal;font-size:22px;line-height:1;transform:rotate(-20deg);margin-bottom:5px}.plane-option b{font-size:10px}.passenger-row{display:flex;justify-content:space-between;align-items:center;margin:20px 0}.passenger-row p{font-size:11px;color:#94a1a6;margin:5px 0 0}.stepper{display:flex;align-items:center;gap:12px}.stepper button{width:30px;height:30px;border-radius:10px;background:#edf3f0;color:#52766d;font-size:20px}.stepper strong{font:600 18px Fredoka;min-width:14px;text-align:center}.primary{width:100%;border-radius:13px;background:#ed8d6c;color:white;font-weight:800;padding:15px 18px;text-align:left;box-shadow:0 7px 0 #d77255;transition:transform .15s}.primary:hover{transform:translateY(-2px)}.primary span{float:right;font-size:20px;line-height:15px}.hint{text-align:center;color:#b4bdb7;font-size:9px;letter-spacing:.04em;margin:18px 0 0}.bottom-note{position:fixed;bottom:25px;right:4%;color:#fff;font-size:9px;font-weight:800;letter-spacing:.15em;text-shadow:0 2px 8px #234}.bottom-note span{color:#ffd18f}.bottom-note .divider{padding:0 12px;color:#fff8}.hidden{display:none!important}.compact{max-width:450px}.uniform-badge,.award{display:flex;align-items:center;gap:14px;padding:17px;border-radius:16px;background:#edf5f2;margin:25px 0}.uniform-badge>span:first-child{font-size:42px}.uniform-badge div,.award div{flex:1}.uniform-badge b,.award b{display:block;font:600 19px Fredoka}.uniform-badge small,.award small{font-size:9px;color:#8fa5a4;letter-spacing:.12em}.badge-star,.award>span{font-size:27px;color:#eeb65d}.top-card{position:absolute;top:115px;left:50%;transform:translateX(-50%);width:min(410px,90%);background:#fffdf8ee;border-radius:20px;padding:20px 24px;box-shadow:0 12px 50px #24495c55;text-align:center}.top-card h2{font-size:25px;margin:8px 0}.top-card p{color:#718994;font-size:13px}.walk-progress,.alt-track{height:6px;background:#dce9e3;border-radius:10px;overflow:hidden}.walk-progress i,.alt-track i{display:block;background:#ed9876;height:100%;width:0%;transition:width .2s}.small-btn{margin-top:14px;background:#ec9474;color:white;border-radius:10px;padding:10px 20px;font-weight:800}.flight-ui{position:absolute;inset:0;pointer-events:none}.flight-top{position:absolute;top:100px;left:4%;right:4%;display:flex;gap:9px}.flight-chip{background:#fffdf8e8;backdrop-filter:blur(12px);border-radius:13px;padding:10px 15px;min-width:120px;box-shadow:0 8px 25px #1c475324}.flight-chip small,.flight-chip b{display:block}.flight-chip b{font:600 18px Fredoka;margin-top:3px}.flight-chip b span{color:#ed8d6c}.timer{min-width:110px}.compass{margin-left:auto;min-width:155px}.message{position:absolute;top:175px;left:50%;transform:translateX(-50%);background:#fffdf8ed;border-radius:14px;padding:12px 20px;display:flex;align-items:center;gap:12px;box-shadow:0 8px 30px #194b5a26;white-space:nowrap}.message-icon{font-size:25px;color:#ed8d6c}.message small,.message b{display:block}.message b{font:600 17px Fredoka;margin-top:3px}.flight-bottom{position:absolute;left:4%;right:4%;bottom:26px;display:flex;align-items:end;gap:15px}.altitude{background:#fffdf8e8;border-radius:15px;padding:13px 15px;width:150px}.altitude b{display:block;font:600 23px Fredoka}.altitude b span{font:800 9px DM Sans;color:#9bacaf}.altitude>span{display:block;font-size:10px;margin-top:8px;color:#73908e}.alt-track{margin-top:5px}.controls{margin:auto auto 0;display:flex;gap:17px;background:#153b55b8;padding:13px 17px;border-radius:14px;color:white}.controls div{display:flex;align-items:center;gap:4px}.controls span{font-size:8px;letter-spacing:.08em;margin-left:3px;font-weight:800}kbd{font:700 11px DM Sans;background:#ffffffde;color:#456272;padding:5px 7px;border-radius:5px;box-shadow:0 2px #bacbce}.camera-btn{pointer-events:auto;background:#fffdf8e8;color:#335569;border-radius:12px;padding:15px;font-size:10px;letter-spacing:.08em;font-weight:800}.camera-btn span{margin-left:8px;color:#ed8d6c}.celebrate{font-size:35px;margin:20px 0}.award{background:#fff1da}.award small{color:#b89b77}@media(max-width:800px){header{padding:18px}.header-right{display:none}.panel{left:4%;width:min(480px,92%);padding:24px;max-height:84vh;overflow:auto;top:52%}.panel h1{font-size:39px}.flight-top{top:78px}.flight-chip{min-width:90px;padding:8px}.compass{min-width:120px}.message{top:150px}.controls{gap:6px;padding:8px}.controls span{display:none}.flight-bottom{bottom:15px}.altitude{width:115px}.camera-btn{padding:12px;font-size:9px}.bottom-note{display:none}}@media(max-height:700px){.panel{padding:20px 26px;max-height:86vh;overflow:auto}.panel h1{font-size:38px;margin:10px 0}.route{margin-bottom:12px}.passenger-row{margin:12px 0}.hint{margin-top:12px}}

/* A big, moving destination marker stays visible in every camera view. */
.sky-guide{position:absolute;top:37%;left:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:5px;transition:left .08s linear;filter:drop-shadow(0 3px 8px #63411488)}.guide-star{font-size:58px;line-height:1;color:#ffdb60;-webkit-text-stroke:2px #fff9d4;text-shadow:0 0 20px #ffed95}.sky-guide span{background:#183e58df;color:#fff;border:2px solid #fff9;border-radius:100px;font-size:10px;font-weight:800;letter-spacing:.1em;padding:6px 10px;white-space:nowrap}.sky-guide.on-course .guide-star{color:#fff0a6;transform:scale(1.12)}.aim-mark{position:absolute;left:50%;top:37%;transform:translate(-50%,-50%);font-size:75px;color:#ffffff75;line-height:1;text-shadow:0 1px 3px #22485b;opacity:.65}.sky-guide{z-index:1}.aim-mark{z-index:0}@media(max-width:800px){.guide-star{font-size:43px}.sky-guide span{font-size:9px}.aim-mark{font-size:56px}.sky-guide,.aim-mark{top:38%}}

.fleet-header{display:flex;align-items:center;justify-content:space-between;margin:10px 0 7px}.fleet-header span{font-size:9px;font-weight:800;letter-spacing:.08em;color:#de8b6d}.airline-list{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;max-height:112px;overflow:auto;padding:2px}.airline-option,.aircraft-option{background:#f4f6f3;border:2px solid transparent;border-radius:10px;color:#496174;font-weight:800;font-size:10px;padding:9px 5px;min-height:35px}.airline-option.selected,.aircraft-option.selected{background:#fff5ed;border-color:#ed9876;color:#bf654a}.airline-option .airline-dot{display:inline-block;width:8px;height:8px;border-radius:50%;margin-right:5px;background:var(--airline)}.aircraft-list{display:flex;gap:6px;overflow-x:auto;padding:2px 1px 5px}.aircraft-option{flex:0 0 auto;padding:9px 10px;white-space:nowrap}.selected-flight{display:flex;align-items:center;gap:9px;background:#edf4ef;border-radius:10px;padding:8px 10px;margin-top:6px}.selected-flight>span{font-size:23px;color:#df8869}.selected-flight strong,.selected-flight small{display:block}.selected-flight strong{font:600 14px Fredoka}.selected-flight small{font-size:9px;line-height:1.3;color:#6f8887;margin-top:2px}.setup{max-height:84vh;overflow:auto}.setup .route{margin-bottom:13px}.setup .passenger-row{margin:12px 0}.setup .hint{line-height:1.4}@media(max-height:760px){.setup{max-height:86vh}.setup h1{font-size:36px}.setup .intro{margin-bottom:10px}.setup .route{padding:9px}.airline-list{max-height:77px}}

.aircraft-option span,.aircraft-option small{display:block}.aircraft-option small{font-size:8px;letter-spacing:.06em;color:#8fa3a0;margin-top:3px}.aircraft-option.selected small{color:#c37859}.flight-chip:first-child small{max-width:175px;line-height:1.3}

.pilot-list{display:grid;grid-template-columns:repeat(5,1fr);gap:5px}.pilot-option{border:2px solid transparent;border-radius:10px;background:#f0f4f1;color:#526c78;font-size:10px;font-weight:800;padding:8px 2px}.pilot-option.selected{border-color:#ed9876;background:#fff4ed;color:#b65f47}.pilot-option span{display:block;font-size:17px;line-height:1.1;margin-bottom:3px}

.speed-card{background:#fffdf8e8;border-radius:15px;padding:13px 15px;width:150px}.speed-card small{font-size:9px;letter-spacing:.12em;font-weight:800;color:#8a9da5}.speed-card b{display:block;font:600 23px Fredoka}.speed-card b span{font:800 9px DM Sans;color:#9bacaf}.speed-card>span{display:block;font-size:9px;margin-top:8px;color:#73908e;font-weight:800}.speed-track{height:6px;background:#dce9e3;border-radius:10px;overflow:hidden;margin-top:5px}.speed-track i{display:block;height:100%;width:0%;background:#eaa064;transition:width .1s}@media(max-width:800px){.speed-card{width:105px;padding:10px}.speed-card>span{font-size:8px}.flight-bottom{gap:7px}.altitude{width:100px}}

.passenger-badge{color:#6c9383;background:#edf4ef;border-radius:10px;padding:10px 12px;font-size:9px;letter-spacing:.08em;font-weight:800;white-space:nowrap}.passenger-count{font-size:10px!important;font-weight:800;letter-spacing:.08em;color:#83a099!important;margin:10px 0 0!important}.top-card{z-index:3}#speech-layer{position:fixed;inset:0;z-index:4;pointer-events:none;overflow:hidden}.speech-bubble{position:absolute;max-width:min(260px,34vw);min-width:155px;padding:13px 16px;border-radius:19px;border:3px solid #fff;box-shadow:0 7px 24px #14394f55;font:600 16px/1.2 Fredoka,sans-serif;text-align:center;animation:pop-bubble .25s ease-out}.speech-bubble:after{content:'';position:absolute;bottom:-13px;left:40%;border-width:13px 10px 0;border-style:solid;border-color:var(--bubble-color) transparent transparent}.speech-bubble small{display:block;font:800 8px DM Sans,sans-serif;letter-spacing:.12em;margin-top:7px;opacity:.68}@keyframes pop-bubble{from{opacity:0;transform:translateY(12px) scale(.92)}to{opacity:1;transform:translateY(0) scale(1)}}@media(max-width:700px){.speech-bubble{font-size:13px;min-width:115px;max-width:39vw;padding:9px}}

.amazing-planes{width:100%;text-align:left;background:#eeeafa;color:#554694;border:2px solid #d8cef4;border-radius:11px;padding:10px 12px;margin:12px 0 3px;font-weight:800;font-size:12px}.amazing-planes span{display:block;font-size:9px;color:#8a7eae;margin:3px 0 0 22px}.landing-guide{position:absolute;top:240px;right:4%;display:flex;flex-direction:column;gap:6px;background:#163d56df;color:#fff;border:1px solid #ffffff80;border-radius:14px;padding:13px 16px;box-shadow:0 8px 30px #194b5a44;font-size:11px;font-weight:800}.landing-guide strong{color:#ffdf91;letter-spacing:.08em;font-size:10px;margin-bottom:2px}.camera-btn #view-name{color:#335569;margin-left:0;text-transform:uppercase}@media(max-width:800px){.landing-guide{top:215px;padding:9px;right:3%;font-size:9px}}

/* The route star sits ahead of the aircraft and clear of the mission card. */
.sky-guide,.aim-mark{top:30%}@media(min-width:801px){.message{top:98px}}@media(max-width:800px){.sky-guide,.aim-mark{top:33%}}

.fleet-collections{display:grid;gap:6px;margin:13px 0}.fleet-collections details{background:#f2f5f1;border:1px solid #dbe8e1;border-radius:11px;overflow:hidden}.fleet-collections summary{list-style:none;cursor:pointer;padding:11px 12px;font:600 14px Fredoka;color:#34576b}.fleet-collections summary::-webkit-details-marker{display:none}.fleet-collections summary:after{content:'▾';float:right;color:#e58f6c}.fleet-collections details[open] summary:after{content:'▴'}.fleet-collections summary span{font:800 8px DM Sans;letter-spacing:.08em;color:#9ba8a5;margin-left:5px}.fleet-content{padding:0 10px 10px}.fleet-content p{font-size:10px;line-height:1.45;color:#6d8587;margin:0 0 8px}.collection-planes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px;max-height:185px;overflow:auto}.collection-planes .aircraft-option{white-space:normal;text-align:left}.research-links{margin-top:8px!important}.research-links a{color:#568b92}

.cabin-note{position:absolute;left:50%;top:45%;transform:translateX(-50%);background:#fffdf8ed;border-radius:14px;padding:14px 20px;color:#34576b;font:600 16px Fredoka;white-space:nowrap;box-shadow:0 8px 30px #194b5a26}

/* Red means turn towards the star; green means the plane is on course. */
.guide-star{color:#ff5757;-webkit-text-stroke:2px #fff2e9;text-shadow:0 0 20px #ff8989}.sky-guide.on-course .guide-star{color:#63ec9d;-webkit-text-stroke:2px #e7fff0;text-shadow:0 0 20px #89ffc2}

@media(min-width:801px){.message{top:28px}}



/* A cheerful score card sits clear of the plane and the centre of the sky. */
.collect-hud{position:absolute;top:185px;left:4%;padding:12px 16px;background:#fff9dfed;color:#624c71;border:2px solid #fff;border-radius:16px;box-shadow:0 8px 25px #13263e44}
.collect-hud small,.collect-hud>span{display:block;font:800 9px DM Sans,sans-serif;letter-spacing:.11em}
.collect-hud div{display:flex;gap:18px;margin:5px 0;color:#e99d27}
.collect-hud strong{font:600 28px Fredoka,sans-serif}.collect-hud strong+strong{color:#e269a8}
.collect-toast{position:absolute;top:25%;left:50%;transform:translateX(-50%);background:#fff8dded;border:2px solid #fff;border-radius:100px;padding:8px 19px;color:#775391;font:600 22px Fredoka,sans-serif;box-shadow:0 7px 25px #20395944}
.flight-score{color:#a56a40;font:600 15px Fredoka,sans-serif}
@media(max-width:800px){.collect-hud{top:160px;left:3%;padding:8px 10px}.collect-hud strong{font-size:21px}.collect-hud small,.collect-hud>span{font-size:8px}.collect-toast{font-size:17px}}
/* Keep the guide above the horizon so it cannot cover the distant runway. */
.sky-guide{top:19%;flex-direction:column-reverse}.aim-mark{top:19%}
@media(max-width:800px){.sky-guide,.aim-mark{top:22%}}
.sound-btn{pointer-events:auto;flex:0 0 auto;background:#fffdf8e8;color:#335569;border-radius:12px;padding:14px 12px;font:800 11px DM Sans,sans-serif;white-space:nowrap}.sound-btn span{margin-left:3px}
@media(max-width:800px){.sound-btn{padding:12px 9px;font-size:10px}.sound-btn span{display:none}}

/* A score lives inside the cup, with a big, happy finish for every pilot. */
.trophy-stage{position:relative;width:180px;height:170px;margin:7px auto 0;filter:drop-shadow(0 8px 10px #c58d4838);animation:trophy-pop .6s cubic-bezier(.2,1.4,.4,1)}
.trophy-stage svg{width:100%;height:100%}
.trophy-score{position:absolute;top:34%;left:50%;transform:translate(-50%,-50%);color:#805019;font:700 29px Fredoka,sans-serif;text-shadow:0 1px #ffeba1;white-space:nowrap}
.landing-praise{font:600 17px Fredoka,sans-serif;color:#bc7843;margin:5px 0}
#success{text-align:center;max-height:88vh;overflow:auto}
#success h1{margin:0 0 5px}
#success .intro{margin:5px 0}
#success .flight-score{margin:6px 0 12px}
#success .award{text-align:left}
#confetti-layer{position:fixed;inset:0;z-index:20;pointer-events:none;overflow:hidden}
.confetti-piece{position:absolute;top:-24px;width:10px;height:17px;border-radius:2px;opacity:0;animation:confetti-fall var(--fall-time) var(--delay) ease-in forwards}
.confetti-piece:nth-child(3n){width:8px;height:8px;border-radius:50%}
@keyframes confetti-fall{0%{opacity:1;translate:0 -3vh;rotate:0deg}100%{opacity:1;translate:var(--drift) 110vh;rotate:850deg}}
@keyframes trophy-pop{from{opacity:0;transform:scale(.45) rotate(-12deg)}to{opacity:1;transform:scale(1) rotate(0)}}
@media(max-height:740px){.trophy-stage{width:135px;height:125px;margin:0 auto}.trophy-score{font-size:22px}#success h1{font-size:32px}#success .award{padding:8px}}
@media(prefers-reduced-motion:reduce){.trophy-stage{animation:none}.confetti-piece{animation:none}}

/* Tablet and phone controls. The two hands can steer and climb together. */
.touch-controls,.touch-tip,.camera-touch-label{display:none}
.fullscreen-toggle{display:none;position:fixed;z-index:8;top:max(8px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);min-height:44px;min-width:100px;align-items:center;justify-content:center;gap:5px;padding:7px 9px;background:#fffdf8eb;color:#31576b;border:2px solid #fff;border-radius:12px;box-shadow:0 4px 14px #14394f33;font:800 9px DM Sans,sans-serif;letter-spacing:.04em;touch-action:manipulation}
html.touch-device .fullscreen-toggle:not(.hidden){display:flex}
html.touch-device body.walking .fullscreen-toggle{left:auto;right:max(8px,env(safe-area-inset-right));transform:none}
#fullscreen-icon{font-size:20px;line-height:1}
.fullscreen-notice{position:fixed;z-index:9;top:58px;left:50%;transform:translateX(-50%);max-width:90vw;padding:10px 14px;border-radius:12px;background:#fffdf8f2;color:#31576b;font:600 13px/1.3 DM Sans,sans-serif;text-align:center;box-shadow:0 5px 20px #14394f44}
.graphics-message{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:24px;background:#bddcea}
.graphics-card{max-width:440px;padding:28px;border-radius:24px;background:#fffdf8;color:#25465a;text-align:center;box-shadow:0 15px 45px #24495c55}
.graphics-card strong{display:block;font:600 26px Fredoka,sans-serif}
.graphics-card p{font:500 15px/1.5 DM Sans,sans-serif}
html.touch-device{--touch-size:clamp(48px,7vw,66px)}
html.touch-device .touch-tip{display:block;margin:-9px 0 13px;color:#538179;font-size:12px;font-weight:700;line-height:1.35}
html.touch-device .setup{overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
html.touch-device .small-btn{min-height:50px;min-width:130px;touch-action:none;-webkit-touch-callout:none;user-select:none}
html.touch-device .small-btn.is-pressed{background:#be7156;transform:translateY(2px)}
html.touch-device .pilot-option,html.touch-device .airline-option,html.touch-device .aircraft-option{min-height:44px}
html.touch-device .flight-ui .controls{display:none}
html.touch-device body.in-flight header{display:none}
html.touch-device .touch-controls{display:block;position:absolute;inset:0;z-index:5;pointer-events:none}
.touch-steering,.touch-actions{position:absolute;bottom:max(12px,env(safe-area-inset-bottom));display:flex;align-items:flex-end;gap:8px}
.touch-steering{left:max(12px,env(safe-area-inset-left))}
.touch-actions{right:max(12px,env(safe-area-inset-right))}
.touch-vertical{display:flex;flex-direction:column;gap:7px}
.touch-key{pointer-events:auto;width:var(--touch-size);height:var(--touch-size);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;border:2px solid #ffffffd9;border-radius:16px;background:#173e5ddb;color:#fff;box-shadow:0 4px 0 #102d3ecc,0 6px 20px #092b4355;touch-action:none;-webkit-touch-callout:none;-webkit-user-select:none;user-select:none}
.touch-key span{font:700 22px/1 Fredoka,sans-serif}
.touch-key small{font:800 8px/1 DM Sans,sans-serif;letter-spacing:.07em;margin-top:3px}
.touch-key.is-pressed{background:#e6825e;transform:translateY(3px);box-shadow:0 1px 0 #a64e3f}
.touch-power{width:calc(var(--touch-size)*1.25);height:calc(var(--touch-size)*1.15);background:#e88c61}
.touch-power span{font-size:17px}.touch-power small{font-size:7px}
html.touch-device .flight-top{top:max(9px,env(safe-area-inset-top));left:max(9px,env(safe-area-inset-left));right:max(9px,env(safe-area-inset-right));gap:6px}
html.touch-device .flight-chip{min-width:0;padding:7px 10px}
html.touch-device .flight-chip b{font-size:16px}
html.touch-device .compass{min-width:110px}
html.touch-device .message{top:62px;max-width:65%;padding:7px 12px;white-space:normal}
html.touch-device .message b{font-size:15px}
html.touch-device .message-icon{font-size:18px}
html.touch-device .flight-bottom{left:calc(max(12px,env(safe-area-inset-left)) + var(--touch-size)*2 + 18px);right:calc(max(12px,env(safe-area-inset-right)) + var(--touch-size)*2.25 + 18px);bottom:max(12px,env(safe-area-inset-bottom));gap:6px;align-items:end}
html.touch-device .speed-card,html.touch-device .altitude{width:auto;min-width:0;flex:1;padding:8px}
html.touch-device .speed-card b,html.touch-device .altitude b{font-size:18px}
html.touch-device .speed-card small,html.touch-device .altitude small{font-size:8px}
html.touch-device .speed-card>span,html.touch-device .altitude>span{font-size:8px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.touch-device .camera-btn,html.touch-device .sound-btn{min-height:44px;padding:8px;font-size:10px}
html.touch-device .camera-btn .camera-touch-label{display:inline;margin:0 3px 0 0;color:#335569}
html.touch-device .camera-btn #view-name{display:none}
html.touch-device .camera-shortcut,html.touch-device .sound-btn span{display:none}
html.touch-device .landing-guide{top:105px;right:max(10px,env(safe-area-inset-right));font-size:10px;padding:9px 11px}
html.touch-device .collect-hud{top:108px;left:max(10px,env(safe-area-inset-left))}
@media(orientation:landscape){html.touch-device .rotate-tip{display:none}}
@media(max-height:500px) and (orientation:landscape){
 html.touch-device{--touch-size:48px}
 html.touch-device header,html.touch-device .bottom-note{display:none}
 html.touch-device .panel{top:50%;max-height:94vh;padding:13px 20px}
 html.touch-device .setup h1{font-size:26px;margin:5px 0}
 html.touch-device .setup .eyebrow,html.touch-device .setup .intro{display:none}
 html.touch-device .setup .touch-tip{margin:3px 0 6px;font-size:10px}
 html.touch-device .setup .route{padding:7px 10px;margin:6px 0}
 html.touch-device .setup .fleet-header{margin:5px 0}
 html.touch-device .setup .fleet-collections{margin:6px 0;gap:4px}
 html.touch-device .setup .primary{position:sticky;bottom:0;z-index:5}
 html.touch-device .top-card{top:max(7px,env(safe-area-inset-top));width:min(390px,80%);padding:9px 14px}
 html.touch-device .top-card h2{font-size:19px;margin:3px 0}
 html.touch-device .top-card p{font-size:11px;margin:5px 0}
 html.touch-device .small-btn{margin-top:6px}
 html.touch-device .flight-chip{padding:5px 8px}
 html.touch-device .flight-chip small{font-size:7px}
 html.touch-device .flight-chip b{font-size:13px}
 html.touch-device .message{top:50px;padding:5px 9px}
 html.touch-device .message small{font-size:7px}
 html.touch-device .message b{font-size:12px}
 html.touch-device .sky-guide,html.touch-device .aim-mark{top:32%}
 html.touch-device .guide-star{font-size:35px}
 html.touch-device .sky-guide span{font-size:8px;padding:4px 7px}
 html.touch-device .aim-mark{font-size:48px}
 html.touch-device .landing-guide{top:86px;font-size:9px;gap:3px}
 html.touch-device .collect-hud{top:92px;padding:7px 9px}
 html.touch-device .collect-hud strong{font-size:19px}
 html.touch-device .touch-steering,html.touch-device .touch-actions{gap:6px;bottom:max(8px,env(safe-area-inset-bottom))}
 html.touch-device .touch-vertical{gap:5px}
 html.touch-device .flight-bottom{left:calc(max(8px,env(safe-area-inset-left)) + 106px);right:calc(max(8px,env(safe-area-inset-right)) + 118px);bottom:max(8px,env(safe-area-inset-bottom));gap:4px}
 html.touch-device .speed-card,html.touch-device .altitude{padding:6px}
 html.touch-device .speed-card b,html.touch-device .altitude b{font-size:15px}
 html.touch-device .camera-btn,html.touch-device .sound-btn{padding:6px}
}
@media(orientation:portrait){
 html.touch-device .flight-bottom{left:max(10px,env(safe-area-inset-left));right:max(10px,env(safe-area-inset-right));bottom:auto;top:58px;gap:5px}
 html.touch-device .message{top:156px;max-width:90%}
 html.touch-device .landing-guide{top:215px}
 html.touch-device .collect-hud{top:215px}
 html.touch-device .sky-guide,html.touch-device .aim-mark{top:29%}
}
