*, *::before, *::after { box-sizing: border-box; }
* { margin: 0; padding: 0; }
html {
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
  scroll-behavior: smooth;
  /* Reserve space at the top for the fixed header so anchor
   * jumps land below it instead of being clipped. ~78 px covers
   * the scrolled-state header height with a little breathing
   * room. */
  scroll-padding-block-start: 78px;
}

/* Cross-document view transitions on supporting browsers (Chrome
 * 126+, Edge, recent Safari TP). Fades between marketing pages
 * during a normal navigation so going from /support to /privacy
 * feels fluid rather than a hard cut. Older browsers ignore. */
@view-transition {
  navigation: auto;
}
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: 240ms;
  animation-timing-function: cubic-bezier(0.16, 1, 0.3, 1);
}
body {
  background: var(--bg);
  color: var(--text-1);
  line-height: 1.55;
  font-size: var(--fs-body);
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img, svg, video { display: block; max-width: 100%; height: auto; }
button, input, textarea, select { font: inherit; color: inherit; background: transparent; border: 0; }
button { cursor: pointer; }
a { color: inherit; text-decoration: none; }
ul, ol { list-style: none; }
[hidden] { display: none !important; }
:focus-visible { outline: 2px solid var(--brand); outline-offset: 3px; border-radius: 4px; }
::selection { background: var(--brand-soft); color: var(--text-1); }
body.no-scroll { overflow: hidden; }

/* Hide translated text until i18n has applied the correct
 * language. Prevents the brief flash of the English fallback
 * text in `<a data-i18n="…">About</a>` when the active
 * language is Arabic (or vice-versa). `visibility: hidden`
 * preserves layout so nothing shifts when text appears. The
 * `lang-ready` class is added to `<html>` by `boot.js` after
 * `initI18n()` runs. */
html:not(.lang-ready) [data-i18n],
html:not(.lang-ready) [data-i18n-html] {
  visibility: hidden;
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}
