/* Snap Reveal is progressive: no selector hides content before JS mounts it. */
[data-snap-reveal][data-snap-reveal-enhanced="true"] {
    --snap-reveal-distance: 20px;
    --snap-reveal-duration: 520ms;
    --snap-reveal-delay: 0ms;
    --snap-reveal-stagger: 80ms;
}

[data-snap-reveal][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"],
[data-snap-reveal][data-snap-reveal-enhanced="true"] [data-snap-reveal-item="true"] {
    transition-duration: var(--snap-reveal-duration);
    transition-property: opacity, translate, scale, -webkit-mask-size, mask-size;
    transition-timing-function: cubic-bezier(.22, 1, .36, 1);
    will-change: opacity, translate, scale, -webkit-mask-size, mask-size;
}

[data-snap-reveal][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"] {
    transition-delay: var(--snap-reveal-delay);
}

/* Le ressort physique pilote opacity/translate/scale image par image en JS ;
   la transition CSS ci-dessus doit s'écarter pour ne pas lui faire concurrence. */
[data-snap-reveal].is-physics-active {
    transition: none;
}

[data-snap-reveal][data-snap-reveal-enhanced="true"] [data-snap-reveal-item="true"] {
    transition-delay: calc(
        var(--snap-reveal-delay) +
        (var(--snap-reveal-index, 0) * var(--snap-reveal-stagger))
    );
}

/* Fade */
[data-snap-reveal][data-snap-reveal-preset="fade"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="fade"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    opacity: 0;
}

/* Rise uses the independent translate property, preserving Elementor transform. */
[data-snap-reveal][data-snap-reveal-preset="rise"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="rise"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    opacity: 0;
    translate: 0 var(--snap-reveal-distance);
}

/* The scale is deliberately subtle and does not replace transform. */
[data-snap-reveal][data-snap-reveal-preset="scale"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="scale"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    opacity: 0;
    scale: .96;
}

/*
 * Wipe uses a mask instead of clip-path. A clip on the observed element makes
 * its IntersectionObserver surface zero in Chromium, so an off-screen item can
 * never trigger. Masks keep the layout/observer geometry intact.
 */
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"],
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-enhanced="true"] [data-snap-reveal-item="true"] {
    -webkit-mask-image: linear-gradient(#000 0 0);
    mask-image: linear-gradient(#000 0 0);
    -webkit-mask-repeat: no-repeat;
    mask-repeat: no-repeat;
}

[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="left"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="left"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    -webkit-mask-position: left center;
    mask-position: left center;
    -webkit-mask-size: 0% 100%;
    mask-size: 0% 100%;
}

[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="right"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="right"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    -webkit-mask-position: right center;
    mask-position: right center;
    -webkit-mask-size: 0% 100%;
    mask-size: 0% 100%;
}

[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="up"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="up"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    -webkit-mask-position: center bottom;
    mask-position: center bottom;
    -webkit-mask-size: 100% 0%;
    mask-size: 100% 0%;
}

[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="down"][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"]:not([data-snap-reveal-visible="true"]),
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-direction="down"][data-snap-reveal-enhanced="true"]:not([data-snap-reveal-visible="true"]) [data-snap-reveal-item="true"] {
    -webkit-mask-position: center top;
    mask-position: center top;
    -webkit-mask-size: 100% 0%;
    mask-size: 100% 0%;
}

[data-snap-reveal][data-snap-reveal-visible="true"][data-snap-reveal-mode="self"],
[data-snap-reveal][data-snap-reveal-visible="true"] [data-snap-reveal-item="true"] {
    opacity: 1;
    translate: none;
    scale: 1;
    will-change: auto;
}

[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-visible="true"][data-snap-reveal-mode="self"],
[data-snap-reveal][data-snap-reveal-preset="wipe"][data-snap-reveal-visible="true"] [data-snap-reveal-item="true"] {
    -webkit-mask-size: 100% 100%;
    mask-size: 100% 100%;
}

@media (prefers-reduced-motion: reduce) {
    [data-snap-reveal][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"],
    [data-snap-reveal][data-snap-reveal-enhanced="true"] [data-snap-reveal-item="true"] {
        opacity: 1;
        translate: none;
        scale: 1;
        -webkit-mask: none;
        mask: none;
        transition: none;
        will-change: auto;
    }
}

@media (forced-colors: active) {
    [data-snap-reveal][data-snap-reveal-enhanced="true"][data-snap-reveal-mode="self"],
    [data-snap-reveal][data-snap-reveal-enhanced="true"] [data-snap-reveal-item="true"] {
        opacity: 1;
        translate: none;
        scale: 1;
        -webkit-mask: none;
        mask: none;
        transition: none;
        will-change: auto;
    }
}
