:root{
  /* --- Couleurs de marque (ne pas modifier sans mettre à jour le logo) --- */
  --bleu:#2C5F8D;        /* couleur principale — titres, header, badge logo */
  --ambre:#F5A623;       /* accent — boutons, liens, éléments clés */
  --ambre-fonce:#C97F1E; /* hover des boutons ambre */
  --gris:#8A9096;        /* texte secondaire, sous-titres */
  --creme:#F4F6F9;       /* gris clair — fonds de sections alternées (ex-crème) */
  --blanc:#FFFFFF;
  --encre:#1F2A37;       /* texte courant */

  /* --- Déclinaisons utilitaires calculées à partir de la charte --- */
  --bleu-fonce:#1E4467;      /* fond du footer et du bandeau CTA */
  --bleu-clair:#EAF1F8;      /* aplats légers, puces, icônes */
  --bordure:#E4E8EC;         /* traits de séparation, contours de cartes */
  --succes:#1E7A52;          /* messages de confirmation */
  --erreur:#C0392B;          /* messages d'erreur de formulaire */

  /* --- Typographie --- */
  --font-titre:'Sora', 'Segoe UI', system-ui, -apple-system, sans-serif;
  --font-texte:'Inter', 'Segoe UI', system-ui, -apple-system, sans-serif;

  /* --- Rythme & formes --- */
  --rayon-sm:8px;    /* boutons, champs de formulaire */
  --rayon-md:14px;   /* petites cartes */
  --rayon-lg:20px;   /* grandes cartes, images */
  --largeur-max:1180px;
  --gouttiere:20px;  /* marge latérale mobile */

  /* --- Ombres douces (jamais de noir pur, on teinte en bleu) --- */
  --ombre-sm:0 1px 2px rgba(31,42,55,.06), 0 2px 6px rgba(31,42,55,.05);
  --ombre-md:0 4px 12px rgba(31,42,55,.07), 0 12px 28px rgba(31,42,55,.06);
  --ombre-lg:0 10px 30px rgba(31,42,55,.10), 0 24px 60px rgba(31,42,55,.08);

  /* --- Hauteur du header, utilisée pour le décalage des ancres --- */
  --h-header:64px;
}

*,*::before,*::after{ box-sizing:border-box; }

html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  /* Décalage des ancres pour que les titres ne passent pas sous le header sticky */
  scroll-padding-top:calc(var(--h-header) + 12px);
}

body{
  margin:0;
  font-family:var(--font-texte);
  font-size:16px;
  line-height:1.65;
  color:var(--encre);
  background:var(--blanc);
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

/* Bloque le défilement quand le menu mobile est ouvert */
body.menu-ouvert{ overflow:hidden; }

img,svg,iframe{ max-width:100%; display:block; }
img{ height:auto; }

a{ color:var(--bleu); text-decoration:none; }
a:hover{ color:var(--ambre-fonce); }

h1,h2,h3,h4{
  font-family:var(--font-titre);
  color:var(--bleu);
  line-height:1.2;
  margin:0 0 .5em;
  font-weight:700;
  letter-spacing:-.01em;
}
h1{ font-size:clamp(1.75rem, 5.5vw, 3rem); }
h2{ font-size:clamp(1.5rem, 4.5vw, 2.25rem); }
h3{ font-size:clamp(1.125rem, 3vw, 1.375rem); }
h4{ font-size:1.0625rem; }

p{ margin:0 0 1rem; }
ul{ margin:0 0 1rem; padding-left:1.25rem; }

/* Cible d'ancre : évite que le contenu se cache derrière le header sticky */
:target{ scroll-margin-top:calc(var(--h-header) + 12px); }

.container{
  width:100%;
  max-width:var(--largeur-max);
  margin-inline:auto;
  padding-inline:var(--gouttiere);
}

/* Espacement vertical standard des sections */
.section{ padding-block:56px; }
.section--creme{ background:var(--creme); }
.section--bleu{ background:var(--bleu-fonce); color:var(--blanc); }
.section--bleu h2,.section--bleu h3{ color:var(--blanc); }

/* En-tête de section : surtitre + titre + chapô */
.section-head{ max-width:720px; margin:0 auto 36px; text-align:center; }
.section-head--gauche{ margin-inline:0; text-align:left; }

.surtitre{
  display:inline-block;
  font-family:var(--font-titre);
  font-size:.75rem;
  font-weight:600;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--ambre-fonce);
  background:rgba(245,166,35,.12);
  border-radius:999px;
  padding:6px 14px;
  margin-bottom:14px;
}
.section--bleu .surtitre{ color:var(--ambre); background:rgba(245,166,35,.18); }

.chapo{ color:var(--gris); font-size:1.0625rem; margin-bottom:0; }
.section--bleu .chapo{ color:rgba(255,255,255,.82); }

/* Placeholder de contenu à compléter par le client — volontairement visible */
.aremplir{
  background:rgba(245,166,35,.18);
  border-bottom:1px dashed var(--ambre-fonce);
  padding:0 4px;
  border-radius:3px;
  font-style:normal;
  color:inherit;
}

/* Lien d'évitement clavier */
.skip-link{
  position:absolute; left:-9999px; top:0; z-index:200;
  background:var(--ambre); color:var(--bleu);
  padding:12px 18px; border-radius:0 0 var(--rayon-sm) 0; font-weight:600;
}
.skip-link:focus{ left:0; }

.btn{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  font-family:var(--font-titre);
  font-size:.9375rem;
  font-weight:600;
  line-height:1;
  padding:14px 22px;
  border-radius:var(--rayon-sm);
  border:2px solid transparent;
  cursor:pointer;
  text-align:center;
  transition:transform .18s ease, background-color .18s ease, border-color .18s ease, color .18s ease, box-shadow .18s ease;
}
.btn svg{ flex:none; }

/* Bouton principal : fond ambre, texte bleu foncé */
.btn--ambre{ background:var(--ambre); color:var(--bleu); box-shadow:var(--ombre-sm); }
.btn--ambre:hover{ background:var(--ambre-fonce); color:var(--blanc); transform:translateY(-2px); box-shadow:var(--ombre-md); }

/* Bouton secondaire : contour bleu */
.btn--contour{ background:transparent; color:var(--bleu); border-color:var(--bleu); }
.btn--contour:hover{ background:var(--bleu); color:var(--blanc); transform:translateY(-2px); }

/* Bouton secondaire sur fond sombre */
.btn--contour-blanc{ background:transparent; color:var(--blanc); border-color:rgba(255,255,255,.6); }
.btn--contour-blanc:hover{ background:var(--blanc); color:var(--bleu); transform:translateY(-2px); }

.btn--bloc{ width:100%; }
.btn--lg{ padding:16px 28px; font-size:1rem; }

.header{
  position:sticky; top:0; z-index:100;
  background:rgba(255,255,255,.96);
  backdrop-filter:saturate(150%) blur(8px);
  border-bottom:1px solid var(--bordure);
}
.header__inner{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  height:var(--h-header);
}

.logo{ display:flex; align-items:center; flex:none; }
.logo img{ width:172px; height:52px; object-fit:contain; }

/* --- Navigation : masquée hors écran sur mobile, panneau glissant --- */
.nav{
  position:fixed;
  inset:var(--h-header) 0 auto 0;
  max-height:calc(100dvh - var(--h-header));
  overflow-y:auto;
  background:var(--blanc);
  border-bottom:1px solid var(--bordure);
  box-shadow:var(--ombre-md);
  transform:translateY(-120%);
  visibility:hidden;
  transition:transform .3s ease, visibility .3s;
  padding:16px var(--gouttiere) 28px;
}
.nav.est-ouvert{ transform:translateY(0); visibility:visible; }

.nav__liste{ list-style:none; margin:0 0 18px; padding:0; }
.nav__liste a{
  display:block;
  font-family:var(--font-titre);
  font-weight:600;
  color:var(--encre);
  padding:13px 4px;
  border-bottom:1px solid var(--bordure);
}
.nav__liste a:hover,.nav__liste a.est-actif{ color:var(--ambre-fonce); }

.nav__actions{ display:flex; flex-direction:column; gap:10px; }

/* Numéro de téléphone dans le header */
.header__tel{
  display:inline-flex; align-items:center; justify-content:center; gap:8px;
  font-family:var(--font-titre); font-weight:700; font-size:.9375rem; line-height:1; color:var(--bleu);
  white-space:nowrap;
  padding:12px 18px;
  border:2px solid var(--bleu);
  border-radius:var(--rayon-sm);
  transition:background-color .18s ease, color .18s ease;
}
.header__tel:hover{ background:var(--bleu); color:var(--blanc); }

/* --- Bouton burger --- */
.burger{
  display:inline-flex; flex-direction:column; justify-content:center; gap:5px;
  width:44px; height:44px; padding:10px;
  background:transparent; border:0; cursor:pointer; flex:none;
}
.burger span{
  display:block; height:2.5px; width:100%; border-radius:2px;
  background:var(--bleu); transition:transform .3s ease, opacity .2s ease;
}
.burger[aria-expanded="true"] span:nth-child(1){ transform:translateY(7.5px) rotate(45deg); }
.burger[aria-expanded="true"] span:nth-child(2){ opacity:0; }
.burger[aria-expanded="true"] span:nth-child(3){ transform:translateY(-7.5px) rotate(-45deg); }

@media (min-width:1000px){
  :root{ --h-header:76px; }
  .burger{ display:none; }

  /* 3 colonnes : logo | liens centrés | téléphone + CTA à droite */
  .header__inner{ display:grid; grid-template-columns:auto 1fr auto; column-gap:16px; }


  .nav{ display:contents; visibility:visible; }

  /* nowrap : le menu doit tenir sur une seule ligne, jamais se casser en deux */
  .nav__liste{ display:flex; justify-content:center; gap:15px; margin:0; flex-wrap:nowrap; }
  .nav__liste a{ border:0; padding:6px 0; font-size:.875rem; position:relative; white-space:nowrap; }
  /* Soulignement animé au survol */
  .nav__liste a::after{
    content:''; position:absolute; left:0; right:100%; bottom:0; height:2px;
    background:var(--ambre); transition:right .25s ease;
  }
  .nav__liste a:hover::after,.nav__liste a.est-actif::after{ right:0; }
  .nav__actions{ flex-direction:row; align-items:center; gap:14px; }
  .nav__actions .btn{ white-space:nowrap; padding:12px 18px; }
  .logo img{ width:176px; height:53px; }
}

/* Au-delà de 1280 px, le header s'autorise une largeur supérieure au contenu :
   c'est ce qui permet au logo de reprendre sa taille sans comprimer le menu. */
@media (min-width:1280px){
  .header .container{ max-width:1280px; }
  .logo img{ width:200px; height:60px; }
  .nav__liste{ gap:18px; }
}

.hero{
  position:relative;
  background:
    radial-gradient(1000px 460px at 88% -8%, rgba(245,166,35,.16), transparent 62%),
    radial-gradient(760px 420px at -8% 8%, rgba(44,95,141,.12), transparent 60%),
    var(--creme);
  padding-block:44px 56px;
  overflow:hidden;
}
.hero__inner{ display:grid; gap:36px; }

.hero h1{ margin-bottom:14px; }
.hero h1 .accent{ color:var(--ambre-fonce); }
.hero__soustitre{ font-size:1.0625rem; color:var(--gris); max-width:56ch; }

.hero__ctas{ display:flex; flex-wrap:wrap; gap:12px; margin:26px 0 24px; }
.hero__ctas .btn{ flex:1 1 200px; }

/* Badges de réassurance sous les CTA */
.reassurance{
  list-style:none; margin:0; padding:0;
  display:flex; flex-wrap:wrap; gap:10px;
}
.reassurance li{
  display:inline-flex; align-items:center; gap:8px;
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:999px;
  padding:9px 16px;
  font-size:.875rem;
  font-weight:600;
  color:var(--bleu);
  box-shadow:var(--ombre-sm);
}
.reassurance svg{ color:var(--ambre-fonce); flex:none; }

/* Visuel du hero : carte « intervention » stylisée */
.hero__visuel{
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-lg);
  box-shadow:var(--ombre-lg);
  padding:26px;
}
.hero__visuel h2{ font-size:1.125rem; margin-bottom:6px; }
.hero__visuel p{ color:var(--gris); font-size:.9375rem; }
.hero__points{ list-style:none; padding:0; margin:18px 0 0; display:grid; gap:12px; }
.hero__points li{ display:flex; gap:12px; align-items:flex-start; font-size:.9375rem; }
.hero__points .puce{
  flex:none; width:34px; height:34px; border-radius:10px;
  background:var(--bleu-clair); color:var(--bleu);
  display:grid; place-items:center;
}

@media (min-width:900px){
  .hero{ padding-block:72px 84px; }
  .hero__inner{ grid-template-columns:1.15fr .85fr; align-items:center; gap:56px; }
  .hero__ctas .btn{ flex:0 0 auto; }
}

.grille-prestations{
  display:grid; gap:18px; grid-template-columns:1fr;
  list-style:none; padding:0; margin:0;
}

.carte-presta{
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-lg);
  padding:26px 24px;
  box-shadow:var(--ombre-sm);
  transition:transform .22s ease, box-shadow .22s ease, border-color .22s ease;
  scroll-margin-top:calc(var(--h-header) + 20px);
}
.carte-presta:hover{ transform:translateY(-4px); box-shadow:var(--ombre-md); border-color:rgba(245,166,35,.55); }

.carte-presta__icone{
  width:52px; height:52px; border-radius:14px;
  background:var(--bleu-clair); color:var(--bleu);
  display:grid; place-items:center; margin-bottom:16px;
}
.carte-presta:hover .carte-presta__icone{ background:rgba(245,166,35,.16); color:var(--ambre-fonce); }
.carte-presta h3{ margin-bottom:8px; }
.carte-presta p{ color:var(--gris); font-size:.9375rem; margin-bottom:14px; }

.carte-presta__lien{
  display:inline-flex; align-items:center; gap:6px;
  font-family:var(--font-titre); font-weight:600; font-size:.875rem;
  color:var(--ambre-fonce);
}
.carte-presta__lien:hover{ gap:11px; }
.carte-presta__lien svg{ transition:transform .2s ease; }

@media (min-width:640px){ .grille-prestations{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1000px){ .grille-prestations{ grid-template-columns:repeat(3,1fr); gap:24px; } }

.apropos__grille{
  display:grid; gap:32px; grid-template-columns:1fr; align-items:center;
}
.apropos__texte .surtitre{ margin-bottom:14px; }
.apropos__texte p{ color:rgba(255,255,255,.85); }
.apropos__texte strong{ color:var(--blanc); }

/* Grille des valeurs (emoji + libellé) */
.valeurs{
  display:grid; gap:14px; grid-template-columns:1fr;
  list-style:none; padding:0; margin:0;
}
.valeur{
  display:flex; gap:14px; align-items:flex-start;
  background:rgba(255,255,255,.06);
  border:1px solid rgba(255,255,255,.14);
  border-radius:var(--rayon-md);
  padding:18px;
}
.valeur__icone{
  flex:none; width:46px; height:46px; border-radius:12px;
  background:var(--blanc); color:var(--ambre-fonce);
  display:grid; place-items:center;
}
.valeur h3{ font-size:1.0625rem; margin-bottom:4px; color:var(--blanc); }
.valeur p{ margin:0; font-size:.9375rem; color:rgba(255,255,255,.78); line-height:1.5; }

@media (min-width:640px){ .valeurs{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1000px){
  .apropos__grille{ grid-template-columns:1.05fr .95fr; gap:48px; align-items:start; }
  .valeurs{ grid-template-columns:1fr; }
}

.grille-atouts{
  display:grid; gap:18px; grid-template-columns:1fr;
  list-style:none; padding:0; margin:0 0 40px;
}
.atout{
  display:flex; gap:16px; align-items:flex-start;
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-md);
  padding:22px 20px;
}
.atout__icone{
  flex:none; width:46px; height:46px; border-radius:12px;
  background:rgba(245,166,35,.14); color:var(--ambre-fonce);
  display:grid; place-items:center;
}
.atout h3{ font-size:1.0625rem; margin-bottom:6px; }
.atout p{ margin:0; color:var(--gris); font-size:.9375rem; }

/* Le surlignage « à remplir » ne doit pas casser la mise en page d'un grand chiffre */

@media (min-width:640px){ .grille-atouts{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:900px){ }

.zone__grille{ display:grid; gap:32px; }

.villes{
  list-style:none; padding:0; margin:22px 0 0;
  display:grid; gap:10px; grid-template-columns:repeat(2,1fr);
}
.villes li{
  display:flex; align-items:center; gap:9px;
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-sm);
  padding:11px 13px;
  font-size:.9375rem; font-weight:600; color:var(--bleu);
}
.villes svg{ flex:none; color:var(--ambre-fonce); }

/* Conteneur de carte Google Maps — ratio fixe pour éviter le layout shift */
.carte-maps{
  border-radius:var(--rayon-lg);
  overflow:hidden;
  border:1px solid var(--bordure);
  box-shadow:var(--ombre-md);
  background:var(--bleu-clair);
  aspect-ratio:4/3;
}
.carte-maps iframe{ width:100%; height:100%; border:0; display:block; }


.carte-maps__consent{
  width:100%; height:100%;
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap:14px; padding:24px; text-align:center;
  background:
    repeating-linear-gradient(45deg, rgba(44,95,141,.05) 0 12px, transparent 12px 24px),
    var(--bleu-clair);
}
.carte-maps__consent p{ margin:0; font-size:.875rem; color:var(--bleu); max-width:34ch; }

.secteurs{ display:grid; gap:22px; margin-top:32px; }
.secteur{
  display:flex; gap:16px; align-items:flex-start;
  padding-bottom:22px;
  border-bottom:1px solid var(--bordure);
}
.secteur:last-child{ padding-bottom:0; border-bottom:0; }


.etapes{ list-style:none; padding:0; margin:36px 0 0; display:grid; gap:24px; }

.etape{ position:relative; padding-left:54px; }
.etape__puce{
  position:absolute; left:0; top:0;
  width:40px; height:40px; border-radius:50%;
  display:grid; place-items:center;
  background:var(--bleu); color:var(--blanc);
  font-family:var(--font-titre); font-weight:700; font-size:.875rem;
}
.etape h3{ font-size:1rem; margin-bottom:4px; }
.etape p{ color:var(--gris); }

.etapes--fil .etape:not(:last-child)::before{
  content:''; position:absolute;
  left:19px; top:46px; bottom:-22px; width:2px;
  background:var(--bordure);
}

@media (min-width:820px){
  .etapes{ grid-template-columns:repeat(4,1fr); }
  .etape{ padding-left:0; padding-top:54px; text-align:center; }
  .etape__puce{ left:50%; transform:translateX(-50%); }
  .etapes--fil .etape:not(:last-child)::before{
    left:calc(50% + 24px); right:-50%;
    top:19px; bottom:auto; width:auto; height:2px;
  }
}
.secteur__numero{
  flex:none; width:38px; height:38px; border-radius:10px;
  background:rgba(245,166,35,.14); color:var(--ambre-fonce);
  display:grid; place-items:center;
  font-family:var(--font-titre); font-weight:700; font-size:.9375rem;
}
.secteur h3{ font-size:1rem; margin-bottom:4px; }
.secteur p{ margin:0; font-size:.9375rem; color:var(--gris); }

/* --- Villes desservies : grille SEO local (cartes par ville) --- */
.villes-seo{ margin-top:40px; }
.villes-seo__groupe{ margin-bottom:32px; }
.villes-seo__groupe:last-child{ margin-bottom:0; }
.villes-seo__titre{
  display:flex; align-items:center; gap:10px;
  font-size:1.125rem; margin:0 0 18px;
  padding-bottom:12px; border-bottom:1px solid var(--bordure);
}
.villes-seo__titre svg{ flex:none; color:var(--ambre-fonce); }

.villes-seo__grille{
  display:grid; gap:14px; grid-template-columns:1fr;
  list-style:none; padding:0; margin:0;
}
.ville-carte{
  display:flex; flex-direction:column;
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-md);
  padding:16px 18px;
  transition:border-color .2s ease, box-shadow .2s ease, transform .2s ease;
}
.ville-carte:hover{
  border-color:var(--ambre);
  box-shadow:var(--ombre-md);
  transform:translateY(-2px);
}
.ville-carte__titre{ font-size:1rem; margin:0 0 6px; }
.ville-carte p{ margin:0 0 14px; font-size:.875rem; color:var(--gris); flex:1 1 auto; }
.ville-carte__lien{
  display:inline-flex; align-items:center; gap:6px; margin-top:auto;
  font-family:var(--font-titre); font-weight:600; font-size:.8125rem;
  color:var(--ambre-fonce);
}
.ville-carte__lien svg{ transition:transform .2s ease; }
.ville-carte:hover .ville-carte__lien svg{ transform:translateX(3px); }

@media (min-width:560px){ .villes-seo__grille{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:900px){
  .zone__grille{ grid-template-columns:1fr 1fr; align-items:center; gap:48px; }
  .villes{ grid-template-columns:repeat(2,1fr); }
  .secteurs{ grid-template-columns:repeat(3,1fr); }
  .villes-seo__grille{ grid-template-columns:repeat(3,1fr); }
}
@media (min-width:1100px){ .villes-seo__grille{ grid-template-columns:repeat(4,1fr); gap:16px; } }

/* « Afficher plus / moins » : cartes supplémentaires masquées + bouton */
.ville-carte--masquee{ display:none; }
.villes-seo__plus{ margin-top:20px; text-align:center; }
.villes-seo__chevron{ transition:transform .2s ease; }
.js-villes-plus.est-ouvert .villes-seo__chevron{ transform:rotate(180deg); }

/* Modale « En savoir plus » d'une ville (fenêtre native <dialog>) */
.ville-modale{
  width:min(92vw,420px); max-width:420px;
  padding:0; border:none; background:transparent; color:var(--encre);
}
.ville-modale::backdrop{ background:rgba(31,42,55,.55); }
.ville-modale__contenu{
  position:relative;
  background:var(--blanc); border-radius:var(--rayon-lg); box-shadow:var(--ombre-lg);
  padding:22px 22px 20px; max-height:88vh; overflow:auto;
}
.ville-modale__fermer{
  position:absolute; top:12px; right:12px;
  width:32px; height:32px; display:inline-flex; align-items:center; justify-content:center;
  border:none; border-radius:50%; cursor:pointer;
  color:var(--gris); background:var(--creme);
  transition:color .2s ease, background .2s ease;
}
.ville-modale__fermer svg{ width:18px; height:18px; }
.ville-modale__fermer:hover{ color:var(--bleu); background:var(--bleu-clair); }
.ville-modale__surtitre{
  text-transform:uppercase; letter-spacing:.06em; font-size:.6875rem; font-weight:700;
  color:var(--ambre-fonce); margin:0 0 5px;
}
.ville-modale__titre{ font-size:1.1875rem; margin:0 0 8px; color:var(--bleu); padding-right:30px; }
.ville-modale__intro{ color:var(--gris); font-size:.8125rem; line-height:1.5; margin:0 0 14px; }
.ville-modale__services{ list-style:none; margin:0 0 14px; padding:0; display:grid; gap:7px; }
.ville-modale__services li{ display:flex; gap:9px; align-items:flex-start; font-size:.8125rem; }
.ville-modale__services svg{ flex:none; width:15px; height:15px; color:var(--succes); margin-top:2px; }
.ville-modale__reassurance{
  font-size:.75rem; color:var(--gris); margin:0 0 16px;
  padding-top:12px; border-top:1px solid var(--bordure);
}
.ville-modale__actions{ display:flex; flex-wrap:wrap; gap:10px; }
.ville-modale__actions .btn{ flex:1 1 auto; justify-content:center; padding:11px 16px; font-size:.8125rem; }
.ville-modale[open] .ville-modale__contenu{ animation:ville-modale-in .22s ease; }
@keyframes ville-modale-in{
  from{ opacity:0; transform:translateY(8px) scale(.98); }
  to{ opacity:1; transform:translateY(0) scale(1); }
}
body.modale-ouverte{ overflow:hidden; }
@media (prefers-reduced-motion:reduce){ .ville-modale[open] .ville-modale__contenu{ animation:none; } }

.diaporama-chantier__etapes{
  display:inline-flex; align-items:center; list-style:none; margin:18px 0 0; padding:0;
  font-family:var(--font-titre); font-size:.75rem; font-weight:700;
  letter-spacing:.04em; text-transform:uppercase; color:var(--gris);
}
.diaporama-chantier__etapes li{ display:flex; align-items:center; gap:8px; transition:color .2s ease; }
.diaporama-chantier__etapes li span{
  width:8px; height:8px; border-radius:50%; background:var(--bordure); flex:none;
  transition:background .2s ease, transform .2s ease;
}
.diaporama-chantier__etapes li:not(:last-child)::after{
  content:''; width:22px; height:1px; background:var(--bordure); margin:0 8px;
}
.diaporama-chantier__etapes li.est-active{ color:var(--bleu); }
.diaporama-chantier__etapes li.est-active span{ background:var(--ambre); transform:scale(1.35); }

.diaporama{ position:relative; }

.diaporama__cadre{
  overflow-x:auto; overflow-y:hidden; scroll-snap-type:x mandatory;
  scroll-padding-left:4px; -webkit-overflow-scrolling:touch; scrollbar-width:none;
  border-radius:var(--rayon-lg);
}
.diaporama__cadre::-webkit-scrollbar{ display:none; }
.diaporama__cadre:focus-visible{ outline:3px solid var(--ambre); outline-offset:4px; }

.diaporama__piste{
  display:flex; gap:16px; list-style:none; margin:0; padding:4px;
}
.diaporama__slide{ flex:none; width:min(78vw,300px); scroll-snap-align:start; }

.diaporama__slide figure{
  position:relative; margin:0; border-radius:var(--rayon-lg); overflow:hidden;
  background:var(--bleu-clair); box-shadow:var(--ombre-sm);
}
.diaporama__slide img{ display:block; width:100%; aspect-ratio:3/4; object-fit:cover; }

.diaporama__badge{
  position:absolute; top:12px; left:12px; z-index:1;
  display:inline-flex; align-items:center; color:var(--blanc);
  font-size:.6875rem; font-weight:700; letter-spacing:.05em; text-transform:uppercase;
  padding:6px 12px; border-radius:999px;
  -webkit-backdrop-filter:blur(2px); backdrop-filter:blur(2px);
}
.diaporama__badge--avant{ background:rgba(90,98,105,.88); }
.diaporama__badge--cablage{ background:rgba(201,127,30,.92); }
.diaporama__badge--resultat{ background:rgba(30,122,82,.9); }

.diaporama__slide figcaption{
  position:absolute; left:0; right:0; bottom:0; margin:0;
  padding:32px 14px 12px; font-size:.8125rem; line-height:1.35; color:var(--blanc);
  background:linear-gradient(to top, rgba(15,23,32,.85), rgba(15,23,32,0));
}

.diaporama__fleche{
  position:absolute; top:50%; transform:translateY(-50%); z-index:2;
  display:flex; align-items:center; justify-content:center;
  width:42px; height:42px; border-radius:50%; border:1px solid var(--bordure);
  background:var(--blanc); color:var(--bleu); box-shadow:var(--ombre-md); cursor:pointer;
  transition:background .18s ease, color .18s ease, opacity .18s ease;
}
.diaporama__fleche:hover{ background:var(--ambre); color:var(--encre); }
.diaporama__fleche:disabled{ opacity:.35; cursor:default; }
.diaporama__fleche:disabled:hover{ background:var(--blanc); color:var(--bleu); }
.diaporama__fleche--prev{ left:8px; }
.diaporama__fleche--next{ right:8px; }

@media (max-width:639px){
  .diaporama__fleche{ display:none; }
}

.diaporama__fleche[hidden]{ display:none; }

.diaporama__pied{
  display:flex; align-items:center; justify-content:center; gap:16px; margin-top:16px;
}
.diaporama__pied[hidden]{ display:none; }
.diaporama__points{ display:flex; gap:6px; }
.diaporama__point{
  width:7px; height:7px; padding:0; border:none; border-radius:50%;
  background:var(--bordure); cursor:pointer; transition:background .18s ease, width .18s ease;
}
.diaporama__point.est-active{ width:20px; border-radius:4px; background:var(--ambre); }
.diaporama__compteur{ margin:0; font-size:.8125rem; color:var(--gris); font-variant-numeric:tabular-nums; }

@media (min-width:640px){

  .diaporama__slide{ width:280px; }
}
@media (min-width:1000px){
  .diaporama__slide{ width:300px; }
}
@media (prefers-reduced-motion:reduce){
  .diaporama__cadre{ scroll-behavior:auto; }
}


.avis-grille{
  display:grid; gap:18px; grid-template-columns:1fr;
  list-style:none; padding:0; margin:0 0 32px;
}

.avis-grille li{ display:flex; }
.avis{
  width:100%;
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-lg);
  padding:24px 22px;
  box-shadow:var(--ombre-sm);
  display:flex; flex-direction:column;
}
.etoiles{ display:flex; gap:3px; color:var(--ambre); margin-bottom:12px; }
.avis blockquote{ margin:0 0 16px; font-size:.9375rem; color:var(--encre); flex:1; }
.avis blockquote::before{ content:'« '; color:var(--ambre-fonce); }
.avis blockquote::after{ content:' »'; color:var(--ambre-fonce); }
.avis figcaption{ font-size:.875rem; color:var(--gris); }
.avis figcaption strong{ color:var(--bleu); display:block; font-family:var(--font-titre); }

@media (min-width:680px){ .avis-grille{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1000px){ .avis-grille{ grid-template-columns:repeat(3,1fr); gap:24px; } }

.faq{ max-width:820px; margin-inline:auto; display:grid; gap:12px; }

.faq details{
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-md);
  overflow:hidden;
  transition:border-color .2s ease, box-shadow .2s ease;
}
.faq details[open]{ border-color:rgba(245,166,35,.55); box-shadow:var(--ombre-sm); }

.faq summary{
  display:flex; align-items:center; justify-content:space-between; gap:16px;
  padding:18px 20px;
  font-family:var(--font-titre); font-weight:600; font-size:1rem; color:var(--bleu);
  cursor:pointer;
  list-style:none;
}
.faq summary::-webkit-details-marker{ display:none; }
.faq summary::after{
  content:''; flex:none; width:11px; height:11px;
  border-right:2.5px solid var(--ambre-fonce);
  border-bottom:2.5px solid var(--ambre-fonce);
  transform:rotate(45deg) translate(-2px,-2px);
  transition:transform .25s ease;
}
.faq details[open] summary::after{ transform:rotate(-135deg) translate(-3px,-3px); }
.faq summary:hover{ color:var(--ambre-fonce); }

.faq__reponse{ padding:0 20px 20px; color:var(--gris); font-size:.9375rem; }
.faq__reponse p:last-child{ margin-bottom:0; }

.devis__grille{ display:grid; gap:28px; }

.form-carte{
  background:var(--blanc);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-lg);
  box-shadow:var(--ombre-md);
  padding:26px 22px;
}

.form-ligne{ display:grid; gap:18px; margin-bottom:18px; }
@media (min-width:560px){ .form-ligne--2{ grid-template-columns:1fr 1fr; } }

.champ{ display:flex; flex-direction:column; gap:6px; }
.champ label{
  font-family:var(--font-titre); font-size:.875rem; font-weight:600; color:var(--bleu);
}
.champ label .obligatoire{ color:var(--erreur); }

.champ input,
.champ select,
.champ textarea{
  font-family:var(--font-texte); font-size:1rem; color:var(--encre);
  background:var(--blanc);
  border:1.5px solid var(--bordure);
  border-radius:var(--rayon-sm);
  padding:12px 14px;
  width:100%;
  transition:border-color .18s ease, box-shadow .18s ease;
}
.champ textarea{ resize:vertical; min-height:120px; }
.champ select{
  appearance:none;
  /* Chevron en SVG encodé — évite une requête réseau supplémentaire */
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath d='M1 1l6 6 6-6' fill='none' stroke='%232C5F8D' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 14px center;
  padding-right:40px;
}
.champ input:focus,.champ select:focus,.champ textarea:focus{
  outline:none; border-color:var(--ambre); box-shadow:0 0 0 3px rgba(245,166,35,.22);
}
.champ input[aria-invalid="true"],
.champ select[aria-invalid="true"],
.champ textarea[aria-invalid="true"]{ border-color:var(--erreur); }

.champ__erreur{ font-size:.8125rem; color:var(--erreur); min-height:0; margin:0; }
.champ__erreur:empty{ display:none; }
/* Erreur de la case RGPD : alignée sous la case, avant le bouton d'envoi */
.champ__erreur--case{ margin:-12px 0 18px 31px; }

/* Case à cocher RGPD */
.champ--case{ flex-direction:row; align-items:flex-start; gap:11px; margin-bottom:20px; }
.champ--case input{ width:20px; height:20px; flex:none; margin-top:2px; accent-color:var(--ambre-fonce); }
.champ--case label{ font-family:var(--font-texte); font-weight:400; font-size:.8125rem; color:var(--gris); line-height:1.55; }
.champ--case a{ color:var(--bleu); text-decoration:underline; }

.champ-fichier input[type="file"]{
  position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0,0,0,0); white-space:nowrap; border:0;
}
.champ-fichier__bouton{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-titre); font-size:.875rem; font-weight:600; color:var(--bleu);
  background:var(--bleu-clair); border:1.5px dashed var(--bleu);
  border-radius:var(--rayon-sm); padding:12px 16px; cursor:pointer;
  transition:background .18s ease, border-color .18s ease;
}
.champ-fichier__bouton:hover{ background:#dfeaf5; border-color:var(--ambre-fonce); }
.champ-fichier input[type="file"]:focus-visible + .champ-fichier__bouton{
  outline:3px solid var(--ambre); outline-offset:2px;
}
.champ-fichier__aide{ margin:8px 0 0; font-size:.8125rem; color:var(--gris); }

/* Liste des fichiers choisis : un fichier par ligne, retirable individuellement */
.champ-fichier__liste{
  list-style:none; margin:0; padding:0;
  display:flex; flex-direction:column; gap:6px;
}
.champ-fichier__liste:not(:empty){ margin-top:10px; }
.champ-fichier__item{
  display:flex; align-items:center; gap:8px;
  background:var(--creme); border:1px solid var(--bordure); border-radius:var(--rayon-sm);
  padding:8px 8px 8px 12px; font-size:.8125rem;
}
.champ-fichier__item svg{ flex:none; color:var(--bleu); }
.champ-fichier__nom{
  flex:1 1 auto; min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap;
  color:var(--encre);
}
.champ-fichier__poids{ flex:none; color:var(--gris); }
.champ-fichier__retirer{
  flex:none; display:flex; align-items:center; justify-content:center;
  width:26px; height:26px; padding:0; border:none; border-radius:50%;
  background:transparent; color:var(--gris); cursor:pointer;
  transition:background .15s ease, color .15s ease;
}
.champ-fichier__retirer:hover{ background:rgba(192,57,43,.12); color:var(--erreur); }

/* Petite réassurance affichée juste avant la case RGPD */
.form-aide-rgpd{
  display:flex; align-items:center; gap:8px;
  font-size:.8125rem; color:var(--gris); margin:-6px 0 18px;
}
.form-aide-rgpd svg{ flex:none; color:var(--bleu); }

/* Piège à robots (honeypot) — invisible pour les humains, laissé vide par eux */
.pot-de-miel{
  position:absolute !important; left:-9999px !important;
  width:1px; height:1px; overflow:hidden;
}

/* Message de retour après envoi */
.form-message{
  display:none;
  border-radius:var(--rayon-sm);
  padding:14px 16px;
  font-size:.9375rem;
  margin-bottom:18px;
}
.form-message.est-visible{ display:block; }
.form-message--succes{ background:rgba(30,122,82,.10); border:1px solid rgba(30,122,82,.35); color:var(--succes); }
.form-message--erreur{ background:rgba(192,57,43,.08); border:1px solid rgba(192,57,43,.35); color:var(--erreur); }

.form-note{ font-size:.75rem; color:var(--gris); margin:12px 0 0; text-align:center; }

/* --- Encart de contact à côté du formulaire --- */
.encart-tel{
  background:var(--bleu-fonce);
  color:var(--blanc);
  border-radius:var(--rayon-lg);
  padding:28px 24px;
  box-shadow:var(--ombre-md);
}
.encart-tel h3{ color:var(--blanc); font-size:1.125rem; margin-bottom:4px; }
.encart-tel p{ color:rgba(255,255,255,.8); font-size:.9375rem; }
.encart-tel__numero{
  display:inline-flex; align-items:center; gap:10px;
  font-family:var(--font-titre); font-weight:700;
  font-size:clamp(1.5rem,5vw,1.875rem);
  color:var(--ambre); margin:10px 0 6px;
}
.encart-tel__numero:hover{ color:var(--blanc); }

.horaires{ list-style:none; padding:0; margin:20px 0 0; border-top:1px solid rgba(255,255,255,.18); }
.horaires li{
  display:flex; justify-content:space-between; gap:16px;
  padding:10px 0; font-size:.875rem;
  border-bottom:1px solid rgba(255,255,255,.12);
}
.horaires li span:first-child{ color:rgba(255,255,255,.75); }
.horaires li span:last-child{ font-weight:600; }

.encart-garanties{
  list-style:none; padding:0; margin:20px 0 0;
  display:grid; gap:10px;
}
.encart-garanties li{ display:flex; align-items:flex-start; gap:9px; font-size:.875rem; color:rgba(255,255,255,.88); }
.encart-garanties svg{ flex:none; color:var(--ambre); margin-top:2px; }

@media (min-width:900px){
  .devis__grille{ grid-template-columns:1.25fr .75fr; align-items:start; gap:36px; }
  .form-carte{ padding:32px 30px; }
}

.contact__grille{ display:grid; gap:32px; }

.coordonnees{ list-style:none; padding:0; margin:0 0 24px; display:grid; gap:16px; }
.coordonnees li{ display:flex; gap:14px; align-items:flex-start; }
.coordonnees__icone{
  flex:none; width:44px; height:44px; border-radius:12px;
  background:var(--bleu-clair); color:var(--bleu);
  display:grid; place-items:center;
}
.coordonnees strong{ display:block; font-family:var(--font-titre); color:var(--bleu); font-size:.9375rem; }
.coordonnees a,.coordonnees span{ font-size:.9375rem; color:var(--gris); }
.coordonnees a:hover{ color:var(--ambre-fonce); }

/* Note « entreprise de service, pas d'accueil physique » */
.note-service{
  background:var(--creme);
  border:1px solid rgba(245,166,35,.4);
  border-radius:var(--rayon-md);
  padding:16px 18px;
  font-size:.875rem; color:var(--encre);
  display:flex; gap:12px; align-items:flex-start;
}
.note-service svg{ flex:none; color:var(--ambre-fonce); margin-top:2px; }
.note-service p{ margin:0; }

@media (min-width:900px){ .contact__grille{ grid-template-columns:1fr 1fr; align-items:start; gap:48px; } }

.cta-final{
  background:
    radial-gradient(700px 320px at 85% 0%, rgba(245,166,35,.22), transparent 60%),
    var(--bleu-fonce);
  color:var(--blanc);
  padding-block:52px;
  text-align:center;
}
.cta-final h2{ color:var(--blanc); margin-bottom:12px; }
.cta-final p{ color:rgba(255,255,255,.85); max-width:56ch; margin-inline:auto; margin-bottom:26px; }
.cta-final__boutons{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; }
.cta-final__boutons .btn{ flex:1 1 220px; max-width:280px; }

.footer{ background:var(--bleu-fonce); color:rgba(255,255,255,.75); padding-block:44px 0; font-size:.9375rem; }
.footer__grille{ display:grid; gap:32px; padding-bottom:36px; }

.footer__logo img{ width:200px; height:60px; object-fit:contain; margin-bottom:14px; }
.footer__baseline{ color:rgba(255,255,255,.7); font-size:.9375rem; max-width:40ch; }

.footer h3{
  color:var(--blanc); font-size:.8125rem; font-weight:700;
  letter-spacing:.12em; text-transform:uppercase; margin-bottom:14px;
}
.footer ul{ list-style:none; padding:0; margin:0; display:grid; gap:9px; }
.footer a{ color:rgba(255,255,255,.75); }
.footer a:hover{ color:var(--ambre); }

.footer__tel{
  display:inline-flex; align-items:center; gap:8px;
  font-family:var(--font-titre); font-weight:700; font-size:1.125rem; color:var(--ambre) !important;
  margin-top:6px;
}

.footer__bas{
  border-top:1px solid rgba(255,255,255,.15);
  padding-block:20px 24px;
  display:grid; gap:10px;
  font-size:.8125rem; color:rgba(255,255,255,.6);
}
.footer__bas p{ margin:0; }
.footer__legal{ display:flex; flex-wrap:wrap; gap:6px 18px; }

@media (min-width:700px){ .footer__grille{ grid-template-columns:repeat(2,1fr); } }
@media (min-width:1000px){
  .footer__grille{ grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:40px; }
  .footer__bas{ grid-template-columns:1fr auto; align-items:center; }
}

.barre-appel{
  position:fixed; left:0; right:0; bottom:0; z-index:90;
  display:grid; grid-template-columns:1fr 1fr; gap:10px;
  padding:10px 12px calc(10px + env(safe-area-inset-bottom));
  background:rgba(255,255,255,.97);
  backdrop-filter:blur(8px);
  border-top:1px solid var(--bordure);
  box-shadow:0 -4px 20px rgba(31,42,55,.10);
}
.barre-appel .btn{ padding:13px 14px; font-size:.875rem; }

/* On réserve la place en bas de page pour ne pas masquer le footer */
@media (max-width:999px){ body{ padding-bottom:78px; } }
@media (min-width:1000px){ .barre-appel{ display:none; } }

/* ---------------------------------------------------------------------------
   Barre de premier passage — glisse depuis le bas de l'écran
   Le balisage est injecté par js/script.js : le site compte 29 pages HTML, et
   dupliquer ce bloc dans chacune aurait rendu la moindre retouche pénible.
   --------------------------------------------------------------------------- */
.cookies-barre{
  position:fixed; left:0; right:0; bottom:0; z-index:190;
  background:var(--blanc);
  border-top:1px solid var(--bordure);
  box-shadow:0 -6px 24px rgba(31,42,55,.10);
  padding:14px var(--gouttiere);
  transform:translateY(100%);
  transition:transform .32s cubic-bezier(.22,.61,.36,1);
}
.cookies-barre.est-visible{ transform:translateY(0); }

.cookies-barre__contenu{
  max-width:var(--largeur-max);
  margin:0 auto;
  display:flex; align-items:center; flex-wrap:wrap;
  gap:12px 20px;
}

.cookies-barre__texte{
  flex:1 1 260px;
  margin:0;
  font-size:.8125rem; line-height:1.45; color:var(--encre);
}
.cookies-barre__texte a{ color:var(--ambre-fonce); text-decoration:underline; }

.cookies-barre__actions{
  flex:0 0 auto;
  display:flex; align-items:center; flex-wrap:wrap; gap:8px;
}
.cookies-barre__actions .btn{ padding:9px 14px; font-size:.8125rem; }

/* « Personnaliser » : volontairement discret, pour ne pas concurrencer
   visuellement les deux vrais choix (refuser / accepter). */
.btn--lien{
  background:transparent; color:var(--bleu);
  border-color:transparent; box-shadow:none;
  text-decoration:underline;
}
.btn--lien:hover{
  background:var(--bleu-clair); color:var(--bleu);
  border-color:transparent; transform:none;
}

@media (max-width:600px){
  .cookies-barre__actions{ width:100%; }
  .cookies-barre__actions .btn{ flex:1 1 0; justify-content:center; }
  /* Sur mobile « Personnaliser » passe sous les deux boutons principaux */
  .cookies-barre__actions .btn--lien{ flex:1 1 100%; order:3; }
}

@media (prefers-reduced-motion:reduce){
  .cookies-barre{ transition:none; }
}


/* Fenêtre détaillée, ouverte par « Personnaliser » ou par le lien
   « Gérer mes cookies » du footer */
.cookies{
  position:fixed; inset:0; z-index:200;
  display:none;
  align-items:center; justify-content:center;
  padding:16px;
}
.cookies.est-visible{ display:flex; }
/* Empêche le défilement de l'arrière-plan quand la fenêtre est ouverte */
body.cookies-ouvert{ overflow:hidden; }

.cookies__overlay{
  position:absolute; inset:0;
  background:rgba(31,42,55,.55);
  -webkit-backdrop-filter:blur(2px);
  backdrop-filter:blur(2px);
}

.cookies__panneau{
  position:relative;
  width:100%; max-width:400px;
  max-height:calc(100vh - 32px);
  overflow-y:auto;
  background:var(--blanc);
  border-radius:var(--rayon-lg);
  box-shadow:var(--ombre-lg);
  padding:22px;
}

.cookies__fermer{
  position:absolute; top:12px; right:12px;
  width:28px; height:28px;
  display:inline-flex; align-items:center; justify-content:center;
  font-size:1.35rem; line-height:1;
  color:var(--gris); background:transparent;
  border:0; border-radius:50%; cursor:pointer;
  transition:background-color .18s ease, color .18s ease;
}
.cookies__fermer:hover{ background:var(--bleu-clair); color:var(--encre); }

.cookies__panneau h2{ font-size:1.0625rem; margin-bottom:5px; padding-right:24px; }
.cookies__intro{ font-size:.8125rem; color:var(--gris); margin-bottom:14px; }

/* Une catégorie : descriptif à gauche, interrupteur à droite */
.cookies__cat{
  display:flex; align-items:center; gap:12px;
  background:var(--creme);
  border:1px solid var(--bordure);
  border-radius:var(--rayon-md);
  padding:10px 12px;
  margin-bottom:8px;
}
.cookies__cat-txt{ flex:1 1 auto; }
.cookies__cat-txt h3{ font-size:.8375rem; margin-bottom:2px; }
.cookies__cat-txt p{ font-size:.75rem; line-height:1.35; color:var(--gris); margin:0; }

/* Interrupteur (case à cocher stylée en bascule) */
.interrupteur{ position:relative; flex:0 0 auto; width:40px; height:22px; }
.interrupteur input{
  position:absolute; inset:0; width:100%; height:100%;
  margin:0; opacity:0; cursor:pointer;
}
.interrupteur input:disabled{ cursor:not-allowed; }
.interrupteur__piste{
  position:absolute; inset:0; pointer-events:none;
  background:var(--bordure); border-radius:999px;
  transition:background-color .2s ease;
}
.interrupteur__piste::before{
  content:''; position:absolute; top:3px; left:3px;
  width:16px; height:16px; border-radius:50%;
  background:var(--blanc); box-shadow:var(--ombre-sm);
  transition:transform .2s ease;
}
.interrupteur input:checked + .interrupteur__piste{ background:var(--ambre); }
.interrupteur input:checked + .interrupteur__piste::before{ transform:translateX(18px); }
/* Catégorie « nécessaire » : toujours active, aspect atténué */
.interrupteur input:disabled:checked + .interrupteur__piste{ background:var(--ambre); opacity:.5; }
.interrupteur input:focus-visible + .interrupteur__piste{ outline:2px solid var(--bleu); outline-offset:2px; }

/* Boutons sur une seule ligne : « Tout refuser » à gauche, les deux autres à droite */
.cookies__actions{
  display:flex; align-items:center; gap:8px;
  margin-top:16px;
}
.cookies__actions .btn{ padding:9px 14px; font-size:.8125rem; }
.cookies__actions .btn:first-child{ margin-right:auto; }
/* Boutons « Tout refuser » / « Enregistrer » : poids visuel neutre */
.btn--neutre{ background:var(--blanc); color:var(--bleu); border-color:var(--bordure); }
.btn--neutre:hover{ background:var(--bleu-clair); border-color:var(--bleu); transform:translateY(-2px); }

@media (max-width:399px){
  .cookies__panneau{ padding:18px 15px; }
  .cookies__actions{ gap:6px; }
  .cookies__actions .btn{ padding:9px 10px; font-size:.75rem; }
}

.page-hero{
  background:var(--creme);
  border-bottom:1px solid var(--bordure);
  padding-block:40px;
}
.page-hero h1{ margin-bottom:8px; }
.page-hero p{ color:var(--gris); margin:0; }

.fil-ariane{ font-size:.8125rem; color:var(--gris); margin-bottom:14px; }
.fil-ariane a{ color:var(--gris); }
.fil-ariane a:hover{ color:var(--ambre-fonce); }

/* Corps de texte des pages légales */
.contenu-legal{ max-width:820px; margin-inline:auto; }
.contenu-legal h2{
  font-size:1.375rem; margin-top:44px; padding-top:22px;
  border-top:1px solid var(--bordure);
}
.contenu-legal h2:first-of-type{ margin-top:0; padding-top:0; border-top:0; }
.contenu-legal h3{ font-size:1.0625rem; margin-top:26px; }
.contenu-legal ul{ margin-bottom:1.25rem; }
.contenu-legal li{ margin-bottom:.4rem; }
.contenu-legal table{
  width:100%; border-collapse:collapse; margin-bottom:1.5rem; font-size:.9375rem;
}
.contenu-legal th,.contenu-legal td{
  border:1px solid var(--bordure); padding:10px 12px; text-align:left; vertical-align:top;
}
.contenu-legal th{ background:var(--creme); font-family:var(--font-titre); color:var(--bleu); }
.contenu-legal .maj{ font-size:.8125rem; color:var(--gris); font-style:italic; }
/* Les tableaux doivent défiler horizontalement sur mobile plutôt que déborder */
.table-scroll{ overflow-x:auto; -webkit-overflow-scrolling:touch; }

/* --- Page 404 --- */
.page-404{
  min-height:60vh;
  display:grid; place-items:center; text-align:center;
  padding-block:60px;
  background:
    radial-gradient(700px 340px at 80% 0%, rgba(245,166,35,.16), transparent 60%),
    var(--creme);
}
.page-404__code{
  font-family:var(--font-titre); font-weight:700;
  font-size:clamp(4rem,18vw,8rem); line-height:1;
  color:var(--bleu); margin:0;
}
.page-404__code span{ color:var(--ambre); }
.page-404 p{ color:var(--gris); max-width:52ch; margin-inline:auto; }
.page-404__liens{ display:flex; flex-wrap:wrap; gap:12px; justify-content:center; margin-top:26px; }


a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible{
  outline:3px solid var(--ambre-fonce);
  outline-offset:2px;
  border-radius:4px;
}

/* Apparition douce au défilement (activée par script.js) */
.anim{ opacity:0; transform:translateY(18px); transition:opacity .5s ease, transform .5s ease; }
.anim.est-visible{ opacity:1; transform:none; }

/* Respect de la préférence système « réduire les animations » */
@media (prefers-reduced-motion:reduce){
  html{ scroll-behavior:auto; }
  *,*::before,*::after{
    animation-duration:.01ms !important; animation-iteration-count:1 !important;
    transition-duration:.01ms !important; scroll-behavior:auto !important;
  }
  .anim{ opacity:1; transform:none; }
}

@media print{
  .header,.nav,.barre-appel,.cookies,.cta-final,.carte-maps,.burger{ display:none !important; }
  body{ padding-bottom:0; color:#000; }
  .section{ padding-block:16px; page-break-inside:avoid; }
  a[href^="http"]::after{ content:" (" attr(href) ")"; font-size:.75em; color:#555; }
}
