/* ============================================================
   erle-it · Scroll-Reveal + Motion
   ============================================================ */

.reveal {
  opacity: 0;
  transform: translateY(18px);
  transition: opacity var(--dur-slow) var(--ease-out),
              transform var(--dur-slow) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 60ms);
  will-change: opacity, transform;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* Fade-in (ohne Translate) */
.fade-in {
  opacity: 0;
  transition: opacity var(--dur-slow) var(--ease-out);
  transition-delay: calc(var(--i, 0) * 80ms);
}
.fade-in.is-visible { opacity: 1; }

/* Scale-in (für Hero-Elemente) */
.scale-in {
  opacity: 0;
  transform: scale(0.96);
  transition: opacity var(--dur-slow) var(--ease-out),
              transform var(--dur-slow) var(--ease-out);
}
.scale-in.is-visible {
  opacity: 1;
  transform: scale(1);
}

/* Stagger-Helfer für Kind-Elemente einer .reveal-group */
.reveal-group > * { opacity: 0; transform: translateY(18px); transition: opacity var(--dur-slow) var(--ease-out), transform var(--dur-slow) var(--ease-out); }
.reveal-group.is-visible > *:nth-child(1) { transition-delay: 0ms; }
.reveal-group.is-visible > *:nth-child(2) { transition-delay: 80ms; }
.reveal-group.is-visible > *:nth-child(3) { transition-delay: 160ms; }
.reveal-group.is-visible > *:nth-child(4) { transition-delay: 240ms; }
.reveal-group.is-visible > *:nth-child(5) { transition-delay: 320ms; }
.reveal-group.is-visible > *:nth-child(6) { transition-delay: 400ms; }
.reveal-group.is-visible > *:nth-child(n+7) { transition-delay: 480ms; }
.reveal-group.is-visible > * { opacity: 1; transform: translateY(0); }

/* Hero-Parallax-Target (via CSS-Var --sy gesetzt von JS) */
.has-parallax {
  transform: translate3d(0, calc(var(--sy, 0px) * 0.15), 0);
  will-change: transform;
}

/* View-Transition (Chrome/Edge – sanfter Cross-Doc-Fade) */
@view-transition {
  navigation: auto;
}
::view-transition-old(root),
::view-transition-new(root) {
  animation-duration: var(--dur);
  animation-timing-function: var(--ease-out);
}

/* Reduced-Motion: alles aus */
@media (prefers-reduced-motion: reduce) {
  .reveal, .fade-in, .scale-in, .reveal-group > * {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
  .has-parallax { transform: none !important; }
}
