/*
Theme Name: Bâtcor
Theme URI: https://xn--btcor-3qa.com
Description: Thème enfant de Hello Elementor pour Bâtcor Sarl. Le design vit ici ; les contenus se modifient dans Elementor.
Author: Bâtcor Sarl
Template: hello-elementor
Version: 1.0.8
Requires at least: 6.6
Requires PHP: 8.0
License: GPL-2.0-or-later
Text Domain: batcor
*/

/* ==========================================================
   Registre relevé sur la référence : sans-serif uniquement,
   quasi monochrome, angles droits, titres centrés.
   Les classes sont posées dans Elementor (Avancé > Classes CSS).
   ========================================================== */

:root {
  --noir: #1a1a1a;
  --anthracite: #252525;
  --texte: #555555;
  --gris: #9f9e9e;
  --fond: #fafafa;
  --blanc: #ffffff;
  --bleu: #127ded;
  --f-titre: "Titillium Web", sans-serif;
  --f-sur: "Josefin Sans", sans-serif;
  --f-texte: "Raleway", sans-serif;
  --large: 1400px;
  --marge: 20px;
}

/* ---------- socle : neutraliser Hello Elementor et les marges d'Elementor ---------- */
html { scroll-behavior: smooth; }
body {
  margin: 0; background: var(--blanc); color: var(--texte);
  font: 400 15px/1.7 var(--f-texte); -webkit-font-smoothing: antialiased;
  --kit-widget-spacing: 0px; --widgets-spacing: 0px 0px; --widgets-spacing-row: 0px; --widgets-spacing-column: 0px;
}
body .elementor .e-con {
  --padding-top: 0px; --padding-bottom: 0px; --padding-left: 0px; --padding-right: 0px;
  --gap: 0px; --row-gap: 0px; --column-gap: 0px;
  --container-default-padding-top: 0px; --container-default-padding-bottom: 0px;
  --container-default-padding-left: 0px; --container-default-padding-right: 0px;
}
body .elementor .elementor-widget:not(:last-child) { margin-block-end: 0; }
body h1, body h2, body h3, body h4 { font-family: var(--f-titre); color: var(--noir); margin: 0; font-weight: 400; hyphens: none; text-wrap: balance; }
body p { margin: 0; }
body a { color: inherit; text-decoration: none; }
body a:hover { color: inherit; }
body img { display: block; max-width: 100%; }
body .elementor-widget-image { text-align: left; }
body .elementor-heading-title { line-height: inherit; }

/* ---------- éléments communs ---------- */
body .surtitre, body .surtitre p {
  font: 400 14px/1 var(--f-sur); letter-spacing: .5px; text-transform: uppercase; color: var(--gris); margin: 0;
}
body .e-con.titre-section { display: block; text-align: center; margin: 0 auto 60px; padding: 0 var(--marge); max-width: 900px; }
body .titre-section :is(h1, h2) { font-size: 25px; line-height: 1.3; margin-top: 16px; }
body .e-con.titre-section::after { content: ""; display: block; width: 60px; margin: 22px auto 0; border-top: 2px dotted var(--noir); }
body .titre-section .chapo { order: 9; }
body .titre-section .chapo p { margin-top: 26px; font-size: 15px; line-height: 1.8; }
body .e-con.titre-section.a-gauche { text-align: left; margin: 0; padding: 0; max-width: none; }
body .e-con.titre-section.a-gauche::after { margin-left: 0; }
body .e-con.titre-section.clair :is(h1, h2) { color: var(--blanc); }
body .e-con.titre-section.clair::after { border-color: var(--blanc); }

body .btn .elementor-button {
  display: inline-block; border: 0; border-radius: 0;
  font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase;
  padding: 19px 34px 17px; transition: background .3s, color .3s;
}
body .btn-noir .elementor-button { background: var(--noir); color: var(--blanc); }
body .btn-noir .elementor-button:hover { background: var(--bleu); color: var(--blanc); }
body .btn-sombre .elementor-button { background: rgba(26,26,26,.85); color: var(--blanc); }
body .btn-sombre .elementor-button:hover { background: var(--blanc); color: var(--noir); }
body .btn-bleu .elementor-button { background: var(--bleu); color: var(--blanc); }
body .btn-bleu .elementor-button:hover { background: var(--blanc); color: var(--noir); }
body .elementor-widget.centre { text-align: center; margin-top: 60px; }
body .e-con.bande-claire { background: var(--fond); }
body .e-con.bande-blanche { background: var(--blanc); }
body .e-con.section { padding: 110px 0 120px; display: block; }
body .e-con.section-courte { padding: 20px 0 120px; display: block; }

/* ---------- en-tête (Header Footer Elementor) ---------- */
/* HFE pose « .ehf-header #masthead { position: relative } » : il faut le dépasser */
body.ehf-header #masthead, body #masthead { position: absolute; inset: 0 0 auto; z-index: 50; }
body.admin-bar.ehf-header #masthead { top: 32px; }
/* Modèles d'en-tête et de pied ouverts seuls (édition HFE) : pas de photo dessous,
   donc l'en-tête reprend sa place dans le flux, sur fond sombre, pour rester lisible. */
body.single-elementor-hf #masthead { position: relative; top: 0; }
body.single-elementor-hf .e-con.entete { background: var(--noir); }
body .menu-nav nav:not(.hfe-dropdown) .hfe-nav-menu > li:last-child > .sub-menu { left: auto; right: 0; }
body .menu-nav nav:not(.hfe-dropdown) .sub-menu .sub-menu { left: auto; right: 100%; top: 0; }
body .e-con.entete { border-bottom: 1px solid rgba(255,255,255,.22); display: block; }
body .e-con.entete-in { display: flex; flex-direction: row; align-items: center; justify-content: space-between; height: 84px; padding: 0 40px; }
body .logo img { height: 40px; width: auto; }
body .menu-nav { flex: 0 0 auto; width: auto; }
body .menu-nav .hfe-nav-menu { gap: 42px; }
body .menu-nav .hfe-nav-menu > li.menu-item > .hfe-has-submenu-container > a.hfe-menu-item,
body .menu-nav .hfe-nav-menu > li.menu-item > a.hfe-menu-item {
  font: 400 14px/1 var(--f-titre); text-transform: uppercase; letter-spacing: .4px;
  color: var(--blanc); padding: 34px 0; background: none;
}
body .menu-nav .hfe-nav-menu > li.menu-item > a.hfe-menu-item:hover,
body .menu-nav .hfe-nav-menu > li.menu-item > .hfe-has-submenu-container > a.hfe-menu-item:hover { color: var(--blanc); opacity: .65; }
body .menu-nav .hfe-nav-menu > li.current-menu-item > a.hfe-menu-item { box-shadow: inset 0 -2px 0 var(--blanc); }
body .menu-nav .hfe-nav-menu .sub-arrow { padding: 0 0 0 8px; font-size: 10px; }
body .menu-nav .hfe-nav-menu .sub-arrow svg { width: 9px; height: 9px; fill: currentColor; }
body .menu-nav nav:not(.hfe-dropdown) .sub-menu {
  background: var(--noir); border: 0; box-shadow: none; padding: 14px 0; min-width: 230px; width: 230px;
}
body .menu-nav .sub-menu a.hfe-sub-menu-item, body .menu-nav .sub-menu a.hfe-menu-item {
  font: 400 14px/1.3 var(--f-titre); color: rgba(255,255,255,.75); padding: 11px 24px; background: none; border: 0;
}
body .menu-nav .sub-menu a.hfe-sub-menu-item:hover, body .menu-nav .sub-menu a.hfe-menu-item:hover { color: var(--blanc); background: rgba(255,255,255,.05); }
body .menu-nav .sub-menu li { border: 0; }
body .menu-nav .hfe-nav-menu__toggle { color: var(--blanc); }
body .menu-nav .hfe-nav-menu-icon, body .menu-nav .hfe-nav-menu-icon svg { color: var(--blanc); fill: var(--blanc); font-size: 26px; width: 26px; height: 26px; }
/* Le CSS généré par HFE pour son widget est plus spécifique que tout le thème :
   seul endroit où !important est justifié (panneau mobile blanc sur blanc sinon). */
body .menu-nav nav.hfe-dropdown, body .menu-nav nav.hfe-dropdown .sub-menu,
body .menu-nav nav.hfe-dropdown li, body .menu-nav nav.hfe-dropdown a { background-color: rgba(20,20,20,.97) !important; }
body .menu-nav nav.hfe-dropdown a { color: var(--blanc) !important; }
body .menu-nav nav.hfe-dropdown .sub-menu a { color: rgba(255,255,255,.75) !important; }
body .menu-nav nav.hfe-dropdown a.hfe-menu-item, body .menu-nav nav.hfe-dropdown a.hfe-sub-menu-item {
  font: 400 14px/1 var(--f-titre); text-transform: uppercase; color: var(--blanc); padding: 16px 24px;
  border-bottom: 1px solid rgba(255,255,255,.1); background: none;
}
body .menu-nav nav.hfe-dropdown .sub-menu { background: transparent; }
body .menu-nav nav.hfe-dropdown .sub-menu a.hfe-sub-menu-item { text-transform: none; color: rgba(255,255,255,.75); padding-left: 40px; }

/* ---------- héros (accueil et pages) ---------- */
body .heros { position: relative; height: 100vh; min-height: 560px; display: grid; place-items: center; overflow: hidden; background: var(--noir); }
body .heros::before { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(rgba(10,10,10,.55), rgba(10,10,10,.35) 45%, rgba(10,10,10,.6)); }
body .heros .heros-photo { position: absolute; inset: 0; z-index: 0; width: 100%; height: 100%; margin: 0; }
body .heros .heros-photo img { width: 100%; height: 100%; max-width: none; object-fit: cover; transform: scale(1.06); animation: recul 9s ease-out forwards; }
@keyframes recul { to { transform: scale(1); } }
body .heros .heros-contenu { position: relative; z-index: 2; display: block; text-align: center; padding: 0 var(--marge); }
body .heros .heros-titre :is(h1, h2) { color: var(--blanc); font-size: 42px; font-weight: 300; line-height: 1.2; text-align: center; }
body .heros .fil, body .heros .fil p { margin-top: 18px; font: 400 12px/1.4 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; color: rgba(255,255,255,.7); }
body .heros .fil a:hover { color: var(--blanc); }

/* ---------- diaporama des métiers ---------- */
body .e-con.diapo { position: relative; display: block; height: 100vh; min-height: 600px; background: var(--anthracite); overflow: hidden; color: var(--blanc); }
body .e-con.diapo::before { content: ""; position: absolute; z-index: 3; top: 0; bottom: 0; left: 80px; border-left: 1px solid rgba(255,255,255,.18); pointer-events: none; }
body .e-con.diapo::after { content: ""; position: absolute; z-index: 3; left: 0; right: 0; bottom: 90px; border-top: 1px solid rgba(255,255,255,.18); pointer-events: none; }
body .e-con.diapo-slide { position: absolute; inset: 0; display: block; opacity: 0; visibility: hidden; transition: opacity 1.1s ease, visibility 1.1s; }
body .e-con.diapo-slide.actif { opacity: 1; visibility: visible; }
body .e-con.diapo-slide::after { content: ""; position: absolute; inset: 0; z-index: 1; background: rgba(15,15,15,.52); }
body .diapo-slide .diapo-img { position: absolute; inset: 0; width: 100%; height: 100%; }
body .diapo-slide .diapo-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; transform: scale(1.08); transition: transform 7s ease-out; }
body .diapo-slide.actif .diapo-img img { transform: scale(1); }
body .e-con.diapo-texte { position: absolute; inset: 0; z-index: 2; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 0 90px; }
body .diapo-texte :is(h1, h2) { color: var(--blanc); font-size: clamp(46px, 6vw, 88px); font-weight: 200; line-height: 1.05; letter-spacing: -.5px; }
body .diapo-texte .diapo-p p { font: 400 15px/1.75 var(--f-sur); color: rgba(255,255,255,.78); margin: 22px 0 34px; }
body .diapo-texte > .elementor-widget { transform: translateY(26px); opacity: 0; transition: transform 1s .35s, opacity 1s .35s; }
body .diapo-texte > .elementor-widget:nth-child(2) { transition-delay: .55s; }
body .diapo-texte > .elementor-widget:nth-child(3) { transition-delay: .75s; }
body .diapo-slide.actif .diapo-texte > .elementor-widget { transform: none; opacity: 1; }
body .diapo-reseaux { position: absolute; z-index: 4; left: 40px; top: 50%; transform: translate(-50%, -50%) rotate(-90deg); white-space: nowrap; }
body .diapo-reseaux p { display: flex; gap: 34px; }
body .diapo-reseaux a { font: 400 11px/1 var(--f-sur); letter-spacing: 1.2px; text-transform: uppercase; color: rgba(255,255,255,.7); transition: color .25s; }
body .diapo-reseaux a:hover { color: var(--blanc); }

/* boutons-icônes : le texte reste éditable, l'icône est un masque CSS */
body .icone .elementor-button { position: relative; display: grid; place-items: center; width: 44px; height: 30px; padding: 0; background: none; border: 0; border-radius: 0; font-size: 0; color: rgba(255,255,255,.75); }
body .icone .elementor-button::before { content: ""; width: 24px; height: 12px; background: currentColor; -webkit-mask: center / contain no-repeat; mask: center / contain no-repeat; }
body .icone .elementor-button:hover { color: var(--blanc); background: none; }
body .icone-gauche .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M23 6H2m5-5L2 6l5 5' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M23 6H2m5-5L2 6l5 5' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3C/svg%3E"); }
body .icone-droite .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M1 6h21m-5-5l5 5-5 5' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 12'%3E%3Cpath d='M1 6h21m-5-5l5 5-5 5' fill='none' stroke='%23000' stroke-width='1.3'/%3E%3C/svg%3E"); }
body .icone-bas .elementor-button { width: 40px; height: 14px; color: var(--blanc); }
body .icone-bas .elementor-button::before { width: 40px; height: 14px; -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 14'%3E%3Cpath d='M1 1l19 12L39 1' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 40 14'%3E%3Cpath d='M1 1l19 12L39 1' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); }
body .diapo-bas { position: absolute; z-index: 4; left: 50%; bottom: 36px; transform: translateX(-50%); animation: flotte 2.4s ease-in-out infinite; }
@keyframes flotte { 50% { transform: translate(-50%, 6px); } }
body .e-con.diapo-fleches { position: absolute; z-index: 4; right: 40px; bottom: 30px; display: flex; flex-direction: row; gap: 22px; width: auto; }

/* ---------- carrousel des travaux ---------- */
body .e-con.carrousel { position: relative; display: block; max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); }
body .e-con.carrousel-piste { position: relative; display: block; height: min(78vh, 800px); min-height: 420px; overflow: hidden; }
body .e-con.projet { position: absolute; inset: 0; display: block; opacity: 0; transition: opacity .9s ease; }
body .e-con.projet.actif { opacity: 1; z-index: 1; }
body .e-con.projet::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(rgba(0,0,0,.08) 40%, rgba(0,0,0,.55)); }
body .projet .projet-img { position: absolute; inset: 0; width: 100%; height: 100%; }
body .projet .projet-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; transform: scale(1.04); transition: transform 6s ease-out; }
body .projet.actif .projet-img img { transform: scale(1); }
body .e-con.projet-legende { position: absolute; z-index: 2; left: 0; right: 0; bottom: 70px; display: block; text-align: center; }
body .projet-legende :is(h2, h3) { color: var(--blanc); font-size: 24px; }
body .projet-legende .surtitre p { display: inline-block; margin-top: 12px; color: rgba(255,255,255,.75); font-size: 12px; }
body .carrousel-btn { position: absolute; z-index: 3; top: 50%; transform: translateY(-50%); }
body .carrousel-btn .elementor-button { width: 56px; height: 56px; color: var(--blanc); background: rgba(26,26,26,.35); transition: background .25s; }
body .carrousel-btn .elementor-button:hover { background: var(--noir); }
body .carrousel-btn .elementor-button::before { width: 12px; height: 22px; }
body .carrousel-btn.icone-gauche { left: calc(var(--marge) + 24px); }
body .carrousel-btn.icone-droite { right: calc(var(--marge) + 24px); }
body .carrousel-btn.icone-gauche .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M11 1L1 11l10 10' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M11 1L1 11l10 10' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); }
body .carrousel-btn.icone-droite .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M1 1l10 10L1 21' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M1 1l10 10L1 21' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); }
body .carrousel-points { position: absolute; z-index: 3; left: 0; right: 0; bottom: 34px; display: flex; justify-content: center; gap: 10px; }
body .carrousel-points button { width: 28px; height: 2px; padding: 0; border: 0; border-radius: 0; background: rgba(255,255,255,.4); cursor: pointer; transition: background .25s, width .25s; }
body .carrousel-points button.actif { background: var(--blanc); width: 44px; }

/* ---------- mosaïque (architecture d'intérieur) ---------- */
body .e-con.mosaique { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: 1fr 1fr; gap: 20px; }
body .mosaique .elementor-widget-image { overflow: hidden; height: 340px; }
body .mosaique .m-large { grid-column: 1 / -1; height: 520px; }
body .mosaique img { width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.7,.2,1); }
body .mosaique .elementor-widget-image:hover img { transform: scale(1.05); }

/* ---------- logos du groupe ---------- */
body .e-con.logos { display: flex; flex-direction: row; justify-content: center; align-items: center; flex-wrap: wrap; gap: clamp(40px, 9vw, 140px); padding: 0 var(--marge); }
body .logos .elementor-widget-image { width: auto; }
body .logos img { height: 110px; width: auto; filter: grayscale(1) contrast(1.25); opacity: .8; transition: filter .4s, opacity .4s; }
body .logos a:hover img { filter: none; opacity: 1; }

/* ---------- partenaires techniques (bande défilante) ---------- */
body .e-con.partenaires-defile { position: relative; display: block; max-width: var(--large); margin: 0 auto; padding: 0 70px; }
body .e-con.partenaires-piste {
  display: flex; flex-direction: row; flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x mandatory;
  scroll-behavior: smooth; scrollbar-width: none;
}
body .e-con.partenaires-piste::-webkit-scrollbar { display: none; }
body .partenaires-piste .partenaire { flex: 0 0 20%; max-width: 20%; scroll-snap-align: start; display: grid; place-items: center; height: 120px; padding: 0 24px; }
body .partenaires-piste .partenaire img { max-height: 64px; width: auto; max-width: 100%; margin: 0 auto; filter: grayscale(1); opacity: .6; transition: filter .4s, opacity .4s; }
body .partenaires-piste .partenaire:hover img { filter: none; opacity: 1; }
body .partenaires-btn { position: absolute; top: 50%; transform: translateY(-50%); }
body .partenaires-btn.icone-gauche { left: 10px; }
body .partenaires-btn.icone-droite { right: 10px; }
body .partenaires-btn .elementor-button { color: var(--gris); }
body .partenaires-btn .elementor-button:hover { color: var(--noir); }
body .partenaires-btn .elementor-button::before { width: 12px; height: 22px; }
body .partenaires-btn.icone-gauche .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M11 1L1 11l10 10' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M11 1L1 11l10 10' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); }
body .partenaires-btn.icone-droite .elementor-button::before { -webkit-mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M1 1l10 10L1 21' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); mask-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 22'%3E%3Cpath d='M1 1l10 10L1 21' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E"); }
body.elementor-editor-active .e-con.partenaires-piste { flex-wrap: wrap; }
@media (max-width: 1024px) { body .partenaires-piste .partenaire { flex-basis: 33.333%; max-width: 33.333%; } }
@media (max-width: 767px) {
  body .e-con.partenaires-defile { padding: 0 44px; }
  body .partenaires-piste .partenaire { flex-basis: 50%; max-width: 50%; padding: 0 12px; }
  body .partenaires-btn.icone-gauche { left: 0; } body .partenaires-btn.icone-droite { right: 0; }
}

/* ---------- actualités (shortcode [batcor_actus]) ---------- */
body .e-con.actus { overflow: hidden; }
body .e-con.actus-tete { max-width: var(--large); margin: 0 auto 60px; padding: 0 var(--marge); display: flex; flex-direction: row; justify-content: space-between; align-items: flex-end; gap: 30px; }
body .e-con.actus-tete > .elementor-widget { width: auto; }
.actus-piste {
  --bord: max(var(--marge), calc((100% - var(--large)) / 2 + var(--marge)));
  list-style: none; margin: 0;
  display: grid; grid-auto-flow: column; grid-auto-columns: min(42vw, 600px); gap: 30px;
  padding: 0 var(--bord) 10px; scroll-padding-inline: var(--bord);
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; cursor: grab;
}
.actus-piste::-webkit-scrollbar { display: none; }
.actus-piste.tire { cursor: grabbing; scroll-snap-type: none; }
.actus-grille { list-style: none; margin: 0 auto; padding: 0 var(--marge); max-width: var(--large); display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
.carte { background: var(--blanc); scroll-snap-align: start; padding-bottom: 34px; }
.carte-img { position: relative; overflow: hidden; height: 400px; }
.actus-grille .carte-img { height: 300px; }
.carte-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.7,.2,1); pointer-events: none; }
.carte:hover .carte-img img { transform: scale(1.05); }
.etiquette { position: absolute; left: 0; bottom: 0; background: var(--noir); color: var(--blanc); font: 600 10px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; padding: 10px 14px 8px; }
body .carte .carte-titre { font-size: 22px; line-height: 1.35; margin: 26px 30px 0; }
body .carte .carte-titre a:hover { color: var(--bleu); }
body .carte .carte-extrait { font-size: 13px; margin: 12px 30px 0; color: var(--gris); }

/* ---------- deux colonnes : image + texte ---------- */
body .e-con.duo { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
body .e-con.duo.inverse > .duo-img { order: 2; }
body .duo .duo-img { height: 560px; overflow: hidden; }
body .duo .duo-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; }
body .e-con.duo-texte { display: block; }
body .duo-texte :is(h2, h3) { font-size: 25px; line-height: 1.3; margin-top: 16px; }
body .duo-texte .filet-g::after, body .e-con.duo-texte > .elementor-widget-heading::after { content: ""; display: block; width: 60px; margin: 22px 0 0; border-top: 2px dotted var(--noir); }
body .duo-texte .texte p { margin-top: 18px; line-height: 1.85; }
body .duo-texte .texte p:first-child { margin-top: 26px; }
body .duo-texte .btn { margin-top: 34px; }

/* ---------- trio (valeurs, entités) ---------- */
body .e-con.trio { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: repeat(3, 1fr); gap: 30px; }
body .e-con.trio-item { display: block; background: var(--blanc); padding: 50px 40px; text-align: center; }
body .bande-blanche .e-con.trio-item { background: var(--fond); }
body .trio-item .numero p { font: 200 54px/1 var(--f-titre); color: var(--noir); }
body .trio-item :is(h3, h2) { font-size: 22px; line-height: 1.35; margin-top: 22px; }
body .trio-item .texte p { margin-top: 16px; font-size: 14px; line-height: 1.8; }
body .trio-item .trio-logo img { height: 120px; width: auto; margin: 0 auto; }
body .trio-item .btn { margin-top: 28px; }

/* ---------- formules ---------- */
body .e-con.formules { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; background: rgba(255,255,255,.08); }
body .e-con.formule { display: block; background: var(--anthracite); padding: 50px 34px; }
body .formule .numero p { font: 600 12px/1 var(--f-sur); letter-spacing: 1px; color: var(--bleu); }
body .formule :is(h3, h2) { color: var(--blanc); font-size: 22px; line-height: 1.3; margin-top: 18px; }
body .formule .texte p { color: rgba(255,255,255,.6); font-size: 14px; margin-top: 14px; line-height: 1.8; }
body .e-con.bande-sombre { background: var(--noir); }

/* ---------- grille de services ---------- */
body .e-con.grille-services { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: repeat(3, 1fr); gap: 50px 30px; }
body .e-con.service { display: block; }
body .service .service-img { height: 260px; overflow: hidden; }
body .service .service-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 1.2s cubic-bezier(.2,.7,.2,1); }
body .service:hover .service-img img { transform: scale(1.05); }
body .service .service-nom :is(h3, h2) { background: var(--noir); color: var(--blanc); font: 600 12px/1.4 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; padding: 20px 24px 18px; }
body .service .service-nom span { color: var(--bleu); margin-right: 6px; }
body .service .texte p { margin-top: 18px; font-size: 14px; line-height: 1.8; }

/* ---------- bandeau image ---------- */
body .e-con.bandeau { position: relative; display: block; height: 320px; overflow: hidden; background: var(--noir); }
body .bandeau .bandeau-img { position: absolute; inset: 0; width: 100%; height: 100%; }
body .bandeau .bandeau-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; opacity: .55; }
body .e-con.bandeau-texte { position: relative; z-index: 1; height: 100%; display: flex; align-items: center; justify-content: center; text-align: center; padding: 0 var(--marge); }
body .bandeau-texte :is(h2, h3) { color: var(--blanc); font-size: clamp(28px, 3.4vw, 46px); font-weight: 200; line-height: 1.2; }

/* ---------- renvois vers les autres métiers ---------- */
body .e-con.renvois { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; gap: 30px; }
body .e-con.renvoi { position: relative; display: block; height: 360px; overflow: hidden; background: var(--noir); }
body .renvoi .renvoi-img { position: absolute; inset: 0; width: 100%; height: 100%; }
body .renvoi .renvoi-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; opacity: .5; transition: transform 1.4s cubic-bezier(.2,.7,.2,1), opacity .6s; }
body .renvoi:hover .renvoi-img img { transform: scale(1.04); opacity: .4; }
body .e-con.renvoi-texte { position: relative; z-index: 1; height: 100%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 0 40px; }
body .renvoi-texte :is(h2, h3) { color: var(--blanc); font-size: 30px; font-weight: 300; }
body .renvoi-texte .texte p { color: rgba(255,255,255,.75); max-width: 640px; margin: 16px auto 28px; font-size: 14px; line-height: 1.8; }

/* ---------- schéma du groupe ---------- */
body .schema { max-width: 760px; margin: 0 auto 90px; padding: 0 var(--marge); }
body .schema img { width: 100%; height: auto; margin: 0 auto; }

/* ---------- projets (page) ---------- */
body .e-con.filtres { display: flex; flex-direction: row; justify-content: center; flex-wrap: wrap; gap: 8px; margin: 0 auto 50px; padding: 0 var(--marge); }
body .filtre .elementor-button { background: none; color: var(--texte); border: 1px solid #e3e3e3; border-radius: 0; font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; padding: 15px 22px 13px; transition: all .25s; }
body .filtre .elementor-button:hover, body .filtre.actif .elementor-button { background: var(--noir); color: var(--blanc); border-color: var(--noir); }
body .e-con.projets-grille { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }
body .e-con.projet-carte { position: relative; display: block; height: 460px; overflow: hidden; }
body .e-con.projet-carte.large { grid-column: span 2; }
body .e-con.projet-carte.cache { display: none; }
body .e-con.projet-carte::after { content: ""; position: absolute; inset: 0; z-index: 1; background: linear-gradient(rgba(0,0,0,0) 45%, rgba(0,0,0,.6)); transition: background .4s; }
body .e-con.projet-carte:hover::after { background: linear-gradient(rgba(0,0,0,.15) 0%, rgba(0,0,0,.7)); }
body .projet-carte .projet-img { position: absolute; inset: 0; width: 100%; height: 100%; }
body .projet-carte .projet-img img { width: 100%; height: 100%; max-width: none; object-fit: cover; transition: transform 1.4s cubic-bezier(.2,.7,.2,1); }
body .projet-carte:hover .projet-img img { transform: scale(1.05); }
body .projet-carte .e-con.projet-legende { bottom: 34px; }
body .projet-carte .projet-legende :is(h2, h3) { font-size: 22px; }

/* ---------- contact ---------- */
body .e-con.contact-duo { max-width: var(--large); margin: 0 auto; padding: 0 var(--marge); display: grid; grid-template-columns: 1fr 1.3fr; gap: 80px; align-items: start; }
body .coordonnees ul { list-style: none; margin: 30px 0 0; padding: 0; }
body .coordonnees li { padding: 18px 0; border-bottom: 1px solid #ececec; font-size: 15px; }
body .coordonnees li strong { display: block; font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; color: var(--gris); margin-bottom: 8px; }
body .coordonnees a:hover { color: var(--bleu); }
body .e-con.formulaire { display: block; background: var(--fond); padding: 50px; }
.wpcf7 .champs { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.wpcf7 .champ { margin: 0; }
.wpcf7 .champ.plein { grid-column: 1 / -1; }
.wpcf7 label { display: block; font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; color: var(--gris); margin-bottom: 10px; }
.wpcf7 .wpcf7-form-control-wrap { display: block; }
.wpcf7 input[type=text], .wpcf7 input[type=email], .wpcf7 input[type=tel], .wpcf7 select, .wpcf7 textarea {
  display: block; width: 100%; border: 1px solid #e3e3e3; border-radius: 0; background: var(--blanc);
  font: 400 14px/1.5 var(--f-texte); color: var(--noir); padding: 14px 16px; box-shadow: none;
}
.wpcf7 input:focus, .wpcf7 textarea:focus, .wpcf7 select:focus { outline: 0; border-color: var(--noir); }
.wpcf7 textarea { height: 150px; resize: vertical; }
.wpcf7 input[type=file] { font-size: 13px; }
.wpcf7 input.wpcf7-submit {
  margin-top: 26px; border: 0; border-radius: 0; background: var(--noir); color: var(--blanc); cursor: pointer;
  font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; padding: 19px 34px 17px; transition: background .3s;
}
.wpcf7 input.wpcf7-submit:hover { background: var(--bleu); }
.wpcf7 .wpcf7-spinner { display: none; }
.wpcf7 .wpcf7-not-valid-tip { font-size: 12px; color: #c0392b; margin-top: 6px; }
.wpcf7 form .wpcf7-response-output { margin: 22px 0 0; padding: 14px 18px; border: 1px solid var(--noir); font-size: 13px; }

/* ---------- article seul ---------- */
.article-batcor .heros { height: 70vh; }
.article-batcor .heros .heros-photo img { position: absolute; inset: 0; }
.article-corps { max-width: 780px; margin: 0 auto; padding: 90px var(--marge) 40px; font-size: 16px; line-height: 1.9; }
.article-corps p { margin: 0 0 22px; }
.article-corps h2 { font-size: 25px; line-height: 1.3; margin: 40px 0 16px; }
.article-retour { max-width: 780px; margin: 0 auto; padding: 0 var(--marge) 110px; }
.article-retour a { font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase; color: var(--noir); }
.article-retour a:hover { color: var(--bleu); }

/* ---------- pied de page ---------- */
body .e-con.pied { background: var(--anthracite); color: rgba(255,255,255,.62); display: block; }
body .e-con.pied-in { max-width: var(--large); margin: 0 auto; padding: 90px var(--marge) 70px; display: grid; grid-template-columns: 1.6fr 1fr 1fr 1fr; gap: 50px; }
body .e-con.pied-col, body .e-con.pied-marque { display: block; }
body .pied-marque .logo-pied img { height: 38px; width: auto; margin-bottom: 26px; }
body .pied-marque .texte p { max-width: 340px; font-size: 14px; }
body .pied .surtitre p { color: rgba(255,255,255,.45); margin-bottom: 22px; }
body .pied .pied-liste ul { list-style: none; margin: 0; padding: 0; }
body .pied .pied-liste li { font-size: 14px; margin-bottom: 10px; }
body .pied .pied-liste a:hover { color: var(--blanc); }
body .pied-reseaux .elementor-social-icons-wrapper { display: flex; gap: 12px; }
body .pied-reseaux .elementor-social-icon { width: 38px; height: 38px; display: grid; place-items: center; background: transparent; border: 1px solid rgba(255,255,255,.18); border-radius: 0; font-size: 15px; padding: 0; transition: background .25s, border-color .25s; }
body .pied-reseaux .elementor-social-icon svg { width: 15px; height: 15px; fill: var(--bleu); transition: fill .25s; }
body .pied-reseaux .elementor-social-icon:hover { background: var(--bleu); border-color: var(--bleu); }
body .pied-reseaux .elementor-social-icon:hover svg { fill: var(--blanc); }
body .pied-bas p { margin: 0; padding: 24px var(--marge); text-align: center; border-top: 1px solid rgba(255,255,255,.08); font: 400 12px/1.5 var(--f-sur); letter-spacing: .5px; color: rgba(255,255,255,.4); }

/* ---------- bouton WhatsApp (service client) ---------- */
/* Vert WhatsApp volontaire : c'est la couleur que les visiteurs reconnaissent. */
.whatsapp {
  position: fixed; z-index: 61; right: 24px; bottom: 24px;
  display: flex; align-items: center; height: 56px;
  background: #25d366; color: var(--blanc); text-decoration: none;
  box-shadow: 0 8px 24px rgba(0,0,0,.18); transition: background .25s;
}
.whatsapp:hover, .whatsapp:focus-visible { background: #1ebe5b; color: var(--blanc); }
.whatsapp-icone { width: 56px; height: 56px; display: grid; place-items: center; flex: 0 0 56px; }
.whatsapp-icone svg { width: 28px; height: 28px; fill: currentColor; }
.whatsapp-libelle {
  max-width: 0; overflow: hidden; white-space: nowrap;
  font: 600 11px/1 var(--f-sur); letter-spacing: 1px; text-transform: uppercase;
  transition: max-width .4s ease, padding .4s ease;
}
.whatsapp:hover .whatsapp-libelle, .whatsapp:focus-visible .whatsapp-libelle { max-width: 220px; padding-right: 20px; }
.whatsapp::after { /* pulsation discrète pour attirer l'œil */
  content: ""; position: absolute; inset: 0; border: 2px solid #25d366; pointer-events: none;
  animation: wa-pulse 2.6s ease-out 3s infinite;
}
@keyframes wa-pulse { from { transform: scale(1); opacity: .8; } to { transform: scale(1.35); opacity: 0; } }
@media (max-width: 767px) {
  .whatsapp { right: 16px; bottom: 16px; height: 52px; }
  .whatsapp-icone { width: 52px; height: 52px; flex-basis: 52px; }
  .whatsapp:hover .whatsapp-libelle { max-width: 0; padding: 0; }
  .haut { right: 21px; bottom: 80px; }
}

/* ---------- retour en haut ---------- */
.haut { position: fixed; z-index: 60; right: 31px; bottom: 92px; width: 42px; height: 42px; display: grid; place-items: center; background: rgba(26,26,26,.55); color: var(--blanc); border: 0; border-radius: 0; padding: 0; cursor: pointer; opacity: 0; visibility: hidden; transition: opacity .3s, visibility .3s, background .25s; }
.haut.visible { opacity: 1; visibility: visible; }
.haut:hover { background: var(--noir); }
.haut::before { content: ""; width: 12px; height: 16px; background: currentColor; -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M6 15V2M1 6l5-5 5 5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat; mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 16'%3E%3Cpath d='M6 15V2M1 6l5-5 5 5' fill='none' stroke='%23000' stroke-width='1.4'/%3E%3C/svg%3E") center / contain no-repeat; }

/* ---------- animation de chargement ---------- */
.prechargeur {
  --v: 1; /* multiplicateur de durée : 1 à la première visite, réduit ensuite */
  position: fixed; inset: 0; z-index: 9999; display: grid; place-items: center;
  background: var(--noir);
  transition: transform calc(.85s * var(--v)) cubic-bezier(.77,0,.18,1);
  /* filet de sécurité si le script ne s'exécute pas */
  animation: p-secours .5s 6s forwards;
}
.prechargeur.rapide { --v: .4; }
.prechargeur.sortie { transform: translateY(-100%); }
.prechargeur-logo { width: clamp(120px, 14vw, 170px); height: auto; overflow: visible; transition: transform calc(.7s * var(--v)) ease, opacity calc(.5s * var(--v)) ease; }
.prechargeur.sortie .prechargeur-logo { transform: translateY(-40px); opacity: 0; }
.p-cadre { fill: none; stroke: var(--blanc); stroke-width: 6; stroke-dasharray: 1; stroke-dashoffset: 1; animation: p-trace calc(.9s * var(--v)) cubic-bezier(.6,0,.3,1) forwards; }
.p-barre { fill: var(--blanc); transform-box: fill-box; transform-origin: left center; transform: scaleX(0); animation: p-pose calc(.5s * var(--v)) cubic-bezier(.2,.7,.2,1) forwards; }
.p-b1 { animation-delay: calc(.35s * var(--v)); }
.p-b2 { animation-delay: calc(.5s * var(--v)); }
.p-b3 { animation-delay: calc(.65s * var(--v)); }
.p-b4 { animation-delay: calc(.8s * var(--v)); }
.p-mot { opacity: 0; transform: translateY(14px); animation: p-monte calc(.5s * var(--v)) calc(1s * var(--v)) ease-out forwards; }
.p-trait { fill: var(--bleu); transform-box: fill-box; transform-origin: left center; transform: scaleX(0); animation: p-pose calc(.6s * var(--v)) calc(1.2s * var(--v)) cubic-bezier(.6,0,.3,1) forwards; }
@keyframes p-trace { to { stroke-dashoffset: 0; } }
@keyframes p-pose { to { transform: scaleX(1); } }
@keyframes p-monte { to { opacity: 1; transform: none; } }
@keyframes p-secours { to { opacity: 0; visibility: hidden; } }
body.elementor-editor-active .prechargeur { display: none; }
@media (prefers-reduced-motion: reduce) {
  .prechargeur .p-cadre { stroke-dashoffset: 0; }
  .prechargeur .p-barre, .prechargeur .p-trait { transform: none; }
  .prechargeur .p-mot { opacity: 1; transform: none; }
  .prechargeur.sortie { transform: none; opacity: 0; visibility: hidden; }
}

/* ---------- éditeur Elementor : tout afficher pour pouvoir tout modifier ---------- */
body.elementor-editor-active .e-con.diapo { height: auto; }
body.elementor-editor-active .e-con.diapo-slide,
body.elementor-editor-active .e-con.projet { position: relative; opacity: 1; visibility: visible; height: 80vh; min-height: 480px; }
body.elementor-editor-active .e-con.carrousel-piste { height: auto; }
body.elementor-editor-active .e-con.projet-carte.cache { display: block; }
body.elementor-editor-active .heros .heros-photo,
body.elementor-editor-active .diapo-img, body.elementor-editor-active .projet-img,
body.elementor-editor-active .bandeau-img, body.elementor-editor-active .renvoi-img { position: absolute !important; }

/* ---------- responsive ---------- */
body .btn .elementor-button { white-space: nowrap; }
@media (max-width: 1024px) {
  body .e-con.entete-in { padding: 0 24px; height: 72px; flex-wrap: nowrap; }
  /* HFE passe le widget en pleine largeur sous la tablette : le burger tomberait sous le logo */
  body .e-con.entete-in > .menu-nav { width: auto; max-width: none; flex: 0 0 auto; margin-left: auto; }
  body .menu-nav .hfe-nav-menu__toggle { margin: 0; }
  body .menu-nav nav.hfe-dropdown { position: fixed; top: 72px; left: 0; right: 0; width: 100vw; max-height: calc(100vh - 72px); overflow-y: auto; }
  body .logo img { height: 32px; }
  body .e-con.diapo::before { left: 56px; }
  body .diapo-reseaux { left: 28px; }
  body .e-con.diapo-texte { padding: 0 70px; }
  body .e-con.pied-in { grid-template-columns: 1fr 1fr; }
  .actus-piste { grid-auto-columns: 70vw; }
  .actus-grille { grid-template-columns: 1fr 1fr; }
  body .e-con.duo { gap: 50px; }
  body .e-con.grille-services, body .e-con.projets-grille { grid-template-columns: 1fr 1fr; }
  body .e-con.formules { grid-template-columns: 1fr 1fr; }
  body .e-con.trio { grid-template-columns: 1fr; }
  body .e-con.contact-duo { grid-template-columns: 1fr; gap: 50px; }
}
@media (max-width: 767px) {
  body .heros .heros-titre :is(h1, h2) { font-size: 34px; }
  body .e-con.diapo::before, body .diapo-reseaux { display: none; }
  body .e-con.diapo-texte { padding: 0 24px; }
  body .e-con.diapo-fleches { right: 50%; transform: translateX(50%); bottom: 100px; }
  body .e-con.diapo::after { bottom: 150px; }
  body .e-con.section { padding: 80px 0 90px; }
  body .e-con.carrousel-piste { height: 62vh; }
  body .carrousel-btn .elementor-button { width: 44px; height: 44px; }
  body .carrousel-btn.icone-gauche { left: calc(var(--marge) + 10px); }
  body .carrousel-btn.icone-droite { right: calc(var(--marge) + 10px); }
  body .e-con.mosaique { grid-template-columns: 1fr; gap: 14px; }
  body .mosaique .elementor-widget-image, body .mosaique .m-large { height: 260px; }
  body .logos img { height: 80px; }
  body .e-con.actus-tete { flex-direction: column; align-items: flex-start; }
  .actus-piste { grid-auto-columns: 84vw; gap: 16px; }
  .actus-grille { grid-template-columns: 1fr; }
  .carte-img, .actus-grille .carte-img { height: 260px; }
  body .carte .carte-titre, body .carte .carte-extrait { margin-left: 22px; margin-right: 22px; }
  body .e-con.pied-in { grid-template-columns: 1fr; gap: 40px; padding-top: 70px; }
  body .e-con.duo { grid-template-columns: 1fr; gap: 40px; }
  body .e-con.duo.inverse > .duo-img { order: 0; }
  body .duo .duo-img { height: 320px; }
  body .e-con.grille-services, body .e-con.projets-grille, body .e-con.formules { grid-template-columns: 1fr; }
  body .e-con.projet-carte.large { grid-column: auto; }
  body .e-con.projet-carte { height: 380px; }
  body .e-con.renvoi { height: 320px; }
  body .e-con.formulaire { padding: 30px 22px; }
  .wpcf7 .champs { grid-template-columns: 1fr; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}
