.elementor-kit-8{--e-global-color-primary:#1B2242;--e-global-color-secondary:#F4F6FA;--e-global-color-text:#333A4D;--e-global-color-accent:#E52029;--e-global-color-17b10c7:#FFFFFF;--e-global-color-4895c63:#7A8399;--e-global-color-06b2901:#2B3D8E;--e-global-color-216ff9c:#4C63B6;--e-global-color-276f604:#FF5A62;--e-global-color-0f4219b:#D8DCE6;--e-global-typography-primary-font-family:"Archivo";--e-global-typography-primary-font-size:60px;--e-global-typography-primary-font-weight:600;--e-global-typography-primary-text-transform:none;--e-global-typography-primary-font-style:normal;--e-global-typography-primary-line-height:66px;--e-global-typography-primary-letter-spacing:1.6px;--e-global-typography-secondary-font-family:"Archivo";--e-global-typography-secondary-font-size:55px;--e-global-typography-secondary-font-weight:600;--e-global-typography-secondary-text-transform:none;--e-global-typography-secondary-font-style:normal;--e-global-typography-secondary-line-height:59px;--e-global-typography-secondary-letter-spacing:0.4px;--e-global-typography-text-font-family:"Figtree";--e-global-typography-text-font-size:1rem;--e-global-typography-text-font-weight:200;--e-global-typography-text-line-height:1.5rem;--e-global-typography-text-letter-spacing:0px;--e-global-typography-accent-font-family:"Figtree";--e-global-typography-accent-font-size:1.2rem;--e-global-typography-accent-font-weight:200;--e-global-typography-accent-line-height:1.6rem;--e-global-typography-accent-letter-spacing:0px;--e-global-typography-2a7be21-font-family:"Figtree";--e-global-typography-2a7be21-font-size:1.97rem;--e-global-typography-2a7be21-font-weight:100;--e-global-typography-2a7be21-font-style:normal;--e-global-typography-2a7be21-line-height:2.2rem;--e-global-typography-2a7be21-letter-spacing:-0.5px;--e-global-typography-2a7be21-word-spacing:2.5px;--e-global-typography-d573eb1-font-family:"Archivo";--e-global-typography-d573eb1-font-size:25px;--e-global-typography-d573eb1-font-weight:400;--e-global-typography-d573eb1-text-transform:none;--e-global-typography-d573eb1-font-style:normal;--e-global-typography-d573eb1-line-height:28px;--e-global-typography-d573eb1-letter-spacing:-1px;--e-global-typography-d30c9a9-font-family:"Figtree";--e-global-typography-d30c9a9-font-size:1rem;--e-global-typography-d30c9a9-font-weight:400;--e-global-typography-d30c9a9-line-height:1.5rem;--e-global-typography-ffbd2c5-font-family:"Figtree";--e-global-typography-ffbd2c5-font-size:1rem;--e-global-typography-ffbd2c5-font-weight:600;--e-global-typography-ffbd2c5-line-height:1.5rem;--e-global-typography-f6b1823-font-family:"Figtree";--e-global-typography-f6b1823-font-size:0.9rem;--e-global-typography-f6b1823-font-weight:200;--e-global-typography-f6b1823-line-height:1.4rem;--e-global-typography-61df9ac-font-family:"Archivo";--e-global-typography-61df9ac-font-size:95px;--e-global-typography-61df9ac-font-weight:400;--e-global-typography-61df9ac-line-height:0.8em;font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-8 button,.elementor-kit-8 input[type="button"],.elementor-kit-8 input[type="submit"],.elementor-kit-8 .elementor-button{background-color:var( --e-global-color-primary );font-family:var( --e-global-typography-ffbd2c5-font-family ), Sans-serif;font-size:var( --e-global-typography-ffbd2c5-font-size );font-weight:var( --e-global-typography-ffbd2c5-font-weight );line-height:var( --e-global-typography-ffbd2c5-line-height );border-radius:100px 100px 100px 100px;}.elementor-kit-8 button:hover,.elementor-kit-8 button:focus,.elementor-kit-8 input[type="button"]:hover,.elementor-kit-8 input[type="button"]:focus,.elementor-kit-8 input[type="submit"]:hover,.elementor-kit-8 input[type="submit"]:focus,.elementor-kit-8 .elementor-button:hover,.elementor-kit-8 .elementor-button:focus{background-color:var( --e-global-color-accent );}.elementor-kit-8 e-page-transition{background-color:#FFBC7D;}.elementor-kit-8 p{margin-block-end:0px;}.elementor-kit-8 a{color:var( --e-global-color-primary );}.elementor-kit-8 a:hover{color:var( --e-global-color-accent );}.elementor-kit-8 h1{font-family:var( --e-global-typography-primary-font-family ), Sans-serif;font-size:var( --e-global-typography-primary-font-size );font-weight:var( --e-global-typography-primary-font-weight );text-transform:var( --e-global-typography-primary-text-transform );font-style:var( --e-global-typography-primary-font-style );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-8 h2{font-family:var( --e-global-typography-secondary-font-family ), Sans-serif;font-size:var( --e-global-typography-secondary-font-size );font-weight:var( --e-global-typography-secondary-font-weight );text-transform:var( --e-global-typography-secondary-text-transform );font-style:var( --e-global-typography-secondary-font-style );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-8 h3{font-family:var( --e-global-typography-d573eb1-font-family ), Sans-serif;font-size:var( --e-global-typography-d573eb1-font-size );font-weight:var( --e-global-typography-d573eb1-font-weight );text-transform:var( --e-global-typography-d573eb1-text-transform );font-style:var( --e-global-typography-d573eb1-font-style );line-height:var( --e-global-typography-d573eb1-line-height );letter-spacing:var( --e-global-typography-d573eb1-letter-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1400px;}.e-con{--container-max-width:1400px;--container-default-padding-top:0px;--container-default-padding-right:0px;--container-default-padding-bottom:0px;--container-default-padding-left:0px;}.elementor-widget:not(:last-child){margin-block-end:30px;}.elementor-element{--widgets-spacing:30px 30px;--widgets-spacing-row:30px;--widgets-spacing-column:30px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1500px){.elementor-kit-8{--e-global-typography-primary-font-size:60px;--e-global-typography-primary-line-height:66px;--e-global-typography-secondary-font-size:53px;--e-global-typography-secondary-line-height:56px;--e-global-typography-2a7be21-font-size:1.92rem;--e-global-typography-2a7be21-line-height:2.1rem;--e-global-typography-d573eb1-font-size:24px;--e-global-typography-d573eb1-line-height:27px;--e-global-typography-61df9ac-font-size:85px;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-8 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-8 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-8 h3{font-size:var( --e-global-typography-d573eb1-font-size );line-height:var( --e-global-typography-d573eb1-line-height );letter-spacing:var( --e-global-typography-d573eb1-letter-spacing );}.elementor-kit-8 button,.elementor-kit-8 input[type="button"],.elementor-kit-8 input[type="submit"],.elementor-kit-8 .elementor-button{font-size:var( --e-global-typography-ffbd2c5-font-size );line-height:var( --e-global-typography-ffbd2c5-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1100px;}.e-con{--container-max-width:1100px;}}@media(max-width:1300px){.elementor-kit-8{--e-global-typography-primary-font-size:55px;--e-global-typography-primary-line-height:61px;--e-global-typography-secondary-font-size:49px;--e-global-typography-secondary-line-height:54px;--e-global-typography-accent-font-size:1.15rem;--e-global-typography-accent-line-height:1.55rem;--e-global-typography-2a7be21-font-size:1.68rem;--e-global-typography-2a7be21-line-height:1.9rem;--e-global-typography-d573eb1-font-size:23.5px;--e-global-typography-d573eb1-line-height:27px;--e-global-typography-61df9ac-font-size:78px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:950px;}.e-con{--container-max-width:950px;}}@media(max-width:1024px){.elementor-kit-8{--e-global-typography-primary-font-size:46px;--e-global-typography-primary-line-height:52px;--e-global-typography-secondary-font-size:46px;--e-global-typography-secondary-line-height:50px;--e-global-typography-2a7be21-font-size:1.4rem;--e-global-typography-2a7be21-line-height:1.7rem;--e-global-typography-d573eb1-font-size:23px;--e-global-typography-d573eb1-line-height:26px;--e-global-typography-61df9ac-font-size:60px;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-8 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-8 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-8 h3{font-size:var( --e-global-typography-d573eb1-font-size );line-height:var( --e-global-typography-d573eb1-line-height );letter-spacing:var( --e-global-typography-d573eb1-letter-spacing );}.elementor-kit-8 button,.elementor-kit-8 input[type="button"],.elementor-kit-8 input[type="submit"],.elementor-kit-8 .elementor-button{font-size:var( --e-global-typography-ffbd2c5-font-size );line-height:var( --e-global-typography-ffbd2c5-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:700px;}.e-con{--container-max-width:700px;}}@media(max-width:767px){.elementor-kit-8{--e-global-typography-primary-font-size:30px;--e-global-typography-primary-line-height:34px;--e-global-typography-secondary-font-size:28px;--e-global-typography-secondary-line-height:32px;--e-global-typography-text-font-size:0.95rem;--e-global-typography-text-line-height:1.45rem;--e-global-typography-accent-font-size:1.1rem;--e-global-typography-accent-line-height:1.4rem;--e-global-typography-2a7be21-font-size:1.1rem;--e-global-typography-2a7be21-line-height:1.4rem;--e-global-typography-d573eb1-font-size:22.5px;--e-global-typography-d573eb1-line-height:25.5px;--e-global-typography-ffbd2c5-font-size:0.95rem;--e-global-typography-f6b1823-font-size:0.85rem;--e-global-typography-f6b1823-line-height:1.35rem;--e-global-typography-61df9ac-font-size:48px;font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );}.elementor-kit-8 h1{font-size:var( --e-global-typography-primary-font-size );line-height:var( --e-global-typography-primary-line-height );letter-spacing:var( --e-global-typography-primary-letter-spacing );}.elementor-kit-8 h2{font-size:var( --e-global-typography-secondary-font-size );line-height:var( --e-global-typography-secondary-line-height );letter-spacing:var( --e-global-typography-secondary-letter-spacing );}.elementor-kit-8 h3{font-size:var( --e-global-typography-d573eb1-font-size );line-height:var( --e-global-typography-d573eb1-line-height );letter-spacing:var( --e-global-typography-d573eb1-letter-spacing );}.elementor-kit-8 button,.elementor-kit-8 input[type="button"],.elementor-kit-8 input[type="submit"],.elementor-kit-8 .elementor-button{font-size:var( --e-global-typography-ffbd2c5-font-size );line-height:var( --e-global-typography-ffbd2c5-line-height );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:90%;}.e-con{--container-max-width:90%;}}/* Start custom CSS */html, body {
    overflow-x: hidden;
}

.icon-flex .elementor-icon {
    display: flex;
}

a {
    transition: 300ms;
}

.liens-blancs a {
  color: #ffffff !important;  
}

.liens-blancs a:hover {
  opacity: .7;  
}

.liens-decorations a {
    text-decoration: underline !important;
}

strong, b, .liens-decorations a {
    font-weight: 600 !important;
}

.custom-list a {
    display: inline !important;
}

.mot-vert-clair {
    color : #FF5A62 !important;
    font-style: normal !important;
}

/* MEGA MENU */

.elementskit-megamenu-panel {
    left: 0% !important;
    transform: translateX(-0%) !important;
    transition: 400ms !important;
    width: 700px !important;
}

/* CUSTOM POSITIONS */

@media (max-width: 1300px) {
    .position-relative-tablette-paysage {
        position: relative !important;
    }
}

@media (max-width: 1024px) {
    .position-relative-tablette {
        position: relative !important;
    }
}

@media (max-width: 767px) {
    .position-relative-mobile {
        position: relative !important;
    }
}

/* CUSTOM HEIGHT */

.max-height {
    height: 100%;
}

/* CUSTOM MAP */

.custom-map, .custom-map .elementor-custom-embed {
    height: 100%;
}

/* SKEW (biseau) */

.bg-skew {
    transform: skew(-28deg, 0deg);
}

@media (max-width: 1300px) {
    .bg-skew {
        transform: skew(-22deg, 0deg);
    }
}

@media (max-width: 1024px) {
    .bg-skew {
        transform: skew(-20deg, 0deg);
    }
}

/* ── Chantier Fidess, T22 : cibles tactiles du menu mobile ≥ 44 px ─────────────────────────
   Aucun réglage d'éditeur ne règle le padding d'un lien d'icon-list ni la zone d'une icône :
   c'est la seule raison d'être de ce CSS. Pas de !important : un réglage d'éditeur doit gagner. */
.elementor-173 .elementor-icon-list-item > a { padding-block: 6px; }
.elementor-257 .elementor-element-499847c .elementor-icon { display: inline-flex; align-items: center; justify-content: center; min-width: 44px; min-height: 44px; }
/* ── fin T22 ── */

/* ── Chantier Fidess : mouvement réduit ───────────────────────────────────────
   Elementor pose ses animations d entrée sans tenir compte de prefers-reduced-motion :
   un visiteur qui demande moins de mouvement recevrait quand même les apparitions, et
   surtout .elementor-invisible laisse le contenu invisible si le script ne part pas.
   Aucun réglage d editeur ne sait faire ça : c est la raison d etre de ce CSS. */
@media (prefers-reduced-motion: reduce) {
  .elementor-invisible { visibility: visible !important; animation: none !important; }
  .animated { animation: none !important; transition: none !important; }
}
/* ── fin mouvement réduit ── */

/* ── Système Fidess : composants de page ──────────────────────────────────────
   Écrit une fois dans le kit, pas page par page. Ne fait que ce qu'aucun réglage
   d'éditeur ne sait faire. */
.fd-page .fd-accent{color:var(--e-global-color-accent)}
.fd-dark .fd-accent{color:var(--e-global-color-276f604)}  /* le rouge vif tombe à 3,38:1 sur marine */
.fd-page .elementor-widget-text-editor a{text-underline-offset:3px;text-decoration-thickness:1px;transition:text-decoration-thickness .2s ease}
/* Un lien DANS le bloc marine héritait de la couleur de lien globale — marine sur marine,
   contraste 1,00 : le mot disparaissait purement et simplement (17 liens sur 11 pages, 21/09).
   Blanc sur marine, il redevient lisible — mais il est alors de la couleur du texte : c'est le
   soulignement qui le distingue, et il vaut aussi pour les widgets sans classe de décoration. */
.fd-dark .elementor-widget-text-editor a,.fd-dark .elementor-widget-heading a{color:#fff}
.fd-dark .elementor-widget-text-editor a:hover{color:var(--e-global-color-276f604)}
/* Sans préfixe : une section reprise à la main n'a pas la classe `fd-page`, et son lien restait
   sans repère (constaté sur « Déménagement militaire » le 21/09). */
.elementor-widget-text-editor a{text-decoration:underline}
.fd-page .elementor-widget-text-editor a:hover{text-decoration-thickness:2px}
.fd-page .elementor-widget-text-editor a:focus-visible{outline:2px solid currentColor;outline-offset:2px}
/* Tuile photo d'une grille : hors flux, sinon sa hauteur naturelle commande toute la rangée
   et laisse du vide sous les cartes de texte. */
.fd-photo{overflow:hidden;position:relative;min-height:280px}
.fd-photo .elementor-widget-image{position:absolute;inset:0;margin:0}
.fd-photo .elementor-widget-image>.elementor-widget-container,.fd-photo .elementor-image,.fd-photo figure{height:100%;width:100%;margin:0}
.fd-photo img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:1024px){.fd-photo{min-height:260px}}
@media(max-width:767px){.fd-photo{min-height:210px}}
/* Bandeau : le widget Image n'expose ni object-fit ni object-position. */
.fd-band img{width:100%;height:440px;object-fit:cover;object-position:50% 60%}
@media(max-width:1024px){.fd-band img{height:320px}}
@media(max-width:767px){.fd-band img{height:230px}}
/* Filtres de la galerie : des liens de 20 px de haut. Le plugin n'expose aucun réglage de
   hauteur ; ce sont pourtant les premières cibles tactiles de la page Réalisations. */
.vp-filter__item > a{min-height:44px;display:inline-flex;align-items:center;gap:6px}
.vp-pagination__load-more{min-height:44px;display:inline-flex;align-items:center;justify-content:center}
/* Un lien SEUL dans son paragraphe n'est pas un lien en ligne : c'est une cible à part
   entière (les liens de désinscription publicitaire des pages légales, par exemple). */
.elementor-widget-text-editor p > a:only-child{display:inline-flex;min-height:44px;align-items:center}
/* Un lien réduit à une icône reste une cible tactile : 44 px, comme les autres.
   Aucun réglage d'éditeur ne pose une taille minimale sur la zone cliquable d'une icône. */
a.elementor-icon{min-width:44px;min-height:44px;display:inline-flex;align-items:center;justify-content:center}
/* ── fin système Fidess ── */

/* ── Système Fidess : rail de navigation ──────────────────────────────────────
   Un rail fixe ne s'obtient pas par un réglage de conteneur : il faut le sortir du flux
   ET décaler le contenu du site, sinon la page passe dessous. */
.fd-rail{position:fixed;top:0;left:0;bottom:0;width:72px;z-index:9990}
body{padding-left:72px}
.fd-rail .fd-burger,.fd-rail a[aria-label^="Appeler"]{min-width:44px;min-height:44px}
.fd-rail .fd-burger:hover .elementor-icon,.fd-rail a:hover .elementor-icon{color:var(--e-global-color-276f604)}
.fd-panneau{min-height:100%}   /* le contenu se centre dans la hauteur, sans dépasser */
.fd-panneau .fd-groupe-titre{text-transform:uppercase;letter-spacing:.09em;font-size:.78rem}
/* Onze villes sur une colonne feraient onze lignes : deux colonnes en font six. */
.fd-panneau .fd-deux-colonnes .elementor-nav-menu{columns:4;column-gap:34px}
.fd-panneau .fd-deux-colonnes .elementor-nav-menu li{break-inside:avoid}
/* Le popup ajusté à l'écran ne fait pas défiler son contenu : mesuré, le dernier lien tombait
   à 986 px dans une fenêtre de 900 — donc inatteignable. C'est au conteneur de défiler. */
#elementor-popup-modal-173 .dialog-widget-content{overflow-y:auto;overscroll-behavior:contain}
/* Le panneau tient dans l'écran dès 600 px de hauteur : la barre qu'Elementor réserve ne
   sert alors à rien. On la masque — le défilement reste possible à la molette si un écran
   très court en demandait. */
#elementor-popup-modal-173 .dialog-widget-content,#elementor-popup-modal-173 .dialog-message{scrollbar-width:none}
#elementor-popup-modal-173 .dialog-widget-content::-webkit-scrollbar,#elementor-popup-modal-173 .dialog-message::-webkit-scrollbar{width:0;height:0}
#elementor-popup-modal-173 .dialog-message{height:auto;min-height:100%;max-height:none}
#elementor-popup-modal-173 .elementor-location-popup{height:100%}   /* pour que le contenu se centre vraiment */
/* Le widget de navigation garde ses puces et ses marges d'origine : on ne les veut pas ici. */
.fd-panneau .elementor-nav-menu li{margin:0}
.fd-panneau .elementor-nav-menu a{padding-left:0!important;padding-right:0!important}
.fd-panneau .fd-menu-principal .elementor-nav-menu a{line-height:1.25}
/* En barre haute, les conteneurs d'Elementor gardent leur largeur de 100 % : en colonne c'est
   ce qu'on veut, en ligne cela empile trois blocs de la largeur de l'écran. */
@media(max-width:1024px){
  .fd-rail{right:0;bottom:auto;width:auto;height:64px;flex-direction:row;align-items:center;justify-content:flex-end;gap:4px;padding:0 16px}
  .fd-rail > .e-con{width:auto;flex:0 0 auto}
  .fd-rail > .e-con:first-child{margin-right:auto}   /* le logo à gauche */
  .fd-rail .fd-burger{order:3}                        /* le bouton de menu en dernier, à droite */
  body{padding-left:0;padding-top:64px}
}
/* ── fin rail ── */

/* ── Système Fidess : croix du méga-menu ──────────────────────────────────────
   La croix d'Elementor hérite de la couleur de texte : marine sur un panneau marine, elle
   disparaît (mesuré 15 px, couleur rgb(27,34,66) sur rgb(27,34,66), le 21/09). Et une croix de
   15 px n'est pas une cible tactile. */
#elementor-popup-modal-173 .dialog-close-button{width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  color:#fff;opacity:1;border-radius:50%;background:rgba(255,255,255,.10);transition:background .2s ease,color .2s ease}
#elementor-popup-modal-173 .dialog-close-button:hover{background:#fff;color:var(--e-global-color-primary)}
#elementor-popup-modal-173 .dialog-close-button svg,#elementor-popup-modal-173 .dialog-close-button i{width:18px;height:18px;font-size:18px}
/* Le `fill` du SVG est posé par Elementor avec plus de spécificité que `currentColor` : au survol,
   le fond passait au blanc et le trait restait blanc — croix invisible (mesuré le 22/09). */
#elementor-popup-modal-173 .dialog-close-button svg{fill:#fff!important}
#elementor-popup-modal-173 .dialog-close-button i{color:#fff!important}
#elementor-popup-modal-173 .dialog-close-button:hover svg{fill:var(--e-global-color-primary)!important}
#elementor-popup-modal-173 .dialog-close-button:hover i{color:var(--e-global-color-primary)!important}
#elementor-popup-modal-173 .dialog-close-button:focus-visible{outline:2px solid #fff;outline-offset:2px}
/* ── fin croix ── */

/* ── Système Fidess : pages légales ───────────────────────────────────────────
   Un texte légal se lit mal en pleine largeur : on borne la ligne, on donne de l'air aux
   titres, et le sommaire suit le défilement sur grand écran. */
.fd-lecture .elementor-widget-text-editor{max-width:76ch}
.fd-lecture .elementor-widget-heading{margin-top:26px}
.fd-lecture .elementor-widget-heading:first-child{margin-top:0}
.fd-lecture .elementor-widget-text-editor ul{margin:0 0 0 1.1em}
.fd-lecture .elementor-widget-text-editor li{margin-bottom:6px}
.fd-lecture [id^="sec-"]{scroll-margin-top:96px}
.fd-sommaire{position:sticky;top:96px}
.fd-sommaire .fd-sommaire-titre{text-transform:uppercase;letter-spacing:.09em;font-size:.78rem;
  color:var(--e-global-color-primary);margin-bottom:10px;font-weight:600}
.fd-sommaire ul{list-style:none;margin:0;padding:0;border-left:2px solid var(--e-global-color-0f4219b)}
.fd-sommaire li{margin:0}
/* Une entrée de sommaire est une cible à part entière : 44 px, pas la hauteur d'une ligne. */
.fd-sommaire li a{display:flex;align-items:center;min-height:44px;padding:7px 0 7px 14px;margin-left:-2px;
  border-left:2px solid transparent;text-decoration:none;line-height:1.35}
.fd-sommaire li a:hover,.fd-sommaire li a:focus-visible{border-left-color:var(--e-global-color-accent);
  color:var(--e-global-color-accent)}
@media(max-width:1024px){
  .fd-sommaire{position:static;top:auto}
  .fd-sommaire ul{columns:2;column-gap:28px}
  .fd-lecture .elementor-widget-text-editor{max-width:none}
}
@media(max-width:767px){
  .fd-sommaire ul{columns:1}
  /* Le rouge de la charte donne 4,25:1 sur blanc : sous 24 px, le seuil AA passe à 4,5 et le
     titre tombe en défaut. À 25 px, c'est un « grand texte » (seuil 3) — mesuré le 21/09. */
  .fd-lecture .elementor-widget-heading h2,.fd-lecture .elementor-widget-heading .elementor-heading-title{font-size:25px!important;line-height:1.25}
}
/* ── fin pages légales ── */

/* ── Système Fidess : zones du méga-menu, par palier ──────────────────────────
   Quatre colonnes tiennent sur un grand écran ; sur un téléphone, elles réduisent chaque
   entrée à 70 px et coupent les noms de communes. */
@media(max-width:1300px){.fd-panneau .fd-deux-colonnes .elementor-nav-menu{columns:3;column-gap:26px}}
@media(max-width:767px){
  .fd-panneau .fd-deux-colonnes .elementor-nav-menu{columns:2;column-gap:18px}
  .fd-panneau .fd-deux-colonnes .elementor-nav-menu a{white-space:normal;overflow:visible;text-overflow:clip;
    line-height:1.3;padding-top:7px;padding-bottom:7px}
  .fd-panneau .fd-deux-colonnes .elementor-nav-menu li{break-inside:avoid}
}
/* ── fin zones du méga-menu ── */

/* ── Système Fidess : panneau du méga-menu sur téléphone ──────────────────────
   Le bandeau cookies est posé à 9 999 999 par son extension : sans cette règle, il recouvre
   le menu ouvert. */
#elementor-popup-modal-173{z-index:10000000}
@media(max-width:767px){
  /* Resserrer le rythme : 31 entrées ne tiennent pas dans 844 px au rythme du bureau. */
  #elementor-popup-modal-173 .fd-panneau{padding-top:22px;padding-bottom:26px}
  #elementor-popup-modal-173 .fd-panneau .e-con{row-gap:12px!important}
  #elementor-popup-modal-173 .fd-panneau .fd-menu-principal .elementor-nav-menu a{font-size:19px!important;line-height:1.2!important;padding-top:3px!important;padding-bottom:3px!important}
  #elementor-popup-modal-173 .fd-panneau .elementor-nav-menu a{padding-top:4px!important;padding-bottom:4px!important;line-height:1.25}
  #elementor-popup-modal-173 .fd-panneau .fd-groupe-titre{margin-bottom:0}
  #elementor-popup-modal-173 .fd-panneau .elementor-widget-image img{max-width:104px}
  /* Il reste du contenu sous le pli : un dégradé le dit, faute de barre de défilement. */
  #elementor-popup-modal-173 .dialog-message{
    -webkit-mask-image:linear-gradient(to bottom,#000 calc(100% - 46px),transparent 100%);
    mask-image:linear-gradient(to bottom,#000 calc(100% - 46px),transparent 100%);}
}
/* ── fin panneau mobile ── */

/* ── Système Fidess : actualités ──────────────────────────────────────────────
   Une grille de cartes ne tient que si toutes les photos ont le même rapport : le widget
   « image à la une » n'expose ni object-fit ni rapport. */
.fd-carte-actu{height:100%;box-shadow:0 1px 2px rgba(27,34,66,.06);transition:transform .25s ease,box-shadow .25s ease}
.fd-carte-actu:hover{transform:translateY(-4px);box-shadow:0 14px 30px rgba(27,34,66,.14)}
.fd-carte-photo img{width:100%;aspect-ratio:16/9;object-fit:cover;display:block;border-radius:0}
.fd-carte-actu .elementor-widget-theme-post-title h2{line-height:1.25}
.fd-carte-actu .elementor-widget-heading p{margin:0}
/* Des cartes de hauteur égale, quel que soit le nombre de lignes du titre. */
.elementor-widget-loop-grid .elementor-grid-item{display:flex}
.elementor-widget-loop-grid .elementor-grid-item > *{width:100%}
/* Navigation entre articles : deux cibles nettes, empilées sur téléphone. */
.elementor-post-navigation{border-top:1px solid var(--e-global-color-0f4219b);padding-top:22px}
.elementor-post-navigation a{min-height:44px;display:inline-flex;align-items:center}
@media(max-width:767px){.elementor-post-navigation{flex-direction:column;gap:12px}
  .elementor-post-navigation .elementor-post-navigation__separator{display:none}}
/* ── fin actualités ── */

/* ── Système Fidess : formulaire de devis ─────────────────────────────────────
   FluentForm sort ses champs au style de l'extension : bordures grises, angles droits,
   cases de 13 px. On les remet dans la charte, et on donne aux cases une taille cliquable. */
.fluentform .ff-el-form-control{border:1px solid var(--e-global-color-0f4219b);border-radius:10px;
  padding:12px 14px;min-height:48px;background:#fff;font-size:15px;line-height:1.4}
.fluentform .ff-el-form-control::placeholder{color:#8b93a7;opacity:1}
.fluentform .ff-el-form-control:focus{border-color:var(--e-global-color-primary);
  box-shadow:0 0 0 3px rgba(27,34,66,.12);outline:none}
.fluentform textarea.ff-el-form-control{min-height:140px}
.fluentform .ff-el-group{margin-bottom:18px}
.fluentform .ff-el-input--label label{font-weight:600;color:var(--e-global-color-primary)}
.fluentform .ff-el-form-check{display:flex;gap:10px;align-items:flex-start}
.fluentform .ff-el-form-check-label{line-height:1.45;font-size:14px}
.fluentform input[type="checkbox"],.fluentform input[type="radio"]{width:20px;height:20px;
  accent-color:var(--e-global-color-accent);flex:0 0 auto;margin-top:2px}
.fluentform .ff_list_inline .ff-el-form-check{display:inline-flex;margin-right:22px}
.fluentform .ff-btn-submit{min-height:48px;padding:0 28px;font-weight:600;letter-spacing:.01em}
.fluentform .ff-el-is-error .ff-el-form-control{border-color:var(--e-global-color-accent)}
.fluentform .error-text{color:var(--e-global-color-accent);font-size:13px;margin-top:5px}
@media(max-width:767px){.fluentform .ff-t-cell{padding-left:0;padding-right:0}}
/* ── fin formulaire ── */

/* ── Système Fidess : page d'article ──────────────────────────────────────────
   Un seul article publié : la navigation n'a ni précédent ni suivant et ne laissait qu'un filet
   en bas de page. Elle réapparaît d'elle-même dès le deuxième article. */
.elementor-widget-post-navigation:not(:has(a)){display:none}
/* ── fin article ── */

/* ── Système Fidess : filtres de la galerie ───────────────────────────────────
   Le filtre actif était en rouge de la charte sur fond clair : 4,25 pour 14 px, sous le seuil.
   Le marine donne 14,8 ; le soulignement rouge garde le repère d'état. */
.vp-filter__item-active > a{color:var(--e-global-color-primary);font-weight:600;
  text-decoration:underline;text-decoration-color:var(--e-global-color-accent);text-underline-offset:5px;text-decoration-thickness:2px}
.vp-filter__item > a{color:var(--e-global-color-text)}
.vp-filter__item > a:hover{color:var(--e-global-color-primary)}
/* ── fin filtres galerie ── */

/* ── Système Fidess : chiffres clés et rail de services ───────────────────────
   Les chiffres vivent sur la photo de bannière : tout est blanc, et les filets séparent
   sans alourdir. */
.fd-chiffres{margin-top:auto;border-top:1px solid rgba(255,255,255,.22);padding-top:14px}
.fd-chiffres .elementor-counter-number-wrapper{font-size:34px!important;letter-spacing:-.01em}
.fd-chiffres .elementor-counter-number-prefix,.fd-chiffres .elementor-counter-number-suffix{font-size:inherit}
.fd-chiffres > .e-con,.fd-chiffres > .e-con-inner > .e-con{position:relative;text-align:center}
.fd-chiffres > .e-con + .e-con::before{content:"";position:absolute;left:0;top:14%;height:72%;width:1px;background:rgba(255,255,255,.22)}
.fd-chiffres .elementor-counter-number-wrapper{justify-content:center;color:#fff;line-height:1.05}
.fd-chiffres .elementor-counter-number-wrapper *{color:#fff}
.fd-chiffres .elementor-widget-text-editor{color:rgba(255,255,255,.82);font-size:12.5px;line-height:1.3;margin:4px auto 0;max-width:none;padding:0 8px}
@media(max-width:767px){
  .fd-chiffres{padding-top:12px}
  .fd-chiffres .elementor-counter-number-wrapper{font-size:26px!important}
  .fd-chiffres > .e-con:nth-child(3)::before{display:none}   /* pas de filet en début de 2e ligne */
  .fd-chiffres .elementor-widget-text-editor{font-size:11.5px;padding:0 6px}
}
/* Rail de services : la grille d'Elementor reste une grille — elle porte le style des cartes —
   mais on la pilote par ses propres variables pour qu'elle défile sur UNE rangée. */
.fd-services-rail{width:100%;align-self:stretch;--e-con-grid-template-columns:none!important;--e-con-grid-template-rows:auto!important;--grid-auto-flow:column!important;
  grid-auto-columns:calc((100% - 2 * 30px) / 3);overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;
  padding-bottom:12px;overscroll-behavior-x:contain;
  scrollbar-width:thin;scrollbar-color:var(--e-global-color-0f4219b) transparent}
.fd-services-rail > .e-con{scroll-snap-align:start;height:100%}
.fd-services-rail::-webkit-scrollbar{height:6px}
.fd-services-rail::-webkit-scrollbar-thumb{background:var(--e-global-color-0f4219b);border-radius:999px}
.fd-services-rail::-webkit-scrollbar-track{background:transparent}
.fd-services-rail:focus-visible{outline:2px solid var(--e-global-color-accent);outline-offset:4px}
@media(max-width:1024px){.fd-services-rail{grid-auto-columns:minmax(260px,300px)}}
@media(max-width:767px){.fd-services-rail{grid-auto-columns:78vw}}
/* GSAP pilote le rail (bureau, et seulement si la section tient dans l'écran) : les flèches ne
   servent plus — leur bloc sort de la mise en page et rend ses 58 px —, et la barre de défilement
   native n'a plus de sens puisque c'est le défilement de la page qui commande. */
body.fd-gsap-pilote .fd-services-fleches-bloc{display:none}
body.fd-gsap-pilote .fd-services-rail{padding-bottom:0;scrollbar-width:none}
body.fd-gsap-pilote .fd-services-rail::-webkit-scrollbar{height:0;display:none}
/* pendant la traversée, l'accroche se bat avec l'animation : on la coupe, le scrub la remplace */
body.fd-gsap-actif .fd-services-rail{scroll-snap-type:none}
body.fd-gsap-actif .fd-services-fleches{opacity:0;pointer-events:none}
/* Les deux flèches : cibles de 44 px. */
.fd-services-fleches{display:flex;gap:10px;justify-content:flex-end;margin-bottom:14px}
.fd-services-fleches button{width:44px;height:44px;border-radius:999px;border:1px solid var(--e-global-color-0f4219b);
  background:#fff;color:var(--e-global-color-primary);font-size:20px;line-height:1;cursor:pointer;
  display:inline-flex;align-items:center;justify-content:center;transition:background .2s ease,color .2s ease}
.fd-services-fleches button:hover:not(:disabled){background:var(--e-global-color-primary);color:#fff}
.fd-services-fleches button:disabled{opacity:.35;cursor:default}
.fd-services-fleches button:focus-visible{outline:2px solid var(--e-global-color-accent);outline-offset:2px}
@media(max-width:767px){.fd-services-fleches{display:none}}
/* ── fin chiffres et rail ── */



/* .texte-blanc — 23/09. Elementor rend la description d'un encart dans un <p> :
   un <ul> en est éjecté par le navigateur et n'hérite plus de la couleur du texte, mais du
   body (#333) — illisible sur les cartes marine. Cette classe est posée sur les cartes dont
   le fond RENDU est sombre (script 286), jamais à la main. */
.texte-blanc ul,
.texte-blanc ol,
.texte-blanc li {
    color: #ffffff;
}



/* césure des titres doubles — 23/09 : un mot plus large que sa colonne déborde sur la
   carte voisine, et aucune coupe du titre n'y peut rien (« Déménagement » 393 px dans 307 px,
   « systématiquement » 182 px dans 148 px).
   `hyphenate-limit-chars` est indispensable : sans lui, la césure s'applique AUSSI aux titres
   qui tenaient — le navigateur coupait « com-munes » et « Bou-logne » pour mieux remplir la
   ligne (constaté à la capture). Avec 12, seuls les mots d'au moins 12 lettres sont coupés. */
.premium-dual-header-first-header,
.premium-dual-header-first-span,
.premium-dual-header-second-header {
    hyphens: auto;
    -webkit-hyphens: auto;
    hyphenate-limit-chars: 12 6 6;
    overflow-wrap: break-word;
}

/* compteur des filtres du portfolio — 23/09 : rendu à 8,2 px sur mobile, deux fois plus
   petit que le plus petit texte du site. */
.vp-filter__style-minimal .vp-filter__item .vp-filter__item-count,
.vp-filter__item-count {
    --vp-filter-minimal--items-count__font-size: 12px;
    font-size: 12px;
    line-height: 1.2;
}

/* liens sur fond sombre — 23/09, demande du chef de projet : blancs et soulignés.
   La règle vise le FOND (les trois bleus de la charte) et non l'élément : un lien ajouté demain
   dans une section marine sera blanc sans qu'on ait à lui poser une classe. Les classes
   `.liens-blancs` et `.liens-decorations` restent pour les fonds qui viennent d'une image. */
.fond-sombre a:not(.elementor-button),
[style*="background-color:#1b2242"] a:not(.elementor-button),
[style*="background-color: #1b2242"] a:not(.elementor-button),
[style*="rgb(27, 34, 66)"] a:not(.elementor-button),
[style*="background-color:#2b3d8e"] a:not(.elementor-button),
[style*="background-color: #2b3d8e"] a:not(.elementor-button),
[style*="rgb(43, 61, 142)"] a:not(.elementor-button),
[style*="background-color:#4c63b6"] a:not(.elementor-button),
[style*="background-color: #4c63b6"] a:not(.elementor-button),
[style*="rgb(76, 99, 182)"] a:not(.elementor-button) {
    color: #ffffff !important;
    text-decoration: underline !important;
}
.fond-sombre a:not(.elementor-button):hover,
.liens-blancs a:hover {
    opacity: .75;
}

/* cibles tactiles du pied de page — 23/09 : trois liens (téléphone, courriel, Sitemap)
   faisaient 22 px de haut, sous le seuil WCAG de 24. La cause n'est pas l'interligne mais la
   TAILLE du texte (13,6 px) : une hauteur minimale règle les trois sans toucher au dessin. */
footer .elementor-icon-list-item > a,
footer .premium-bullet-list-link {
    min-height: 24px;
    display: flex;
    align-items: center;
}

/* liens sur fond bleu — 28/09. Remplace la règle du 23/09, qui visait un attribut `style` en ligne
   qu'Elementor n'écrit jamais pour un fond lié à une globale : elle ne matchait rien.
   La classe `fd-sur-bleu` est posée en base sur les conteneurs à fond bleu.
   Spécificité 0-2-1 : assez pour battre `.elementor-kit-8 a` qui peint les liens en bleu nuit,
   trop peu pour écraser les couleurs posées par widget — elles restent maîtresses. */
.fd-sur-bleu a:not(.elementor-button):not(.fd-bouton) {
    color: #ffffff;
}
.fd-sur-bleu a:not(.elementor-button):not(.fd-bouton):hover {
    color: var(--e-global-color-276f604);
}

/* --- articles : titres, images, respiration --- 02/10 (fd-article-rendu) --------------------
   Mesuré au style calculé : le titre d'article et les `h2` du corps étaient tous deux à 53 px
   (1440 px) et 28 px (390 px) : ils sont branchés sur la MÊME globale `secondary`. Aucune
   hiérarchie, et un `h2` de 53 px dans une colonne de 624 px.
   On ne retouche AUCUNE globale : elles servent les 30 autres pages, où `secondary` est un titre
   de section pleine largeur et fonctionne. C'est la colonne de LECTURE qui demande son échelle.
   Cadré sur `body.single-actualites` : rien d'autre sur le site n'est touché. */

/* le titre : il doit dominer les `h2` du corps sans écraser la page.
   Spécificité volontairement élevée (0-5-1) : la règle du gabarit
   `.elementor-137 .elementor-element.elementor-element-5f6530d .elementor-heading-title`
   pèse 0-4-0, il faut passer devant. */
body.single-actualites .elementor-137 .elementor-element.elementor-element-5f6530d .elementor-heading-title {
    font-size: 40px;
    line-height: 1.15;
}

/* le corps : une échelle de lecture, h2 > h3 > texte, nettement séparés */
body.single-actualites .elementor-widget-theme-post-content h2 {
    font-size: 28px;
    line-height: 1.25;
    margin-top: 2em;
    margin-bottom: .6em;
}
body.single-actualites .elementor-widget-theme-post-content h3 {
    font-size: 21px;
    line-height: 1.3;
    margin-top: 1.6em;
    margin-bottom: .5em;
}
/* les `p` sortaient à `margin: 0` : le texte formait un bloc compact sans respiration.
   Seule la marge basse est posée : ni la taille, ni la graisse, ni la couleur. */
body.single-actualites .elementor-widget-theme-post-content p {
    margin-bottom: 1.15em;
}
body.single-actualites .elementor-widget-theme-post-content ul,
body.single-actualites .elementor-widget-theme-post-content ol {
    margin-bottom: 1.15em;
    padding-left: 1.2em;
}

/* les images : toute la largeur de la colonne, et une hauteur bornée.
   `aspect-ratio` + `object-fit: cover` traitent les deux défauts d'un coup : un portrait
   768x1024 sortait à 624x832 px, plus haut que l'écran, et trois images plus étroites que la
   colonne rendaient à 47 % de sa largeur.
   Le rayon de 10 px est celui de la charte (cartes, images, bannières). */
body.single-actualites .elementor-widget-theme-post-content img {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    object-position: center;
    border-radius: 10px;
    margin: 1.6em 0;
}

@media (max-width: 1024px) {
    body.single-actualites .elementor-137 .elementor-element.elementor-element-5f6530d .elementor-heading-title { font-size: 34px; }
    body.single-actualites .elementor-widget-theme-post-content h2 { font-size: 26px; }
    body.single-actualites .elementor-widget-theme-post-content h3 { font-size: 20px; }
}
@media (max-width: 767px) {
    body.single-actualites .elementor-137 .elementor-element.elementor-element-5f6530d .elementor-heading-title { font-size: 26px; }
    body.single-actualites .elementor-widget-theme-post-content h2 { font-size: 22px; }
    body.single-actualites .elementor-widget-theme-post-content h3 { font-size: 19px; }
}
/* --- articles : les liens du corps --- 02/10 (fd-article-liens) -----------------------------
   Mesuré sur l'article de lancement : 32 liens en `rgb(27,34,66)` dans un texte en
   `rgb(51,51,51)`, sans soulignement et à la même graisse (200). Contraste entre les deux
   encres : 1,23:1, là où WCAG 1.4.1 demande 3:1 quand la couleur est le seul indice.
   Le soulignement est l'indice NON coloré : c'est lui qui rend la règle conforme, la couleur
   et la graisse ne font qu'aider. Les liens d'image et les boutons sont exclus nommément. */
body.single-actualites .elementor-widget-theme-post-content a:not(.elementor-button):not(.fd-bouton):not(:has(img)) {
    /* globale « Bleu » #2B3D8E : 9,72:1 sur blanc. Et surtout PAS `--e-global-color-secondary`,
       qui est le Blanc cassé #F4F6FA sur ce kit — le nom ne dit pas la couleur. */
    color: var(--e-global-color-06b2901);
    font-weight: 500;
    text-decoration: underline;
    text-underline-offset: 2px;
    text-decoration-thickness: 1px;
}
body.single-actualites .elementor-widget-theme-post-content a:not(.elementor-button):not(.fd-bouton):not(:has(img)):hover,
body.single-actualites .elementor-widget-theme-post-content a:not(.elementor-button):not(.fd-bouton):not(:has(img)):focus-visible {
    color: var(--e-global-color-accent);
}
body.single-actualites .elementor-widget-theme-post-content a:has(img) {
    text-decoration: none;
}/* End custom CSS */