/* ZigZag Junk — motion utilities. Reveal-on-scroll + reduced-motion fallback. */

.reveal {
  opacity: 0;
  transform: translate3d(0, 16px, 0);
  transition:
    opacity var(--dur-slow) var(--ease-out),
    transform var(--dur-slow) var(--ease-out);
  will-change: opacity, transform;
}

.reveal.is-visible {
  opacity: 1;
  transform: translate3d(0, 0, 0);
}

.reveal--delay-1.is-visible {
  transition-delay: 60ms;
}

.reveal--delay-2.is-visible {
  transition-delay: 120ms;
}

.reveal--delay-3.is-visible {
  transition-delay: 180ms;
}

/* Hero scroll-cue gentle bob — defined here as the canonical keyframes.
 * (components.css references the same animation name; this file owns the
 * reduced-motion gate.) */
@media (prefers-reduced-motion: no-preference) {
  @keyframes hero-bob {
    0%,
    100% {
      transform: translate(-50%, 0);
    }
    50% {
      transform: translate(-50%, 6px);
    }
  }
}

/* Honor users who request less motion: suppress reveal transitions and bob. */
@media (prefers-reduced-motion: reduce) {
  .reveal,
  .reveal.is-visible,
  .reveal--delay-1.is-visible,
  .reveal--delay-2.is-visible,
  .reveal--delay-3.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }

  .hero__scroll-cue {
    animation: none;
  }
}
