/* hero-reveal — il gruppo hero come asset: pista del lift, telo sopra i
   blocchi, wrapper di rivelazione, aggancio della sezione seguente.
   Contratto: [data-hero-reveal] è la sezione scrub che guida il telo;
   [data-hero-under] il wrapper del blocco rivelato (classe di stile
   .hero-reveal__under); la sezione scrub successiva al wrapper si aggancia
   da sola. Prerequisiti: sistema cine — html.has-cine, .cine__screen come
   telo, .cine__scrub / .cine__film-window, GSAP + ScrollTrigger
   (hero-reveal.js). Riuso documentato in assets/README.md. */

/* Pista dell'hero: su mobile lift e frame condividono la corsa (finestra =
   sezione); su desktop la sezione ha una pista extra di 100vh in cui il telo
   si alza oltre la finestra film. Selettore composto: questo foglio carica
   prima di homepage.css e deve battere la base .cine__scrub. */
.cine__scrub[data-hero-reveal] { min-height: 200vh; }

@media (width >= 768px) {
  html.has-cine .cine__scrub[data-hero-reveal] { min-height: 300vh; }
  html.has-cine .cine__scrub[data-hero-reveal] .cine__film-window { height: calc(100% - 100vh); }
}

/* Finché il telo copre, telo sopra i blocchi e hero sopra il telo (hint). */
html.is-hero-covered .cine__screen { z-index: 2; }
html.is-hero-covered .cine__scrub[data-hero-reveal] { z-index: 3; }

/* Il blocco rivelato è già fermo sotto il telo per tutta la durata del lift e
   si sgancia esattamente a sollevamento completato (wrapper 200vh − overlap 200vh). */
html.has-cine [data-hero-under] {
  position: relative;
  z-index: 1;
  height: 200vh;
  margin-top: -200vh;
}

html.has-cine [data-hero-under] > * {
  position: sticky;
  top: 0;
  box-sizing: border-box;
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-height: 100vh;
  box-shadow: none;
}

/* La sezione dopo la rivelazione si aggancia allo sgancio del blocco:
   la sua corsa comincia lì. */
html.has-cine [data-hero-under] + .cine__scrub { margin-top: -100vh; }

/* La finestra film della sezione seguente esclude il tratto coperto dal
   blocco in uscita: battute, binding e pellicola partono a blocco uscito e
   la pausa sulla posa di giunzione è riempita dalla continuità visiva
   della clip desktop. */
html.has-cine [data-hero-under] + .cine__scrub .cine__film-window {
  top: 100vh;
  height: calc(100% - 100vh);
}

/* Mobile: la clip hero è dedicata e la posa di giunzione NON è continua con
   la sezione seguente. Finestra contigua allo sgancio: lo scambio di clip
   avviene mentre il blocco copre l'intera viewport (sulle finestre contigue
   vince l'entrante) e l'uscita dell'overlay scorre già sopra la clip
   seguente in scrub — mai una posa morta dell'hero nel buco. */
@media (width < 768px) {
  html.has-cine [data-hero-under] + .cine__scrub .cine__film-window {
    top: 0;
    height: 100%;
  }
}
