/* ZwaarVet Animations Frontend Styles */

/* Paintable wrapper for BB loop items (parent items are often display:contents). */
.zvbb-anim-shell {
    display: block;
    width: 100%;
    box-sizing: border-box;
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

/* Preset-specific duration/easing is output in #zvbb-animations-css (wp_head). */
[class*="zvbb-anim-preset-"] .zvbb-anim-shell.track,
[class*="zvbb-anim-preset-"] .track.zvbb-animated-element {
    transition: opacity 0.8s ease-out, transform 0.8s ease-out, filter 0.8s ease-out;
}

/* Hold the start state before JS adds .in_view. Final state lives in #zvbb-animations-css (wp_head). */
[class*="zvbb-anim-preset-"] .track:not(.in_view),
[class*="zvbb-anim-preset-"] .zvbb-anim-shell:not(.in_view),
[class*="zvbb-anim-preset-"] .zvbb-animated-element:not(.in_view),
[class*="zvbb-anim-preset-"] .zvafbb-gallery-item:not(.in_view),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .zvbb-anim-shell:not(.in_view),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .track:not(.in_view),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .zvbb-animated-element:not(.in_view),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .fl-loop-item > :not(.zvbb-anim-shell),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .fl-builder-loop-item > :not(.zvbb-anim-shell),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .fl-post-grid-post > :not(.zvbb-anim-shell),
[class*="zvbb-anim-preset-"].zvbb-anim-awaiting-prime .fl-post-column > :not(.zvbb-anim-shell) {
    opacity: 0;
    transform: translate3d(0, 20px, 0);
    pointer-events: none;
}

/* Nested tracks (e.g. cloned loop items inside a swiper slide) follow the parent state. */
[class*="zvbb-anim-preset-"] .track.in_view .track,
[class*="zvbb-anim-preset-"] .track.in_view .zvbb-animated-element {
    opacity: inherit;
    transform: none !important;
    filter: none;
    animation: none !important;
}
