fix(dashboard): block pinch-zoom and overscroll on mobile globally

- touch-action is per-element, not inherited. Setting `pan-x pan-y` on
  html/body alone didn't stop the kanban board: pinching on `.board`
  reads `.board`'s own touch-action (auto by default), which permits
  pinch-zoom. Switch to `* { touch-action: pan-x pan-y }` inside the
  mobile media query so every element opts out of pinch by default;
  element-specific overrides (touch-action: none on resize handles,
  drag-source rules on TaskCard, etc.) still win on specificity.
- Add `overscroll-behavior: none` to html/body to prevent Chrome's
  rubber-band scroll, which was letting users pull the page up to
  expose empty space above the dashboard despite overflow:hidden.

Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
This commit is contained in:
gsxdsm
2026-05-22 14:21:27 -07:00
parent a10fc56ee2
commit e6c135bca1

View File

@@ -3219,10 +3219,18 @@ input[type="range"]:focus-visible {
html,
body {
overflow: hidden;
/* Disable pinch-zoom on mobile — Android Chrome ignores user-scalable=no
for a11y, and the kanban board's horizontally-scrollable layout
interacts badly with zoom-out (exposes the offscreen-right area).
`pan-x pan-y` keeps scroll panning but blocks pinch-zoom. */
/* Stop Chrome's overscroll/rubber-band on mobile — without this the user
can pull the page up to expose empty space above the dashboard. */
overscroll-behavior: none;
}
/* Disable pinch-zoom globally on mobile. Android Chrome ignores
`user-scalable=no` for a11y, and the kanban board's horizontally-
scrollable layout interacts badly with zoom-out (exposes the
offscreen-right area). `touch-action` is not inherited — it applies
to the target element only — so we have to set `pan-x pan-y`
(keep scroll panning, block pinch-zoom) on every element. */
* {
touch-action: pan-x pan-y;
}