/* Bidirectional scroll-reveal.
   Elements are hidden only after JS tags them with [data-reveal].
   Without the js class, or with .reveal-fallback, everything stays visible. */

html.js [data-reveal] {
    opacity: 0;
    transform: translate3d(0, 32px, 0);
    transition:
        opacity 700ms cubic-bezier(0.16, 1, 0.3, 1),
        transform 700ms cubic-bezier(0.16, 1, 0.3, 1);
    transition-delay: var(--reveal-delay, 0ms);
    backface-visibility: hidden;
}

html.js [data-reveal][data-reveal-dir="up"] {
    transform: translate3d(0, -32px, 0);
}

html.js [data-reveal].is-visible {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

html.js [data-reveal].is-animating {
    will-change: opacity, transform;
}

@media (prefers-reduced-motion: reduce) {
    html.js [data-reveal],
    html.js [data-reveal][data-reveal-dir="up"],
    html.js [data-reveal].is-visible {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        will-change: auto !important;
    }
}
