/**
 * Scroll Reveal — Lightweight viewport-triggered animation
 * Usage: add class "reveal" to elements. They animate in when entering the viewport (once).
 * Optional: data-reveal-delay="150" for stagger (milliseconds).
 * 
 * Animation: opacity 0→1, translateY(40px)→0, cubic-bezier easing.
 * Scope: Use on content sections. Do NOT use on: hero, sliders, welcome modal, admin.
 */

.reveal {
  opacity: 0;
  transform: translateY(40px);
  transition: opacity 0.65s cubic-bezier(0.25, 0.46, 0.45, 0.94),
              transform 0.65s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}

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

/* Optional: reduce motion for accessibility */
@media (prefers-reduced-motion: reduce) {
  .reveal {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .reveal.reveal-visible {
    /* no-op, already visible */
  }
}
