/* The game fills the viewport, with physical START/SELECT controls below. */
body.game-only{background:#0c1b2d;overflow:hidden;min-height:100dvh;color:#fff}
body.game-only header{height:56px;max-width:none;padding:6px max(12px,env(safe-area-inset-right)) 6px max(12px,env(safe-area-inset-left));display:flex;justify-content:flex-end;background:#10253d}
body.game-only header>div,body.game-only #playTab,body.game-only #docTab,body.game-only .intro,body.game-only .worlds,body.game-only .map-travel,body.game-only .story-replays,body.game-only #starCollectionProgress,body.game-only .help,body.game-only #docPane{display:none!important}
body.game-only header nav{display:flex;gap:8px;flex-wrap:nowrap;align-items:center}
body.game-only header nav button{margin:0;min-height:40px;padding:8px 14px;background:#203d5b;color:#fff;border:1px solid #46617a;border-radius:10px;font-size:14px;font-weight:700}
body.game-only #languageButton{order:0}body.game-only #audioButton{order:1}body.game-only #mapOverview{order:2}
body.game-only header button[hidden]{display:none}
body.game-only main{max-width:none;margin:0;padding:0;height:calc(100dvh - 56px)}
body.game-only #playPane{height:100%}
body.game-only .game{width:100%;height:100%;border-radius:0;box-shadow:none;background:#0c1b2d;display:flex;align-items:center;justify-content:center;position:relative}
body.game-only .scene{width:min(100vw,calc((100dvh - 56px)*16/9));height:auto;aspect-ratio:16/9;flex-shrink:0;position:relative;overflow:hidden}
body.game-only .scene>.hud{position:absolute;top:0;left:0;right:0;z-index:5;min-height:36px;padding:8px 14px;background:linear-gradient(#0c1b2dbb,transparent);pointer-events:none;display:flex;justify-content:flex-end;flex-wrap:nowrap}
body.game-only .hud>strong,body.game-only .hud button{display:none!important}
body.game-only .stats{gap:16px;font-size:14px;flex-wrap:nowrap;text-shadow:0 1px 3px #000}
body.game-only .controls{position:absolute;left:0;right:0;bottom:max(12px,env(safe-area-inset-bottom));padding:0 max(18px,env(safe-area-inset-right)) 0 max(18px,env(safe-area-inset-left));background:transparent;pointer-events:none;display:flex;align-items:flex-end;justify-content:space-between;gap:12px;z-index:7}
body.game-only .controls button{pointer-events:auto;opacity:.88;-webkit-tap-highlight-color:transparent}
body.game-only .controls p{display:none!important}
body.game-only .action-controls{display:contents}
body.game-only .skill-controls{position:absolute;right:130px;bottom:0;flex-basis:auto;gap:8px}
body.game-only .skill-controls button{min-width:76px;font-size:12px;padding:8px}
body.game-only .overlay{z-index:10}
body.game-only .audio-settings p{display:none}
@media(max-width:600px){
 body.game-only .stats{font-size:11px;gap:9px}
 body.game-only .scene>.hud{padding:6px 10px;min-height:28px}
 body.game-only .controls{flex-wrap:nowrap;padding-left:14px;padding-right:14px}
 body.game-only .controls .jump{order:0;width:76px;height:76px}
 body.game-only .controls .dpad{order:2;grid-template-columns:44px 44px 44px;grid-template-rows:40px 40px;gap:4px}
 body.game-only .skill-controls{right:auto;left:14px;bottom:94px;order:1}
}
@media(max-height:520px) and (orientation:landscape){
 body.game-only header{display:flex;height:48px;padding:4px 12px}
 body.game-only main{height:calc(100dvh - 48px)}
 body.game-only .scene{width:min(100vw,calc((100dvh - 48px)*16/9));height:auto;aspect-ratio:16/9}
 body.game-only .controls .jump{width:64px;height:64px}
 body.game-only .controls .dpad{grid-template-columns:42px 42px 42px;grid-template-rows:36px 36px}
}
/* Result cards use their own ink color over the light panel. */
body.game-only .overlay .dialog,
body.game-only .overlay .dialog button{color:#000}
@media(max-width:600px),(max-height:520px){
 body.game-only .overlay{padding:8px}
 body.game-only .overlay .dialog{width:min(300px,100%);max-height:100%;min-width:0;padding:12px 14px;border-radius:16px;overflow:auto}
 body.game-only .overlay .dialog h2{font-size:18px;line-height:1.25;margin:2px 0 7px}
 body.game-only .overlay .dialog p{font-size:12px;line-height:1.45;margin:0 0 8px}
 body.game-only .overlay .dialog button{font-size:12px;line-height:1.25;padding:9px 11px;margin:3px;min-height:36px}
}
/* Bigger, raised touch controls keep both thumbs clear of the phone's bottom edge. */
@media(max-width:600px),(pointer:coarse){
 body.game-only .controls{bottom:calc(env(safe-area-inset-bottom) + 36px);padding-left:max(14px,env(safe-area-inset-left));padding-right:max(14px,env(safe-area-inset-right));flex-wrap:nowrap}
 body.game-only .controls .jump{order:0;flex-shrink:0;width:100px;height:100px;font-size:20px}
 body.game-only .controls .dpad{order:2;flex-shrink:0;margin-left:auto;grid-template-columns:repeat(3,56px);grid-template-rows:repeat(2,52px);gap:5px}
 body.game-only .controls .dpad button{font-size:27px}
 body.game-only .skill-controls{right:auto;left:max(14px,env(safe-area-inset-left));bottom:126px}
}
@media(pointer:coarse) and (orientation:landscape){
 body.game-only .controls{bottom:calc(env(safe-area-inset-bottom) + 28px)}
 body.game-only .controls .jump{width:96px;height:96px}
 body.game-only .controls .dpad{grid-template-columns:repeat(3,52px);grid-template-rows:repeat(2,48px)}
 body.game-only .skill-controls{left:calc(env(safe-area-inset-left) + 128px);bottom:4px}
}
/* Mouse-and-keyboard play does not need on-screen touch controls. */
@media(hover:hover) and (pointer:fine){
 body.game-only .controls{display:none}
}
/* Portrait handheld: a clear screen above a separate two-thumb control deck. */
@media (orientation:portrait) and (max-width:1024px){
 body.game-only{--handheld-shell:#bfc1c5;--handheld-ink:#353748;--pad-key:clamp(44px,12vw,56px);--action-key:clamp(64px,19vw,84px);background:#333640 url('assets/handheld-v2/shell.png') center/100% 100% no-repeat}
 body.game-only main{height:calc(100dvh - 56px - env(safe-area-inset-top))}
 body.game-only .file-screen{--files-top:calc(56px + env(safe-area-inset-top));inset:var(--files-top) 0 0}
 body.game-only .file-screen:not(.showing-tasks)::before{inset:var(--files-top) 0 0}
 body.game-only .game{flex-direction:column;justify-content:flex-start;padding:14px max(10px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:transparent;border-radius:0 0 40px 0}
 body.game-only .scene>.hud{padding:5px 8px;min-height:24px}
 body.game-only .stats{font-size:10px;gap:8px}
 body.game-only .game>.controls{position:relative;inset:auto;display:flex!important;flex:1 1 auto;min-height:calc(var(--pad-key)*3 + 48px);width:100%;padding:20px 8px 48px;align-items:center;justify-content:space-between;flex-wrap:nowrap;gap:8px;touch-action:none}
 body.game-only .controls .dpad{position:relative;order:0;margin:0;display:grid;grid-template-columns:repeat(3,var(--pad-key));grid-template-rows:repeat(3,var(--pad-key));gap:0;flex-shrink:0;filter:none;background:url('assets/handheld-v2/dpad.png') center/118% 118% no-repeat}
 body.game-only .controls .dpad::before{content:none}
 body.game-only .controls .dpad button{width:var(--pad-key);height:var(--pad-key);border:0;border-radius:5px;background:transparent;color:transparent;box-shadow:none;opacity:1;font-size:23px;transform:none}
 body.game-only .controls .dpad [data-key="up"]{grid-area:1/2!important;border-radius:6px 6px 0 0}
 body.game-only .controls .dpad [data-key="left"]{grid-area:2/1!important;border-radius:6px 0 0 6px}
 body.game-only .controls .dpad [data-key="right"]{grid-area:2/3!important;border-radius:0 6px 6px 0}
 body.game-only .controls .dpad [data-key="down"]{grid-area:3/2!important;border-radius:0 0 6px 6px}
 body.game-only .controls .dpad button.held{background:#ffffff18;box-shadow:inset 0 2px 5px #0008}
 body.game-only .controls .action-controls{position:relative;display:block;width:calc(var(--action-key)*2 + 6px);height:calc(var(--action-key)*2.25);flex-shrink:0}
 body.game-only .action-controls .skill-controls{display:contents!important}
 body.game-only .controls .action-controls button{position:absolute;width:var(--action-key);height:var(--action-key);min-width:0;min-height:0;padding:8px;border:0;border-radius:50%;background:transparent url('assets/handheld-v2/button.png') center/118% 118% no-repeat;color:#fff7fd;box-shadow:none;text-shadow:0 1px 2px #6b1548;font-size:clamp(11px,3vw,13px);font-weight:800;line-height:1.25;letter-spacing:-.04em;white-space:nowrap;opacity:1;transform:none}
 body.game-only .controls .action-controls .jump{top:0;right:0;order:0;font-size:14px}
 body.game-only .action-controls[data-actions="1"] .jump{top:calc(var(--action-key)*.55)}
 body.game-only .action-controls #kickControl{left:0;top:calc(var(--action-key)*.65)}
 body.game-only .action-controls #longJumpControl{right:0;top:calc(var(--action-key)*1.3)}
 body.game-only .action-controls[data-actions="2"] #longJumpControl{left:0;right:auto;top:calc(var(--action-key)*.65)}
 body.game-only .action-controls small{display:block;font-size:10px;line-height:1.2;margin-top:2px}
 body.game-only .controls .action-controls button.held{transform:translateY(3px);filter:brightness(.85)}
 body.game-only .controls .action-controls button:disabled{opacity:1;filter:saturate(.5) brightness(.8)}
 body.game-only .controls::after{content:none}
}

/* Hardware system keys replace the toolbar in every orientation. */
body.game-only header{display:none!important}
body.game-only main,body.game-only.native-app main{height:100dvh}
body.game-only .screen-bezel{display:contents}
body.game-only .game{padding-bottom:76px}
body.game-only .scene{width:min(100vw,calc((100dvh - 76px)*16/9));box-shadow:0 0 0 3px #83818c}
body.game-only .file-screen,body.game-only.native-app .file-screen{--files-top:env(safe-area-inset-top);inset:var(--files-top) 0 env(safe-area-inset-bottom)}
body.game-only .file-screen:not(.showing-tasks)::before{inset:var(--files-top) 0 0}
body.game-only .system-controls{position:absolute;z-index:8;left:50%;bottom:max(8px,env(safe-area-inset-bottom));transform:translateX(-50%);display:flex;align-items:center;gap:8px}
body.game-only .system-controls button{position:relative;min-width:76px;width:76px;min-height:58px;height:58px;padding:0;border:0;border-radius:8px;background:transparent;color:transparent;font-size:0!important;touch-action:manipulation;-webkit-tap-highlight-color:transparent;cursor:pointer}
body.game-only .system-controls button::before{content:"";position:absolute;left:50%;top:12px;width:52px;height:13px;transform:translateX(-50%) rotate(-15deg);border-radius:12px;background:#929198;box-shadow:inset 0 2px 3px #dad9dc,inset 0 -3px 3px #66646e,0 2px 1px #37354088}
body.game-only .system-controls button::after{content:attr(data-console-label);position:absolute;left:0;right:0;bottom:4px;text-align:center;font:800 11px/1.2 system-ui;letter-spacing:1.5px;color:#dddce9;transform:rotate(-15deg)}
body.game-only .system-controls button:active::before{top:14px;box-shadow:inset 0 2px 4px #5b5966}
body.game-only .system-controls button:focus-visible{outline:3px solid #4667ba;outline-offset:2px}
@media (orientation:landscape) and (max-height:520px){
 body.game-only .game{padding-bottom:54px}
 body.game-only .scene{width:min(100vw,calc((100dvh - 54px)*16/9))}
 body.game-only .system-controls{bottom:0}
 body.game-only .system-controls button{height:50px;min-height:50px}
 body.game-only .system-controls button::before{top:6px}
}
@media (orientation:portrait) and (max-width:1024px){
 body.game-only.native-app{--app-toolbar:0px}
 body.game-only .game{padding:max(20px,env(safe-area-inset-top)) max(6px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(6px,env(safe-area-inset-left))}
 body.game-only .screen-bezel{display:block;position:relative;width:100%;flex-shrink:0;padding:20px 12px 18px;background:#85838f;border-radius:12px 12px 40px 12px;box-shadow:inset 1px 1px 2px #b4b2bb,inset -2px -2px 3px #5e5b68,0 2px 2px #58565f77}
 body.game-only .screen-bezel::before{content:"";position:absolute;left:14px;right:14px;top:7px;height:2px;background:#95416f;box-shadow:0 5px #403b72}
 body.game-only .screen-bezel>.scene{width:100%;height:auto;aspect-ratio:16/9;box-shadow:0 0 0 2px #4e4d59;border-radius:3px;overflow:hidden}
 body.game-only .screen-bezel>.scene>canvas{width:100%;height:100%;object-fit:contain}
 body.game-only[data-portrait-play="true"] .screen-bezel>.scene{aspect-ratio:4/3}
 body.game-only[data-portrait-play="true"] .screen-bezel>.scene>canvas{width:133.333333%;max-width:none;height:100%;object-fit:fill;transform:translateX(var(--view-crop,0%))}
 body.game-only .game>.controls{padding-bottom:100px;min-height:calc(var(--pad-key)*3 + 100px)}
 body.game-only .controls .action-controls button,body.game-only .controls .action-controls .jump{font-size:24px;letter-spacing:0}
 body.game-only .system-controls{left:44%;bottom:clamp(24px,8dvh,72px)}
 body.game-only .system-controls button::after{color:#36336b}
}
@media (orientation:landscape){
 body.game-only.native-app .game{padding-bottom:60px}
 body.game-only.native-app .scene{width:min(calc(100vw - var(--app-left) - var(--app-right)),calc((100dvh - 60px)*16/9))}
}
@media (orientation:portrait) and (max-width:1024px){
 body.game-only .controls .action-controls{height:calc(var(--action-key)*3)}
 body.game-only .controls .action-controls button,body.game-only .controls .action-controls .jump{height:calc(var(--action-key) + 20px);background:none;color:transparent;font-size:0;text-shadow:none;border-radius:8px}
 body.game-only .controls .action-controls button::before{content:"";position:absolute;inset:0 0 auto;height:var(--action-key);background:url('assets/handheld-v2/button.png') center/118% 118% no-repeat;border-radius:50%}
 body.game-only .controls .action-controls button::after{content:attr(data-console-symbol);position:absolute;right:4px;bottom:0;color:#36336b;font:900 18px/20px system-ui;transform:rotate(-15deg)}
 body.game-only .action-controls #kickControl{top:calc(var(--action-key)*.75)}
 body.game-only .action-controls #longJumpControl{top:calc(var(--action-key)*1.6)}
 body.game-only .action-controls[data-actions="2"] #longJumpControl{top:calc(var(--action-key)*.75)}
 body.game-only .game>.controls{padding-bottom:80px}
}
.bezel-caption,.console-brand{display:none}
@media (orientation:portrait) and (max-width:1024px){
 body.game-only .game{padding-top:calc(max(20px,env(safe-area-inset-top)) + 24px)}
 body.game-only .screen-bezel{padding-top:34px}
 body.game-only .screen-bezel::before{top:13px}
 body.game-only .bezel-caption{display:block;position:absolute;top:9px;right:44px;padding:0 6px;background:#85838f;color:#e0dfe5;font:500 clamp(8px,2.1vw,11px)/16px Arial,sans-serif;letter-spacing:.25px;white-space:nowrap}
 body.game-only .console-brand{position:absolute;top:calc(100% + 9px);left:12px;display:inline-flex;align-items:baseline;gap:5px;color:#292d70;white-space:nowrap;font-family:Arial,sans-serif;font-style:italic;pointer-events:none}
 body.game-only .brand-adventure{font-size:clamp(12px,3.5vw,16px);font-weight:650}
 body.game-only .brand-name{font-size:clamp(24px,7.2vw,34px);font-weight:750;letter-spacing:-.8px}
 body.game-only .brand-trademark{align-self:flex-start;margin-top:20px;font-size:clamp(7px,1.8vw,9px);font-style:normal;font-weight:600}
}
@media (orientation:portrait) and (max-height:650px){
 body.game-only .game>.controls{padding-top:40px}
 body.game-only .system-controls{bottom:14px;left:42%}
}
