.animation-fade-in-up{
    opacity: 0 !important;
    transform: translateY(50px) !important;
    transition: 1000ms 25ms ease !important;
}

.animation-fade-in-up.visible{
    opacity: 1 !important;
    transform: translateY(0) !important;
}

.animation-fade-in-up-children > *{
    opacity: 0 !important;
    transform: translateY(50px) !important;
    transition: 300ms ease !important;
}

.animation-fade-in-up-children > .visible{
    opacity: 1 !important;
    transform: translateY(0) !important;
}

.animation-fade-in-up-children-jet-listing-grid .jet-listing-grid__item{
    opacity: 0 !important;
    transform: translateY(30px) !important;
    transition: 300ms ease !important;
}

.animation-fade-in-up-children-jet-listing-grid .jet-listing-grid__item.visible{
    opacity: 1 !important;
    transform: translateY(0) !important;
}

.animation-listing-fade-in-up-slider .slick-slide{
    opacity: 0 !important;
    transform: translateY(50px) !important;
    transition: 300ms ease !important;
}

.animation-listing-fade-in-up-slider .slick-slide.visible{
    opacity: 1 !important;
    transform: translateY(0) !important;
}

.jet-listing-grid__item .animation-listing-zoom-on-hover{
    overflow: hidden !important;
}

.jet-listing-grid__item .animation-listing-zoom-on-hover img{
    transition: 400ms;
}

.jet-listing-grid__item:hover .animation-listing-zoom-on-hover img{
    transform: scale(1.05) !important;
    transition: 400ms;
}

.has-animation-listing-item-opacity-hover .jet-listing-grid__item{
    transition: 300ms;
}

.has-animation-listing-item-opacity-hover .jet-listing-grid__item:hover{
    opacity: .87 !important;
    transition: 300ms;
}

.has-gallery-infinite-scroll-animation{
    overflow-x: hidden !important;
    flex-wrap: nowrap !important;
}

.has-gallery-infinite-scroll-animation > *{
    min-width: max-content !important;
    flex-wrap: nowrap !important;
    animation: 80s linear infinite infiniteScroll;
    position: relative !important;
}

.has-gallery-infinite-scroll-animation.inversed > *{
    animation: 80s linear infinite infiniteScrollInversed;
}

.svg-wrapper {
    overflow: hidden !important;
    height: 0 !important;
    transition: 2s 0.25s ease-out !important;
}
.svg-wrapper.revealed {
    height: 488px !important; /* Hauteur totale du SVG */
    /* transition: 2s 0.15s ease-out !important; */
}

.svg-reveal-wrapper {
    position: relative !important;
    display: inline-block !important;
}

.svg-reveal-wrapper svg {
    display: block !important;
}

.svg-mask {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background: #2A2D40; /* ou couleur du fond */
    z-index: 2;
    transition: width 1s ease-out;
}

.svg-reveal-wrapper.revealed .svg-mask {
    width: 0;
}

@keyframes slide-reveal {
  from {
    transform: translateX(0);
  }
  to {
    transform: translateX(100%);
  }
}

/* On cache l'image à l'intérieur du widget */
.animation-mask-reveal img {
    opacity: 0;
    clip-path: inset(100% 0 0 0); /* Masqué par le bas */
    transform: translateY(30px) scale(1.05); /* Petit effet de descente + zoom */
    transition: clip-path 1.2s cubic-bezier(0.4, 0, 0.2, 1), 
                transform 1.4s cubic-bezier(0.4, 0, 0.2, 1), 
                opacity 0.8s ease;
    will-change: clip-path, transform, opacity;
}

/* Quand le JS ajoute .visible au PARENT (le widget), l'IMAGE s'anime */
.animation-mask-reveal.visible img {
    opacity: 1;
    clip-path: inset(0 0 0 0); /* Révélation */
    transform: translateY(0) scale(1); /* Retour à la normale */
}

/* Optionnel : évite les débordements bizarres pendant l'anim */
.animation-mask-reveal .elementor-widget-container {
    overflow: hidden;
}

.delay-children > * { transition-delay: 0.4s !important; }

@media only screen and (max-width: 767px) and (min-width: 0px){
    .has-mobile-gallery-infinite-scroll-animation{
        overflow-x: hidden !important;
        flex-wrap: nowrap !important;
    }

    .has-mobile-gallery-infinite-scroll-animation > *{
        min-width: max-content !important;
        align-items: start !important;
        flex-wrap: nowrap !important;
        animation: 20s linear infinite infiniteScroll;
        position: relative !important;
    }

    .has-mobile-gallery-infinite-scroll-animation.inversed > *{
        animation: 20s linear infinite infiniteScrollInversed;
    }

    .has-gallery-infinite-scroll-animation > *{
        animation: 10s linear infinite infiniteScroll;
    }

    .has-gallery-infinite-scroll-animation.inversed > *{
        animation: 10s linear infinite infiniteScrollInversed;
    }
}



@keyframes moveArrow {
    0% {
        transform: translateX(0); /* Position d'origine */
    }
    30% {
        transform: translateX(-5px); /* Recule vers la gauche */
    }
    60% {
        transform: translateX(10px); /* Avance vers la droite */
    }
    100% {
        transform: translateX(0); /* Retour à la position d'origine */
    }
}

@keyframes infiniteScroll {
    0% {
        left: 0%;
    }
    100% {
        left: -80%;
    }
}

@keyframes infiniteScrollInversed{
    0% {
        left: -80%;
    }
    100% {
        left: 0%;
    }
}