/* Pin the opening viewport while document scroll scrubs the real video. */
.hero-scroll-scene {
  position: relative;
  margin-top: calc(24px - var(--header-offset, 155px));
  background: #000;
}
.hero-scroll-scene .hero-landing { margin-top: 0; }
.hero-scroll-scene.is-scrubbing { height: calc(100svh + max(2400px, 360svh)); }
.hero-scroll-scene.is-scrubbing .hero-landing {
  position: sticky; top: 0;
  height: 100svh; min-height: 0;
  padding-top: max(24px, min(clamp(390px, 34vw, 475px), calc(100svh - var(--hero-copy-height, 340px) - var(--ticker-height, 48px) - 40px)));
  padding-bottom: calc(var(--ticker-height, 48px) + 20px);
}
/* Both sides of the section boundary meet at black. Only the artwork and
   ambient light fade; the heading and buttons retain their full opacity. */
.hero-scroll-scene .hero-landing::after {
  content: ''; position: absolute; inset: auto 0 0; height: 180px;
  z-index: 0; pointer-events: none;
  background: linear-gradient(to bottom, transparent, #000 100%);
}
.hero-scroll-scene + #services {
  padding-top: clamp(24px, 3vw, 44px);
  background-image: linear-gradient(to bottom, #000, transparent);
  background-size: 100% 200px;
  background-repeat: no-repeat;
}
.hero-backdrop .hero-scroll-video {
  position: absolute; inset: 0;
  display: block; width: 100%; height: 100%;
  object-fit: cover; object-position: center top;
  opacity: 0;
  filter: saturate(1.22) contrast(1.06) brightness(1.08);
}
.has-video-frame .hero-scroll-video { opacity: 1; }
.has-video-frame .hero-poster { opacity: 0; }
@media (max-width: 600px) {
  .hero-scroll-scene.is-scrubbing .hero-landing {
    padding-top: max(24px, min(310px, 36svh, calc(100svh - var(--hero-copy-height, 340px) - var(--ticker-height, 48px) - 40px)));
  }
  .hero-scroll-scene.is-scrubbing .hero-inner { gap: 16px; }
  .hero-scroll-scene.is-scrubbing h1 { font-size: clamp(2rem, 8.2vw, 3rem); }
  .hero-scroll-scene.is-scrubbing .lede { font-size: .94rem; line-height: 1.55; }
  .hero-scroll-scene.is-scrubbing .hero-ctas .btn { flex-basis: auto; }
}
@media (max-height: 560px) and (min-width: 601px) {
  .hero-scroll-scene.is-scrubbing .hero-landing {
    padding-top: max(24px, min(130px, calc(100svh - var(--hero-copy-height, 240px) - var(--ticker-height, 48px) - 40px)));
  }
  .hero-scroll-scene.is-scrubbing h1 { font-size: 2.6rem; }
  .hero-scroll-scene.is-scrubbing .hero-inner { gap: 12px; }
  .hero-scroll-scene.is-scrubbing .lede { line-height: 1.4; font-size: .95rem; }
}
