/* Play fills the viewport; all controls share its coordinate space. */
.v7-playing{overflow:hidden;overscroll-behavior:none;background:#071c28}
.v7-playing .shell{width:100%;margin:0}.v7-playing #gameScreen{position:fixed;inset:0;z-index:20;margin:0;padding:0;display:flex;align-items:center;justify-content:center;background:#071c28;touch-action:none}
.v7-playing .game-frame,:root:fullscreen .game-frame{position:relative;width:100%;height:100%;max-width:none;margin:0;border:0;border-radius:0;overflow:hidden;isolation:isolate;background:#071c28;box-shadow:none}
.game-frame:before{content:"";position:absolute;inset:-20px;background:linear-gradient(#0a2531aa,#071c28cc),var(--stage-art) center/cover;filter:blur(12px);z-index:-1}
.v7-playing .game-frame #gameCanvas{display:block;width:100%;height:100%;object-fit:contain;position:absolute;inset:0;touch-action:none}
.v7-playing .v7-key-guide{display:none}.screen-reader-only{position:absolute!important;width:1px;height:1px;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.game-frame .play-topbar{position:absolute;z-index:4;top:max(12px,env(safe-area-inset-top));right:max(16px,env(safe-area-inset-right));padding:0;min-height:0;margin:0;gap:0}
.game-frame .game-buttons{gap:8px}.game-frame .game-buttons .btn{display:grid;place-items:center;width:44px;height:44px;min-height:44px;padding:10px;border-radius:50%;border:1px solid #fff6;background:#112e3eae;color:#fff6df;backdrop-filter:blur(8px);box-shadow:0 2px 10px #06162430}
.game-buttons svg{width:22px;height:22px}.game-frame .game-buttons .btn:hover{transform:none}
.play-status{position:absolute;z-index:3;left:max(16px,env(safe-area-inset-left));top:max(12px,env(safe-area-inset-top));width:180px;padding:9px 12px;border:1px solid #edd89c33;border-radius:14px;background:#0b2639c7;color:#fff0d0;pointer-events:none;box-shadow:0 3px 16px #06172720}
.status-line{display:flex;align-items:center;justify-content:space-between;font-size:13px;line-height:1.2}.coin-badge{font-size:11px;color:#f3d18d}.coin-badge i{font-style:normal}.life-line{display:flex;align-items:center;gap:7px;margin:7px 0 5px}.life-line span{font-size:9px;min-width:32px;text-align:right}.life-line progress{flex:1;min-width:0}
.game-frame progress{display:block;appearance:none;-webkit-appearance:none;border:0;border-radius:6px;overflow:hidden;background:#ffffff29;height:8px;width:100%}.game-frame progress::-webkit-progress-bar{background:#ffffff29;border-radius:6px}.game-frame progress::-webkit-progress-value{background:#ee8a98;border-radius:6px}.game-frame progress::-moz-progress-bar{background:#ee8a98;border-radius:6px}#v8Mp{height:4px}#v8Mp::-webkit-progress-value{background:#8cd9db}#v8Mp::-moz-progress-bar{background:#8cd9db}
.play-goal{position:absolute;z-index:3;top:max(12px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);min-width:180px;text-align:center;background:#0b2639b0;padding:8px 17px;border-radius:14px;color:#fff0d0;pointer-events:none}.play-goal>span{display:block;font-size:9px;color:#ebce98;margin-bottom:3px}.play-goal strong{display:block;font-size:13px}.play-goal small{display:block;font-size:9px;color:#c8dedc;margin-top:3px}
.play-boss{position:absolute;z-index:3;top:86px;left:50%;transform:translateX(-50%);width:min(330px,45%);background:#321d32cd;border:1px solid #f8bab655;border-radius:12px;padding:8px 14px;text-align:center;color:#fff1d4;pointer-events:none}.play-boss strong{display:block;font-size:12px;margin-bottom:5px}.play-boss small{display:block;font-size:10px;margin-top:5px}.rotate-tip{display:none}
.game-frame #mobileControls{position:absolute;inset:0;z-index:4;max-width:none;margin:0;display:block;pointer-events:none;touch-action:none}
#mobileControls .control-group{position:absolute;gap:10px;pointer-events:none}
#mobileControls .move-controls{left:max(16px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));display:flex}
.game-frame #mobileControls .ctl{pointer-events:auto;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;width:58px;height:58px;min-width:0;padding:8px;border:1px solid #fff9;border-radius:50%;color:#fff7e2;background:#102e428c;box-shadow:inset 0 1px 1px #ffffff30,0 3px 12px #071d3333;backdrop-filter:blur(3px);font-size:10px;font-weight:750;line-height:1.1;touch-action:none;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none;transition:background .1s,transform .1s}
#mobileControls svg{display:block;width:25px;height:25px;pointer-events:none}#mobileControls span{pointer-events:none}#mobileControls .move-controls svg{width:28px;height:28px}#mobileControls .move-controls span:empty{display:none}
#mobileControls .action-controls{right:max(16px,env(safe-area-inset-right));bottom:max(14px,env(safe-area-inset-bottom));width:204px;height:145px;display:block}
#mobileControls .action-controls .ctl{position:absolute}
.game-frame #mobileControls [data-key=attack]{right:66px;bottom:30px;width:76px;height:76px;background:#e8c685d1;color:#243b41;border:2px solid #fff1b8b8;font-size:12px}
#mobileControls [data-key=attack] svg{width:31px;height:31px}.game-frame #mobileControls [data-action=jump]{right:0;bottom:0;width:62px;height:62px;background:#284f5bc4}
.game-frame #mobileControls [data-action=dash]{left:0;bottom:0;width:52px;height:52px}.game-frame #mobileControls [data-action=special]{right:0;top:0;width:54px;height:54px;background:#60496bba;color:#ffe9b8}.game-frame #mobileControls [data-action=weapon]{left:0;top:8px;width:46px;height:46px;background:#17364cb0;font-size:9px}.game-frame #mobileControls [data-action=weapon] svg{width:20px;height:20px}
.game-frame #mobileControls .ctl[data-pressed='1']{background:#ffe5a4eb;color:#17394b;transform:scale(.94);filter:none;border-color:#fff3c9}.game-frame #mobileControls .cooling{background:#213a4c99;color:#d4ccda;border-color:#c4bed166}
.game-frame #mobileControls #interactBtn{position:absolute;left:50%;bottom:max(20px,env(safe-area-inset-bottom));transform:translateX(-50%);width:132px;height:46px;min-width:0;flex-direction:row;gap:8px;border-radius:23px;background:#f4db98ef;color:#24383b;border:1px solid #fff3c5;box-shadow:0 3px 16px #10251f50;font-size:12px}
.v7-playing #saveNotice:not(.hidden){position:fixed;top:85px;left:15px;right:15px;z-index:110;margin:0;font-size:11px;padding:8px 12px}.v7-playing .toast{bottom:180px;z-index:130}
@media(min-width:1100px) and (min-height:650px){.play-status{top:22px;left:24px;width:205px;padding:12px 15px}.play-goal{top:22px}.game-frame .play-topbar{top:22px;right:24px}#mobileControls .move-controls{left:24px;bottom:24px}#mobileControls .action-controls{right:24px;bottom:24px}.play-boss{top:105px}}
@media(max-height:450px) and (orientation:landscape){.play-status{width:152px;top:8px;left:max(10px,env(safe-area-inset-left));padding:7px 9px}.play-goal{top:8px;min-width:150px;padding:6px 12px}.play-goal strong{font-size:12px}.play-goal small{font-size:8px}.game-frame .play-topbar{top:8px;right:max(10px,env(safe-area-inset-right))}.game-frame .game-buttons .btn{width:44px;height:44px}.play-boss{top:72px;width:260px;padding:6px 10px}.play-boss small{font-size:9px}.game-frame #mobileControls .move-controls{left:max(10px,env(safe-area-inset-left));bottom:max(10px,env(safe-area-inset-bottom))}.game-frame #mobileControls .action-controls{right:max(10px,env(safe-area-inset-right));bottom:max(10px,env(safe-area-inset-bottom))}.game-frame #mobileControls #interactBtn{bottom:max(12px,env(safe-area-inset-bottom));width:120px}.v7-playing .toast{bottom:163px}}
@media(max-width:600px) and (orientation:portrait){.play-status{top:max(14px,env(safe-area-inset-top));left:12px;width:166px}.game-frame .play-topbar{top:max(14px,env(safe-area-inset-top));right:12px}.play-goal{top:104px;width:230px}.play-boss{top:180px;width:270px;max-width:85%}.rotate-tip{display:block;position:absolute;z-index:2;top:74px;left:16px;right:16px;margin:0;text-align:center;color:#c5d6d6;font-size:10px;pointer-events:none}.game-frame #mobileControls .move-controls{left:12px;bottom:max(32px,env(safe-area-inset-bottom))}.game-frame #mobileControls .action-controls{right:12px;bottom:max(32px,env(safe-area-inset-bottom));width:190px}.game-frame #mobileControls [data-key=attack]{right:64px;width:70px;height:70px}.game-frame #mobileControls [data-action=dash]{width:46px;height:46px}.game-frame #mobileControls .move-controls .ctl{width:54px;height:54px}.game-frame #mobileControls #interactBtn{bottom:194px}.v7-playing .toast{bottom:250px}.v7-playing #saveNotice:not(.hidden){top:160px}}
@media(max-width:360px) and (orientation:portrait){.game-frame #mobileControls .move-controls{gap:6px;left:8px}.game-frame #mobileControls .move-controls .ctl{width:46px;height:46px}.game-frame #mobileControls .action-controls{right:8px}.play-status{width:150px}}
@media(prefers-reduced-motion:reduce){.game-frame #mobileControls .ctl{transition:none}}
.game-frame #mobileControls #interactBtn{font-size:11px;gap:6px;white-space:nowrap}.game-frame #interactBtn svg{width:20px;height:20px;flex-shrink:0}
.toast{opacity:0;visibility:hidden;pointer-events:none}.toast.show{opacity:1;visibility:visible}
