:root {--game-vw:1vw;--game-vh:1dvh;}
#gameShell {position:fixed;left:0;top:0;width:calc(100 * var(--game-vw));height:calc(100 * var(--game-vh));transform:translateZ(0);}
.landscape-fallback #gameShell {left:100%;transform-origin:0 0;transform:rotate(90deg);}
.landscape-fallback {
  --safe-left:max(8px,env(safe-area-inset-top));
  --safe-right:max(8px,env(safe-area-inset-bottom));
  --safe-top:max(8px,env(safe-area-inset-right));
  --safe-bottom:max(8px,env(safe-area-inset-left));
}
/* Modal dialogs live in the browser's top layer, outside the transformed shell. */
.landscape-fallback dialog:not(#playGate)[open] {left:50%;top:50%;right:auto;bottom:auto;margin:0;transform:translate(-50%,-50%) rotate(90deg);}
.play-gate #installGame {min-height:44px;font-weight:700;font-size:14px;min-width:220px;padding:8px 15px;}
.play-gate .install-help {font-size:12px;max-width:340px;}
.play-gate .install-help:empty {display:none;}
@media (max-height:450px) {
  dialog.play-gate[open] {gap:8px;}
  .play-gate .gate-crest {width:42px;height:42px;}
  .play-gate h1 {font-size:30px;}
  .play-gate h2 {font-size:17px;}
  .play-gate p {font-size:12px;}
}
