:root {
    --haven-motion-ease: cubic-bezier(.76, 0, .24, 1);
    --haven-motion-fast: .5s;
    --haven-motion-normal: .7s;
    --haven-motion-slow: .9s;
    --haven-motion-image: 1.1s;
    --haven-motion-distance-subtle: 16px;
    --haven-motion-distance: 24px;
    --haven-motion-distance-text: 32px;
}

html.lenis,
html.lenis body {
    height: auto;
}

html.lenis.lenis-smooth {
    scroll-behavior: auto !important;
}

html.lenis.lenis-smooth [data-lenis-prevent] {
    overscroll-behavior: contain;
}

html.lenis.lenis-stopped {
    overflow: clip;
}

html.lenis.lenis-smooth iframe {
    pointer-events: none;
}

html.haven-motion-ready .haven-reveal,
html.haven-motion-ready .haven-reveal-section {
    opacity: 0;
    transform: translate3d(0, var(--haven-reveal-y, var(--haven-motion-distance)), 0);
    transition:
        opacity var(--haven-reveal-duration, var(--haven-motion-normal)) var(--haven-motion-ease),
        transform var(--haven-reveal-duration, var(--haven-motion-normal)) var(--haven-motion-ease);
    transition-delay: var(--haven-reveal-delay, 0ms);
    will-change: opacity, transform;
}

html.haven-motion-ready .haven-reveal-section {
    --haven-reveal-y: var(--haven-motion-distance-subtle);
    --haven-reveal-duration: var(--haven-motion-slow);
}

html.haven-motion-ready .haven-hero,
html.haven-motion-ready .haven-intro {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
}

html.haven-motion-ready .haven-reveal-text {
    --haven-reveal-y: var(--haven-motion-distance-text);
    --haven-reveal-duration: var(--haven-motion-slow);
}

html.haven-motion-ready .haven-reveal-fast {
    --haven-reveal-duration: var(--haven-motion-fast);
}

html.haven-motion-ready .haven-reveal.is-in-view,
html.haven-motion-ready .haven-reveal-section.is-in-view {
    opacity: 1;
    transform: translate3d(0, 0, 0);
}

.haven-reveal-image {
    overflow: hidden;
}

html.haven-motion-ready .haven-reveal-image > img,
html.haven-motion-ready .haven-reveal-image picture > img {
    transform: scale(1.045);
    transition: transform var(--haven-motion-image) var(--haven-motion-ease);
    transition-delay: var(--haven-reveal-delay, 0ms);
    will-change: transform;
}

html.haven-motion-ready .haven-reveal-image.is-in-view > img,
html.haven-motion-ready .haven-reveal-image.is-in-view picture > img {
    transform: scale(1);
}

@media (prefers-reduced-motion: reduce) {
    html.lenis.lenis-smooth {
        scroll-behavior: auto !important;
    }

    html.haven-motion-ready .haven-reveal,
    html.haven-motion-ready .haven-reveal-section,
    html.haven-motion-ready .haven-reveal-image > img,
    html.haven-motion-ready .haven-reveal-image picture > img {
        opacity: 1 !important;
        transform: none !important;
        transition: none !important;
        transition-delay: 0ms !important;
        will-change: auto !important;
    }
}
