/* Platform-owned progressive motion for safe custom pages.
   Content is hidden only after the runtime has initialized it, so a failed or
   blocked script can never leave the page blank. */
[data-cep-motion-root] .cep-motion-item {
    transition-property: opacity, transform, filter;
    transition-duration: var(--cep-motion-duration, 620ms);
    transition-delay: var(--cep-delay, 0ms);
    transition-timing-function: cubic-bezier(.22, 1, .36, 1);
    will-change: opacity, transform;
}

[data-cep-motion-root][data-cep-motion-ready] .cep-motion-pending {
    opacity: 0;
}

[data-cep-motion-root][data-cep-motion-ready] [data-cep-reveal="up"].cep-motion-pending {
    transform: translate3d(0, 28px, 0);
}

[data-cep-motion-root][data-cep-motion-ready] [data-cep-reveal="down"].cep-motion-pending {
    transform: translate3d(0, -24px, 0);
}

[data-cep-motion-root][data-cep-motion-ready] [data-cep-reveal="left"].cep-motion-pending {
    transform: translate3d(28px, 0, 0);
}

[data-cep-motion-root][data-cep-motion-ready] [data-cep-reveal="right"].cep-motion-pending {
    transform: translate3d(-28px, 0, 0);
}

[data-cep-motion-root][data-cep-motion-ready] [data-cep-reveal="scale"].cep-motion-pending {
    transform: scale(.965);
    filter: blur(3px);
}

/* Visibility fail-safe: retain the pending token so IntersectionObserver can
   still play entry motion when an off-screen item eventually enters. */
[data-cep-motion-root][data-cep-motion-ready] .cep-motion-pending.cep-motion-failsafe-visible {
    opacity: 1;
    transform: none;
    filter: none;
}

[data-cep-motion-root] [data-cep-parallax] {
    transform: translate3d(0, var(--cep-parallax-y, 0), 0);
    will-change: transform;
}

[data-cep-motion-root] [data-cep-scroll-progress] {
    position: fixed;
    inset: 0 0 auto;
    z-index: 1000;
    width: 100%;
    height: 3px;
    background: currentColor;
    transform: scaleX(var(--cep-scroll-progress, 0));
    transform-origin: left center;
    pointer-events: none;
}

:dir(rtl) [data-cep-motion-root] [data-cep-scroll-progress] {
    transform-origin: right center;
}

@media (prefers-reduced-motion: reduce) {
    [data-cep-motion-root] .cep-motion-item,
    [data-cep-motion-root] .cep-motion-pending,
    [data-cep-motion-root] .cep-motion-failsafe-visible,
    [data-cep-motion-root] [data-cep-parallax] {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important;
        transition: none !important;
        animation: none !important;
    }

    [data-cep-motion-root] [data-cep-scroll-progress] {
        display: none !important;
    }
}
