
:root {
    --navbar-height: 107px; /* valeur temporaire en attendant le calcul javascript, la mettre la plus proche de la valeur réelle pour éviter des glitch d'affichage */
    --espace-avant-footer: 100px; /* padding-bottom du contenu <div data-elementor-type="wp-page">, pour ne pas que le contenu touche au footer */
    --e-global-breakpoints-mobile-portrait: 576px;
    --e-global-breakpoints-mobile-landscape: 767px;
    --e-global-breakpoints-tablet-portrait: 992px;  /* breakpoint toggle */
    --e-global-breakpoints-tablet-landscape: 1024px;
    --e-global-typography-text-line-height: 1.2;
    --e-global-typography-text-font-family: "RebondGrotesque", sans-serif;
}




/*------------------------------------------------------------------
   @section Reset du thème
------------------------------------------------------------------*/
/* #region */

html { 
    overflow-y: scroll !important; /* Pour contrer le bogue de layout shift quand le scrollbar disparait quand on ferme le off-canva */
}

body {
    overflow-x: hidden; font-family: var(--e-global-typography-text-font-family); line-height: 1.4; color: var(--color-gris);
    background-color: var(--color-beige-background-siteweb);
}

/* Main container de Elementor */
div[data-elementor-type="wp-page"], div[data-elementor-type="wp-post"], div[data-elementor-type="single-post"], div[data-elementor-type="search-results"], div[data-elementor-type="archive"], div[data-elementor-type="error-404"], #content {
    min-height: 80vh; overflow-x: clip; font-size: 1.1rem;
    /* Pour compenser la hauteur du #header qui est en position fixe et pour créer un padding pour pas que le contenu touche le footer */
    padding-bottom: var(--espace-avant-footer);
    /* Ajout de 4 rem pour les pages standards. Pour les pages avec entête-photo, on met une marge négative pour que ça touche le header */
    /* padding-top: calc(var(--navbar-height) + 100px) */
    padding-top: 195px;
}

/* Buttons */
.elementor :where(.e-button-base, .elementor-widget-button .elementor-button, .elementor-widget-search .e-search .e-search-submit),
:root :where(.wp-element-button, .wp-block-button__link) {
    background-color: var(--e-global-color-primary); padding: 10px 30px 10px 30px; border-radius: 500px; text-decoration: none !important; 
    font-weight: 600; line-height: 1; text-transform: uppercase; color: #fff; 
    width: fit-content; 
}
.elementor :where(.e-button-base, .elementor-widget-button .elementor-button, .elementor-widget-search .e-search .e-search-submit):hover {
    background-color: var(--color-vert-fonce);
}
/* Liens */
body :where(div[data-elementor-type="wp-page"], div[data-elementor-type="wp-post"], div[data-elementor-type="single-post"], div[data-elementor-type="search-results"], div[data-elementor-type="error-404"], #content) a, .elementor .e-paragraph-link-base {
    color: var(--color-primary); text-decoration: underline;
}
body :where(div[data-elementor-type="wp-page"], div[data-elementor-type="wp-post"], div[data-elementor-type="single-post"], div[data-elementor-type="search-results"], div[data-elementor-type="error-404"], #content) a:hover, .elementor .e-paragraph-link-base:hover {
    color: var(--color-primary); text-decoration: none; 
}

/* Flexbox div */
/*.elementor :where(.e-flexbox-base) {
   align-items: start; justify-content: center;
}
*/
.elementor .e-flexbox-base:where([class*="section-"]:not(.section-marges-gauche-droite)) {
   padding-left: 0; padding-right: 0;
}
.elementor .e-flexbox-base > :last-child {
    margin-bottom: 0;
}
.e-con.e-flex>.e-con-inner {
    padding-inline-start: var(--section-marges-gauche-droite);
    padding-inline-end: var(--section-marges-gauche-droite);
    z-index: 5;
}

/* hr */
.elementor .e-divider-base {
    width: 100%; background-color: var(--color-primary);
}

/* Marge au-dessus d'un anchor, pour ne pas qu'il soit collé en haut de la fenêtre (exclu les accordéons) */
h1:target, h2:target, h3:target, h4:target, h5:target, div:not(.accordeon-item):target, span:target, p:target, table:target, section:target, a:target {
position: relative; border-top: 30px solid transparent; background-clip: padding-box;
    &::before {
    content: ""; position: absolute; top: -2px; left: 0; right: 0;
    }
    .small-header & {
    border-top: 100px solid transparent;
    }
}


/*** Header du menu ***/

/* Pour le small-header */
#header {
    transition: all 500ms ease-out;
    /* Pour ce thème */
    /* padding-top: 30px; padding-bottom: 80px; */
}
.hello-elementor-default #header a {
    text-decoration: none;
}
#header.hide-header {
  transform: translateY(-100%);
}
.small-header #header {
  
}

/* Change l'apparence du header selon la section principale (festival ou marché) */
body[data-section="festival"] #header {
    background-color: var(--color-secondary);
}
body[data-section="marche-public"] #header {
    background-color: var(--color-vert-secondaire);
}
body:is([data-section="festival"], [data-section="marche-public"]) #header-principal {
    display: none;
}
body[data-section="festival"] #header-festival {
    display: flex;
}
body[data-section="marche-public"] #header-marche-public {
    display: flex;
}


/* Pour un effet "glass" en-dessous du Off-Canvas. Le background du Off-Canvas doit avoir une opacité. */
header .e-off-canvas__content {
    backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); background: none !important;
}

.elementor-lightbox {
    background-color: rgba(0,0,0, 0.75) !important;
}

/* Carrousel */
.elementor-widget-n-carousel .swiper-pagination-bullet, .swiper-pagination-bullet .swiper-pagination-bullet-active {
    background: var(--color-secondary);
}
.elementor-widget-n-carousel .elementor-swiper-button {
    position: relative; overflow: hidden;
}
.elementor-widget-n-carousel .elementor-swiper-button svg {
    position: relative; z-index:2;
}
.elementor-widget-n-carousel .elementor-swiper-button::before {
    transition: all 300ms ease-out;
}
.elementor-widget-n-carousel .elementor-swiper-button:not(.swiper-button-disabled):hover::before {
    content: ""; position: absolute; top: 0; left: 0; width: 100%; height: 100%; 
    background: rgba(0, 0, 0, 0.15); z-index: 1; pointer-events: none;
}

/* Breadcrumb */
.e-con .elementor-widget.elementor-widget.elementor-widget-breadcrumbs {
    color: #999999; margin-block-end: var(--space-medium); text-align: center;
}
@media (max-width: 992px) {
    .e-con .elementor-widget.elementor-widget.elementor-widget-breadcrumbs {
        
    }
}

.elementor-widget-breadcrumbs a {
    text-decoration: none; color: #999999;
}
.elementor-widget-breadcrumbs a:hover {
    text-decoration: underline; color: #999999;
}

/* #endregion */





/*------------------------------------------------------------------
   @section Entête de page (page header)
------------------------------------------------------------------*/
/* #region */

#entete-page {
    position: relative; margin: -90px 0 40px 0;
}
.js-support body:not(.elementor-editor-active)  #entete-page {
    opacity: 0; transition: all 200ms ease-out;
}
.js-support body:not(.elementor-editor-active)  #entete-page.inviewport {
    opacity: 1;
}
#entete-page-contenu {
    position: relative; z-index: 1;
}

/* Hauteur de l'entête: photo ou slider */
.entete-page-standard .elementor-main-swiper:not(.elementor-thumbnails-swiper) {
    height: 80vh; min-height: 550px; max-height: 900px;
}
@media (max-width: 992px) {
    .entete-page-standard .elementor-main-swiper:not(.elementor-thumbnails-swiper) {
        height: 450px; min-height: 450px;
    }
}
.entete-page-accueil .elementor-main-swiper:not(.elementor-thumbnails-swiper) {
    height: 70vh; min-height: 700px; max-height: 900px;
}
@media (max-width: 992px) {
    .entete-page-accueil .elementor-main-swiper:not(.elementor-thumbnails-swiper) {
        height: 550px;
    }
}

/* Effet Ken burns effect sur les image du slider */
#entete-page .swiper-slide {
    overflow: hidden !important;
}
#entete-page .elementor-carousel-image {
    transform: scale(1); transition: transform 0s linear 0.5s;
}
#entete-page .swiper-slide-active .elementor-carousel-image,
#entete-page .swiper-slide-duplicate-active .elementor-carousel-image {
    transform: scale(1.15); transition: transform 8s ease-in-out 0s;
}

/* Pour afficher la légende de la photo, ex: Crédit photo */
.elementor-carousel-image-overlay {
   opacity: 1 !important; visibility: visible !important; background: transparent !important; 
    background-color: transparent !important; justify-content: start !important;  
    align-items: flex-end !important; text-align: left !important; padding: 15px !important;
    color: grey; font-size: 14px; display: flex;
}

#entete-page-graphiques {
    position: absolute; top: 0px; right: 0px; width: 100%; height: 1px;
}
#entete-page-triangle {
    position: absolute; top: calc(var(--navbar-height) - 30px); right: 20px; width: 200px; height: 200px; z-index: 90; 
    transform-origin: top right; transition: all 1500ms ease-out; display: none;
    /*background: url(/images/triangle-sadc.svg) no-repeat center center; background-size: contain; display: none;*/
}

/* #endregion */





/*------------------------------------------------------------------
   @section Page d'accueil
------------------------------------------------------------------*/
/* #region */

:root {  --hauteur-entete-page-accueil: 550px; }
#entete-page.entete-page-accueil {
    
}


/* #endregion */





/*------------------------------------------------------------------
   @section Blog
   @description Défini ici parce que le widget "Publications" est utilisé à plusieurs endroits dans le site web
------------------------------------------------------------------*/
/* #region */


/* Posts Widget et Widget Article Carousel */
.elementor-post .elementor-post__thumbnail__link, .widget-articles .elementor-widget-theme-post-featured-image {
    margin-bottom: 20px !important;
}
.widget-articles .elementor-widget-theme-post-featured-image img {
    border-radius: var(--radius-large);
}
.elementor-post .elementor-post__text, .widget-articles .elementor-post__text {
    padding:0 15px 0 0; margin: 0 ; text-align: center;
}
.elementor-posts .elementor-post__title, .widget-articles .elementor-widget-theme-post-title .elementor-heading-title {
    font-size: var(--texte-small); font-weight: 900; line-height: 1.2; margin-bottom: 5px; position: relative;
    font-family: Gazpacho; color: var(--color-vert-secondaire);
}
.elementor-posts .elementor-post__title a, .widget-articles .elementor-widget-theme-post-title .elementor-heading-title a {
    color: var(--color-gris); text-decoration: none !important;
}
.elementor-posts .elementor-post__title a:hover, .widget-articles .elementor-widget-theme-post-title .elementor-heading-title a:hover {
    color: var(--color-primary);
}
.widget-articles .elementor-widget-theme-post-title .elementor-heading-title {
    margin-bottom: 12px;
}
.elementor-posts .elementor-post__meta-data {
    font-size: var(--texte-xxxsmall); color: #818181;
}
.elementor-posts .elementor-post__badge {
    position: absolute !important; top: auto !important; bottom:10px !important; right: 10px !important; margin: 0 !important;
}
.elementor-posts .elementor-post__excerpt p, .widget-articles .elementor-widget-theme-post-excerpt {
    display: inline-block; color: var(--color-gris); font-size: var(--texte-xxsmall); line-height: 1.3; /* font-size: inherit; */
}
.elementor-posts .elementor-post__excerpt p::after, .widget-articles .elementor-widget-theme-post-excerpt p::after {
    content: "...";
}
.elementor-posts .elementor-post__read-more, .widget-articles .elementor-post__read-more {
    font-size: var(--texte-xxsmall); color: var(--color-primary); font-weight: 700;
}
.elementor-posts--skin-classic .elementor-post {
    overflow: visible;
}


/* Single Post */
.single-post .elementor :is(h1.e-heading-base) {
    font-size: clamp(2.25rem, 1.83rem + 1.9vw, 3.25rem);
    line-height: 1.1; font-weight: 800; margin: 0 0 0 0; padding-right: 0; 
    text-align: center; color: var(--color-primary);
}
.single-post .elementor :is(h2, h3, h4) {
    font-family: Gazpacho; font-weight: 800; color: var(--color-primary);
}
.single-post .entete-page-standard #entete-page-contenu > * {
    padding-right: 100px; padding-left: 100px;
}
@media (max-width: 992px) { .single-post .entete-page-standard #entete-page-contenu > * { padding-right: 60px; padding-left: 60px; } }
@media (max-width: 576px) { .single-post .entete-page-standard #entete-page-contenu > * { padding-right: 0; padding-left: 0; } }

.elementor-widget-theme-post-content :is(p, figure, ul, ol, h2, h3, h4, h5, h6)  {
   margin: 0 0 2rem 0; line-height: 1.3;
}
.elementor-widget-theme-post-content :is(h2, h3, h4, h5, h6)  {
   margin-top: 3.5rem;
}
.elementor-widget-theme-post-content p:has(+ ul) {
    margin-bottom: .75rem;
}
@media (max-width: 576px) {
.elementor-widget-theme-post-content .wp-block-gallery.has-nested-images figure.wp-block-image:not(#individual-image)  {
   width: 50%;
}
}
.elementor-widget-theme-post-content .wp-block-button__link {
    color: #fff;
}
.elementor-pagination {
    margin-top: 25px;
}
/* Bogue avec le bouton qui apparait hover sur modal window zoom in d'une image. On le masque */
.wp-lightbox-container button:focus, .wp-lightbox-container button:hover, .wp-lightbox-container button:not(:hover):not(:active):not(.has-background) { display: none; }

/* #endregion */





/*------------------------------------------------------------------
   @section Utiles
------------------------------------------------------------------*/
/* #region */

/* Pour faire en sorte que le width d'un container soit de la même largeur que son contenu */
.fit-content { 
   width: fit-content; 
}
.content-width {
   max-width:var(--content-width);
}
/* Bouton pour les vidéos en popup */
.bouton-video-popup {
    border-radius: 0 !important; text-transform: none !important;
}

/* Lien flèche */
.lien-fleche {
  position: relative; display: inline-block;
}
.lien-fleche > a {
  text-decoration: none !important; display: flex !important; align-items: flex-start !important;
}
.lien-fleche > a::after {
  content: "> "; display: block; transition: all 500ms ease-out; margin-left: 5px; font-weight: bold;
  font-size: 1.4rem; line-height: 1; font-family: 'Trebuchet MS', sans-serif;
  display: flex; justify-content: flex-start; align-items: flex-start; flex-wrap: nowrap;
}
.lien-fleche > a:hover::after {
  transform: translateX(5px);
}

/* Mosaïque de 3 photos */
.mosaique-3-photos .mosaique-photo-1 .mosaique-photo-vedette:nth-child(1) {
    min-height: 600px;
}
@media (max-width: 767px) {
    .mosaique-photos .mosaique-photo-1 .mosaique-photo-vedette:nth-child(1),
    .mosaique-photos .mosaique-photos-2-3 .mosaique-photo-vedette:nth-child(1),
    .mosaique-photos .mosaique-photos-2-3 .mosaique-photo-vedette:nth-child(2) {
        min-height: 300px;
    }
}
.mosaique-photos .mosaique-photo-vedette:nth-child(2) {
    
}

/* Mosaïque de 3 boutons */
.mosaique-3-boutons .mosaique-bouton-1 .bouton-vedette:nth-child(1) {
    min-height: 600px;
}
@media (max-width: 767px) {
    .mosaique-3-boutons .mosaique-bouton-1 .bouton-vedette:nth-child(1),
    .mosaique-3-boutons .mosaique-boutons-2-3 .bouton-vedette:nth-child(1),
    .mosaique-3-boutons .mosaique-boutons-2-3 .bouton-vedette:nth-child(2) {
        min-height: 250px;
    }
}
.mosaique-3-boutons .bouton-vedette:hover img {
    filter: brightness(100%); transform: scale3d(1.05, 1.05, 1);
}

.mosaique-photo-vedette {
    
}


/* Accordeon custom */
.accordeon-item-entete {
    position: relative;
}
.accordeon-item-entete:hover {
    cursor: pointer;
}
.accordeon-item-entete::after {
    content: ""; width: 30px; height: 30px; position: absolute; top: 50%; right: 0; transform: translateY(-50%); 
    transition: all 300ms ease-out;
    background: url(/images/assets/icon-bullet-fleche-vert.svg) no-repeat center center; background-size: contain;
}
.is-open .accordeon-item-entete::after {
    transform: translateY(-50%) rotate(90deg);
}
.elementor .e-flexbox-base.accordeon-item-titre {
    padding: 0 50px 0 0; 
}
.elementor .e-flexbox-base.accordeon-item-contenu {
    display: none;
}
.elementor .is-open .e-flexbox-base.accordeon-item-contenu {
    display: block;
}
.elementor-editor-active .e-flexbox-base.accordeon-item-contenu {
    display: block;
}

/* Accordeon Elementor v3 */
.elementor-widget-n-accordion .e-n-accordion-item {
    padding-block-start: 10px; padding-block-end: 10px; border-block-end-width: 1px; 
    border-bottom: 1px solid var(--color-gris-tres-pale); position: relative;
}
.elementor-widget-n-accordion .e-n-accordion-item-title {
    padding: 0;
}
.elementor-widget-n-accordion .e-n-accordion-item[open] .e-n-accordion-item-title-icon {
    transform: rotate(90deg); transition: all 300ms ease-out;
}


/* Popups off-canvas */
.popups-container {
    z-index: 1010 !important;
}
.popups-container .e-off-canvas__main {
    justify-content: center; align-items: center; padding: 30px 20px;
    overflow-y: auto !important; height: 100vh !important; max-height: 100vh !important; overscroll-behavior: contain;
}
@media (max-width: 767px) {
.popups-container .e-off-canvas__main {
    align-items: flex-start; /* Pour pouvoir scroller si popup trop haut */
}
}
.popups-container .e-off-canvas__content {
    height: auto; padding: 30px 25px; position: relative; overflow: visible; border-radius: var(--radius-large);
}

.popups-container .e-off-canvas__overlay {
    position: fixed !important; top: 0 !important; left: 0 !important; width: 100vw !important; height: 100vh !important;
    opacity: 1 !important;
}
.elementor-kit-384 button.custom-js-close-btn { 
    position: absolute; top: 10px; right: 10px; width: 30px; height: 30px; background: var(--color-primary); 
    border: none; font-size: 20px; border-radius: 500px;
    color: #fff; cursor: pointer; z-index: 100; display: flex; align-items: center; justify-content: center; padding: 3px 1px 1px 1px; 
}
.custom-js-close-btn:hover { transform: scale(1.05); }


/* Boutons placés dans une grille (bouton avec icone) */
.boutons-grille-container > .e-con-inner .bouton-grille:nth-child(1) { background-color: var(--color-vert-secondaire-fonce); }
.boutons-grille-container > .e-con-inner .bouton-grille:nth-child(2) { background-color: var(--color-vert-secondaire-70); }
.boutons-grille-container > .e-con-inner .bouton-grille:nth-child(4) { background-color: var(--color-vert-secondaire-70); }
.boutons-grille-container > .e-con-inner .bouton-grille:nth-child(6) { background-color: var(--color-vert-secondaire-fonce); }
.boutons-grille-container > .e-con-inner .bouton-grille:nth-child(7) { background-color: var(--color-vert-secondaire-70); }

.boutons-grille-container > .e-con-inner .bouton-grille:hover { background-color: var(--color-primary); }
.bouton-grille {
    max-width: 250px
}


/* Boutons des intervenants - Liste des marchands et exposants */
.boutons-intervenants, .bouton-intervenant::before {
    background-size: cover !important;
}
.boutons-intervenants, .bouton-intervenant h4 {
    hyphens: auto !important; overflow-wrap: break-word !important; word-break: auto-phrase !important;
}


/* Widget Taxonomy Filter - Transformer de <button> en <select> */
.elementor-widget-taxonomy-filter .e-filter {
    display: none !important;
}
.custom-taxonomy-filter-wrapper {
    position: relative; width: 100%; font-family: inherit; font-size: 16px;
}
.custom-taxonomy-filter-trigger {
    padding: 12px 35px 12px 12px; cursor: pointer; user-select: none; position: relative; text-transform: uppercase;
}
.custom-taxonomy-filter-trigger::after {
    content: '▼'; position: absolute; right: 15px; top: 50%; transform: translateY(-50%); font-size: 12px;
}
.custom-taxonomy-filter-options {
   position: absolute; top: 100%; left: 0; right: 0; background-color: #fff; border: 1px solid #ccc; 
   border-top: none; border-radius: 0 0 4px 4px; margin: 0; padding: 0; list-style: none; width: 300px;
   display: none; z-index: 999; max-height: 300px; overflow-y: auto; box-shadow: 0 4px 6px rgba(0,0,0,0.1);
}
.custom-taxonomy-filter-wrapper.open .custom-taxonomy-filter-options {
    display: block;
}
.custom-taxonomy-filter-options li {
    padding: 12px; cursor: pointer; border-bottom: 1px solid #eee; transition: background-color 0.2s, color 0.2s;
}
.custom-taxonomy-filter-options li:last-child {
    border-bottom: none;
}
.custom-taxonomy-filter-options li:hover, .custom-taxonomy-filter-options li.selected {
    background-color: var(--color-vert-secondaire); color: #fff;
}

/* Bouton pour filtrer les intervenants en ordre alphabétique */
body:not(.afficher-tous-intervenants) .elementor-loop-container div.e-loop-item:nth-of-type(n+13) {
   display: none !important;
}
#btn-intervenant-sort-alpha {
   display: none;
}



/* Carrousel de photos dans les pages Destination */
.carrousel-photos-destination .swiper-slide img {
    height: 470px; width: 100%; object-fit: cover;
}
.carrousel-photos-destination :where(.elementor-swiper-button-next, .elementor-swiper-button-prev) {
    background: var(--color-secondary); padding:10px; border-radius: 500px;
}
.carrousel-photos-destination .elementor-swiper-button-next {
    transform: translate(40px,-50%); top: 50%;
}
.carrousel-photos-destination .elementor-swiper-button-prev {
    transform: translate(-40px,-50%); top: 50%;
}
@media (max-width: 992px) {
.carrousel-photos-destination .elementor-swiper-button-next {
    transform: translate(20px,-50%); padding: 4px;
}
.carrousel-photos-destination .elementor-swiper-button-prev {
    transform: translate(-20px,-50%); padding: 4px;
}
}
.carrousel-photos-destination .elementor-element.elementor-arrows-position-outside .swiper {
    width: calc(100% - 150px);
}

.carrousel-photos-destination .swiper-pagination-bullet {
    background: var(--color-primary); display: none;
}

@media (max-width: 500px) {
.carrousel-photos-destination .swiper-slide img {
    height: 400px;
}
.carrousel-photos-destination .elementor-element.elementor-arrows-position-outside .swiper {
    width: calc(100% - 90px);
}
.carrousel-photos-destination .elementor-swiper-button-next {
    transform: translate(15px,-50%) !important;
}
.carrousel-photos-destination .elementor-swiper-button-prev {
    transform: translate(-15px,-50%) !important;
}
}


/* Pour la boîte Présenter par, pour le commanditaire principal */
#boite-presente-par {
    position: fixed !important; z-index: 2000 !important; transform: scale(0.9); transform-origin: center right;
    inset-inline-end: 0px; inset-block-end: 40px; justify-content: flex-end;
}



/* #endregion */





/*------------------------------------------------------------------
   @section Animations
------------------------------------------------------------------*/
/* #region */


/* Animation de type "wow fade-in" de tous les blocs direct du conteneur data-elementor-type="wp-page", 
   pour ne pas à avoir à le faire manuellement sur tous les widgets de la page */

/* État de base des containers de premier niveau */
div[data-elementor-type^="wp-"] > .elementor-element {
   position: relative; z-index: 100; 
}

/* Masqué initialement (uniquement si JS est activé). on peut ajouter la class .inview-anim-custom au container pour exclure */
.js-support div[data-elementor-type]:not([data-elementor-type="popup"]) > .elementor-element:not(#entete-page, .entete-photo, #section-breadcrumbs, #section-introduction, [class*="inview-anim-"], [class*="onscroll-move-"], .boutons-intervenants, .bouton-intervenant) {
   opacity: 0; transform: translateY(2rem); transition: all 1s; visibility: hidden; /* Pour la performance */
}

/* Apparition dans le viewport */
div[data-elementor-type]:not([data-elementor-type="popup"]) > .elementor-element:not(#entete-page, .entete-photo, #section-breadcrumbs, #section-introduction, [class*="inview-anim-"], [class*="onscroll-move-"], .boutons-intervenants, .bouton-intervenant).inviewport {
   opacity: 1; transform: translateY(0rem); visibility: visible;
}

/* Prépare ces animations */
div[data-elementor-type] > .elementor-element[class*="onscroll-move-"] {
   will-change: transform, opacity;
}


/* Masquage des animations spécifiques (uniquement si JS est activé) */
.js-support .inview-anim-right-left, .js-support .inview-anim-left-right, 
.js-support .inview-anim-fade-in, .js-support .inview-anim-zoom-in, .js-support .onscroll-move-right-left, 
.js-support .onscroll-move-left-right, .js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-"],
.js-support .active-scroll {
   opacity: 0; will-change: transform, opacity; transition: all 0s; visibility: hidden; /* Pour la performance */
}

/* Règle finale pour l'apparition des animations customisées */
.inview-anim-custom.inviewport {
   opacity: 1 !important; visibility: visible !important;
}



/* Animation Fade-in Up */
.js-support div[data-elementor-type^="wp-"] > .elementor-element div.inview-anim-fade-in-up {
    opacity: 0; transform: translateY(2rem); transition: all 1s; visibility: hidden; /* Pour la performance */
}
.js-support div[data-elementor-type^="wp-"] > .elementor-element div.inview-anim-fade-in-up.inviewport {
   opacity: 1; transform: translateY(0rem); visibility: visible;
}


/* Animation Reveal from right */
/* État initial du widget */
.inview-anim-reveal-right {
    clip-path: inset(0 100% 0 0); transition-duration: var(--e-inter-anim-duration, 1.2s) !important; transition-delay: var(--e-inter-anim-delay, 0s) !important; transition-property: clip-path !important; transition-timing-function: cubic-bezier(0.77, 0, 0.175, 1); opacity: 1 !important; 
}
/* État actif : Déclenché par le moteur d'interaction Elementor - On cible le moment où Elementor force l'opacité à 1 ou ajoute ses attributs de data-interaction */
.inview-anim-reveal-right[style*="opacity: 1"], .inview-anim-reveal-right[data-interactions*="active"], .inview-anim-reveal-right.elementor-animated {
    clip-path: inset(0 0 0 0) !important;
}




/* Animations Fade-in en Stagger (apparait un après l'autre avec un décalage) - https://gemini.google.com/app/78bb11f66676bfe3 */

@keyframes staggerFadeIn { 
   from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } 
}

.js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-fade-in-up-stagger"] {
    opacity: 1; transform: none; visibility: visible;
}
.js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-fade-in-up-stagger"] > *, 
.js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-fade-in-up-stagger"] .swiper-slide { 
   opacity: 0; 
}

.js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-fade-in-up-stagger"].inviewport > *, 
.js-support div[data-elementor-type^="wp-"] > .elementor-element div[class*="inview-anim-fade-in-up-stagger"].inviewport .swiper-slide { 
   animation: staggerFadeIn 0.8s ease forwards; 
}

.inview-anim-fade-in-up-stagger > *:nth-child(1), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(1) { animation-delay: 0.2s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(2), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(2) { animation-delay: 0.4s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(3), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(3) { animation-delay: 0.6s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(4), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(4) { animation-delay: 0.8s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(5), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(5) { animation-delay: 1.0s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(6), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(6) { animation-delay: 1.2s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(7), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(7) { animation-delay: 1.4s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(8), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(8) { animation-delay: 1.6s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(9), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(9) { animation-delay: 1.8s !important; }
.inview-anim-fade-in-up-stagger > *:nth-child(10), .inview-anim-fade-in-up-stagger .swiper-slide:nth-child(10) { animation-delay: 2.0s !important; }




/* Pour voir les widgets avec animation dans le page builder */
.elementor-editor-active .inview-anim-fade-in-up, .elementor-editor-active .inview-anim-reveal-right,
.elementor-editor-active .inview-anim-fade-in-up-stagger > *, .elementor-editor-active .inview-anim-fade-in-up-stagger .swiper-slide {
    clip-path: inset(0 0 0 0) !important; opacity: 1 !important; transform: none !important;
}


/* #endregion */





/*------------------------------------------------------------------
   @section Plugin Forminator
------------------------------------------------------------------*/
/* #region */

body .forminator-ui.forminator-custom-form .forminator-custom-form {
    
}
/* Row */
body .forminator-ui.forminator-custom-form:not(.forminator-size--small)[data-grid=open] .forminator-row:not(:last-child, .forminator-row-last) {
    margin-bottom: 50px;
}

body .forminator-ui.forminator-custom-form .forminator-label {
    font-size: 1rem !important; line-height: 1.2 !important; font-weight: 400 !important;
    display: inline-block !important; margin-bottom: 10px !important;
}
body .forminator-ui.forminator-custom-form .forminator-description {
    display: inline-block; float: right;
}
body .forminator-ui.forminator-custom-form .forminator-input, body .forminator-ui.forminator-custom-form .forminator-textarea {
    border: 1px solid var(--color-vert-tres-pale); border-radius: 10px !important;
}

/* Supprimer le contour bleu de focus sur le quiz Forminator */
body .forminator-ui.forminator-custom-form .forminator-ui:focus, 
body .forminator-ui.forminator-custom-form .forminator-ui:focus-within, 
body .forminator-ui.forminator-custom-form .forminator-ui:focus-visible, 
body .forminator-ui.forminator-custom-form .forminator-quiz:focus {
   outline: none !important; box-shadow: none !important;
}

/* Field group */
body .forminator-ui.forminator-custom-form .forminator-repeater-field {
    background: none !important; border-radius: 0 !important; box-shadow: none !important; padding: 0 !important;
}
/* Titre du Field group */
body .forminator-ui.forminator-custom-form .forminator-repeater-label {
    color: var(--color-primary) !important; font-size: 1.2rem !important; margin: 20px 0 20px 0 !important;
}
body .forminator-ui.forminator-custom-form:not(.forminator-size--small)[data-grid=open] .forminator-repeater-field .forminator-row:not(:last-child) {
    margin-bottom: 20px;
}

/* Bouton Submit */
body .forminator-ui.forminator-custom-form .forminator-row-last {
    text-align: center;
}
body .forminator-ui.forminator-custom-form .forminator-button-submit {
    font-size: 1rem !important; text-transform: uppercase; font-weight: 800 !important; border-radius: 500px !important; padding: 10px 30px !important; background-color: var(--color-primary) !important;
}
body .forminator-ui.forminator-custom-form .forminator-button-submit:hover {
    box-shadow: none !important; background-color: var(--color-vert-fonce) !important;
}

/* Mise en page compact */
body .forminator-compact .forminator-ui.forminator-custom-form:not(.forminator-size--small)[data-grid=open] .forminator-row:not(:last-child) {
    margin-bottom: 25px;
}

/* #endregion */







/* Ici temporairement le temps que la V4 soit plus stable */

.texte-xxxlarge { font-size: var(--texte-xxxlarge); line-height: 1.1; }
.texte-xxlarge { font-size: var(--texte-xxlarge); line-height: 1.1; }
.texte-xlarge { font-size: var(--texte-xlarge); line-height: 1.1; }
.texte-large { font-size: var(--texte-large); line-height: 1.2; }
.texte-xmedium { font-size: var(--texte-xmedium); line-height: 1.2; }
.texte-medium { font-size: var(--texte-medium); line-height: 1.2; }
.texte-small { font-size: var(--texte-small); line-height: 1.2; }
.texte-xsmall { font-size: var(--texte-xsmall); line-height: 1.2; }
.texte-standard { font-size: var(--texte-standard); line-height: 1.2; }
.texte-xxsmall { font-size: var(--texte-xxsmall); line-height: 1.2; }

.gap-xxlarge { gap: var(--space-xxlarge); }
.gap-xlarge { gap: var(--space-xlarge); }
.gap-large { gap: var(--space-large); }
.gap-medium { gap: var(--space-medium); }
.gap-standard { gap: var(--space-standard); }
.gap-small { gap: var(--space-small); }
.gap-xsmall { gap: var(--space-xsmall); }
.gap-xxsmall { gap: var(--space-xxsmall); }

.section-standard { padding-top: var(--section-standard); padding-bottom: var(--section-standard); }
.section-medium { padding-top: var(--section-medium); padding-bottom: var(--section-medium); }
.section-small { padding-top: var(--section-small); padding-bottom: var(--section-small); }
.section-marges-gauche-droite { padding-right: var(--section-marges-gauche-droite); padding-left: var(--section-marges-gauche-droite); }


.radius-large { border-radius: var(--radius-large); }
.radius-small { border-radius: var(--radius-small); }

