/* Global Scroll Animations */

/* Global Scroll Animations (stable initial render + JS arming) */

/* 1) Default: visible (no "empty section" on load) */
.scroll-reveal {
    opacity: 1;
    transform: none;
    filter: none;
    transition: all 0.8s cubic-bezier(0.4, 0, 0.2, 1);
    will-change: opacity, transform, filter;
}

/* 2) Armed: ONLY elements NOT revealed are hidden/offset */
html.sr-ready .scroll-reveal:not(.revealed) {
    opacity: 0;
}

/* Animation variants (apply only when NOT revealed and sr-ready) */
html.sr-ready .scroll-reveal.fade-up:not(.revealed) {
    transform: translateY(4rem);
}

html.sr-ready .scroll-reveal.fade-down:not(.revealed) {
    transform: translateY(-4rem);
}

html.sr-ready .scroll-reveal.fade-left:not(.revealed) {
    transform: translateX(4rem);
}

html.sr-ready .scroll-reveal.fade-right:not(.revealed) {
    transform: translateX(-4rem);
}

html.sr-ready .scroll-reveal.scale:not(.revealed) {
    transform: scale(0.95);
}

html.sr-ready .scroll-reveal.fade-only:not(.revealed) {
    transform: none;
}

/* Revealed state */
.scroll-reveal.revealed {
    opacity: 1;
    transform: translateY(0) translateX(0) scale(1);
    filter: none;
}

/* Delay variants */
.scroll-reveal.delay-1 { transition-delay: 0.1s; }
.scroll-reveal.delay-2 { transition-delay: 0.2s; }
.scroll-reveal.delay-3 { transition-delay: 0.3s; }
.scroll-reveal.delay-4 { transition-delay: 0.4s; }
.scroll-reveal.delay-5 { transition-delay: 0.5s; }

/* Speed variants */
.scroll-reveal.fast { transition-duration: 0.5s; }
.scroll-reveal.slow { transition-duration: 1.2s; }

/* Zoom-in */
html.sr-ready .scroll-reveal.zoom-in:not(.revealed) {
    transform: scale(0.8);
}
.scroll-reveal.zoom-in.revealed {
    transform: scale(1);
}

/* Rotate */
html.sr-ready .scroll-reveal.rotate:not(.revealed) {
    transform: rotate(-5deg);
    opacity: 0;
}
.scroll-reveal.rotate.revealed {
    transform: rotate(0deg);
    opacity: 1;
}

/* Blur */
html.sr-ready .scroll-reveal.blur:not(.revealed) {
    filter: blur(1rem);
    opacity: 0;
}
.scroll-reveal.blur.revealed {
    filter: blur(0);
    opacity: 1;
}

/* Slide-up */
html.sr-ready .scroll-reveal.slide-up:not(.revealed) {
    transform: translateY(6rem);
    opacity: 0;
}
.scroll-reveal.slide-up.revealed {
    transform: translateY(0);
    opacity: 1;
}

/* Mobile opt-out */
@media (max-width: 768px) {
    .scroll-reveal.mobile-no-animation {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        transition: none !important;
    }
}

/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
    .scroll-reveal {
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
    }
}

/* Easing variants */
.scroll-reveal.ease-spring {
    transition-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55);
}
.scroll-reveal.ease-smooth {
    transition-timing-function: cubic-bezier(0.4, 0, 0.2, 1);
}
.scroll-reveal.ease-bounce {
    transition-timing-function: cubic-bezier(0.68, -0.6, 0.32, 1.6);
}
