/* ==========================================================================
   Scroll Animations — Global
   ========================================================================== */

/* ── Base hidden state ── */
.animate-on-scroll {
    opacity: 0;
    transform: translateY(60px);
    transition: opacity 1.1s cubic-bezier(0.25, 0.46, 0.45, 0.94),
                transform 1.1s cubic-bezier(0.25, 0.46, 0.45, 0.94);
    will-change: opacity, transform;
}

/* ── Revealed state ── */
.animate-on-scroll.is-visible {
    opacity: 1;
    transform: translateY(0);
}

/* ── Stagger children ── */
.animate-stagger-children > .animate-on-scroll:nth-child(1)  { transition-delay: 0ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(2)  { transition-delay: 150ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(3)  { transition-delay: 300ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(4)  { transition-delay: 450ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(5)  { transition-delay: 600ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(6)  { transition-delay: 750ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(7)  { transition-delay: 900ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(8)  { transition-delay: 1050ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(9)  { transition-delay: 1200ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(10) { transition-delay: 1350ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(11) { transition-delay: 1500ms; }
.animate-stagger-children > .animate-on-scroll:nth-child(12) { transition-delay: 1650ms; }

/* ── Respect reduced motion ── */
@media (prefers-reduced-motion: reduce) {
    .animate-on-scroll {
        opacity: 1;
        transform: none;
        transition: none;
        will-change: auto;
    }
}
