/* Expanded play: a common frame, with controls fitted to each game's shape. */
[data-game-view] .game-view-toolbar{display:none}
[data-expanded-game] canvas:focus-visible{outline:2px solid #ffe58a;outline-offset:-3px}
[data-expanded-game] #expand{white-space:nowrap}
html.arcade-play-lock{overflow:hidden;overscroll-behavior:none;height:100%}
body[data-expanded-game].arcade-play-lock{position:fixed;top:var(--arcade-scroll-y,0px);left:0;right:0;width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
body[data-expanded-game] [data-game-view].is-play-view{position:fixed;z-index:1000;top:var(--play-top,0px);left:var(--play-left,0px);width:var(--play-width,100vw);height:var(--play-height,100dvh);min-width:0;min-height:0;max-width:none;max-height:none;margin:0;border:0;border-radius:0;box-shadow:none;background:#111c39;display:flex;flex-direction:column;padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);overflow:hidden;overscroll-behavior:none;touch-action:manipulation;box-sizing:border-box}
[data-game-view].is-play-view[data-mode="playing"],[data-game-view].is-play-view[data-mode="racing"]{touch-action:none}
[data-game-view].is-play-view [data-play-outside],.is-play-view .control-strip,.is-play-view .start-controls{display:none!important}
[data-game-view].is-play-view .game-view-toolbar{position:relative;z-index:40;display:flex;flex:0 0 44px;min-height:44px;justify-content:space-between;align-items:center;gap:4px;padding:0 10px;background:#1b2c50;border-bottom:1px solid #8298cd40;box-sizing:border-box}
.game-view-toolbar strong{font:750 11px ui-sans-serif,system-ui,sans-serif;letter-spacing:.04em;color:#ffeeb6;white-space:nowrap}
.game-view-toolbar>div{display:flex;align-items:center;gap:2px}
[data-game-view] .game-view-toolbar button{font:600 10px ui-sans-serif,system-ui,sans-serif;color:#f3f6ff;min-height:44px;min-width:44px;margin:0;padding:7px;border:0;background:transparent;border-radius:6px;cursor:pointer;touch-action:manipulation}
[data-game-view] .game-view-toolbar button:disabled{opacity:.4;cursor:default}
[data-game-view] .game-view-toolbar #view-exit{color:#ffe4a1}
[data-game-view].is-play-view [data-play-stage]{position:relative;flex:1 1 0;z-index:1;width:100%;height:auto;min-width:0;min-height:0;max-height:none;aspect-ratio:auto;align-self:stretch;overflow:hidden;box-sizing:border-box}
[data-game-view].is-play-view [data-play-stage]>canvas{display:block;width:100%;height:100%;touch-action:none}
[data-game-view].is-play-view [data-play-controls]{flex:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:10px;margin:0;padding:10px 18px;background:linear-gradient(135deg,#25365a,#302b5f);border-top:1px solid #8799cb55;box-sizing:border-box;touch-action:none}
[data-game-view].is-play-view [data-play-controls] button{min-width:44px;min-height:48px;touch-action:none;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
[data-game-view].is-play-view .hud-top{padding:9px 12px 16px;gap:6px;background:linear-gradient(#101a38eb,#101a3855,transparent)}
[data-game-view].is-play-view .score{font-size:22px;line-height:1.1;letter-spacing:0}
[data-game-view].is-play-view .eyebrow{font-size:7px;letter-spacing:.08em}
[data-game-view].is-play-view .livesbox{min-width:82px}
[data-game-view].is-play-view .lives{gap:4px;margin-top:5px}
[data-game-view].is-play-view .lives span{width:9px;height:11px}
[data-game-view].is-play-view :is(.tower-status,.crossing-status,.squadron-status,.garden-status){flex:0 0 auto;padding:6px 12px;min-height:24px;gap:8px;font-size:8px;box-sizing:border-box}
[data-game-view].is-play-view .notice{top:40%;font-size:9px;max-width:90%}
/* Menus cover the control deck, but leave Exit and Sound reachable. */
[data-game-view].is-play-view :is(.veil,.vr-overlay,.ps-overlay){position:fixed;z-index:30;inset:auto;top:calc(var(--play-top,0px) + 44px + env(safe-area-inset-top,0px));left:var(--play-left,0px);width:var(--play-width,100vw);height:calc(var(--play-height,100dvh) - 44px - env(safe-area-inset-top,0px));max-height:none;overflow-y:auto;overscroll-behavior:contain;align-items:safe center;justify-content:center;place-items:safe center;padding:18px 20px calc(18px + env(safe-area-inset-bottom,0px));touch-action:pan-y;background:#0b163be8;box-sizing:border-box}
[data-game-view].is-play-view :is(.launch-panel,.vr-menu,.ps-menu){width:100%;max-width:410px;padding:22px 24px;margin:auto;flex-shrink:0;box-sizing:border-box}
[data-game-view].is-play-view :is(.launch-panel,.vr-menu,.ps-menu) h1{font-size:30px;line-height:1.12}
[data-game-view].is-play-view :is(.launch-panel,.vr-menu,.ps-menu) p{font-size:12px;line-height:1.5;margin:12px 0 16px}
[data-game-view].is-play-view .touch-tip{display:block!important;font-size:10px!important}
[data-game-view].is-play-view :is(.alien-emblem,.rivet-emblem,.frog-emblem,.squadron-emblem,.garden-emblem,.ps-crystal){display:none}
/* Landscape gives tall games a separate thumb-control rail. */
body[data-expanded-game] :is([data-game-view="rivet"],[data-game-view="frog"],[data-game-view="starfall"],[data-game-view="chromapede"]).is-play-view[data-orientation="landscape"]{display:grid;grid-template-columns:minmax(0,1fr) 154px;grid-template-rows:44px minmax(0,1fr) 25px;grid-template-areas:"toolbar toolbar" "stage controls" "status controls"}
[data-game-view].is-play-view[data-orientation="landscape"]>.game-view-toolbar{grid-area:toolbar}
[data-game-view].is-play-view[data-orientation="landscape"]>[data-play-stage]{grid-area:stage;height:100%}
:is([data-game-view="rivet"],[data-game-view="frog"],[data-game-view="starfall"],[data-game-view="chromapede"]).is-play-view[data-orientation="landscape"]>[data-play-controls]{grid-area:controls;flex-direction:column;justify-content:center;padding:10px;gap:12px;border-top:0;border-left:1px solid #8799cb55}
[data-game-view].is-play-view[data-orientation="landscape"]>:is(.tower-status,.crossing-status,.squadron-status,.garden-status){grid-area:status;font-size:7px}
[data-game-view="rivet"].is-play-view .tower-touch{gap:8px;padding:10px}
[data-game-view="rivet"].is-play-view .tower-touch :is(.run-controls,.climb-controls){display:flex;gap:5px}
[data-game-view="rivet"].is-play-view .tower-touch button{width:48px;padding:5px}
[data-game-view="rivet"].is-play-view .tower-touch .jump-button{width:66px}
[data-game-view="frog"].is-play-view .frog-touch{justify-content:center;padding:8px 16px}
[data-game-view="frog"].is-play-view .frog-pad{display:grid;grid-template-columns:repeat(3,52px);grid-template-rows:repeat(2,46px);gap:5px}
[data-game-view="frog"].is-play-view .frog-pad button{min-height:44px;width:52px;height:46px;padding:3px}
[data-game-view="frog"].is-play-view .frog-pad [data-control="up"]{grid-column:2;grid-row:1}
[data-game-view="frog"].is-play-view .frog-pad [data-control="left"]{grid-column:1;grid-row:2}
[data-game-view="frog"].is-play-view .frog-pad [data-control="down"]{grid-column:2;grid-row:2}
[data-game-view="frog"].is-play-view .frog-pad [data-control="right"]{grid-column:3;grid-row:2}
[data-game-view="frog"].is-play-view .frog-touch p{display:none}
[data-game-view="frog"].is-play-view[data-orientation="landscape"] .frog-pad{grid-template-columns:repeat(3,44px);gap:3px}
[data-game-view="frog"].is-play-view[data-orientation="landscape"] .frog-pad button{width:44px}
[data-game-view="chromapede"].is-play-view .garden-pad{display:grid;grid-template-columns:repeat(3,46px);grid-template-rows:repeat(2,44px);gap:4px}
[data-game-view="chromapede"].is-play-view .garden-pad button{width:46px;height:44px;min-height:44px;padding:2px}
[data-game-view="chromapede"].is-play-view[data-orientation="landscape"] .garden-pad{grid-template-columns:repeat(3,42px);gap:2px}
[data-game-view="chromapede"].is-play-view[data-orientation="landscape"] .garden-pad button{width:44px}
[data-game-view="starfall"].is-play-view[data-orientation="landscape"] .turn-controls{gap:6px}
[data-game-view="starfall"].is-play-view[data-orientation="landscape"] .turn-controls button{width:58px;padding:5px}
/* Volt keeps movement and abilities on opposite sides of the lower edge. */
[data-game-view="volt"].is-play-view .vr-controls{gap:8px;padding:8px 12px}
[data-game-view="volt"].is-play-view .vr-control-tip{display:none}
[data-game-view="volt"].is-play-view :is(.vr-direction,.vr-abilities){gap:6px}
[data-game-view="volt"].is-play-view .vr-controls button{width:clamp(44px,11vw,68px);height:55px;padding:4px;min-height:48px}
[data-game-view="volt"].is-play-view .vr-controls button span{font-size:7px}
[data-game-view="volt"].is-play-view .vr-hud{padding:10px 12px;gap:8px}
[data-game-view="volt"].is-play-view .vr-score>b{font-size:22px}
[data-game-view="volt"].is-play-view .vr-hud small{font-size:7px}
[data-game-view="volt"].is-play-view .vr-meters{gap:6px}
[data-game-view="volt"].is-play-view .vr-energy{width:75px}
[data-game-view="volt"].is-play-view .vr-run-info>span{max-width:115px;font-size:7px}
[data-game-view="volt"].is-play-view .vr-notice{top:25%;font-size:9px}
/* Prism: a true 1:2 well, hold/next previews, and six reachable buttons. */
[data-game-view="prism"].is-play-view .ps-hud{flex:0 0 auto;padding:9px 14px;gap:8px;min-height:52px}
[data-game-view="prism"].is-play-view .ps-hud b{font-size:19px}
[data-game-view="prism"].is-play-view .ps-hud span{font-size:7px}
[data-game-view="prism"].is-play-view .ps-arena{display:grid;grid-template-columns:48px auto 48px;gap:9px;justify-content:center;align-content:center;padding:6px;overflow:visible}
[data-game-view="prism"].is-play-view .ps-well{height:var(--stack-height);width:calc(var(--stack-height) / 2);min-width:0;max-width:none;max-height:none;aspect-ratio:1/2;box-sizing:content-box}
[data-game-view="prism"].is-play-view .ps-dock{width:48px;min-width:0}
[data-game-view="prism"].is-play-view .ps-dock canvas{width:48px;height:auto}
[data-game-view="prism"].is-play-view .ps-label{font-size:7px}
[data-game-view="prism"].is-play-view .ps-mini-note{font-size:6px}
[data-game-view="prism"].is-play-view .ps-meter{margin-top:18px}
[data-game-view="prism"].is-play-view .ps-meter small{font-size:7px}
[data-game-view="prism"].is-play-view .ps-controls{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));padding:9px 10px;gap:5px}
[data-game-view="prism"].is-play-view .ps-controls button{min-width:0;height:52px;padding:5px 1px}
[data-game-view="prism"].is-play-view .ps-controls button span{font-size:7px}
[data-game-view="prism"].is-play-view .ps-status{flex:0 0 auto;font-size:7px;padding:6px 12px;min-height:22px;box-sizing:border-box}
body[data-expanded-game] [data-game-view="prism"].is-play-view[data-orientation="landscape"]{display:grid;grid-template-columns:90px minmax(0,1fr) 126px;grid-template-rows:44px minmax(0,1fr) 22px;grid-template-areas:"toolbar toolbar toolbar" "hud stage controls" "status status status"}
[data-game-view="prism"].is-play-view[data-orientation="landscape"] .ps-hud{grid-area:hud;display:flex;flex-direction:column;justify-content:center;padding:8px;gap:14px;border:0}
[data-game-view="prism"].is-play-view[data-orientation="landscape"] .ps-hud b{font-size:17px}
[data-game-view="prism"].is-play-view[data-orientation="landscape"] .ps-controls{grid-area:controls;grid-template-columns:repeat(2,minmax(0,1fr));align-content:center;padding:8px;gap:8px;border:0}
[data-game-view="prism"].is-play-view[data-orientation="landscape"] .ps-status{grid-area:status}
/* Racing: explicit gas, brake, drift and a readable item slot, even at 320px. */
body.touch-mode .touch-controls .gas{background:#a2efb3;color:#18372d;border-color:#d0ffde;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;font-weight:800}
body.touch-mode .touch-controls .gas small{font-size:7px;white-space:nowrap}
body.touch-mode .race-shell .touch-controls{left:max(12px,env(safe-area-inset-left,0px));right:max(12px,env(safe-area-inset-right,0px));bottom:max(12px,env(safe-area-inset-bottom,0px));gap:8px;padding:0;background:none;border:0}
body.touch-mode .race-shell .touch-controls>div{gap:6px}
body.touch-mode .race-shell .touch-controls button{width:48px;height:56px;min-width:44px;min-height:48px;font-size:11px;padding:4px}
body.touch-mode .race-shell .touch-controls .gas{width:65px;font-size:16px}
body.touch-mode .race-shell .touch-controls .drift{width:50px}
body.touch-mode .race-shell .item-slot{left:auto;right:max(12px,env(safe-area-inset-right,0px));bottom:calc(82px + env(safe-area-inset-bottom,0px));transform:none;padding:8px;min-height:50px;max-width:155px;gap:7px;border-radius:12px}
body.touch-mode .race-shell .item-slot>span:nth-child(2){display:flex;flex-direction:column;gap:4px}
body.touch-mode .race-shell .item-slot #item-symbol{font-size:24px;width:25px}
body.touch-mode .race-shell .item-slot #item-name{font-size:9px}
body.touch-mode .race-shell .item-slot #item-hint{font-size:7px;max-width:102px;white-space:normal;line-height:1.2}
body.touch-mode .race-shell .race-info{left:max(12px,env(safe-area-inset-left,0px));right:auto;bottom:calc(84px + env(safe-area-inset-bottom,0px))}
body.touch-mode .race-shell .map-panel{display:none}
body.touch-mode .race-shell .speed-panel{text-align:left;width:125px}
body.touch-mode .race-shell .speed-panel>span b{font-size:30px}
body.touch-mode .race-shell .drift-meter{width:125px}
body.touch-mode .race-shell .drift-meter>span{font-size:6px}
[data-game-view="racing"].is-play-view .hud{top:calc(56px + env(safe-area-inset-top,0px));left:max(12px,env(safe-area-inset-left,0px));gap:16px}
[data-game-view="racing"].is-play-view .notice{top:35%;font-size:10px}
[data-game-view="racing"].is-play-view .overlay{position:absolute;z-index:30;inset:calc(44px + env(safe-area-inset-top,0px)) 0 0;padding:20px;overflow-y:auto;align-items:safe center;overscroll-behavior:contain;touch-action:pan-y}
[data-game-view="racing"].is-play-view .center-panel{z-index:30;top:calc(56px + env(safe-area-inset-top,0px));left:50%;transform:translateX(-50%);max-height:calc(var(--play-height) - 76px - env(safe-area-inset-top,0px) - env(safe-area-inset-bottom,0px));overflow-y:auto;overscroll-behavior:contain;touch-action:pan-y}
[data-game-view="racing"].is-play-view .scene-caption{display:none}
[data-game-view="racing"].is-play-view .game-view-toolbar{flex-shrink:0}
@media(max-width:600px){
  [data-expanded-game] .masthead{flex-wrap:wrap;gap:12px}
  [data-expanded-game] .top-actions{width:100%;gap:6px;justify-content:flex-end}
  [data-expanded-game] .top-actions .arcade-link{margin-right:auto}
  [data-expanded-game] .top-actions .quiet{font-size:10px;padding:8px 9px}
  [data-expanded-game] .header-actions{gap:4px}
  [data-expanded-game] .header-actions #expand{font-size:10px;padding:8px}
}
@media(max-width:370px){
  .game-view-toolbar strong{font-size:9px}
  [data-game-view] .game-view-toolbar button{font-size:9px;padding:5px}
  [data-game-view="rivet"].is-play-view .tower-touch{gap:5px;padding:8px}
  [data-game-view="rivet"].is-play-view .tower-touch button{width:44px;min-width:44px}
  [data-game-view="rivet"].is-play-view .tower-touch .jump-button{width:66px}
  [data-game-view="volt"].is-play-view .vr-score small{display:none}
}
@media(any-pointer:coarse){
  [data-expanded-game] .touch-controls{display:flex}
}
/* Hidden must beat the explicit flex/grid layout declarations above. */
[data-game-view] [hidden]{display:none!important}
/* Keep scoreboard rows out of the playfield and out of implicit grid rows. */
[data-game-view].is-play-view :is(.frog-hud,.battle-hud){flex:0 0 auto;min-height:49px;padding:7px 12px;box-sizing:border-box}
[data-game-view].is-play-view .frog-hud #time{font-size:22px}
[data-game-view].is-play-view .time-track{flex:0 0 3px;height:3px}
body[data-expanded-game] :is([data-game-view="frog"],[data-game-view="starfall"],[data-game-view="chromapede"]).is-play-view[data-orientation="landscape"]{grid-template-rows:44px 49px minmax(0,1fr) 25px;grid-template-areas:"toolbar toolbar" "hud controls" "stage controls" "status controls"}
[data-game-view].is-play-view[data-orientation="landscape"]>:is(.frog-hud,.battle-hud){grid-area:hud}
[data-game-view="frog"].is-play-view[data-orientation="landscape"]>.time-track{position:absolute;top:calc(93px + env(safe-area-inset-top,0px));left:env(safe-area-inset-left,0px);right:calc(154px + env(safe-area-inset-right,0px));z-index:2}
:is([data-game-view="starfall"],[data-game-view="chromapede"]).is-play-view[data-orientation="landscape"] .fire-button{width:100%;max-width:none;flex:0 0 auto;min-height:56px}
[data-game-view="starfall"].is-play-view[data-orientation="landscape"] .turn-controls{flex:0 0 auto}
[data-game-view="volt"].is-play-view .vr-hud{top:8px;left:8px;right:8px;padding:0;gap:5px}
[data-game-view="volt"].is-play-view :is(.vr-score,.vr-meters,.vr-run-info){padding:7px;min-width:0}
[data-game-view="volt"].is-play-view .vr-energy{min-width:0;width:60px}
[data-game-view="volt"].is-play-view .vr-controls :is(.vr-jump,.vr-boost){min-width:44px}
body[data-expanded-game] [data-game-view="invaders"].is-play-view[data-orientation="landscape"]{display:grid;grid-template-columns:minmax(0,1fr) 154px;grid-template-rows:44px minmax(0,1fr);grid-template-areas:"toolbar toolbar" "stage controls"}
[data-game-view="invaders"].is-play-view[data-orientation="landscape"]>[data-play-controls]{grid-area:controls;flex-direction:column;justify-content:center;padding:10px;gap:12px;border-top:0;border-left:1px solid #8799cb55}
[data-game-view="invaders"].is-play-view[data-orientation="landscape"] .turn-controls{display:flex;flex:0 0 auto;width:100%;gap:6px}
[data-game-view="invaders"].is-play-view[data-orientation="landscape"] .turn-controls button{width:58px;padding:5px}
[data-game-view="invaders"].is-play-view[data-orientation="landscape"] .fire-button{flex:0 0 auto;width:100%;min-height:64px}
