body { gap:6px; padding:52px 10px 8px; }
.screen-wrap { flex:0 0 auto; aspect-ratio:4/3; width:min(calc(100vw - 20px),calc((100dvh - 96px)*4/3)); max-width:none; }
canvas#screen { width:100%;height:100%; }
.pad { flex:0 0 auto; max-width:none; }
.kbd-bar { flex:0 0 auto; padding:0 4px; line-height:1.5; }
.audio-ctl { max-width:calc(100vw - 145px); gap:7px; }
.audio-ctl #fullscreenBtn { white-space:nowrap; font-size:8px; }
@media (hover:hover) and (pointer:fine) {
 .screen-wrap { width:min(calc(100vw - 20px),calc((100dvh - 96px)*4/3)); }
}
@media (max-width:560px) {
 body {gap:6px;padding:48px 6px 8px;}
 .audio-ctl {left:6px;top:8px;padding:6px;gap:5px;}
 .audio-ctl input[type=range] {width:42px;}
 .audio-ctl #fullscreenBtn {font-size:6px;}
 .quit-link {right:6px;top:8px;padding:7px 6px!important;font-size:7px!important;}
}
/* Audio recovery remains available without covering the game on narrow screens. */
.audio-ctl {flex-wrap:wrap;}
.audio-ctl #audioStatus {font-size:7px;line-height:1.4;}
.audio-ctl #audioStatus[hidden] {display:none;}
