/* Reusable scroll reveal animations. */
.scroll-reveal {
    opacity: 0;
    transform: translate3d(0, 8px, 0);
    transition: opacity 1.1s ease, transform 1.1s ease;
    transition-delay: var(--scroll-delay, 0ms);
    will-change: opacity, transform;
}

.scroll-reveal.from-left {
    transform: translate3d(0, 8px, 0);
}

.scroll-reveal.from-right {
    transform: translate3d(0, 8px, 0);
}

.scroll-reveal.is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.scroll-reveal-group > .scroll-reveal:nth-child(2) {
    --scroll-delay: 80ms;
}

.scroll-reveal-group > .scroll-reveal:nth-child(3) {
    --scroll-delay: 160ms;
}

.scroll-reveal-group > .scroll-reveal:nth-child(4) {
    --scroll-delay: 240ms;
}

.scroll-reveal-group > .scroll-reveal:nth-child(5) {
    --scroll-delay: 320ms;
}

@media (prefers-reduced-motion: reduce) {
    .scroll-reveal,
    .scroll-reveal.from-left,
    .scroll-reveal.from-right {
        opacity: 1;
        transform: none;
        transition: none;
    }
}
