/* Scroll-reveal base states (activated via .is-visible added by IntersectionObserver in animations.js) */
[data-reveal] {
    opacity: 0;
    transition: opacity 0.7s cubic-bezier(0.16, 1, 0.3, 1), transform 0.7s cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: calc(var(--reveal-delay, 0) * 0.12s);
}
[data-reveal="fade-up"] { transform: translateY(28px); }
[data-reveal="fade-down"] { transform: translateY(-28px); }
[data-reveal="fade-left"] { transform: translateX(28px); }
[data-reveal="fade-right"] { transform: translateX(-28px); }
[data-reveal="scale-in"] { transform: scale(0.94); }

[data-reveal].is-visible {
    opacity: 1;
    transform: translate(0) scale(1);
}

@media (prefers-reduced-motion: reduce) {
    html { scroll-behavior: auto; }
    *, *::before, *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
        scroll-behavior: auto !important;
    }
    [data-reveal] { opacity: 1 !important; transform: none !important; }
}
