/* ---------- Police Sarabun hébergée sur le site (plus d'appel à Google Fonts) ---------- */
@font-face{font-family:'Sarabun';font-style:normal;font-weight:300;font-display:swap;src:url('../fonts/sarabun-latin-300-normal.woff2') format('woff2')}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/sarabun-latin-400-normal.woff2') format('woff2')}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/sarabun-latin-600-normal.woff2') format('woff2')}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/sarabun-latin-700-normal.woff2') format('woff2')}
@font-face{font-family:'Sarabun';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/sarabun-latin-800-normal.woff2') format('woff2')}

/* ==========================================================================
   RÉSOLUTION DRONE — styles.css
   Charte : orange sur sections sombres / bleu sur sections claires
   ========================================================================== */
:root{
  --noir:        #101010;   /* Noir anthracite (charte) */
  --noir-2:      #17171B;   /* Nuance grise des sections sombres */
  --noir-3:      #1E1E24;   /* Cartes et blocs sur fond sombre */
  --blanc:       #F0F0F0;   /* Blanc cassé (charte) */
  --blanc-2:     #E9E7E2;   /* Nuance des sections claires */
  --orange:      #FF6600;   /* Orange chantier (charte) — sections sombres */
  --bleu:        #0077AA;   /* Bleu technique (charte) — sections claires */
  --bleu-laser:  #007ACC;   /* Bleu laser — liens / détails */
  --gris:        #8C8C8C;   /* Gris médium (charte) */
  --gris-fonce:  #3C3C3C;   /* Gris foncé (charte) — filets */
  --maxw: 1180px;
  --pad: clamp(1.25rem, 4vw, 3rem);
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
}
body{
  font-family:'Sarabun',system-ui,sans-serif;
  background:var(--noir);
  color:var(--blanc);
  font-size:1.0625rem;
  line-height:1.7;
  -webkit-font-smoothing:antialiased;
}
img{max-width:100%;display:block}
a{color:inherit}
ul{padding-left:1.2em}
:focus-visible{outline:2px solid var(--orange);outline-offset:3px}
.section--light :focus-visible{outline-color:var(--bleu)}

.wrap{max-width:var(--maxw);margin:0 auto;padding-left:var(--pad);padding-right:var(--pad)}

/* ---------- Typographie ---------- */
h1,h2,h3{line-height:1.15;font-weight:800}
.eyebrow{
  display:block;
  font-size:.78rem;font-weight:600;
  letter-spacing:.22em;text-transform:uppercase;
  color:var(--gris);
  margin-bottom:.9rem;
}
.h2{
  font-size:clamp(1.9rem,4vw,2.7rem);
  color:var(--orange);
  margin-bottom:1.6rem;
}
.section--light .h2{color:var(--bleu)}
.lead{font-size:clamp(1.05rem,1.6vw,1.2rem);max-width:46em}

/* ---------- Header ---------- */
.header{
  position:fixed;inset:0 0 auto 0;z-index:100;
  transition:background .35s ease, box-shadow .35s ease;
}
.header.is-scrolled{
  background:rgba(16,16,16,.92);
  backdrop-filter:blur(8px);
  box-shadow:0 1px 0 var(--gris-fonce);
}
.header__inner{
  max-width:var(--maxw);margin:0 auto;
  padding:.85rem var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:2rem;
}
.brand{display:flex;align-items:center;text-decoration:none;flex-shrink:0} /* le logo ne se déforme jamais */
/* Logo détouré incluant le nom de la marque (assets/logo-site-web3.png, 852x120) */
.brand img{height:44px;width:auto;display:block}
@media (max-width:480px){.brand img{height:36px}}
.nav{display:flex;align-items:center;gap:clamp(1rem,2.5vw,2.2rem)}
.nav a{
  text-decoration:none;font-weight:600;font-size:.95rem;white-space:nowrap;
  padding:.35rem 0;position:relative;color:var(--blanc);
}
.nav a::after{
  content:"";position:absolute;left:0;bottom:0;height:2px;width:0;
  background:var(--orange);transition:width .25s ease;
}
.nav a:hover::after,.nav a[aria-current="page"]::after{width:100%}
.nav .btn{margin-left:.5rem;padding:.55rem 1.3rem}
.nav .btn::after{display:none}

.burger{display:none;background:none;border:0;cursor:pointer;padding:.5rem}
.burger span{
  display:block;width:26px;height:2px;background:var(--blanc);
  margin:6px 0;transition:transform .3s ease,opacity .3s ease;
}
.nav-open .burger span:nth-child(1){transform:translateY(8px) rotate(45deg)}
.nav-open .burger span:nth-child(2){opacity:0}
.nav-open .burger span:nth-child(3){transform:translateY(-8px) rotate(-45deg)}

/* Menu « burger » : seuil relevé de 900 à 1200 px depuis l'ajout de « BTP & Génie civil »
   (au-dessous, les 5 entrées ne tiennent plus sur une ligne à côté du logo) */
@media (max-width:1200px){
  .burger{display:block;z-index:110;position:relative}
  .nav{
    position:fixed;inset:0;background:var(--noir);
    flex-direction:column;justify-content:center;gap:2rem;
    opacity:0;pointer-events:none;transition:opacity .3s ease;
    z-index:105;
  }
  .nav-open .nav{opacity:1;pointer-events:auto}
  .nav a{font-size:1.25rem}
  /* Le backdrop-filter du header ferait du header le référent du panneau
     fixe : on le neutralise tant que le menu est ouvert. */
  body.nav-open .header{backdrop-filter:none;-webkit-backdrop-filter:none}
  /* La page ne défile pas derrière le menu ouvert */
  body.nav-open{overflow:hidden}
}

/* ---------- Boutons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;
  padding:.8rem 2rem;line-height:1;
  border:2px solid var(--orange);
  color:var(--orange);
  font-weight:700;font-size:1rem;letter-spacing:.03em;
  text-decoration:none;background:transparent;cursor:pointer;
  transition:background .25s ease,color .25s ease;
  font-family:inherit;
}
.btn:hover{background:var(--orange);color:var(--noir)}
.btn--ghost{border-color:var(--gris-fonce);color:var(--blanc)}
.btn--ghost:hover{background:var(--blanc);border-color:var(--blanc);color:var(--noir)}
.section--light .btn{border-color:var(--bleu);color:var(--bleu)}
.section--light .btn:hover{background:var(--bleu);color:var(--blanc)}

/* ---------- Hero accueil ---------- */
.hero{
  position:relative;min-height:100svh;
  display:flex;align-items:center;
  overflow:hidden;
}
.hero__media{position:absolute;inset:0;z-index:0}
.hero__media video,
.hero__media canvas{width:100%;height:100%;object-fit:cover;display:block}
.hero::after{
  content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(to top, rgba(16,16,16,.9) 0%, rgba(16,16,16,.52) 45%, rgba(16,16,16,.6) 100%);
}
.hero__content{position:relative;z-index:2;padding-top:6rem;padding-bottom:4rem}
.hero__content--center{
  text-align:center;
  display:flex;flex-direction:column;align-items:center;
}
.hero__content--center h1{margin-left:auto;margin-right:auto}
.hero__content--center p{margin-left:auto;margin-right:auto}
.hero__content--center .hero__actions{justify-content:center}
.hero h1{
  font-size:clamp(2.3rem,6vw,4.4rem);max-width:14em;margin-bottom:1.4rem;
  text-shadow:0 1px 3px rgba(16,16,16,.85), 0 4px 22px rgba(16,16,16,.75);
}
.hero h1 em{font-style:normal;color:var(--orange)}
.hero p{
  font-size:clamp(1.05rem,1.8vw,1.25rem);
  max-width:38em;color:#E9E7E2;margin-bottom:2.4rem;
  text-shadow:0 1px 2px rgba(16,16,16,.9), 0 3px 14px rgba(16,16,16,.8);
}
.hero__actions{display:flex;flex-wrap:wrap;gap:1rem}
.hero__scroll{
  position:absolute;left:50%;bottom:1.6rem;transform:translateX(-50%);
  z-index:2;color:var(--gris);font-size:.75rem;letter-spacing:.25em;text-transform:uppercase;
  text-decoration:none;
}

/* ---------- Hero des pages services ---------- */
.page-hero{
  background:var(--noir);
  padding:8.1rem 0 3.6rem;
}
.page-hero h1{font-size:clamp(2.2rem,5vw,3.6rem);margin-bottom:.6rem}
.page-hero .tagline{
  font-size:clamp(1.15rem,2vw,1.5rem);font-weight:600;color:var(--orange);
}

/* ---------- Sections ---------- */
.section{padding:clamp(4rem,9vw,7.5rem) 0}
.section--dark{background:var(--noir)}
.section--dark-2{background:var(--noir-2)}
.section--light{background:var(--blanc);color:#1B1B1B}
.section--light-2{background:var(--blanc-2);color:#1B1B1B}
.section--light .eyebrow,.section--light-2 .eyebrow{color:#7C7A75}
.section--light .lead,.section--light-2 .lead{color:#333}
.section--light-2 .h2{color:var(--bleu)}

/* ---------- Intro des pages services ---------- */
.intro{padding:clamp(3.5rem,7vw,5.5rem) 0}
.intro__body{max-width:52em}
/* Variante « texte d'introduction » plus grand (Carrières, Génie civil) ; largeur réduite pour garder la même longueur de ligne */
.intro__body--grand{max-width:46em;font-size:clamp(1.15rem,1.6vw,1.2rem)}
.intro__body p{margin-bottom:1.2rem;color:#2A2A2A;text-align:justify}
.intro__body ul{margin:0 0 1.2rem;color:#2A2A2A}
.intro__body li{margin-bottom:.5rem;text-align:justify}
.intro__body strong{color:var(--bleu)}

/* ---------- Damier (pages services) ---------- */
.damier{
  display:grid;grid-template-columns:1fr 1fr;
  min-height:min(88vh,760px);
}
.damier__media{position:relative;overflow:hidden;background:#DDDBD6}
.damier__texte{
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(2.5rem,5vw,4.5rem);
}
.damier__texte > *{width:100%;max-width:34rem;margin-left:0;margin-right:auto}
.damier__texte h2{
  font-size:clamp(1.7rem,3.2vw,2.4rem);color:var(--bleu);
  margin-bottom:1.4rem;text-align:left;
}
.damier__texte p{margin-bottom:1.1rem;color:#2A2A2A;text-align:justify}
.damier__texte ul{margin:0 0 1.1rem;color:#2A2A2A}
.damier__texte li{margin-bottom:.6rem;text-align:justify}
.damier__texte strong{color:#1B1B1B}
.damier--inverse .damier__media{order:2}
.damier--inverse .damier__texte{order:1}
.damier--inverse .damier__texte > *{margin-left:auto;margin-right:0}
@media (max-width:900px){
  .damier{grid-template-columns:1fr;min-height:0}
  .damier__media{order:0!important;min-height:320px}
  .damier__texte{order:1!important}
  .damier__texte > *{margin-left:0!important;margin-right:auto!important}
}

/* ---------- Diaporama ---------- */
.slideshow{position:absolute;inset:0}
@media (max-width:900px){.slideshow{position:relative;height:320px}}
.slide{
  position:absolute;inset:0;opacity:0;transition:opacity .8s ease;
  display:flex;align-items:center;justify-content:center;
}
.slide.is-active{opacity:1}
.slide img,
.slide video{
  position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;object-position:center;
}
.slide video{width:100%;height:100%;object-fit:cover}
.slide__ph{ /* étiquette visible tant que l'image n'existe pas */
  font-size:.85rem;color:#8B8984;letter-spacing:.05em;
  border:1px dashed #B5B3AE;padding:.5rem 1rem;background:rgba(255,255,255,.5);
}
.slide.has-img .slide__ph{display:none}
.slideshow__dots{
  position:absolute;bottom:1.1rem;left:50%;transform:translateX(-50%);
  display:flex;gap:.55rem;z-index:5;
}
.slideshow__dots button{
  width:10px;height:10px;border-radius:50%;border:0;cursor:pointer;
  background:rgba(16,16,16,.25);transition:background .25s ease;
}
.slideshow__dots button.is-active{background:var(--bleu)}
.slideshow__arrow{
  position:absolute;top:50%;transform:translateY(-50%);z-index:5;
  background:rgba(16,16,16,.35);border:0;color:#fff;cursor:pointer;
  width:40px;height:40px;font-size:1.2rem;line-height:1;
  transition:background .25s ease;
}
.slideshow__arrow:hover{background:var(--bleu)}
.slideshow__arrow--prev{left:.8rem}
.slideshow__arrow--next{right:.8rem}

/* ---------- Services (accueil) ---------- */
.services__grid{
  display:grid;gap:1.2rem;
  grid-template-columns:repeat(auto-fit,minmax(250px,1fr));
  margin-top:2.5rem;
}
.card{
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  min-height:340px;padding:1.8rem;
  background:var(--noir-3);
  border:1px solid var(--gris-fonce);
  text-decoration:none;overflow:hidden;
  transition:border-color .3s ease,transform .3s ease;
}
.card:hover{border-color:var(--orange);transform:translateY(-4px)}
.card__motif{position:absolute;inset:0;opacity:.5;transition:opacity .3s ease,transform .6s ease}
.card:hover .card__motif{opacity:.85;transform:scale(1.05)}
.card h3{font-size:1.35rem;margin-bottom:.5rem;position:relative;color:var(--blanc)}
.card p{font-size:.95rem;color:#C9C7C2;position:relative;margin-bottom:1.1rem;text-align:justify}
.card__link{position:relative;color:var(--orange);font-weight:700;font-size:.9rem;letter-spacing:.05em}
.card__link::after{content:" →";transition:margin-left .2s ease}
.card:hover .card__link::after{margin-left:.35rem}

/* ---------- Vision ---------- */
.vision p{max-width:52em;margin-bottom:1.3rem;font-size:clamp(1.05rem,1.7vw,1.25rem);color:#D8D6D1;text-align:justify}
.vision strong{color:var(--orange)}

/* ---------- Valeurs ---------- */
.valeurs__grid{
  display:grid;gap:2.5rem;
  grid-template-columns:repeat(auto-fit,minmax(260px,1fr));
  margin-top:2.5rem;
}
.valeur svg{width:44px;height:44px;stroke:var(--orange);fill:none;stroke-width:1.6;margin-bottom:1rem}
.valeur h3{font-size:1.25rem;margin-bottom:.6rem}
.valeur p{color:#C9C7C2;font-size:.98rem;text-align:justify}

/* ---------- Méthodologie ---------- */
.frise{
  display:grid;gap:2.2rem;
  grid-template-columns:repeat(5,1fr);
  margin:3rem 0 3.5rem;
  counter-reset:etape;
  list-style:none;padding:0;
}
.etape{position:relative;padding-top:1.4rem}
.etape::before{
  content:"";position:absolute;top:0;left:0;right:-2.2rem;height:2px;
  background:var(--gris-fonce);
}
.etape:last-child::before{right:0}
.etape::after{
  content:"";position:absolute;top:-5px;left:0;width:12px;height:12px;
  border-radius:50%;background:var(--orange);
}
.etape__num{counter-increment:etape;font-size:.8rem;font-weight:700;color:var(--orange);letter-spacing:.15em}
.etape__num::before{content:"ÉTAPE 0" counter(etape)}
.etape h3{font-size:1.08rem;margin:.3rem 0 .4rem;color:var(--blanc)}
.etape p{font-size:.92rem;color:#B9B7B2;line-height:1.55;text-align:justify}
.section--light .etape::before{background:#CFCDC8}
.section--light .etape::after{background:var(--bleu)}
.section--light .etape__num{color:var(--bleu)}
.section--light .etape h3{color:#1B1B1B}
.section--light .etape p{color:#4A4A4A}
@media (max-width:900px){
  .frise{grid-template-columns:1fr;gap:1.6rem}
  .etape{padding-top:0;padding-left:1.8rem}
  .etape::before{top:0;bottom:-1.6rem;left:5px;right:auto;width:2px;height:auto}
  .etape:last-child::before{bottom:0}
  .etape::after{top:4px;left:0}
}
.fiabilite{
  border-left:4px solid var(--orange);
  background:var(--noir-2);
  padding:1.8rem 2rem;max-width:60em;
}
.fiabilite h3{color:var(--orange);font-size:1.2rem;margin-bottom:.7rem}
.fiabilite p{color:#C9C7C2;font-size:1rem;margin-bottom:.7rem;text-align:justify}
.fiabilite p:last-child{margin-bottom:0}
.section--light .fiabilite{border-left-color:var(--bleu);background:var(--blanc-2)}
.section--light .fiabilite h3{color:var(--bleu)}
.section--light .fiabilite p{color:#333}

/* ---------- Encart vidéo (pages services) ---------- */
/* ---------- Vidéo dans un damier (remplace le diaporama) ---------- */
.damier__video{position:absolute;inset:0;overflow:hidden;background:#101010}
@media (max-width:900px){.damier__video{position:relative;height:320px}}
.damier__video iframe{
  position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:auto;height:auto;min-width:100%;min-height:100%;
  aspect-ratio:16/9;border:0;pointer-events:none;
}

/* ---------- Page Mentions légales ---------- */
.legal{padding:4.5rem 0 6rem}
.legal__body{max-width:820px}
.legal h2{
  font-size:clamp(1.4rem,2.6vw,1.8rem);color:var(--bleu);
  margin:2.6rem 0 1rem;
}
.legal h2:first-child{margin-top:0}
.legal h3{font-size:1.08rem;margin:1.8rem 0 .6rem;color:#1B1B1B}
.legal p{margin-bottom:.9rem;text-align:justify}
.legal ul{margin:0 0 1rem;padding-left:1.3em}
.legal li{margin-bottom:.5rem;text-align:justify}
.legal a{color:var(--bleu-laser)}

/* Modèle 3D Sketchfab dans un damier (interactif, contrairement à la vidéo) */
.damier__sketchfab{position:absolute;inset:0;overflow:hidden;background:#101010}
@media (max-width:900px){.damier__sketchfab{position:relative;height:320px}}
.damier__sketchfab iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;
}

/* ---------- Panorama 360° (chapelle) ---------- */
.pano-lead{margin-top:2.2rem}
.pano-feature{width:100%}
.pano-feature__frame{
  position:relative;width:100%;aspect-ratio:16/9;
  background:#101010;
}
@media (max-width:900px){.pano-feature__frame{aspect-ratio:4/3}}
/* Bouton de démarrage 360° personnalisé */
.pano-feature__frame .pnlm-preview-img{filter:brightness(.68)}
.pano-feature__frame .pnlm-load-button{
  width:auto;height:auto;margin:0;
  transform:translate(-50%,-50%);
  background:rgba(16,16,16,.88);
  border:1px solid rgba(240,240,240,.6);
  border-radius:0;
  padding:1.25rem 2rem;
  color:#F0F0F0;
  transition:color .25s ease,border-color .25s ease,background .25s ease;
}
.pano-feature__frame .pnlm-load-button:hover{
  background:rgba(16,16,16,.96);
  border-color:#FF6600;
  color:#FF6600;
}
.pano-feature__frame .pnlm-load-button p{
  display:block;margin:0;font-size:inherit;color:inherit;
}
.pano-btn{display:flex;flex-direction:column;align-items:center;gap:.7rem}
.pano-btn__icon{width:112px;height:auto;display:block}
.pano-btn__label{
  font-family:'Sarabun',sans-serif;font-size:.9rem;font-weight:700;
  letter-spacing:.14em;text-transform:uppercase;white-space:nowrap;
}
@media (max-width:600px){
  .pano-feature__frame .pnlm-load-button{padding:.9rem 1.4rem}
  .pano-btn__icon{width:88px}
  .pano-btn__label{font-size:.75rem}
}

/* ---------- Modèle 3D interactif (Sketchfab) ---------- */
.model3d{padding:clamp(3.5rem,7vw,5.5rem) 0}
.model3d__title{
  font-size:clamp(1.7rem,3.2vw,2.4rem);color:var(--bleu);
  margin-bottom:1.2rem;
}
.model3d__lead{max-width:52em;margin-bottom:2rem;color:#2A2A2A;text-align:justify}
.model3d__frame{
  position:relative;width:100%;aspect-ratio:16/9;
  background:#101010;
}
.model3d__frame iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;
}
.model3d__credit{
  margin-top:.8rem;font-size:.85rem;color:#7C7A75;
}
@media (max-width:900px){.model3d__frame{aspect-ratio:4/3}}

.video-feature{margin-top:2rem;width:100%}
.video-feature__frame{
  position:relative;width:100%;height:0;
  padding-bottom:56.25%; /* ratio 16:9, compatible tous navigateurs */
  background:#101010;
}
.video-feature__frame iframe{
  position:absolute;top:0;left:0;width:100%;height:100%;border:0;
}

/* ---------- Bandeau CTA (bas de pages services) ---------- */
.cta-band{background:var(--noir);text-align:center;padding:clamp(3.5rem,7vw,5.5rem) 0}
.cta-band h2{font-size:clamp(1.7rem,3.5vw,2.4rem);color:var(--blanc);margin-bottom:1.6rem}
.cta-band h2 em{font-style:normal;color:var(--orange)}

/* ---------- Contact ---------- */
.contact__grid{
  display:grid;gap:3.5rem;grid-template-columns:1fr 1.2fr;margin-top:2.5rem;
}
@media (max-width:820px){.contact__grid{grid-template-columns:1fr}}
.contact__infos p{color:#C9C7C2;margin-bottom:.2rem}
.contact__infos .contact__nom{font-weight:700;color:var(--blanc);font-size:1.15rem;margin-bottom:.8rem}
.contact__infos a{color:var(--orange);text-decoration:none}
.contact__infos a:hover{text-decoration:underline}
.socials{display:flex;gap:1.2rem;margin-top:1.8rem}
.socials a{color:var(--gris);transition:color .25s ease}
.socials a:hover{color:var(--orange)}
.socials svg{width:26px;height:26px;fill:currentColor}

.form label{
  display:block;font-size:.85rem;font-weight:600;letter-spacing:.08em;
  text-transform:uppercase;color:var(--gris);margin-bottom:.4rem;
}
.form input,.form textarea{
  width:100%;background:transparent;border:0;border-bottom:1px solid var(--gris-fonce);
  color:var(--blanc);font-family:inherit;font-size:1rem;
  padding:.6rem 0;margin-bottom:1.8rem;
  transition:border-color .25s ease;
}
.form input:focus,.form textarea:focus{outline:none;border-bottom-color:var(--orange)}
.form textarea{min-height:120px;resize:vertical}
/* Honeypot anti-spam : sorti de l'écran, jamais affiché */
.form__hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;opacity:0}
.form__rgpd{
  font-size:.82rem;line-height:1.55;color:var(--gris);
  margin:1.1rem 0 1.4rem;
}
.form__rgpd a{color:var(--blanc)}
.form__notice{
  padding:.85rem 1.1rem;margin-bottom:1.2rem;
  font-weight:600;font-size:.95rem;
  border-left:3px solid var(--orange);background:rgba(255,102,0,.08);
}
.form__notice.is-error{border-left-color:#D64545;background:rgba(214,69,69,.1)}

/* ---------- Partenaires ----------
   Au repos : silhouettes claires, sans fond, sur la section sombre.
   Au survol : chaque logo retrouve ses couleurs d'origine, sans pastille. */
.partenaires__grid{
  list-style:none;padding:0;
  margin-top:3rem;
  display:flex;flex-wrap:wrap;justify-content:center;
  gap:clamp(1.2rem,3vw,2.6rem);
  align-items:stretch;
}
.partenaires__grid li{flex:1 1 190px;max-width:240px}
.partenaires__grid a{
  position:relative;
  display:flex;align-items:center;justify-content:center;
  height:100%;min-height:110px;padding:.6rem;
  transition:transform .3s ease;
}
.partenaires__grid a:hover,
.partenaires__grid a:focus-visible{transform:translateY(-4px)}
.partenaires__grid img{
  max-height:76px;width:auto;max-width:100%;
  opacity:.72;
  transition:filter .3s ease,opacity .3s ease;
}
.partenaires__grid a:hover img,
.partenaires__grid a:focus-visible img{opacity:1}
/* Logos sombres/couleur : inversés en clair au repos */
.partenaires__grid img.logo--invert{
  filter:invert(1) grayscale(1) brightness(1.6);
}
/* Logos déjà clairs (Isle-sur-la-Sorgue) ou à dominante claire (Colas) :
   simple désaturation éclaircie au repos, sans inversion */
.partenaires__grid img.logo--gris{
  filter:grayscale(1) brightness(1.35);
}
/* Survol : filtre levé -> vraies couleurs (sauf les images de repos à fondu croisé) */
.partenaires__grid a:hover img.logo--invert:not(.logo--repos),
.partenaires__grid a:focus-visible img.logo--invert:not(.logo--repos),
.partenaires__grid a:hover img.logo--gris,
.partenaires__grid a:focus-visible img.logo--gris,
.partenaires__grid a:hover img.logo--fin,
.partenaires__grid a:focus-visible img.logo--fin{filter:none}
/* Logos à traits fins (Atelier Khai) : l'inversion éteindrait les filets dorés.
   Simple éclaircissement + opacité de repos relevée pour que le tracé tienne. */
.partenaires__grid img.logo--fin{filter:grayscale(1) brightness(1.8);opacity:.85}
/* Logos verticaux ou quasi carrés : plus de hauteur, pour un poids optique
   comparable à celui des logos horizontaux. */
.partenaires__grid img.logo--portrait{max-height:112px}
/* JPG sans transparence : le mode screen efface le noir de l'image dans la
   section sombre. Ministère = original inversé par filtre ; Direction du
   Patrimoine = asset déjà livré en négatif (fond noir), donc sans filtre. */
.partenaires__grid img.logo--jpg{mix-blend-mode:screen}
/* Gréolières : fondu croisé entre l'original (repos) et la version
   dont la devise est blanche (survol) */
.partenaires__grid img.logo--survol{
  position:absolute;left:50%;top:50%;
  transform:translate(-50%,-50%);
  max-width:calc(100% - 1.2rem);
  opacity:0;
}
.partenaires__grid a:hover img.logo--repos,
.partenaires__grid a:focus-visible img.logo--repos{opacity:0}
.partenaires__grid a:hover img.logo--survol,
.partenaires__grid a:focus-visible img.logo--survol{opacity:1}
@media (max-width:820px){
  .partenaires__grid{gap:1.4rem}
  .partenaires__grid li{flex:1 1 40%;max-width:none}
  .partenaires__grid a{min-height:90px}
  .partenaires__grid img{max-height:60px}
  .partenaires__grid img.logo--portrait{max-height:88px}
}
@media (max-width:420px){
  .partenaires__grid li{flex:1 1 100%}
}

/* ---------- Footer ---------- */
.footer{border-top:1px solid var(--gris-fonce);padding:1.6rem 0;font-size:.9rem;color:var(--gris);background:var(--noir)}
.footer a{color:var(--orange);text-decoration:none}
.footer a:hover{text-decoration:underline}
/* Ligne newsletter : icône + accroche + appel à l'action, sur une seule ligne.
   Le lien couvre toute la ligne ; le filet la sépare de la barre copyright. */
.footer__nl{
  display:flex;align-items:center;flex-wrap:wrap;gap:.5rem .9rem;
  padding-bottom:1.1rem;margin-bottom:1.1rem;
  border-bottom:1px solid var(--gris-fonce);
  color:var(--gris);text-decoration:none;
}
.footer__nl:hover{text-decoration:none}
.footer__nl-icone{
  flex:0 0 auto;width:26px;height:26px;
  color:var(--orange);transition:transform .25s ease,opacity .25s ease;
}
.footer__nl-titre{font-weight:700;color:#C9C7C2;transition:color .25s ease}
.footer__nl-cta{
  color:var(--orange);font-weight:600;white-space:nowrap;
}
.footer__nl-cta::before{content:"→ ";transition:margin-right .2s ease}
.footer__nl:hover .footer__nl-icone{transform:translateY(-2px)}
.footer__nl:hover .footer__nl-titre{color:var(--blanc)}
.footer__nl:hover .footer__nl-cta{text-decoration:underline}
.footer__nl:hover .footer__nl-cta::before{margin-right:.3rem}
@media (max-width:560px){
  .footer__nl-titre{flex:1 1 100%;order:2}
  .footer__nl-cta{order:3}
}
.footer__bar{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between}

/* ---------- Apparition au scroll ---------- */
.reveal{opacity:0;transform:translateY(24px);transition:opacity .7s ease,transform .7s ease}
.reveal.is-visible{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.reveal{opacity:1;transform:none}}

/* ==========================================================================
   AJOUTS — Page Patrimoine (vidéo pleine largeur + bandeau visite virtuelle)
   ========================================================================== */

/* ---------- Bandeau visite virtuelle (pleine largeur, cliquable) ---------- */
.visite-band{
  position:relative;display:flex;align-items:center;justify-content:center;
  min-height:min(82vh,680px);
  background-size:cover;background-position:center;
  text-decoration:none;overflow:hidden;
}
.visite-band::after{
  content:"";position:absolute;inset:0;
  background:linear-gradient(to top, rgba(16,16,16,.82) 0%, rgba(16,16,16,.35) 45%, rgba(16,16,16,.45) 100%);
  transition:background .3s ease;
}
.visite-band:hover::after{
  background:linear-gradient(to top, rgba(16,16,16,.88) 0%, rgba(16,16,16,.45) 45%, rgba(16,16,16,.55) 100%);
}
.visite-band__content{
  position:relative;z-index:2;text-align:center;
  display:flex;flex-direction:column;align-items:center;gap:1.1rem;
  padding:clamp(2.5rem,6vw,4.5rem) var(--pad);
}
.visite-band__content .eyebrow{color:#D8D6D1;margin-bottom:0}
.visite-band__content h2{
  font-size:clamp(1.9rem,4vw,3rem);color:var(--blanc);
  text-shadow:0 1px 3px rgba(16,16,16,.85), 0 4px 22px rgba(16,16,16,.75);
}
.visite-band__content h2 em{font-style:normal;color:var(--orange)}
.visite-band__content p{
  max-width:38em;color:#E9E7E2;
  text-shadow:0 1px 2px rgba(16,16,16,.9), 0 3px 14px rgba(16,16,16,.8);
}
.visite-band .btn{margin-top:.5rem}
.visite-band:hover .btn{background:var(--orange);color:var(--noir)}

/* ============================================================
   Compléments page Patrimoine
   ============================================================ */

/* ---------- Bande vidéo : fond noir, vidéo centrée à sa vraie largeur ---------- */
/* Le noir n'apparaît que sur les côtés : la hauteur de la bande = la hauteur de la vidéo */
.video-strip{
  background:var(--noir);
  padding:0;margin:0;
  line-height:0;               /* aucun espace parasite sous l'iframe */
}
.video-strip__inner{
  position:relative;
  width:100%;
  max-width:var(--maxw);       /* largeur réelle de la vidéo, plafonnée à la largeur du site */
  margin:0 auto;               /* centrage horizontal */
  aspect-ratio:16/9;
}
.video-strip__inner iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;
}

/* ---------- Visite virtuelle dans une case du damier ---------- */
/* Couverture cliquable, invitation centrée, ouverture dans un nouvel onglet */
.damier__visite{
  position:absolute;inset:0;
  display:flex;align-items:center;justify-content:center;
  background-color:var(--noir);
  background-size:cover;background-position:center;
  text-decoration:none;overflow:hidden;
}
@media (max-width:900px){.damier__visite{position:relative;height:340px}}
.damier__visite::after{
  content:"";position:absolute;inset:0;
  background:rgba(12,14,16,.45);
  transition:background .35s ease;
}
.damier__visite:hover::after,
.damier__visite:focus-visible::after{background:rgba(12,14,16,.62)}

.visite-btn{
  position:relative;z-index:2;
  display:flex;flex-direction:column;align-items:center;gap:.7rem;
  padding:1.5rem 2.6rem;
  background:rgba(12,14,16,.55);
  border:1px solid rgba(240,240,240,.75);
  backdrop-filter:blur(2px);
  color:var(--blanc);
  text-align:center;
  transition:border-color .3s ease,transform .3s ease,background .3s ease;
}
.visite-btn__icon{
  width:44px;height:44px;
  border:1px solid currentColor;border-radius:50%;
  display:flex;align-items:center;justify-content:center;
  transition:transform .3s ease;
}
.visite-btn__icon svg{width:16px;height:16px;display:block;margin-left:2px}
.visite-btn__label{
  font-family:'Sarabun',sans-serif;
  font-weight:700;font-size:.95rem;
  letter-spacing:.18em;text-transform:uppercase;
  line-height:1.4;
}
.visite-btn__hint{
  font-size:.78rem;font-weight:300;
  letter-spacing:.06em;opacity:.85;
}
.damier__visite:hover .visite-btn{
  border-color:var(--orange);color:var(--orange);
  background:rgba(12,14,16,.72);
  transform:translateY(-2px);
}
.damier__visite:hover .visite-btn__icon{transform:scale(1.08)}
@media (max-width:600px){.visite-btn{padding:1.1rem 1.6rem}}

/* ---------- Bandeau image sous le hero (page Carrières) ---------- */
/* Image source : 1539 x 506 px. Le libellé « 12033 m3 » est à y = 156 px dans l'image.
   Réglages : --h = hauteur du bandeau, --repere = position du libellé depuis le haut. */
.bandeau-image{
  --h:calc(7.5 * 1.7em);      /* 7,5 lignes de texte */
  --repere:0.15;              /* « 12033 m3 » à 15 % du bord supérieur */
  position:relative;
  height:var(--h);overflow:hidden;background:#DDDBD6;
  container-type:inline-size; /* permet de connaître la largeur réelle (cqw) */
}
.bandeau-image img{
  display:block;width:100%;height:100%;
  object-fit:cover;           /* recadre sans déformer */
  /* décalage vertical calculé pour que le repère tombe à --repere de la hauteur,
     borné pour ne jamais laisser de vide en haut ni en bas */
  object-position:50% min(0px, max(
    calc(var(--repere) * var(--h) - 156 * 100cqw / 1539),
    calc(var(--h) - 506 * 100cqw / 1539)));
}
/* Mention posée sur l'image : blanc cassé sur noir anthracite translucide (charte),
   lisible quelle que soit la couleur de l'image en dessous */
.mention-image{
  position:absolute;right:.75rem;bottom:.6rem;z-index:6; /* au-dessus des diaporamas */
  font-size:.65rem;font-weight:400;letter-spacing:.08em;text-transform:uppercase;line-height:1;
  color:rgba(240,240,240,.85);background:rgba(16,16,16,.5);
  padding:.3rem .5rem;
}

/* Bouton sous l'accroche du hero (page Carrières) */
.page-hero__btn{margin-top:1.4rem}

/* Liste des services cliquable (renvoi vers la section correspondante) */
.intro__body li a{
  text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.2em;
  text-decoration-color:rgba(0,119,170,.45);transition:color .2s ease;
}
.intro__body li a:hover,.intro__body li a:focus-visible{color:var(--bleu);text-decoration-color:var(--bleu)}
/* Les ancres ne passent pas sous l'en-tête fixe */
section[id]{scroll-margin-top:5rem}

/* Bouton flottant « retour aux services » (page Carrières) */
.retour-services{
  position:fixed;z-index:90;
  right:1.25rem;bottom:calc(1.25rem + env(safe-area-inset-bottom, 0px));
  width:46px;height:46px;display:flex;align-items:center;justify-content:center;
  background:rgba(16,16,16,.85);color:var(--blanc);border:1px solid var(--gris-fonce);
  opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .25s ease, transform .25s ease, visibility .25s, background .2s ease, color .2s ease;
}
.retour-services svg{width:20px;height:20px}
.retour-services.is-visible{opacity:1;visibility:visible;transform:none}
.retour-services:hover,.retour-services:focus-visible{background:var(--orange);color:var(--noir);border-color:var(--orange)}
@media (prefers-reduced-motion:reduce){.retour-services{transition:none}}

/* ---------- Page BTP v2 : chiffre clé et équipements ---------- */
.chiffre-cle{
  display:flex;align-items:baseline;gap:1rem;
  border-left:3px solid var(--orange);padding:.6rem 0 .6rem 1rem;margin:1.2rem 0;
}
.chiffre-cle__valeur{font-size:1.9rem;font-weight:800;color:var(--bleu);line-height:1;white-space:nowrap}
.chiffre-cle__texte{font-size:.95rem;color:#444;text-align:left}
@media (max-width:480px){.chiffre-cle{flex-direction:column;gap:.4rem}}
.equipements__grid{grid-template-columns:repeat(auto-fit,minmax(230px,1fr))}
.equipement__modele{color:var(--orange)!important;font-weight:600;font-size:.92rem!important;margin-bottom:.5rem;text-align:left!important}
.equipements__grid .valeur p{text-align:left}

/* ---------- Page BTP v2 : récapitulatif des livrables ---------- */
.livrables__grid{
  display:grid;gap:2rem 2.5rem;margin-top:2.5rem;
  grid-template-columns:repeat(auto-fit,minmax(220px,1fr));
}
.livrable-groupe svg{
  width:40px;height:40px;fill:none;stroke:var(--orange);stroke-width:1.5;
  stroke-linecap:round;stroke-linejoin:round;margin-bottom:.9rem;
}
.livrable-groupe h3{font-size:1.1rem;color:var(--bleu);margin-bottom:.7rem}
.livrable-groupe ul{list-style:none;margin:0;padding:0;color:#2A2A2A}
.livrable-groupe li{
  padding:.45rem 0;border-top:1px solid #D6D4CF;font-size:.97rem;line-height:1.45;
}
.livrable-groupe li:last-child{border-bottom:1px solid #D6D4CF}
/* Icône devant chaque livrable */
.livrable-groupe li{display:flex;align-items:center;gap:.7rem}
.livrable-groupe li svg{
  flex:0 0 22px;width:22px;height:22px;margin:0;fill:none;stroke:var(--orange);
  stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;
}

/* Variante « bandeau » : section compacte, délimitée par deux filets, titre à gauche */
.livrables--bandeau{
  padding:clamp(2rem,4vw,3rem) 0;
  border-top:1px solid #D6D4CF;border-bottom:1px solid #D6D4CF;
}
.livrables--bandeau .livrables__inner{
  display:grid;grid-template-columns:minmax(180px,220px) 1fr;gap:2.5rem;align-items:start;
}
.livrables--bandeau .livrables__titre .h2{font-size:clamp(1.5rem,2.4vw,1.9rem);margin:0}
.livrables--bandeau .livrables__grid{margin-top:0;gap:1.5rem 2rem;grid-template-columns:repeat(4,1fr)}
.livrables--bandeau .livrable-groupe > svg{width:28px;height:28px;margin-bottom:.5rem}
.livrables--bandeau .livrable-groupe h3{font-size:1rem;margin-bottom:.4rem}
.livrables--bandeau .livrable-groupe li,
.livrables--bandeau .livrable-groupe li:last-child{border:0;padding:.25rem 0;font-size:.92rem}
@media (max-width:1100px){
  .livrables--bandeau .livrables__inner{grid-template-columns:1fr;gap:1.5rem}
  .livrables--bandeau .livrables__grid{grid-template-columns:repeat(2,1fr)}
}
@media (max-width:520px){.livrables--bandeau .livrables__grid{grid-template-columns:1fr}}
/* Bandeau livrables : titres de groupe discrets, les livrables passent au premier plan */
.livrables--bandeau .livrable-groupe h3{
  font-size:.75rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;
  color:#7C7A75;margin-bottom:.6rem;
}
.livrables--bandeau .livrable-groupe li{font-weight:600;color:#1B1B1B}
/* Rangée d'icônes « Livrables » en fin de section (page BTP v2) */
.livrables-icones{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.2rem}
.livrables-icones__label{
  font-size:.72rem;font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:#7C7A75;margin-right:.3rem;
}
.livrable-icone{
  display:inline-flex;align-items:center;justify-content:center;width:38px;height:38px;
  border:1px solid #D6D4CF;cursor:help;
}
.livrable-icone svg{width:22px;height:22px;fill:none;stroke:var(--orange);stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round}
/* Variante sombre du bandeau livrables (page BTP v3) */
.livrables--sombre{border-color:transparent}
.livrables--sombre .h2{color:var(--orange)}
.livrables--sombre .eyebrow{color:var(--gris)}
.livrables--sombre .livrable-groupe h3{color:var(--gris)}
.livrables--sombre .livrable-groupe li{color:var(--blanc)}
/* Respiration claire entre le bandeau noir des livrables et la première section (v3) */
.livrables--sombre + .damier{padding-top:clamp(1.5rem,3vw,2.5rem)}
/* Espace réduit entre l'introduction et le bandeau noir des livrables (v3) */
.intro--avant-bandeau{padding-bottom:clamp(2rem,4vw,3rem)}
.intro--avant-bandeau .intro__body > :last-child{margin-bottom:0}
/* Bandeau livrables placé sous le bandeau de titre (v3) : liseré orange, hauteur réduite */
.livrables--sous-titre{
  /* liseré « rayon laser » : 1 px orange, sans effet */
  border-top:1px solid var(--orange);
  padding:clamp(1.1rem,2vw,1.6rem) 0;
}
.livrables--sous-titre .livrables__inner{align-items:center}
.livrables--sous-titre .livrables__titre .eyebrow{margin-bottom:.3rem}

/* ---------- Carrières : bande verticale d'inventaire de stocks à droite de l'introduction (données fictives) ---------- */
.intro--bande{padding:0;display:grid;grid-template-columns:1fr var(--bande,min(12vw,172px))}
.intro--bande .intro__texte{padding:clamp(3.5rem,7vw,5.5rem) var(--pad)}
.intro--bande .intro__body{margin:0 auto}
.bande-verticale{position:relative;margin:0;overflow:hidden;background:#DDDBD6;border-left:1px solid var(--orange)}
.bande-verticale img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 50%}
.bande-verticale .mention-image{right:.4rem;bottom:.5rem;white-space:nowrap;font-size:.6rem}
@media (max-width:899px){.intro--bande{grid-template-columns:1fr}.bande-verticale{display:none}}

/* Éléments masqués avec l attribut hidden : toujours invisibles, même si une règle leur donne un display */
[hidden]{display:none !important}
