/* =========================================================
   Ranosys Scroll Animation System — v1.0
   Scoped entirely to .ranosys-js so elements remain
   visible when JavaScript is unavailable or blocked.
   ========================================================= */

/* ── Initial hidden state ── */
.ranosys-js .ranosys-scroll-animate {
    opacity: 0;
    transform: translateY(44px);
    transition:
        opacity   0.9s cubic-bezier(0.22, 1, 0.36, 1),
        transform 0.9s cubic-bezier(0.22, 1, 0.36, 1);
}

/* ── Revealed state (JS adds this class) ── */
.ranosys-js .ranosys-scroll-animate.ranosys-animated {
    opacity: 1;
    transform: translateY(0);
}

/* ── Optional stagger delay helpers ──
   Add ranosys-delay-1 … ranosys-delay-5 alongside
   ranosys-scroll-animate to stagger sibling elements.  */
.ranosys-js .ranosys-scroll-animate.ranosys-delay-1 { transition-delay: 0.10s; }
.ranosys-js .ranosys-scroll-animate.ranosys-delay-2 { transition-delay: 0.20s; }
.ranosys-js .ranosys-scroll-animate.ranosys-delay-3 { transition-delay: 0.30s; }
.ranosys-js .ranosys-scroll-animate.ranosys-delay-4 { transition-delay: 0.40s; }
.ranosys-js .ranosys-scroll-animate.ranosys-delay-5 { transition-delay: 0.50s; }

/* ── Respect system-level reduced-motion preference ──
   Skip the translate; keep a short fade so the reveal
   still feels intentional without motion.              */
@media (prefers-reduced-motion: reduce) {
    .ranosys-js .ranosys-scroll-animate {
        transform: none;
        transition: opacity 0.45s ease;
    }
}
