* { margin: 0; padding: 0; box-sizing: border-box; }

html {
  -webkit-text-size-adjust: 100%;
  -webkit-tap-highlight-color: transparent;
  /* THE ROOT CANVAS IS PAINTED, NOT JUST <body>. With viewport-fit=cover the safe-area region
     and any overscroll expose the html canvas — unpainted, that is a white bar under the notch
     on exactly the devices the fullscreen meta set is for. */
  background: var(--bg-void);
  min-height: 100%;
  /* ★ THE VIEWPORT LOCK, AND IT HAS TO BE ON html — the body rule below is NOT enough. MEASURED
     at 390px: with `overscroll-behavior: none` declared only on <body>, the computed value on
     <html> read `auto` on this page and on index, against `none` in app/system/css/reset.css. So
     the ROOT still chained — the rubber band the body rule was written to stop was never actually
     stopped here. Declared on both boxes, the value is not left to a propagation rule to decide.
     (operator 2026-08-12: index/ and shop/ need the same scroll lock system/ has.) */
  overscroll-behavior: none;
}

body {
  font-family: 'Rajdhani', sans-serif;
  background: var(--bg-void);
  color: var(--text-primary);
  overflow-x: hidden;
  line-height: 1.5;
  touch-action: manipulation;
  /* THE DOCUMENT RUBBER-BAND (same fix as app/system/css/shell.css): body IS the real scroller
     on this page — index/shop carry no separate .view-container the way the cockpit does, so
     the lock belongs here directly rather than on a nested box. */
  overscroll-behavior: none;
}
