/* Shared touch behaviour; visual direction remains owned by each application. */
html { -webkit-text-size-adjust: 100%; }
#root, #app { min-width: 0; max-width: 100%; }
[data-ninety-table-scroll] { overscroll-behavior-x: contain; -webkit-overflow-scrolling: touch; }
[data-ninety-table-scroll]:focus-visible { outline: 2px solid #f15a24; outline-offset: -2px; }
@media (max-width: 820px) {
  html body input:not([type=checkbox]):not([type=radio]):not([type=range]):not([type=color]):not([type=hidden]),
  html body textarea, html body select { font-size: 16px !important; max-width: 100%; }
  /* Standalone tables keep all columns and actions; existing scroll wrappers are preserved. */
  table[data-ninety-table-scroll] { display: block; overflow-x: auto; width: 100% !important; min-width: 0 !important; max-width: 100%; }
  dialog, [role=dialog] { max-width: calc(100vw - 24px); max-height: calc(100dvh - 24px - env(safe-area-inset-top, 0px) - env(safe-area-inset-bottom, 0px)); overflow-y: auto; overscroll-behavior-y: contain; }
  dialog input, [role=dialog] input, textarea { scroll-margin-block: 90px; }
  [data-ninety-table-scroll] { max-width: 100%; }
  .module-header, .core-session, .shop-header, .topbar { padding-left: max(12px, env(safe-area-inset-left)); padding-right: max(12px, env(safe-area-inset-right)); }
  .core-connected-profile, .module-header > *, .shop-page-heading > * { min-width: 0; overflow-wrap: anywhere; }
}
@media (pointer: coarse) {
  button, a[role=button], input[type=submit], input[type=button], select { min-height: 44px; }
  button, a, input, select, textarea { touch-action: manipulation; }
}
