Clients

Phones are the play surface.

These are requirements. Fine-tuning after install includes checking them on a real device before you claim they work.

  • <meta name="viewport" content="width=device-width, initial-scale=1, viewport-fit=cover">
  • Do not globally disable zoom
  • Root: width: 100%, height: 100vh, then height: 100dvh, overflow: hidden
  • env(safe-area-inset-*) on critical controls
  • Gameplay must not require document scrolling
  • Recalculate on resize, visualViewport.resize, and orientationchange
  • Canvas: CSS size ≠ backing store; cap devicePixelRatio at 2; do not replace the node
  • Pointer Events; touch-action: none only on the playfield
  • Primary targets at least 44×44 CSS pixels; no hover-only controls
  • One requestAnimationFrame loop; pause rendering while hidden without leaving the room
  • Report Safari and Android Chrome only if you actually tested them