/* Touch-only interaction guards. No viewport, dimensions, typography or layout changes. */
@media (any-pointer: coarse) {
  /* Repeated taps should activate controls, without selecting their labels or zooming. */
  :is(button, .button, summary, .sidebar-link, .sidebar-profile-link, .menu-toggle,
      .tcg, .pack-view, .pet-device, .slot-machine, .reel-viewport,
      .pass-preview-art, .pass-reward-track, .trade-step-tabs) {
    -webkit-user-select: none;
    user-select: none;
    -webkit-touch-callout: none;
  }
  :is(button, .button, summary, .sidebar-link, .sidebar-profile-link, .menu-toggle) {
    touch-action: manipulation;
  }
  /* Both panning axes remain available; pinch zoom is excluded inside game surfaces. */
  :is(.tcg, .pack-view, .pet-device, .slot-machine, .pass-preview-art) {
    touch-action: pan-x pan-y !important;
  }
  /* Preserve native horizontal Pass scrolling, and JS horizontal reveal/trade swipes. */
  .pass-reward-track { touch-action: pan-x !important; }
  .reel-viewport, .trade-inventories-staged { touch-action: pan-y !important; }
  :is(button, .button, .tcg, .pack-view, .pet-device, .slot-machine, .reel-viewport,
      .pass-preview-art, .pass-reward-track) img {
    -webkit-user-select: none;
    user-select: none;
    -webkit-touch-callout: none;
    -webkit-user-drag: none;
  }
  /* Inputs keep text selection, editing and the native copy/paste menu, even in games. */
  :is(input, textarea, [contenteditable="true"], [contenteditable=""]) {
    -webkit-user-select: text !important;
    user-select: text !important;
    -webkit-touch-callout: default !important;
    touch-action: auto;
  }
}
