/* ── Reveal animation ────────────────────────────────────────── */

.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition:
    opacity  var(--duration-slow) var(--ease-out-expo),
    transform var(--duration-slow) var(--ease-out-expo);
}

.reveal.visible {
  opacity: 1;
  transform: none;
}

/* Stagger delays */
.reveal[data-delay="1"] { transition-delay: 0.08s; }
.reveal[data-delay="2"] { transition-delay: 0.16s; }
.reveal[data-delay="3"] { transition-delay: 0.24s; }
.reveal[data-delay="4"] { transition-delay: 0.32s; }
.reveal[data-delay="5"] { transition-delay: 0.40s; }

/* Slide from left variant */
.reveal--left {
  transform: translateX(-20px);
}
.reveal--left.visible {
  transform: none;
}

/* ── Hero word animation ──────────────────────────────────────── */

.hero-headline .word-inner {
  transition:
    opacity  0.7s var(--ease-out-expo),
    transform 0.7s var(--ease-out-expo);
}

.hero-headline.words-visible .word-inner {
  transform: translateY(0);
  opacity: 1;
}

/* ── No motion preference ────────────────────────────────────── */

@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal[data-delay] {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero-headline .word-inner {
    transform: none;
    opacity: 1;
    transition: none;
  }

  .hero-scroll-line::after,
  .status-dot {
    animation: none;
  }
}
