/* PROPULSE — Premier tableau : contenu dans le flux, repères dans leur zone. */
.journey > .stage {
  --landing-intro-overflow: max(0px, calc(var(--landing-intro-height, 0px) - 100svh));
  height: calc(100lvh + var(--landing-intro-overflow));
  top: calc(-1 * var(--landing-intro-overflow));
}
.hero-content { padding-bottom: 64px; }
.hero .hero-bottom {
  position: static;
  width: 100%;
  margin: 16px 0 0;
  padding-top: 12px;
  transform: none;
}
.stage .stage-bottom { transform: translateY(calc(100dvh - 100lvh)); }
@media (max-width: 700px) {
  body:not(.feature-page) .hero-content {
    padding-top: calc(var(--landing-header-height, 82px) + 12px);
    padding-bottom: 64px;
  }
  .hero-content > .section-top { margin-bottom: 12px; }
  .hero .hero-headlines { font-size: clamp(32px, 9.6vw, 48px); }
  .hero-copy > p { margin-top: 16px; line-height: 1.7; }
  .hero-content > .install-pass {
    margin-top: 12px;
    padding: 12px;
    grid-template-columns: 102px minmax(0, 1fr);
    column-gap: 12px;
  }
  .hero-content > .install-pass .qr-plate { width: 102px; }
  .hero-content > .install-pass h2 { font-size: 15px; }
  .hero .hero-bottom {
    position: static;
    width: 100%;
    margin: 12px 0 0;
    padding-top: 8px;
    align-items: center;
    gap: 12px;
    transform: none;
  }
  .hero-bottom > .mono { max-width: 44%; font-size: 7px; line-height: 1.6; }
  .hero-bottom .scroll-link { gap: 12px; flex-shrink: 0; }
  .stage .stage-bottom {
    bottom: 16px;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 12px;
    transform: translateY(calc(100dvh - 100lvh));
  }
  .stage .chapter-track { grid-column: 1; }
  .stage #chapter-label {
    grid-column: 2;
    font-size: 10px;
    line-height: 18px;
    letter-spacing: .7px;
    white-space: nowrap;
  }
}
@media (max-width: 360px) {
  .hero-content > .install-pass { grid-template-columns: 92px minmax(0, 1fr); }
  .hero-content > .install-pass .qr-plate { width: 92px; }
  .hero-content > .install-pass h2 { font-size: 14px; }
}

/* Full-screen wipe: two opposing compositor transforms preserve the original stationary content. */
.launch-mask { position:absolute; inset:0; z-index:4; overflow:hidden; transform:translate3d(0,100%,0); will-change:transform; }
.launch-mask > .launch-paper { clip-path:none; transform:translate3d(0,-100%,0); will-change:transform,opacity; }
