/* Site-wide page baseline. Every page imports this via its style.css.
   Token overrides live in ./vars.css; the Elements brand blue comes
   from the shipped theme file. Shared site chrome (topbar, footer,
   feed, brand mark, page hero, kind chips) lives in ./site.css. */
@import "/assets/app/shared/styles/vars.dae7c015b83ce913.css";
@import "/assets/node_modules/@elements/style/index.9cc296e4f90f4e57.css";
@import "/assets/node_modules/@elements/style/themes/elements.c49acadbfdb8418f.css";
@import "/assets/app/shared/styles/fonts.41fb78e761e72ae6.css";
@import "/assets/app/shared/styles/site.22207fc580d0e938.css";

/* Kill double-tap-to-zoom globally while keeping pinch-zoom for
   accessibility. Every tap on a button / link / video theater /
   stepper used to trigger ios zoom on a rapid second tap. manipulation
   allows scroll + pinch-zoom but disables the double-tap gesture. */
html, body { touch-action: manipulation; }

/* Smooth scroll for in-page anchor jumps. Honors prefers-reduced-motion. */
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
}

/* Inter has a larger descent than ascent, so text inside a flex-
   centered button visibly floats ABOVE the geometric center even
   with align-items: center + line-height: 1. The button height is
   fixed (height: var(--button-height)), and box-sizing: border-box
   means asymmetric padding-top shrinks the content area — flex
   centering inside that smaller area pulls the text DOWN by half
   the difference. 2px does it without a perceptible height change.

   Scoped to standard buttons only, via :where() so the exclusion adds no
   specificity: unlayered still beats the package's @layer rules, buttons
   that own their padding (the terminal's .copy chip) stay excluded, and
   single-class app rules (.install-pill, .toggle) keep outranking this. */
button:where(:not(.copy)), .button:where(:not(.copy)) { padding-top: 2px; padding-bottom: 0; }
