/*
Theme Name: Hello UU
Theme URI: https://www.duuble-u.com/
Author: Duuble U
Author URI: https://www.duuble-u.com/
Description: Personalized by Duuble U – Where enchanted elegance meets solid craftsmanship, because your site deserves a whisper of magic and a foundation of steel.
Version: 1.6.9
Tested up to: 6.7
Requires at least: 6.0
Requires PHP: 8.0
Template: hello-elementor
Text Domain: hello-uu
Tags: elementor, minimal, child-theme
Donate link: https://buymeacoffee.com/duubleu
License: GPL-3.0-or-later
License URI: https://www.gnu.org/licenses/gpl-3.0.html
*/

/* ============================================================
   Hello UU — Child Theme  v1.5.19

   TABLE DES MATIÈRES

    1.  FONTS
    2.  TOKENS DE DESIGN
        2.1  Palette & neutrals
        2.2  Typographie (polices, échelle, graisses)
        2.3  Espacement & radius
        2.4  Mapping Elementor Kit
    3.  UTILITAIRES GLOBAUX
        3.1  Font family
        3.2  Font size
        3.3  Font weight
        3.4  Couleur texte
        3.5  Couleur fond
        3.6  Transformations & alignement texte
        3.7  Line-height
        3.8  Radius
        3.9  Espacement
        3.10 Contraste — uu-on-dark
        3.11 Ratios d'image — uu-ratio-
        3.12 Responsive — Mobile (≤ 767px) 
        3.13 Responsive — Tablette (768–1024px)
    4.  COMPOSANTS GLOBAUX
        4.1  Coupe diagonale — uu_diagonal_cut
        4.2  Révélation scroll — uu-argument-title
        4.3  Texte décoratif — uu-break-listing
        4.4  Navigation — Bouton CTA
        4.5  Particules — sl-interactions
        4.6  Contenu éditorial — uu-prose (liens + blockquotes)
        4.7  Hero — mot décoratif uu-hero-bg-word
        4.8  Navigation — Sous-menu 2 colonnes « Nos solutions »
    5.  SÉPARATEURS DE SECTION — Bump & Dip
    6.  ÉDITEUR ELEMENTOR
    7.  PAGE — ACCUEIL
        7.1  Icônes hover
    8.  PAGE — AXES
        8.1  Icônes hover (listing)
    9.  PAGE — AU FIL DE L'EAU
        9.1  Grille rapports d'activité
   10.  TEMPLATE — SINGLE PARTENAIRE
        10.1 Stats
        10.2 Présentation
   11.  COMPOSANT — CARTE LEAFLET
        11.1 Tuiles
        11.2 Bouton plein écran
   12.  FILTRES JETSMART
        12.1 Masquer option radio "projets terminés"
        12.2 N'afficher que la checkbox "terminé"
   13.  BOUTON RETOUR PARENT — uu-one-step-back
   14.  TEMPLATE SINGLE ARTICLE ET EVENEMENT
   15.  LIGHTBOX ELEMENTOR / JETENGINE — Footer
   16.  TARTEAUCITRON — Skin intégré aux tokens §2
   17.  HEADER STICKY — Centrage + fond conditionnel
   18.  GLOSSAIRE — décalage d'ancre (zones sticky)
   19.  FORMULAIRES — JetFormBuilder
        19.1 Bordure native des <fieldset>
        19.2 Rythme vertical des formulaires
        19.3 Bouton de la newsletter (pied de page)
   20.  FICHE ACTION IMPRIMABLE — partie écran
   21.  RESPONSIVE — compléments CSS
   22.  LISTES DE CONTENU — espace après une liste
   23.  MATOMO — case d'opposition
   24.  MOBILE — retouches du 11/10 (soir) + panneau du Mag'

   Principes :
   - Utilitaires avec !important intentionnel (Elementor résiste)
   - Pas de cascade globale : on cible les noeuds texte Elementor
   - Éco-conception : zéro asset global sans condition stricte
   ============================================================ */

#header {
	margin-bottom: -98px;
}

/* ============================================================
   1. FONTS
   ============================================================ */

/* Rubik 400 – normal */
@font-face {
	font-family: 'Rubik';
	src: url('assets/fonts/Rubik-Regular.woff2') format('woff2');
	font-weight: 400;
	font-style: normal;
	font-display: swap;
}

/* Rubik 900 – black */
@font-face {
	font-family: 'Rubik';
	src: url('assets/fonts/Rubik-Black.woff2') format('woff2');
	font-weight: 900;
	font-style: normal;
	font-display: swap;
}


/* ============================================================
   2. TOKENS DE DESIGN
   ============================================================ */

/* 2.1 / 2.2 / 2.3 — Fallbacks :root (fonctionne hors Elementor aussi) */
:root {
	/* ---- Palette ---- */
	--uu-palette-night: #000000;
	--uu-palette-snow:  #FFFFFF;
	/* Alias "ink" pour le texte fort */
	--uu-palette-ink:   var(--uu-palette-night);

	/* Couleurs principales — fallback si Elementor globals absents.
	   Valeurs réelles surécrites dans §2.4 via elementor-kit-* */
	--uu-palette-main: #111111;   /* primary   */
	--uu-palette-leaf: #111111;   /* secondary */
	--uu-palette-sun:  #111111;   /* accent    */
	--uu-palette-mist: #333333;   /* text      */

	/* ===== 4 extras — ÉDITER PAR SITE ===== */
	--uu-palette-ocean: #2365AF;
	--uu-palette-moss:  #94C023;
	--uu-palette-stone: #878786;
	--uu-palette-clay:  #FFA400;

	/* ---- Polices (mappées sur les global typography Elementor) ---- */
	--uu-font-head:   var(--e-global-typography-primary-font-family,  system-ui);
	--uu-font-ui:     var(--e-global-typography-secondary-font-family, var(--uu-font-head));
	--uu-font-body:   var(--e-global-typography-text-font-family,      system-ui);
	--uu-font-accent: var(--e-global-typography-accent-font-family,    var(--uu-font-head));

	/* ---- Graisses ---- */
	--uu-w-thin:   300;
	--uu-w-normal: 400;
	--uu-w-bold:   700;
	--uu-w-black:  900;

	/* ---- Échelle typographique (alignée Elementor Global Headings)
	   H1 3.5rem / H2 2.9rem / H3 1.9rem / H4 1.4rem / H5 1.2rem / H6 1rem ---- */
	--uu-t-xxs: clamp(0.62rem, 0.60rem + 0.06vw, 0.68rem); /* ~0.65rem */
	--uu-t-xs:  clamp(0.85rem, 0.82rem + 0.10vw, 0.95rem);
	--uu-t-sm:  clamp(0.95rem, 0.92rem + 0.12vw, 1.00rem); /* ~H6     */
	--uu-t-md:  clamp(1.05rem, 1.00rem + 0.18vw, 1.20rem); /* ~H5     */
	--uu-t-lg:  clamp(1.20rem, 1.08rem + 0.35vw, 1.40rem); /* ~H4     */
	--uu-t-xl:  clamp(1.55rem, 1.25rem + 0.70vw, 1.90rem); /* ~H3     */
	--uu-t-2xl: clamp(2.20rem, 1.60rem + 1.60vw, 2.90rem); /* ~H2     */
	--uu-t-3xl: clamp(2.60rem, 1.80rem + 2.10vw, 3.50rem); /* ~H1     */
	/* Hero sizes */
	--uu-t-4xl: clamp(3.40rem, 2.50rem + 2.60vw, 4.60rem);
	--uu-t-5xl: clamp(3.80rem, 2.80rem + 3.10vw, 5.20rem);

	/* ---- Radius ---- */
	--uu-radius-sm: 8px;
	--uu-radius-md: 12px;
	--uu-radius-lg: 16px;
	--uu-radius-xl: 24px;

	/* ---- Espacement responsive ---- */
	--uu-space-35: clamp(18px, 2.2vw, 35px);
	--uu-space-75: clamp(26px, 4.2vw, 75px);
}

/* 2.4 — Mapping Elementor Kit (les vraies valeurs de couleurs globales) */
:where([class*="elementor-kit-"]) {
	--uu-palette-main: var(--e-global-color-primary,   #111111);
	--uu-palette-leaf: var(--e-global-color-secondary, #111111);
	--uu-palette-sun:  var(--e-global-color-accent,    #111111);
	--uu-palette-mist: var(--e-global-color-text,      #333333);

	/* ⚠️  Les --e-global-typography-* ne sont visibles QUE dans le scope
	   du kit Elementor (jamais sur :root). On redéfinit ici les uu-font-*
	   pour qu'ils capturent les vraies valeurs au lieu du fallback
	   system-ui silencieux de :root. Tout descendant du kit (incl.
	   #tarteaucitronRoot, modales, etc.) verra alors la bonne police. */
	--uu-font-head:   var(--e-global-typography-primary-font-family,  system-ui);
	--uu-font-ui:     var(--e-global-typography-secondary-font-family, var(--uu-font-head));
	--uu-font-body:   var(--e-global-typography-text-font-family,      system-ui);
	--uu-font-accent: var(--e-global-typography-accent-font-family,    var(--uu-font-head));
}


/* ============================================================
   3. UTILITAIRES GLOBAUX
   Chaque utilitaire s'applique AUSSI sur les noeuds texte
   internes (widgets Elementor) via :where() — spécificité 0.
   ============================================================ */

/* ---- 3.1 Font family ---- */
.uu-font-head   { font-family: var(--uu-font-head)   !important; }
.uu-font-body   { font-family: var(--uu-font-body)   !important; }
.uu-font-ui     { font-family: var(--uu-font-ui)     !important; }
.uu-font-accent { font-family: var(--uu-font-accent) !important; }

.uu-font-head   :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-family: var(--uu-font-head)   !important; }
.uu-font-body   :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-family: var(--uu-font-body)   !important; }
.uu-font-ui     :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-family: var(--uu-font-ui)     !important; }
.uu-font-accent :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-family: var(--uu-font-accent) !important; }


/* ---- 3.2 Font size ---- */
.uu-t-xxs { --uu-font-size: var(--uu-t-xxs); }
.uu-t-xs  { --uu-font-size: var(--uu-t-xs);  }
.uu-t-sm  { --uu-font-size: var(--uu-t-sm);  }
.uu-t-md  { --uu-font-size: var(--uu-t-md);  }
.uu-t-lg  { --uu-font-size: var(--uu-t-lg);  }
.uu-t-xl  { --uu-font-size: var(--uu-t-xl);  }
.uu-t-2xl { --uu-font-size: var(--uu-t-2xl); }
.uu-t-3xl { --uu-font-size: var(--uu-t-3xl); }
.uu-t-4xl { --uu-font-size: var(--uu-t-4xl); }
.uu-t-5xl { --uu-font-size: var(--uu-t-5xl); }

.uu-t-xxs, .uu-t-xs, .uu-t-sm,  .uu-t-md,  .uu-t-lg,
.uu-t-xl,  .uu-t-2xl,.uu-t-3xl, .uu-t-4xl, .uu-t-5xl {
	font-size: var(--uu-font-size) !important;
}

.uu-t-xxs :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-xs  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-sm  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-md  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-lg  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-xl  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-2xl :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-3xl :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-4xl :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6),
.uu-t-5xl :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6) {
	font-size: var(--uu-font-size) !important;
}

/* Line-height par taille — écrase les valeurs serrées d'Elementor sur les headings.
   Plus le texte est grand, plus l'interligne se resserre (règle typographique). */
.uu-t-xxs :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.60 !important; }
.uu-t-xs  :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.55 !important; }
.uu-t-sm  :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.50 !important; }
.uu-t-md  :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.45 !important; }
.uu-t-lg  :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.38 !important; }
.uu-t-xl  :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.28 !important; }
.uu-t-2xl :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.18 !important; }
.uu-t-3xl :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.10 !important; }
.uu-t-4xl :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.03 !important; }
.uu-t-5xl :where(.elementor-heading-title, p, h1,h2,h3,h4,h5,h6) { line-height: 1.06 !important; }


/* ---- 3.3 Font weight ---- */
.uu-w-thin   { font-weight: var(--uu-w-thin)   !important; }
.uu-w-normal { font-weight: var(--uu-w-normal) !important; }
.uu-w-bold   { font-weight: var(--uu-w-bold)   !important; }
.uu-w-black  { font-weight: var(--uu-w-black)  !important; }

.uu-w-thin   :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-weight: var(--uu-w-thin)   !important; }
.uu-w-normal :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-weight: var(--uu-w-normal) !important; }
.uu-w-bold   :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-weight: var(--uu-w-bold)   !important; }
.uu-w-black  :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) { font-weight: var(--uu-w-black)  !important; }


/* ---- 3.4 Couleur texte ----
   Mécanisme : chaque classe définit --uu-color (variable locale),
   puis les deux sélecteurs groupes appliquent color.
   Les aliases sémantiques (primary/secondary/accent/text) sont
   inclus dans les deux groupes — ils fonctionnent comme les autres. */

.uu-c-main      { --uu-color: var(--uu-palette-main);  }
.uu-c-leaf      { --uu-color: var(--uu-palette-leaf);  }
.uu-c-sun       { --uu-color: var(--uu-palette-sun);   }
.uu-c-mist      { --uu-color: var(--uu-palette-mist);  }
.uu-c-ink       { --uu-color: var(--uu-palette-ink);   }
.uu-c-night     { --uu-color: var(--uu-palette-night); }
.uu-c-snow      { --uu-color: var(--uu-palette-snow);  }
.uu-c-ocean     { --uu-color: var(--uu-palette-ocean); }
.uu-c-moss      { --uu-color: var(--uu-palette-moss);  }
.uu-c-stone     { --uu-color: var(--uu-palette-stone); }
.uu-c-clay      { --uu-color: var(--uu-palette-clay);  }
/* Aliases sémantiques */
.uu-c-primary   { --uu-color: var(--uu-palette-main);  }
.uu-c-secondary { --uu-color: var(--uu-palette-leaf);  }
.uu-c-accent    { --uu-color: var(--uu-palette-sun);   }
.uu-c-text      { --uu-color: var(--uu-palette-mist);  }

/* Application sur l'élément */
.uu-c-main,  .uu-c-leaf,  .uu-c-sun,   .uu-c-mist,  .uu-c-ink,
.uu-c-night, .uu-c-snow,  .uu-c-ocean, .uu-c-moss,  .uu-c-stone, .uu-c-clay,
.uu-c-primary, .uu-c-secondary, .uu-c-accent, .uu-c-text {
	color: var(--uu-color) !important;
}

/* Application sur les noeuds texte Elementor */
.uu-c-main      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-leaf      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-sun       :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-mist      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-ink       :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-night     :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-snow      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-ocean     :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-moss      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-stone     :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-clay      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-primary   :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-secondary :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-accent    :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em),
.uu-c-text      :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p, a, li, span, strong, em) {
	color: var(--uu-color) !important;
}


/* ---- 3.5 Couleur fond ---- */
.uu-bg-snow  { background-color: var(--uu-palette-snow)  !important; }
.uu-bg-night { background-color: var(--uu-palette-night) !important; }
.uu-bg-main  { background-color: var(--uu-palette-main)  !important; }
.uu-bg-leaf  { background-color: var(--uu-palette-leaf)  !important; }
.uu-bg-sun   { background-color: var(--uu-palette-sun)   !important; }
.uu-bg-mist  { background-color: var(--uu-palette-mist)  !important; }
.uu-bg-ocean { background-color: var(--uu-palette-ocean) !important; }
.uu-bg-moss  { background-color: var(--uu-palette-moss)  !important; }
.uu-bg-stone { background-color: var(--uu-palette-stone) !important; }
.uu-bg-clay  { background-color: var(--uu-palette-clay)  !important; }
/* Aliases sémantiques */
.uu-bg-primary   { background-color: var(--uu-palette-main) !important; }
.uu-bg-secondary { background-color: var(--uu-palette-leaf) !important; }
.uu-bg-accent    { background-color: var(--uu-palette-sun)  !important; }


/* ---- 3.6 Transformations & alignement texte ---- */
/* La classe se pose sur le widget (onglet Avancé) : elle doit donc aussi
   atteindre le titre à l'intérieur, que le style global Elementor vise
   directement (sinon le titre reste en capitales). */
.uu-upper,
.uu-upper :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title)    { text-transform: uppercase !important; letter-spacing: 0.02em !important; }
.uu-no-upper,
.uu-no-upper :is(h1,h2,h3,h4,h5,h6,.elementor-heading-title) { text-transform: none      !important; letter-spacing: normal  !important; }

.uu-text-start  { text-align: start  !important; }
.uu-text-center { text-align: center !important; }
.uu-text-end    { text-align: end    !important; }


/* ---- 3.7 Line-height ---- */
.uu-lh-tight { line-height: 1.1 !important; }
.uu-lh-base  { line-height: 1.6 !important; }


/* ---- 3.8 Radius ---- */
.uu-radius-sm { border-radius: var(--uu-radius-sm) !important; }
.uu-radius-md { border-radius: var(--uu-radius-md) !important; }
.uu-radius-lg { border-radius: var(--uu-radius-lg) !important; }
.uu-radius-xl { border-radius: var(--uu-radius-xl) !important; }

.uu-radius-tr-sm { border-top-right-radius: var(--uu-radius-sm) !important; }
.uu-radius-tr-md { border-top-right-radius: var(--uu-radius-md) !important; }
.uu-radius-tr-lg { border-top-right-radius: var(--uu-radius-lg) !important; }
.uu-radius-tr-xl { border-top-right-radius: var(--uu-radius-xl) !important; }


/* ---- 3.9 Espacement ---- */
.uu-p-35  { padding: var(--uu-space-35) !important; }
.uu-p-75  { padding: var(--uu-space-75) !important; }
.uu-py-35 { padding-top: var(--uu-space-35) !important; padding-bottom: var(--uu-space-35) !important; }
.uu-py-75 { padding-top: var(--uu-space-75) !important; padding-bottom: var(--uu-space-75) !important; }

.uu-m-35  { margin: var(--uu-space-35) !important; }
.uu-m-75  { margin: var(--uu-space-75) !important; }
.uu-my-35 { margin-top: var(--uu-space-35) !important; margin-bottom: var(--uu-space-35) !important; }
.uu-my-75 { margin-top: var(--uu-space-75) !important; margin-bottom: var(--uu-space-75) !important; }

.uu-no-margin { margin: 0 !important; }


/* ---- 3.10 Contraste — uu-on-dark ----
   Passe tous les noeuds texte en snow sur fond sombre.
   Pas de cascade : ne touche qu'aux enfants directs listés. */
.uu-on-dark :where(
	.elementor-heading-title,
	h1,h2,h3,h4,h5,h6,
	p, a, li, span, strong, em,
	small, figcaption
) {
	color: var(--uu-palette-snow) !important;
}
.uu-on-dark :where(a) {
	text-decoration-color: currentColor !important;
}


/* ---- 3.11 Ratios d'image — uu-ratio-* ----
   Verrouille le rapport d'une vignette quel que soit l'écran.
   Usage : classe sur le widget Image / Dynamic Image (CSS Classes),
   AUCUN réglage Width/Height dans l'onglet Style (les laisser vides).
   L'image remplit la largeur de sa colonne, la hauteur suit le ratio,
   object-fit: cover recadre sans déformer. */
.uu-ratio-43 img { --uu-ratio: 4 / 3; }
.uu-ratio-169 img { --uu-ratio: 16 / 9; }
.uu-ratio-11 img { --uu-ratio: 1 / 1; }

.uu-ratio-43 img,
.uu-ratio-169 img,
.uu-ratio-11 img {
	aspect-ratio: var(--uu-ratio) !important;
	width: 100% !important;
	height: auto !important;
	object-fit: cover !important;
}


/* ---- 3.12 Responsive — Mobile (≤ 767px) ----
   Breakpoint aligné sur Elementor mobile.
   Une seule surcharge :root suffit pour les tailles — toutes les classes
   uu-t-* utilisent les custom properties et s'adaptent automatiquement.

   uu-text-end devient center sur mobile : les colonnes s'empilent,
   le texte à droite n'a plus de sens dans une layout mono-colonne.
   Pour garder end sur mobile sur un élément précis : style inline. */

@media (max-width: 767px) {

	/* Typographie — réduction des tailles hero */
	:root {
		--uu-t-2xl: 1.80rem;  /* était clamp(2.20rem…) */
		--uu-t-3xl: 2.10rem;  /* était clamp(2.60rem…) */
		--uu-t-4xl: 2.40rem;  /* était clamp(3.40rem…) */
		--uu-t-5xl: 2.70rem;  /* était clamp(3.80rem…) */
	}

	/* Alignement : end → center (colonnes qui s'empilent) */
	.uu-text-end,
	.uu-text-end :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p) {
		text-align: center !important;
	}

	/* Helpers : forcer start ou center sur mobile uniquement.
	   Usage : ajouter uu-text-start-mobile ou uu-text-center-mobile
	   sur le widget en plus de la classe desktop. */
	.uu-text-start-mobile,
	.uu-text-start-mobile :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p) {
		text-align: start !important;
	}
	.uu-text-center-mobile,
	.uu-text-center-mobile :where(.elementor-heading-title, h1,h2,h3,h4,h5,h6, p) {
		text-align: center !important;
	}

}

/* ---- 3.13 Responsive — Tablette (768–1024px) ----
   Les tokens fluides (clamp) gardent en tablette des tailles de bureau :
   --uu-t-4xl vaut 60 px à 768 px, si bien qu'un titre de colonne déborde
   (« Contact & info », « Au cœur de la transition »). Paliers intermédiaires
   entre le bureau et le mobile (§3.12), alignés sur les titres H1/H2 du kit
   Elementor en tablette (2,8 / 2,3 rem, passe responsive du 11/10/2026). */

@media (min-width: 768px) and (max-width: 1024px) {
	:root {
		--uu-t-2xl: 2.30rem;
		--uu-t-3xl: 2.60rem;
		--uu-t-4xl: 3.00rem;
		--uu-t-5xl: 3.30rem;
	}
}


/* ============================================================
   4. COMPOSANTS GLOBAUX
   ============================================================ */

/* ---- 4.1 Coupe diagonale — uu_diagonal_cut ----
   Biseaute le coin haut-droit d'un container.
   Modifier --uu-cut et --uu-round directement sur l'élément
   pour personnaliser par instance.
   Note : clip-path:path() ne supporte pas var()/calc() —
   le polygon() est l'unique implémentation viable. */
.uu_diagonal_cut {
	--uu-cut:   60px;
	--uu-round: 100px;
	-webkit-clip-path: polygon(0 0, calc(100% - var(--uu-cut)) 0, 100% var(--uu-cut), 100% 100%, 0 100%);
	clip-path:         polygon(0 0, calc(100% - var(--uu-cut)) 0, 100% var(--uu-cut), 100% 100%, 0 100%);
}


/* ---- 4.2 Révélation viewport — uu-argument-title ----
   Classe ajoutée par JS (IntersectionObserver) : cross-browser Chrome/Firefox/Safari.
   Sans JS : élément visible normalement (progressive enhancement).
   .uu-pre-animate = état caché initial (posé par JS avant observation).
   La suppression de cette classe déclenche la transition CSS. */
.uu-argument-title {
	transition:        opacity .65s ease, transform .65s ease, filter .65s ease;
	transition-delay:  .05s;
	transform-origin:  50% 60%;
	will-change:       transform, opacity, filter;
}
.uu-argument-title.uu-pre-animate {
	opacity:   0;
	transform: translateY(28px) scale(2.22);
	filter:    blur(10px);
}
@media (prefers-reduced-motion: reduce) {
	.uu-argument-title,
	.uu-argument-title.uu-pre-animate {
		transition: none   !important;
		opacity:    1      !important;
		transform:  none   !important;
		filter:     none   !important;
	}
}


/* ---- 4.3 Texte décoratif — uu-break-listing ----
   Texte géant (opacity 10%) en arrière-plan d'un listing.
   Le margin-bottom: -10rem tire le contenu suivant sous ce texte —
   c'est intentionnel (effet de calque). */
.uu-break-listing {
	font-size: clamp(20rem, 10vw, 30rem);
	line-height: 1;
	font-weight: 700;
	color: var(--uu-palette-main);
	opacity: 0.1;
	margin: 1rem 0 -10rem 0;
	text-transform: uppercase;
}


/* ---- 4.4 Navigation — Bouton CTA ----
   Classe WP menu : menu-cta (JetMenu / Crocoblock)
   WP Admin → Apparence → Menus → "Options d'écran" → cocher "Classes CSS"
   → déplier l'élément Agir → saisir "menu-cta". */
.menu-cta .menu-item-link {
	background-color: var(--uu-palette-main) !important;
	color:            var(--uu-palette-snow) !important;
	border-radius:    50px;
	padding:          0.45em 1.5em !important;
	transition:       background-color .2s ease;
}
.menu-cta .menu-item-link:hover {
	background-color: var(--uu-palette-sun) !important;
	color:            var(--uu-palette-snow) !important;
}
/* La pastille remplace le padding de l'entrée : collée à « Nos outils »
   (25 px au lieu de 50 sur bureau, 9 au lieu de 18 en tablette). Marge
   propre, proportionnelle à la taille du texte du menu. */
.jet-nav--horizontal > .menu-cta {
	margin-left: 1.25em;
}
/* Tablette : le menu tient sur une ligne à 15 px près ; marge et pastille
   resserrées, sinon « Agir » passe à la ligne à 768 px. */
@media (min-width: 768px) and (max-width: 1024px) {
	.jet-nav--horizontal > .menu-cta {
		margin-left: 0.6em;
	}
	.jet-nav--horizontal > .menu-cta .menu-item-link {
		padding: 0.45em 1.1em !important;
	}
}
/* Mobile — bouton centré dans le menu déroulant */
.m-layout-mobile .menu-cta .menu-item-link {
	border-radius: 50px !important;
	width:         fit-content;
	margin:        4px auto !important;
	display:       block;
}

/* ---- 4.5 Particules — sl-interactions ----
   Plugin SL Interactions : couleur des particules au clic. Par défaut =
   couleur Primaire des couleurs globales Elementor. Remplacer la valeur
   pour utiliser une autre couleur globale :
     var(--e-global-color-primary)
     var(--e-global-color-secondary)
     var(--e-global-color-text)
     var(--e-global-color-accent)
   (Loader de transition retiré en sl-interactions v1.1.0.) */

.uu-sl-spark {
    --uu-sl-accent: var(--e-global-color-primary);
}


/* ---- 4.6 Contenu éditorial — prose automatique ----
   S'applique automatiquement sur :
   - .single  → tous les singles (posts, CPTs, événements, partenaires…)
   - .archive → toutes les archives dont les taxos (tax-axe, category…)
   - .page    → pages statiques (à propos, contact…)
   Ciblage : widget Text Editor Elementor (.elementor-widget-text-editor).

   Classe utilitaire .uu-prose disponible pour tout autre contexte.
   .uu-actu-body (§14) hérite via :is().

   Exclusions intentionnelles — a[class] :
   - .elementor-button : boutons Elementor (ont toujours une classe)
   - .menu-item-link   : liens de menu
   - tout CTA inline avec classe CSS personnalisée
   Les liens insérés via TinyMCE/Gutenberg n'ont jamais de classe → safe.

   Fond sombre : uu-on-dark sur la section parente suffit,
   les tokens --prose-* se surchargent automatiquement. */

/* Widgets couverts :
   - .elementor-widget-text-editor          → Text Editor Elementor
   - .elementor-widget-theme-post-content   → contenu éditeur WP (Elementor Pro)
   - .elementor-widget-jet-listing-dynamic-field → champ dynamique JetEngine */

/* Alias interne pour alléger les sélecteurs répétés */
/* --prose-widgets : text-editor | post-content | jet dynamic field */

/* Tokens — fond clair (défaut) */
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
),
:is(.uu-prose, .uu-actu-body) {
	--prose-link:        var(--uu-palette-main);
	--prose-link-hover:  var(--uu-palette-sun);
	--prose-quote-bar:   var(--uu-palette-main);
	--prose-quote-text:  var(--uu-palette-mist);
}

/* Liens inline
   text-decoration-color: currentColor → suit automatiquement la couleur du texte,
   blanc sur fond sombre, sombre sur fond clair. Pas de token séparé pour l'underline.
   Pointillé au repos, épaississement 1→2px + offset qui se resserre au hover. */
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
) a:not([class]),
:is(.uu-prose, .uu-actu-body) a:not([class]) {
	color: var(--prose-link);
	text-decoration: underline;
	text-decoration-style: dotted;
	text-decoration-color: currentColor;
	text-underline-offset: 4px;
	text-decoration-thickness: 1px;
	transition: color .2s ease, text-decoration-thickness .2s ease, text-underline-offset .2s ease;
}
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
) a:not([class]):hover,
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
) a:not([class]):focus-visible,
:is(.uu-prose, .uu-actu-body) a:not([class]):hover,
:is(.uu-prose, .uu-actu-body) a:not([class]):focus-visible {
	color: var(--prose-link-hover);
	text-decoration-thickness: 2px;
	text-underline-offset: 2px;
}

/* Blockquotes */
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
) blockquote,
:is(.uu-prose, .uu-actu-body) blockquote {
	border-left: 3px solid var(--prose-quote-bar);
	padding: 0.4em 0 0.4em 1.25em;
	margin: 1.5em 0;
	color: var(--prose-quote-text);
	font-style: italic;
	font-size: var(--uu-t-md);
	line-height: 1.55;
}
:is(.single, .archive, .page) :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
) blockquote p,
:is(.uu-prose, .uu-actu-body) blockquote p {
	margin: 0;
}

/* Tokens — fond sombre ou coloré (uu-on-dark sur la section parente)
   Texte blanc → underline currentColor = blanc automatiquement. Rien à forcer.
   La barre de blockquote passe en sun pour rester lisible sur tout fond coloré. */
.uu-on-dark :is(
	.elementor-widget-text-editor,
	.elementor-widget-theme-post-content,
	.elementor-widget-jet-listing-dynamic-field
),
.uu-on-dark :is(.uu-prose, .uu-actu-body),
:is(.uu-prose, .uu-actu-body).uu-on-dark {
	--prose-link:        var(--uu-palette-snow);
	--prose-link-hover:  var(--uu-palette-snow);
	--prose-quote-bar:   var(--uu-palette-sun);
	--prose-quote-text:  color-mix(in srgb, var(--uu-palette-snow) 80%, transparent);
}

/* ---- 4.7 Hero — mot décoratif uu-hero-bg-word ----
   display:block obligatoire : le span est inline par défaut,
   le margin négatif n'aurait aucun effet sans ça.
   uu-hero-bg-word est une classe opt-in posée sur LE widget titre ; le
   <span> intérieur EST le mot décoratif, quel que soit le widget qui le
   génère. On cible donc tout <span> descendant, plutôt que d'énumérer un
   sélecteur par markup (sinon whack-a-mole à chaque nouveau widget) :
     - Elementor Heading   → .elementor-heading-title span
     - JetEngine Dyn Field → .jet-listing-dynamic-field__content span
     - Elementor Shortcode → .elementor-shortcode span
   Tous couverts par le sélecteur unique ci-dessous. */
.uu-hero-bg-word span {
	display: block;
	font-size: 1.8em;
	/* Couleur héritée du contexte (blanc via .uu-c-snow / .uu-on-dark sur la
	   section, ou toute autre teinte). On ne fixe plus de couleur : la
	   transparence passe par opacity, qui n'entre pas en conflit avec le
	   `color: … !important` des utilitaires couleur (propriété différente) —
	   d'où l'absence de !important ici. */
	opacity: 0.60;
	line-height: 0.35;
	margin: 0 0 -0.65em -0.15em;
	pointer-events: none;
	user-select: none;
}

/* Mobile — à 1.8em le mot décoratif déborde de l'écran. On garde la
   superposition du bureau : le titre recouvre le bas du mot gris (demande de
   Romain du 11/10/2026).
   - Taille : 1.5em, plafonnée à la largeur de l'écran pour qu'un mot de neuf
     capitales (« ÉCO-CONÇU ») tienne sur une ligne à 320 px.
   - Interligne : 0.85 et non 0.38. Avec 0.38, un mot qui passe à la ligne
     (« ÉCO- / CONÇU ») ou une phrase (« Envie d'un métier qui ») empilait
     ses lignes les unes sur les autres. Les marges négatives (haut et bas)
     replacent le mot et le titre au même endroit qu'avec 0.38.
   Règle globale : vaut pour toutes les pages portant .uu-hero-bg-word. */
@media (max-width: 767px) {
	.uu-hero-bg-word span {
		font-size:   min(1.5em, calc(15.5vw - 6px));
		line-height: 0.85;
		margin:      -0.235em 0 -1.05em -0.08em;
	}
}


/* ---- 4.8 Navigation — Sous-menu 2 colonnes « Nos solutions » ----
   Widget JetBlocks Nav Menu (classes jet-nav). Passe le dropdown de
   l'entrée « Nos solutions » (menu item #11938) sur 2 colonnes :
     Col 1 : items 1 à 3
     Col 2 : items 4 et 5
   Scopé sur #11938 uniquement — les autres sous-menus restent en 1 col.
   Placement explicite (nth-child) car le split voulu est 3|2, pas 50/50.
   Desktop/tablette seulement : sous 768px le burger reprend la main
   (data-mobile-trigger-device="mobile") et le sous-menu reste empilé
   sur 1 colonne — cibles tactiles préservées.
   /!\ Si l'entrée « Nos solutions » est supprimée puis recréée, son ID
       change : mettre à jour jet-nav__item-11938 dans les 6 sélecteurs. */
@media (min-width: 768px) {

	.jet-nav .jet-nav__item-11938 > .jet-nav__sub {
		display:               grid;
		grid-template-columns: max-content max-content;
		column-gap:            clamp(1.5rem, 3vw, 3rem);
		/* JetBlocks fixe le dropdown à 260px via une feuille servie en
		   cross-origin (CDN) donc non éditable. On l'écrase pour que le
		   panneau blanc englobe bien les 2 colonnes : !important + préfixe
		   .jet-nav (specificité) sont tous deux nécessaires pour gagner. */
		width:                 max-content !important;
		min-width:             0 !important;
		max-width:             90vw;        /* garde-fou viewport */
	}

	/* Colonne 1 — les trois premiers items */
	.jet-nav__item-11938 > .jet-nav__sub > .jet-nav__item:nth-child(1) { grid-column: 1; grid-row: 1; }
	.jet-nav__item-11938 > .jet-nav__sub > .jet-nav__item:nth-child(2) { grid-column: 1; grid-row: 2; }
	.jet-nav__item-11938 > .jet-nav__sub > .jet-nav__item:nth-child(3) { grid-column: 1; grid-row: 3; }

	/* Colonne 2 — les deux items suivants */
	.jet-nav__item-11938 > .jet-nav__sub > .jet-nav__item:nth-child(4) { grid-column: 2; grid-row: 1; }
	.jet-nav__item-11938 > .jet-nav__sub > .jet-nav__item:nth-child(5) { grid-column: 2; grid-row: 2; }
}


/* ---- 4.9 Métiers — picto de secteur ----
   Picto : shortcode [secteur_icone] (mu-plugin uu-sl-metiers), en tête d'onglet.
   Le shortcode ajoute la classe `uu-secteur-icone` au <i> Font Awesome. */
.uu-secteur-icone {
	font-size:   44px;
	line-height: 1;
	color:       var(--uu-palette-sun);
}


/* ============================================================
   5. SÉPARATEURS DE SECTION — Bump & Dip
   ============================================================ */

/* ================================================
   BUMP (bosse, sort de la section) :
     uu-bump-bottom-right  uu-bump-bottom-left
     uu-bump-top-right     uu-bump-top-left

   DIP (creux coloré, reste dans la section) :
     uu-dip-bottom-right   uu-dip-bottom-left
     uu-dip-top-right      uu-dip-top-left

   Couleur : bump-white | bump-black | bump-night | bump-snow
             bump-main  | bump-leaf  | bump-sun   | bump-mist
             bump-ocean | bump-moss  | bump-stone  | bump-clay

   Ex bosse : "uu-bump-bottom-right bump-white"
   Ex creux : "uu-dip-bottom-right bump-leaf"
   ================================================ */

[class*="uu-bump-"],
[class*="uu-dip-"] {
	position: relative !important;
	z-index: 1; /* contexte de pile AU-DESSUS de la section suivante */
}

[class*="uu-bump-"] { overflow: visible !important; }
[class*="uu-dip-"]  { overflow: hidden; }

/* Fix overflow sur les wrappers Elementor
   - elementor-section-wrap = ancien layout Sections
   - .elementor               = layout Containers (e-con) */
.elementor-section-wrap:has([class*="uu-bump-"]),
.elementor:has([class*="uu-bump-"]) {
	overflow: visible !important;
}

[class*="uu-bump-"]::after,
[class*="uu-dip-"]::after {
	content: '';
	position: absolute;
	left: 0;
	width: 100%;
	height: var(--bump-h, 45px);
	pointer-events: none;
	z-index: 10;
	background-color: var(--bump-color, #ffffff);
	-webkit-mask-repeat: no-repeat; mask-repeat: no-repeat;
	/* Largeur plafonnée à 1440px et centrée : au-delà, la bosse ne s'étire
	   plus et reste alignée sur le contenu (sinon, sur un écran de 2560px,
	   elle glisse vers le bord et sort de la colonne de contenu).
	   En dessous de 1440px : min() = 100%, rendu strictement inchangé. */
	-webkit-mask-size: min(100%, 1440px) 100%;   mask-size: min(100%, 1440px) 100%;
	-webkit-mask-position: center top;           mask-position: center top;
}

[class*="uu-bump-bottom"]::after { bottom: calc(-1 * var(--bump-h, 45px) + 1px); }
[class*="uu-dip-bottom"]::after  { bottom: 0; }
[class*="uu-bump-top"]::after    { top: calc(-1 * var(--bump-h, 45px) + 1px); }
[class*="uu-dip-top"]::after     { top: 0; }

/* Masques SVG — forme originale Illustrator convertie.
   FORME A (base y=0, pic vers le bas) → bump-bottom + dip-top
   FORME B (base y=70, pic vers le haut) → bump-top + dip-bottom
   ViewBox source : 1195.5×40.8 → 1440×70
   Droite ≈ 82% de la largeur | Gauche = miroir à 18% */

.uu-bump-bottom-right::after,
.uu-dip-top-right::after {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,0 C1102,0 1111.8,4.3 1119.9,12.5 L1153.8,46 C1172,64.7 1196.8,64.7 1215.4,46 L1248.8,12.5 C1257,4.5 1266.6,0 1276.5,0 Z'/%3E%3C/svg%3E");
	mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,0 C1102,0 1111.8,4.3 1119.9,12.5 L1153.8,46 C1172,64.7 1196.8,64.7 1215.4,46 L1248.8,12.5 C1257,4.5 1266.6,0 1276.5,0 Z'/%3E%3C/svg%3E");
}

.uu-bump-bottom-left::after,
.uu-dip-top-left::after {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,0 C338,0 328.2,4.3 320.1,12.5 L286.2,46 C268,64.7 243.2,64.7 224.6,46 L191.2,12.5 C183,4.5 173.4,0 163.5,0 Z'/%3E%3C/svg%3E");
	mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,0 C338,0 328.2,4.3 320.1,12.5 L286.2,46 C268,64.7 243.2,64.7 224.6,46 L191.2,12.5 C183,4.5 173.4,0 163.5,0 Z'/%3E%3C/svg%3E");
}

.uu-bump-top-right::after,
.uu-dip-bottom-right::after {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,70 C1102,70 1111.8,65.7 1119.9,57.5 L1153.8,24 C1172,5.3 1196.8,5.3 1215.4,24 L1248.8,57.5 C1257,65.5 1266.6,70 1276.5,70 Z'/%3E%3C/svg%3E");
	mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,70 C1102,70 1111.8,65.7 1119.9,57.5 L1153.8,24 C1172,5.3 1196.8,5.3 1215.4,24 L1248.8,57.5 C1257,65.5 1266.6,70 1276.5,70 Z'/%3E%3C/svg%3E");
}

.uu-bump-top-left::after,
.uu-dip-bottom-left::after {
	-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,70 C338,70 328.2,65.7 320.1,57.5 L286.2,24 C268,5.3 243.2,5.3 224.6,24 L191.2,57.5 C183,65.5 173.4,70 163.5,70 Z'/%3E%3C/svg%3E");
	mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1440 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,70 C338,70 328.2,65.7 320.1,57.5 L286.2,24 C268,5.3 243.2,5.3 224.6,24 L191.2,57.5 C183,65.5 173.4,70 163.5,70 Z'/%3E%3C/svg%3E");
}

/* Bump/Dip — recadrage viewBox sur mobile (APRÈS les déclarations desktop — cascade correcte)
   Problème : viewBox 1440px → bosse 48px large × 42px haut = pic (ratio 1.1:1).
   Solution  : viewBox 400px centré sur la bosse → 172px large × 42px haut (ratio 4.1:1).
   Même chemins SVG, seule la fenêtre viewBox change.

   Droite : bosse centrée sur x≈1184 → viewBox "984 0 400 70"
   Gauche  : bosse centrée sur x≈255  → viewBox "55 0 400 70"  */
@media (max-width: 767px) {
	/* Séparateurs moins hauts sur petit écran : 45px paraît trop imposant
	   une fois la bosse recadrée (viewBox 400). Ajuster --bump-h au besoin. */
	[class*="uu-bump-"],
	[class*="uu-dip-"] { --bump-h: 26px; }

	.uu-bump-bottom-right::after,
	.uu-dip-top-right::after {
		-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='984 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,0 C1102,0 1111.8,4.3 1119.9,12.5 L1153.8,46 C1172,64.7 1196.8,64.7 1215.4,46 L1248.8,12.5 C1257,4.5 1266.6,0 1276.5,0 Z'/%3E%3C/svg%3E");
		mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='984 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,0 C1102,0 1111.8,4.3 1119.9,12.5 L1153.8,46 C1172,64.7 1196.8,64.7 1215.4,46 L1248.8,12.5 C1257,4.5 1266.6,0 1276.5,0 Z'/%3E%3C/svg%3E");
	}
	.uu-bump-bottom-left::after,
	.uu-dip-top-left::after {
		-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='55 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,0 C338,0 328.2,4.3 320.1,12.5 L286.2,46 C268,64.7 243.2,64.7 224.6,46 L191.2,12.5 C183,4.5 173.4,0 163.5,0 Z'/%3E%3C/svg%3E");
		mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='55 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,0 C338,0 328.2,4.3 320.1,12.5 L286.2,46 C268,64.7 243.2,64.7 224.6,46 L191.2,12.5 C183,4.5 173.4,0 163.5,0 Z'/%3E%3C/svg%3E");
	}
	.uu-bump-top-right::after,
	.uu-dip-bottom-right::after {
		-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='984 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,70 C1102,70 1111.8,65.7 1119.9,57.5 L1153.8,24 C1172,5.3 1196.8,5.3 1215.4,24 L1248.8,57.5 C1257,65.5 1266.6,70 1276.5,70 Z'/%3E%3C/svg%3E");
		mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='984 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M1092,70 C1102,70 1111.8,65.7 1119.9,57.5 L1153.8,24 C1172,5.3 1196.8,5.3 1215.4,24 L1248.8,57.5 C1257,65.5 1266.6,70 1276.5,70 Z'/%3E%3C/svg%3E");
	}
	.uu-bump-top-left::after,
	.uu-dip-bottom-left::after {
		-webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='55 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,70 C338,70 328.2,65.7 320.1,57.5 L286.2,24 C268,5.3 243.2,5.3 224.6,24 L191.2,57.5 C183,65.5 173.4,70 163.5,70 Z'/%3E%3C/svg%3E");
		mask-image:         url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='55 0 400 70' preserveAspectRatio='none'%3E%3Cpath fill='white' d='M348,70 C338,70 328.2,65.7 320.1,57.5 L286.2,24 C268,5.3 243.2,5.3 224.6,24 L191.2,57.5 C183,65.5 173.4,70 163.5,70 Z'/%3E%3C/svg%3E");
	}
}

/* Couleurs bump */
.bump-white { --bump-color: #ffffff; }
.bump-black { --bump-color: #000000; }
.bump-night { --bump-color: var(--uu-palette-night, #000000); }
.bump-snow  { --bump-color: var(--uu-palette-snow,  #ffffff); }
.bump-main  { --bump-color: var(--uu-palette-main,  #111111); }
.bump-leaf  { --bump-color: var(--uu-palette-leaf,  #111111); }
.bump-sun   { --bump-color: var(--uu-palette-sun,   #111111); }
.bump-mist  { --bump-color: var(--uu-palette-mist,  #333333); }
.bump-ocean { --bump-color: var(--uu-palette-ocean, #2365AF); }
.bump-moss  { --bump-color: var(--uu-palette-moss,  #94C023); }
.bump-stone { --bump-color: var(--uu-palette-stone, #878786); }
.bump-clay  { --bump-color: var(--uu-palette-clay,  #FFA400); }


/* ============================================================
   6. ÉDITEUR ELEMENTOR
   ============================================================ */

/* Agrandir le champ "CSS Classes" dans le panneau Avancé */
.elementor-editor-active .elementor-control-field .elementor-control-input-wrapper .elementor-control-tag-area {
	min-height: 70px;
	padding: 10px 12px;
}


/* ============================================================
   7. PAGE — ACCUEIL
   ============================================================ */

/* ---- 7.1 Icônes hover (Elementor Image widget) ----
   Classe CSS sur le widget Image : icon-territoires | icon-talents | icon-citoyens
   content:url() fonctionne en Chrome/Safari.
   Firefox conserve l'image originale — effet cosmétique, comportement acceptable.
   .uu-sim-hover ajouté par JS (IntersectionObserver, uu_axes-hover-sim.php) :
   même visuel que :hover, déclenché séquentiellement à chaque entrée dans le viewport. */
.icon-territoires img,
.icon-talents img,
.icon-citoyens img {
	transition: opacity .15s ease;
}

.icon-territoires:hover img,
.icon-territoires.uu-sim-hover img { content: url("/wp-content/uploads/2026/02/icone-territoires-seule-hover-w.svg"); }
.icon-talents:hover img,
.icon-talents.uu-sim-hover img     { content: url("/wp-content/uploads/2026/02/icone-talents-seule-hover-w.svg"); }
.icon-citoyens:hover img,
.icon-citoyens.uu-sim-hover img    { content: url("/wp-content/uploads/2026/02/icone-citoyens-seule-hover-w.svg"); }

/* Textes axes — empilés dans .uu-axes-texts (sous-container Elementor après les 3 icônes)
   Classes sur les widgets texte : uu-text-axe-1 | uu-text-axe-2 | uu-text-axe-3
   Les 3 textes occupent la même zone (position absolute) → zéro trou en layout.
   Déclencheurs : :hover (desktop) + .uu-sim-hover (IntersectionObserver, mobile inclus) */
.uu-axes-texts {
	position: relative;
	min-height: 5em;
}

.uu-text-axe-1,
.uu-text-axe-2,
.uu-text-axe-3 {
	position: absolute;
	top: 0;
	left: 0;
	right: 0;
	opacity: 0;
	transition: opacity .3s ease;
	pointer-events: none;
}

.icon-territoires:hover ~ .uu-axes-texts .uu-text-axe-1,
.icon-territoires.uu-sim-hover ~ .uu-axes-texts .uu-text-axe-1 { opacity: 1; pointer-events: auto; }

.icon-talents:hover ~ .uu-axes-texts .uu-text-axe-2,
.icon-talents.uu-sim-hover ~ .uu-axes-texts .uu-text-axe-2     { opacity: 1; pointer-events: auto; }

.icon-citoyens:hover ~ .uu-axes-texts .uu-text-axe-3,
.icon-citoyens.uu-sim-hover ~ .uu-axes-texts .uu-text-axe-3    { opacity: 1; pointer-events: auto; }

/* Mobile — masquer les textes d'axes (demande client) : pas de survol tactile,
   le sim-hover ne doit pas les révéler sur petit écran. Les pictos conservent
   leur animation d'icône. min-height:0 pour ne pas laisser de zone vide. */
@media (max-width: 767px) {
	.uu-text-axe-1,
	.uu-text-axe-2,
	.uu-text-axe-3 { display: none !important; }
	.uu-axes-texts { min-height: 0; }
}


/* ============================================================
   8. PAGE — AXES
   ============================================================ */

/* ---- 8.1 Icônes hover (Image widget — fond blanc) ----
   Classe CSS sur le widget Image : uu-icon-territoires-titre | -talents-titre | -citoyens-titre
   Même pattern que section 7 mais vers les fichiers -hover-titre (couleur, pas blanc). */
.uu-icon-territoires-titre img,
.uu-icon-talents-titre img,
.uu-icon-citoyens-titre img { transition: opacity .15s ease; }

.uu-icon-territoires-titre:hover img { content: url("/wp-content/uploads/2026/02/icone-territoires-seule-hover-titre.svg"); }
.uu-icon-talents-titre:hover img     { content: url("/wp-content/uploads/2026/02/icone-talents-seule-hover-titre.svg"); }
.uu-icon-citoyens-titre:hover img    { content: url("/wp-content/uploads/2026/02/icone-citoyens-seule-hover-titre.svg"); }

/* ---- 8.2 Icônes hover (Jet Listing Dynamic Image — IDs de page) ----
   sl-icon-19 = territoires | sl-icon-20 = talents | sl-icon-21 = citoyens */
.sl-icon-19:hover img { content: url("/wp-content/uploads/2026/02/icone-territoires-seule-hover-titre.svg"); }
.sl-icon-20:hover img { content: url("/wp-content/uploads/2026/02/icone-talents-seule-hover-titre.svg"); }
.sl-icon-21:hover img { content: url("/wp-content/uploads/2026/02/icone-citoyens-seule-hover-titre.svg"); }

/* Préchargement de tous les SVGs hover — évite le flash au premier survol.
   TODO éco : ces 6 SVGs se chargent sur toutes les pages (CSS global).
   À optimiser via wp_add_inline_style() conditionnel dans functions.php
   si le trafic monte et que ça devient mesurable. */
body::after {
	content:
		url("/wp-content/uploads/2026/02/icone-territoires-seule-hover-w.svg")
		url("/wp-content/uploads/2026/02/icone-talents-seule-hover-w.svg")
		url("/wp-content/uploads/2026/02/icone-citoyens-seule-hover-w.svg")
		url("/wp-content/uploads/2026/02/icone-territoires-seule-hover-titre.svg")
		url("/wp-content/uploads/2026/02/icone-talents-seule-hover-titre.svg")
		url("/wp-content/uploads/2026/02/icone-citoyens-seule-hover-titre.svg");
	position: absolute;
	width: 0;
	height: 0;
	overflow: hidden;
	opacity: 0;
	pointer-events: none;
}


/* ============================================================
   9. PAGE — AU FIL DE L'EAU
   ============================================================ */

/* ---- 9.1 Grille responsive — rapports d'activité ---- */
.sl-rapport-activite .jet-listing-dynamic-repeater__items {
	display: flex;
	flex-wrap: wrap;
	gap: 20px;
}

.sl-rapport-activite .jet-listing-dynamic-repeater__item {
	flex: 0 0 calc(25% - 15px);
	max-width: calc(25% - 15px);
}

@media (max-width: 1024px) {
	.sl-rapport-activite .jet-listing-dynamic-repeater__item {
		flex: 0 0 calc(50% - 10px);
		max-width: calc(50% - 10px);
	}
}

@media (max-width: 768px) {
	.sl-rapport-activite .jet-listing-dynamic-repeater__item {
		flex: 0 0 100%;
		max-width: 100%;
	}
}


/* ============================================================
   10. TEMPLATE — SINGLE PARTENAIRE
   ============================================================ */

/* ---- 10.1 Stats ---- */
.uu_stat_partenaire .elementor-heading-title {
	font-size: 2rem;
	font-weight: 200;
	line-height: 1.1;
}

.uu_stat_partenaire .elementor-heading-title .jet-engine-query-count {
	font-size: 5rem;
	font-weight: 900;
	line-height: 2.5rem;
	display: inline-block;
}

/* ---- 10.2 Présentation ---- */
.presentation-partenaire :where(h2) { font-size: var(--uu-t-lg) !important; }
.presentation-partenaire :where(h3) { font-size: var(--uu-t-md) !important; }
.presentation-partenaire :where(h4) { font-size: var(--uu-t-md) !important; }
.presentation-partenaire :where(h2, h3, h4) {
	line-height: 1.15;
	margin: 0 0 0.6em;
}

/* ============================================================
   11. COMPOSANT — CARTE LEAFLET (JetEngine)
   ============================================================ */

/* ---- 11.1 Tuiles — niveaux de gris légèrement contrastés ---- */
.leaflet-container .leaflet-tile {
	filter: grayscale(1) contrast(1.15) brightness(1.03);
}

/* ---- 11.2 Bouton plein écran UU_SL ----
   Injecté par JS dans .leaflet-container — même look que les contrôles Leaflet natifs. */
.uu-sl-fs-btn {
	position: absolute;
	top: 10px;
	right: 10px;
	z-index: 1000;
	width: 30px;
	height: 30px;
	background: var(--uu-palette-snow, #fff);
	border: 2px solid rgba(0, 0, 0, .2);
	border-radius: 4px;
	cursor: pointer;
	font-size: 18px;
	line-height: 1;
	display: flex;
	align-items: center;
	justify-content: center;
	box-shadow: 0 1px 5px rgba(0, 0, 0, .3);
	color: var(--uu-palette-stone);
	transition: color .15s ease, background .15s ease;
}
.uu-sl-fs-btn:hover,
.uu-sl-fs-btn:focus {
	background: #f4f4f4;
	color: var(--uu-palette-clay);
}

/* Fullscreen natif — le navigateur gère le rendu indépendamment des
   parents Elementor avec transform. Pas de mouvement DOM. */
.leaflet-container:fullscreen,
.leaflet-container:-webkit-full-screen {
	width:  100vw !important;
	height: 100vh !important;
	border-radius: 0 !important;
}


/* ============================================================
   12. FILTRES JETSMART
   ============================================================ */


/* ============================================================
   13. BOUTON RETOUR PARENT — uu-one-step-back
   ============================================================ */

/* Position relative + z-index pour passer au-dessus des overlays
   Elementor (section link, jet-listing card overlay). */
.uu-one-step-back {
	position: relative;
	z-index: 2;
}

/* Flèche gauche avant le label, via CSS — compatible avec esc_html() */
.uu-one-step-back::before {
	content: '←';
	margin-right: 0.4em;
	font-style: normal;
}

/* Mobile : bouton plus discret (151×46 → ~118×38), aligné sur la gouttière
   de 20 px et décollé de la carte par les réglages Elementor des gabarits. */
@media (max-width: 767px) {
	.elementor-button.uu-one-step-back {
		font-size: 0.8rem;
		padding: 0.85em 1.3em;
	}
}


/* ============================================================
   14. TEMPLATE SINGLE ARTICLE ET EVENEMENT
   ============================================================ */
/* ---- 14.1 Contenu principal ---- */

.uu-actu-body :where(h1, h2, h3, h4, h5, h6) {
  line-height: 1.15;
  margin: 0 0 0.6em;
}
.uu-actu-body h1 {
  font-size: var(--uu-t-xl);
}
.uu-actu-body h2 {
  font-size: var(--uu-t-lg);
}
.uu-actu-body h3 {
  font-size: var(--uu-t-md);
}
.uu-actu-body h4 {
  font-size: var(--uu-t-sm);
}
.uu-actu-body h5 {
  font-size: var(--uu-t-sm);
}
.uu-actu-body h6 {
  font-size: var(--uu-t-sm);
}


/* ============================================================
   15. LIGHTBOX ELEMENTOR / JETENGINE — Footer
   ============================================================ */

/* Masque le footer de la lightbox (titre et description).
   Elementor injecte le nom de fichier brut si aucun titre n'est renseigné —
   comportement intrusif sur les galeries photos.
   Pour ré-activer sur une galerie précise, retirer ce bloc et gérer
   par une classe CSS sur le widget. */
.elementor-slideshow__footer {
	display: none !important;
}


/* ============================================================
   16. TARTEAUCITRON — Skin intégré aux tokens §2
   Le moteur injecte sa propre structure (#tarteaucitronRoot /
   #tarteaucitronAlertBig / #tarteaucitron / #tarteaucitronIcon).
   Objectif : 100% cohérent identité SL — bannière compacte,
   popup "carte" (même esprit que la popup CSE), X orange
   circulaire, icône flottante disque + cookie SVG inline,
   branding TAC masqué. Tokens §2 uniquement, zéro asset.
   ============================================================ */

/* Typo cohérente sur tout le composant */
#tarteaucitronRoot,
#tarteaucitronRoot * {
	font-family: var(--uu-font-body) !important;
}

/* ── 16.1 Bannière principale ─────────────────────────────── */
/* ⚠️  Spécificité bumpée à (0,2,1) via `body #tarteaucitronRoot ...` pour
   battre les règles `#tarteaucitronAlertBig #tarteaucitronXxx !important`
   du fichier tarteaucitron.min.css (chargé APRÈS notre style.css). */
body #tarteaucitronRoot #tarteaucitronAlertBig {
	background: var(--uu-palette-snow) !important;
	color: var(--uu-palette-ink) !important;
	border-top: 1px solid color-mix(in srgb, var(--uu-palette-ink) 10%, transparent) !important;
	box-shadow: 0 -6px 24px rgba(0, 0, 0, 0.08) !important;
	padding: 0.65rem 1.25rem !important;
	font-size: var(--uu-t-xs) !important;
	line-height: 1.4 !important;
	display: flex !important;
	flex-wrap: wrap !important;
	align-items: center !important;
	justify-content: center !important;
	gap: 0.5rem 0.6rem !important;
	/* TAC met width:100% + box-sizing:content-box par défaut → le padding
	   horizontal s'ajoute à la largeur du parent et fait déborder le
	   bandeau (right: -40px). On force border-box pour absorber le padding. */
	box-sizing: border-box !important;
	width: 100% !important;
	right: 0 !important;
}

/* 🐛  Fermeture réelle du bandeau au consentement.
   Au clic Accepter/Refuser, TAC pose style="display:none" en inline sur
   le bandeau — mais la règle `display: flex !important` ci-dessus écrasait
   cet inline : le conteneur restait en flex, fixé en bas, invisible mais
   captant encore les clics sur la dernière ligne du footer (mentions
   légales + crédit). On rétablit la fermeture dès que l'inline le demande. */
body #tarteaucitronRoot #tarteaucitronAlertBig[style*="display: none"],
body #tarteaucitronRoot #tarteaucitronAlertBig[style*="display:none"] {
	display: none !important;
}

/* ⚠️  Mapping réel des IDs Tarteaucitron en mode AcceptAllCta + DenyAllCta
   (les noms d'IDs ne reflètent PAS le texte affiché — vérifié dans
   tarteaucitron.min.js v1.31+) :
     #tarteaucitronPersonalize2 → bouton "Tout accepter" (CTA primaire)
     #tarteaucitronAllDenied2   → bouton "Tout refuser"
     #tarteaucitronCloseAlert   → bouton "Personnaliser"
     #tarteaucitronPrivacyUrl   → lien "Politique de confidentialité"
   Le texte des labels et le lien Politique inline sont gérés en JS
   (inc/uu_cookies.php) — voir bloc customizeAlertBig dans le fichier. */

/* Disclaimer — texte du bandeau (0.9rem). Le lien Politique est injecté
   inline dans le innerHTML via le JS post-init de uu_cookies.php. */
body #tarteaucitronRoot #tarteaucitronDisclaimerAlert {
	flex: 1 1 280px;
	margin: 0 !important;
	color: var(--uu-palette-ink) !important;
	font-weight: var(--uu-w-normal) !important;
	font-size: 0.85rem !important;
	line-height: 1.4 !important;
}
/* Lien Politique injecté inline dans le disclaimer — avec petite marge
   gauche pour garantir l'espacement visuel avec le point. */
body #tarteaucitronRoot #tarteaucitronDisclaimerAlert a {
	color: inherit !important;
	text-decoration: underline !important;
	text-underline-offset: 3px !important;
	margin-left: 0.25em !important;
	transition: color .2s ease !important;
}
body #tarteaucitronRoot #tarteaucitronDisclaimerAlert a:hover {
	color: var(--uu-palette-main) !important;
}

/* Ordre visuel : [Texte+Politique inline] → Accepter → Personnaliser → Refuser */
body #tarteaucitronRoot #tarteaucitronPersonalize2 { order: 1; } /* Accepter */
body #tarteaucitronRoot #tarteaucitronCloseAlert   { order: 2; } /* Personnaliser */
body #tarteaucitronRoot #tarteaucitronAllDenied2   { order: 3; } /* Refuser */

/* Le bouton-lien Politique séparé est masqué (le lien est inline dans le disclaimer) */
body #tarteaucitronRoot #tarteaucitronPrivacyUrl {
	display: none !important;
}

/* Cache les check/cross icons injectées par TAC dans les boutons CTA */
body #tarteaucitronRoot .tarteaucitronCheck,
body #tarteaucitronRoot .tarteaucitronCross {
	display: none !important;
}

/* ACCEPTER — pill verte pleine, GRAS (ID = #tarteaucitronPersonalize2) */
body #tarteaucitronRoot #tarteaucitronPersonalize2 {
	background: var(--uu-palette-main) !important;
	color: var(--uu-palette-snow) !important;
	border: 0 !important;
	border-radius: 50px !important;
	padding: 0.35em 0.85em !important;
	font-weight: var(--uu-w-bold) !important;
	font-size: 0.72rem !important;
	line-height: 1.3 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.03em !important;
	text-decoration: none !important;
	cursor: pointer !important;
	display: inline-flex !important;
	align-items: center !important;
	white-space: nowrap !important;
	transition: background-color .2s ease, transform .2s ease !important;
}
body #tarteaucitronRoot #tarteaucitronPersonalize2:hover {
	background: var(--uu-palette-sun) !important;
	transform: scale(1.03) !important;
}

/* PERSONNALISER + REFUSER — texte uppercase, sans bordure, poids NORMAL.
   (PERSONNALISER = #tarteaucitronCloseAlert, REFUSER = #tarteaucitronAllDenied2) */
body #tarteaucitronRoot #tarteaucitronCloseAlert,
body #tarteaucitronRoot #tarteaucitronAllDenied2 {
	background: transparent !important;
	border: 0 !important;
	color: var(--uu-palette-ink) !important;
	font-weight: var(--uu-w-normal) !important;
	font-size: 0.72rem !important;
	line-height: 1.3 !important;
	text-transform: uppercase !important;
	letter-spacing: 0.03em !important;
	text-decoration: none !important;
	padding: 0.35em 0.25em !important;
	cursor: pointer !important;
	display: inline-flex !important;
	align-items: center !important;
	white-space: nowrap !important;
	transition: color .2s ease !important;
}
body #tarteaucitronRoot #tarteaucitronCloseAlert:hover,
body #tarteaucitronRoot #tarteaucitronAllDenied2:hover {
	color: var(--uu-palette-main) !important;
}

/* ── 16.2 Popup "Personnaliser" — carte style site (cf popups Elementor) ─
   Aligné sur les popups du site : coins arrondis + ombre douce portée. */
html body #tarteaucitronRoot #tarteaucitron {
	background: var(--uu-palette-snow) !important;
	border-radius: var(--uu-radius-xl) !important;      /* coins ronds comme les popups du site */
	box-shadow: none !important;                        /* pas d'ombre (comme les autres popups) */
	max-width: 640px !important;
	width: calc(100% - 2rem) !important;
	max-height: 85vh !important;
	padding: 0 !important;
	/* overflow hidden = les fonds blancs internes (.tarteaucitronBorder,
	   #tarteaucitronSave) sont rognés à l'arrondi → les 4 coins sont ronds.
	   La croix repasse à l'intérieur (sinon elle serait rognée). L'ombre
	   portée n'est PAS rognée par overflow. */
	overflow: hidden !important;
	font-size: var(--uu-t-sm) !important;
	color: var(--uu-palette-ink) !important;
}
/* Zone scrollable interne : on tue la scrollbar horizontale moche */
html body #tarteaucitronRoot #tarteaucitronServices,
html body #tarteaucitronRoot #tarteaucitronServices_mandatory {
	max-height: calc(85vh - 80px) !important;
	overflow-y: auto !important;
	overflow-x: hidden !important;
	border-radius: 0 !important;
}
html body #tarteaucitronRoot #tarteaucitron * {
	color: var(--uu-palette-ink) !important;
}

/* Couleur du texte des boutons du panneau : désormais définie PAR ÉTAT
   (autorisé = encre sur vert, refusé = blanc sur rouge, inactif = gris) —
   voir le bloc « Boutons du panneau — ÉTAT PILOTÉ PAR LE CHOIX » plus bas. */

/* Overlay — voile vert PLAT, sans flou ni ombre (comme les autres popups du site). */
html body #tarteaucitronBack,
html body #tarteaucitronRoot #tarteaucitronBack {
	background: color-mix(in srgb, var(--uu-palette-moss) 45%, transparent) !important;
	backdrop-filter: none !important;
	-webkit-backdrop-filter: none !important;
	filter: none !important;
	opacity: 1 !important;
}

/* X de fermeture — disque orange propre.
   Le texte "Fermer" injecté par TAC est masqué via text-indent négatif
   (n'affecte pas le pseudo-élément ::before qui sera en position absolute). */
html body #tarteaucitronRoot #tarteaucitronClosePanel {
	position: absolute !important;
	top: 12px !important;
	right: 12px !important;
	z-index: 2 !important;
	width: 40px !important;
	height: 40px !important;
	border-radius: 50% !important;
	background: var(--uu-palette-clay) !important;
	border: 0 !important;
	box-shadow: 0 3px 12px rgba(0, 0, 0, 0.22) !important;
	cursor: pointer !important;
	padding: 0 !important;
	margin: 0 !important;
	z-index: 10 !important;
	overflow: hidden !important;
	text-indent: -9999px !important; /* cache le texte "Fermer" */
	display: block !important;
	transition: transform .2s ease, background-color .2s ease !important;
}
html body #tarteaucitronRoot #tarteaucitronClosePanel::before {
	content: "×" !important;
	position: absolute !important;
	top: 0 !important;
	left: 0 !important;
	right: 0 !important;
	bottom: 0 !important;
	display: flex !important;
	align-items: center !important;
	justify-content: center !important;
	font-family: Arial, "Helvetica Neue", sans-serif !important;
	font-size: 28px !important;
	font-weight: var(--uu-w-bold) !important;
	color: var(--uu-palette-snow) !important;
	line-height: 1 !important;
	text-indent: 0 !important; /* reset l'indent négatif du parent */
	margin-top: -2px !important;
}
html body #tarteaucitronRoot #tarteaucitronClosePanel:hover {
	background: var(--uu-palette-main) !important;
	transform: scale(1.08) !important;
}

/* ⚠️  TAC injecte ses propres styles avec spécificité (0,2,0) +
   !important. On bump à (0,2,1) via `body` et on FORCE inherit pour la
   police (qui remonte jusqu'au body en Rubik via Elementor Kit). */

/* Police body de la popup — hérite du site (Rubik via Elementor) */
body #tarteaucitronRoot #tarteaucitron,
body #tarteaucitronRoot #tarteaucitron * {
	font-family: var(--uu-font-body) !important;
}

/* Titres popup — police head + tailles mappées sur l'échelle uu-t-* */
body #tarteaucitronRoot #tarteaucitron h1,
body #tarteaucitronRoot #tarteaucitron h2,
body #tarteaucitronRoot #tarteaucitron h3,
body #tarteaucitronRoot #tarteaucitron h4,
body #tarteaucitronRoot .tarteaucitronH1,
body #tarteaucitronRoot .tarteaucitronH2,
body #tarteaucitronRoot .tarteaucitronH3,
body #tarteaucitronRoot .tarteaucitronH4 {
	font-family: var(--uu-font-head) !important;
	color: var(--uu-palette-ink) !important;
	background: transparent !important;
	font-weight: var(--uu-w-bold) !important;
	border: 0 !important;
	padding: 0.4rem 0 !important;
	margin: 0.4rem 0 !important;
	line-height: 1.15 !important;
	display: block !important;
}

/* Tailles : matches l'échelle de titres globale du site
     H1 "Gestion des cookies"            → ~H2 site (--uu-t-2xl) — centré
     H2 "Préférences pour tous services" → ~H3 site (--uu-t-xl)  — centré
     H3 "APIs", "HelloAsso", "GA4"…      → ~H4 site (--uu-t-lg)
     H4 (sous-titres si présents)        → ~H5 site (--uu-t-md) */
/* H1 = TITRE (Rubik gras, gris site) — resserré, taille popup (pas pleine page) */
html body #tarteaucitronRoot .tarteaucitronH1 {
	font-size: var(--uu-t-xl) !important;
	text-align: center !important;
	width: 100% !important;
	display: block !important;
	margin: 0.25rem 0 0.75rem !important;
}
/* H2 = SOUS-TITRE — thin + MAJUSCULES + interlettrage, jeu de contraste
   avec le titre gras (cf. hiérarchie titre / sous-titre / texte du site). */
html body #tarteaucitronRoot .tarteaucitronH2 {
	font-size: var(--uu-t-sm) !important;
	font-weight: var(--uu-w-thin) !important;
	text-transform: uppercase !important;
	letter-spacing: 0.12em !important;
	text-align: center !important;
	width: 100% !important;
	display: block !important;
	margin: 0.5rem 0 1.25rem !important;
}
/* Le sous-titre H2 est enveloppé dans un <div class="tarteaucitronName">
   (en-tête) qui impose text-align:left → on force le centrage du wrapper. */
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronMainLineOffset .tarteaucitronName {
	text-align: center !important;
	width: 100% !important;
	display: block !important;
}
html body #tarteaucitronRoot .tarteaucitronH3 {
	font-size: var(--uu-t-lg) !important;
	display: block !important;
	margin: 0 0 0.2rem 0 !important;
	padding: 0 !important;
	line-height: 1.15 !important;
}
/* Resserre la zone légende sous le titre service (statut + liens) */
html body #tarteaucitronRoot .tarteaucitronName .tarteaucitronStatusInfo {
	display: inline !important;
	margin: 0 !important;
}
html body #tarteaucitronRoot .tarteaucitronName .tarteaucitronStatusInfo,
html body #tarteaucitronRoot .tarteaucitronName .tarteaucitronReadmoreInfo,
html body #tarteaucitronRoot .tarteaucitronName .tarteaucitronReadmoreOfficial,
html body #tarteaucitronRoot .tarteaucitronName .tarteaucitronReadmoreSeparator {
	margin-top: 0 !important;
	margin-bottom: 0 !important;
	padding-top: 0 !important;
	padding-bottom: 0 !important;
	line-height: 1.3 !important;
}
html body #tarteaucitronRoot .tarteaucitronH4 {
	font-size: var(--uu-t-md) !important;
	display: block !important;
}

/* Zone titre principale + bulk actions — centrée */
body #tarteaucitronRoot #tarteaucitronMainLineOffset {
	padding: 2rem 2rem 1.5rem !important;
	background: transparent !important;
	text-align: center !important;
}
body #tarteaucitronRoot #tarteaucitronPercentage {
	background: var(--uu-palette-main) !important;
}

/* Catégories / lignes service — séparées par filet vert pointillé.
   Le <li>.tarteaucitronLine contient .tarteaucitronName (gauche, prend
   la place) et .tarteaucitronAsk (boutons, à droite) — flexbox pour
   les aligner sur la même ligne.
   ATTENTION : .tarteaucitronMainLine (la zone du haut "Gestion des
   cookies" + bulk buttons) a AUSSI la classe .tarteaucitronLine — on
   exclut la mainLine via :not() pour préserver son layout en colonne. */
html body #tarteaucitronRoot .tarteaucitronLine:not(.tarteaucitronMainLine) {
	background: transparent !important;
	border-top: 1px dashed color-mix(in srgb, var(--uu-palette-moss) 60%, transparent) !important;
	padding: 1.5rem 2rem !important;
	display: flex !important;
	align-items: center !important;
	justify-content: space-between !important;
	gap: 1.5rem !important;
	list-style: none !important;
}
html body #tarteaucitronRoot .tarteaucitronLine:not(.tarteaucitronMainLine) > .tarteaucitronName {
	flex: 1 1 auto !important;
	min-width: 0 !important;
}
html body #tarteaucitronRoot .tarteaucitronLine:not(.tarteaucitronMainLine) > .tarteaucitronAsk {
	flex: 0 0 auto !important;
	display: flex !important;
	gap: 0.5rem !important;
	align-items: center !important;
	width: auto !important;
	padding: 0 !important;
	text-align: right !important;
}
/* .tarteaucitronMainLine = bloc du haut, layout en colonne, contenu centré */
html body #tarteaucitronRoot .tarteaucitronLine.tarteaucitronMainLine {
	display: block !important;
	text-align: center !important;
	border-top: 0 !important;
}
body #tarteaucitronRoot .tarteaucitronName {
	color: var(--uu-palette-ink) !important;
	font-weight: var(--uu-w-bold) !important;
	font-size: var(--uu-t-md) !important;
	font-family: var(--uu-font-head) !important;
	margin-bottom: 0.5rem !important;
	display: block !important;
}
/* Liens "En savoir plus" (.tarteaucitronReadmoreInfo) + "Voir le site
   officiel" (.tarteaucitronReadmoreOfficial) + leur séparateur dans
   .tarteaucitronName — forcer poids NORMAL et taille body. */
html body #tarteaucitronRoot .tarteaucitronReadmoreInfo,
html body #tarteaucitronRoot .tarteaucitronReadmoreOfficial,
html body #tarteaucitronRoot .tarteaucitronReadmoreSeparator,
html body #tarteaucitronRoot .tarteaucitronListCookies,
html body #tarteaucitronRoot .tarteaucitronListCookies *,
html body #tarteaucitronRoot .tarteaucitronStatusInfo,
html body #tarteaucitronRoot .tarteaucitronStatusInfo *,
html body #tarteaucitronRoot .tacCurrentStatus,
html body #tarteaucitronRoot .tarteaucitronName a {
	color: var(--uu-palette-mist) !important;
	font-size: var(--uu-t-xxs) !important;
	font-weight: var(--uu-w-normal) !important;
	font-family: var(--uu-font-body) !important;
	text-decoration: none !important;
}
html body #tarteaucitronRoot #tarteaucitron a:hover {
	text-decoration: underline !important;
	color: var(--uu-palette-main) !important;
}

/* Wrapper boutons BULK = #tarteaucitronScrollbarAdjust (ID UNIQUE, en haut).
   On centre uniquement par l'ID, PAS .tarteaucitronAsk (qui est aussi
   utilisé par chaque service — voir layout flex de .tarteaucitronLine). */
html body #tarteaucitronRoot #tarteaucitronScrollbarAdjust {
	text-align: center !important;
	display: block !important;
	width: 100% !important;
	padding: 0.5rem 0 1.5rem !important;
}
html body #tarteaucitronRoot #tarteaucitronScrollbarAdjust button {
	margin: 0 0.4rem !important;
}

/* Titres de catégorie masqués — une seule prestation par catégorie
   visible (APIs→HelloAsso, Mesure d'audience→GA4, Vidéos→YouTube) :
   l'en-tête ferait doublon avec le nom du service. Liste à plat,
   conforme à la maquette validée. Le service reste visible (il est
   imbriqué dans le <li> de catégorie, pas dans le header masqué).
   Pour réintroduire un libellé de section : remettre `display:block`
   et le restyler en petite étiquette majuscule. */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronTitle {
	display: none !important;
}
/* Vire le "+" / "−" du toggle injecté par TAC */
body #tarteaucitronRoot .tarteaucitronTitle button::before,
body #tarteaucitronRoot .tarteaucitronTitle button::after,
body #tarteaucitronRoot .tarteaucitronPlus,
body #tarteaucitronRoot .tarteaucitronMinus {
	display: none !important;
	content: none !important;
}

/* Glyphs ☐ ✓ ✗ par défaut TAC — verrue UX, on dégage */
body #tarteaucitronRoot .tarteaucitronCheck,
body #tarteaucitronRoot .tarteaucitronCross,
body #tarteaucitronRoot .tarteaucitronAllow::before,
body #tarteaucitronRoot .tarteaucitronDeny::before {
	display: none !important;
	content: none !important;
}

/* ============================================================
   Boutons du panneau — ÉTAT PILOTÉ PAR LE CHOIX
   ------------------------------------------------------------
   Refonte ergonomie. L'ANCIEN modèle colorait les boutons par
   TYPE (.tarteaucitronAllow toujours vert) → un service refusé
   affichait quand même un « Autoriser » vert plein : on avait
   l'impression que tout était accepté.
   NOUVEAU modèle : l'état suit `aria-pressed` (source de vérité
   mise à jour par TAC — vérifié en prod). Contrôle segmenté :
     • AUTORISÉ actif → pastille VERTE, texte encre
     • REFUSÉ  actif → pastille ROUGE, texte blanc
     • option non retenue → gris, fond transparent
   Le rouge est la seule couleur hors palette SL : volontaire,
   signal universel « bloqué ». Défini en variable locale ci-dessous.
   ============================================================ */
#tarteaucitronRoot {
	/* Le site n'utilise PAS de noir : son texte/titres sont en #575756.
	   On redéfinit `--uu-palette-ink` (= #000 au global) localement au
	   composant → tous les `var(--uu-palette-ink)` du bandeau ET de la
	   popup basculent sur le gris maison en une seule ligne. */
	--uu-palette-ink:   #575756;
	--uu-tac-deny:      #d14545;                                              /* refusé (sémantique)       */
	--uu-tac-track:     color-mix(in srgb, var(--uu-palette-ink) 6%, transparent);  /* fond piste segmentée */
	--uu-tac-track-bd:  color-mix(in srgb, var(--uu-palette-ink) 14%, transparent); /* bord piste           */
	--uu-tac-off:       var(--uu-palette-stone);                              /* libellé option inactive   */
}

/* Piste segmentée : conteneur des 2 boutons de CHAQUE service
   (.tarteaucitronAsk, hors ligne bulk du haut). */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk {
	display: inline-flex !important;
	align-items: center !important;
	gap: 2px !important;
	width: auto !important;
	padding: 3px !important;
	background: var(--uu-tac-track) !important;
	border: 1px solid var(--uu-tac-track-bd) !important;
	border-radius: 50px !important;
}

/* Segments neutres par défaut — services uniquement (le wrapper bulk
   du haut #tarteaucitronScrollbarAdjust partage la classe .tarteaucitronAsk
   mais vit dans .tarteaucitronMainLine → exclu ici).
   NB : Elementor impose un `-webkit-text-fill-color` global qui l'emporte
   sur `color` pour le rendu du texte → on pose les DEUX à chaque état. */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronAllow,
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronDeny {
	background: transparent !important;
	color: var(--uu-tac-off) !important;
	-webkit-text-fill-color: var(--uu-tac-off) !important;
	border: 0 !important;
	border-radius: 50px !important;
	margin: 0 !important;
	padding: 0.42em 1.05em !important;
	font-size: 0.8rem !important;
	font-weight: var(--uu-w-bold) !important;
	font-family: var(--uu-font-head) !important;
	text-transform: none !important;
	letter-spacing: 0.01em !important;
	line-height: 1.2 !important;
	cursor: pointer !important;
	opacity: 1 !important;
	transition: background-color .18s ease, color .18s ease !important;
}
/* Survol d'une option non retenue */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronAllow[aria-pressed="false"]:hover,
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronDeny[aria-pressed="false"]:hover {
	color: var(--uu-palette-ink) !important;
	-webkit-text-fill-color: var(--uu-palette-ink) !important;
	background: color-mix(in srgb, var(--uu-palette-ink) 6%, transparent) !important;
}
/* AUTORISÉ actif → vert, texte BLANC (choix : lisibilité + punch sur #95D600) */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronAllow[aria-pressed="true"] {
	background: var(--uu-palette-main) !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}
/* REFUSÉ actif → rouge, texte blanc */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronDeny[aria-pressed="true"] {
	background: var(--uu-tac-deny) !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

/* Rappel d'état sur toute la ligne : filet couleur à gauche (glanceable).
   Exclut la mainLine (bloc titre + bulk du haut). */
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine.tarteaucitronIsAllowed:not(.tarteaucitronMainLine) {
	box-shadow: inset 3px 0 0 var(--uu-palette-main) !important;
}
html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine.tarteaucitronIsDenied:not(.tarteaucitronMainLine) {
	box-shadow: inset 3px 0 0 var(--uu-tac-deny) !important;
}

/* ── Boutons bulk (Tout accepter / Tout refuser) ──────────────
   Même sémantique : l'action active est pleine, l'autre en ghost. */
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllAllowed,
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllDenied {
	background: transparent !important;
	color: var(--uu-palette-ink) !important;
	-webkit-text-fill-color: var(--uu-palette-ink) !important;
	border: 1.5px solid var(--uu-tac-track-bd) !important;
	border-radius: 50px !important;
	padding: 0.55em 1.5em !important;
	font-size: 0.85rem !important;
	font-weight: var(--uu-w-bold) !important;
	font-family: var(--uu-font-head) !important;
	text-transform: none !important;
	letter-spacing: 0.01em !important;
	line-height: 1.2 !important;
	cursor: pointer !important;
	display: inline-flex !important;
	align-items: center !important;
	justify-content: center !important;
	white-space: nowrap !important;
	opacity: 1 !important;
	transition: background-color .18s ease, border-color .18s ease, transform .15s ease !important;
}
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllAllowed:hover,
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllDenied:hover {
	transform: translateY(-1px) !important;
	border-color: color-mix(in srgb, var(--uu-palette-ink) 32%, transparent) !important;
}
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllAllowed[aria-pressed="true"] {
	background: var(--uu-palette-main) !important;
	border-color: var(--uu-palette-main) !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronAllDenied[aria-pressed="true"] {
	background: var(--uu-tac-deny) !important;
	border-color: var(--uu-tac-deny) !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
}

/* ── Enregistrer — action primaire verte ────────────────────── */
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronSaveButton {
	background: var(--uu-palette-main) !important;
	color: #fff !important;
	-webkit-text-fill-color: #fff !important;
	border: 0 !important;
	border-radius: 50px !important;
	padding: 0.6em 1.8em !important;
	font-size: 0.9rem !important;
	font-weight: var(--uu-w-bold) !important;
	font-family: var(--uu-font-head) !important;
	text-transform: none !important;
	letter-spacing: 0.01em !important;
	cursor: pointer !important;
	transition: filter .18s ease, transform .15s ease !important;
}
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronSaveButton:hover {
	filter: brightness(1.06) !important;
	transform: translateY(-1px) !important;
}

/* Petit X de fermeture compact (parfois affiché à côté des services) */
body #tarteaucitronRoot #tarteaucitronCloseCross {
	background: transparent !important;
	color: var(--uu-palette-ink) !important;
	border: 0 !important;
	font-size: 0.8rem !important;
	cursor: pointer !important;
}

/* ── 16.3 Masquage branding TAC + placeholders trompeurs ──── */
/* #tarteaucitronNoServicesTitle : ligne « Ce site n'utilise aucun cookie
   nécessitant votre consentement » — placeholder TAC affiché à tort alors
   que des services à consentement (GA4, YouTube, HelloAsso) sont bien là. */
#tarteaucitronRoot #tarteaucitronBackCitron,
#tarteaucitronRoot .tarteaucitronLogo,
#tarteaucitronRoot #tarteaucitronInfo,
#tarteaucitronRoot .tarteaucitronSelfLink,
#tarteaucitronRoot #tarteaucitronDisclaimer,
#tarteaucitronRoot #tarteaucitronNoServicesTitle {
	display: none !important;
}

/* Lien « Politique de confidentialité » dans la popup — réactivé et
   restylé en lien discret centré (l'URL vient de la config `privacyUrl`
   de uu_cookies.php → Réglages WP › Confidentialité, avec fallback). */
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronPrivacyUrlDialog {
	display: block !important;
	width: fit-content !important;
	margin: 0.75rem auto 0.25rem !important;
	padding: 0.3rem 0.5rem !important;
	background: transparent !important;
	border: 0 !important;
	color: var(--uu-palette-ink) !important;
	-webkit-text-fill-color: var(--uu-palette-ink) !important;
	font-family: var(--uu-font-body) !important;
	font-size: var(--uu-t-xs) !important;
	font-weight: var(--uu-w-normal) !important;
	text-transform: none !important;
	text-decoration: underline !important;
	text-underline-offset: 3px !important;
	cursor: pointer !important;
}
html body #tarteaucitronRoot #tarteaucitron #tarteaucitronPrivacyUrlDialog:hover {
	color: var(--uu-palette-main) !important;
	-webkit-text-fill-color: var(--uu-palette-main) !important;
}

/* ── 16.4 Icône flottante post-consentement ──────────────── */
/* showIcon:true crée :
     <div id="tarteaucitronIcon" class="tarteaucitronIconBottomRight">
       <button id="tarteaucitronManager" ...><img></button>
     </div>
   Le click handler est posé sur #tarteaucitronManager — on garde
   l'élément intact, on masque seulement l'<img> et on stylise le
   <button> en disque + cookie SVG inline (zéro asset). */
#tarteaucitronIcon {
	background: transparent !important;
	box-shadow: none !important;
	bottom: 16px !important;
	right: 16px !important;
	width: auto !important;
	height: auto !important;
	padding: 0 !important;
	pointer-events: auto !important;
	z-index: 2147483646 !important;
}
#tarteaucitronIcon img {
	display: none !important;
}
#tarteaucitronIcon #tarteaucitronManager,
#tarteaucitronManager {
	display: block !important;
	width: 48px !important;
	height: 48px !important;
	border-radius: 50% !important;
	background-color: var(--uu-palette-main) !important;
	background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 257.9 258.12' fill='%23ffffff'><path d='M257.57,120l-.7-9.87-9.32,3.34c-4.33,1.55-8.88,2.34-13.51,2.34-16.5,0-31.54-10.36-37.41-25.79l-2.14-5.62-5.95.87c-1.95.28-3.9.43-5.82.43-22.07,0-40.03-17.96-40.03-40.03,0-5.11.96-10.1,2.85-14.83l3.57-8.93-9.53-1.29c-6.33-.85-11.17-6.32-11.25-12.71l-.11-7.9-7.89.52C72.29,3.69,29.96,33.68,10.77,77.56l-.18-.04-2.27,6-3.11,8.2.29.06c-3.66,12.08-5.51,24.62-5.51,37.4,0,8.57.85,17.1,2.52,25.46l-.3.03,2.3,8.45,1.69,6.2.18-.02c12.86,39.31,44.08,70.26,83.49,82.78l-.02.18,6.2,1.63,8.49,2.23.03-.31c8.01,1.53,16.17,2.31,24.36,2.31,13.15,0,26.05-1.96,38.46-5.84l.06.3,8.18-3.18,5.97-2.32-.04-.18c21.4-9.57,39.72-24.7,53.23-44.09,15.1-21.67,23.08-47.13,23.08-73.63,0-3-.11-6.08-.33-9.18ZM21.83,96.44c.1.05.2.11.3.16.56.31,1.11.63,1.64.97.1.06.19.12.28.18.55.36,1.09.73,1.61,1.12.02.01.03.03.05.04.52.39,1.01.79,1.5,1.21.08.07.16.13.23.2.48.41.94.84,1.39,1.29.08.08.17.17.25.25.45.45.89.92,1.32,1.4.04.04.07.09.11.13.41.47.8.95,1.17,1.44.05.07.11.14.16.21.38.5.74,1.02,1.09,1.55.07.1.13.2.2.31.34.53.67,1.07.98,1.63.04.07.08.15.12.22.3.54.58,1.09.84,1.65.03.06.06.13.09.19.27.58.52,1.17.75,1.77.05.12.09.23.13.35.22.59.43,1.19.62,1.8.03.1.06.2.09.29.18.61.34,1.22.49,1.84,0,.04.02.08.03.12.14.64.26,1.29.36,1.94.02.12.04.24.06.37.09.64.16,1.28.22,1.93,0,.12.02.24.02.36.05.68.08,1.36.08,2.04,0,.76-.04,1.5-.09,2.25,0,.12-.02.24-.03.36-.06.71-.15,1.41-.25,2.1-.02.14-.04.27-.07.4-.12.7-.25,1.39-.42,2.08-.02.08-.04.15-.06.23-.16.66-.35,1.31-.56,1.96-.03.08-.05.17-.08.25-.22.66-.46,1.3-.72,1.94-.05.13-.1.25-.16.38-.27.63-.55,1.24-.86,1.85-.05.11-.11.21-.16.31-.32.61-.65,1.22-1.01,1.8-.01.02-.02.04-.03.05-.37.6-.76,1.17-1.16,1.74-.07.1-.14.21-.22.31-.39.54-.81,1.07-1.24,1.58-.09.1-.18.21-.26.31-.44.52-.9,1.02-1.38,1.51-.05.05-.11.11-.16.16-.46.46-.94.91-1.44,1.35-.07.06-.14.13-.21.19-.51.44-1.04.86-1.58,1.27-.11.08-.22.17-.33.25-.54.4-1.1.78-1.67,1.14-.1.06-.19.12-.29.18-.58.36-1.18.71-1.79,1.03-.03.01-.05.03-.08.05-.63.33-1.27.63-1.92.91-.11.05-.23.1-.34.15-.63.27-1.28.52-1.94.74-.05.02-.11.04-.16.05-1.56-7.57-2.35-15.31-2.35-23.09,0-11.5,1.69-22.78,5.04-33.62,0,0,0,0,0,0,.61.27,1.2.57,1.78.89ZM128.95,243.12c-7.46,0-14.88-.72-22.15-2.16.02-.06.04-.12.06-.18.22-.67.46-1.32.73-1.96.04-.11.09-.22.14-.32.28-.66.58-1.32.91-1.96,0,0,0-.01,0-.02.33-.64.69-1.27,1.06-1.88.06-.1.12-.2.18-.3.36-.58.75-1.15,1.14-1.71.08-.11.15-.21.23-.31.41-.56.84-1.1,1.29-1.63.05-.06.1-.11.15-.17.44-.51.9-1.01,1.38-1.49.05-.05.11-.11.16-.17.49-.49,1-.96,1.52-1.41.1-.08.19-.17.29-.25.52-.44,1.06-.87,1.61-1.27.09-.07.18-.13.27-.19,1.16-.83,2.38-1.59,3.65-2.26.1-.05.2-.11.3-.16.61-.31,1.24-.6,1.87-.87.12-.05.24-.1.36-.15.65-.27,1.3-.52,1.97-.74.07-.02.15-.05.22-.07.65-.21,1.32-.4,1.99-.57.08-.02.16-.04.24-.06.69-.17,1.39-.31,2.1-.43.13-.02.27-.05.4-.07.7-.11,1.41-.2,2.13-.26.12-.01.24-.02.37-.03.75-.05,1.51-.09,2.27-.09.68,0,1.35.03,2.03.08.12,0,.23.01.35.02.64.05,1.28.12,1.91.21.12.02.25.04.37.06.65.1,1.29.22,1.92.36.04,0,.08.02.13.03.61.14,1.21.3,1.81.48.1.03.21.06.31.09.6.18,1.19.39,1.78.61.12.05.24.09.36.14.59.23,1.17.47,1.74.74.07.03.14.07.2.1.54.26,1.08.53,1.6.81.08.05.17.09.26.14.54.3,1.07.62,1.6.96.11.07.22.14.33.22.52.34,1.03.69,1.52,1.06.08.06.15.12.23.18.47.36.93.73,1.38,1.12.06.05.12.1.18.15.47.41.93.84,1.37,1.28.09.09.19.18.28.28.44.44.86.89,1.27,1.35.07.08.14.17.21.25.4.46.79.94,1.16,1.43.03.04.06.07.09.11.38.51.75,1.03,1.1,1.57.07.1.14.21.2.31.34.53.66,1.06.97,1.61.06.1.11.2.16.3.31.58.61,1.16.89,1.76-11.14,3.55-22.74,5.34-34.58,5.34ZM222.51,194.23c-11.52,16.53-26.97,29.57-45.01,38.06-.06-.14-.13-.28-.19-.42-.1-.22-.2-.44-.31-.66-.16-.34-.32-.67-.49-1-.1-.21-.21-.42-.32-.62-.19-.36-.38-.71-.58-1.07-.1-.17-.19-.35-.29-.52-.29-.51-.59-1.02-.91-1.51,0-.01-.01-.02-.02-.03-.32-.5-.64-1-.98-1.49-.11-.16-.22-.31-.33-.47-.23-.33-.47-.66-.71-.99-.13-.18-.27-.36-.41-.54-.23-.3-.46-.59-.69-.88-.15-.18-.29-.36-.44-.54-.24-.29-.48-.57-.73-.86-.15-.17-.29-.34-.44-.5-.27-.3-.55-.6-.83-.9-.13-.14-.26-.27-.39-.41-.83-.85-1.69-1.67-2.58-2.46-.14-.12-.28-.24-.43-.36-.31-.27-.62-.53-.94-.79-.17-.14-.35-.28-.52-.41-.3-.23-.59-.46-.89-.69-.18-.14-.37-.27-.55-.41-.3-.22-.61-.44-.92-.65-.18-.13-.36-.25-.55-.38-.34-.23-.68-.45-1.03-.67-.16-.1-.31-.2-.47-.3-1.01-.62-2.05-1.21-3.11-1.75-.17-.09-.34-.17-.51-.25-.37-.18-.73-.36-1.1-.53-.2-.09-.41-.18-.61-.28-.34-.15-.69-.3-1.04-.45-.22-.09-.43-.18-.65-.27-.35-.14-.7-.27-1.05-.4-.21-.08-.43-.16-.64-.24-.38-.14-.77-.26-1.16-.39-.18-.06-.37-.12-.55-.18-1.15-.36-2.31-.67-3.49-.93-.19-.04-.38-.08-.57-.12-.4-.09-.81-.17-1.21-.24-.23-.04-.45-.08-.68-.12-.38-.06-.75-.12-1.13-.18-.24-.03-.47-.06-.71-.09-.38-.05-.76-.09-1.15-.13-.23-.02-.46-.05-.69-.07-.42-.03-.83-.06-1.25-.08-.2-.01-.4-.03-.6-.03-.62-.03-1.24-.04-1.86-.04-.69,0-1.38.02-2.06.05-.22,0-.44.03-.66.04-.46.03-.92.06-1.37.1-.26.02-.52.05-.78.08-.42.04-.83.09-1.25.15-.27.04-.53.07-.79.11-.41.06-.81.13-1.22.2-.26.05-.52.09-.78.14-.42.08-.83.17-1.24.26-.24.05-.48.1-.71.16-.47.11-.93.24-1.39.37-.17.05-.35.09-.52.14-.63.18-1.26.38-1.88.59-.1.03-.2.07-.31.11-.52.18-1.03.36-1.53.56-.21.08-.41.16-.61.25-.4.16-.8.33-1.2.5-.23.1-.45.2-.67.3-.37.17-.74.34-1.11.52-.23.11-.45.22-.67.34-.36.19-.72.38-1.08.57-.21.12-.43.23-.64.35-.38.21-.75.43-1.12.66-.18.11-.37.22-.55.33-.46.29-.91.58-1.35.88-.09.06-.18.11-.26.17-.54.37-1.06.74-1.58,1.13-.12.09-.24.19-.36.28-.39.3-.77.6-1.15.91-.17.14-.34.29-.51.43-.32.27-.64.55-.96.83-.18.16-.36.33-.54.49-.3.27-.59.55-.88.84-.18.17-.35.34-.53.52-.29.29-.58.59-.86.89-.16.17-.32.34-.48.51-.3.33-.6.67-.89,1.01-.13.15-.26.29-.38.44-.83.99-1.62,2.01-2.36,3.07-.11.16-.22.32-.33.48-.26.37-.51.75-.75,1.13-.13.2-.25.41-.38.61-.22.35-.43.7-.64,1.05-.13.22-.25.44-.38.67-.2.35-.39.7-.57,1.06-.12.23-.24.45-.35.68-.19.37-.36.74-.54,1.11-.1.22-.21.44-.31.66-.19.42-.37.84-.54,1.27-.08.18-.15.36-.23.54-.24.61-.47,1.22-.69,1.84-.04.13-.08.25-.12.38-.15.44-.3.88-.44,1.33-33.11-11.25-59.4-37.32-70.93-70.34.37-.12.73-.25,1.09-.37.19-.07.38-.13.57-.19.61-.22,1.21-.45,1.8-.69.18-.07.36-.16.54-.23.42-.18.84-.36,1.25-.55.23-.11.46-.22.69-.33.35-.17.71-.34,1.05-.52.24-.12.48-.25.72-.38.33-.18.66-.36.99-.55.24-.14.47-.27.71-.41.33-.19.65-.39.97-.59.22-.14.45-.28.67-.43.34-.22.67-.45,1-.68.2-.14.4-.27.59-.41.43-.31.85-.62,1.26-.94.09-.07.18-.13.27-.2.5-.39.98-.79,1.47-1.2.17-.14.33-.29.49-.43.32-.28.63-.56.94-.84.19-.17.37-.35.55-.53.28-.27.56-.54.83-.81.19-.19.37-.38.55-.57.26-.27.52-.55.77-.83.18-.2.36-.39.53-.59.26-.29.51-.59.76-.89.16-.19.32-.38.48-.58.27-.34.54-.68.8-1.03.12-.16.25-.32.37-.48.38-.51.74-1.02,1.1-1.55.07-.1.14-.21.21-.32.28-.43.56-.86.83-1.29.12-.2.24-.4.36-.59.21-.35.42-.71.62-1.06.12-.22.25-.45.37-.67.19-.34.37-.69.54-1.04.12-.23.24-.47.35-.71.17-.35.34-.7.5-1.06.11-.23.21-.47.32-.7.16-.38.32-.76.47-1.14.09-.22.18-.44.26-.66.18-.47.35-.94.51-1.42.05-.14.1-.27.15-.41.21-.61.4-1.23.58-1.86.05-.17.09-.35.14-.52.13-.46.25-.91.36-1.37.06-.24.11-.47.16-.71.09-.41.18-.81.26-1.22.05-.26.1-.51.14-.77.07-.4.14-.8.2-1.2.04-.26.08-.53.11-.79.05-.41.1-.82.14-1.23.03-.26.06-.51.08-.77.04-.45.07-.9.1-1.36.01-.22.03-.44.04-.66.03-.67.05-1.35.05-2.03,0-.63-.02-1.25-.04-1.87,0-.2-.02-.4-.03-.6-.02-.42-.05-.84-.08-1.26-.02-.23-.04-.46-.07-.7-.04-.39-.08-.77-.13-1.16-.03-.24-.06-.48-.09-.71-.05-.38-.11-.76-.18-1.14-.04-.23-.08-.46-.12-.68-.07-.41-.16-.81-.24-1.22-.04-.19-.08-.39-.12-.58-.13-.57-.27-1.14-.42-1.7,0-.02-.01-.04-.02-.06-.16-.59-.33-1.17-.51-1.74-.06-.18-.12-.36-.18-.54-.13-.4-.26-.79-.4-1.18-.08-.21-.16-.42-.23-.64-.13-.36-.27-.71-.41-1.07-.09-.22-.18-.43-.27-.64-.15-.35-.3-.7-.46-1.04-.09-.21-.18-.41-.28-.62-.17-.37-.35-.73-.53-1.09-.09-.17-.17-.35-.26-.52-.26-.5-.52-.99-.79-1.47-.02-.03-.04-.07-.06-.1-.3-.52-.6-1.04-.92-1.54-.09-.15-.19-.3-.29-.45-.22-.35-.45-.71-.69-1.05-.12-.18-.25-.36-.37-.54-.22-.31-.44-.62-.66-.93-.14-.18-.27-.37-.41-.55-.23-.3-.46-.6-.7-.9-.14-.17-.28-.35-.42-.52-.26-.31-.52-.62-.79-.93-.13-.14-.25-.29-.37-.43-.36-.41-.74-.81-1.11-1.21-.03-.03-.06-.07-.1-.1-.42-.43-.84-.86-1.27-1.27-.12-.12-.25-.24-.38-.35-.31-.29-.62-.58-.94-.86-.16-.14-.33-.29-.49-.43-.29-.25-.58-.5-.88-.75-.18-.14-.35-.29-.53-.43-.3-.24-.6-.47-.91-.7-.18-.13-.35-.27-.53-.4-.33-.24-.66-.47-.99-.71-.16-.11-.32-.23-.48-.34-.44-.3-.89-.59-1.34-.87-.06-.04-.12-.08-.18-.11-.51-.32-1.04-.63-1.56-.92-.15-.08-.3-.16-.45-.24-.38-.21-.77-.42-1.15-.62-.19-.1-.39-.19-.58-.29-.35-.17-.71-.35-1.07-.51-.21-.1-.42-.19-.63-.28-.16-.07-.32-.15-.49-.22C41.83,45.89,75.71,21.03,114.65,16.13c2.34,7.33,7.64,13.45,14.54,16.81-.99,4.15-1.49,8.41-1.49,12.73,0,31.08,25.9,56.27,57.26,54.98,9.28,18.25,28.34,30.16,49.08,30.16,2.98,0,5.93-.24,8.84-.71-.18,23.09-7.22,45.24-20.38,64.13Z'/><path d='M113.4,71.42c0-12.74-10.36-23.11-23.1-23.11s-23.11,10.37-23.11,23.11,10.37,23.1,23.11,23.1,23.1-10.36,23.1-23.1ZM82.19,71.42c0-4.47,3.64-8.11,8.11-8.11s8.1,3.64,8.1,8.11-3.64,8.1-8.1,8.1-8.11-3.64-8.11-8.1Z'/><path d='M105.9,121.81c-16.84,0-30.55,13.7-30.55,30.55s13.7,30.55,30.55,30.55,30.55-13.7,30.55-30.55-13.7-30.55-30.55-30.55ZM105.9,167.91c-8.57,0-15.55-6.97-15.55-15.55s6.98-15.55,15.55-15.55,15.55,6.98,15.55,15.55-6.98,15.55-15.55,15.55Z'/><path d='M180.79,131.04c-12.83,0-23.27,10.44-23.27,23.27s10.44,23.27,23.27,23.27,23.27-10.44,23.27-23.27-10.44-23.27-23.27-23.27ZM180.79,162.57c-4.56,0-8.27-3.71-8.27-8.27s3.71-8.27,8.27-8.27,8.27,3.71,8.27,8.27-3.71,8.27-8.27,8.27Z'/></svg>") !important;
	background-repeat: no-repeat !important;
	background-position: center !important;
	background-size: 22px 22px !important;
	border: 0 !important;
	box-shadow: 0 3px 10px rgba(0, 0, 0, 0.18) !important;
	cursor: pointer !important;
	pointer-events: auto !important;
	transition: transform .2s ease, background-color .2s ease !important;
	padding: 0 !important;
	margin: 0 !important;
	font-size: 0 !important;
	color: transparent !important;
	overflow: hidden !important;
}
#tarteaucitronIcon #tarteaucitronManager:hover,
#tarteaucitronManager:hover {
	background-color: var(--uu-palette-sun) !important;
	transform: scale(1.08) !important;
}

/* ── 16.5 Popup "Personnaliser" en mobile ─────────────────────
   Le skin 16.2 est pensé bureau. En mobile, TAC colle la carte en haut à
   gauche (top/left 0 + hauteur 100 %) et notre largeur calc(100% - 2rem) la
   décentrait ; l'ombre portée native de #tarteaucitronServices (0 40px 60px
   gris) faisait une bande grise sous la liste ; chaque ligne de service
   restait sur une rangée (nom + boutons) et sa légende, à 80 % de 100 px
   (règle TAC), tombait en colonne. Ici : feuille ancrée en bas d'écran,
   lignes empilées (nom, légende, puis Accepter / Refuser pleine largeur),
   Enregistrer collé en bas de la feuille. Bureau et tablette inchangés. */
@media (max-width: 767px) {
	html body #tarteaucitronRoot #tarteaucitron {
		top: auto !important;
		bottom: 0 !important;
		left: 0 !important;
		right: 0 !important;
		width: 100% !important;
		max-width: none !important;
		height: auto !important;
		max-height: 88vh !important;
		max-height: 88dvh !important;
		margin: 0 !important;
		border-radius: var(--uu-radius-xl) var(--uu-radius-xl) 0 0 !important;
	}
	/* TAC recalcule une hauteur en style inline : on la neutralise. */
	html body #tarteaucitronRoot #tarteaucitronServices {
		height: auto !important;
		max-height: 88vh !important;
		max-height: 88dvh !important;
		margin: 0 !important;
		box-shadow: none !important;
	}
	html body #tarteaucitronRoot #tarteaucitronClosePanel {
		top: 10px !important;
		right: 10px !important;
		width: 36px !important;
		height: 36px !important;
	}

	/* En-tête : titre + Tout accepter / Tout refuser côte à côte */
	body #tarteaucitronRoot #tarteaucitronMainLineOffset {
		padding: 1.25rem 1.25rem 1rem !important;
	}
	html body #tarteaucitronRoot .tarteaucitronH1 {
		box-sizing: border-box !important;
		font-size: var(--uu-t-lg) !important;
		margin: 0 0 0.75rem !important;
		padding: 0.35rem 2.75rem !important; /* dégage la croix */
	}
	html body #tarteaucitronRoot #tarteaucitronScrollbarAdjust {
		display: flex !important;
		justify-content: center !important;
		gap: 0.5rem !important;
		margin: 0 !important;
		padding: 0 !important;
	}
	html body #tarteaucitronRoot #tarteaucitron #tarteaucitronScrollbarAdjust button {
		box-sizing: border-box !important;
		flex: 1 1 0 !important;
		width: auto !important;
		height: auto !important;
		min-height: 42px !important;
		margin: 0 !important;
		padding: 0.55em 0.75em !important;
	}

	/* Lignes de service empilées */
	html body #tarteaucitronRoot .tarteaucitronLine:not(.tarteaucitronMainLine) {
		flex-direction: column !important;
		align-items: stretch !important;
		gap: 0.75rem !important;
		padding: 1rem 1.25rem !important;
	}
	html body #tarteaucitronRoot .tarteaucitronLine:not(.tarteaucitronMainLine) > .tarteaucitronName {
		width: 100% !important;
		margin: 0 !important;
		padding: 0 !important;
		font-size: 0.8rem !important;
		line-height: 1.45 !important;
	}
	html body #tarteaucitronRoot #tarteaucitron li.tarteaucitronLine .tarteaucitronName span,
	html body #tarteaucitronRoot #tarteaucitron li.tarteaucitronLine .tarteaucitronName .tarteaucitronStatusInfo {
		width: auto !important;
		display: inline !important;
	}
	html body #tarteaucitronRoot #tarteaucitron li.tarteaucitronLine .tarteaucitronName .tarteaucitronH3 {
		display: block !important;
		margin: 0 0 0.25rem !important;
	}
	/* Légende (statut + liens) : 0.8rem au lieu de --uu-t-xxs, illisible au doigt */
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronName .tarteaucitronStatusInfo,
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronName .tarteaucitronStatusInfo *,
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronName a,
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronName .tarteaucitronReadmoreSeparator {
		font-size: 0.8rem !important;
		line-height: 1.45 !important;
	}
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk {
		display: flex !important;
		width: 100% !important;
		max-width: none !important;
		margin: 0 !important;
		box-sizing: border-box !important;
	}
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronAllow,
	html body #tarteaucitronRoot #tarteaucitron .tarteaucitronLine:not(.tarteaucitronMainLine) .tarteaucitronAsk .tarteaucitronDeny {
		flex: 1 1 0 !important;
		width: auto !important;
		min-height: 40px !important;
		margin: 0 !important;
	}

	/* Enregistrer : collé en bas de la feuille, pleine largeur */
	html body #tarteaucitronRoot #tarteaucitron #tarteaucitronSave {
		position: sticky !important;
		bottom: 0 !important;
		z-index: 1 !important;
		padding: 0.75rem 1.25rem calc(0.75rem + env(safe-area-inset-bottom)) !important;
		background: var(--uu-palette-snow) !important;
		border-top: 1px solid var(--uu-tac-track-bd) !important;
		text-align: center !important;
	}
	html body #tarteaucitronRoot #tarteaucitron #tarteaucitronSaveButton {
		box-sizing: border-box !important;
		width: 100% !important;
		height: auto !important;
		min-height: 46px !important;
		margin: 0 !important;
	}
}


/* ============================================================
   18. GLOSSAIRE — décalage d'ancre (zones sticky)
   ============================================================ */

/* Arrivée via un lien glossaire (#slug) : sans compensation, la cible passe
   SOUS le header sticky + le filtre alphabétique sticky et reste masquée.
   Elementor Pro propose un offset d'ancre natif ; sans lui, on réserve la
   marge directement sur les cibles (honoré par la navigation par fragment,
   au clic comme au chargement). Le CSS du plugin sl-glossaire-links ne se
   charge PAS sur la page glossaire elle-même → la règle vit ici (thème global).

   Scopé à la page glossaire (page-id-273). Ajuster --uu-glossaire-anchor si le
   header ou le filtre changent de hauteur ; si l'ID de page change, mettre à
   jour le sélecteur. */
.page-id-273 {
	--uu-glossaire-anchor: 180px;
	scroll-behavior: smooth;
}
.page-id-273 [id] {
	scroll-margin-top: var(--uu-glossaire-anchor);
}

/* ============================================================
   19.  FORMULAIRES — JetFormBuilder
   ============================================================ */

/* ---- 19.1 Bordure native des <fieldset> ----
   Un groupe de cases a cocher (consentement, choix multiples) est rendu par
   JetFormBuilder dans un <fieldset>, que TOUS les navigateurs bordent par
   defaut. Ce n'est pas un heritage du theme : c'est la feuille de style de
   l'agent utilisateur, et rien ne la neutralise tant qu'on ne l'ecrit pas.

   min-width: 0 n'est pas cosmetique — un <fieldset> a une largeur minimale
   implicite qui l'empeche de retrecir dans un conteneur flex. Sans cette
   ligne, le formulaire deborde en mobile sans qu'on comprenne pourquoi. */
.jet-form-builder fieldset {
	border: 0;
	padding: 0;
	margin: 0;
	min-width: 0;
}

/* ---- 19.2 Rythme vertical des formulaires ----
   Relevé du 11/10/2026 : dans un même formulaire, l'écart entre deux champs
   allait de 5 à 67 px, et le libellé touchait son champ (0 px). Quatre
   sources s'additionnaient :
   - chaque ligne JetFormBuilder porte 5 px de padding haut et bas ;
   - le bloc Colonnes de Gutenberg ajoute 24 px d'écart et 28 px de marge ;
   - JetFormBuilder insère une balise <style> avant chaque champ d'une
     colonne : le champ n'est plus le premier enfant et WordPress lui donne
     les 24 px de marge haute de la mise en page « flow » ;
   - la colonne empilée en mobile ajoute encore son propre écart.
   Une seule règle : chaque ligne porte l'écart SOUS elle, rien au-dessus,
   et les colonnes n'ajoutent rien verticalement. Préfixe `form.` : la règle
   WordPress `:root :where(.is-layout-flow) > :last-child` a la même
   spécificité (0,2,0) et sort plus tard dans la page ; sans lui, le dernier
   champ de chaque colonne perd son écart. */
.jet-form-builder {
	--uu-form-gap: 20px;       /* entre deux champs */
	--uu-form-label-gap: 6px;  /* entre un libellé et son champ */
}
@media (max-width: 767px) {
	.jet-form-builder {
		--uu-form-gap: 16px;
	}
}
form.jet-form-builder .jet-form-builder-row {
	padding-top: 0;
	padding-bottom: 0;
	margin: 0 0 var(--uu-form-gap);
}
form.jet-form-builder .wp-block-columns {
	row-gap: 0;
	column-gap: var(--uu-form-gap);
	margin: 0;
}
form.jet-form-builder .wp-block-column > * {
	margin-block-start: 0;
}
.jet-form-builder .jet-form-builder__label {
	margin-bottom: var(--uu-form-label-gap);
}
/* Champs en inline-block : sans alignement, la zone de texte garde sous elle
   l'espace des jambages d'une ligne de texte (+7 px). */
form.jet-form-builder .jet-form-builder__field {
	vertical-align: top;
}
form.jet-form-builder .field-type-submit-field {
	margin-bottom: 0;
}
/* Libellés de cases (consentement) : l'interligne hérité de 1 collait les
   lignes de la phrase. */
form.jet-form-builder .jet-form-builder__field-label {
	line-height: 1.4;
}
/* Mobile : bouton d'envoi seul sur sa ligne → pleine largeur, cible tactile
   de 44 px (règle du brief responsive). */
@media (max-width: 767px) {
	form.jet-form-builder .jet-form-builder__action-button {
		width: 100%;
		min-height: 44px;
		justify-content: center;
	}
}

/* ---- 19.3 Bouton de la newsletter (pied de page #89) ----
   Le bouton prend la couleur du kit (#95D600)… sur le fond du pied de page,
   du même vert : il n'en restait que le texte. Bouton blanc, texte gris
   foncé du kit (contraste ~7:1 ; le vert #95D600 sur blanc n'atteint que
   ~1,9:1), orange au survol comme les autres boutons du site. */
/* Le widget formulaire porte une marge haute de -15 px dans Elementor,
   calée sur l'ancien écart parasite de 24 px (§19.2) : on rend l'air entre
   le titre « Recevez notre newsletter » et le champ. */
.elementor-89 form.jet-form-builder {
	padding-top: 16px;
}
.elementor-89 .jet-form-builder__action-button {
	background-color: var(--uu-palette-snow);
	color: var(--e-global-color-text, #575756);
}
.elementor-89 .jet-form-builder__action-button:hover,
.elementor-89 .jet-form-builder__action-button:focus-visible {
	background-color: var(--e-global-color-accent, #FFA400);
	color: var(--uu-palette-snow);
}

/* ============================================================
   20.  FICHE ACTION IMPRIMABLE — partie écran
   ============================================================ */

/* La fiche papier (<article id="uu-fiche">) est construite par
   assets/js/uu-print-action.js au moment d'imprimer. Elle n'existe que pour
   le papier : assets/css/uu-print-action.css (media="print") la révèle. */
#uu-fiche {
	display: none;
}

/* ============================================================
   21.  RESPONSIVE — compléments CSS (passe du 11/10/2026)
   ============================================================ */

/* La mise en page mobile et tablette vit dans les réglages Elementor
   (*_mobile / *_tablet, suivi : docs/responsive-inventaire.md). Ne restent
   ici que les cas qu'Elementor n'expose pas. */

/* ---- 21.1 Débordement horizontal résiduel ----
   Des décors (SVG, carrousels à marges négatives) dépassent de quelques
   pixels jusqu'à 1024 px : la page « bouge » au doigt. `clip` (et non
   hidden) pour ne pas casser les ancres ni le sticky. */
@media (max-width: 1024px) {
	html {
		overflow-x: clip;
	}
}

@media (max-width: 767px) {

	/* ---- 21.2 Titres coupés ----
	   Les titres en capitales grasses (Rubik 900) ne cassent pas un mot trop
	   long : « APPARTEMENT », « AUTOCONSOMMATION » sortent du cadre et sont
	   rognés par le clip. `break-word` (et non `anywhere`) : la césure n'est
	   utilisée qu'en dernier recours ET ne réduit pas la largeur minimale de
	   la boîte — avec `anywhere`, un titre dans un conteneur flex rétrécit et
	   se casse au milieu d'un mot qui aurait tenu. */
	.elementor-heading-title,
	.jet-listing-dynamic-field__content,
	h1, h2, h3 {
		overflow-wrap: break-word;
		min-width: 0;
	}
	.jet-listing-grid__item {
		min-width: 0;
	}
	.jet-listing-grid__item .elementor-heading-title,
	.jet-listing-grid__item .jet-listing-dynamic-field__content {
		overflow-wrap: anywhere;
	}

	/* ---- 21.4 Onglets JetTabs passés au-dessus en mobile ----
	   Ressources (#8677) et fiche action (#8257) : les onglets sont à gauche
	   sur bureau et au-dessus en mobile (réglage Elementor). Mais JetTabs écrit
	   la largeur bureau de la colonne d'onglets EN STYLE INLINE (205 px, 30 %) :
	   aucun réglage mobile ne peut la battre, les libellés sont coupés. Quand
	   les onglets sont au-dessus, ils prennent toute la largeur. */
	.jet-tabs.jet-tabs-position-top > .jet-tabs__control-wrapper {
		width: 100% !important;
		min-width: 0 !important;
		flex: 1 1 100% !important;
	}
	.jet-tabs.jet-tabs-position-top > .jet-tabs__control-wrapper > .jet-tabs__control {
		width: 100%;
	}
	.jet-tabs.jet-tabs-position-top > .jet-tabs__control-wrapper .jet-tabs__label-text {
		white-space: normal;
	}
}

@media (max-width: 1024px) {

	/* ---- 21.3 Tableaux JetEngine (Ressources, partenaire, métier) ----
	   Cinq colonnes (source, type, titre, descriptif, lien) dans 280 px (mobile)
	   ou 460 px (tablette, onglets à gauche) : le tableau de 730 px débordait,
	   avec des lignes de 180 px de haut. Jusqu'à 1024 px, chaque ligne devient
	   une fiche : type (petites capitales), titre, descriptif, puis le lien.
	   Même ordre, rien n'est masqué ; la source vide (logo absent) ne laisse
	   pas de trou. Les en-têtes de colonne, devenus inutiles, sont retirés.
	   Remplace le défilement horizontal du 11/10 (min-width 640 px). */
	.jet-dynamic-table {
		width: 100%;
		border: 0;
	}
	.jet-dynamic-table thead {
		display: none;
	}
	.jet-dynamic-table,
	.jet-dynamic-table tbody,
	.jet-dynamic-table tr,
	.jet-dynamic-table td {
		display: block;
		width: auto !important; /* bat la largeur de colonne écrite en style inline */
	}
	.jet-dynamic-table tbody tr {
		padding: 1rem 0;
		border: 0;
		border-bottom: 1px dashed color-mix(in srgb, var(--e-global-color-text, #575756) 30%, transparent);
		background: none !important;
	}
	.jet-dynamic-table tbody td {
		padding: 0 !important;
		border: 0 !important;
		background: none !important;
		text-align: left !important;
	}
	.jet-dynamic-table tbody td:empty {
		display: none;
	}
	.jet-dynamic-table .jet-dynamic-table__col--type {
		margin-bottom: 0.2rem;
		font-size: 0.72rem;
		text-transform: uppercase;
		letter-spacing: 0.08em;
		opacity: 0.75;
	}
	.jet-dynamic-table .jet-dynamic-table__col--titre {
		margin-bottom: 0.35rem;
		font-size: 1rem;
		font-weight: 700;
		line-height: 1.3;
	}
	.jet-dynamic-table .jet-dynamic-table__col--descriptif {
		margin-bottom: 0.75rem;
		font-size: 0.88rem;
		line-height: 1.45;
	}
	/* Bouton aligné sur le texte de la fiche (conteneur du listing #8750) */
	.jet-dynamic-table td.jet-dynamic-table__col--lien .e-con {
		--padding-left: 0px;
		--padding-right: 0px;
	}
}

/* ---- 21.5 Compteurs à libellé dynamique (gabarits d'actions) ----
   Le style « Titre » d'un compteur Elementor ne s'applique que si le titre
   est non vide AU MOMENT où le CSS du gabarit est généré. Ici le titre vient
   d'un champ (action_chiffreN_titre) : si le premier visiteur après une purge
   du CSS tombe sur une fiche sans chiffres, les majuscules sautent pour TOUTES
   les fiches (constaté le 11/10/2026). On les fixe ici, indépendamment de la
   génération. Même rendu que le réglage Elementor, à toutes les tailles. */
:is(.elementor-8257, .elementor-11512, .elementor-11565, .elementor-12761, .elementor-14004) .elementor-widget-counter .elementor-counter-title {
	text-transform: uppercase;
}

/* ---- 21.6 Tableaux JetEngine : colonne Lien ----
   La colonne Lien est réglée à 280 px fixes (style inline du module
   Tableaux) et porte le bouton du listing #8750 en taille « sm » : la
   colonne la moins utile était la plus large. Largeur au contenu, bouton
   compact. Toutes tailles d'écran (demande de Romain du 11/10/2026). */
.jet-dynamic-table .jet-dynamic-table__col--lien {
	width: auto !important;
	min-width: 0 !important;
	white-space: nowrap;
}
.jet-dynamic-table .jet-dynamic-table__col--lien .elementor-button {
	gap: 0.5em;
	padding: 0.55em 1.1em;
	font-size: 0.78rem;
	letter-spacing: 0.04em;
}
.jet-dynamic-table .jet-dynamic-table__col--lien .elementor-button-icon svg {
	width: 0.9em;
	height: 0.9em;
}

/* ============================================================
   22.  LISTES DE CONTENU — espace après une liste
   ============================================================ */

/* Le reset.css de Hello Elementor met `margin-block: 0` sur ul/ol : le
   paragraphe ou le titre qui suit une liste lui est collé (mentions légales,
   politique de confidentialité, textes saisis dans WordPress ou dans un
   widget Éditeur de texte). On rend l'espace aux seules listes de contenu :
   sans classe (menus, widgets Jet et Elementor ont toujours une classe), et
   pas aux listes imbriquées. */
ul:not([class]),
ol:not([class]) {
	margin-block-end: 1em;
}
li > ul:not([class]),
li > ol:not([class]) {
	margin-block-end: 0;
}

/* ============================================================
   23.  MATOMO — case d'opposition (politique de confidentialité)
   ============================================================ */

/* Bloc injecté par Matomo (optOutJS) dans #matomo-opt-out : un <p>, puis
   <input#trackVisits> et son <label>. Choix assumé par l'association : la
   case doit se voir. Encadré SL, case agrandie à gauche de son texte. */
#matomo-opt-out {
	display: grid;
	grid-template-columns: auto 1fr;
	align-items: center;
	gap: 12px 16px;
	margin: 16px 0 32px;
	padding: 20px 24px;
	background: #f3f7e8;
	border-left: 4px solid #95d600;
	border-radius: 12px;
}
#matomo-opt-out p {
	grid-column: 1 / -1;
	margin: 0;
}
#matomo-opt-out input[type="checkbox"] {
	width: 28px;
	height: 28px;
	margin: 0;
	accent-color: #95d600;
	cursor: pointer;
}
#matomo-opt-out label,
#matomo-opt-out label strong {
	font-family: inherit;
	font-size: 1rem;
	font-weight: 600;
	line-height: 1.4;
	cursor: pointer;
}

/* ============================================================
   24.  MOBILE — RETOUCHES DU 11/10/2026 (SOIR)
   ============================================================ */

@media (max-width: 767px) {

	/* ---- 24.1 Header par-dessus le bandeau image ----
	   Sur bureau et tablette, le header blanc flotte sur l'image du haut de
	   page (marge basse de -96 px). En mobile il était posé au-dessus. On le
	   superpose seulement sur les gabarits à bandeau image ; les pages à hero
	   texte gardent leur header au-dessus (sinon il couvrirait le titre).
	   Gabarits : fiche action, article, pages légales, offre, 3 axes, JMDD,
	   TMDD et leurs éditions, partenaire, métier. */
	body:has(:is(.elementor-8257, .elementor-748, .elementor-13205, .elementor-9046,
		.elementor-8225, .elementor-351, .elementor-8409,
		.elementor-11130, .elementor-11512, .elementor-11565,
		.elementor-12569, .elementor-14004, .elementor-12761,
		.elementor-49, .elementor-10656)) .elementor-18 .elementor-element.elementor-element-613b812 {
		--margin-bottom: -80px;
		margin-bottom: -80px;
	}

	/* ---- 24.2 Chiffres clés ----
	   Compteurs Elementor à 69 px (valeur par défaut du widget) : « 4 770 »
	   occupait toute la largeur. Taille unique pour tous les compteurs. */
	.elementor .elementor-widget-counter .elementor-counter-number-wrapper {
		font-size: 2.75rem;
	}

	/* ---- 24.3 Fiche action : sections sans coin ni découpe ----
	   Bosses et creux (§5) tombaient en travers des cartes pleine largeur. */
	.elementor-8257 :is(.elementor-element-af56413, .elementor-element-4664abf, .elementor-element-bddd9c2)::after {
		content: none;
	}
}

@media (min-width: 768px) and (max-width: 1024px) {
	.elementor .elementor-widget-counter .elementor-counter-number-wrapper {
		font-size: 3.5rem;
	}
	.elementor-8257 :is(.elementor-element-af56413, .elementor-element-4664abf, .elementor-element-bddd9c2)::after {
		content: none;
	}
}

/* ---- 24.4 Panneau « Choisir vos actus » (Le Mag') au-dessus du header ----
   Le panneau JetBlocks (#640 / 54b818c) a un z-index de 2 (réglage du
   widget) ; le header a 100. Le panneau s'ouvrait donc SOUS le header : son
   haut et sa croix de fermeture étaient cachés (en mobile, on ne pouvait
   plus le refermer). JetBlocks est censé remonter le conteneur parent, mais
   il cherche `.e-container`, l'ancienne classe des conteneurs Elementor
   (aujourd'hui `.e-con`). Toutes tailles d'écran. */
body .elementor-640 .elementor-element.elementor-element-54b818c .jet-hamburger-panel__instance {
	z-index: 1000;
}

