/*
 * Ponder owns page-level gestures on every pointer type.  Keep this file
 * geometry-free: visible screen sizing and positioning remain with each
 * screen's existing stylesheet.
 */
html:root,
html:root body,
html:root body #stage,
html:root body #table {
  touch-action: none !important;
  overscroll-behavior: none !important;
}

/* Screen and modal gesture owners.  These declarations deliberately contain
 * no layout properties, so their existing visible shells keep their geometry. */
html:root body #appHomeScreen,
html:root body #customMatchScreen,
html:root body #customRoomV2,
html:root body #profile-v2-root,
html:root body #ranking-v2-root,
html:root body #settingsModal,
html:root body #profileModal,
html:root body #handHistoryVisualModal,
html:root body #testGuideModal,
html:root body .hhv2-modal,
html:root body #ponderHandReadBackdrop,
html:root body #ponderHandReadPanel,
html:root body dialog,
html:root body [role="dialog"] {
  touch-action: none !important;
  overscroll-behavior: none !important;
}

/* Explicit vertical scroll rails.  Their containers retain scroll authority
 * without handing an edge gesture back to the page or visual viewport. */
#settingsBox,
#actionHistoryList,
.custom-match-card,
.test-guide-card,
.profile-card,
.hand-history-visual-list,
.hand-history-visual-detail,
.ponder-action-drawer-content,
#ponderHandReadResultList,
[data-phr-vertical-scroll],
.cr2-browser-list,
.cr2-form-grid,
.cr2-confirm-spec,
#profile-v2-root .profile-v2-guest-view,
#profile-v2-root .profile-v2-drilldown-list,
#profile-v2-root .profile-v2-guide-body,
#profile-v2-root .profile-v2-range-details,
#profile-v2-root .profile-v2-range-combos,
#profile-v2-root .profile-v2-hand-read-rows,
#ranking-v2-root .ranking-v2-table-wrap,
.hhv2-list,
.hhv2-action-scroll,
.hhv2-player-wrap {
  touch-action: pan-y !important;
  overscroll-behavior: contain !important;
}

/* This existing analysis rail intentionally scrolls horizontally. */
#profile-v2-root .profile-v2-match-strip {
  touch-action: pan-x !important;
  overscroll-behavior: contain !important;
}

/* Gesture-driven controls keep their existing pointer streams while the page
 * itself remains locked. */
input[type="range"],
#raiseSlider,
#ponderHandReadPanel,
.phr-rank-drum,
.phr-drum-window {
  touch-action: none !important;
}
