/* Fenêtr’innov — feuille commune (charte graphique v1.0).
   Valeurs reprises des maquettes Claude Design v3 ; cqw des maquettes → vw. */

@font-face { font-family: "Urbanist"; src: url("fonts/Urbanist-300.woff2") format("woff2"); font-weight: 300; font-display: swap; }
@font-face { font-family: "Urbanist"; src: url("fonts/Urbanist-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "Urbanist"; src: url("fonts/Urbanist-800.woff2") format("woff2"); font-weight: 800; font-display: swap; }
@font-face { font-family: "Manrope"; src: url("fonts/Manrope-400.woff2") format("woff2"); font-weight: 400; font-display: swap; }
@font-face { font-family: "Manrope"; src: url("fonts/Manrope-600.woff2") format("woff2"); font-weight: 600; font-display: swap; }
@font-face { font-family: "Manrope"; src: url("fonts/Manrope-700.woff2") format("woff2"); font-weight: 700; font-display: swap; }
@font-face { font-family: "IBM Plex Mono"; src: url("fonts/IBMPlexMono-500.woff2") format("woff2"); font-weight: 500; font-display: swap; }

:root {
  --fi-bleu-profond: #0444A0;
  --fi-bleu-vitrage: #1061D7;
  --fi-bleu-ciel:    #75ABFD; /* décor uniquement, jamais en texte */
  --fi-azur:         #7CC3FE;
  --fi-givre:        #C0ECFE;
  --fi-encre:   #0B1B33;
  --fi-ardoise: #4A5A70;
  --fi-brume:   #F2F7FC;
  --fi-laiton:  #E8A33D; /* bouton devis, une fois par écran, texte Encre */
  --fi-blanc:   #FFFFFF;
  --fi-filet:        #D5DEE8;
  --fi-filet-clair:  #E3EAF2;
  --fi-filet-cote:   #C7D3E0;
  --fi-champ:        #B8C6D6;
  --fi-filet-sombre: #22344F;
  --fi-texte-sombre-2: #C9D4E2;
  --fi-erreur:       #B3261E;

  --fi-titre: "Urbanist", system-ui, sans-serif;
  --fi-texte: "Manrope", system-ui, sans-serif;
  --fi-cote:  "IBM Plex Mono", ui-monospace, monospace;

  --fi-h1: clamp(36px, 4vw, 48px);
  --fi-h2: clamp(28px, 3vw, 36px);
  --fi-h3: clamp(21px, 2vw, 24px);
  --fi-accroche: clamp(20px, 1.9vw, 24px);

  --fi-largeur-max: 1320px;
  --fi-marge: clamp(20px, 3.5vw, 48px);
  --fi-section-y: clamp(64px, 8vw, 112px);
  --fi-section-y-court: clamp(56px, 7vw, 96px);
  --fi-header-h: 76px;
  --fi-hachures: repeating-linear-gradient(135deg, #E1E9F2 0 14px, #EBF1F7 14px 28px);
}

*, *::before, *::after { box-sizing: border-box; }
html { scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) { html { scroll-behavior: auto; } }
body {
  margin: 0; background: var(--fi-blanc); color: var(--fi-encre);
  font-family: var(--fi-texte); font-size: 17px; line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
a { color: var(--fi-bleu-vitrage); }
a:hover { color: var(--fi-bleu-profond); }
:focus-visible { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }
img { max-width: 100%; }
h1, h2, h3, p, figure, blockquote { margin: 0; }
button { font: inherit; }

.sr-only { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
.skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: 10px 16px; background: var(--fi-bleu-profond); color: #fff; font-weight: 700; border-radius: 4px; text-decoration: none; }
.skip:focus { top: 12px; color: #fff; }
.nowrap { white-space: nowrap; }

.wrap { max-width: var(--fi-largeur-max); margin: 0 auto; padding-left: var(--fi-marge); padding-right: var(--fi-marge); }
.section { padding: var(--fi-section-y) 0; }
.section--court { padding: var(--fi-section-y-court) 0; }
.bg-brume { background: var(--fi-brume); }

/* ---------- Étiquettes, marqueurs, titres ---------- */
.etiquette { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); }
.todo {
  align-self: flex-start; display: inline-block;
  font-family: var(--fi-cote); font-weight: 500; font-size: 11px; line-height: 1.5;
  padding: 1px 6px; border-radius: 3px; background: #fff; color: var(--fi-bleu-profond);
  border: 1px dashed var(--fi-bleu-vitrage);
}
.todo--s { font-size: 10.5px; }

.cote { display: flex; align-items: center; gap: 12px; margin-bottom: 28px; line-height: 1.4; }
.cote::before, .cote::after { content: ""; width: 1px; height: 14px; background: var(--fi-bleu-profond); flex: none; }
.cote__n { color: var(--fi-bleu-profond); }
.cote__filet { flex: 1; height: 1px; background: var(--fi-filet-cote); }

.h2 { font-family: var(--fi-titre); font-weight: 800; font-size: var(--fi-h2); line-height: 1.12; color: var(--fi-bleu-profond); }
.h2 .leger, .h1 .leger { font-weight: 300; }
.h2--marge { margin-bottom: clamp(28px, 3.4vw, 44px); }
.tete-section { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 16px; margin-bottom: clamp(28px, 3.4vw, 44px); }
.lien-fort { font-weight: 700; font-size: 16px; }

/* ---------- Boutons ---------- */
.btn {
  display: inline-flex; align-items: center; height: 56px; padding: 0 24px; border-radius: 4px;
  font-weight: 700; font-size: 16px; text-decoration: none; white-space: nowrap; cursor: pointer; border: 0;
  transition: background-color .3s, color .3s;
}
.btn--fleche { gap: 24px; }
.btn--laiton, .btn--laiton:hover { background: var(--fi-laiton); color: var(--fi-encre); }
.btn--bleu { background: var(--fi-bleu-profond); color: #fff; }
.btn--bleu:hover { background: var(--fi-bleu-vitrage); color: #fff; }
.btn--contour { padding: 0 22px; border: 1.5px solid var(--fi-bleu-profond); color: var(--fi-bleu-profond); background: transparent; }
.btn--contour:hover { background: var(--fi-bleu-profond); color: #fff; }

/* Règle du Laiton : bouton du haut en Laiton tant que le haut de page est visible (desktop),
   bouton du header en Bleu ; inversion ensuite. En mobile, le Laiton est dans la barre du bas. */
.cta-hero { background: var(--fi-bleu-profond); color: #fff; }
.cta-hero:hover { color: #fff; }
@media (min-width: 760px) {
  .hero-in .cta-hero, .hero-in .cta-hero:hover { background: var(--fi-laiton); color: var(--fi-encre); }
}

/* ---------- En-tête « H2 deux niveaux » (maquette collecte/maquettes/heros, 08/10/2026) ----------
   Barre utilitaire de 36 px : zone masquée sous 1200 px, textes courts sous 960 px, version compacte sous 560 px.
   Barre principale de 76 px (64 px sous 960 px) : 4 entrées + Devis gratuit ; burger sous 960 px. */
.util { background: var(--fi-encre); color: var(--fi-texte-sombre-2); font-size: 13.5px; line-height: 1.3; }
.util__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 0 clamp(16px, 3.5vw, 48px); height: 36px; display: flex; align-items: center; gap: 20px; }
.util__g, .util__d { display: flex; align-items: center; gap: 18px; white-space: nowrap; }
.util__d { margin-left: auto; }
.util a { color: #fff; font-weight: 700; text-decoration: none; }
.util a:hover { color: #fff; text-decoration: underline; }
.util .util__parrain { color: var(--fi-azur); }
.util .etoile { letter-spacing: 2px; font-size: 15px; }
.util__sep { width: 1px; height: 14px; background: var(--fi-filet-sombre); }
.util__100c { display: none; }
.util :focus-visible { outline-color: var(--fi-azur); }
@media (max-width: 1199px) { .util__zone { display: none; } }
@media (max-width: 959px) { .util__long { display: none; } }
/* Entre 560 et 680 px, les textes longs ne tiennent pas avec le numéro : il reste dans l’en-tête (☎) et la barre du bas. */
@media (max-width: 679px) { .util__tel { display: none; } }
@media (max-width: 559px) {
  .util__in { gap: 8px; font-size: 13px; }
  .util__g { gap: 8px; }
  .util__tel, .util__sep, .util__google, .util__100l { display: none; }
  .util__100c { display: inline; }
}

.hdr { position: sticky; top: 0; z-index: 50; background: #fff; border-bottom: 1px solid var(--fi-filet); }
.hdr__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 0 clamp(16px, 3.5vw, 48px); height: var(--fi-header-h); display: flex; align-items: center; gap: 16px; }
.hdr__logo { flex: none; display: flex; align-items: center; }
.hdr__logo img { display: block; height: 46px; width: auto; }
.hdr__nav { display: flex; align-items: center; gap: 8px; margin-left: auto; margin-right: 12px; min-width: 0; }
.hdr__lien { display: inline-flex; align-items: center; gap: 6px; padding: 10px 9px; border: 0; background: none; cursor: pointer; font-family: var(--fi-texte); font-size: 16px; font-weight: 600; line-height: 1.4; color: var(--fi-encre); text-decoration: none; white-space: nowrap; }
.hdr__lien:hover, .hdr__lien[aria-expanded="true"] { color: var(--fi-bleu-vitrage); }
.hdr__chev { font-size: 9px; color: var(--fi-bleu-vitrage); }
.hdr__actions { display: flex; align-items: center; gap: 8px; flex: none; }
.hdr__cta { display: inline-flex; align-items: center; gap: 10px; height: 44px; padding: 0 18px; border-radius: 4px; background: var(--fi-laiton); color: var(--fi-encre); font-weight: 700; font-size: 15.5px; text-decoration: none; white-space: nowrap; flex: none; transition: background-color .3s, color .3s; }
.hdr__cta:hover { color: var(--fi-encre); }
.hero-in .hdr__cta, .hero-in .hdr__cta:hover, .accent-bleu .hdr__cta, .accent-bleu .hdr__cta:hover { background: var(--fi-bleu-profond); color: #fff; }
.hdr__mobile { display: none; margin-left: auto; align-items: center; gap: 8px; }
.hdr__carre { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 44px; border: 1.5px solid var(--fi-bleu-profond); border-radius: 4px; background: #fff; color: var(--fi-bleu-profond); font-size: 17px; text-decoration: none; flex: none; }
.hdr__carre:hover { background: var(--fi-bleu-profond); color: #fff; }
.hdr__burger { width: 44px; height: 44px; border: 0; border-radius: 4px; background: var(--fi-bleu-profond); color: #fff; font-size: 18px; cursor: pointer; flex: none; }
.hdr__cta--compact { padding: 0 16px; }
@media (max-width: 959px) {
  :root { --fi-header-h: 64px; }
  .hdr__nav, .hdr__actions { display: none; }
  .hdr__mobile { display: flex; }
}
/* Sous 760 px, la barre fixe du bas porte Appeler / Devis : le bouton compact s’efface. */
@media (max-width: 759px) { .hdr__cta--compact { display: none; } }
@media (max-width: 479px) { .hdr__in { gap: 10px; } .hdr__logo img { height: 40px; } }

/* Méga-menu « Nos menuiseries » : 9 familles + encart (catalogues, zones, FAQ, téléphone). */
.mega { position: absolute; top: 100%; left: 0; right: 0; z-index: 5; background: #fff; border-bottom: 1px solid var(--fi-filet); box-shadow: 0 24px 40px rgba(11,27,51,.10); }
.mega__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 8px clamp(16px, 3.5vw, 48px) 24px; display: grid; grid-template-columns: minmax(0,1fr) 280px; gap: 32px; }
.mega__grille { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); column-gap: 24px; }
.mega__produit { display: grid; grid-template-columns: 30px 1fr; align-content: start; gap: 2px 10px; padding: 14px 0; border-bottom: 1px solid var(--fi-filet-clair); text-decoration: none; color: var(--fi-encre); }
.mega__n { grid-row: span 2; font-family: var(--fi-cote); font-size: 12px; color: var(--fi-ardoise); padding-top: 4px; }
.mega__nom { font-family: var(--fi-titre); font-weight: 700; font-size: 19px; line-height: 1.2; color: var(--fi-bleu-profond); }
.mega__produit:hover .mega__nom { color: var(--fi-bleu-vitrage); }
.mega__b { font-size: 14px; color: var(--fi-ardoise); line-height: 1.4; }
.mega__aside { margin-top: 14px; background: var(--fi-brume); border-radius: 6px; padding: 20px; display: flex; flex-direction: column; gap: 10px; font-size: 15px; line-height: 1.5; }
.mega__aside .etiquette { color: var(--fi-bleu-profond); }
.mega__aside a { font-weight: 700; color: var(--fi-bleu-profond); }
.mega__cat { display: flex; align-items: center; gap: 12px; min-height: 44px; padding: 0 12px; border-radius: 4px; background: #fff; text-decoration: none; }

/* Tiroir mobile (< 960 px) */
.tiroir { position: absolute; top: 100%; left: 0; right: 0; z-index: 5; background: #fff; border-bottom: 1px solid var(--fi-filet); box-shadow: 0 24px 40px rgba(11,27,51,.12); padding: 12px var(--fi-marge) 20px; display: flex; flex-direction: column; max-height: calc(100vh - 120px); max-height: calc(100dvh - 120px); overflow-y: auto; }
.tiroir[hidden], .mega[hidden] { display: none; }
body:has(.tiroir:not([hidden])) .bulle { display: none; }
.tiroir__parrain { display: grid; grid-template-columns: auto 1fr; gap: 12px; align-items: center; padding: 12px; margin-bottom: 8px; border-radius: 6px; background: var(--fi-givre); color: var(--fi-bleu-profond); text-decoration: none; font-size: 14.5px; line-height: 1.4; }
.tiroir__parrain:hover { color: var(--fi-bleu-profond); }
.tiroir__parrain b { font-family: var(--fi-titre); font-weight: 800; font-size: 26px; white-space: nowrap; }
.tiroir__label { padding: 10px 0 4px; }
.tiroir__prod { display: grid; grid-template-columns: 1fr 1fr; column-gap: 12px; }
.tiroir__prod a { padding: 9px 0; border-bottom: 1px solid var(--fi-filet-clair); font-family: var(--fi-titre); font-weight: 700; font-size: 16px; color: var(--fi-bleu-profond); text-decoration: none; line-height: 1.25; }
.tiroir__l { padding: 11px 0; border-bottom: 1px solid var(--fi-filet-clair); font-weight: 700; font-size: 16px; color: var(--fi-encre); text-decoration: none; }
.tiroir__l:last-child { border-bottom: 0; }

/* ---------- Hauts de pages (P1, P3, P4 et accueil A4) ----------
   Règle du 08/10/2026 : derrière le texte du haut de CHAQUE page, un aplat de la charte, Brume, jamais d’image, de photo,
   de voile ni de hachures. Contrastes sur Brume : H1 Bleu profond 8,3:1 · accroche Encre 16:1 · fil d’Ariane et
   étiquette Ardoise 6,5:1. Les photos (bandes P1 et P3, mosaïque de l’accueil) sont du contenu posé SOUS ou À CÔTÉ du
   texte, jamais derrière. */
.p1-wrap .ariane, .p3 .ariane, .p4 .ariane { margin-bottom: 18px; }
/* P1 : bandeau titre + bande photo étroite (fiches produit, /menuiseries/). La bande remonte de 40 % de sa hauteur
   sur l’aplat (marge négative), sans dégradé. */
.p1-wrap, .p3 { --bande-h: clamp(140px, 15vw, 210px); padding-bottom: 8px; }
.p1-wrap--seul { padding-bottom: 0; }
.p1, .p3__fond { background: var(--fi-brume); }
.p1__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 18px var(--fi-marge) 28px; }
.p1-wrap:not(.p1-wrap--seul) .p1__in, .p3__in { padding-bottom: calc(32px + var(--bande-h) * .4); }
.p1__ligne { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 48px; }
.p1__txt { flex: 1 1 520px; min-width: 0; display: flex; flex-direction: column; gap: 12px; }
.p1__txt .accroche { max-width: 640px; }
.p1__cta { flex: none; display: flex; flex-direction: column; gap: 8px; align-items: flex-start; max-width: 100%; }
.p1__fab { max-width: 380px; font-size: 14px; line-height: 1.5; color: var(--fi-ardoise); }
.p1__bande, .p3__bande { position: relative; max-width: var(--fi-largeur-max); margin: calc(var(--bande-h) * -.4) auto 0; padding: 0 var(--fi-marge); display: grid; grid-template-columns: 1fr 1fr; gap: 6px; height: var(--bande-h); }
.p1__bande--1, .p3__bande { grid-template-columns: 1fr; }
.p1__bande .photo, .p3__bande .photo { height: 100%; border-radius: 0; }
.p1__bande .photo:first-child { border-radius: 4px 0 0 4px; }
.p1__bande .photo:last-child { border-radius: 0 4px 4px 0; }
.p1__bande .photo:only-child, .p3__bande .photo { border-radius: 4px; }
@media (max-width: 559px) { .p1__cta { flex: 1 1 100%; } .p1__cta .btn { width: 100%; justify-content: space-between; } .p1__fab { max-width: none; } }
/* P3 : aplat Brume avec le titre, puis la photo du chantier dessous, plus haute qu’en P1 (/realisations/, pages chantier). */
.p3 { --bande-h: clamp(180px, 22vw, 300px); }
.p3__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding-top: 18px; padding-left: var(--fi-marge); padding-right: var(--fi-marge); display: flex; flex-direction: column; gap: 12px; }
.p3 .accroche { max-width: 640px; }
.p3__boutons { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 8px; }
/* P4 : typographique, aplat Brume + 3 repères (pages de lecture). */
.p4 { background: var(--fi-brume); border-bottom: 1px solid var(--fi-filet-clair); }
.p4__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 18px var(--fi-marge) 36px; display: flex; flex-direction: column; gap: 14px; }
.p4 .h1 { font-size: clamp(36px, 4.6vw, 60px); max-width: 900px; }
.p4 .accroche { max-width: 680px; }
.reperes { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)) auto; gap: 8px; margin-top: 14px; align-items: stretch; }
.reperes--sans-bouton { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.repere { background: #fff; border-radius: 6px; padding: 14px 16px; display: flex; flex-direction: column; gap: 4px; line-height: 1.35; }
.repere b { font-weight: 700; font-size: 16px; color: var(--fi-encre); }
.reperes .btn { align-self: center; }
@media (max-width: 899px) { .reperes { grid-template-columns: 1fr 1fr; } .reperes .btn { grid-column: 1 / -1; justify-content: space-between; } }
/* Téléphone : un libellé de bouton long (« Rejoindre le programme, c’est gratuit ») passe sur deux lignes DANS les 56 px
   au lieu d’élargir la grille (débordement de 40 px à 375 px sur /parrainage/, relevé le 08/10/2026). */
@media (max-width: 559px) { .reperes, .reperes--sans-bouton { grid-template-columns: minmax(0, 1fr); } .reperes .btn { white-space: normal; line-height: 1.25; text-align: left; } }

/* ---------- Haut de page produit ---------- */
.hero__in { padding-top: 20px; padding-bottom: clamp(48px, 6vw, 88px); }
.ariane { display: flex; flex-wrap: wrap; gap: 8px; font-size: 14px; color: var(--fi-ardoise); margin-bottom: clamp(24px, 3.5vw, 48px); }
.ariane a { color: var(--fi-ardoise); }
.ariane [aria-current] { color: var(--fi-encre); font-weight: 700; }
.hero__grille { display: flex; flex-wrap: wrap; gap: clamp(32px, 4.5vw, 72px); align-items: center; }
.hero__texte { flex: 1 1 440px; display: flex; flex-direction: column; gap: 20px; min-width: 0; }
.h1 { font-family: var(--fi-titre); font-weight: 800; font-size: var(--fi-h1); line-height: 1.08; letter-spacing: -0.01em; color: var(--fi-bleu-profond); text-wrap: balance; }
.accroche { font-family: var(--fi-titre); font-weight: 300; font-size: var(--fi-accroche); line-height: 1.4; max-width: 520px; }
/* Fabricant (le poseur ne fabrique pas), sous l’accroche des pages produit. */
.hero__fab { margin-top: -8px; max-width: 520px; font-size: 15px; line-height: 1.5; color: var(--fi-ardoise); }
.hero__boutons { display: flex; flex-wrap: wrap; gap: 10px; }
/* Libellé long (« Accéder à l’application de parrainage ») : sur petit écran, le bouton passe sur deux lignes plutôt que de déborder. */
@media (max-width: 559px) { .hero__boutons .btn { white-space: normal; height: auto; min-height: 56px; padding-block: 12px; line-height: 1.25; } }
.pastilles { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; line-height: 1.3; }
.pastille { padding: 8px 14px; border-radius: 999px; background: var(--fi-brume); color: var(--fi-bleu-profond); font-size: 14px; font-weight: 600; }
.pastille--note { display: flex; align-items: center; gap: 7px; background: var(--fi-encre); color: #fff; font-weight: 700; }
.etoile { color: var(--fi-laiton); }
.photo { position: relative; border-radius: 6px; overflow: hidden; background: var(--fi-hachures); }
.photo__label { position: absolute; left: 16px; bottom: 16px; font-family: var(--fi-cote); font-weight: 500; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-bleu-profond); background: #fff; padding: 5px 9px; border-radius: 3px; }
.hero__photo { flex: 1.1 1 400px; aspect-ratio: 5 / 4; max-height: 540px; }
.hero__tuile { flex: 1.1 1 400px; aspect-ratio: 5 / 4; max-height: 540px; }
/* Photo réelle : remplit son cadre (.photo, .chantier__img, cartes) ; les étiquettes placées après restent au-dessus. */
.ph { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; display: block; }
.photo:has(.ph), .chantier__img:has(.ph) { background: var(--fi-brume); }

/* ---------- Bande technique ---------- */
.tech { background: var(--fi-brume); border-top: 1px solid var(--fi-filet); border-bottom: 1px solid var(--fi-filet); }
.tech__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); margin: 0; }
.tech__cell { padding: 22px 20px 22px 0; display: flex; flex-direction: column; gap: 6px; border-right: 1px solid var(--fi-filet); margin: 0; }
.tech__k { font-size: 14px; color: var(--fi-ardoise); }
.tech__todo { margin: 0; display: flex; }
.tech__v { margin: 0; font-family: var(--fi-cote); font-weight: 500; font-size: 17px; color: var(--fi-bleu-profond); }

/* ---------- Bénéfices ---------- */
.benefices { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 40px 32px; }
.benefice { display: flex; flex-direction: column; gap: 10px; padding-top: 24px; border-top: 1.5px solid var(--fi-bleu-profond); }
.benefice .etiquette { text-transform: none; }
.h3 { font-family: var(--fi-titre); font-weight: 700; font-size: var(--fi-h3); line-height: 1.2; color: var(--fi-bleu-profond); }
.benefice p { font-size: 16px; line-height: 1.6; color: var(--fi-ardoise); }
.h2-max { max-width: 700px; }

/* ---------- Comparatif ---------- */
.tableau { overflow-x: auto; background: #fff; border-radius: 6px; }
.tableau table { width: 100%; min-width: 640px; border-collapse: collapse; font-size: 16px; }
.tableau thead th { text-align: left; padding: 20px 22px; font-family: var(--fi-titre); font-weight: 800; font-size: clamp(19px, 1.8vw, 24px); line-height: 1.2; color: var(--fi-bleu-profond); }
.tableau thead th.etiquette { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; color: var(--fi-ardoise); width: 22%; }
.tableau tbody tr { border-top: 1px solid var(--fi-filet-clair); }
.tableau tbody th { text-align: left; padding: 16px 22px; font-weight: 700; }
.tableau td { padding: 16px 22px; color: var(--fi-ardoise); }
.note-tableau { margin-top: 16px; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 14px; color: var(--fi-ardoise); }

/* ---------- Rangées de cartes (modèles, chantiers, autres) ---------- */
.rangee { display: grid; gap: 16px; padding-bottom: 6px; }
.rangee--modeles { grid-template-columns: repeat(var(--n), minmax(0,1fr)); }
.rangee--chantiers { gap: 14px; grid-template-columns: repeat(3, minmax(0,1fr)); }
/* 8 autres familles sur une page produit : 4 + 4. */
.rangee--autres { gap: 14px; grid-template-columns: repeat(4, minmax(0,1fr)); }
@media (min-width: 760px) and (max-width: 999px) {
  .rangee--autres { grid-template-columns: repeat(3, minmax(0,1fr)); }
  .rangee--modeles[data-n="4"] { grid-template-columns: repeat(2, minmax(0,1fr)); }
  .rangee--modeles[data-n="5"] { grid-template-columns: repeat(3, minmax(0,1fr)); }
}
@media (max-width: 759px) {
  .rangee { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 66%; overflow-x: auto; scroll-snap-type: x mandatory; }
  .rangee--modeles, .rangee--chantiers, .rangee--autres { grid-template-columns: none; }
}
.rangee > * { scroll-snap-align: start; }

.modele { display: flex; flex-direction: column; gap: 12px; }
.modele__schema { position: relative; aspect-ratio: 1 / 1; border-radius: 6px; background: repeating-linear-gradient(135deg, #E1E9F2 0 8px, #EBF1F7 8px 16px); }
.modele__schema span { position: absolute; left: 10px; bottom: 10px; font-size: 10.5px; }
.modele .h3 { font-size: 21px; }
.modele p { font-size: 15px; line-height: 1.55; color: var(--fi-ardoise); }

.simu { border: 1.5px dashed var(--fi-bleu-ciel); border-radius: 6px; padding: clamp(28px, 4vw, 48px); display: flex; flex-wrap: wrap; gap: 24px; align-items: center; justify-content: space-between; background: var(--fi-brume); }
.simu__texte { display: flex; flex-direction: column; gap: 10px; max-width: 560px; }
.btn--simu { gap: 20px; }

.chantier { position: relative; display: block; aspect-ratio: 4 / 3; border-radius: 6px; overflow: hidden; text-decoration: none; }
.chantier__img { position: absolute; inset: 0; background: repeating-linear-gradient(135deg, #D3DBE5 0 12px, #DEE5ED 12px 24px); }
.chantier__label { position: absolute; left: 12px; bottom: 12px; background: #fff; border-radius: 4px; padding: 12px 14px; display: flex; flex-direction: column; gap: 4px; }
.chantier__label .etiquette { text-transform: none; }
.chantier__commune { font-family: var(--fi-titre); font-weight: 700; font-size: 21px; line-height: 1.15; color: var(--fi-bleu-profond); }
.chantier__legende { font-size: 14px; line-height: 1.35; color: var(--fi-ardoise); }
.chantier:has(.ph) .chantier__label { max-width: calc(100% - 24px); }

/* ---------- Avis ---------- */
/* Ruptures de fond des pages produit : comparatif sur Bleu profond, avis sur Encre (texte clair, contraste ≥ 4,5:1, aucun bouton Laiton). */
.fond-bleu { background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.fond-bleu .h2 { color: var(--fi-blanc); }
.fond-bleu .h2 .leger { color: var(--fi-givre); }
.fond-bleu .cote { color: var(--fi-givre); }
.fond-bleu .cote__n { color: var(--fi-blanc); }
.fond-bleu .cote::before, .fond-bleu .cote::after { background: var(--fi-givre); }
.fond-bleu .cote__filet { background: var(--fi-azur); }
.fond-bleu .note-tableau { color: var(--fi-givre); }
.fond-bleu .tableau { color: var(--fi-encre); }
.fond-bleu :focus-visible { outline-color: var(--fi-blanc); }
.fond-encre { background: var(--fi-encre); color: var(--fi-blanc); }
.fond-encre .avis__chiffre { color: var(--fi-blanc); }
.fond-encre .avis__etoiles { color: var(--fi-texte-sombre-2); }
.fond-encre .avis__carte { background: var(--fi-filet-sombre); color: var(--fi-blanc); }
.fond-encre .avis__carte figcaption { color: var(--fi-texte-sombre-2); }
.fond-encre .avis__carte figcaption b { color: var(--fi-blanc); }
.fond-encre a:not(.btn) { color: var(--fi-azur); }
.fond-encre a:not(.btn):hover { color: var(--fi-blanc); }
.fond-encre :focus-visible { outline-color: var(--fi-azur); }
/* Chantiers liés sans photo (pergolas, stores) : un seul encart, pas de case vide. */
.chantiers-a-venir { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 16px 32px; padding: clamp(22px, 3vw, 36px); border-radius: 6px; background: var(--fi-blanc); border: 1px solid var(--fi-filet); }
.chantiers-a-venir__t { margin: 0; max-width: 640px; font-family: var(--fi-titre); font-weight: 700; font-size: clamp(19px, 1.8vw, 22px); line-height: 1.3; color: var(--fi-bleu-profond); }
.chantiers-a-venir__liens { display: flex; flex-wrap: wrap; gap: 12px 28px; }
.chantiers-a-venir__liens a { white-space: nowrap; }
.avis { display: flex; flex-wrap: wrap; gap: clamp(32px, 5vw, 80px); align-items: center; }
.avis__note { flex: 0 1 280px; display: flex; flex-direction: column; gap: 8px; }
.avis__chiffre { font-family: var(--fi-titre); font-weight: 800; font-size: clamp(80px, 9vw, 120px); line-height: .85; letter-spacing: -0.03em; color: var(--fi-bleu-profond); }
.avis__etoiles { font-size: 16px; color: var(--fi-ardoise); }
.avis__etoiles span { color: var(--fi-laiton); letter-spacing: 2px; }
.avis__note a { margin-top: 4px; }
.avis__liste { flex: 1 1 480px; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: 16px; }
.avis__carte { padding: 24px; border-radius: 6px; background: var(--fi-brume); display: flex; flex-direction: column; gap: 12px; }
.avis__carte blockquote { font-family: var(--fi-titre); font-weight: 300; font-size: 21px; line-height: 1.4; }
.avis__carte figcaption { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 15px; }
.avis__carte figcaption b { font-weight: 700; }

/* ---------- FAQ ---------- */
.faq { display: flex; flex-wrap: wrap; gap: clamp(28px, 5vw, 80px); align-items: flex-start; }
.faq__intro { flex: 1 1 300px; display: flex; flex-direction: column; gap: 14px; }
.faq__intro p { color: var(--fi-ardoise); }
.faq__intro a { font-weight: 700; white-space: nowrap; color: var(--fi-bleu-profond); }
.faq__liste { flex: 1.6 1 520px; display: flex; flex-direction: column; border-top: 1.5px solid var(--fi-bleu-profond); }
.faq__item { border-bottom: 1px solid var(--fi-filet-cote); }
.faq__q { margin: 0; font-size: inherit; }
.faq__btn { width: 100%; display: grid; grid-template-columns: 48px minmax(0,1fr) 36px; align-items: center; gap: 12px; padding: 20px 0; border: 0; background: transparent; text-align: left; cursor: pointer; }
.faq__n { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; color: var(--fi-ardoise); }
.faq__texte { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(19px, 1.8vw, 21px); line-height: 1.3; color: var(--fi-bleu-profond); }
.faq__icone { width: 36px; height: 36px; border-radius: 50%; background: #fff; color: var(--fi-bleu-profond); display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 600; }
.faq__btn[aria-expanded="true"] .faq__icone { background: var(--fi-bleu-profond); color: #fff; }
.faq__icone::before { content: "+"; }
.faq__btn[aria-expanded="true"] .faq__icone::before { content: "−"; }
.faq__r { padding: 0 48px 24px 60px; display: flex; flex-direction: column; gap: 10px; line-height: 1.65; max-width: 760px; }
.faq__r[hidden] { display: none; }
.faq__r .todo { font-size: 11.5px; padding: 2px 7px; }
@media (max-width: 759px) { .faq__r { padding: 0 0 24px 60px; } }

/* ---------- Autres menuiseries ---------- */
.autre { display: flex; flex-direction: column; gap: 8px; padding: 20px; border-radius: 6px; background: var(--fi-brume); text-decoration: none; color: var(--fi-bleu-profond); min-height: 150px; transition: background-color .2s; }
.autre:hover { background: var(--fi-givre); color: var(--fi-bleu-profond); }
.autre .etiquette { text-transform: none; }
.autre__nom { font-family: var(--fi-titre); font-weight: 700; font-size: 21px; line-height: 1.2; }
.autre__b { font-size: 15px; line-height: 1.5; color: var(--fi-ardoise); }
.autre__lien { margin-top: auto; font-size: 15px; font-weight: 700; color: var(--fi-bleu-vitrage); }

/* ---------- Section devis ---------- */
.devis { padding: var(--fi-section-y) 0; background: var(--fi-encre); color: #fff; scroll-margin-top: var(--fi-header-h); }
.devis__in { display: flex; flex-wrap: wrap; gap: clamp(32px, 5vw, 80px); align-items: flex-start; padding-left: clamp(16px, 3.5vw, 48px); padding-right: clamp(16px, 3.5vw, 48px); }
.devis__texte { flex: 1 1 340px; display: flex; flex-direction: column; gap: 18px; }
.devis__texte .etiquette { color: var(--fi-azur); }
.devis__texte .h2 { color: #fff; }
.devis__texte .h2 .leger { color: var(--fi-azur); }
.devis__texte .accroche { color: #E3EDF7; max-width: 440px; }
.devis__tel { display: flex; flex-direction: column; gap: 2px; margin-top: 8px; }
.devis__tel span { font-size: 15px; color: var(--fi-texte-sombre-2); }
.devis__tel a { color: #fff; font-family: var(--fi-titre); font-size: var(--fi-h2); font-weight: 800; text-decoration: none; white-space: nowrap; line-height: 1.15; }
.devis__form { flex: 1.4 1 460px; min-width: 0; }

/* ---------- Formulaire de devis ---------- */
.fd { background: #fff; border-radius: 6px; padding: clamp(22px, 3vw, 40px); color: var(--fi-encre); min-height: 540px; display: flex; flex-direction: column; gap: 24px; }
.fd [hidden] { display: none !important; }
.fd__tete { display: flex; flex-direction: column; gap: 12px; }
.fd__tete-l { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
.fd__tete-l .etiquette { color: var(--fi-bleu-profond); }
.fd__gratuit { font-size: 14px; color: var(--fi-ardoise); }
.fd__progres { display: grid; grid-template-columns: repeat(3, minmax(0,1fr)); gap: 6px; }
.fd__seg { display: flex; flex-direction: column; gap: 8px; }
.fd__seg i { height: 4px; border-radius: 2px; background: var(--fi-filet-clair); transition: background-color .3s; }
.fd__seg span { font-size: 13.5px; font-weight: 600; color: var(--fi-ardoise); }
.fd__seg.is-on i { background: var(--fi-bleu-profond); }
.fd__seg.is-on span { color: var(--fi-encre); }
.fd__etape { display: flex; flex-direction: column; gap: 16px; }
.fd__etape--1 { gap: 14px; }
.fd__etape--2 { gap: 18px; }
.fd .h3 { font-weight: 800; }
.fd__aide { color: var(--fi-ardoise); font-size: 15px; }
.fd__puces { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 210px), 1fr)); gap: 8px; }
.fd__puce { display: flex; align-items: center; justify-content: space-between; gap: 10px; min-height: 52px; padding: 0 16px; border-radius: 4px; border: 1.5px solid var(--fi-champ); background: #fff; color: var(--fi-encre); font: 600 15px var(--fi-texte); text-align: left; cursor: pointer; transition: all .15s; }
.fd__puce::after { content: "+"; font-size: 14px; }
.fd__puce[aria-pressed="true"] { background: var(--fi-bleu-profond); border-color: var(--fi-bleu-profond); color: #fff; }
.fd__puce[aria-pressed="true"]::after { content: "✓"; }
.fd__ligne { display: flex; flex-wrap: wrap; gap: 16px; }
.fd__champ { display: flex; flex-direction: column; gap: 8px; }
.fd__champ > span:first-child { font-size: 14px; font-weight: 700; }
.fd__fac { font-weight: 400; color: var(--fi-ardoise); }
.fd input[type="text"], .fd input[type="tel"], .fd input[type="email"], .fd textarea {
  height: 52px; border: 1px solid var(--fi-champ); border-radius: 4px; padding: 0 16px;
  font: 400 16px var(--fi-texte); color: var(--fi-encre); outline: none; background: #fff; width: 100%;
}
.fd textarea { height: auto; padding: 14px 16px; font: 400 16px/1.55 var(--fi-texte); resize: vertical; }
.fd input.fd__mono { font: 500 15px var(--fi-cote); }
.fd input:focus, .fd textarea:focus { border-color: var(--fi-bleu-vitrage); box-shadow: 0 0 0 3px rgba(16,97,215,.15); }
.fd__qte { display: flex; align-items: center; height: 52px; border: 1px solid var(--fi-champ); border-radius: 4px; overflow: hidden; }
.fd__qte button { width: 52px; height: 100%; border: 0; background: var(--fi-brume); font-size: 20px; color: var(--fi-bleu-profond); cursor: pointer; }
.fd__qte button:first-child { border-right: 1px solid var(--fi-champ); }
.fd__qte button:last-child { border-left: 1px solid var(--fi-champ); }
.fd__qte output { flex: 1; text-align: center; font-weight: 700; font-size: 17px; font-variant-numeric: tabular-nums; }
.fd__photos { display: flex; align-items: center; gap: 14px; padding: 16px; border: 1px dashed var(--fi-bleu-ciel); border-radius: 4px; background: var(--fi-brume); cursor: pointer; }
.fd__photos:focus-within { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }
.fd__photos-plus { flex: none; width: 44px; height: 44px; border-radius: 4px; background: #fff; border: 1.5px solid var(--fi-bleu-profond); display: flex; align-items: center; justify-content: center; font-size: 20px; color: var(--fi-bleu-profond); }
.fd__photos-t { display: flex; flex-direction: column; gap: 2px; }
.fd__photos-t b { font-weight: 700; font-size: 15px; }
.fd__photos-t span { font-size: 14px; color: var(--fi-ardoise); }
.fd__grille { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 14px; }
.fd__consent { display: flex; gap: 12px; align-items: flex-start; font-size: 14px; line-height: 1.55; color: var(--fi-ardoise); cursor: pointer; }
.fd__consent input { width: 20px; height: 20px; margin: 1px 0 0; accent-color: var(--fi-bleu-profond); flex: none; }
.fd__pot { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.fd__erreur { font-size: 14px; font-weight: 700; color: var(--fi-erreur); }
.fd__demo { flex: 1 1 100%; margin: 0; padding: 10px 12px; border-radius: 4px; background: var(--fi-brume); border: 1px dashed var(--fi-bleu-vitrage); font-size: 14px; line-height: 1.5; color: var(--fi-encre); }
.fd__demo a { font-weight: 700; white-space: nowrap; }
.fd__pied { margin-top: auto; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; padding-top: 20px; border-top: 1px solid var(--fi-filet-clair); }
.fd__retour { height: 54px; padding: 0 20px; border-radius: 4px; border: 1.5px solid var(--fi-bleu-profond); background: #fff; font: 700 16px var(--fi-texte); color: var(--fi-bleu-profond); cursor: pointer; }
.fd__suivant { margin-left: auto; flex: 1 1 220px; max-width: 360px; height: 54px; padding: 0 22px; border-radius: 4px; border: 0; background: var(--fi-bleu-profond); color: #fff; font: 700 16px var(--fi-texte); cursor: pointer; display: flex; align-items: center; justify-content: space-between; }
.fd__suivant:hover { background: var(--fi-bleu-vitrage); }
.fd__suivant:disabled { opacity: .6; cursor: wait; }
.fd__ok { flex: 1; display: flex; flex-direction: column; align-items: flex-start; justify-content: center; gap: 16px; }
.fd__ok-pastille { width: 56px; height: 56px; border-radius: 50%; background: var(--fi-givre); color: var(--fi-bleu-profond); display: flex; align-items: center; justify-content: center; font-size: 26px; font-weight: 700; }
.fd__ok .h2 { line-height: 1.1; }
.fd__ok p { font-size: 17px; line-height: 1.65; color: var(--fi-ardoise); max-width: 440px; }
.fd__ok p.fd__ok-tel { font-size: 15px; }
.fd__ok-tel a { font-weight: 700; white-space: nowrap; }
.fd__autre { margin-top: 8px; border: 0; background: transparent; padding: 0; font: 600 15px var(--fi-texte); color: var(--fi-bleu-vitrage); cursor: pointer; text-decoration: underline; }

/* ---------- Pied de page ---------- */
.pied { position: relative; background: var(--fi-encre); color: var(--fi-texte-sombre-2); font-size: 15px; line-height: 1.65; overflow: hidden; }
.pied__in { padding-top: clamp(56px, 7vw, 88px); }
.pied__haut { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px; padding-bottom: 40px; border-bottom: 1px solid var(--fi-filet-sombre); }
.pied__haut img { display: block; height: 58px; width: auto; }
.pied__contact { display: flex; flex-direction: column; gap: 2px; align-items: flex-start; }
.pied__tel { font-family: var(--fi-titre); font-weight: 800; font-size: var(--fi-h2); color: #fff; text-decoration: none; white-space: nowrap; line-height: 1.1; }
.pied__tel:hover { color: #fff; }
.pied__mail { color: var(--fi-azur); text-decoration: none; }
.pied__mail:hover { color: #fff; }
.pied__parrain { display: grid; grid-template-columns: auto 1fr auto; align-items: center; gap: 8px 24px; margin-top: 32px; padding: 20px 24px; border: 1px solid var(--fi-filet-sombre); border-radius: 4px; color: var(--fi-texte-sombre-2); text-decoration: none; transition: border-color .2s; }
.pied__parrain:hover, .pied__parrain:focus-visible { border-color: var(--fi-azur); }
.pied__parrain-c { font-family: var(--fi-titre); font-weight: 800; font-size: 34px; line-height: 1; color: var(--fi-azur); white-space: nowrap; }
.pied__parrain-t strong { color: #fff; }
.pied__parrain-l { display: inline-flex; align-items: center; justify-content: center; gap: 12px; height: 56px; padding: 0 24px; border-radius: 4px; background: var(--fi-laiton); color: var(--fi-encre); font-weight: 700; font-size: 16px; white-space: nowrap; transition: background-color .3s, color .3s; }
@media (max-width: 759px) { .pied__parrain { grid-template-columns: auto 1fr; } .pied__parrain-l { grid-column: 1 / -1; justify-self: stretch; } }
.pied__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); gap: 40px 32px; padding: 40px 0 48px; }
.pied__col { display: flex; flex-direction: column; gap: 6px; }
.pied__col:first-child { gap: 8px; }
.pied__titre { margin: 0 0 6px; font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-azur); }
.pied__col .pied__titre a { color: inherit; text-decoration: none; }
.pied__col .pied__titre a:hover { text-decoration: underline; }
.pied__col a { color: #fff; text-decoration: none; }
.pied__col a:hover { color: var(--fi-azur); }
.pied__col a.pied__tout { color: var(--fi-azur); font-weight: 700; }
.pied__info { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.pied__note { color: #fff; font-weight: 700; }
.pied__bas { padding: 20px 0 28px; border-top: 1px solid var(--fi-filet-sombre); display: flex; flex-wrap: wrap; gap: 10px 24px; font-size: 13.5px; }
.pied__bas a { color: var(--fi-texte-sombre-2); text-decoration: none; }
.pied__bas a:hover { color: #fff; }

/* ---------- Bulle de contact et barre mobile ---------- */
.bulle { position: sticky; bottom: 24px; height: 0; z-index: 61; }
.bulle__in { position: absolute; right: clamp(14px, 2vw, 24px); bottom: 0; display: flex; flex-direction: column; align-items: flex-end; gap: 10px; }
.bulle__panneau { width: 290px; background: #fff; border-radius: 6px; box-shadow: 0 20px 50px rgba(11,27,51,.22); padding: 8px; display: flex; flex-direction: column; }
.bulle__panneau[hidden] { display: none; }
/* Mobile : la bulle masquerait les messages d’erreur du formulaire ; la barre du bas offre déjà Appeler et Devis. */
@media (max-width: 759px) { body:has(.fd:focus-within) .bulle { display: none; } }
.bulle__titre { font-family: var(--fi-titre); font-weight: 800; font-size: 19px; color: var(--fi-bleu-profond); padding: 10px 12px 8px; }
.bulle__lien { display: flex; align-items: center; gap: 12px; padding: 14px 12px; border-radius: 4px; color: var(--fi-encre); text-decoration: none; font-weight: 700; white-space: nowrap; }
.bulle__lien:hover { background: var(--fi-brume); color: var(--fi-encre); }
.bulle__lien--mail { font-size: 15px; }
.point-wa { width: 10px; height: 10px; border-radius: 50%; background: #25D366; flex: none; }
.bulle__btn { display: flex; align-items: center; gap: 10px; height: 52px; padding: 0 20px 0 16px; border-radius: 999px; border: 1px solid var(--fi-filet); background: #fff; color: var(--fi-encre); font: 700 15px var(--fi-texte); cursor: pointer; box-shadow: 0 10px 30px rgba(11,27,51,.22); }
.bulle__btn .point-wa { box-shadow: 0 0 0 4px rgba(37,211,102,.25); }
.barre { display: none; }
@media (max-width: 759px) {
  /* Barre flottante (13/10/2026). Collée au bas de l’écran, elle laissait une bande vide
     sous ses boutons sur iPhone (Safari iOS 26) quand la barre d’adresse se repliait :
     Safari arrête la page au-dessus de sa pastille et prolonge la couleur de la barre
     jusqu’au bord. Détachée des bords, elle flotte au-dessus du contenu.
     Barre 70 px + 12 px → bord haut à 82 px ; bulle et cookies à 96 px ; le pied de page
     descend sous la barre et la bulle pour que sa dernière ligne reste lisible. */
  .bulle { bottom: calc(96px + env(safe-area-inset-bottom, 0px)); }
  .barre { position: fixed; left: 12px; right: 12px; bottom: calc(12px + env(safe-area-inset-bottom, 0px)); z-index: 60; display: grid; grid-template-columns: 1fr 1.5fr; gap: 8px; padding: 8px; background: #fff; border: 1px solid var(--fi-filet); border-radius: 10px; box-shadow: 0 12px 30px -8px rgba(11,27,51,.32); }
  .pied { padding-bottom: calc(164px + env(safe-area-inset-bottom, 0px)); }
  .barre a { display: flex; align-items: center; justify-content: center; gap: 8px; height: 52px; border-radius: 4px; font-weight: 700; font-size: 16px; text-decoration: none; }
  .barre__appel { border: 1.5px solid var(--fi-bleu-profond); color: var(--fi-bleu-profond); }
  .barre__devis, .barre__devis:hover { background: var(--fi-laiton); color: var(--fi-encre); }
}
/* 320 px : « Demander un devis » élargissait la grille (et la page) de 6 px. */
@media (max-width: 359px) {
  .barre { grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr); gap: 6px; padding: 6px; }
  .barre a { font-size: 14px; gap: 6px; }
  /* Même largeur : « Demander mon devis gratuit → » dépassait de 7 px (débordement préexistant). */
  .btn--fleche { gap: 12px; padding: 0 18px; }
}

/* ---------- Apparitions au scroll ---------- */
.js [data-reveal].is-cache { opacity: 0; transform: translateY(18px); }
.js [data-reveal] { transition: opacity .7s cubic-bezier(.2,.7,.2,1), transform .7s cubic-bezier(.2,.7,.2,1); }
@media (prefers-reduced-motion: reduce) { .js [data-reveal].is-cache { opacity: 1; transform: none; } }

/* ---------- Bandeau cookies (06/10/2026) ---------- */
.cookies { position: fixed; left: 16px; right: 16px; bottom: 16px; z-index: 90; display: flex; justify-content: center; pointer-events: none; }
.cookies[hidden] { display: none; }
.cookies__in { pointer-events: auto; width: min(100%, 920px); display: flex; flex-wrap: wrap; align-items: center; gap: 14px 24px; padding: 18px 22px; border-radius: 12px; background: var(--fi-encre); color: var(--fi-texte-sombre-2); box-shadow: 0 12px 40px rgba(6, 20, 45, .28); font-size: 15px; line-height: 1.55; }
.cookies__texte { flex: 1 1 420px; margin: 0; }
.cookies__texte strong { color: #fff; margin-right: 4px; }
.cookies__texte a { color: var(--fi-azur); }
.cookies__boutons { display: flex; gap: 10px; flex: none; }
.cookies__btn { min-height: 44px; }
.cookies .btn--contour { color: #fff; border-color: rgba(255, 255, 255, .55); background: transparent; }
.cookies .btn--contour:hover, .cookies .btn--contour:focus-visible { border-color: #fff; }
.pied__cookies { padding: 0; border: 0; background: none; color: var(--fi-texte-sombre-2); font: inherit; cursor: pointer; text-decoration: none; }
.pied__cookies:hover { color: #fff; text-decoration: underline; }
/* Mobile : au-dessus de la barre Appeler / Devis, et la bulle Contact s’efface tant que le bandeau est ouvert. */
@media (max-width: 759px) { .cookies { left: 10px; right: 10px; bottom: calc(96px + env(safe-area-inset-bottom, 0px)); } .cookies__in { padding: 16px; font-size: 14px; } .cookies__boutons { width: 100%; } .cookies__btn { flex: 1; } .cookies-ouvert .bulle { display: none; } }


/* ---- accueil.css ---- */
/* Accueil (maquette « Accueil v3 ») — classes préfixées .acc-, variables de :root uniquement. */

.acc-ancre { scroll-margin-top: var(--fi-header-h); }

/* ---------- Haut de page « A4 mosaïque » (maquette collecte/maquettes/heros, 08/10/2026) : rien ne bouge ---------- */
.a4__in { padding-top: clamp(32px, 4.5vw, 64px); padding-bottom: clamp(40px, 5vw, 72px); display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(32px, 4.5vw, 72px); align-items: center; }
.a4__texte { display: flex; flex-direction: column; gap: 22px; min-width: 0; }
/* Aplat Brume derrière le texte (règle du 08/10/2026, comme P1, P3 et P4) ; la mosaïque est du contenu, à côté du texte. */
.a4 { background: var(--fi-brume); border-bottom: 1px solid var(--fi-filet); }
.a4 .h1 { font-size: clamp(34px, 3.8vw, 52px); }
.a4__boutons { display: flex; flex-wrap: wrap; align-items: center; gap: 14px 26px; }
.a4__lien { font-weight: 700; font-size: 16px; text-decoration: underline; text-underline-offset: 4px; text-decoration-thickness: 1.5px; white-space: nowrap; display: inline-flex; align-items: center; min-height: 44px; }
.a4__mos { display: grid; grid-template-columns: 1.15fr 1fr 1fr; grid-template-rows: 1fr 1fr; grid-template-areas: "m1 m2 m2" "m1 m3 m4"; gap: 8px; height: clamp(420px, 40vw, 560px); }
.a4__mos > * { border-radius: 6px; overflow: hidden; position: relative; min-height: 0; }
.a4__mos .m1 { grid-area: m1; } .a4__mos .m2 { grid-area: m2; } .a4__mos .m3 { grid-area: m3; } .a4__mos .m4 { grid-area: m4; }
.a4__mos .photo__label { left: 10px; bottom: 10px; }
.a4__chiffre { background: var(--fi-bleu-profond); color: #fff; padding: 16px; display: flex; flex-direction: column; justify-content: space-between; gap: 6px; }
.a4__chiffre-n { font-family: var(--fi-titre); font-weight: 800; font-size: clamp(38px, 4vw, 56px); line-height: 1; }
.a4__chiffre-t { font-weight: 700; font-size: 15px; line-height: 1.3; }
.a4__chiffre-g { font-size: 13.5px; color: #fff; border-top: 1px solid rgba(255,255,255,.3); padding-top: 8px; line-height: 1.35; }
.a4__chiffre-g .etoile { letter-spacing: 2px; }
@media (max-width: 759px) {
  .a4__in { grid-template-columns: 1fr; }
  .a4__mos { grid-template-columns: 1fr 1fr; grid-template-rows: 190px 150px 150px; grid-template-areas: "m2 m2" "m1 m3" "m1 m4"; height: auto; }
}

/* ---------- 01 · Nos menuiseries ---------- */
.acc-tete { gap: 16px 40px; }
.acc-intro { max-width: 460px; color: var(--fi-ardoise); }
.acc-cartes { display: grid; gap: 20px; grid-template-columns: repeat(3, minmax(0, 1fr)); padding-bottom: 6px; }
/* 9 familles : 3 × 3 sur ordinateur et tablette (pas de rangée orpheline), défilement horizontal sur mobile. */
.acc-carte { display: flex; flex-direction: column; background: var(--fi-blanc); border-radius: 6px; overflow: hidden; text-decoration: none; color: var(--fi-encre); transition: transform .25s ease, box-shadow .25s ease; scroll-snap-align: start; }
.acc-carte:hover { transform: translateY(-3px); box-shadow: 0 14px 30px color-mix(in srgb, var(--fi-bleu-profond) 10%, transparent); color: var(--fi-encre); }
.acc-carte__img { position: relative; aspect-ratio: 4 / 3; background: var(--fi-hachures); }
.acc-carte__tag { position: absolute; left: 12px; top: 12px; font-family: var(--fi-cote); font-weight: 500; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-bleu-profond); background: var(--fi-blanc); padding: 4px 8px; border-radius: 3px; line-height: 1.4; }
.acc-carte__corps { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.acc-n { text-transform: none; }
.acc-carte__nom { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(21px, 2vw, 24px); line-height: 1.2; color: var(--fi-bleu-profond); }
.acc-carte__b { font-size: 16px; line-height: 1.55; color: var(--fi-ardoise); }
.acc-carte__lien { margin-top: auto; padding-top: 12px; font-size: 15px; font-weight: 700; color: var(--fi-bleu-vitrage); }

/* ---------- 02 · Avant / Après ---------- */
.acc-tete--ba { margin-bottom: 28px; gap: 20px; }
.acc-ba__onglets { display: flex; gap: 4px; padding: 4px; background: var(--fi-brume); border-radius: 6px; }
.acc-ba__onglet { height: 44px; padding: 0 18px; border: 0; border-radius: 4px; background: transparent; color: var(--fi-bleu-profond); font: 700 15px var(--fi-texte); cursor: pointer; }
.acc-ba__onglet[aria-selected="true"] { background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.acc-ba { display: flex; flex-direction: column; gap: 14px; }
.acc-ba__cadre { position: relative; aspect-ratio: 16 / 8; border-radius: 6px; overflow: hidden; user-select: none; }
.acc-ba__apres, .acc-ba__avant { position: absolute; inset: 0; }
.acc-ba__apres { background: repeating-linear-gradient(135deg, var(--fi-givre) 0 14px, color-mix(in srgb, var(--fi-givre) 60%, var(--fi-blanc)) 14px 28px); }
.acc-ba__avant { background: var(--fi-hachures); clip-path: inset(0 calc(100% - var(--pos, 50%)) 0 0); }
.acc-ba__badge { position: absolute; left: 16px; top: 16px; padding: 5px 10px; border-radius: 3px; background: var(--fi-blanc); color: var(--fi-encre); font-family: var(--fi-cote); font-size: 12px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; line-height: 1.4; }
.acc-ba__badge--apres { left: auto; right: 16px; background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.acc-ba__poignee { position: absolute; top: 0; bottom: 0; left: var(--pos, 50%); width: 3px; margin-left: -1.5px; background: var(--fi-blanc); pointer-events: none; }
.acc-ba__poignee span { position: absolute; top: 50%; left: 50%; width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 50%; background: var(--fi-bleu-profond); color: var(--fi-blanc); display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; box-shadow: 0 6px 16px color-mix(in srgb, var(--fi-encre) 25%, transparent); }
.acc-ba__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.acc-ba__cadre:has(.acc-ba__range:focus-visible) { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }
.acc-ba__legende { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; font-size: 15px; font-weight: 600; color: var(--fi-ardoise); }

/* ---------- 03 · Nos engagements (Bleu Profond) ---------- */
.acc-eng { position: relative; background: var(--fi-bleu-profond); color: var(--fi-blanc); overflow: hidden; }
.acc-eng__reflets { position: absolute; inset: 0; background: linear-gradient(135deg, transparent 0 58%, color-mix(in srgb, var(--fi-bleu-ciel) 16%, transparent) 58% 61%, transparent 61% 64.5%, color-mix(in srgb, var(--fi-bleu-ciel) 10%, transparent) 64.5% 66%, transparent 66%); }
.acc-eng__in { position: relative; }
.acc-cote-sombre { color: var(--fi-givre); }
.acc-cote-sombre::before, .acc-cote-sombre::after { background: var(--fi-givre); }
.acc-cote-sombre .cote__n { color: var(--fi-blanc); }
.acc-cote-sombre .cote__filet { background: color-mix(in srgb, var(--fi-givre) 35%, transparent); }
.acc-eng__grille { display: flex; flex-wrap: wrap; gap: clamp(32px, 5vw, 80px); }
.acc-eng__intro { flex: 1 1 300px; display: flex; flex-direction: column; gap: 16px; }
.acc-eng__intro .h2 { color: var(--fi-blanc); }
.acc-eng__intro p { color: var(--fi-givre); max-width: 380px; }
.acc-eng__liste { flex: 1.6 1 520px; min-width: 0; list-style: none; margin: 0; padding: 0; border-bottom: 1px solid color-mix(in srgb, var(--fi-givre) 30%, transparent); }
.acc-eng__ligne { display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 4px 16px; padding: 20px 0; border-top: 1px solid color-mix(in srgb, var(--fi-givre) 30%, transparent); }
.acc-eng__n { grid-row: span 3; font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; color: var(--fi-givre); padding-top: 6px; }
.acc-eng__t { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(21px, 2vw, 24px); line-height: 1.2; }
.acc-eng__d { font-size: 16px; line-height: 1.6; color: color-mix(in srgb, var(--fi-givre) 45%, var(--fi-blanc)); }
.acc-eng__ligne .todo { justify-self: start; margin-top: 4px; grid-column: 2; }

/* ---------- 04 · Notre méthode ---------- */
.acc-meth__titre { margin-bottom: clamp(36px, 4.5vw, 64px); }
.acc-etapes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 40px 0; }
@media (min-width: 1100px) { .acc-etapes { grid-template-columns: repeat(5, minmax(0, 1fr)); } }
.acc-etape { position: relative; display: flex; flex-direction: column; gap: 10px; padding: 28px 28px 0 0; border-top: 1.5px solid var(--fi-bleu-profond); }
.acc-etape::before { content: ""; position: absolute; left: 0; top: -8px; width: 1.5px; height: 15px; background: var(--fi-bleu-profond); }
.acc-etape__n { font-family: var(--fi-titre); font-weight: 300; font-size: clamp(56px, 6vw, 80px); line-height: .9; color: var(--fi-bleu-profond); }
.acc-etape__t { margin-top: 8px; }
.acc-etape__d { font-size: 16px; line-height: 1.6; color: var(--fi-ardoise); }
.acc-meth__cta { margin-top: 52px; }

/* ---------- 05 · Derniers chantiers ---------- */
.acc-btn-50 { padding: 0 20px; } /* 56 px comme tous les .btn (règle du 08/10/2026 ; était 50 px) */
.acc-chantiers { display: grid; gap: 14px; grid-template-columns: repeat(4, minmax(0, 1fr)); grid-auto-rows: 270px; padding-bottom: 6px; }
@media (max-width: 1099px) { .acc-chantiers { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.acc-chantier { aspect-ratio: auto; min-height: 240px; scroll-snap-align: start; }
.acc-chantier--grand { grid-column: span 2; grid-row: span 2; }
.acc-chantier .chantier__label { max-width: calc(100% - 24px); }
.acc-cp { letter-spacing: .08em; }
.acc-commune { white-space: nowrap; hyphens: none; }
.acc-produit { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; font-size: 14px; color: var(--fi-ardoise); }

/* ---------- 06 · Avis clients ---------- */
.acc-avis__grille { display: flex; flex-wrap: wrap; gap: clamp(32px, 6vw, 96px); align-items: flex-start; }
.acc-avis__note { flex: 0 1 320px; display: flex; flex-direction: column; gap: 10px; }
.acc-avis__chiffre { font-family: var(--fi-titre); font-weight: 800; font-size: clamp(96px, 11vw, 152px); line-height: .85; letter-spacing: -0.03em; color: var(--fi-bleu-profond); }
.acc-avis__note .lien-fort { margin-top: 6px; }
.acc-avis__liste { flex: 1 1 480px; min-width: 0; display: flex; flex-direction: column; border-bottom: 1px solid var(--fi-filet); }
.acc-avis { padding: 26px 0; border-top: 1px solid var(--fi-filet); display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 10px 16px; }
.acc-avis__n { grid-row: span 2; font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; color: var(--fi-ardoise); padding-top: 6px; }
.acc-avis blockquote { font-family: var(--fi-titre); font-weight: 300; font-size: var(--fi-accroche); line-height: 1.4; color: var(--fi-encre); }
.acc-avis figcaption { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; font-size: 15px; }
.acc-avis figcaption b { font-weight: 700; }

/* ---------- Partenaires ---------- */
.acc-part { border-top: 1px solid var(--fi-filet); border-bottom: 1px solid var(--fi-filet); }
.acc-part__in { display: flex; flex-wrap: wrap; align-items: stretch; }
.acc-part__texte { flex: 1 1 240px; padding: 24px 24px 24px 0; display: flex; flex-direction: column; justify-content: center; gap: 8px; }
.acc-part__t { font-family: var(--fi-titre); font-weight: 700; font-size: 21px; line-height: 1.2; color: var(--fi-bleu-profond); }
.acc-part__grille { flex: 3 1 560px; display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 999px) { .acc-part__grille { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
.acc-part__case { min-height: 104px; border-left: 1px solid var(--fi-filet-clair); display: flex; align-items: center; justify-content: center; text-align: center; padding: 8px; font-family: var(--fi-cote); font-weight: 500; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); }
.acc-part__case--nom { font-family: var(--fi-titre); font-weight: 800; font-size: 21px; letter-spacing: .02em; color: var(--fi-encre); }
.acc-part__grille--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.acc-part__grille--3 .acc-part__case--nom { flex-direction: column; gap: 6px; text-transform: none; }
.acc-part__pergolas { font-size: 14px; line-height: 1.5; color: var(--fi-ardoise); }
.acc-part__gamme { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); }
@media (max-width: 599px) { .acc-part__grille--3 .acc-part__case--nom { font-size: 17px; padding: 8px 4px; } .acc-part__gamme { font-size: 11px; letter-spacing: .04em; } }

/* ---------- 08 · Devis (Encre) ---------- */
.acc-cote-encre { color: var(--fi-azur); }
.acc-cote-encre::before, .acc-cote-encre::after { background: var(--fi-azur); }
.acc-cote-encre .cote__n { color: var(--fi-blanc); }
.acc-cote-encre .cote__filet { background: var(--fi-filet-sombre); }
.acc-devis__in { padding-left: 0; padding-right: 0; }
.acc-checks { list-style: none; margin: 6px 0 0; padding: 0; border-top: 1px solid var(--fi-filet-sombre); }
.acc-checks li { display: flex; gap: 14px; padding: 14px 0; border-bottom: 1px solid var(--fi-filet-sombre); font-weight: 600; }
.acc-checks span { color: var(--fi-azur); }

/* ---------- 09 · Conseils (cartes non cliquables tant que /conseils/ n’existe pas) ---------- */
.acc-conseils { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); gap: 40px 24px; }
.acc-conseil { display: flex; flex-direction: column; gap: 12px; }
.acc-conseil > :first-child { border-radius: 4px; overflow: hidden; margin-bottom: 4px; }
.acc-conseil__t { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(21px, 2vw, 24px); line-height: 1.2; color: var(--fi-bleu-profond); }

/* ---------- Mobile (< 760 px) ---------- */
@media (max-width: 759px) {
  .acc-cartes, .acc-chantiers { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 80%; overflow-x: auto; scroll-snap-type: x mandatory; }
  .acc-chantiers { grid-auto-rows: 320px; }
  .acc-chantier--grand { grid-column: auto; grid-row: auto; }
  .acc-ba__cadre { aspect-ratio: 4 / 5; }
  .acc-eng__liste, .acc-avis__liste, .acc-part__grille { flex-basis: 100%; }
  .acc-part__texte { padding-right: 0; }
  .acc-part__case:nth-child(3n + 1) { border-left: 0; }
}

/* ---------- 06/10/2026 : avant/après en 3 colonnes, avis en carrousel (boutons .acc-diaporama__btn), logos fabricants ---------- */
.acc-diaporama__btn { width: 44px; height: 44px; border-radius: 50%; border: 1.5px solid var(--fi-bleu-profond); background: var(--fi-blanc); color: var(--fi-bleu-profond); font-size: 18px; cursor: pointer; transition: background .2s, color .2s; }
.acc-diaporama__btn:hover:not(:disabled), .acc-diaporama__btn:focus-visible { background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.acc-diaporama__btn:disabled { opacity: .35; cursor: default; }

.acc-ba__grille > .acc-ba { position: relative; }
.acc-ba__grille { display: grid; gap: 20px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.acc-ba__grille .acc-ba__cadre { aspect-ratio: 4 / 5; }
.acc-ba__grille .acc-ba__badge { top: 12px; left: 12px; }
.acc-ba__grille .acc-ba__badge--apres { left: auto; right: 12px; }
.acc-ba__grille .acc-ba__poignee span { width: 44px; height: 44px; margin: -22px 0 0 -22px; }
.acc-ba__grille .acc-ba__legende { flex-direction: column; align-items: flex-start; gap: 4px; }
.acc-ba__plus { display: inline-block; margin-top: 24px; }
@media (max-width: 1099px) and (min-width: 760px) { .acc-ba__grille { gap: 14px; } }
@media (max-width: 759px) { .acc-ba__grille { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 82%; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; } .acc-ba__grille > * { scroll-snap-align: start; } }

.acc-avis__tete { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 20px 40px; margin-bottom: 28px; }
.acc-avis__note { display: flex; flex-direction: column; gap: 10px; }
.acc-avis__google { display: inline-flex; align-items: center; gap: 10px; min-height: 48px; padding: 10px 18px; border: 1.5px solid var(--fi-filet); border-radius: 999px; background: var(--fi-blanc); color: var(--fi-encre); font-weight: 700; text-decoration: none; transition: border-color .2s, box-shadow .2s; }
.acc-avis__google:hover, .acc-avis__google:focus-visible { border-color: var(--fi-bleu-profond); box-shadow: 0 4px 14px color-mix(in srgb, var(--fi-bleu-profond) 14%, transparent); }
.g-google { flex: none; display: block; }
.acc-avis__piste { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 40px) / 3); gap: 20px; overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding: 2px 2px 8px; }
.acc-avis__piste::-webkit-scrollbar { display: none; }
.acc-avis__piste:focus-visible { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 4px; }
.acc-avis__piste .acc-avis { position: relative; scroll-snap-align: start; display: flex; flex-direction: column; gap: 16px; margin: 0; padding: 26px 24px; border: 1px solid var(--fi-filet); border-top: 1px solid var(--fi-filet); border-radius: 10px; background: var(--fi-blanc); }
.acc-avis__etoiles { color: #F5B301; letter-spacing: 2px; font-size: 16px; }
.acc-avis__piste blockquote { flex: 1; font-size: 18px; line-height: 1.5; }
.acc-avis__piste figcaption { display: flex; align-items: center; gap: 10px; font-size: 15px; }
.acc-avis__piste figcaption .g-google { margin-left: auto; }
.acc-avis__initiale { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--fi-brume); color: var(--fi-bleu-profond); font-weight: 800; font-family: var(--fi-titre); }
.acc-avis__ctrl { display: flex; justify-content: flex-end; gap: 10px; margin-top: 16px; }
@media (max-width: 1099px) { .acc-avis__piste { grid-auto-columns: calc((100% - 20px) / 2); } }
@media (max-width: 759px) { .acc-avis__piste { grid-auto-columns: 86%; } }

.acc-part__logos { flex: 3 1 560px; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.acc-part__logo { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; min-height: 150px; padding: 20px 16px; border-left: 1px solid var(--fi-filet-clair); text-decoration: none; transition: background .25s; }
.acc-part__logo img { display: block; height: 64px; width: auto; max-width: 100%; object-fit: contain; filter: grayscale(1); opacity: .6; transition: filter .3s, opacity .3s, transform .3s; }
.acc-part__logo:hover, .acc-part__logo:focus-visible { background: var(--fi-brume); }
.acc-part__logo:hover img, .acc-part__logo:focus-visible img { filter: none; opacity: 1; transform: scale(1.06); }
.acc-part__logo .acc-part__gamme { transition: color .3s; }
.acc-part__logo:hover .acc-part__gamme { color: var(--fi-bleu-profond); }
@media (hover: none) { .acc-part__logo img { filter: none; opacity: .9; } }
/* Biason : logo vertical, plus haut pour peser autant que les deux logos horizontaux */
.acc-part__logo img[src*="biason"] { height: 92px; }
@media (max-width: 599px) { .acc-part__logo { min-height: 120px; padding: 14px 6px; } .acc-part__logo img { height: 44px; } .acc-part__logo img[src*="biason"] { height: 64px; } .acc-part__logo:first-child { border-left: 0; } }


/* ---- annexes.css ---- */
/* Pages annexes (devis, mentions, confidentialité, plan du site, 404).
   Tout le reste vient des classes communes (hero__in, ariane, cote, devis, avis__carte, autre…). */

/* Haut de page court, sans photo */

/* /devis/ : formulaire à gauche, réassurance à droite (au-dessous en mobile) */
.ann-devis .devis__form { flex: 1.5 1 520px; }
.ann-devis .devis__texte { flex: 1 1 320px; }
.ann-etapes { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ann-etapes li { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: 12px; padding: 14px 0; border-top: 1px solid var(--fi-filet-sombre); color: var(--fi-texte-sombre-2); font-size: 16px; line-height: 1.5; }
.ann-etapes li:last-child { border-bottom: 1px solid var(--fi-filet-sombre); }
.ann-etapes b { display: block; color: var(--fi-blanc); font-weight: 700; }
.ann-etapes .etiquette { padding-top: 3px; }
.devis__tel .ann-devis__mail { font-family: var(--fi-texte); font-size: 16px; font-weight: 600; color: var(--fi-azur); margin-top: 4px; }
.ann-devis__avis { color: var(--fi-encre); }
.ann-devis__avis blockquote { font-size: 19px; }

/* Mentions légales, confidentialité : blocs numérotés */
.ann-bloc { display: grid; grid-template-columns: 64px minmax(0, 760px); gap: 16px; padding: 32px 0; border-top: 1px solid var(--fi-filet-cote); }
.ann-bloc:last-child { border-bottom: 1px solid var(--fi-filet-cote); }
.ann-bloc__n { color: var(--fi-bleu-profond); padding-top: 6px; }
.ann-bloc__c { display: flex; flex-direction: column; gap: 12px; min-width: 0; overflow-wrap: anywhere; }
.ann-dl { display: grid; grid-template-columns: minmax(140px, 220px) minmax(0, 1fr); gap: 8px 20px; margin: 0; }
.ann-dl dt { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); padding-top: 4px; }
.ann-dl dd { margin: 0; }
@media (max-width: 759px) {
  .ann-bloc { grid-template-columns: minmax(0, 1fr); gap: 8px; padding: 24px 0; }
  .ann-dl { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .ann-dl dd { margin-bottom: 10px; }
}

/* Plan du site */
.ann-plan { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 32px clamp(24px, 3vw, 48px); }
.ann-plan__col { display: flex; flex-direction: column; gap: 8px; }
.ann-plan__col ul { list-style: none; margin: 4px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.ann-plan__col a { font-weight: 600; }
.ann-plan__col a[aria-current] { color: var(--fi-encre); }

/* 404 : les 9 familles, 3 × 3 */
@media (min-width: 760px) { .rangee--autres.ann-six { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* /apporteurs-affaires/ */
.ann-app__note { font-size: 15px; color: var(--fi-ardoise); }
.ann-app__etapes { grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.ann-app__fin { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 20px 40px; }
.ann-app__fin p { max-width: 620px; color: var(--fi-ardoise); }
.devis__tel .ann-devis__horaires { font-size: 14px; line-height: 1.5; color: var(--fi-texte-sombre-2); margin-top: 6px; }

/* /parrainage/ : chiffres clés */
.ann-app__chiffres { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); }
.ann-app__chiffre { display: flex; flex-direction: column; gap: 6px; padding: 22px 24px; border: 1px solid var(--fi-filet); border-radius: 14px; background: var(--fi-blanc); color: var(--fi-ardoise); }
.ann-app__c { font-family: var(--fi-titre); font-size: clamp(30px, 4vw, 40px); line-height: 1; font-weight: 800; color: var(--fi-bleu-profond); }
.ann-app__intro { margin: 14px 0 28px; max-width: 720px; color: var(--fi-ardoise); }
.ann-app__exemple { margin-top: 18px; color: var(--fi-ardoise); max-width: 720px; }

/* /catalogues/ */
.ann-cat { display: grid; gap: 16px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
.ann-cat__carte { display: flex; flex-direction: column; gap: 8px; padding: 22px 24px; border: 1px solid var(--fi-filet); border-radius: 14px; background: var(--fi-blanc); color: inherit; text-decoration: none; transition: border-color .2s, transform .2s; }
.ann-cat__carte:hover, .ann-cat__carte:focus-visible { border-color: var(--fi-bleu-profond); transform: translateY(-2px); }
.ann-cat__titre { font-weight: 700; font-size: 18px; line-height: 1.3; }
.ann-cat__meta { font-size: 14px; color: var(--fi-ardoise); }
.ann-cat__lien { margin-top: auto; padding-top: 8px; font-weight: 600; color: var(--fi-bleu-profond); }
.ann-cat__note, .ann-cat__intro { margin-top: 18px; max-width: 760px; color: var(--fi-ardoise); }
.ann-cat__intro { margin: 0 0 24px; }
.ann-cat__actions { margin-top: 28px; }
@media (max-width: 479px) { .ann-cat__actions .btn--fleche { white-space: normal; line-height: 1.25; gap: 16px; } } /* libellé long : 2 lignes dans les 56 px plutôt qu’un débordement à 375 px */
.rangee--autres.ann-cat__autres { grid-template-columns: repeat(auto-fit, minmax(min(100%, 200px), 1fr)); }
/* Parrainage (mode application de Clément) : barème chiffré, sous-titre du déroulé, projets à recommander, bouton sous le guide. */
.ann-app__bareme { width: 100%; max-width: 760px; margin-top: 28px; border-collapse: collapse; background: var(--fi-blanc); border: 1px solid var(--fi-filet); border-radius: 14px; overflow: hidden; }
.ann-app__bareme caption { text-align: left; padding-bottom: 10px; color: var(--fi-ardoise); font-size: 15px; }
.ann-app__bareme th, .ann-app__bareme td { padding: 12px 16px; text-align: left; border-top: 1px solid var(--fi-filet); }
.ann-app__bareme thead th { border-top: 0; font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); }
.ann-app__bareme tbody th { font-weight: 600; }
.ann-app__bareme td:last-child { font-weight: 800; color: var(--fi-bleu-profond); white-space: nowrap; }
.ann-app__bareme td:nth-child(2) { white-space: nowrap; }
.ann-app__sous { margin: 40px 0 16px; }
.ann-app__projets { list-style: none; margin: 0 0 28px; padding: 0; display: flex; flex-wrap: wrap; gap: 10px; }
.ann-app__projets a { display: inline-flex; align-items: center; min-height: 44px; padding: 8px 16px; border: 1px solid var(--fi-filet); border-radius: 999px; background: var(--fi-blanc); font-weight: 600; text-decoration: none; }
.ann-app__projets a:hover { border-color: var(--fi-bleu-profond); }
.ann-app__actions { margin-top: 28px; }
@media (max-width: 559px) { .ann-app__bareme th, .ann-app__bareme td { padding: 10px 10px; font-size: 15px; } }
/* Parrainage : frise « après votre recommandation » (5 étapes). Verticale sur mobile, horizontale dès 960 px. */
.frise { position: relative; list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.frise__etape:not(:last-child)::before { content: ''; position: absolute; left: 19px; top: 40px; bottom: -16px; width: 2px; background: var(--fi-filet-cote); }
.frise__etape { position: relative; display: grid; grid-template-columns: 40px minmax(0, 1fr); gap: 16px; align-items: start; }
.frise__n { position: relative; z-index: 1; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 50%; background: var(--fi-bleu-profond); color: var(--fi-blanc); font-family: var(--fi-titre); font-weight: 800; font-size: 17px; box-shadow: 0 0 0 6px var(--fi-brume); }
.frise__c { display: flex; flex-direction: column; gap: 8px; height: 100%; padding: 18px 20px; background: var(--fi-blanc); border: 1px solid var(--fi-filet); border-radius: 14px; }
.frise__etape:last-child .frise__c { border-color: var(--fi-bleu-profond); box-shadow: 0 0 0 1px var(--fi-bleu-profond); }
.frise__t { margin: 0; font-family: var(--fi-titre); font-size: 18px; line-height: 1.25; font-weight: 700; color: var(--fi-encre); }
.frise__c p { margin: 0; font-size: 15px; line-height: 1.55; color: var(--fi-ardoise); }
.frise__statut { align-self: flex-start; margin-top: auto; padding: 4px 10px; border-radius: 999px; background: #E4EEFB; color: var(--fi-bleu-profond); font-size: 13px; font-weight: 600; }
@media (min-width: 960px) {
  .frise { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 20px; }
  .frise__etape:not(:last-child)::before { left: 40px; right: -20px; top: 19px; bottom: auto; width: auto; height: 2px; }
  .frise__etape { grid-template-columns: none; grid-template-rows: 40px 1fr; gap: 16px; }
}
/* Parrainage : « Sur l’application, où cliquer ? » (deux cartes + vraies captures des boutons) et « Qui recommander, et avec qui ? ». */
.appli__duo { display: grid; gap: 20px; grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.appli__carte { display: flex; flex-direction: column; gap: 12px; padding: 26px 26px 22px; border: 1px solid var(--fi-filet); border-radius: 14px; background: var(--fi-blanc); }
.appli__carte p { margin: 0; color: var(--fi-ardoise); font-size: 16px; line-height: 1.6; }
.appli__ico { display: grid; place-items: center; flex: none; width: 48px; height: 48px; border-radius: 12px; background: #E4EEFB; color: var(--fi-bleu-profond); }
.appli__ico--petit { width: 42px; height: 42px; border-radius: 10px; }
.appli__ico svg { width: 24px; height: 24px; }
.appli__t { margin: 0; font-family: var(--fi-titre); font-size: 21px; line-height: 1.25; font-weight: 700; color: var(--fi-encre); }
.appli__t--petit { font-size: 18px; }
.appli__capture { margin: auto 0 0; padding: 18px; border-radius: 10px; background: #151C2A; display: flex; flex-direction: column; align-items: center; gap: 10px; }
.appli__capture img { display: block; width: 100%; max-width: 324px; height: auto; -webkit-mask-image: radial-gradient(ellipse 72% 80% at 50% 50%, #000 62%, transparent 100%); mask-image: radial-gradient(ellipse 72% 80% at 50% 50%, #000 62%, transparent 100%); }
.appli__capture figcaption { font-size: 13px; color: #9AA8BC; }
.appli__usages, .avecqui__roles { list-style: none; margin: 0; padding: 0; display: grid; gap: 16px; }
.appli__usages { grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); }
.appli__usage { display: flex; gap: 14px; align-items: flex-start; padding: 18px 20px; border: 1px solid var(--fi-filet); border-radius: 14px; background: var(--fi-blanc); }
.appli__usage p { margin: 4px 0 0; font-size: 15px; line-height: 1.55; color: var(--fi-ardoise); }
.reco-produits { display: grid; gap: 12px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); margin-bottom: 40px; }
.reco-produit { display: flex; align-items: center; gap: 14px; padding: 10px; border: 1px solid var(--fi-filet); border-radius: 12px; background: var(--fi-blanc); text-decoration: none; transition: border-color .2s, box-shadow .2s; }
.reco-produit:hover { border-color: var(--fi-bleu-profond); box-shadow: 0 10px 24px color-mix(in srgb, var(--fi-bleu-profond) 10%, transparent); }
.reco-produit__img { flex: none; width: 112px; }
.reco-produit__vis { border-radius: 8px; overflow: hidden; }
.reco-produit__vis .ent-carte__lieu, .reco-produit__vis .ent-carte__typo-marque, .reco-produit__vis .ent-carte__typo-mat { display: none; }
.reco-produit__vis .photo, .reco-produit__vis img { width: 100%; height: 100%; object-fit: cover; }
.reco-produit__vis .ent-carte__typo-n { font-size: 40px; }
.reco-produit__txt { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.reco-produit__nom { font-family: var(--fi-titre); font-weight: 700; font-size: 18px; line-height: 1.25; color: var(--fi-encre); }
.reco-produit__lien { font-size: 14px; font-weight: 700; color: var(--fi-bleu-vitrage); }
.avecqui { display: grid; gap: 20px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .avecqui { grid-template-columns: minmax(0, 380px) minmax(0, 1fr); align-items: start; } }
.avecqui__portrait { display: flex; gap: 20px; align-items: center; padding: 22px; border: 1px solid var(--fi-filet); border-radius: 14px; background: var(--fi-blanc); }
.avecqui__img { flex: none; width: 120px; aspect-ratio: 4 / 5; border-radius: 10px; }
.avecqui__img img { width: 100%; height: 100%; object-fit: cover; }
.avecqui__qui { display: flex; flex-direction: column; gap: 4px; color: var(--fi-ardoise); font-size: 15px; min-width: 0; }
.avecqui__nom { font-family: var(--fi-titre); font-weight: 800; font-size: 22px; color: var(--fi-encre); }
.avecqui__tel { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; font-weight: 700; color: var(--fi-bleu-profond); text-decoration: none; }
.avecqui__tel svg { width: 18px; height: 18px; }
.avecqui__preuve { margin-top: 24px; color: var(--fi-ardoise); }
@media (max-width: 559px) {
  .reco-produit__img { width: 96px; }
  .reco-produit__nom { font-size: 17px; }
  .avecqui__img { width: 96px; }
  .appli__carte { padding: 22px 18px 18px; }
}


/* ---- chantiers.css ---- */
/* Réalisations (lot 3) : /realisations/ et les 5 pages chantier. Préfixe .chn-.
   Fonds alternés clair / brume / sombre (Encre) ; formes : curseur, grille numérotée, fiche, grande photo. */

/* ---------- Haut de page : P3 (src/commun.ts › hautDePage) ; ce qui était à droite passe juste dessous ---------- */
.chn-ouverture__in > .chn-ba, .chn-ouverture__in > .chn-demande { width: 100%; max-width: 860px; margin: 0 auto; }
.chn-ouverture__in > .chn-ba { max-width: 640px; }

/* Demande du client, en grand, à droite d’un haut de page sans photo */
.chn-demande { margin: 0; display: flex; flex-direction: column; gap: 14px; padding: clamp(24px, 3vw, 40px); border-left: 3px solid var(--fi-bleu-vitrage); background: var(--fi-brume); border-radius: 0 6px 6px 0; }
.chn-demande p { font-family: var(--fi-titre); font-weight: 300; font-size: clamp(22px, 2.3vw, 30px); line-height: 1.35; color: var(--fi-encre); }

/* /realisations/ : chiffres vérifiés, sous le titre du haut de page P3 (aplat Brume) */
.chn-chiffres { display: flex; gap: clamp(24px, 3.5vw, 48px); margin: 0; padding-top: 20px; border-top: 1.5px solid var(--fi-bleu-profond); }
.chn-chiffres div { display: flex; flex-direction: column-reverse; gap: 4px; }
.chn-chiffres dt { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); }
.chn-chiffres dd { margin: 0; font-family: var(--fi-titre); font-weight: 800; font-size: clamp(44px, 5vw, 64px); line-height: .95; color: var(--fi-bleu-profond); }
.p3 .chn-chiffres { margin-top: 8px; padding-top: 14px; align-self: flex-start; }
.p3 .chn-chiffres dd { font-size: clamp(36px, 4vw, 52px); }

/* ---------- Fond sombre (Encre) ---------- */
.chn-sombre { background: var(--fi-encre); color: var(--fi-blanc); }
.chn-sombre .h2, .chn-sombre .h3 { color: var(--fi-blanc); }
.chn-sombre .h2 .leger { color: var(--fi-azur); }
.chn-sombre .etiquette { color: var(--fi-azur); }
.chn-sombre a:not(.btn) { color: var(--fi-azur); }
.chn-sombre a:not(.btn):hover { color: var(--fi-blanc); }
.chn-sombre__p { max-width: 520px; color: var(--fi-texte-sombre-2); font-size: 16px; line-height: 1.6; }
.chn-cote-sombre { color: var(--fi-givre); }
.chn-cote-sombre::before, .chn-cote-sombre::after { background: var(--fi-givre); }
.chn-cote-sombre .cote__n { color: var(--fi-blanc); }
.chn-cote-sombre .cote__filet { background: var(--fi-filet-sombre); }
.chn-centre { text-align: center; }

/* ---------- Comparateur avant / après ---------- */
.chn-ba { display: flex; flex-direction: column; gap: 14px; margin: 0; min-width: 0; }
.chn-ba--large { max-width: 860px; margin: 0 auto; width: 100%; }
.chn-ba__onglets { display: flex; gap: 4px; padding: 4px; background: var(--fi-brume); border-radius: 6px; align-self: flex-start; max-width: 100%; }
.chn-ba__onglet { min-height: 44px; padding: 0 16px; border: 0; border-radius: 4px; background: transparent; color: var(--fi-bleu-profond); font: 700 15px var(--fi-texte); cursor: pointer; }
.chn-ba__onglet[aria-selected="true"] { background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.chn-ba__cadre { position: relative; aspect-ratio: 1 / 1; border-radius: 6px; overflow: hidden; user-select: none; background: var(--fi-hachures); }
.chn-ba__apres, .chn-ba__avant { position: absolute; inset: 0; }
.chn-ba__avant { clip-path: inset(0 calc(100% - var(--pos, 50%)) 0 0); }
.chn-ba__vue { position: absolute; inset: 0; }
.chn-ba__vue[hidden] { display: none; }
.chn-ba__badge { position: absolute; left: 14px; top: 14px; padding: 5px 10px; border-radius: 3px; background: var(--fi-blanc); color: var(--fi-encre); font-family: var(--fi-cote); font-size: 12px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; line-height: 1.4; }
.chn-ba__badge--apres { left: auto; right: 14px; background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.chn-ba__poignee { position: absolute; top: 0; bottom: 0; left: var(--pos, 50%); width: 3px; margin-left: -1.5px; background: var(--fi-blanc); pointer-events: none; }
.chn-ba__poignee span { position: absolute; top: 50%; left: 50%; width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 50%; background: var(--fi-bleu-profond); color: var(--fi-blanc); display: flex; align-items: center; justify-content: center; font-size: 18px; font-weight: 700; box-shadow: 0 6px 16px color-mix(in srgb, var(--fi-encre) 25%, transparent); }
.chn-ba__range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; touch-action: pan-y; }
.chn-ba__cadre:has(.chn-ba__range:focus-visible) { outline: 3px solid var(--fi-bleu-vitrage); outline-offset: 3px; }
.chn-sombre .chn-ba__cadre:has(.chn-ba__range:focus-visible) { outline-color: var(--fi-azur); }
.chn-ba__legende { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; font-size: 15px; font-weight: 600; color: var(--fi-ardoise); }
.chn-sombre .chn-ba__legende { color: var(--fi-texte-sombre-2); }
.chn-ba__aide { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-bleu-vitrage); }
.chn-sombre .chn-ba__aide { color: var(--fi-azur); }
.chn-ba__aide::after { content: " ↔"; }
.chn-ba__doute[hidden] { display: none; }

/* ---------- Photos numérotées ---------- */
.chn-nums { display: grid; gap: clamp(14px, 2vw, 24px); grid-template-columns: repeat(2, minmax(0, 1fr)); position: relative; }
.chn-num { margin: 0; display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.chn-num__img { position: relative; aspect-ratio: 1 / 1; border-radius: 6px; overflow: hidden; background: var(--fi-hachures); }
.chn-num figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 12px; font-size: 16px; font-weight: 600; }
.chn-num__n { font-family: var(--fi-titre); font-weight: 800; font-size: 32px; line-height: 1; color: var(--fi-bleu-profond); }
.chn-sombre .chn-num__n { color: var(--fi-azur); }
.chn-nums--fleche::after { content: "→"; position: absolute; left: 50%; top: calc(50% - 24px); width: 52px; height: 52px; margin: -26px 0 0 -26px; border-radius: 50%; background: var(--fi-bleu-profond); color: var(--fi-blanc); border: 3px solid var(--fi-blanc); display: flex; align-items: center; justify-content: center; font-size: 20px; font-weight: 700; pointer-events: none; }

/* ---------- Récit et fiche ---------- */
.chn-duo { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 80px); align-items: start; }
.chn-duo--curseur { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center; }
.chn-duo__texte { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.chn-duo__texte .h2--marge { margin-bottom: 4px; }
.chn-recit { display: flex; flex-direction: column; gap: 20px; }
.chn-recit__bloc { display: flex; flex-direction: column; gap: 6px; padding-top: 16px; border-top: 1px solid var(--fi-filet-cote); }
.chn-sombre .chn-recit__bloc { border-top-color: var(--fi-filet-sombre); }
.chn-recit p { color: var(--fi-ardoise); }
.chn-sombre .chn-recit p { color: var(--fi-texte-sombre-2); }
.chn-recit--grand p { font-family: var(--fi-titre); font-weight: 300; font-size: clamp(20px, 1.9vw, 24px); line-height: 1.45; color: var(--fi-encre); }
.chn-sombre .chn-recit--grand p { color: var(--fi-blanc); }
.chn-note { margin-top: 20px; font-size: 15px; color: var(--fi-ardoise); }

.chn-fiche { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.chn-fiche dl { margin: 0; display: grid; }
.chn-fiche dl > div { display: grid; grid-template-columns: minmax(110px, 38%) minmax(0, 1fr); gap: 4px 16px; padding: 12px 0; border-top: 1px solid var(--fi-filet); }
.chn-fiche dt { font-size: 14px; color: var(--fi-ardoise); padding-top: 2px; }
.chn-fiche dd { margin: 0; font-weight: 600; line-height: 1.5; }
.chn-fiche ul { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 2px; }
.chn-fiche li::before { content: "— "; color: var(--fi-bleu-vitrage); }
.chn-fiche__cp { font-family: var(--fi-cote); font-weight: 500; font-size: 14px; color: var(--fi-ardoise); }
.chn-fiche--carte { padding: clamp(20px, 2.5vw, 32px); border-radius: 6px; background: var(--fi-brume); }
.chn-fiche--carte dl > div:last-child { padding-bottom: 0; }
.chn-fiche--sombre { padding: clamp(20px, 2.5vw, 32px); border-radius: 6px; border: 1px solid var(--fi-filet-sombre); }
.chn-fiche--sombre dl > div { border-top-color: var(--fi-filet-sombre); }
.chn-fiche--sombre dt, .chn-fiche--sombre .chn-fiche__cp { color: var(--fi-texte-sombre-2); }
/* En bande : une colonne par information */
.chn-bande .chn-fiche { padding: 20px 0; gap: 10px; }
.chn-bande .chn-fiche dl { grid-template-columns: repeat(auto-fit, minmax(min(100%, 170px), 1fr)); }
.chn-bande .chn-fiche dl > div { grid-template-columns: minmax(0, 1fr); padding: 10px 16px 10px 0; border-top: 0; }
.chn-bande .chn-fiche dd { font-size: 16px; }

/* ---------- Et ensuite : produit, autres chantiers ---------- */
.chn-suite { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2.4fr); gap: clamp(28px, 4vw, 56px); align-items: start; }
.chn-suite__produits { display: flex; flex-direction: column; gap: 14px; }
.chn-suite__produits .h2 { margin-bottom: 8px; }
.chn-produit { background: var(--fi-blanc); min-height: 0; }
.chn-produit:hover { background: var(--fi-givre); }
.chn-suite__tete { margin-bottom: 18px; align-items: baseline; }
.chn-autres { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.chn-autre { aspect-ratio: 3 / 4; }
.chn-autre .chantier__label { left: 8px; right: 8px; bottom: 8px; padding: 9px 11px; gap: 2px; }
.chn-autre .chantier__commune { font-size: 18px; }
.chn-autre .chantier__legende { font-size: 13px; }
.chn-autre .ph, .chn-carte .chantier__img .ph { transition: transform .5s cubic-bezier(.2,.7,.2,1); }
.chn-autre:hover .ph, .chn-carte:hover .chantier__img .ph { transform: scale(1.04); }

/* ---------- /realisations/ : filtre (radios + :has, sans JS) ---------- */
.chn-filtre { display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; border: 0; min-width: 0; }
.chn-pastille { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border-radius: 999px; background: var(--fi-blanc); border: 1.5px solid var(--fi-filet-cote); color: var(--fi-bleu-profond); font-size: 15px; font-weight: 700; cursor: pointer; transition: background-color .2s, border-color .2s; }
.chn-pastille:hover { border-color: var(--fi-bleu-profond); }
.chn-pastille__n { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; color: var(--fi-ardoise); }
.chn-radio:checked + .chn-pastille { background: var(--fi-bleu-profond); border-color: var(--fi-bleu-profond); color: var(--fi-blanc); }
.chn-radio:checked + .chn-pastille .chn-pastille__n { color: var(--fi-givre); }
.chn-radio:focus-visible + .chn-pastille { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }

.chn-grille { list-style: none; margin: 0; padding: 0; display: grid; gap: 14px; grid-template-columns: repeat(3, minmax(0, 1fr)); grid-auto-rows: 270px; grid-auto-flow: dense; }
.chn-item { min-width: 0; }
.chn-item--grand { grid-column: span 2; grid-row: span 2; }
.chn-carte { aspect-ratio: auto; height: 100%; }
.chn-carte .chantier__label { max-width: calc(100% - 24px); padding: 12px 14px; }
.chn-carte__prod { font-size: 14px; font-weight: 700; line-height: 1.35; color: var(--fi-encre); }
.chn-carte__lien { margin-top: 4px; font-size: 14px; font-weight: 700; color: var(--fi-bleu-vitrage); }
.chn-carte:hover .chn-carte__lien { color: var(--fi-bleu-profond); }
.chn-carte__avant { position: absolute; top: 12px; right: 12px; width: clamp(72px, 26%, 150px); aspect-ratio: 1 / 1; border-radius: 4px; overflow: hidden; border: 3px solid var(--fi-blanc); background: var(--fi-brume); box-shadow: 0 6px 16px color-mix(in srgb, var(--fi-encre) 22%, transparent); }
.chn-carte__avant span { position: absolute; left: 0; right: 0; bottom: 0; padding: 2px 0; background: var(--fi-blanc); color: var(--fi-encre); font-family: var(--fi-cote); font-size: 10.5px; font-weight: 500; letter-spacing: .08em; text-transform: uppercase; text-align: center; }
.chn-item:not(.chn-item--grand) .chantier__legende { display: none; }
.chn-vide { height: 100%; display: flex; flex-direction: column; justify-content: flex-end; gap: 6px; padding: 20px; border-radius: 6px; background: var(--fi-hachures); }
.chn-vide__t { font-family: var(--fi-titre); font-weight: 700; font-size: 21px; line-height: 1.2; color: var(--fi-bleu-profond); }
/* Filtres : une règle par produit. « Tous » montre aussi la tuile pergolas et stores. */
.chn-galerie:has(#f-fenetres:checked) .chn-item:not([data-produits~="fenetres"]),
.chn-galerie:has(#f-baies-coulissantes:checked) .chn-item:not([data-produits~="baies-coulissantes"]),
.chn-galerie:has(#f-portes-entree:checked) .chn-item:not([data-produits~="portes-entree"]),
.chn-galerie:has(#f-pergolas-stores:checked) .chn-item:not(.chn-item--vide) { display: none; }
.chn-galerie:has(.chn-radio:not(#f-tous):checked) .chn-item--grand { grid-column: span 1; grid-row: span 1; }

/* Pergolas et stores : sans photo, liens vers les fiches */
.chn-pergolas { scroll-margin-top: var(--fi-header-h); }
.chn-pergolas__liens { display: grid; gap: 12px; }
.chn-pergolas .chn-duo__texte p { color: var(--fi-ardoise); max-width: 560px; }

/* Appel final */
.chn-appel__in { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: center; gap: 24px 48px; }
.chn-appel__in > div:first-child { display: flex; flex-direction: column; gap: 10px; }
.chn-btn-clair, .chn-btn-clair:hover { background: var(--fi-blanc); color: var(--fi-encre); }
.chn-btn-clair:hover { background: var(--fi-givre); }
.chn-btn-contour { border: 1.5px solid var(--fi-azur); color: var(--fi-blanc); background: transparent; }
.chn-btn-contour:hover { background: var(--fi-blanc); color: var(--fi-encre); }

/* ---------- Tablette et mobile ---------- */
@media (max-width: 999px) {
  .chn-suite { grid-template-columns: minmax(0, 1fr); }
  .chn-suite__produits { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); }
  .chn-suite__produits .h2 { grid-column: 1 / -1; }
}
@media (max-width: 899px) {
  .chn-duo, .chn-duo--curseur { grid-template-columns: minmax(0, 1fr); }
  .chn-grille { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-auto-rows: 240px; }
}
@media (max-width: 759px) {
  .chn-grille { grid-template-columns: minmax(0, 1fr); grid-auto-rows: auto; gap: 12px; }
  .chn-item--grand { grid-column: auto; grid-row: auto; }
  .chn-carte { height: auto; aspect-ratio: 1 / 1; }
  .chn-item:not(.chn-item--grand) .chantier__legende { display: block; }
  .chn-vide { min-height: 160px; }
  .chn-nums { grid-template-columns: minmax(0, 1fr); }
  .chn-nums--fleche::after { display: none; }
  .chn-autres { grid-template-columns: none; grid-auto-columns: 62%; }
  .chn-chiffres { width: 100%; justify-content: space-between; }
  .chn-ba__onglets { align-self: stretch; }
  .chn-ba__onglet { flex: 1 1 0; padding: 0 10px; font-size: 14px; }
  .chn-fiche dl > div { grid-template-columns: minmax(0, 1fr); gap: 2px; }
  .chn-appel .hero__boutons { width: 100%; }
  .chn-appel .btn { flex: 1 1 100%; justify-content: center; }
}

/* Autres chantiers (photos du client, 05/10) : avant/après en portrait, puis mosaïque et vidéo */
.chn-autres__tete { display: flex; flex-direction: column; gap: 12px; max-width: 720px; }
.chn-autres__tete p { color: var(--fi-ardoise); }
.chn-autres__grille { display: grid; gap: 40px 24px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); margin-top: 36px; align-items: start; }
.chn-autre { display: flex; flex-direction: column; gap: 12px; min-width: 0; }
.chn-ba--portrait .chn-ba__cadre { aspect-ratio: 3 / 4; }
.chn-mosaique { display: grid; gap: 20px 16px; grid-template-columns: repeat(auto-fill, minmax(min(100%, 150px), 1fr)); margin-top: 32px; }
@media (min-width: 760px) { .chn-mosaique { grid-template-columns: repeat(3, 1fr); gap: 28px 24px; } }
.chn-mosaique__item { margin: 0; display: flex; flex-direction: column; gap: 10px; min-width: 0; }
.chn-mosaique__img { position: relative; aspect-ratio: 3 / 4; border-radius: 6px; overflow: hidden; background: var(--fi-hachures); }
.chn-mosaique__img video { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.chn-mosaique__item figcaption { display: flex; flex-direction: column; gap: 4px; font-size: 15px; line-height: 1.4; color: var(--fi-ardoise); }
/* §03 : 2 tuiles (porte, vidéo) + liens vers les fiches portails et volets */
.chn-aussi__in { display: grid; gap: 28px; margin-top: 32px; align-items: start; }
.chn-aussi__in .chn-mosaique { margin-top: 0; }
@media (min-width: 760px) {
  .chn-aussi__in { grid-template-columns: 2fr 1fr; gap: 24px; }
  .chn-mosaique.chn-mosaique--2 { grid-template-columns: repeat(2, 1fr); }
}
/* 06/10/2026 : avant/après en 3 colonnes dès la tablette paysage */
@media (min-width: 900px) { .chn-autres__grille { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 32px 20px; } }
@media (min-width: 600px) and (max-width: 899px) { .chn-autres__grille { grid-template-columns: repeat(2, minmax(0, 1fr)); } }


/* ---- conseils.css ---- */
/* Rubrique Conseils (maquette « Article v3 ») : haut d’article, sommaire collant au-delà de 900 px,
   colonne de texte 700 px, « En résumé », appel, cartes d’articles et filtre par thème sans JS. */

/* ---------- Haut d’article : P4 typographique (src/commun.ts › hautDePage) ---------- */
.con-meta { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; color: var(--fi-ardoise); }

/* ---------- Couverture d’un conseil (maquette collecte/maquettes/couvertures, option C2, 08/10/2026) ----------
   Vraie photo 3:2 propre au sujet (src/pages/conseils.ts › couvertureConseil), sans voile ni dégradé ; seul un cartouche
   bleu profond porte la rubrique (typo de cote, filet givre), posé sur un filet bleu profond au pied de la photo.
   Rayon 4 px. Blanc sur bleu profond : 8,9:1. */
.cv { position: relative; display: block; width: 100%; aspect-ratio: 3 / 2; overflow: hidden; border-radius: 4px; container-type: inline-size; isolation: isolate; background: var(--fi-brume) center / cover no-repeat; }
/* Aperçu flou : le fond 24 × 16 px posé en ligne par couvertureConseil(), repris et flouté ; la photo le recouvre. */
.cv::before { content: ""; position: absolute; inset: -24px; background: inherit; filter: blur(14px); }
.cv__img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform .6s ease; }
a:hover .cv__img { transform: scale(1.03); }
.cv::after { content: ""; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--fi-bleu-profond); z-index: 1; }
.cv__cart { position: absolute; left: 0; bottom: 0; z-index: 2; display: flex; align-items: center; gap: .8em; max-width: calc(100% - 16px); padding: .85em 1.15em .85em 1em; background: var(--fi-bleu-profond); color: #fff; border-top-right-radius: 4px; font-family: var(--fi-cote); font-weight: 500; font-size: clamp(10px, 2.6cqw, 12.5px); letter-spacing: .08em; text-transform: uppercase; line-height: 1.2; white-space: nowrap; }
.cv__filet { flex: none; width: 1.6em; height: 1.5px; background: var(--fi-givre); }
@media (prefers-reduced-motion: reduce) { .cv__img { transition: none; } a:hover .cv__img { transform: none; } }

/* ---------- Corps : sommaire + texte ---------- */
.con-corps { display: flex; flex-direction: column; gap: 32px; padding-top: clamp(40px, 5vw, 72px); padding-bottom: clamp(64px, 8vw, 112px); }
.con-sommaire { display: flex; flex-direction: column; gap: 2px; padding-top: 6px; }
.con-sommaire__t { margin-bottom: 8px; }
.con-sommaire a { display: grid; grid-template-columns: 28px 1fr; gap: 8px; padding: 8px 0; border-top: 1px solid var(--fi-filet-clair); font-size: 15px; font-weight: 600; line-height: 1.45; color: var(--fi-bleu-profond); text-decoration: none; }
.con-sommaire a:hover { color: var(--fi-bleu-vitrage); }
.con-sommaire__n { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; color: var(--fi-ardoise); padding-top: 2px; }
@media (min-width: 901px) {
  .con-corps { flex-direction: row; align-items: flex-start; gap: clamp(40px, 5vw, 80px); }
  .con-sommaire { flex: 0 1 260px; min-width: 200px; position: sticky; top: 100px; }
}

.con-texte { flex: 1 1 0; max-width: 700px; min-width: 0; display: flex; flex-direction: column; gap: 20px; }
.con-intro { font-size: 18px; }
.con-h2 { margin-top: 24px; scroll-margin-top: 100px; }
.con-texte ul, .con-texte ol { margin: 0; padding: 0; list-style: none; display: flex; flex-direction: column; gap: 12px; }
.con-liste-puces li { position: relative; padding-left: 22px; }
.con-liste-puces li::before { content: ""; position: absolute; left: 2px; top: .7em; width: 8px; height: 1.5px; background: var(--fi-bleu-profond); }
.con-liste-num { counter-reset: con-n; }
.con-liste-num li { counter-increment: con-n; display: grid; grid-template-columns: 40px 1fr; column-gap: 8px; }
.con-liste-num li::before { content: counter(con-n, decimal-leading-zero); grid-row: span 2; font-family: var(--fi-cote); font-weight: 500; font-size: 13px; color: var(--fi-bleu-profond); padding-top: 3px; }
.con-texte strong { color: var(--fi-bleu-profond); font-weight: 700; }

/* Tableau comparatif : défile dans son cadre sur mobile, jamais la page. */
.con-table { overflow-x: auto; border-top: 1.5px solid var(--fi-bleu-profond); }
.con-table:focus-visible { outline-offset: 4px; }
.con-table table { width: 100%; min-width: 560px; border-collapse: collapse; font-size: 15px; line-height: 1.45; }
.con-table caption { caption-side: bottom; text-align: left; padding-top: 10px; font-size: 13px; color: var(--fi-ardoise); }
.con-table th, .con-table td { text-align: left; vertical-align: top; padding: 12px 12px 12px 0; border-bottom: 1px solid var(--fi-filet-clair); }
.con-table thead th { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-bleu-profond); }
.con-table tbody th { font-weight: 700; color: var(--fi-bleu-profond); width: 22%; }

/* ---------- En résumé ---------- */
.con-resume { margin-top: 24px; scroll-margin-top: 100px; padding: 28px; border-radius: 6px; background: var(--fi-givre); color: var(--fi-bleu-profond); display: flex; flex-direction: column; gap: 14px; }
.con-texte .con-resume ul { gap: 10px; }
.con-resume li { display: grid; grid-template-columns: 124px 1fr; gap: 12px; }
.con-resume__k { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; padding-top: 4px; }
@media (max-width: 479px) { .con-resume { padding: 22px 20px; } .con-resume li { grid-template-columns: 1fr; gap: 2px; } }

/* ---------- Appel au conseil ---------- */
.con-appel { margin-top: 32px; scroll-margin-top: 100px; padding: 28px; border-radius: 6px; border: 1.5px solid var(--fi-bleu-profond); background: var(--fi-blanc); display: flex; flex-wrap: wrap; gap: 20px; align-items: center; justify-content: space-between; }
.con-appel__texte { flex: 1 1 280px; display: flex; flex-direction: column; gap: 6px; }
.con-appel__texte p { font-size: 16px; color: var(--fi-ardoise); }
.con-appel .h3 .leger { font-weight: 300; }
.con-appel__liens { display: flex; flex-wrap: wrap; gap: 4px 20px; margin-top: 4px; }
.bg-brume .con-appel { margin-top: 0; }
@media (max-width: 479px) { .con-appel { padding: 22px 20px; } .con-appel .btn { width: 100%; justify-content: space-between; } }

/* ---------- Cartes d’articles ---------- */
.con-grille { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: 24px; }
.con-grille--3 { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.con-carte { display: flex; flex-direction: column; overflow: hidden; border-radius: 6px; background: var(--fi-blanc); border: 1px solid var(--fi-filet); text-decoration: none; color: var(--fi-encre); transition: transform .3s, box-shadow .3s; }
.con-carte:hover { color: var(--fi-encre); transform: translateY(-3px); box-shadow: 0 12px 28px rgba(11, 27, 51, .08); }
@media (prefers-reduced-motion: reduce) { .con-carte, .con-carte:hover { transition: none; transform: none; } }
.con-carte .cv { border-radius: 0; flex: none; }
.con-carte__corps { flex: 1 1 auto; display: flex; flex-direction: column; gap: 12px; padding: 22px 24px 20px; }
.con-carte__t { margin: 0; font-family: var(--fi-titre); font-weight: 700; font-size: clamp(21px, 2vw, 24px); line-height: 1.2; color: var(--fi-bleu-profond); text-wrap: balance; }
.con-carte__p { font-size: 15px; line-height: 1.55; color: var(--fi-ardoise); }
.con-carte__pied { margin-top: auto; padding-top: 8px; display: flex; justify-content: space-between; align-items: center; font-size: 14px; font-weight: 600; color: var(--fi-ardoise); }
.con-carte__fleche { font-size: 20px; color: var(--fi-bleu-vitrage); }
.con-carte--vedette { background: var(--fi-givre); border-color: var(--fi-givre); border-top-color: var(--fi-bleu-profond); }
.con-carte--vedette .con-carte__t { font-size: var(--fi-h2); font-weight: 800; }
.con-carte--vedette .con-carte__p { color: var(--fi-bleu-profond); font-size: 16px; max-width: 560px; }
@media (min-width: 700px) {
  .con-grille .con-carte--vedette { grid-column: span 2; flex-direction: row; }
  .con-grille .con-carte--vedette .cv { flex: 0 0 50%; align-self: center; }
  .con-carte--vedette .con-carte__corps { padding: clamp(24px, 3vw, 36px); }
}

/* ---------- Page /conseils/ : filtre ---------- */
.con-liste-sec { padding-bottom: var(--fi-section-y); }
.con-liste { position: relative; }
.con-filtres { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-bottom: 28px; padding-top: 24px; border-top: 1px solid var(--fi-filet); }
.con-filtres .etiquette { margin-right: 6px; }
.con-filtre { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; border-radius: 999px; border: 1.5px solid var(--fi-filet-cote); background: var(--fi-blanc); color: var(--fi-bleu-profond); font-size: 15px; font-weight: 600; cursor: pointer; transition: background-color .2s, border-color .2s, color .2s; }
.con-filtre span { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; color: var(--fi-ardoise); }
.con-filtre:hover { border-color: var(--fi-bleu-profond); }
#con-f-tous:checked ~ .con-filtres [for="con-f-tous"],
#con-f-porte-fenetre:checked ~ .con-filtres [for="con-f-porte-fenetre"],
#con-f-fenetres:checked ~ .con-filtres [for="con-f-fenetres"],
#con-f-equipements:checked ~ .con-filtres [for="con-f-equipements"] { background: var(--fi-bleu-profond); border-color: var(--fi-bleu-profond); color: #fff; }
#con-f-tous:checked ~ .con-filtres [for="con-f-tous"] span,
#con-f-porte-fenetre:checked ~ .con-filtres [for="con-f-porte-fenetre"] span,
#con-f-fenetres:checked ~ .con-filtres [for="con-f-fenetres"] span,
#con-f-equipements:checked ~ .con-filtres [for="con-f-equipements"] span { color: var(--fi-givre); }
#con-f-tous:focus-visible ~ .con-filtres [for="con-f-tous"],
#con-f-porte-fenetre:focus-visible ~ .con-filtres [for="con-f-porte-fenetre"],
#con-f-fenetres:focus-visible ~ .con-filtres [for="con-f-fenetres"],
#con-f-equipements:focus-visible ~ .con-filtres [for="con-f-equipements"] { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }
#con-f-porte-fenetre:checked ~ .con-grille .con-carte:not([data-theme="porte-fenetre"]),
#con-f-fenetres:checked ~ .con-grille .con-carte:not([data-theme="fenetres"]),
#con-f-equipements:checked ~ .con-grille .con-carte:not([data-theme="equipements"]) { display: none; }

/* Cartes conseils de l’accueil, devenues des liens (src/pages/accueil.ts). */
a.acc-conseil { text-decoration: none; color: var(--fi-encre); }
a.acc-conseil:hover .acc-conseil__t { color: var(--fi-bleu-vitrage); }



/* ---- entreprise.css ---- */
/* Pages entreprise (/qui-sommes-nous/, /faq/, /menuiseries/) — classes préfixées .ent-, variables de :root uniquement. */

.ent-ancre { scroll-margin-top: var(--fi-header-h); }
.ent-intro { max-width: 460px; color: var(--fi-ardoise); }
.ent-liens { display: flex; flex-wrap: wrap; gap: 8px 28px; }

/* ---------- Sections sombres (Encre) et Bleu profond ---------- */
.ent-sombre { background: var(--fi-encre); color: var(--fi-blanc); }
.ent-bleu { background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.ent-sombre .h2, .ent-bleu .h2, .ent-sombre .h3, .ent-bleu .h3 { color: var(--fi-blanc); }
.ent-sombre .h2 .leger, .ent-bleu .h2 .leger { color: var(--fi-azur); }
.ent-cote-sombre { color: var(--fi-givre); }
.ent-cote-sombre::before, .ent-cote-sombre::after { background: var(--fi-givre); }
.ent-cote-sombre .cote__n { color: var(--fi-blanc); }
.ent-cote-sombre .cote__filet { background: color-mix(in srgb, var(--fi-givre) 30%, transparent); }
.ent-sur-sombre { color: var(--fi-azur); }
.ent-btn-blanc { background: var(--fi-blanc); color: var(--fi-bleu-profond); }
.ent-btn-blanc:hover { background: var(--fi-givre); color: var(--fi-bleu-profond); }

/* =========================================================
   /qui-sommes-nous/
   ========================================================= */

/* Fiche d’identité (haut de page) : un cartouche de plan, pas de photo */
.ent-fiche-sec .ent-fiche { max-width: 760px; }
.ent-fiche { flex: 1 1 400px; min-width: 0; border: 1.5px solid var(--fi-bleu-profond); border-radius: 6px; padding: clamp(22px, 3vw, 36px); background: var(--fi-blanc); box-shadow: 10px 10px 0 var(--fi-givre); }
.ent-fiche__tete { display: flex; align-items: center; gap: 12px; margin-bottom: 8px; }
.ent-fiche__filet { flex: 1; height: 1px; background: var(--fi-filet-cote); }
.ent-fiche__liste { margin: 0; }
.ent-fiche__ligne { display: grid; grid-template-columns: minmax(96px, 34%) minmax(0, 1fr); gap: 4px 16px; padding: 13px 0; border-bottom: 1px solid var(--fi-filet-clair); }
.ent-fiche__ligne:last-child { border-bottom: 0; }
.ent-fiche__ligne dt { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-ardoise); padding-top: 3px; }
.ent-fiche__ligne dd { margin: 0; font-weight: 700; color: var(--fi-encre); line-height: 1.45; }

/* 01 · Parcours : texte + jalons verticaux */
.ent-parcours { display: flex; flex-wrap: wrap; gap: clamp(32px, 6vw, 96px); align-items: flex-start; }
.ent-parcours__texte { flex: 1.3 1 440px; min-width: 0; display: flex; flex-direction: column; gap: 18px; max-width: 680px; }
.ent-parcours__texte .h2 { margin-bottom: 6px; }
.ent-parcours__texte p { color: var(--fi-ardoise); }
.ent-franc { padding-left: 18px; border-left: 3px solid var(--fi-bleu-profond); color: var(--fi-encre) !important; font-weight: 600; }
.ent-jalons { flex: 1 1 320px; min-width: 0; list-style: none; margin: 0; padding: 0 0 0 26px; position: relative; }
.ent-jalons::before { content: ""; position: absolute; left: 5px; top: 10px; bottom: 10px; width: 1.5px; background: var(--fi-bleu-profond); }
.ent-jalon { position: relative; display: flex; flex-direction: column; gap: 4px; padding: 0 0 28px; }
.ent-jalon:last-child { padding-bottom: 0; }
.ent-jalon::before { content: ""; position: absolute; left: -26px; top: 4px; width: 12px; height: 12px; border-radius: 50%; background: var(--fi-brume); border: 1.5px solid var(--fi-bleu-profond); }
.ent-jalon:last-child::before { background: var(--fi-bleu-profond); }
.ent-jalon__n { color: var(--fi-bleu-profond); }
.ent-jalon__t { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(19px, 1.8vw, 21px); line-height: 1.3; color: var(--fi-encre); }

/* 02 · Équipe : monogrammes */
/* 02 · L’équipe : portrait de Clément Caron + texte (les artisans indépendants ne sont pas nommés). */
.ent-portrait { display: grid; grid-template-columns: minmax(0, 360px) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: center; }
.ent-portrait__img { aspect-ratio: 4 / 5; }
.ent-portrait__texte { display: flex; flex-direction: column; gap: 16px; max-width: 620px; }
.ent-portrait__texte p { color: var(--fi-ardoise); }
.ent-portrait__avis { margin: 8px 0 0; padding-left: 20px; border-left: 1.5px solid var(--fi-bleu-profond); }
.ent-portrait__avis blockquote { margin: 0; font-family: var(--fi-titre); font-weight: 300; font-size: 21px; line-height: 1.4; color: var(--fi-encre); }
.ent-portrait__avis figcaption { margin-top: 6px; font-size: 14px; color: var(--fi-ardoise); }
@media (max-width: 759px) { .ent-portrait { grid-template-columns: minmax(0, 1fr); } .ent-portrait__img { max-width: 360px; width: 100%; } }

/* 03 · Méthode : frise horizontale (verticale en mobile) */
.ent-frise { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 0; position: relative; }
.ent-frise::before { content: ""; position: absolute; left: 0; right: 0; top: 27px; height: 1.5px; background: color-mix(in srgb, var(--fi-givre) 40%, transparent); }
.ent-frise__etape { position: relative; display: flex; flex-direction: column; gap: 10px; padding-right: 24px; }
.ent-frise__n { position: relative; width: 56px; height: 56px; border-radius: 50%; display: flex; align-items: center; justify-content: center; background: var(--fi-encre); border: 1.5px solid var(--fi-azur); color: var(--fi-blanc); font-family: var(--fi-cote); font-weight: 500; font-size: 15px; letter-spacing: .04em; margin-bottom: 10px; }
.ent-frise__etape:last-child .ent-frise__n { background: var(--fi-azur); color: var(--fi-encre); }
.ent-frise__t { font-family: var(--fi-titre); font-weight: 700; font-size: var(--fi-h3); line-height: 1.2; color: var(--fi-blanc); }
.ent-frise__d { font-size: 16px; line-height: 1.6; color: var(--fi-texte-sombre-2); }
.ent-sombre .todo { background: transparent; color: var(--fi-givre); border-color: var(--fi-azur); }
.ent-etapes-photos { margin-top: clamp(48px, 6vw, 80px); padding-top: 28px; border-top: 1px solid var(--fi-filet-sombre); }
.ent-etapes-photos__t { margin-bottom: 18px; }
.ent-etapes-photos__grille { display: grid; gap: 16px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ent-etapes-photo { display: flex; flex-direction: column; gap: 10px; }
.ent-etapes-photo__img { aspect-ratio: 4 / 3; }
.ent-etapes-photo figcaption { display: flex; flex-wrap: wrap; align-items: baseline; gap: 8px; font-size: 15px; color: var(--fi-texte-sombre-2); }

/* 04 · Engagements : registre en lignes, avec la preuve à droite */
.ent-eng__intro { max-width: 460px; color: var(--fi-ardoise); }
.ent-engs { list-style: none; margin: 0; padding: 0; border-top: 1.5px solid var(--fi-bleu-profond); }
.ent-eng { display: grid; grid-template-columns: 56px minmax(0, 1fr) minmax(0, 1fr); gap: 12px 32px; padding: 26px 0; border-bottom: 1px solid var(--fi-filet-cote); align-items: start; }
.ent-eng__n { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; color: var(--fi-ardoise); padding-top: 6px; }
.ent-eng__corps { display: flex; flex-direction: column; gap: 6px; }
.ent-eng__corps p { color: var(--fi-ardoise); font-size: 16px; }
.ent-eng__preuve { display: flex; flex-direction: column; gap: 6px; padding: 14px 18px; border-radius: 6px; background: var(--fi-brume); }
.ent-eng__preuve blockquote { font-family: var(--fi-titre); font-weight: 300; font-size: 18px; line-height: 1.4; }
.ent-eng__preuve figcaption { font-size: 14px; font-weight: 700; color: var(--fi-ardoise); }
.ent-eng__preuve--vide { background: none; padding: 0; }

/* 05 · Zone : chiffre typographique */
.ent-zone { display: flex; flex-wrap: wrap; align-items: center; gap: clamp(28px, 6vw, 96px); }
.ent-zone__chiffre { flex: 0 1 360px; display: flex; flex-direction: column; line-height: .9; color: var(--fi-bleu-profond); }
.ent-zone__pau { font-family: var(--fi-titre); font-weight: 800; font-size: clamp(72px, 9vw, 128px); letter-spacing: -0.03em; }
.ent-zone__km { font-family: var(--fi-titre); font-weight: 300; font-size: clamp(32px, 4.4vw, 60px); letter-spacing: -0.02em; white-space: nowrap; }
.ent-zone__texte { flex: 1 1 420px; min-width: 0; display: flex; flex-direction: column; gap: 14px; }
.ent-zone__texte p { color: var(--fi-ardoise); max-width: 560px; }

/* Appel final (Bleu profond ; variante Encre) */
.ent-appel { padding: var(--fi-section-y-court) 0; background: var(--fi-bleu-profond); color: var(--fi-blanc); }
.ent-appel--encre { background: var(--fi-encre); }
.ent-appel__in { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 28px 48px; }
.ent-appel__in > div:first-child { flex: 1 1 460px; display: flex; flex-direction: column; gap: 12px; max-width: 680px; }
.ent-appel .h2 { color: var(--fi-blanc); text-wrap: balance; }
.ent-appel .h2 .leger { color: var(--fi-azur); }
.ent-appel p { color: var(--fi-texte-sombre-2); }
.ent-appel__boutons { display: flex; flex-wrap: wrap; align-items: center; gap: 16px 24px; }
.ent-appel__tel { color: var(--fi-blanc); font-family: var(--fi-titre); font-weight: 800; font-size: 24px; text-decoration: none; white-space: nowrap; }
.ent-appel__tel:hover { color: var(--fi-azur); }

/* =========================================================
   /faq/
   ========================================================= */

.ent-faq__grille { display: grid; grid-template-columns: 260px minmax(0, 1fr); gap: clamp(32px, 6vw, 96px); align-items: start; }
.ent-sommaire { position: sticky; top: calc(var(--fi-header-h) + 24px); display: flex; flex-direction: column; gap: 14px; }
.ent-sommaire ol { list-style: none; margin: 0; padding: 0; border-top: 1.5px solid var(--fi-bleu-profond); }
.ent-sommaire li { border-bottom: 1px solid var(--fi-filet-cote); }
.ent-sommaire a { display: grid; grid-template-columns: 32px minmax(0, 1fr) auto; gap: 8px; align-items: baseline; padding: 14px 0; text-decoration: none; color: var(--fi-bleu-profond); }
.ent-sommaire a:hover .ent-sommaire__t { text-decoration: underline; }
.ent-sommaire__n, .ent-sommaire__nb { font-family: var(--fi-cote); font-weight: 500; font-size: 12px; letter-spacing: .08em; color: var(--fi-ardoise); }
.ent-sommaire__t { font-family: var(--fi-titre); font-weight: 700; font-size: 18px; line-height: 1.25; }
.ent-faq__themes { display: flex; flex-direction: column; gap: clamp(56px, 7vw, 96px); min-width: 0; }
.ent-theme { scroll-margin-top: calc(var(--fi-header-h) + 16px); display: flex; flex-direction: column; }
.ent-theme__tete { display: flex; align-items: baseline; gap: 18px; margin-bottom: 24px; }
.ent-theme__n { font-family: var(--fi-titre); font-weight: 300; font-size: clamp(44px, 5vw, 64px); line-height: .9; color: var(--fi-bleu-ciel); }
.ent-theme__groupe { margin: 28px 0 10px; color: var(--fi-bleu-profond); }
.ent-theme__tete + .ent-theme__groupe { margin-top: 0; }
.ent-faq__liste { flex: none; }
.ent-faq__liste .lien-fort { align-self: flex-start; }

/* =========================================================
   /menuiseries/
   ========================================================= */
/* 9 familles : 3 × 3 (pas de rangée orpheline), une colonne sur mobile. */
.ent-cartes { display: grid; gap: 20px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.ent-carte { display: flex; flex-direction: column; background: var(--fi-blanc); border-radius: 6px; overflow: hidden; text-decoration: none; color: var(--fi-encre); transition: transform .25s ease, box-shadow .25s ease; }
.ent-carte:hover { transform: translateY(-3px); box-shadow: 0 14px 30px color-mix(in srgb, var(--fi-bleu-profond) 10%, transparent); color: var(--fi-encre); }
.ent-carte__img { position: relative; aspect-ratio: 4 / 3; background: var(--fi-brume); }
.ent-carte__lieu { position: absolute; left: 12px; bottom: 12px; font-family: var(--fi-cote); font-weight: 500; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-bleu-profond); background: var(--fi-blanc); padding: 4px 8px; border-radius: 3px; line-height: 1.4; }
/* Visuel typographique (pas de photo de chantier) : croisillons à 61,8 / 38,2 % */
.ent-carte__typo { background: var(--fi-bleu-profond); color: var(--fi-blanc); overflow: hidden; display: flex; flex-direction: column; justify-content: space-between; padding: 18px 20px; }
.ent-carte__typo::before, .ent-carte__typo::after { content: ""; position: absolute; background: color-mix(in srgb, var(--fi-givre) 22%, transparent); }
.ent-carte__typo::before { left: 61.8%; top: 0; bottom: 0; width: 1.5px; }
.ent-carte__typo::after { top: 38.2%; left: 0; right: 0; height: 1.5px; }
.ent-carte__typo-n { position: relative; font-family: var(--fi-titre); font-weight: 300; font-size: clamp(64px, 7vw, 96px); line-height: .85; color: var(--fi-azur); }
.ent-carte__typo-marque { position: relative; font-family: var(--fi-titre); font-weight: 800; font-size: clamp(28px, 3vw, 36px); letter-spacing: .02em; line-height: 1; margin-top: auto; }
.ent-carte__typo-mat { position: relative; margin-top: 8px; font-family: var(--fi-cote); font-weight: 500; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--fi-givre); }
.ent-carte__corps { padding: 20px 22px 22px; display: flex; flex-direction: column; gap: 6px; flex: 1; }
.ent-n { text-transform: none; }
.ent-carte__nom { font-family: var(--fi-titre); font-weight: 700; font-size: clamp(21px, 2vw, 24px); line-height: 1.2; color: var(--fi-bleu-profond); }
.ent-carte__b { font-size: 16px; line-height: 1.55; color: var(--fi-ardoise); }
.ent-carte__lien { margin-top: auto; padding-top: 12px; font-size: 15px; font-weight: 700; color: var(--fi-bleu-vitrage); }

/* 02 · Pour qui / pour qui non */
.ent-pour { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0; border: 1px solid color-mix(in srgb, var(--fi-givre) 35%, transparent); border-radius: 6px; }
.ent-pour__col { padding: clamp(24px, 3.5vw, 44px); display: flex; flex-direction: column; gap: 18px; }
.ent-pour__col--non { border-left: 1px solid color-mix(in srgb, var(--fi-givre) 35%, transparent); background: color-mix(in srgb, var(--fi-encre) 22%, transparent); }
.ent-pour__liste { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.ent-pour__liste li { display: grid; grid-template-columns: 28px minmax(0, 1fr); gap: 12px; padding: 14px 0; border-top: 1px solid color-mix(in srgb, var(--fi-givre) 25%, transparent); line-height: 1.55; color: color-mix(in srgb, var(--fi-givre) 40%, var(--fi-blanc)); }
.ent-pour__signe { font-weight: 800; color: var(--fi-azur); }
.ent-pour__col--non .ent-pour__signe { color: var(--fi-laiton); }
.ent-bleu .todo { background: transparent; color: var(--fi-givre); border-color: var(--fi-azur); }
.ent-pour__lien { color: var(--fi-blanc); font-weight: 700; }
.ent-pour__lien:hover { color: var(--fi-azur); }

/* 03 · Comparatif : colonne Bois en attente */
.ent-tableau { border: 1px solid var(--fi-filet); }
.ent-tableau thead th:last-child { width: 20%; }

/* Encore un doute ? */
.ent-doute { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr) minmax(0, 1.4fr); gap: 16px; align-items: stretch; }
.ent-doute .h2 { align-self: center; }
.ent-doute__lien { display: grid; grid-template-columns: minmax(0, 1fr) auto; grid-template-rows: auto auto; gap: 6px 16px; align-items: center; padding: 22px 24px; border-radius: 6px; background: var(--fi-blanc); text-decoration: none; color: var(--fi-bleu-profond); border: 1px solid var(--fi-filet); }
.ent-doute__lien:hover { border-color: var(--fi-bleu-profond); color: var(--fi-bleu-profond); }
.ent-doute__lien .etiquette { grid-column: 1; }
.ent-doute__t { grid-column: 1; font-family: var(--fi-titre); font-weight: 700; font-size: 19px; line-height: 1.3; }
.ent-doute__lien > span[aria-hidden] { grid-column: 2; grid-row: 1 / span 2; font-size: 22px; font-weight: 700; }

/* ---------- Tablette ---------- */
@media (max-width: 999px) {
  .ent-frise { grid-template-columns: minmax(0, 1fr); gap: 0; padding-left: 0; }
  .ent-frise::before { left: 27px; right: auto; top: 0; bottom: 0; width: 1.5px; height: auto; }
  .ent-frise__etape { display: grid; grid-template-columns: 56px minmax(0, 1fr); gap: 6px 20px; padding: 0 0 28px; }
  .ent-frise__etape:last-child { padding-bottom: 0; }
  .ent-frise__n { grid-row: span 3; margin-bottom: 0; }
  .ent-frise__t { padding-top: 14px; }
  .ent-frise__etape .todo { justify-self: start; }
  .ent-doute { grid-template-columns: minmax(0, 1fr); }
}

/* ---------- Mobile (< 760 px) ---------- */
@media (max-width: 759px) {
  .ent-fiche { box-shadow: 6px 6px 0 var(--fi-givre); }
  .ent-fiche__ligne { grid-template-columns: minmax(0, 1fr); gap: 2px; padding: 11px 0; }
  .ent-eng { grid-template-columns: 36px minmax(0, 1fr); gap: 12px; }
  .ent-eng__preuve { grid-column: 2; }
  .ent-eng__preuve--vide { display: none; }
  .ent-etapes-photos__grille { grid-template-columns: none; grid-auto-flow: column; grid-auto-columns: 78%; overflow-x: auto; scroll-snap-type: x mandatory; padding-bottom: 6px; }
  .ent-etapes-photo { scroll-snap-align: start; }
  .ent-faq__grille { grid-template-columns: minmax(0, 1fr); }
  .ent-sommaire { position: static; }
  .ent-sommaire a { padding: 11px 0; }
  .ent-cartes { grid-template-columns: minmax(0, 1fr); }
  .ent-carte__img { aspect-ratio: 3 / 2; }
  .ent-pour { grid-template-columns: minmax(0, 1fr); }
  .ent-pour__col--non { border-left: 0; border-top: 1px solid color-mix(in srgb, var(--fi-givre) 35%, transparent); }
  .ent-zone__chiffre { flex-basis: 100%; flex-direction: row; flex-wrap: wrap; align-items: baseline; gap: 4px 14px; }
  .ent-appel__boutons { width: 100%; }
}


/* ---- illustrations.css ---- */
/* Cases « modèle » des fiches produit remplies par une photo (chantier du client ou photo d’illustration, 07/10/2026) :
   même case carrée que le schéma, la photo la couvre entièrement. */
.modele__schema--photo { background: var(--fi-brume); overflow: hidden; }
.modele__schema--photo .photo__label { left: 8px; bottom: 8px; padding: 4px 7px; font-size: 10px; }
/* Cartes de l’accueil remplies par une photo d’illustration : mention en bas à gauche, l’étiquette produit reste en haut. */
.acc-carte__img .photo__label { left: 12px; bottom: 12px; }


/* ---- produit.css ---- */
/* Haut de page P2 des fiches produits (09/10/2026) : texte à gauche, photo carrée à droite, rangée d’atouts dessous.
   Mobile : texte, puis photo en 4:3, puis atouts sur deux colonnes. */
.p2 { background: var(--fi-brume); border-bottom: 1px solid var(--fi-filet); }
.p2__in { max-width: var(--fi-largeur-max); margin: 0 auto; padding: 18px var(--fi-marge) 40px; }
.p2 .ariane { margin-bottom: 18px; }
.p2__grille { display: grid; gap: 28px; grid-template-columns: minmax(0, 1fr); align-items: center; }
.p2__txt { display: flex; flex-direction: column; gap: 14px; min-width: 0; }
.p2__txt .accroche { max-width: 600px; }
.p2__cta { display: flex; flex-direction: column; gap: 10px; align-items: flex-start; margin-top: 10px; max-width: 100%; }
.p2__visuel { position: relative; }
.p2__photo { aspect-ratio: 4 / 3; border-radius: 14px; box-shadow: 0 18px 40px color-mix(in srgb, var(--fi-encre) 12%, transparent); }
.p2__photo img, .p2__vignette img { width: 100%; height: 100%; object-fit: cover; }
.p2__vignette { display: none; }
.p2__atouts { list-style: none; margin: 32px 0 0; padding: 0; display: grid; gap: 12px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.p2-atout { display: flex; gap: 12px; align-items: center; padding: 14px 16px; background: var(--fi-blanc); border: 1px solid var(--fi-filet); border-radius: 12px; min-width: 0; }
.p2-atout__ico { display: grid; place-items: center; flex: none; width: 40px; height: 40px; border-radius: 10px; background: #E4EEFB; color: var(--fi-bleu-profond); }
.p2-atout__txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.p2-atout__k { font-size: 13px; color: var(--fi-ardoise); }
.p2-atout b { font-size: 15px; line-height: 1.3; color: var(--fi-encre); }
@media (max-width: 899px) {
  .p2__atouts { gap: 8px; margin-top: 24px; }
  .p2-atout { flex-direction: column; align-items: flex-start; gap: 8px; padding: 12px; }
  .p2-atout__ico { width: 34px; height: 34px; border-radius: 8px; }
  .p2-atout__ico svg { width: 18px; height: 18px; }
  .p2-atout b { font-size: 14px; }
  .p2-atout:last-child:nth-child(odd) { grid-column: 1 / -1; flex-direction: row; align-items: center; }
}
@media (max-width: 339px) { .p2__atouts { grid-template-columns: minmax(0, 1fr); } }
@media (min-width: 900px) {
  .p2__in { padding-bottom: 48px; }
  .p2__grille { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(32px, 5vw, 72px); }
  .p2__photo { aspect-ratio: 1 / 1; max-height: 560px; }
  .p2__visuel--duo { padding: 0 0 36px 36px; }
  .p2__vignette { display: block; position: absolute; left: 0; bottom: 0; width: 36%; aspect-ratio: 1 / 1; border-radius: 12px; border: 6px solid var(--fi-brume); box-shadow: 0 12px 28px color-mix(in srgb, var(--fi-encre) 16%, transparent); }
  .p2__vignette .photo__label { display: none; }
  .p2__atouts { grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); margin-top: 40px; }
}
@media (min-width: 900px) { .p2__visuel--duo .p2__photo .photo__label { left: auto; right: 12px; } }


/* ---- zones.css ---- */
/* Gabarit « zones » : page /zones-intervention/ (maquette « Zones v3 »). Classes .zon-, variables de :root uniquement. */

.zon-accroche { max-width: 540px; }

/* Carte de Pau et du Béarn (vrais contours IGN, content/zones-carte.json) : carte à gauche, chantiers numérotés à droite. */
.zon-c { display: grid; grid-template-columns: minmax(0, 1.55fr) minmax(0, 1fr); gap: clamp(24px, 3.4vw, 48px); align-items: center; }
.zon-c__carte { position: relative; margin: 0; border: 1px solid var(--fi-filet-clair); border-radius: 4px; overflow: hidden; background: var(--fi-blanc); }
.zon-c__carte > svg { display: block; width: 100%; height: auto; }
.zon-c__encart { position: absolute; right: 12px; bottom: 12px; width: 24%; border: 1px solid var(--fi-filet); border-radius: 4px; overflow: hidden; background: var(--fi-blanc); box-shadow: 0 2px 8px rgba(11, 27, 51, .08); }
.zon-c__encart svg { display: block; width: 100%; height: auto; }
.zon-c__source { position: absolute; left: 12px; top: 12px; padding: 4px 8px; border-radius: 4px; background: var(--fi-blanc); font-family: var(--fi-cote); font-size: 11px; letter-spacing: .06em; color: var(--fi-ardoise); }
.zon-c-mer { fill: #EAF6FE; }
.zon-c-esp { fill: #F4F6F8; stroke: var(--fi-filet-cote); stroke-width: .8; }
.zon-c-voisin { fill: var(--fi-blanc); stroke: var(--fi-filet-cote); stroke-width: .8; }
.zon-c-dep { fill: #DDEFFF; stroke: var(--fi-bleu-ciel); stroke-width: 1.4; stroke-linejoin: round; }
.zon-c-dep--64 { fill: var(--fi-givre); stroke: var(--fi-bleu-vitrage); stroke-width: 1.8; }
.zon-c-com { fill: var(--fi-blanc); stroke: var(--fi-filet-cote); stroke-width: .5; stroke-linejoin: round; }
.zon-c-com--servie { fill: var(--fi-givre); stroke: var(--fi-blanc); stroke-width: .8; }
.zon-c-com--chantier { fill: #F6D7A6; stroke: var(--fi-blanc); stroke-width: .8; }
.zon-c-dep-trait { fill: none; stroke: var(--fi-bleu-vitrage); stroke-width: 1.6; }
.zon-c-cadre { fill: none; stroke: var(--fi-laiton); stroke-width: 2; }
.zon-c-pau { fill: var(--fi-bleu-profond); stroke: var(--fi-blanc); stroke-width: 2.5; }
.zon-c-pau-halo { fill: var(--fi-laiton); opacity: .28; }
.zon-c-pau-n { font: 800 22px var(--fi-titre); fill: var(--fi-bleu-profond); paint-order: stroke; stroke: var(--fi-blanc); stroke-width: 4px; }
.zon-c-num circle { fill: var(--fi-laiton); stroke: var(--fi-blanc); stroke-width: 2.5; }
.zon-c-num text { font: 700 12px var(--fi-cote); fill: var(--fi-encre); }
.zon-c-ech path { fill: none; stroke: var(--fi-encre); stroke-width: 1.5; }
.zon-c-ech text { font: 600 10.5px var(--fi-cote); fill: var(--fi-encre); }
.zon-c-pt { fill: var(--fi-bleu-vitrage); opacity: .75; }
.zon-c__titre { margin: 8px 0 12px; color: var(--fi-bleu-profond); }
.zon-c__legende { list-style: none; margin: 0 0 20px; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 14px; color: var(--fi-ardoise); }
.zon-c__legende li { display: flex; align-items: center; gap: 8px; }
.zon-c__pastille { width: 14px; height: 14px; border-radius: 3px; }
.zon-c__pastille--servie { background: var(--fi-givre); }
.zon-c__pastille--chantier { background: #F6D7A6; }
.zon-c__chantiers { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.zon-c__chantier { position: relative; display: grid; grid-template-columns: 96px 1fr; gap: 14px; align-items: center; padding: 6px; border: 1px solid var(--fi-filet-clair); border-radius: 4px; background: var(--fi-blanc); text-decoration: none; color: var(--fi-bleu-profond); transition: border-color .2s; }
.zon-c__chantier:hover { border-color: var(--fi-bleu-ciel); }
.zon-c__chantier .ph { position: static; inset: auto; width: 96px; height: 72px; object-fit: cover; border-radius: 3px; display: block; }
.zon-c__n { position: absolute; left: 10px; top: 10px; display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: var(--fi-laiton); color: var(--fi-encre); font: 700 12px var(--fi-cote); border: 2px solid var(--fi-blanc); }
.zon-c__lieu { display: flex; flex-direction: column; gap: 2px; }
.zon-c__commune { font-family: var(--fi-titre); font-weight: 700; font-size: 18px; line-height: 1.2; }
.zon-c__voir { font-size: 14px; color: var(--fi-ardoise); }
@media (max-width: 900px) {
  .zon-c { grid-template-columns: 1fr; }
  .zon-c__chantiers { grid-template-columns: 1fr; }
}

/* 01 · Communes : cartes blanches, code postal, nom, pastille « Chantier réalisé ». */
.zon-compte { text-transform: none; }
.zon-groupe { margin: 0 0 16px; }
.zon-groupe .leger { font-weight: 300; }
.zon-groupe { scroll-margin-top: calc(var(--fi-header-h) + 24px); }
.zon-communes + .zon-groupe { margin-top: clamp(32px, 4vw, 48px); }
.zon-communes { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: 12px; }
.zon-commune { display: flex; flex-direction: column; gap: 6px; padding: 20px; border-radius: 6px; background: var(--fi-blanc); color: var(--fi-bleu-profond); scroll-margin-top: calc(var(--fi-header-h) + 24px); }
.zon-commune__cp { color: var(--fi-ardoise); }
.zon-commune__nom { font-family: var(--fi-titre); font-weight: 700; font-size: var(--fi-h3); line-height: 1.2; }
.zon-commune__chantier { align-self: flex-start; padding: 4px 10px; border-radius: 999px; background: var(--fi-givre); color: var(--fi-bleu-profond); font-size: 13px; font-weight: 700; line-height: 1.3; }
.zon-commune:target { outline: 2px solid var(--fi-bleu-vitrage); outline-offset: 2px; }
.zon-absente { margin-top: clamp(28px, 3.4vw, 44px); color: var(--fi-ardoise); }

/* 02 · Engagements : 3 colonnes de la maquette (auto-fit 240 px, écart 32 px). */
.zon-engagements { grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: 32px; }
.zon-engagements .todo { align-self: flex-start; }

/* Mobile : 2 cartes par ligne pour que les communes restent lisibles. */
@media (max-width: 759px) {
  .zon-communes { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
  .zon-commune { padding: 14px; gap: 4px; }
  .zon-commune__nom { font-size: 18px; overflow-wrap: anywhere; }
  .zon-commune__chantier { font-size: 12px; padding: 3px 8px; }
}
.zon-commune__chantier { text-decoration: none; } a.zon-commune__chantier:hover { text-decoration: underline; }

/* Haut de page P4 (08/10/2026) : le schéma de la zone passe sous le titre. */
.zon-schema-sec .zon-carte { width: 100%; max-width: 640px; margin: 0 auto; }
