/* Cover scrolling dialogs and controls as well as the document. More specific
   game-surface rules retain touch-action:none. Do not discard repeated taps. */
*{touch-action:manipulation}

/* Every game/preview entry uses the same viewport and native-drag policy. */
html.wf-page-lock,body.wf-page-lock{width:100%;height:100%;overflow:hidden;overscroll-behavior:none}
body.wf-page-lock{position:fixed;inset:0;height:var(--wf-viewport-height,100dvh);-webkit-user-select:none;user-select:none;-webkit-touch-callout:none}
.wf-page-lock img,.wf-page-lock a,.wf-page-lock canvas{-webkit-user-drag:none}
.wf-page-lock input,.wf-page-lock textarea,.wf-page-lock [contenteditable=true]{-webkit-user-select:text;user-select:text}
[data-wf-scroll]{overflow:auto;overscroll-behavior:contain;touch-action:pan-y}
body.wf-preview-page{display:grid;grid-template-rows:auto minmax(0,1fr)}
.wf-preview-page>header{grid-row:1}
.wf-preview-page>main{grid-row:2;min-height:0;max-height:100%}
.wf-preview-page>#game{height:100%;width:auto;max-width:100%;aspect-ratio:9/16}
.wf-preview-page>#root{display:grid;place-items:center}
.wf-preview-page .story-stage{height:100%;width:auto;max-width:100%;aspect-ratio:9/16}
body.wf-gallery-page>main{height:100%;box-sizing:border-box}
