:root{color:#183d56;font-synthesis:none;--ink:#183d56;--panel:#effaff;--blue:#198dcc;--red:#e86376;--yellow:#ffe46c;--edge:#b6dbe7;background:#51b4c6;font-family:ui-rounded,Arial Rounded MT Bold,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}body{overflow:hidden;margin:0}button,select,input{font:inherit}button,a,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer}button:disabled{cursor:wait;opacity:.55}button,a,select,input,summary{outline-offset:5px}button:focus-visible{outline:3px solid var(--yellow)}a:focus-visible{outline:3px solid var(--yellow)}select:focus-visible{outline:3px solid var(--yellow)}input:focus-visible{outline:3px solid var(--yellow)}summary:focus-visible{outline:3px solid var(--yellow)}button{border:0}button,a{touch-action:manipulation}h1,h2,p{margin:0}button,a,select{transition:transform .15s,background .15s,box-shadow .15s}button:hover:not(:disabled){filter:brightness(1.05)}[hidden],.hidden,body .hidden{display:none!important}#pool{position:fixed;display:block;width:100%;height:100%;inset:0}.water-vignette{position:fixed;pointer-events:none;transition:opacity .2s;inset:0;box-shadow:inset 0 0 110px #0734402a}.button{display:inline-flex;color:var(--ink);background:var(--panel);box-shadow:0 4px 0 var(--edge);border:2px solid #fff;border-radius:14px;justify-content:center;align-items: center;min-height:48px;padding:12px 20px;font-weight:800}.button:active:not(:disabled){box-shadow:0 1px 0 var(--edge);transform:translateY(3px)}.button-primary{background:var(--yellow);border-color:#fff2a8;min-height:57px;font-size:21px;box-shadow:0 5px #cca942}.button-secondary{background:#dceff6;border-color:#f5fcff}.button-icon{border-radius:15px;width:46px;min-height:46px;padding:6px;font-size:22px}.button-quiet{box-shadow:none;color:#4c7185;background:0 0;border:0;font-size:12px}.button-row{display:flex;gap:10px}.button-row>*{flex:1}.panel{background:#effaffed;border:2px solid #fff;border-radius:18px;box-shadow:0 5px #1b668943}kbd{display:inline-flex;color:var(--ink);white-space:nowrap;background:#fff;border:1px solid #b0ceda;border-bottom:3px solid #92b9ca;border-radius:6px;justify-content:center;align-items: center;min-width:24px;padding:3px 6px;font-family:inherit;font-size:11px;font-weight:800;line-height:1.2}.field{display:flex;color:var(--ink);flex-direction:column;gap:8px;font-size:13px;font-weight:750}.field select{color:var(--ink);background:#fff;border:2px solid #c0dde8;border-radius:11px;width:100%;min-height:44px;padding:10px 34px 10px 12px;font-size:15px;font-weight:650}fieldset{border:0;margin:0;padding:0}legend{margin-bottom:9px;font-size:13px;font-weight:750}.segmented{display:flex;gap:8px}.segmented button{color:#4e7288;background:#e0eef4;border:2px solid #c4dbe7;border-radius:12px;flex:1;padding:13px 16px;font-weight:800}.segmented .selected.otters{color:#fff;background:#208fce;border-color:#78d4ff;box-shadow:0 3px #1374af}.segmented .selected.beavers{color:#fff;background:#dc596e;border-color:#ffb4b9;box-shadow:0 3px #b73c54}.menu{position:fixed;z-index:10;background:linear-gradient(90deg,#103c5ade,#16486375 38%,#19525f10 75%);padding:28px 4vw;inset:0}.menu-header{display:flex;position:relative;z-index:2;justify-content:space-between;align-items: center}.menu-header nav{display:flex;gap:12px}.wordmark{color:#fff;text-decoration:none;letter-spacing:-1.7px;text-shadow:0 4px #22577f;font-size:34px;font-weight:950}.lobby-screen{position:absolute;inset:105px 5vw 30px}.mode-screen{display:flex;align-items: center}.mode-list{display:flex;flex-direction:column;gap:18px;width:clamp(290px,30vw,430px)}.mode-card{display:flex;color:var(--ink);text-align:left;background:#eefafff5;border:3px solid #fff;border-radius:22px;align-items: center;gap:18px;width:100%;min-height:105px;padding:20px 26px;box-shadow:0 7px #acd4e0}.mode-card:hover{transform:translateY(-3px)}.mode-card>span{display:flex;color:#188dc0;background:#d6f2fa;border-radius:17px;justify-content:center;align-items: center;width:58px;height:58px;font-size:35px}.mode-card strong{letter-spacing:-.6px;font-size:25px}.mode-card p{color:#40667a;margin-top:5px;font-size:13px;font-weight:550;line-height:1.4}.mode-card i{color:#39829f;margin-left:auto;font-size:22px;font-style:normal}.mode-card:first-child{background:var(--yellow);border-color:#fff4b5;box-shadow:0 7px #c8a740}.mode-card:first-child>span{color:#936d12;background:#fff0a5}.map-screen{display:flex;flex-direction:column;justify-content:center;gap:23px}.map-screen h1{color:#fff;letter-spacing:-1px;font-size:32px}.map-cards{display:grid;grid-template-columns:1fr 1fr;filter:drop-shadow(0 8px 0 #173b6055);width:100%;height:min(66vh,650px);max-height:100%}.map-card{position:relative;overflow:hidden;text-align:left;color:#fff;background:#64bed0;padding:0}.map-card img{object-fit:cover;width:100%;height:100%;transition:transform .3s}.map-card:hover img{transform:scale(1.025)}.map-card:after{content:"";position:absolute;pointer-events:none;background:linear-gradient(#0000,#113656db);inset:45% 0 0}.map-card strong{position:absolute;z-index:1;letter-spacing:-.8px;font-size:clamp(22px,2.7vw,36px);bottom:30px;left:32px}.map-card>span{position:absolute;z-index:1;font-size:33px;bottom:27px;right:60px}.tropical-card{clip-path:polygon(0 0,100% 0,91% 100%,0 100%);border-radius:24px 0 0 24px}.city-card{clip-path:polygon(8.5% 0,100% 0,100% 100%,0 100%);background:#464071;border-radius:0 24px 24px 0;width:108%;margin-left:-8%}.city-card strong{left:60px}.city-card>span{right:32px}.setup-screen{display:grid;grid-template-columns:minmax(0,1.8fr)minmax(300px,380px);align-items: center;gap:28px}.selected-map{position:relative;overflow:hidden;aspect-ratio:1.55;background:#4389a4;border:3px solid #ffffffc9;border-radius:24px;box-shadow:0 7px #153e6860}.selected-map img{display:block;object-fit:cover;width:100%;height:100%}.selected-map button{position:absolute;display:flex;color:var(--ink);background:#f1fcfff2;border-radius:13px;justify-content:space-between;padding:15px 20px;font-size:20px;font-weight:850;bottom:20px;left:20px;right:20px}.setup-panel{display:flex;background:var(--panel);border:3px solid #fff;border-radius:23px;flex-direction:column;gap:22px;padding:27px;box-shadow:0 7px #aed3e2}.setup-panel h1{letter-spacing:-1px;font-size:28px}.match-setup{display:flex;flex-direction:column;gap:16px}.load-status{position:absolute;color:#fff;text-align:right;max-width:65vw;font-size:12px;bottom:13px;right:5vw}.load-status:empty{display:none}.panel-dialog{overflow:auto;background:var(--panel);color:var(--ink);border:3px solid #fff;border-radius:22px;width:min(540px,100vw - 36px);max-height:85vh;padding:26px;box-shadow:0 8px #13426365}.panel-dialog::backdrop{background:#102f526b}.panel-dialog header{display:flex;justify-content:space-between;align-items: center;margin-bottom:25px}.panel-dialog h2{letter-spacing:-1px;font-size:27px}.panel-dialog>.field{margin:20px 0}.settings-row{display:flex;justify-content:space-between;align-items: center;gap:18px;font-size:13px}.controls-grid{display:grid;gap:13px}.control{display:grid;grid-template-columns:115px 1fr;align-items: center;gap:15px;font-size:13px;line-height:1.5}.control kbd{justify-self:start}.overlay{position:fixed;z-index:12;display:grid;background:#163a556b;place-items: center;padding:24px;inset:0}.pause-card{display:flex;overflow:auto;flex-direction:column;gap:15px;width:min(360px,100%);max-height:90vh;padding:28px}.pause-card h1{margin-bottom:7px;font-size:29px}.pause-card>p:empty{display:none}.pause-card>p{font-size:13px;line-height:1.4}.pause-card details{margin-top:8px;font-size:13px}.pause-card details[open] .controls-grid{margin-top:18px}.pause-card summary{cursor:pointer;font-weight:750}.lab-settings{display:flex;border-top:1px solid #c2dce6;flex-direction:column;gap:16px;padding-top:18px}.lab-settings label{font-size:13px;font-weight:700}.lab-settings output{float:right}.lab-settings input{display:block;accent-color:#228dca;width:100%;margin-top:12px}.hud{position:fixed;z-index:3;pointer-events:none;--air:100%;color:var(--ink);inset:0}.hud-top{position:absolute;display:flex;justify-content:space-between;align-items: flex-start;inset:20px 24px auto}.hud-top button{pointer-events:auto}.scoreboard{position:absolute;display:flex;border-radius:17px;align-items: center;gap:23px;padding:10px 20px;left:50%;transform:translate(-50%)}.score-team{display:flex;align-items: center;gap:14px}.score-team span{letter-spacing:.5px;font-size:10px;font-weight:900}.score-team strong{font-size:27px;line-height:1.2}.score-team.otters{color:#137db7}.score-team.beavers{color:#ca425d}.scoreboard time{font-variant-numeric:tabular-nums;font-size:18px;font-weight:850}.performance{display:none;margin-left:auto;padding:10px;font-size:10px}.show-performance .performance{display:block}.hud-bottom{position:absolute;display:flex;justify-content:space-between;align-items: flex-end;gap:24px;inset:auto 24px 24px}.vitals{width:180px;padding:15px 17px}.vitals-header{display:flex;justify-content:space-between;gap:14px;font-size:11px;font-weight:750}.air-value{display:flex;align-items:baseline;gap:4px;margin:5px 0}.air-value strong{font-variant-numeric:tabular-nums;font-size:39px;font-weight:850;line-height:1.15}.air-value>span{color:#5c8397;font-size:13px}.air-track{overflow:hidden;background:#c8e2ec;border-radius:6px;height:9px}.air-track i{display:block;width:var(--air);background:#24a4d6;border-radius:6px;height:100%;transition:width .15s}.speed-value{display:block;color:#5a8295;font-variant-numeric:tabular-nums;margin-top:9px;font-size:10px}.low-air .air-track i{background:#e36170}.low-air .air-value,.low-air #air-label{color:#c84356}.map-wrap{width:145px;padding:10px 11px}.map-title{display:flex;justify-content:space-between;align-items: center;font-size:10px;font-weight:850}.map-title kbd{min-width:20px;padding:2px 4px;font-size:9px}.map-wrap canvas{display:block;width:100%;height:auto;margin-top:4px}.tactics .map-wrap{width:230px}.handling{position:absolute;text-align:center;bottom:3px;left:50%;transform:translate(-50%)}.bottom-guidance{display:flex;white-space:nowrap;align-items: center;gap:12px;padding:13px 18px;font-size:11px}.bottom-guidance>strong{display:none}.bottom-guidance>span{white-space:normal;max-width:230px;line-height:1.4}.bottom-guidance #descend-cue{display:flex;align-items: center;gap:6px}.shot-charge{overflow:hidden;opacity:0;background:#153b5866;border:1px solid #d6f3ff;border-radius:6px;width:145px;height:8px;margin:0 auto 10px}.shot-charge.visible{opacity:1}.shot-charge span{display:block;width:var(--charge);background:var(--yellow);height:100%}#handling-mode{display:block;color:#f6ffff;letter-spacing:.6px;text-shadow:0 2px 2px #16364f;font-size:10px}.crosshair{position:absolute;background:#edffffbb;border-radius:50%;width:4px;height:4px;margin:-2px;top:50%;left:50%;box-shadow:0 1px 3px #183d5666}.reaction{position:absolute;display:flex;color:#23445b;background:#fff7bdf5;border:2px solid #fff;border-radius:15px;align-items: center;gap:10px;padding:10px 16px;font-size:14px;top:57%;left:50%;transform:translate(-50%);box-shadow:0 4px #be9c54a3}.reaction kbd{min-width:30px;font-size:16px}.announcement{position:absolute;color:#fff;text-shadow:0 4px #1c5b83;opacity:0;white-space:nowrap;font-size:clamp(38px,6vw,74px);font-weight:950;top:28%;left:50%;transform:translate(-50%)}.announcement.visible{opacity:1}.player-position{position:fixed;color:#effaff;background:#125888b0;border:1px solid #94dbf5aa;border-radius:5px;padding:2px 5px;font-size:10px;font-weight:800;transform:translate(-50%,-50%)}.player-position.beaver{background:#932e51ad;border-color:#ffc5cb9c}.lab-readout{position:fixed;white-space:pre-line;padding:10px 13px;font-size:10px;line-height:1.6;top:90px;left:24px}.playground-hud .map-wrap,.playground-hud .scoreboard,.hud.practice-hud .scoreboard,.playground-hud .vitals{display:none}.speed-lines{position:fixed;z-index:2;pointer-events:none;opacity:0;overflow:hidden;mask-image:linear-gradient(90deg,#000,#000 10%,#0000 29% 71%,#000 90%,#000);inset:0}.speed-lines i{position:absolute;transform-origin:center;animation:1.2s linear infinite speed-streak;animation-delay:var(--delay);animation-play-state:paused;background:linear-gradient(90deg,#0000,#d7faff 65%,#0000);border-radius:100%;width:19vw;height:4px;top:50%}.speed-left{left:4%}.speed-right{right:4%}.speed-lines.running i{animation-play-state:running}@keyframes speed-streak{0%{transform:rotate(var(--angle))translateX(calc(var(--side)*-5vw))scaleX(.35);opacity:0}20%{opacity:.65}80%{opacity:.5}to{transform:rotate(var(--angle))translateX(calc(var(--side)*15vw))scaleX(1.1);opacity:0}}.review-toolbar{position:fixed;display:flex;background:#e9f8faf2;border:2px solid #fff;border-radius:15px;flex-wrap:wrap;align-items: center;gap:12px;padding:13px;font-size:12px;bottom:15px;left:15px;right:15px}.review-toolbar a{color:var(--ink);text-decoration:none;font-weight:900}.review-toolbar label{display:flex;align-items: center;gap:6px}.review-toolbar select,.review-toolbar button{color:var(--ink);background:#fff;border:1px solid #9fc7d8;border-radius:6px;padding:8px}.review-toolbar output{margin-left:auto}@media (max-width:850px){.menu{padding:20px 4vw}.wordmark{font-size:26px}.menu-header nav{gap:8px}.lobby-screen{inset:90px 5vw 25px}.setup-screen{grid-template-columns:1fr 300px;gap:16px}.setup-panel{gap:17px;padding:20px}.map-cards{height:58vh}.map-card strong{font-size:22px;left:20px}.city-card strong{left:42px}.map-card>span{display:none}.mode-list{width:330px}.map-wrap{width:115px}.hud-bottom{inset:auto 14px 14px}.vitals{width:155px;padding:12px}.scoreboard{gap:13px;padding:8px 12px}.score-team span{font-size:9px}.score-team{gap:9px}.bottom-guidance{white-space:normal;max-width:240px;padding:10px}.bottom-guidance>span{max-width:170px}}@media (max-width:620px){.setup-screen{display:flex;overflow:auto;flex-direction:column;align-items:stretch}.selected-map{aspect-ratio:2.8;min-height:130px}.setup-panel{gap:14px}.setup-panel h1{font-size:23px}.match-setup{display:grid;grid-template-columns:1fr 1fr;gap:12px}.match-setup .field:nth-child(2){grid-column:1/-1;grid-row:2}.mode-list{width:min(100%,350px)}.mode-card{min-height:90px}.map-cards{display:flex;flex-direction:column;gap:10px;height:100%}.map-card{clip-path:none;border-radius:18px;flex:1;width:100%;min-height:0;margin:0}.map-card img{object-fit:cover}.map-card strong,.city-card strong{bottom:15px;left:20px}.hud-top{inset:13px 14px auto}.score-team span{display:none}.scoreboard{gap:18px}.vitals{width:125px;padding:10px}.air-value strong{font-size:31px}.map-wrap{width:100px}.handling{bottom:155px}.bottom-guidance{font-size:10px}.control{grid-template-columns:100px 1fr;gap:10px}.menu-header .button{width:38px;min-height:38px}}@media (max-height:680px) and (min-width:620px){.lobby-screen{inset:86px 5vw 20px}.setup-panel{gap:14px;padding:20px}.match-setup{gap:10px}.field{gap:5px}.field select{min-height:38px;padding:7px 10px}.setup-panel h1{font-size:24px}.team-choice button{padding:10px}.map-wrap{width:115px}.mode-card{min-height:85px}.mode-list{gap:15px}}@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.speed-lines{display:none}}.volume-setting{display:grid;grid-template-columns:1fr auto;gap:.5rem;margin:1rem 0;font-weight:700}.volume-setting input{grid-column:1/-1;accent-color:#258cda;width:100%}.match-result .pause-card{text-align:center;gap:14px;width:min(400px,100%);padding:32px}.match-result .pause-card h1{margin:0;font-size:clamp(28px,5vw,38px)}.match-result .pause-card>#pause-description{font-variant-numeric:tabular-nums;color:var(--ink);margin:4px 0 18px;font-size:clamp(48px,9vw,72px);font-weight:850;line-height:1.1}.match-result .pause-card>details,.match-result .pause-card>.field,.match-result #pause-settings,.desktop-shortcuts,.lesson-shortcuts,.pointer-captured .hud-actions>button,.pointer-captured .lesson-tools{display:none}.pointer-captured .desktop-shortcuts,.pointer-captured .lesson-shortcuts{display:block;font-size:12px;font-weight:700}.pointer-captured .desktop-shortcuts{color:var(--ink);background:var(--panel);border-radius:12px;padding:8px 12px}.touch-controls,.touch-help{display:none}.touch-mode .touch-help{display:grid}.touch-mode .keyboard-help{display:none}.touch-sensitivity output{float:right;color:#2875a0}.touch-sensitivity input{accent-color:#1687bd;width:100%;min-height:44px}.touch-mode{overscroll-behavior:none}.touch-playing #pool{touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.touch-mode .touch-controls:not([hidden]){display:block}.touch-controls{position:fixed;z-index:4;pointer-events:none;--touch-size:clamp(48px,13vh,60px);--touch-gap:8px;--touch-bottom:max(16px,env(safe-area-inset-bottom));color:#16496a;inset:0}.touch-left{position:absolute;bottom:var(--touch-bottom);left:max(20px,env(safe-area-inset-left));display:grid;justify-items:center;gap:10px}.touch-depth{display:flex;gap:10px}.touch-button{display:flex;width:var(--touch-size);height:var(--touch-size);color:#174665;font:inherit;cursor:pointer;background:#e5f7ffe3;border:2px solid #f1fcffeb;border-radius:18px;flex-direction:column;justify-content:center;align-items: center;gap:1px;padding:3px;box-shadow:0 3px #30638999,0 4px 12px #0a38552b}.touch-button,.touch-joystick{pointer-events:auto;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}.touch-button>span{font-size:23px;font-weight:850;line-height:1}.touch-button>strong{font-size:10px;font-weight:800;line-height:1.1}.touch-button[aria-pressed=true]{background:#9bdcf0;border-color:#fff5ac;box-shadow:0 1px #30638999}.touch-button[aria-disabled=true]{opacity:.38}.touch-button:focus-visible{outline:3px solid #ffef79;outline-offset:3px}.touch-skills{position:absolute;bottom:var(--touch-bottom);right:max(20px,env(safe-area-inset-right));display:grid;gap:var(--touch-gap);grid-template-columns:repeat(4,var(--touch-size));grid-template-rows:repeat(3,var(--touch-size))}.touch-react{grid-column:3/5;flex-direction:row;gap:7px;width:auto}.touch-react.ready{background:#fff1a3;border-color:#fff;box-shadow:0 3px #b98b35,0 0 12px #ffe99570}.touch-shot{grid-column:3/5;grid-row:2/4;background:linear-gradient(0deg,#ffd35f var(--touch-charge,0%),#fff1a3 var(--touch-charge,0%));border:3px solid #fffbea;border-radius:50%;width:auto;height:auto;box-shadow:0 4px #b99348aa,0 7px 15px #17456130}.touch-shot>span{font-size:36px}.touch-shot>strong{font-size:16px}.touch-shot[aria-pressed=true]{background:linear-gradient(0deg,#ffc547 var(--touch-charge,0%),#fff1a3 var(--touch-charge,0%))}.touch-backhand{grid-column:1/3;flex-direction:row;gap:8px;width:auto}.touch-joystick{position:relative;background:#23577842;border:2px solid #ddf9ffd4;border-radius:50%;width:clamp(124px,35vh,156px);height:clamp(124px,35vh,156px);box-shadow:inset 0 0 0 6px #b8e5ed35}.touch-stick-ring{position:absolute;border:1px solid #def7ff73;border-radius:50%;inset:26%}.touch-thumb{position:absolute;background:#e1f6fce6;border:2px solid #fff;border-radius:50%;width:44px;height:44px;top:calc(50% - 22px);left:calc(50% - 22px);box-shadow:0 3px #507f9e80}.touch-sprint-label,.touch-brake-label{position:absolute;letter-spacing:1px;color:#effcff;text-shadow:0 1px 2px #123c51;font:800 8px system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Noto Sans,Ubuntu,Cantarell,Helvetica Neue;left:50%;transform:translate(-50%)}.touch-sprint-label{top:9px}.touch-brake-label{bottom:9px}.touch-joystick.sprinting{border-color:#ffe981;box-shadow:inset 0 0 0 6px #ffe98150}.touch-mode .hud-top{inset:max(10px,env(safe-area-inset-top))max(16px,env(safe-area-inset-right))auto max(16px,env(safe-area-inset-left))}.touch-mode #pause-button{min-width:48px;min-height:48px}.touch-mode .scoreboard{gap:12px;padding:7px 13px}.touch-mode .score-team span{display:none}.touch-mode .score-team strong{font-size:23px}.touch-mode .scoreboard time{font-size:16px}.touch-mode .hud-bottom{display:block;inset:0}.touch-mode .vitals{position:absolute;left:max(76px,calc(env(safe-area-inset-left) + 60px));top:max(10px,env(safe-area-inset-top));border-radius:12px;width:112px;padding:8px 10px}.touch-mode .air-value,.touch-mode .speed-value{display:none}.touch-mode .air-track{height:7px;margin-top:7px}.touch-mode .vitals-header{gap:5px;font-size:10px}.touch-mode .map-wrap{position:absolute;right:max(16px,env(safe-area-inset-right));top:max(10px,env(safe-area-inset-top));opacity:.9;border-radius:10px;width:70px;padding:5px}.touch-mode .map-title{justify-content:center}.touch-mode .hud kbd,.touch-mode .reaction,.touch-mode .bottom-guidance #descend-cue,.touch-mode #handling-mode{display:none}.touch-mode .handling{bottom:max(14px,env(safe-area-inset-bottom));max-width:200px}.touch-mode .bottom-guidance{display:block;max-width:180px;padding:8px 11px;font-size:10px}.touch-mode .shot-charge{display:none}.touch-mode .performance{position:absolute;padding:7px;font-size:9px;top:0;right:84px}.touch-mode .announcement{font-size:clamp(24px,5vw,44px);top:23%}.touch-mode .menu{padding:max(12px,env(safe-area-inset-top))max(20px,env(safe-area-inset-right))max(12px,env(safe-area-inset-bottom))max(20px,env(safe-area-inset-left))}.touch-mode .button,.touch-mode .field select,.touch-mode .team-choice button,.touch-mode .menu-header .button{min-height:48px}.touch-mode .menu-header .button{min-width:48px}.touch-mode .lobby-screen{left:max(20px,env(safe-area-inset-left));right:max(20px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom))}.touch-mode .setup-panel{overflow-y:auto;overscroll-behavior:contain;max-height:100%}.touch-mode .pause-card{max-height:90dvh}@media (orientation:landscape) and (max-height:500px){.touch-mode .lobby-screen{top:70px}.touch-mode .setup-screen{grid-template-columns:1fr minmax(260px,42%)}.touch-mode .setup-panel{gap:12px;padding:15px}.touch-mode .selected-map{height:100%;min-height:0}.touch-mode .map-cards{height:100%}.touch-mode .mode-list{gap:12px}.touch-mode .mode-card{min-height:80px}}@media (max-width:740px) and (orientation:landscape){.touch-controls{--touch-gap:5px;--touch-size:48px}.touch-skills{right:max(12px,env(safe-area-inset-right))}.touch-left{left:max(12px,env(safe-area-inset-left))}.touch-mode .handling{max-width:140px;left:44%}.touch-mode .bottom-guidance{max-width:140px}.touch-mode .map-wrap{width:58px}}.touch-skills{grid-template-columns:repeat(3,var(--touch-size));grid-template-rows:repeat(3,var(--touch-size));gap:6px}.touch-skills .touch-button{width:var(--touch-size);height:var(--touch-size);border-radius:50%}.touch-reverse{grid-column:1;grid-row:1;transform:translateY(18px)}.touch-curl{grid-column:3;grid-row:1;transform:translateY(18px)}.touch-skills .touch-shot{grid-column:2;grid-row:2;transform:scale(1.12)}.touch-shot>span{font-size:26px}.touch-shot>strong{font-size:11px}.touch-dummy{grid-column:1;grid-row:3;transform:translateY(-10px)}.touch-skills .touch-react{grid-column:3;grid-row:3;flex-direction:column;gap:1px;transform:translateY(-10px)}.touch-fullscreen{position:absolute;top:max(12px,env(safe-area-inset-top));left:max(76px,calc(env(safe-area-inset-left) + 60px));border-radius:14px;width:44px;height:44px}.touch-mode .vitals{left:auto;right:max(16px,env(safe-area-inset-right));width:100px}.touch-mode .air-value{display:flex;align-items:baseline;gap:3px;margin:0}.touch-mode .air-value strong{font-size:23px;line-height:1.1}.touch-mode .air-value>span{font-size:11px}.touch-mode .map-wrap{top:max(98px,calc(env(safe-area-inset-top) + 86px));right:max(16px,env(safe-area-inset-right))}.fullscreen-help{color:#174665;font:inherit;background:#e5f7ff;border:2px solid #fff;border-radius:22px;max-width:min(340px,85vw);padding:24px}.fullscreen-help::backdrop{background:#073b4b99}.fullscreen-help button{color:#174665;font:inherit;background:#fff1a3;border:2px solid #fff;border-radius:14px;min-height:44px;padding:8px 24px}.touch-skills .touch-button{overflow:hidden;gap:3px;padding:6px 3px}.touch-button>span{display:grid;flex:0 0 24px;place-items: center;width:24px;height:24px;font-size:24px;line-height:1}.touch-button>span>svg{display:block;width:24px;height:24px}.touch-skills .touch-button>strong{display:block;text-align:center;width:100%;font-size:10px;line-height:12px}.touch-skills .touch-shot{transform:none}.touch-skills .touch-react{gap:3px}.touch-depth .touch-button{border-radius:50%;transform:none}.touch-skills .touch-rise{grid-column:1;grid-row:1;transform:translateY(18px)}.touch-skills .touch-descend{grid-column:3;grid-row:1;transform:translateY(18px)}.touch-skills .touch-shot{width:calc(var(--touch-size) + 8px);height:calc(var(--touch-size) + 8px);margin:-4px}.touch-reverse>span,.touch-reverse>strong,.touch-curl>span,.touch-curl>strong,.touch-dummy>span,.touch-dummy>strong{transform:translateY(-2px)}.touch-depth .touch-button{gap:3px;padding:6px 3px}.touch-depth .touch-button>strong{font-size:10px;line-height:12px}.hud-actions{display:flex;gap:10px}.hud-actions .button{display:grid;place-items: center;width:48px;min-width:48px;height:48px;min-height:48px;padding:0}@media (orientation:portrait) and (max-width:700px){.touch-controls{--touch-size:54px;--touch-bottom:max(22px,env(safe-area-inset-bottom))}.touch-left{left:max(14px,env(safe-area-inset-left));gap:14px}.touch-joystick{width:128px;height:128px}.touch-skills{right:max(14px,env(safe-area-inset-right));grid-template-columns:repeat(2,var(--touch-size));grid-template-rows:repeat(3,var(--touch-size));gap:12px}.touch-skills .touch-rise{grid-area:1/1;transform:none}.touch-skills .touch-descend{grid-area:1/2;transform:none}.touch-skills .touch-shot{grid-area:2/1/3/3;justify-self:center}.touch-skills .touch-dummy{grid-area:3/1;transform:none}.touch-skills .touch-react{grid-area:3/2;transform:none}.touch-mode .scoreboard{position:absolute;gap:12px;padding:6px 12px;top:66px;left:50%;transform:translate(-50%)}.touch-mode .map-wrap{top:max(128px,calc(env(safe-area-inset-top) + 116px));width:62px}.touch-mode .handling{bottom:calc(var(--touch-bottom,22px) + 218px);max-width:210px;left:50%}.touch-mode .announcement{top:28%}.touch-mode .lobby-screen{top:max(88px,calc(env(safe-area-inset-top) + 76px))}.touch-mode .setup-panel{flex:none;max-height:none}.touch-mode .selected-map{flex:0 0 140px}}.lesson-card{color:var(--ink);background:var(--panel);overflow:auto;border:3px solid #fff;border-radius:26px;width:min(620px,100vw - 28px);max-height:calc(100dvh - 28px);padding:0;box-shadow:0 9px #92c4d6,0 25px 80px #073b4b55}.lesson-card::backdrop{background:#073b4b99}.lesson-card img{display:block;object-fit:contain;background:#55c5df;width:100%;height:auto;max-height:46dvh}.lesson-card img[hidden],.lesson-objective[hidden]{display:none}.lesson-copy{display:grid;text-align:center;gap:10px;padding:20px 26px}.lesson-copy h2{font-size:clamp(24px,4vw,32px)}#lesson-count,#lesson-number{letter-spacing:.1em;color:#467087;font-size:12px;font-weight:800}#lesson-keys{color:#176c9b;font-size:15px}.lesson-actions{display:flex;justify-content:center;gap:12px;margin-top:6px}.lesson-actions .button{min-width:120px}.lesson-objective{position:fixed;z-index:20;left:50%;top:max(76px,env(safe-area-inset-top));background:#effaffef;border:2px solid #fff;border-radius:18px;width:min(340px,100vw - 28px);padding:12px 16px;transform:translate(-50%);box-shadow:0 4px #92c4d6}.lesson-objective>div:first-child{display:flex;align-items: center;gap:12px}.lesson-objective strong{font-size:18px}.lesson-objective progress{accent-color:#168dba;display:block;width:100%;height:8px;margin:9px 0}.lesson-tools{display:flex;gap:8px}.lesson-tools .button{box-shadow:none;min-height:28px;padding:5px 12px;font-size:12px}.learning-active .announcement,.learning-active .bottom-guidance{display:none}#learn-button{text-align:left;width:100%}.boot-cover{position:fixed;z-index:100;display:grid;text-align:center;color:var(--ink);background:#e7f8fc;place-content: center;gap:20px;transition:opacity .35s;inset:0}.boot-cover strong{letter-spacing:-.04em;font-size:clamp(32px,7vw,58px)}.boot-cover progress{accent-color:#198dcc;width:180px;margin:auto}.boot-cover.ready{opacity:0;pointer-events:none}@media (max-height:540px) and (min-width:600px){.lesson-card[open]{display:grid;grid-template-columns:1.1fr 1fr;width:min(850px,100vw - 36px)}.lesson-card img{object-fit:contain;height:100%;max-height:calc(100dvh - 36px)}.lesson-copy{align-content: center;padding:18px}.lesson-objective{width:280px;padding:8px 12px;top:16px}}@media (prefers-reduced-motion:reduce){.boot-cover{transition:none}}@media (max-height:540px) and (min-width:600px){.lesson-card:not(:has(img:not([hidden]))) .lesson-copy{grid-column:1/-1}}#lesson-feedback{color:#315c72;margin:8px 0;font-size:13px;line-height:1.4}#lesson-feedback[hidden]{display:none}.lesson-objective.lesson-success{background:#e6faed;border-color:#9de2b7}.lesson-success #lesson-feedback{color:#176b48;font-size:17px;font-weight:800}.lesson-success progress{accent-color:#258b5e}
