/* TASK179: fixed layout measurement and explicit selectors for older WebViews. */
.runtime-viewport-probe {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
  box-sizing: border-box;
  padding-top: var(--safe-area-inset-top, env(safe-area-inset-top, 0px));
  padding-right: var(--safe-area-inset-right, env(safe-area-inset-right, 0px));
  padding-bottom: var(--safe-area-inset-bottom, env(safe-area-inset-bottom, 0px));
  padding-left: var(--safe-area-inset-left, env(safe-area-inset-left, 0px));
  visibility: hidden;
  pointer-events: none;
}
.game-shell[data-runtime-target="xhs"][data-runtime-geometry="measured"] .preview-device,
.game-shell[data-runtime-target="web"][data-runtime-geometry="measured"] .preview-device {
  position: fixed;
  left: 0;
  top: 0;
  width: 100%;
  height: 100%;
}
.game-shell[data-runtime-target="xhs"][data-runtime-geometry="measured"] .game-stage,
.game-shell[data-runtime-target="web"][data-runtime-geometry="measured"] .game-stage {
  position: absolute;
  left: var(--runtime-center-x, 50%);
  top: var(--runtime-center-y, 50%);
  width: var(--runtime-layout-width, 960px);
  height: var(--runtime-layout-height, 540px);
  max-width: none;
  max-height: none;
  border: 0;
  box-shadow: none;
  transform-origin: center;
  transform: translate(-50%, -50%) scale(var(--xhs-stage-scale, 1));
}
.game-shell[data-runtime-target="xhs"][data-runtime-geometry="measured"][data-xhs-orientation-mode="css-rotated"] .game-stage,
.game-shell[data-runtime-target="web"][data-runtime-geometry="measured"][data-xhs-orientation-mode="css-rotated"] .game-stage {
  transform: translate(-50%, -50%) rotate(90deg) scale(var(--xhs-stage-scale, 1));
}
.game-shell[data-runtime-target="xhs"] .preview-toolbar,
.game-shell[data-runtime-target="xhs"] .preview-speaker,
.game-shell[data-runtime-target="xhs"] .preview-safe-area,
.game-shell[data-runtime-target="xhs"] .orientation-note { display: none !important; }
.game-shell[data-runtime-target="xhs"] canvas,
.game-shell[data-runtime-target="xhs"] .formal-ui { visibility: visible; }
.game-shell[data-runtime-target="xhs"] .touch-joystick.is-visible { display: grid; }
/* The measured stage already sits inside the real viewport safe area. */
.game-shell[data-runtime-geometry="measured"] .formal-ui {
  --safe-area-inset-top: 0px;
  --safe-area-inset-right: 0px;
  --safe-area-inset-left: 0px;
}
