html.lenis,
html.lenis body {
  height: auto;
}

.lenis:not(.lenis-autoToggle).lenis-stopped {
  overflow: clip;
}

.lenis [data-lenis-prevent],
.lenis [data-lenis-prevent-wheel],
.lenis [data-lenis-prevent-touch],
.lenis [data-lenis-prevent-vertical],
.lenis [data-lenis-prevent-horizontal] {
  overscroll-behavior: contain;
}

.lenis.lenis-smooth iframe {
  pointer-events: none;
}

.lenis.lenis-autoToggle {
  transition-property: overflow;
  transition-duration: 1ms;
  transition-behavior: allow-discrete;
}

/* Viewport entrances only animate opacity and transform; layout stays in place. */
html { scroll-behavior: auto !important; }
html body :is(.rv, .journey .stage, .chip-stage .chip) {
  opacity: 1 !important;
  transform: translateY(0) !important;
  transition-property: opacity, transform !important;
  transition-duration: 0.6s !important;
  transition-timing-function: ease-out !important;
  transition-delay: 0s !important;
}
html body :is(.rv, .journey .stage, .chip-stage .chip).motion-enter {
  opacity: 0 !important;
  transform: translateY(20px) !important;
}
.oc-state { transition: opacity 0.6s ease-out, transform 0.6s ease-out; }
[id] { scroll-margin-top: 90px; }
@media (max-width: 960px) { [id] { scroll-margin-top: 76px; } }
@media (prefers-reduced-motion: reduce) {
  html body :is(.rv, .stage, .chip, .motion-enter) {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* One fixed prefix and one typed phrase; invisible copies reserve wrapping space. */
.hero-type-heading { opacity: 1; transform: none; transition: none; }
.hero-type-prefix { display: block; }
.hero-type-slot { display: grid; min-width: 0; text-wrap: wrap; }
.hero-type-slot > span { grid-area: 1 / 1; min-width: 0; }
.hero-type-measure { visibility: hidden; pointer-events: none; }
.hero-type-text { white-space: pre-wrap; }
.hero-type-accessible { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }

html:not(.js) img[data-skeleton] { opacity:1; }
