/* Scroll-Reveal: AUSSCHLIESSLICH transform, nie opacity:0 als Startzustand.
   Ohne JS/CSS-Support ist der Inhalt durch translateY() immer sichtbar. */
.reveal {
  transform: translateY(28px);
  transition: transform 640ms cubic-bezier(0.16, 1, 0.3, 1);
  will-change: transform;
}
.reveal.is-visible { transform: translateY(0); }

.reveal-stagger > * {
  transform: translateY(24px);
  transition: transform 560ms cubic-bezier(0.16, 1, 0.3, 1);
}
.reveal-stagger.is-visible > * { transform: translateY(0); }
.reveal-stagger.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-stagger.is-visible > *:nth-child(2) { transition-delay: 60ms; }
.reveal-stagger.is-visible > *:nth-child(3) { transition-delay: 120ms; }
.reveal-stagger.is-visible > *:nth-child(4) { transition-delay: 180ms; }
.reveal-stagger.is-visible > *:nth-child(5) { transition-delay: 240ms; }
.reveal-stagger.is-visible > *:nth-child(6) { transition-delay: 300ms; }

/* Hero: sanfte Einblendung beim Laden (auch nur transform) */
.hero__inner, .hero__figure {
  transform: translateY(20px);
  transition: transform 700ms cubic-bezier(0.16, 1, 0.3, 1);
}
.hero.is-loaded .hero__inner { transform: translateY(0); }
.hero.is-loaded .hero__figure { transform: translateY(0); transition-delay: 90ms; }

@media (prefers-reduced-motion: reduce) {
  .reveal, .reveal-stagger > *, .hero__inner, .hero__figure {
    transform: none !important;
    transition: none !important;
  }
  html { scroll-behavior: auto; }
}
