/* Parallax no scroll — camada opcional, isolada do v2.css.
   Só atua com a classe .has-parallax no <html>, que o parallax.js adiciona
   (e não adiciona com "reduzir movimento" ativo ou com ?parallax=off).
   Usa as propriedades individuais translate/scale para não colidir com os
   transform já existentes (reveal, zoom no hover, Ken Burns do hero).
   Para remover: apagar os <link>/<script> de parallax no index.html. */

.has-parallax {
  --pl-hero-shift: 32vh;
  --pl-hero-scale: 0.04;
  --pl-image-shift: 4.5%;
  --pl-image-scale: 1.1;
  --pl-curtain-radius: clamp(1.25rem, 2.4vw, 2rem);
}

/* 1. Hero em cortina: a foto desce mais devagar que o scroll, recua e
   escurece; o texto sobe e desaparece; a secção seguinte sobe por cima. */
.has-parallax .hero-v2 {
  background: #050505;
}

.has-parallax .hero-v2__media {
  translate: 0 calc(var(--pl-hero, 0) * var(--pl-hero-shift));
  scale: calc(1 - var(--pl-hero, 0) * var(--pl-hero-scale));
  opacity: calc(1 - var(--pl-hero, 0) * 0.45);
  will-change: translate, scale, opacity;
}

/* Nos filhos, não no bloco: o bloco é alvo do reveal, que tem transição de
   opacidade e atrasaria o fade. */
.has-parallax .hero-v2__content > * {
  translate: 0 calc(var(--pl-hero, 0) * -14vh);
  opacity: calc(1 - var(--pl-hero, 0) * 1.6);
  will-change: translate, opacity;
}

.has-parallax .world-intro {
  z-index: 1;
  margin-top: calc(var(--pl-curtain-radius) * -1);
  border-radius: var(--pl-curtain-radius) var(--pl-curtain-radius) 0 0;
}

/* 2. Fotos em janela: a moldura fica parada e a imagem desloca-se lá dentro.
   A escala extra garante que o deslocamento nunca mostra as bordas. */
.has-parallax :is(
    .interior-gallery__item,
    .detail-gallery__item,
    .wrap-gallery__item,
    .exclusive-gallery__item,
    .training-gallery__item
  )
  img {
  translate: 0 calc(var(--pl-y, 0) * var(--pl-image-shift));
  scale: var(--pl-image-scale);
}

/* 3. Abertura da foto de destaque da Formação: entra recolhida e abre. */
.has-parallax .training-gallery__item--lead {
  clip-path: inset(
    calc(var(--pl-open, 1) * 4%) round
      calc(clamp(0.55rem, 0.8vw, 0.8rem) + var(--pl-open, 1) * 1.1rem)
  );
  will-change: clip-path;
}

@media (max-width: 760px) {
  .has-parallax {
    --pl-hero-shift: 16vh;
    --pl-hero-scale: 0;
    --pl-image-shift: 2.5%;
    --pl-image-scale: 1.06;
    --pl-curtain-radius: 1.1rem;
  }
}
