/* ─── Scroll-reveal animation ───────────────────────────────────────────────
   Matches Divi's et_pb_animation_top behaviour: elements fade in and settle
   down from slightly above when they enter the viewport.

   Usage:
     Add class="reveal" to any element that should animate in on scroll.
     For staggered groups add reveal--d1 through reveal--d4 on siblings.

   JS (reveal.js) drives this via IntersectionObserver — no scroll listeners.
   prefers-reduced-motion: elements appear instantly with no movement.
──────────────────────────────────────────────────────────────────────────── */

.reveal {
  opacity: 0;
  transform: translateY(-22px);
  transition: opacity 0.65s ease-out, transform 0.65s ease-out;
}

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

/* Stagger delays for sibling groups */
.reveal--d1 { transition-delay: 0.10s; }
.reveal--d2 { transition-delay: 0.20s; }
.reveal--d3 { transition-delay: 0.30s; }
.reveal--d4 { transition-delay: 0.40s; }

/* Respect OS-level reduce-motion preference */
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
}
