/*
Theme Name: France Punaise de Lit
Theme URI: https://francepunaisedelit.fr/
Author: France Punaise de Lit
Description: Thème bloc sur mesure pour France Punaise de Lit (traitement des punaises de lit à Lyon et jusqu’à la Méditerranée). Design dans les fichiers du thème, contenu en blocs natifs éditables dans Gutenberg.
Version: 1.0.0
Requires at least: 6.6
Tested up to: 7.1
Requires PHP: 8.0
License: GPL-2.0-or-later
License URI: https://www.gnu.org/licenses/gpl-2.0.html
Text Domain: france-punaise-de-lit
Tags: block-theme, full-site-editing, custom-logo
*/


/* =============================================================================
   France Punaise de Lit — design system v2 « futuriste »
   Synthèse des références du 27/09/2026 :
   - chapitres noirs : vide absolu, typographie monumentale graisse 400, particules (réf. Dala)
   - chapitres clairs : galerie blanche, bandes #F5F5F7, cartes 28 px (réf. Apple)
   - mécanique : sections épinglées, carrousels, zooms au défilement (réf. page iPhone 18 Pro)
   ============================================================================= */

@font-face {
  font-family: "Inter";
  src: url("assets/fonts/inter-latin-var.woff2") format("woff2");
  font-weight: 200 700;
  font-style: normal;
  font-display: swap;
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face { font-family: "Inter Repli"; src: local("Arial"); size-adjust: 107.4%; ascent-override: 90.2%; descent-override: 22.48%; line-gap-override: 0%; }

/* ---------- Jetons --------------------------------------------------------- */
:root {
  --noir: #000000;          /* le vide (réf. Dala) */
  --noir-2: #1D1D1F;        /* bande sombre alternée (réf. Apple) */
  --noir-3: #2A2A2D;
  --blanc: #FFFFFF;
  --brume: #F5F5F7;         /* bande claire (réf. Apple) */
  --encre: #1D1D1F;         /* texte sur clair */
  --ardoise: #6E6E73;       /* secondaire sur clair (5,07:1) */
  --acier: #86868B;         /* contours de contrôles (3,62:1) */
  --filet: #D6D6D6;
  --os: #FFFFFF;            /* texte sur sombre */
  --cendre: #A1A1A6;        /* secondaire sur sombre (8,16:1 sur noir) */
  --argent: #D2D2D7;
  --ambre: #FFB829;         /* étincelle : libellés et chaleur, sur sombre */
  --ambre-texte: #9A5A00;   /* ambre lisible sur clair */
  --verdant: #15846E;       /* teinte profonde (particules, logo) */
  /* Accent : bleu (choisi le 27/09/2026) */
  --accent: #0071E3;         /* blanc dessus 4,7:1 */
  --accent-survol: #0062C4;  /* blanc dessus 5,93:1 */
  --accent-lien-clair: #0066CC;   /* 5,57:1 sur blanc, 5,11:1 sur brume */
  --accent-lien-sombre: #2997FF;  /* 6,96:1 sur noir, 5,58:1 sur #1D1D1F */
  --accent-halo: rgba(0, 113, 227, 0.35);

  --police: "Inter", "Inter Repli", system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
  --fs-geant: clamp(3.4rem, 1.2rem + 9vw, 10rem);
  --fs-xxl: clamp(2.875rem, 1.5rem + 5.6vw, 7rem);
  --fs-display: clamp(2.5rem, 1.45rem + 4.3vw, 5.5rem);
  --fs-h2: clamp(2rem, 1.45rem + 2.3vw, 3.5rem);
  --fs-h3: clamp(1.375rem, 1.2rem + 0.75vw, 1.875rem);
  --fs-lead: clamp(1.125rem, 1rem + 0.55vw, 1.5rem);
  --fs-corps: clamp(1.0625rem, 1.04rem + 0.1vw, 1.125rem);
  --fs-petit: 0.875rem;
  --fs-micro: 0.75rem;

  --section: clamp(6rem, 3.6rem + 9.8vw, 12rem);
  --marge: clamp(1.25rem, 0.2rem + 4.3vw, 4rem);
  --gouttiere: clamp(1rem, 0.6rem + 1.6vw, 2rem);
  --conteneur: 76rem;
  --conteneur-large: 90rem;
  --rayon: 28px;             /* cartes et médias (réf. Apple) */
  --rayon-champ: 14px;
  --pilule: 999px;
  --entete-h: 3.5rem;
  --barre-h: 4.25rem;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --ease-io: cubic-bezier(0.65, 0, 0.35, 1);
  --d-micro: 180ms; --d-std: 360ms; --d-reveal: 900ms;
}

/* ---------- Base ----------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; scroll-padding-top: calc(var(--entete-h) + 1rem); background: var(--noir); }
body {
  margin: 0; font-family: var(--police); font-size: var(--fs-corps); line-height: 1.55; font-weight: 300;
  letter-spacing: -0.01em; color: var(--os); background: var(--noir);
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; text-rendering: optimizeLegibility;
  font-optical-sizing: auto; overflow-x: clip;
}
img, svg, :is(picture,figure.wp-block-image), canvas { display: block; max-width: 100%; }
:is(picture,figure.wp-block-image) img { width: 100%; height: 100%; object-fit: cover; }
:is(a,:where(.fp-a)) { color: inherit; }
h1, h2, h3, h4, p, :is(ul,:where(.fp-ul)), :is(ol,:where(.fp-ol)), :is(dl,:where(.fp-dl)), :is(dd,:where(.fp-dd)), :is(figure,:where(.fp-figure)), fieldset { margin: 0; }
:where(:is(ul,:where(.fp-ul))[class], :is(ol,:where(.fp-ol))[class]) { list-style: none; padding: 0; }
button, input, select, textarea { font: inherit; letter-spacing: inherit; color: inherit; }
button { cursor: pointer; }
h1, h2, h3 { font-weight: 400; text-wrap: balance; hyphens: none; }
p, :is(li,:where(.fp-li)), :is(dd,:where(.fp-dd)) { text-wrap: pretty; }
strong, b { font-weight: 600; }
sup { font-size: 0.6em; line-height: 0; vertical-align: 0.6em; }
sup :is(a,:where(.fp-a)) { text-decoration: none; padding: 0 0.1em; color: inherit; opacity: 0.7; }
:focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; border-radius: 6px; }
::selection { background: var(--accent); color: #fff; }
.sr-only { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.lien-evitement { position: absolute; left: 1rem; top: -100px; z-index: 200; background: #fff; color: #000; padding: 0.75rem 1.25rem; border-radius: var(--pilule); text-decoration: none; font-weight: 600; }
.lien-evitement:focus { top: 0.75rem; }
code { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 0.85em; font-variant-ligatures: none; letter-spacing: 0; }

/* ---------- Thèmes de chapitres ------------------------------------------- */
.sombre { background: var(--noir); color: var(--os); }
.sombre-2 { background: var(--noir-2); color: var(--os); }
.clair { background: var(--blanc); color: var(--encre); font-weight: 400; }
.brume { background: var(--brume); color: var(--encre); font-weight: 400; }
.clair, .brume { --lien: var(--accent-lien-clair); --secondaire: var(--ardoise); --etiquette: var(--ardoise); }
.sombre, .sombre-2 { --lien: var(--accent-lien-sombre); --secondaire: var(--cendre); --etiquette: var(--ambre); }

/* ---------- Mise en page --------------------------------------------------- */
.conteneur { width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; }
.conteneur-large { width: min(100% - 2 * var(--marge), var(--conteneur-large)); margin-inline: auto; }
.conteneur-texte { width: min(100% - 2 * var(--marge), 46rem); margin-inline: auto; }
.section { padding-block: var(--section); position: relative; }

/* ---------- Typographie ---------------------------------------------------- */
.etiquette { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--etiquette, var(--ambre)); }
.t-geant { font-size: var(--fs-geant); line-height: 0.9; letter-spacing: -0.055em; font-weight: 400; }
.t-xxl { font-size: var(--fs-xxl); line-height: 0.95; letter-spacing: -0.05em; font-weight: 400; }
.t-display { font-size: var(--fs-display); line-height: 1; letter-spacing: -0.045em; font-weight: 400; }
.t-h2 { font-size: var(--fs-h2); line-height: 1.05; letter-spacing: -0.035em; font-weight: 400; }
.t-h3 { font-size: var(--fs-h3); line-height: 1.15; letter-spacing: -0.025em; font-weight: 400; }
.t-lead { font-size: var(--fs-lead); line-height: 1.45; letter-spacing: -0.015em; font-weight: 300; color: var(--secondaire, var(--cendre)); }
.clair .t-lead, .brume .t-lead { font-weight: 400; }
.t-attenue { color: var(--secondaire, var(--cendre)); }
.chiffres { font-variant-numeric: tabular-nums; font-feature-settings: "tnum", "ss01"; }
.entete-chapitre { display: grid; gap: 1.25rem; margin-bottom: clamp(3rem, 2rem + 4vw, 6rem); max-width: 60rem; }
.conteneur.entete-chapitre { max-width: none; }
.conteneur.entete-chapitre > * { max-width: 60rem; }
.entete-chapitre--ligne { max-width: none; grid-template-columns: 1fr auto; align-items: end; gap: 1.5rem 3rem; }
@media (max-width: 767px) { .entete-chapitre--ligne { grid-template-columns: 1fr; } }
.note { font-size: var(--fs-petit); color: var(--secondaire); max-width: 70ch; }

/* ---------- Boutons -------------------------------------------------------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 0.5rem;
  min-height: 3rem; padding: 0 1.5rem; border-radius: var(--pilule); border: 1px solid transparent;
  font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; line-height: 1;
  text-decoration: none; white-space: nowrap; cursor: pointer;
  transition: background-color var(--d-micro), color var(--d-micro), border-color var(--d-micro), transform 120ms var(--ease), box-shadow var(--d-std);
}
.btn:active { transform: scale(0.97); }
.btn--l { min-height: 3.5rem; padding: 0 2rem; font-size: 0.875rem; }
.btn--s { min-height: 2.5rem; padding: 0 1.125rem; font-size: 0.75rem; }
.btn--primaire { background: var(--accent); color: #fff; }
.btn--primaire:hover { background: var(--accent-survol); box-shadow: 0 0 0 6px var(--accent-halo); }
.btn--fantome { color: currentColor; border-color: rgba(255, 255, 255, 0.28); background: transparent; }
.btn--fantome:hover { border-color: #fff; background: rgba(255, 255, 255, 0.08); }
.clair .btn--fantome, .brume .btn--fantome { border-color: var(--acier); }
.clair .btn--fantome:hover, .brume .btn--fantome:hover { border-color: var(--encre); background: rgba(0, 0, 0, 0.04); }
.btn--blanc { background: #fff; color: #000; }
.btn--blanc:hover { background: var(--argent); }
.btn--noir { background: var(--noir); color: #fff; }
.btn--noir:hover { background: var(--noir-3); }
.groupe-boutons { display: flex; flex-wrap: wrap; gap: 0.75rem; }
.lien-fleche { display: inline-flex; align-items: center; gap: 0.4em; color: var(--lien, var(--accent-lien-sombre)); font-weight: 500; text-decoration: none; }
.lien-fleche .icone { transition: transform var(--d-micro) var(--ease); }
.lien-fleche:hover .icone { transform: translateX(4px); }
.lien-fleche:hover :is(span,:where(.fp-span)) { text-decoration: underline; text-underline-offset: 0.22em; text-decoration-thickness: 1px; }
.bouton-rond { width: 2.75rem; height: 2.75rem; display: inline-grid; place-items: center; border-radius: 50%; border: 0; background: rgba(210, 210, 215, 0.64); color: #1d1d1f; transition: background-color var(--d-micro), opacity var(--d-micro); }
.sombre .bouton-rond, .sombre-2 .bouton-rond { background: rgba(255, 255, 255, 0.12); color: #fff; }
.bouton-rond:hover { background: rgba(210, 210, 215, 0.95); }
.sombre .bouton-rond:hover, .sombre-2 .bouton-rond:hover { background: rgba(255, 255, 255, 0.22); }
.bouton-rond[disabled] { opacity: 0.3; cursor: default; }
.icone { width: 1.5rem; height: 1.5rem; flex: none; }
.icone--s { width: 1.125rem; height: 1.125rem; }
.icone--xs { width: 0.875rem; height: 0.875rem; }

/* ---------- Marqueurs de maquette ----------------------------------------- */
.a-confirmer { display: inline-flex; align-items: center; vertical-align: 0.12em; padding: 0.05rem 0.5rem; border-radius: var(--pilule); border: 1px dashed #F5B04C; color: #F5B04C; background: rgba(245, 176, 76, 0.1); font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.01em; line-height: 1.5; white-space: nowrap; text-transform: none; }
.clair .a-confirmer, .brume .a-confirmer, .pied .a-confirmer { color: var(--ambre-texte); border-color: var(--ambre-texte); background: #FFF6E8; }
.gabarit { position: absolute; top: 1rem; left: 1rem; z-index: 2; padding: 0.3rem 0.7rem; border-radius: var(--pilule); background: rgba(255, 255, 255, 0.92); border: 1px dashed var(--acier); font-size: 0.75rem; font-weight: 600; color: #1d1d1f; letter-spacing: 0; text-transform: none; }

/* ---------- En-tête (thème automatique selon le chapitre) ------------------ */
.entete { position: fixed; inset: 0 0 auto 0; z-index: 60; transition: transform var(--d-std) var(--ease); }
.entete__barre {
  position: relative; height: var(--entete-h); display: flex; align-items: center; gap: 2rem; padding-inline: var(--marge);
  color: #fff; background: rgba(0, 0, 0, 0); transition: background-color var(--d-std), color var(--d-std), box-shadow var(--d-std);
}
.entete.est-defile .entete__barre { background: rgba(0, 0, 0, 0.72); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08); }
.entete.theme-clair .entete__barre { color: var(--encre); }
.entete.theme-clair.est-defile .entete__barre { background: rgba(255, 255, 255, 0.78); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08); }
.entete__logo { flex: none; display: block; }
.entete__logo img { height: 1.75rem; width: auto; filter: invert(1); transition: filter var(--d-std); }
.entete.theme-clair .entete__logo img { filter: none; }
.nav { display: none; flex: 1; }
.nav__liste { display: flex; align-items: center; justify-content: center; gap: clamp(0.5rem, 1.4vw, 2rem); }
.nav__lien { display: inline-flex; align-items: center; gap: 0.3rem; padding: 0.5rem 0.25rem; border: 0; background: none; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: inherit; opacity: 0.66; text-decoration: none; white-space: nowrap; transition: opacity var(--d-micro); }
.nav__lien:hover, .nav__bouton[aria-expanded="true"] { opacity: 1; }
.nav__bouton .icone { transition: transform var(--d-std) var(--ease); }
.nav__bouton[aria-expanded="true"] .icone { transform: rotate(180deg); }
.entete__actions { margin-left: auto; display: flex; align-items: center; gap: 0.5rem; }
.entete__tel { display: none; align-items: center; gap: 0.4rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.02em; text-decoration: none; font-variant-numeric: tabular-nums; opacity: 0.85; }
.entete__cta { display: none; }
.entete__rond { width: 2.75rem; height: 2.75rem; display: inline-grid; place-items: center; border-radius: 50%; border: 0; background: transparent; color: inherit; }
.entete__rond:hover { background: rgba(127, 127, 127, 0.16); }
.entete__menu .icone-fermer { display: none; }
.entete__menu[aria-expanded="true"] .icone-menu { display: none; }
.entete__menu[aria-expanded="true"] .icone-fermer { display: block; }
.entete__progression { position: absolute; left: 0; bottom: 0; height: 2px; width: calc(var(--lecture, 0) * 100%); background: var(--accent); box-shadow: 0 0 12px var(--accent); transition: opacity var(--d-std); opacity: 0; }
.entete.est-defile .entete__progression { opacity: 1; }
.entete.est-masque { transform: translateY(-100%); }
.mega { position: absolute; left: 0; right: 0; top: 100%; background: rgba(10, 10, 10, 0.94); color: #fff; -webkit-backdrop-filter: saturate(180%) blur(24px); backdrop-filter: saturate(180%) blur(24px); animation: mega-entree var(--d-std) var(--ease); border-bottom: 1px solid rgba(255, 255, 255, 0.08); }
@keyframes mega-entree { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: none; } }
.mega__grille { width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; padding-block: 3rem; display: grid; grid-template-columns: 1fr 1fr 1.2fr; gap: 3rem; }
.mega__titre { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ambre); margin-bottom: 1rem; }
.mega__colonne :is(ul,:where(.fp-ul)) { list-style: none; padding: 0; display: grid; gap: 0.75rem; }
.mega__colonne :is(a,:where(.fp-a)) { font-size: 1.5rem; font-weight: 400; letter-spacing: -0.03em; text-decoration: none; opacity: 0.9; }
.mega__colonne :is(a,:where(.fp-a)):hover { opacity: 1; color: var(--accent-lien-sombre); }
.mega__encart { border-radius: var(--rayon); padding: 2rem; display: grid; gap: 0.75rem; align-content: start; justify-items: start; background: rgba(255, 255, 255, 0.05); border: 1px solid rgba(255, 255, 255, 0.08); }
.mega__encart-titre { font-size: 1.5rem; line-height: 1.15; letter-spacing: -0.03em; }
.mega__encart-texte { color: var(--cendre); margin-bottom: 0.5rem; }
.menu-mobile { position: fixed; inset: var(--entete-h) 0 0 0; background: #000; color: #fff; overflow-y: auto; padding: 2rem var(--marge) calc(2rem + env(safe-area-inset-bottom)); display: flex; flex-direction: column; justify-content: space-between; gap: 3rem; }
.menu-mobile__liste { list-style: none; padding: 0; display: grid; gap: 0.25rem; }
.menu-mobile__liste :is(a,:where(.fp-a)) { display: block; padding: 0.4rem 0; font-size: 2.25rem; font-weight: 400; letter-spacing: -0.04em; text-decoration: none; }
.menu-mobile__actions { display: grid; gap: 0.75rem; }
@media (min-width: 768px) { .entete__cta { display: inline-flex; } }
@media (min-width: 1100px) { .nav { display: block; } .entete__menu { display: none; } .menu-mobile { display: none !important; } }
@media (min-width: 1280px) { .entete__tel { display: inline-flex; } .entete__rond[href] { display: none; } }

/* ---------- 01 Hero épinglé : nuage de points 3D --------------------------- */
.hero3d { position: relative; height: 330vh; }
.hero3d__collant { position: sticky; top: 0; height: 100svh; overflow: hidden; }
.hero3d__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero3d__voile { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(120% 90% at 70% 45%, transparent 40%, rgba(0, 0, 0, 0.55) 100%); }
.hero3d__contenu { position: relative; z-index: 2; height: 100%; width: min(100% - 2 * var(--marge), var(--conteneur-large)); margin-inline: auto; display: flex; flex-direction: column; justify-content: center; align-items: flex-start; gap: 1.5rem; padding-top: var(--entete-h); pointer-events: none; }
.hero3d__contenu > * { pointer-events: auto; }
.hero3d__titre { font-size: var(--fs-xxl); line-height: 0.93; letter-spacing: -0.052em; font-weight: 400; max-width: 11ch; }
.hero3d__etapes { position: relative; min-height: 7.5rem; width: min(100%, 30rem); }
.hero3d__etape { position: absolute; inset: 0 auto auto 0; display: grid; gap: 0.5rem; opacity: 0; transform: translateY(14px); transition: opacity 600ms var(--ease), transform 600ms var(--ease); }
.hero3d__etape.est-active { opacity: 1; transform: none; }
.hero3d__etape-titre { font-size: var(--fs-h3); letter-spacing: -0.03em; display: flex; align-items: baseline; gap: 0.75rem; }
.hero3d__etape-num { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; color: var(--ambre); }
.hero3d__etape p { color: var(--cendre); max-width: 28rem; }
.hero3d__micro { font-size: var(--fs-petit); color: var(--cendre); display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 1rem; }
.hero3d__micro :is(a,:where(.fp-a)) { text-decoration: none; }
.hero3d__micro :is(a,:where(.fp-a)):hover { color: #fff; }
.etoiles { display: inline-flex; gap: 2px; color: var(--ambre); vertical-align: -0.1em; }
.hero3d__progression { position: absolute; z-index: 2; left: 50%; bottom: 1.75rem; transform: translateX(-50%); display: flex; gap: 0.5rem; }
.hero3d__progression :is(span,:where(.fp-span)) { position: relative; width: 2.5rem; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, 0.18); overflow: hidden; }
.hero3d__progression :is(span,:where(.fp-span))::after { content: ""; position: absolute; inset: 0; transform-origin: left; transform: scaleX(var(--remplissage, 0)); background: var(--accent); box-shadow: 0 0 10px var(--accent); }
.hero3d__defiler { position: absolute; z-index: 2; right: var(--marge); bottom: 1.4rem; font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--cendre); display: flex; align-items: center; gap: 0.75rem; transition: opacity var(--d-std); }
.hero3d__defiler i { display: block; width: 1px; height: 2.5rem; background: linear-gradient(to bottom, transparent, #fff); animation: defiler 1.8s var(--ease-io) infinite; transform-origin: top; }
@keyframes defiler { 0% { transform: scaleY(0); opacity: 1; } 60% { transform: scaleY(1); opacity: 1; } 100% { transform: scaleY(1); opacity: 0; } }
@media (max-width: 1023px) {
  .hero3d { height: 290vh; }
  .hero3d__contenu { justify-content: flex-end; padding-bottom: 5.5rem; gap: 1.1rem; }
  .hero3d__voile { background: linear-gradient(180deg, rgba(0, 0, 0, 0) 25%, rgba(0, 0, 0, 0.78) 62%, #000 100%); }
  .hero3d__etapes { min-height: 6.5rem; }
  .hero3d__defiler { display: none; }
}
@media (max-width: 559px) { .hero3d__contenu .groupe-boutons { display: grid; grid-template-columns: 1fr 1fr; width: 100%; } .hero3d__contenu .btn { width: 100%; padding: 0 1rem; } }

/* ---------- 02 Points forts (carrousel, galerie claire) -------------------- */
.carrousel { position: relative; }
.carrousel__piste {
  position: relative; display: grid; grid-auto-flow: column; grid-auto-columns: min(86vw, 62rem); gap: var(--gouttiere);
  overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scrollbar-width: none;
  padding-inline: max(var(--marge), (100% - var(--conteneur)) / 2); scroll-padding-inline: max(var(--marge), (100% - var(--conteneur)) / 2);
}
.carrousel__piste::-webkit-scrollbar { display: none; }
.carrousel--etroit .carrousel__piste { grid-auto-columns: min(80vw, 24rem); }
.carrousel--moyen .carrousel__piste { grid-auto-columns: min(84vw, 30rem); }
.carrousel__diapo { scroll-snap-align: start; }
.carrousel__commandes { display: flex; justify-content: center; align-items: center; gap: 0.75rem; margin-top: 2rem; }
.carrousel__points { display: flex; align-items: center; gap: 0.625rem; padding: 0.875rem 1.25rem; border-radius: var(--pilule); background: rgba(210, 210, 215, 0.64); -webkit-backdrop-filter: blur(12px); backdrop-filter: blur(12px); }
.sombre .carrousel__points, .sombre-2 .carrousel__points { background: rgba(255, 255, 255, 0.1); }
.carrousel__point { position: relative; width: 0.5rem; height: 0.5rem; padding: 0; border: 0; border-radius: var(--pilule); background: rgba(0, 0, 0, 0.42); overflow: hidden; transition: width 500ms var(--ease), background-color var(--d-std); }
.sombre .carrousel__point, .sombre-2 .carrousel__point { background: rgba(255, 255, 255, 0.42); }
.carrousel__point[aria-selected="true"] { width: 3rem; background: rgba(0, 0, 0, 0.18); }
.sombre .carrousel__point[aria-selected="true"], .sombre-2 .carrousel__point[aria-selected="true"] { background: rgba(255, 255, 255, 0.2); }
.carrousel__point[aria-selected="true"]::after { content: ""; position: absolute; inset: 0; border-radius: inherit; background: var(--accent); transform-origin: left; transform: scaleX(0); }
.carrousel.est-en-lecture .carrousel__point[aria-selected="true"]::after { animation: progression-diapo var(--duree, 5s) linear forwards; }
.carrousel:not(.est-en-lecture) .carrousel__point[aria-selected="true"]::after { transform: scaleX(1); }
@keyframes progression-diapo { to { transform: scaleX(1); } }
.carrousel__lecture { width: 3.25rem; height: 3.25rem; }
.carrousel__lecture .icone-lecture { display: none; }
.carrousel:not(.est-en-lecture) .carrousel__lecture .icone-lecture { display: block; }
.carrousel:not(.est-en-lecture) .carrousel__lecture .icone-pause { display: none; }
.carrousel__fleches { display: flex; gap: 0.75rem; }

.fort { position: relative; height: min(78vh, 42rem); min-height: 30rem; border-radius: var(--rayon); overflow: hidden; background: #fff; color: var(--encre); display: flex; flex-direction: column; isolation: isolate; }
.fort__texte { position: relative; z-index: 2; padding: clamp(1.75rem, 1.2rem + 2vw, 3rem); display: grid; gap: 0.75rem; max-width: 36rem; }
.fort__titre { font-size: clamp(1.75rem, 1.2rem + 2.2vw, 3.25rem); line-height: 1.02; letter-spacing: -0.045em; font-weight: 400; }
.fort__texte p { color: var(--ardoise); font-size: 1.0625rem; }
.fort__media { position: relative; flex: 1; min-height: 0; }
.fort__media :is(picture,figure.wp-block-image) { position: absolute; inset: 0; }
.fort--photo { color: #fff; }
.fort--photo .fort__media { position: absolute; inset: 0; z-index: -1; }
.fort--photo::after { content: ""; position: absolute; inset: 0; z-index: -1; background: linear-gradient(180deg, rgba(0, 0, 0, 0.6) 0%, rgba(0, 0, 0, 0) 45%); }
.fort--photo .fort__texte p { color: rgba(255, 255, 255, 0.82); }
.fort--sombre { background: #000; color: #fff; }
.fort--sombre .fort__texte p { color: var(--cendre); }
.fort__centre { position: absolute; inset: 0; display: grid; place-items: center; padding: 6rem 2rem 2rem; }

/* Maquettes « produit » en HTML (rapport, téléphone, anneau, avis) */
.maquette-rapport { width: min(78%, 26rem); background: #fff; border-radius: 18px; box-shadow: 0 30px 60px rgba(0, 0, 0, 0.12), 0 0 0 1px rgba(0, 0, 0, 0.05); padding: 1.75rem; display: grid; gap: 1rem; align-content: start; transform: rotate(-2.5deg) translateY(1.5rem); }
.maquette-rapport__entete { display: flex; justify-content: space-between; align-items: center; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.maquette-rapport__titre { font-size: 1.375rem; letter-spacing: -0.03em; color: var(--encre); }
.maquette-rapport__ligne { display: grid; gap: 0.4rem; }
.maquette-rapport__ligne :is(span,:where(.fp-span)) { font-size: 0.75rem; color: var(--ardoise); font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; }
.maquette-rapport__barre { height: 0.55rem; border-radius: var(--pilule); background: var(--brume); overflow: hidden; }
.maquette-rapport__barre i { display: block; height: 100%; width: var(--l, 60%); border-radius: inherit; background: var(--accent); }
.maquette-rapport__signature { margin-top: 0.5rem; height: 2.5rem; border-bottom: 1px solid var(--filet); position: relative; }
.maquette-rapport__signature::after { content: ""; position: absolute; left: 0.5rem; bottom: 0.5rem; width: 8rem; height: 1.5rem; border: 2px solid var(--encre); border-color: var(--encre) transparent transparent transparent; border-radius: 50%; transform: rotate(-8deg); opacity: 0.6; }
.maquette-tel { width: 16rem; aspect-ratio: 9 / 19; border-radius: 2.75rem; background: #0b0b0c; padding: 0.7rem; box-shadow: 0 0 0 2px #2c2c2e, 0 40px 80px rgba(0, 0, 0, 0.25); transform: translateY(3.5rem); }
.maquette-tel__ecran { height: 100%; border-radius: 2.2rem; background: #fff; padding: 3rem 1.1rem 1rem; display: grid; gap: 0.6rem; align-content: start; overflow: hidden; position: relative; }
.maquette-tel__ecran::before { content: ""; position: absolute; top: 0.7rem; left: 50%; transform: translateX(-50%); width: 5.5rem; height: 1.6rem; border-radius: var(--pilule); background: #0b0b0c; }
.maquette-tel__barre { height: 4px; border-radius: 4px; background: var(--brume); overflow: hidden; }
.maquette-tel__barre i { display: block; width: 16%; height: 100%; background: var(--accent); }
.maquette-tel__q { font-size: 1.05rem; letter-spacing: -0.03em; color: var(--encre); font-weight: 500; margin: 0.4rem 0 0.2rem; }
.maquette-tel__choix { border: 1px solid var(--acier); border-radius: 12px; padding: 0.6rem 0.75rem; font-size: 0.8125rem; color: var(--encre); display: flex; justify-content: space-between; align-items: center; }
.maquette-tel__choix::after { content: ""; width: 0.9rem; height: 0.9rem; border-radius: 50%; border: 1.5px solid var(--acier); }
.maquette-tel__choix.est-coche { border: 2px solid var(--accent); background: color-mix(in srgb, var(--accent) 8%, #fff); }
.maquette-tel__choix.est-coche::after { background: var(--accent); border-color: var(--accent); }
.maquette-tel__cta { margin-top: 0.5rem; border-radius: var(--pilule); background: var(--accent); color: #fff; text-align: center; padding: 0.7rem; font-size: 0.7rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.anneau-statique { position: relative; width: min(70%, 22rem); aspect-ratio: 1; display: grid; place-items: center; }
.anneau-statique svg { position: absolute; inset: 0; width: 100%; height: 100%; animation: tourne 30s linear infinite; }
.anneau-statique b { font-size: clamp(5rem, 3rem + 6vw, 9rem); font-weight: 400; letter-spacing: -0.06em; line-height: 1; }
.anneau-statique__unite { margin-top: 0.25rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ambre); }
.anneau-statique { grid-auto-rows: min-content; align-content: center; }
@keyframes tourne { to { transform: rotate(360deg); } }
.note-etoiles { display: grid; justify-items: center; gap: 1rem; }
.note-etoiles b { font-size: clamp(6rem, 3.5rem + 8vw, 11rem); font-weight: 400; letter-spacing: -0.06em; line-height: 0.9; }
.note-etoiles .etoiles .icone { width: 2rem; height: 2rem; }

/* ---------- 03 Manifeste --------------------------------------------------- */
.manifeste { position: relative; padding-block: clamp(8rem, 5rem + 12vw, 16rem); overflow: hidden; }
.manifeste__canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0.8; }
.manifeste__contenu { position: relative; z-index: 2; width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; text-align: center; display: grid; justify-items: center; gap: 2.5rem; }
.manifeste__phrase { font-size: var(--fs-xxl); line-height: 0.98; letter-spacing: -0.05em; max-width: 13ch; }
.js .manifeste__phrase .mot { opacity: 0.14; filter: blur(4px); transition: opacity 500ms var(--ease), filter 500ms var(--ease); }
.js .manifeste__phrase .mot.est-lu { opacity: 1; filter: none; }
.manifeste__reponse { font-size: var(--fs-display); line-height: 1; letter-spacing: -0.045em; color: var(--ambre); max-width: 16ch; }
.manifeste__texte { font-size: var(--fs-lead); color: var(--cendre); max-width: 42ch; }

/* ---------- 04 Signes (carrousel de cartes claires) ------------------------ */
.signe { position: relative; min-height: 30rem; height: 100%; border-radius: var(--rayon); background: var(--brume); padding: 2rem 2rem 5.5rem; display: grid; gap: 1rem; align-content: start; }
.signe__visuel { height: 11rem; border-radius: 20px; background: #fff; display: grid; place-items: center; margin-bottom: 0.75rem; overflow: hidden; }
.signe__visuel svg { width: 88%; max-width: 15rem; height: auto; }
.signe__num { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; color: var(--ardoise); }
.signe__titre { font-size: 1.75rem; line-height: 1.1; letter-spacing: -0.035em; }
.signe__texte { color: var(--ardoise); }
.signe__plus { position: absolute; right: 1.5rem; bottom: 1.5rem; width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--encre); color: #fff; transition: transform var(--d-std) var(--ease), background-color var(--d-micro); }
.signe__plus:hover { transform: rotate(90deg); background: var(--accent); }
.illu { fill: none; stroke: var(--encre); stroke-width: 1.5; stroke-linecap: round; }
.illu-doux { stroke: var(--acier); stroke-width: 1; }
.illu-legende { fill: var(--ardoise); stroke: none; font-size: 10px; font-family: var(--police); }
.illu-peau { fill: #EEE7E1; stroke: none; }
.illu-point { fill: #C9A6A0; stroke: none; }
.illu-tissu { fill: #fff; stroke: var(--filet); }
.illu-couture { stroke: var(--acier); stroke-dasharray: 4 4; }
.illu-tache { fill: var(--encre); stroke: none; }
.illu-insecte { fill: #6B4A3A; stroke: none; }
.illu-bois { stroke: #B99B7A; stroke-width: 2; }
.illu-oeuf { fill: #FBF7EE; stroke: #CBBD9F; stroke-width: 1; }
.illu-scan { stroke: var(--accent); stroke-width: 1.5; }
.dialogue { width: min(100% - 2rem, 42rem); max-height: min(85vh, 46rem); border: 0; border-radius: var(--rayon); padding: clamp(2rem, 1.5rem + 2vw, 3rem); color: var(--encre); background: #fff; display: grid; gap: 1rem; font-weight: 400; }
.dialogue:not([open]) { display: none; }
.dialogue::backdrop { background: rgba(0, 0, 0, 0.6); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
.dialogue[open] { animation: dialogue-entree var(--d-std) var(--ease); }
@keyframes dialogue-entree { from { opacity: 0; transform: translateY(20px) scale(0.98); } to { opacity: 1; transform: none; } }
.dialogue__titre { font-size: var(--fs-h3); letter-spacing: -0.03em; line-height: 1.15; padding-right: 2.5rem; }
.dialogue p { color: #3a3a3c; }
.dialogue .etiquette { color: var(--ardoise); }
.dialogue__fermer { position: absolute; top: 1rem; right: 1rem; width: 2.75rem; height: 2.75rem; border-radius: 50%; border: 0; display: grid; place-items: center; background: var(--brume); color: var(--encre); }
.dialogue .lien-fleche { color: var(--accent-lien-clair); }
@media (max-width: 639px) { .dialogue { width: 100%; max-width: none; margin: auto 0 0; border-radius: var(--rayon) var(--rayon) 0 0; max-height: 88vh; } }

/* ---------- 05 Méthode : zoom au défilement + carrousel -------------------- */
.zoom { position: relative; height: 240vh; }
.zoom__collant { position: sticky; top: 0; height: 100svh; overflow: hidden; display: grid; place-items: center; }
.zoom { --zoom-haut: 40%; }
@media (max-width: 767px) { .zoom { --zoom-haut: 46%; } }
.zoom__media { position: absolute; inset: 0; clip-path: inset(calc((1 - var(--p, 0)) * var(--zoom-haut)) calc((1 - var(--p, 0)) * 24%) calc((1 - var(--p, 0)) * 7%) round calc((1 - var(--p, 0)) * 28px)); }
.zoom__media :is(picture,figure.wp-block-image) { height: 100%; }
.zoom__media img { transform: scale(calc(1.18 - var(--p, 0) * 0.18)); }
.zoom__media::after { content: ""; position: absolute; inset: 0; background: rgba(0, 0, 0, calc(var(--p, 0) * 0.5)); }
.zoom__titre { position: absolute; z-index: 2; top: clamp(5rem, 4rem + 4vw, 8rem); left: 0; right: 0; width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; display: grid; gap: 1rem; opacity: calc(1 - var(--p, 0) * 3); transform: translateY(calc(var(--p, 0) * -40px)); }
.zoom__chiffre { position: relative; z-index: 2; text-align: center; opacity: calc((var(--p, 0) - 0.55) * 3); transform: scale(calc(0.9 + var(--p, 0) * 0.1)); }
.zoom__chiffre b { display: block; font-size: var(--fs-geant); font-weight: 400; letter-spacing: -0.06em; line-height: 0.85; color: #fff; text-shadow: 0 0 60px rgba(255, 184, 41, 0.55); }
.zoom__chiffre b sup { font-size: 0.35em; vertical-align: 1.2em; color: var(--ambre); letter-spacing: -0.02em; }
.zoom__chiffre :is(span,:where(.fp-span)) { display: block; margin-top: 1rem; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ambre); }
.methode-carte { height: 100%; border-radius: var(--rayon); background: var(--noir-2); overflow: hidden; display: flex; flex-direction: column; }
.methode-carte__media { aspect-ratio: 16 / 10; overflow: hidden; }
.methode-carte__media :is(picture,figure.wp-block-image) { display: block; height: 100%; }
.methode-carte__media img { transition: transform 1.2s var(--ease); }
.methode-carte:hover .methode-carte__media img { transform: scale(1.04); }
.methode-carte__corps { padding: 2rem; display: grid; gap: 1rem; flex: 1; align-content: start; }
.methode-carte__num { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; color: var(--ambre); }
.methode-carte__titre { font-size: 2.25rem; letter-spacing: -0.045em; line-height: 1; }
.methode-carte__cle { font-size: 1rem; color: var(--cendre); }
.methode-carte__cle b { display: block; font-weight: 400; font-size: 1.75rem; letter-spacing: -0.035em; color: var(--ambre); }
.fiche { display: grid; border-top: 1px solid rgba(255, 255, 255, 0.12); }
.fiche > div { display: grid; gap: 0.25rem; padding: 0.875rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
.fiche :is(dt,:where(.fp-dt)) { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--cendre); }
.fiche :is(dd,:where(.fp-dd)) { font-size: 1rem; color: #fff; }
.fiche__limites :is(dd,:where(.fp-dd)) { color: var(--cendre); }

/* ---------- 06 Déroulé : défilement horizontal épinglé --------------------- */
.horizontal { position: relative; }
.horizontal__collant { position: sticky; top: 0; height: 100svh; overflow: hidden; display: flex; flex-direction: column; justify-content: center; gap: 3rem; }
.horizontal__entete { width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; display: grid; gap: 1rem; }
.horizontal__piste { display: flex; gap: clamp(1.5rem, 1rem + 2vw, 3rem); padding-inline: max(var(--marge), (100% - var(--conteneur)) / 2); will-change: transform; transform: translate3d(calc(var(--decalage, 0) * -1px), 0, 0); }
.etape { flex: none; width: min(78vw, 30rem); display: grid; gap: 1rem; align-content: start; }
.etape__num { font-size: clamp(6rem, 4rem + 6vw, 11rem); font-weight: 400; line-height: 0.8; letter-spacing: -0.06em; color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, 0.45); transition: color 700ms var(--ease), -webkit-text-stroke-color 700ms; }
.etape.est-active .etape__num { color: #fff; -webkit-text-stroke-color: #fff; }
.etape__titre { font-size: 2rem; letter-spacing: -0.04em; line-height: 1.05; }
.etape__but { color: var(--ambre); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.etape__texte { color: var(--cendre); }
.horizontal__barre { width: min(100% - 2 * var(--marge), var(--conteneur)); margin-inline: auto; height: 2px; background: rgba(255, 255, 255, 0.12); position: relative; }
.horizontal__barre i { position: absolute; left: 0; top: 0; height: 100%; width: calc(var(--p, 0) * 100%); background: var(--accent); box-shadow: 0 0 14px var(--accent); }
@media (max-width: 1023px) {
  .horizontal { height: auto !important; }
  .horizontal__collant { position: static; height: auto; padding-block: var(--section); }
  .horizontal__piste { transform: none; overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: max(var(--marge), (100% - var(--conteneur)) / 2); scrollbar-width: none; padding-bottom: 0.5rem; }
  .horizontal__piste::-webkit-scrollbar { display: none; }
  .etape { scroll-snap-align: start; }
  .etape__num { color: #fff; -webkit-text-stroke-color: #fff; }
  .horizontal__barre { display: none; }
}

/* ---------- 07 Interventions (cartes claires) ------------------------------ */
.cas { height: 100%; border-radius: var(--rayon); background: #fff; overflow: hidden; display: flex; flex-direction: column; }
.cas__media { position: relative; aspect-ratio: 4 / 3; overflow: hidden; }
.cas__media :is(picture,figure.wp-block-image) { position: absolute; inset: 0; }
.cas__corps { padding: 1.75rem; display: grid; gap: 0.75rem; }
.cas__meta { font-size: 0.8125rem; color: var(--ardoise); }
.cas__titre { font-size: 1.5rem; line-height: 1.15; letter-spacing: -0.035em; }
.cas__texte { color: var(--ardoise); font-size: 1rem; }

/* ---------- 08 Formules ---------------------------------------------------- */
.formules { display: grid; gap: 1rem; }
@media (min-width: 700px) { .formules { grid-template-columns: repeat(2, 1fr); align-items: stretch; } }
@media (min-width: 1200px) { .formules { grid-template-columns: repeat(4, 1fr); } }
.formule { position: relative; border-radius: var(--rayon); background: var(--brume); padding: clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem); display: flex; flex-direction: column; gap: 1.1rem; container-type: inline-size; transition: transform 500ms var(--ease); }
.formule:hover { transform: translateY(-6px); }
.formule--vedette { background: #000; color: #fff; box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.06), 0 40px 80px -30px var(--accent-halo); }
.formule__entete { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem 0.75rem; }
.formule__nom { font-size: 1.875rem; letter-spacing: -0.04em; line-height: 1; }
.formule__badge { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ambre); }
.formule__accroche { color: var(--ardoise); }
.formule--vedette .formule__accroche { color: var(--cendre); }
.formule__prix { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; margin: 0.5rem 0; }
.formule__des { width: 100%; font-size: 0.8125rem; color: var(--ardoise); font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.formule--vedette .formule__des, .formule--vedette .formule__ttc { color: var(--cendre); }
.formule__montant { font-size: clamp(3.5rem, 2.8rem + 2.6vw, 5.25rem); font-weight: 400; letter-spacing: -0.06em; line-height: 0.9; }
.formule__montant--texte { font-size: clamp(2.75rem, 2.3rem + 2vw, 4rem); }
.formule__ttc { font-size: 0.875rem; color: var(--ardoise); font-weight: 500; }
.formule__details { display: grid; border-top: 1px solid rgba(0, 0, 0, 0.1); margin-bottom: 0.75rem; }
.formule--vedette .formule__details, .formule--vedette .formule__details > div { border-color: rgba(255, 255, 255, 0.12); }
.formule__details > div { display: grid; gap: 0.2rem; padding: 0.8rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.1); font-size: 0.9375rem; }
@container (min-width: 24rem) { .formule__details > div { grid-template-columns: 6.5rem 1fr; gap: 0.75rem; } }
.formule__details :is(dt,:where(.fp-dt)) { color: var(--ardoise); font-weight: 600; font-size: 0.8125rem; }
.formule--vedette .formule__details :is(dt,:where(.fp-dt)) { color: var(--cendre); }
.formule__cta { margin-top: auto; width: 100%; }
.notes { margin-top: 2rem; display: grid; gap: 0.5rem; font-size: var(--fs-petit); color: var(--ardoise); padding-left: 1.25rem; }
.notes :is(a,:where(.fp-a)) { color: var(--accent-lien-clair); }

/* ---------- 09 Garantie ---------------------------------------------------- */
.garantie { position: relative; overflow: hidden; }
.garantie__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
@media (max-width: 1023px) { .garantie { padding-top: calc(var(--section) + 14rem); } }
.garantie__contenu { position: relative; z-index: 2; }
.garantie__chiffre { font-size: var(--fs-geant); font-weight: 400; line-height: 0.85; letter-spacing: -0.065em; }
.garantie__titre { font-size: var(--fs-display); letter-spacing: -0.045em; line-height: 1; margin-top: 1.25rem; }
.garantie__intro { margin-top: 1.25rem; }
.garantie__colonnes { display: grid; gap: 2rem; margin-block: clamp(3rem, 2rem + 4vw, 5.5rem) 2rem; padding-top: 2rem; border-top: 1px solid rgba(255, 255, 255, 0.12); }
@media (min-width: 900px) { .garantie__colonnes { grid-template-columns: repeat(2, 1fr); gap: 3rem; } }
.garantie__sous-titre { font-size: 1.375rem; letter-spacing: -0.03em; margin-bottom: 0.75rem; }
.garantie__colonnes p { color: var(--cendre); }
.garantie__note { font-size: var(--fs-petit); color: var(--cendre); margin-bottom: 3rem; max-width: 72ch; }
.garantie :is(a,:where(.fp-a)):not(.btn) { color: var(--accent-lien-sombre); }

/* ---------- 10 Avis -------------------------------------------------------- */
.avis__tete { display: grid; gap: 2rem; align-items: end; margin-bottom: clamp(3rem, 2rem + 3vw, 5rem); }
@media (min-width: 900px) { .avis__tete { grid-template-columns: 1.3fr 1fr; } }
.avis__note { display: flex; align-items: center; gap: 1.5rem; }
.avis__valeur { font-size: clamp(5.5rem, 4rem + 5vw, 9rem); font-weight: 400; letter-spacing: -0.065em; line-height: 0.85; }
.avis__etoiles { display: flex; gap: 3px; margin-bottom: 0.5rem; color: #E8A317; }
.avis__releve { font-size: var(--fs-petit); color: var(--ardoise); }
.avis-carte { height: 100%; margin: 0; border-radius: var(--rayon); background: #fff; padding: 2rem; display: flex; flex-direction: column; gap: 1.75rem; }
.avis-carte--gabarit { border: 1.5px dashed var(--filet); }
.avis-carte__texte { margin: 0; flex: 1; }
.avis-carte__texte p { font-size: 1.1875rem; line-height: 1.5; letter-spacing: -0.015em; color: var(--encre); }
.avis-carte--gabarit .avis-carte__texte p { color: var(--ardoise); font-size: 1.0625rem; }
.avis-carte__auteur { display: grid; gap: 0.2rem; padding-top: 1.25rem; border-top: 1px solid rgba(0, 0, 0, 0.08); font-size: var(--fs-petit); }
.avis-carte__auteur strong { font-weight: 600; color: var(--encre); }
.avis-carte__auteur :is(span,:where(.fp-span)) { color: var(--ardoise); }
.avis__mention { margin-top: 1.25rem; font-size: 0.8125rem; }

/* ---------- 11 Professionnels ---------------------------------------------- */
.pro { display: grid; gap: 3rem; align-items: center; }
@media (min-width: 1024px) { .pro { grid-template-columns: 5fr 7fr; gap: 5rem; } }
.pro__texte { display: grid; gap: 1.5rem; justify-items: start; }
.pro__media { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 16 / 11; transform: translate3d(calc((1 - var(--p, 1)) * 12%), 0, 0) scale(calc(0.94 + var(--p, 1) * 0.06)); }
.liste-liens { list-style: none; padding: 0; display: grid; gap: 0.9rem; margin: 0.5rem 0 1rem; }
.liste-liens .lien-fleche { font-size: 1.25rem; font-weight: 400; letter-spacing: -0.02em; }

/* ---------- 12 Lyon : radar et défilement de villes ------------------------ */
.lyon__grille { display: grid; gap: 3rem; align-items: center; }
@media (min-width: 1024px) { .lyon__grille { grid-template-columns: 6fr 5fr; gap: 5rem; } }
.radar { position: relative; aspect-ratio: 1; }
.radar__balayage { position: absolute; inset: 0; border-radius: 50%; background: conic-gradient(from -80deg, transparent 0deg, var(--accent-halo) 78deg, color-mix(in srgb, var(--accent) 80%, #fff) 80deg, transparent 80.5deg); animation: tourne 6s linear infinite; -webkit-mask: radial-gradient(circle closest-side, #000 89%, transparent 89.5%); mask: radial-gradient(circle closest-side, #000 89%, transparent 89.5%); pointer-events: none; }
.carte-zones__svg { position: relative; width: 100%; height: auto; font-family: var(--police); }
.carte-zones .anneau { fill: none; stroke: rgba(255, 255, 255, 0.12); stroke-width: 1; }
.carte-zones .anneau--30 { fill: rgba(255, 255, 255, 0.03); stroke: var(--accent); stroke-width: 1.5; }
.carte-zones .anneau-legende { font-size: 15px; font-weight: 600; fill: var(--accent-lien-sombre); letter-spacing: 0.04em; }
.carte-zones .ville circle { fill: #fff; transform-box: fill-box; transform-origin: center; animation: ping 6s linear infinite; animation-delay: var(--retard, 0s); }
.carte-zones .ville text { font-size: 16px; fill: rgba(255, 255, 255, 0.8); font-weight: 400; paint-order: stroke; stroke: #000; stroke-width: 4px; stroke-linejoin: round; }
.carte-zones .ville--g circle { fill: #000; stroke: #fff; stroke-width: 1.5; }
.carte-zones .ville--g text { fill: #fff; font-weight: 600; }
.carte-zones .ville--centre circle { fill: var(--accent); stroke: #fff; stroke-width: 2; animation: none; }
.carte-zones .ville--centre text { font-size: 21px; font-weight: 700; fill: #fff; }
@keyframes ping { 0% { transform: scale(2.4); fill: var(--ambre); } 14% { transform: scale(1); fill: #fff; } 100% { transform: scale(1); } }
/* Punaises repérées par le faisceau (générées par app.js, une à deux par tour) */
.radar__cibles { position: absolute; inset: 0; width: 100%; height: 100%; overflow: visible; pointer-events: none; }
.radar-punaise__corps { fill: var(--ambre); transform-box: fill-box; transform-origin: center; opacity: 0; animation: punaise-reperee 4.6s var(--ease) forwards; }
.radar-punaise__pattes { fill: none; stroke: var(--ambre); stroke-width: 1.1; stroke-linecap: round; stroke-linejoin: round; }
.radar-punaise__segments { fill: none; stroke: rgba(0, 0, 0, 0.38); stroke-width: 0.7; stroke-linecap: round; }
.radar-punaise__onde { fill: none; stroke: var(--ambre); stroke-width: 1.2; transform-box: fill-box; transform-origin: center; opacity: 0; animation: punaise-onde 1.5s var(--ease) forwards; }
.radar-punaise__viseur { fill: none; stroke: var(--ambre); stroke-width: 1.3; stroke-linecap: round; stroke-linejoin: round; transform-box: fill-box; transform-origin: center; opacity: 0; animation: punaise-viseur 2.6s var(--ease) forwards; }
@keyframes punaise-reperee {
  0% { opacity: 0; transform: translateY(0) scale(0.3); }
  7% { opacity: 1; transform: translateY(0) scale(1.2); }
  15% { opacity: 1; transform: translateY(0) scale(1); }
  70% { opacity: 0.9; }
  100% { opacity: 0; transform: translateY(-7px) scale(1); }
}
@keyframes punaise-onde { 0% { opacity: 0.95; transform: scale(0.2); } 100% { opacity: 0; transform: scale(1.5); } }
@keyframes punaise-viseur { 0% { opacity: 0; transform: scale(1.7); } 14% { opacity: 1; transform: scale(1); } 70% { opacity: 0.9; transform: scale(1); } 100% { opacity: 0; transform: scale(0.9); } }
@media (max-width: 559px) { .carte-zones .ville text { font-size: 21px; } .carte-zones .ville--centre text { font-size: 25px; } }
.zones-listes { display: grid; gap: 1.75rem; }
.zones-listes h3 { font-size: 1.25rem; letter-spacing: -0.02em; margin-bottom: 0.4rem; }
.zones-listes p, .zones-listes :is(li,:where(.fp-li)) { color: var(--cendre); }
.zones-listes strong { color: #fff; font-weight: 500; }
.defile-villes { margin-top: clamp(4rem, 3rem + 4vw, 7rem); display: grid; gap: 0.5rem; overflow: hidden; -webkit-mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.defile-villes__rangee { display: flex; width: max-content; animation: defile 70s linear infinite; }
.defile-villes__rangee--inverse { animation-direction: reverse; animation-duration: 90s; }
.defile-villes:hover .defile-villes__rangee { animation-play-state: paused; }
.defile-villes :is(span,:where(.fp-span)) { font-size: clamp(2rem, 1.5rem + 2.4vw, 4rem); font-weight: 400; letter-spacing: -0.045em; white-space: nowrap; color: rgba(255, 255, 255, 0.2); padding-right: 1.25em; }
.defile-villes :is(span,:where(.fp-span)).est-fort { color: #fff; }
.defile-villes :is(span,:where(.fp-span))::after { content: "·"; margin-left: 1.25em; color: var(--accent); }
@keyframes defile { to { transform: translateX(-50%); } }

/* ---------- 13 Devis ------------------------------------------------------- */
.devis { background: #fff; border-radius: var(--rayon); padding: clamp(1.5rem, 1rem + 2.5vw, 3rem); display: grid; gap: 1.25rem; }
.devis__progression { height: 4px; border-radius: var(--pilule); background: var(--brume); overflow: hidden; }
.devis__progression :is(span,:where(.fp-span)) { display: block; height: 100%; width: 16.66%; background: var(--accent); border-radius: inherit; transition: width var(--d-std) var(--ease); }
.devis__etape-n { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.devis__etape { border: 0; padding: 0; min-width: 0; display: none; gap: 1rem; }
.devis__etape.est-active { display: grid; animation: etape-entree var(--d-std) var(--ease); }
@keyframes etape-entree { from { opacity: 0; transform: translateX(14px); } to { opacity: 1; transform: none; } }
.devis__question { font-size: var(--fs-h3); letter-spacing: -0.035em; line-height: 1.15; padding: 0; margin-bottom: 0.5rem; font-weight: 400; }
.devis__aide { color: var(--ardoise); font-size: 0.9375rem; }
.devis__sous-question { font-weight: 600; margin-top: 0.75rem; }
.choix-grille { display: grid; gap: 0.75rem; }
@media (min-width: 560px) { .choix-grille { grid-template-columns: repeat(2, 1fr); } }
.choix { position: relative; display: flex; align-items: center; min-height: 3.5rem; padding: 0.75rem 1.25rem; border: 1px solid var(--acier); border-radius: 18px; cursor: pointer; transition: border-color var(--d-micro), background-color var(--d-micro); }
.choix input { position: absolute; opacity: 0; pointer-events: none; }
.choix :is(span,:where(.fp-span)) { display: flex; align-items: center; gap: 0.75rem; width: 100%; }
.choix :is(span,:where(.fp-span))::after { content: ""; margin-left: auto; width: 1.25rem; height: 1.25rem; border-radius: 50%; border: 1.5px solid var(--acier); flex: none; transition: all var(--d-micro); }
.choix:hover { border-color: var(--encre); }
.choix:has(input:checked) { border: 2px solid var(--accent); background: color-mix(in srgb, var(--accent) 8%, #fff); padding: calc(0.75rem - 1px) calc(1.25rem - 1px); }
.choix:has(input:checked) :is(span,:where(.fp-span))::after { border-color: var(--accent); background: var(--accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center / 70% no-repeat; }
.choix:has(input:focus-visible) { outline: 2px solid var(--accent); outline-offset: 2px; }
.champs-2 { display: grid; gap: 1rem; }
@media (min-width: 560px) { .champs-2 { grid-template-columns: 1fr 1fr; } }
.champ { display: grid; gap: 0.5rem; }
.champ label { font-size: 0.9375rem; font-weight: 600; }
.champ__facultatif { font-weight: 400; color: var(--ardoise); }
.champ input, .champ select { width: 100%; height: 3.25rem; padding: 0 1rem; border: 1px solid var(--acier); border-radius: var(--rayon-champ); background: #fff; font-size: 1.0625rem; transition: border-color var(--d-micro), box-shadow var(--d-micro); }
.champ select { appearance: none; background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%231d1d1f' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E") right 1rem center / 1.25rem no-repeat; }
.champ input:focus, .champ select:focus { outline: none; border: 2px solid var(--accent); box-shadow: 0 0 0 4px var(--accent-halo); padding: 0 calc(1rem - 1px); }
.champ input[aria-invalid="true"] { border-color: #C0282D; }
.champ__aide { font-size: var(--fs-petit); color: var(--ardoise); }
.champ__erreur { font-size: var(--fs-petit); color: #C0282D; }
.case { display: flex; gap: 0.75rem; align-items: flex-start; font-size: 0.9375rem; color: #3a3a3c; }
.case input { width: 1.25rem; height: 1.25rem; margin-top: 0.1rem; accent-color: var(--accent); flex: none; }
.case :is(a,:where(.fp-a)) { color: var(--accent-lien-clair); }
.depot { position: relative; display: grid; justify-items: center; gap: 0.75rem; padding: 3rem 1.25rem; border: 1.5px dashed var(--acier); border-radius: 20px; text-align: center; cursor: pointer; color: var(--ardoise); transition: border-color var(--d-micro), background-color var(--d-micro); }
.depot:hover { border-color: var(--accent); background: color-mix(in srgb, var(--accent) 6%, #fff); }
.depot input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }
.depot strong { color: var(--encre); }
.depot__apercus { list-style: none; padding: 0; display: flex; gap: 0.75rem; flex-wrap: wrap; }
.depot__apercus img { width: 5rem; height: 5rem; object-fit: cover; border-radius: 12px; }
.devis__navigation { display: flex; justify-content: space-between; align-items: center; gap: 0.75rem; margin-top: 0.75rem; }
.devis__navigation [data-continuer], .devis__navigation [data-envoyer] { margin-left: auto; }
.devis__navigation .btn--fantome { border-color: transparent; }
.devis__merci { display: grid; gap: 1rem; padding: 1rem 0; }
.devis__merci-icone { width: 3.5rem; height: 3.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; box-shadow: 0 0 0 8px var(--accent-halo); }
.devis__merci-titre { font-weight: 600; }
.devis__maquette { font-size: var(--fs-petit); color: var(--ambre-texte); }
.liste-coches { list-style: none; padding: 0; display: grid; gap: 0.5rem; }
.liste-coches :is(li,:where(.fp-li)) { position: relative; padding-left: 1.5rem; color: #3a3a3c; }
.liste-coches :is(li,:where(.fp-li))::before { content: ""; position: absolute; left: 0; top: 0.55em; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--accent); }

/* ---------- 14 FAQ --------------------------------------------------------- */
.faq { border-top: 1px solid rgba(0, 0, 0, 0.1); }
.faq__item { border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.faq__item summary { list-style: none; display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; padding: 1.5rem 0; cursor: pointer; }
.faq__item summary::-webkit-details-marker { display: none; }
.faq__question { font-size: clamp(1.125rem, 1rem + 0.5vw, 1.5rem); line-height: 1.25; letter-spacing: -0.025em; font-weight: 400; }
.faq__icone { flex: none; width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--brume); transition: transform var(--d-std) var(--ease), background-color var(--d-micro), color var(--d-micro); }
.faq__item[open] .faq__icone { transform: rotate(45deg); background: var(--accent); color: #fff; }
.faq__reponse { display: grid; gap: 0.75rem; padding: 0 3.5rem 1.75rem 0; color: #3a3a3c; }
.faq__reponse .lien-fleche { color: var(--accent-lien-clair); }

/* ---------- 15 Appel final ------------------------------------------------- */
.final { position: relative; overflow: hidden; text-align: center; }
.final__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.final__contenu { position: relative; z-index: 2; display: grid; justify-items: center; gap: 1.75rem; }
.final__titre { font-size: var(--fs-xxl); line-height: 0.95; letter-spacing: -0.052em; max-width: 12ch; }
.final__contact { font-size: var(--fs-petit); color: var(--cendre); }
.final__contact :is(a,:where(.fp-a)) { color: #fff; text-decoration: none; font-variant-numeric: tabular-nums; font-weight: 600; }

/* ---------- Pied de page (clair, façon Apple) ----------------------------- */
.pied { background: var(--brume); color: var(--encre); font-weight: 400; padding-block: clamp(4rem, 3rem + 3vw, 6rem) calc(3rem + var(--barre-h)); font-size: 0.875rem; }
@media (min-width: 1024px) { .pied { padding-bottom: 3rem; } }
.pied__haut { display: grid; gap: 3rem; padding-bottom: 3rem; border-bottom: 1px solid var(--filet); }
@media (min-width: 1024px) { .pied__haut { grid-template-columns: 1fr 3fr; } }
.pied__marque { display: grid; gap: 1rem; align-content: start; }
.pied__logo { width: 7.5rem; height: auto; }
.pied__accroche { color: var(--ardoise); max-width: 32ch; }
.pied__coordonnees { font-style: normal; line-height: 1.9; }
.pied__coordonnees :is(a,:where(.fp-a)) { font-weight: 600; text-decoration: none; }
.pied__colonnes { display: grid; gap: 2rem 1.5rem; grid-template-columns: repeat(2, 1fr); }
@media (min-width: 768px) { .pied__colonnes { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1200px) { .pied__colonnes { grid-template-columns: repeat(6, 1fr); } }
.pied__titre { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 0.75rem; }
.pied__colonne :is(ul,:where(.fp-ul)) { list-style: none; padding: 0; }
.pied__colonne :is(a,:where(.fp-a)) { display: inline-block; color: #424245; text-decoration: none; line-height: 1.35; padding: 0.3rem 0; font-size: 0.8125rem; }
.pied__colonne :is(a,:where(.fp-a)):hover { color: var(--encre); text-decoration: underline; text-underline-offset: 0.2em; }
.pied__bas { display: flex; flex-wrap: wrap; gap: 0.75rem 1.5rem; align-items: center; padding-top: 1.25rem; font-size: 0.75rem; color: var(--ardoise); }
.pied__legal { list-style: none; padding: 0; display: flex; flex-wrap: wrap; gap: 0.5rem 1.25rem; }
.pied__legal :is(a,:where(.fp-a)), .pied__cookies { display: inline-block; color: var(--ardoise); text-decoration: none; font-size: 0.75rem; line-height: 1.5; background: none; border: 0; padding: 0.3rem 0; }
.pied__legal :is(a,:where(.fp-a)):hover, .pied__cookies:hover { color: var(--encre); }

/* ---------- Barre d'action mobile ------------------------------------------ */
.barre-mobile { position: fixed; left: 0; right: 0; bottom: 0; z-index: 50; display: grid; grid-template-columns: 1fr 1.4fr; gap: 0.625rem; padding: 0.625rem var(--marge) calc(0.625rem + env(safe-area-inset-bottom)); background: rgba(0, 0, 0, 0.78); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px); box-shadow: 0 -1px 0 rgba(255, 255, 255, 0.08); color: #fff; transform: translateY(110%); transition: transform var(--d-std) var(--ease); }
.barre-mobile.est-visible { transform: none; }
.barre-mobile .btn { min-height: 3rem; width: 100%; padding: 0 0.75rem; }
@media (min-width: 1024px) { .barre-mobile { display: none; } }

/* ---------- Toast (maquette uniquement) ------------------------------------ */
.toast { position: fixed; left: 50%; bottom: calc(var(--barre-h) + 1.5rem); z-index: 80; transform: translateX(-50%); max-width: min(92vw, 32rem); padding: 0.9rem 1.3rem; border-radius: var(--pilule); background: #fff; color: #000; font-size: 0.875rem; font-weight: 500; text-align: center; box-shadow: 0 20px 50px rgba(0, 0, 0, 0.4); }
@media (min-width: 1024px) { .toast { bottom: 2rem; } }

/* ---------- Apparitions ---------------------------------------------------- */
.js .apparition { opacity: 0; transform: translateY(40px); transition: opacity var(--d-reveal) var(--ease), transform var(--d-reveal) var(--ease); }
.js .apparition.est-visible { opacity: 1; transform: none; }
.js .apparition--flou { filter: blur(12px); transition: opacity var(--d-reveal) var(--ease), transform var(--d-reveal) var(--ease), filter var(--d-reveal) var(--ease); }
.js .apparition--flou.est-visible { filter: none; }

/* ---------- Mouvement réduit ----------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
  .js .apparition, .js .apparition--flou { opacity: 1; transform: none; filter: none; }
  .js .manifeste__phrase .mot { opacity: 1; filter: none; }
  .hero3d, .zoom { height: auto; }
  .hero3d__collant, .zoom__collant { position: relative; height: auto; min-height: 100svh; }
  .hero3d__etape { position: static; opacity: 1; transform: none; margin-bottom: 1rem; }
  .hero3d__etapes { min-height: 0; }
  .zoom__media { clip-path: none; }
  .zoom__titre, .zoom__chiffre { opacity: 1; transform: none; position: relative; top: auto; }
  .defile-villes__rangee { animation: none; flex-wrap: wrap; width: auto; }
}

/* ---------- Page « composants » -------------------------------------------- */
.ds { padding-top: calc(var(--entete-h) + 4rem); }
.ds-section { padding-block: 4rem; border-top: 1px solid rgba(0, 0, 0, 0.1); }
.ds-titre { font-size: var(--fs-h2); letter-spacing: -0.04em; margin-bottom: 2rem; }
.ds-sous-titre { font-size: 1.25rem; margin: 2.5rem 0 1rem; }
.nuancier { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(11rem, 1fr)); }
.nuance { border-radius: 20px; overflow: hidden; background: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); }
.nuance__couleur { height: 6rem; display: flex; align-items: flex-end; padding: 0.75rem; font-size: 0.8125rem; font-weight: 600; }
.nuance__infos { padding: 0.75rem; font-size: 0.8125rem; display: grid; gap: 0.15rem; color: var(--encre); }
.nuance__infos :is(span,:where(.fp-span)) { color: var(--ardoise); }
.echelle { display: grid; gap: 1.5rem; }
.echelle__ligne { display: grid; gap: 0.4rem; padding-bottom: 1.5rem; border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.echelle__meta { font-size: 0.8125rem; color: var(--ardoise); font-variant-numeric: tabular-nums; }
.ds-rangee { display: flex; flex-wrap: wrap; gap: 1rem; align-items: center; }
.ds-fond-sombre { background: #000; color: #fff; padding: 2rem; border-radius: var(--rayon); }
.ds-grille-2 { display: grid; gap: 1.5rem; align-items: center; }
@media (min-width: 900px) { .ds-grille-2 { grid-template-columns: 1fr 1fr; align-items: start; } }
.ds-boite { background: #fff; border-radius: var(--rayon); padding: 2rem; display: grid; gap: 1.25rem; box-shadow: 0 0 0 1px rgba(0, 0, 0, 0.08); }
.ds-icones { display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fill, minmax(7rem, 1fr)); }
.ds-icone { display: grid; justify-items: center; gap: 0.6rem; padding: 1.25rem 0.5rem; border-radius: 20px; background: var(--brume); font-size: 0.75rem; color: var(--ardoise); }
.ds-tableau { width: 100%; border-collapse: collapse; font-size: 0.9375rem; }
.ds-tableau th, .ds-tableau td { text-align: left; vertical-align: top; padding: 0.8rem 0.75rem 0.8rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.ds-tableau th { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.ds-nuages { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(17rem, 1fr)); margin-bottom: 1.5rem; }
.ds-nuage { position: relative; height: 20rem; border-radius: var(--rayon); background: #000; overflow: hidden; }
.ds-nuage canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.ds-nuage :is(figcaption,:where(.fp-figcaption)) { position: absolute; left: 1.25rem; bottom: 1rem; right: 1.25rem; color: var(--cendre); font-size: 0.75rem; font-weight: 600; letter-spacing: 0.06em; text-transform: uppercase; }
.entete.menu-ouvert .entete__barre { background: #000; color: #fff; box-shadow: none; }
.entete.menu-ouvert .entete__logo img { filter: invert(1); }
.entete.menu-ouvert.est-defile .entete__barre, .entete.menu-ouvert.theme-clair.est-defile .entete__barre { background: #000; color: #fff; box-shadow: none; }
.entete.menu-ouvert.theme-clair .entete__logo img { filter: invert(1); }

/* =============================================================================
   PAGE PILIER (phase C) — /traitement-punaise-de-lit-lyon/
   ============================================================================= */
html:has(.nav-locale) { scroll-padding-top: calc(var(--entete-h) + 4rem); }

/* Hero de page : lit scanné en boucle, réponse courte */
.hero-page { position: relative; min-height: min(100svh, 60rem); display: flex; align-items: center; overflow: hidden; padding-block: calc(var(--entete-h) + 3rem) 4rem; }
.hero-page__canvas { position: absolute; inset: 0; width: 100%; height: 100%; }
.hero-page__voile { position: absolute; inset: 0; pointer-events: none; background: radial-gradient(120% 90% at 72% 45%, transparent 38%, rgba(0, 0, 0, 0.6) 100%); }
.hero-page__contenu { position: relative; z-index: 2; width: min(100% - 2 * var(--marge), var(--conteneur-large)); margin-inline: auto; display: grid; gap: 1.5rem; justify-items: start; }
.hero-page__contenu > * { max-width: 44rem; }
.hero-page__titre { font-size: clamp(2.5rem, 1.5rem + 3vw, 4rem); line-height: 1.02; letter-spacing: -0.045em; font-weight: 400; max-width: 12em; }
.hero-page__reponse { font-size: clamp(1.0625rem, 1rem + 0.3vw, 1.1875rem); line-height: 1.6; color: var(--cendre); max-width: 36rem; }
@media (max-width: 1023px) {
  .hero-page { display: block; min-height: 0; padding-top: calc(var(--entete-h) + 17rem); }
  .hero-page__canvas { height: 24rem; bottom: auto; }
  .hero-page__voile { background: linear-gradient(180deg, rgba(0, 0, 0, 0) 12rem, #000 24rem); }
}

/* Fil d'Ariane */
.fil :is(ol,:where(.fp-ol)) { list-style: none; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: 0.25rem 0.5rem; font-size: 0.8125rem; color: var(--cendre); }
.fil :is(li,:where(.fp-li)) + :is(li,:where(.fp-li))::before { content: "›"; margin-right: 0.5rem; opacity: 0.6; }
.fil :is(a,:where(.fp-a)) { text-decoration: none; }
.fil :is(a,:where(.fp-a)):hover, .fil :is(a,:where(.fp-a))[aria-current="page"] { color: #fff; }

/* Sommaire collant (navigation locale), thème calqué sur l'en-tête */
.nav-locale { position: sticky; top: var(--entete-h); z-index: 40; background: rgba(0, 0, 0, 0.72); -webkit-backdrop-filter: saturate(180%) blur(20px); backdrop-filter: saturate(180%) blur(20px); box-shadow: 0 1px 0 rgba(255, 255, 255, 0.08); transition: top var(--d-std) var(--ease), background-color var(--d-std), box-shadow var(--d-std); }
body:has(.entete.est-masque) .nav-locale { top: 0; }
:is(.entete.theme-clair ~ :is(main,:where(.wp-block-post-content)), .wp-block-template-part:has(> .entete.theme-clair) ~ :is(main,:where(.wp-block-post-content))) .nav-locale { background: rgba(255, 255, 255, 0.8); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.08); }
.nav-locale__liste { position: relative; list-style: none; margin: 0 auto; padding: 0.375rem max(var(--marge), (100% - var(--conteneur-large)) / 2); display: flex; gap: 0.25rem; overflow-x: auto; scrollbar-width: none; }
.nav-locale__liste::-webkit-scrollbar { display: none; }
.nav-locale__lien { display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 0.9rem; border-radius: var(--pilule); font-size: 0.8125rem; font-weight: 500; letter-spacing: 0; color: rgba(255, 255, 255, 0.66); text-decoration: none; white-space: nowrap; transition: color var(--d-micro), background-color var(--d-micro); }
.nav-locale__lien:hover { color: #fff; }
.nav-locale__lien[aria-current="true"] { color: #fff; background: rgba(255, 255, 255, 0.14); }
:is(.entete.theme-clair ~ :is(main,:where(.wp-block-post-content)), .wp-block-template-part:has(> .entete.theme-clair) ~ :is(main,:where(.wp-block-post-content))) .nav-locale__lien { color: var(--ardoise); }
:is(.entete.theme-clair ~ :is(main,:where(.wp-block-post-content)), .wp-block-template-part:has(> .entete.theme-clair) ~ :is(main,:where(.wp-block-post-content))) .nav-locale__lien:hover { color: var(--encre); }
:is(.entete.theme-clair ~ :is(main,:where(.wp-block-post-content)), .wp-block-template-part:has(> .entete.theme-clair) ~ :is(main,:where(.wp-block-post-content))) .nav-locale__lien[aria-current="true"] { color: var(--encre); background: rgba(0, 0, 0, 0.06); }

/* En bref : faits clés en tuiles (façon fiche technique) */
/* auto-fit + 17rem : 7 faits = 4 + 3 sur ordinateur, 3 faits = pleine largeur */
.faits { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 17rem), 1fr)); margin: 0; }
.fait { background: var(--brume); border-radius: var(--rayon); padding: 1.75rem 1.75rem 1.5rem; display: grid; grid-template-rows: auto 1fr; gap: 1rem; }
.fait :is(dt,:where(.fp-dt)) { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.fait :is(dd,:where(.fp-dd)) { margin: 0; display: grid; gap: 0.6rem; align-content: start; }
.fait__valeur { font-size: clamp(2.25rem, 1.8rem + 1.6vw, 3.25rem); font-weight: 400; letter-spacing: -0.045em; line-height: 1; color: var(--encre); }
.fait__valeur--attente { font-size: 1rem; letter-spacing: 0; line-height: 1.5; }
.fait__detail { color: var(--ardoise); font-size: 1rem; line-height: 1.5; }
.fait__lien { font-size: 0.9375rem; margin-top: 0.25rem; }

/* Protocole : repère collant à gauche, étapes détaillées à droite */
.protocole__grille { display: grid; gap: 3rem; }
.protocole__repere { display: none; }
.protocole__etapes { display: grid; gap: clamp(3.5rem, 2.5rem + 5vw, 8rem); }
.etape-p { display: grid; gap: 1rem; max-width: 40rem; transition: opacity 500ms var(--ease); }
.etape-p__num { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ambre); }
.etape-p__titre { font-size: var(--fs-h2); letter-spacing: -0.035em; line-height: 1.05; }
.etape-p > p:not(.etape-p__num) { color: var(--cendre); font-size: 1.125rem; }
.etape-p__points { list-style: none; padding: 0; margin: 0.5rem 0 0; display: grid; gap: 0.6rem; }
.etape-p__points :is(li,:where(.fp-li)) { position: relative; padding-left: 1.5rem; color: #fff; }
.etape-p__points :is(li,:where(.fp-li))::before { content: ""; position: absolute; left: 0; top: 0.6em; width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--accent); box-shadow: 0 0 8px var(--accent); }
@media (min-width: 1024px) {
  .protocole__grille { grid-template-columns: 4fr 7fr; gap: 5rem; align-items: start; }
  .protocole__repere { display: grid; gap: 1.25rem; position: sticky; top: calc(var(--entete-h) + 7rem); }
  .js .etape-p { opacity: 0.3; }
  .js .etape-p.est-active { opacity: 1; }
}
.protocole__numero { font-size: clamp(7rem, 4rem + 8vw, 12rem); line-height: 0.85; letter-spacing: -0.06em; font-weight: 400; display: flex; align-items: baseline; }
.protocole__numero :is(span,:where(.fp-span)) { display: inline-block; transition: opacity 220ms var(--ease), transform 450ms var(--ease), filter 450ms var(--ease); }
.protocole__numero :is(span,:where(.fp-span)).est-change { opacity: 0; transform: translateY(18px); filter: blur(6px); }
.protocole__numero small { font-size: 0.2em; letter-spacing: 0; color: var(--cendre); margin-left: 0.5rem; }
.protocole__but { color: var(--ambre); font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; }
.protocole__jalons { list-style: none; padding: 0; margin: 0.5rem 0 0; display: flex; gap: 0.5rem; }
.protocole__jalons :is(li,:where(.fp-li)) { width: 2.5rem; height: 3px; border-radius: 3px; background: rgba(255, 255, 255, 0.18); transition: background-color var(--d-std), box-shadow var(--d-std); }
.protocole__jalons :is(li,:where(.fp-li)).est-actif { background: var(--accent); box-shadow: 0 0 10px var(--accent); }

/* Cartes de méthode posées sur un chapitre clair : elles gardent leurs couleurs sombres */
.methode-carte { color: #fff; --lien: var(--accent-lien-sombre); --secondaire: var(--cendre); }

/* Préparation : grande image révélée au défilement, trois colonnes */
.media-large { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 16 / 7; transform: scale(calc(0.94 + var(--p, 1) * 0.06)); transform-origin: center top; }
.media-large :is(picture,figure.wp-block-image) { display: block; height: 100%; }
@media (max-width: 767px) { .media-large { aspect-ratio: 4 / 3; } }
.trois-colonnes { display: grid; gap: 2rem; margin: clamp(2.5rem, 2rem + 2vw, 4rem) 0 2.5rem; }
@media (min-width: 900px) { .trois-colonnes { grid-template-columns: repeat(3, 1fr); gap: 3rem; } }
.trois-colonnes h3 { font-size: 1.375rem; letter-spacing: -0.03em; margin-bottom: 0.6rem; }
.trois-colonnes p { color: var(--secondaire); }

/* Prix : trois tuiles compactes */
.tarifs { display: grid; gap: 1rem; margin-bottom: 2rem; }
@media (min-width: 640px) { .tarifs { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .tarifs { grid-template-columns: repeat(4, 1fr); } }
.tarif { background: #fff; border-radius: var(--rayon); padding: 2rem; display: grid; gap: 0.75rem; align-content: start; }
.tarif--vedette { background: #000; color: #fff; }
.tarif__tete { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.tarif__nom { font-size: 1.75rem; letter-spacing: -0.04em; font-weight: 400; }
.tarif__badge { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ambre); }
.tarif__prix { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.25rem 0.5rem; margin: 0.25rem 0; }
.tarif__des { width: 100%; font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.tarif__montant { font-size: clamp(3rem, 2.4rem + 2.2vw, 4.25rem); letter-spacing: -0.06em; line-height: 0.9; font-weight: 400; }
.tarif__montant--texte { font-size: clamp(2.5rem, 2rem + 2vw, 3.5rem); }
.tarif__ttc { font-size: 0.875rem; color: var(--ardoise); font-weight: 500; }
.tarif__detail { font-size: 0.9375rem; font-weight: 600; }
.tarif__accroche { color: var(--ardoise); }
.tarif--vedette .tarif__des, .tarif--vedette .tarif__ttc, .tarif--vedette .tarif__accroche { color: var(--cendre); }

/* Cas terrain : grille de trois */
.cas-grille { display: grid; gap: 1rem; }
@media (min-width: 900px) { .cas-grille { grid-template-columns: repeat(3, 1fr); } }
.clair .cas { background: var(--brume); }
/* Interventions réelles : photo réelle et pastille (numéro, ville) */
.cas__badge { position: absolute; top: 1rem; left: 1rem; z-index: 2; display: inline-flex; align-items: baseline; gap: 0.45rem; padding: 0.4rem 0.85rem; border-radius: var(--pilule); background: rgba(0, 0, 0, 0.62); -webkit-backdrop-filter: blur(8px); backdrop-filter: blur(8px); color: #fff; font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.01em; }
.cas__badge .chiffres { color: var(--ambre); }
.fiche-cas__photo { position: relative; aspect-ratio: 4 / 3; border-radius: calc(var(--rayon) - 0.5rem); overflow: hidden; margin-bottom: 0.9rem; background: var(--noir-2); }
.fiche-cas__photo :is(picture,figure.wp-block-image) { position: absolute; inset: 0; }
.fiches-cas { display: grid; gap: 1rem; }
.fiche-cas { display: grid; gap: 2rem; background: #fff; border-radius: var(--rayon); padding: clamp(1.75rem, 1.2rem + 2vw, 3rem); scroll-margin-top: calc(var(--entete-h) + 4.5rem); }
.clair .fiche-cas { background: var(--brume); }
@media (min-width: 900px) { .fiche-cas { grid-template-columns: 5fr 7fr; gap: 3rem; } }
.fiche-cas__tete { display: grid; gap: 0.6rem; align-content: start; }
.fiche-cas__num { font-size: clamp(3rem, 2.2rem + 3vw, 4.5rem); font-weight: 200; letter-spacing: -0.04em; line-height: 1; color: var(--accent); }
.fiche-cas__titre { font-size: clamp(2rem, 1.6rem + 1.6vw, 2.75rem); letter-spacing: -0.045em; line-height: 1.05; }
.fiche-cas__meta { color: var(--ardoise); }
.fiche-cas__liens { list-style: none; margin: 0.75rem 0 0; padding: 0; display: grid; gap: 0.5rem; }
.fiche-cas__etapes { margin: 0; display: grid; }
.fiche-cas__etapes div { display: grid; gap: 0.35rem; padding-block: 1.1rem; border-top: 1px solid rgba(0, 0, 0, 0.1); }
.fiche-cas__etapes div:first-child { border-top: 0; padding-top: 0; }
.fiche-cas__etapes :is(dt,:where(.fp-dt)) { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.fiche-cas__etapes :is(dd,:where(.fp-dd)) { margin: 0; font-size: 1.0625rem; }

/* Sources et mise à jour */
.sources { padding-top: 0; }
.sources__titre { font-size: 1.25rem; letter-spacing: -0.02em; margin-bottom: 1rem; }
.sources__liste { display: grid; border-top: 1px solid rgba(0, 0, 0, 0.1); margin: 0; }
.sources__liste > div { display: grid; gap: 0.25rem; padding: 0.9rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.1); font-size: 0.9375rem; }
@media (min-width: 640px) { .sources__liste > div { grid-template-columns: 11rem 1fr; gap: 1rem; } }
.sources__liste :is(dt,:where(.fp-dt)) { font-weight: 600; color: var(--ardoise); font-size: 0.8125rem; }
.sources__liste :is(dd,:where(.fp-dd)) { margin: 0; }
.sources :is(a,:where(.fp-a)) { color: var(--accent-lien-clair); }

@media (prefers-reduced-motion: reduce) {
  .js .etape-p { opacity: 1; }
  .media-large { transform: none; }
}

/* Pilier : préparation en deux colonnes (photo portrait), garantie, sources */
.preparation__grille { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 1024px) { .preparation__grille { grid-template-columns: 5fr 6fr; gap: 5rem; } }
.media-portrait { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 4 / 5; }
.media-portrait :is(picture,figure.wp-block-image) { display: block; height: 100%; }
.preparation__points { display: grid; gap: 2rem; }
.preparation__points > div { padding-bottom: 2rem; border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.preparation__points h3 { font-size: 1.5rem; letter-spacing: -0.03em; margin-bottom: 0.5rem; }
.preparation__points p { color: var(--secondaire); }
.garantie .etiquette { margin-bottom: 1.25rem; }
section:has(+ .sources) { padding-bottom: clamp(3rem, 2rem + 3vw, 5rem); }

/* Garde-fous de largeur (mobile) : commandes de carrousel repliables, chapitres rognés horizontalement */
.carrousel__commandes { flex-wrap: wrap; row-gap: 1rem; }
:is(main,:where(.wp-block-post-content)) > section { overflow-x: clip; }
.lien-suite { margin-top: 1.75rem; }

/* Carte régionale (radar) : Lyon, la base, et les villes jusqu'à la Méditerranée */
.radar--region { aspect-ratio: 600 / 700; border-radius: var(--rayon); overflow: hidden; isolation: isolate; background: radial-gradient(110% 80% at 40% 28%, #0c0e13 0%, #050608 72%); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); }
.radar--region .radar__balayage { inset: auto; -webkit-mask: radial-gradient(circle closest-side, #000 22%, rgba(0, 0, 0, 0.5) 68%, transparent 100%); mask: radial-gradient(circle closest-side, #000 22%, rgba(0, 0, 0, 0.5) 68%, transparent 100%); }
.radar--region .carte-zones__svg { position: relative; z-index: 1; }
.radar--region .radar__balayage { z-index: 0; }
.radar--region .radar__cibles { z-index: 2; }
.carte__grille line { stroke: rgba(255, 255, 255, 0.045); stroke-width: 1; }
.carte__fleuve { fill: none; stroke: var(--accent-lien-sombre); stroke-opacity: 0.38; stroke-width: 2; stroke-linecap: round; stroke-linejoin: round; }
.carte__fleuve--saone { stroke-opacity: 0.26; stroke-width: 1.5; }
.radar--region .anneau { stroke: rgba(255, 255, 255, 0.14); stroke-dasharray: 2 6; }
.radar--region .anneau--30 { stroke: var(--accent); stroke-dasharray: none; fill: rgba(0, 113, 227, 0.08); }
.radar--region .ville--n2 circle { fill: #0c0e13; stroke: #fff; stroke-width: 1.5; }
.carte-zones .ville--centre .carte__base { fill: var(--accent); stroke: none; transform-box: fill-box; transform-origin: center; animation: base-radar 2.6s ease-out infinite; }
@keyframes base-radar { from { transform: scale(1); opacity: 0.6; } to { transform: scale(3.4); opacity: 0; } }
.carte__lbl { fill: rgba(255, 255, 255, 0.8); font-family: var(--police); font-weight: 400; paint-order: stroke; stroke: #050608; stroke-width: 4px; stroke-linejoin: round; }
.carte__lbl--principale { fill: #fff; font-weight: 600; }
.carte__lbl--base { fill: #fff; font-weight: 700; }
.carte__lbl--anneau { fill: rgba(255, 255, 255, 0.42); font-weight: 600; letter-spacing: 0.04em; }
.carte__lbl--priorite { fill: var(--accent-lien-sombre); }
.carte__lbl--m { display: none; }
@media (max-width: 559px) { .carte__lbl--d { display: none; } .carte__lbl--m { display: inline; } }
.radar--compact .carte__lbl--d { display: none; }
.radar--compact .carte__lbl--m { display: inline; }
@media (prefers-reduced-motion: reduce) { .carte-zones .ville--centre .carte__base { animation: none; opacity: 0; } }

/* Montants proportionnés à la largeur de la carte (quatre formules côte à côte) */
.formule__montant { font-size: clamp(3rem, 19cqi, 5.25rem); }
.formule__montant--texte { font-size: clamp(2.25rem, 13cqi, 4rem); white-space: nowrap; }
.tarif { container-type: inline-size; }
.tarif__montant { font-size: clamp(2.75rem, 20cqi, 4.25rem); }
.tarif__montant--texte { font-size: clamp(2.25rem, 14cqi, 3.5rem); white-space: nowrap; }

/* Type d'offre (Pack, Hors pack) au-dessus du nom */
.formule__type, .tarif__type { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ardoise); }
.formule__type { width: 100%; margin-bottom: -0.25rem; }
.formule--vedette .formule__type, .tarif--vedette .tarif__type { color: var(--cendre); }

/* Champ piège anti-robots : invisible et hors du parcours clavier */
.devis__piege { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }

/* =============================================================================
   PAGE TARIFS (phase D) — /prix-traitement-punaise-de-lit-lyon/
   ============================================================================= */
.hero-tarifs__grille { justify-items: stretch; align-items: center; gap: 3rem; }
.hero-tarifs__texte { display: grid; gap: 1.5rem; justify-items: start; }
@media (min-width: 1024px) { .hero-tarifs__grille { grid-template-columns: 7fr 5fr; gap: 4rem; } }
@media (max-width: 1023px) {
  .hero-tarifs { padding-top: calc(var(--entete-h) + 2.5rem); }
  .hero-tarifs .hero-page__canvas { height: 100%; }
}
.pile-prix { list-style: none; margin: 0; padding: 0; display: grid; border-top: 1px solid rgba(255, 255, 255, 0.12); }
.pile-prix__ligne { display: grid; grid-template-columns: auto 1fr; align-items: center; gap: 0.25rem 1.25rem; padding: 1.1rem 0; border-bottom: 1px solid rgba(255, 255, 255, 0.12); }
.pile-prix__montant { font-size: clamp(3rem, 2rem + 4vw, 5.25rem); letter-spacing: -0.06em; line-height: 0.9; font-weight: 400; min-width: 4.3ch; white-space: nowrap; }
.pile-prix__offre { display: grid; gap: 0.2rem; }
.pile-prix__offre b { font-weight: 500; font-size: 1.125rem; letter-spacing: -0.02em; }
.pile-prix__offre small { color: var(--cendre); font-size: 0.875rem; }
.pile-prix__badge { grid-column: 2; font-style: normal; font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ambre); }
.pile-prix__ligne.est-vedette .pile-prix__montant { text-shadow: 0 0 40px var(--accent-halo); }
.pile-prix__note { margin-top: 1rem; font-size: 0.875rem; color: var(--cendre); }

.facteurs { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 16rem), 1fr)); }
.facteur { background: var(--noir-2); border-radius: var(--rayon); padding: 2rem; display: grid; gap: 0.75rem; align-content: start; }
.facteur__num { font-size: 3rem; letter-spacing: -0.05em; line-height: 1; color: var(--accent-lien-sombre); }
.facteur__titre { font-size: 1.5rem; letter-spacing: -0.03em; }
.facteur p { color: var(--cendre); }
.facteurs__inclus { margin-top: 1.5rem; display: flex; gap: 0.9rem; align-items: flex-start; padding: 1.25rem 1.5rem; border-radius: var(--rayon); background: rgba(0, 113, 227, 0.12); box-shadow: inset 0 0 0 1px rgba(0, 113, 227, 0.45); color: #fff; }
.facteurs__inclus .icone { flex: none; margin-top: 0.2rem; color: var(--accent-lien-sombre); }
.facteurs__inclus :is(span,:where(.fp-span)) { color: var(--cendre); }
.facteurs__inclus strong { color: #fff; font-weight: 600; }

.comparatif { background: #fff; border-radius: var(--rayon); overflow-x: auto; -webkit-overflow-scrolling: touch; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) { width: 100%; min-width: 54rem; border-collapse: separate; border-spacing: 0; font-size: 0.9375rem; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) th, :is(:where(table).comparatif__table,:where(.comparatif__table > table)) td { padding: 1rem 1.25rem; text-align: left; vertical-align: top; border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) thead th { font-size: 1.125rem; font-weight: 500; letter-spacing: -0.02em; vertical-align: bottom; padding-top: 1.75rem; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) thead small { display: block; font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ardoise); margin-bottom: 0.35rem; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) tbody th { font-size: 0.875rem; font-weight: 600; color: var(--encre); width: 14rem; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) th:first-child { position: sticky; left: 0; z-index: 1; background: #fff; }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) .est-vedette { background: rgba(0, 113, 227, 0.05); }
:is(:where(table).comparatif__table,:where(.comparatif__table > table)) tr:last-child th, :is(:where(table).comparatif__table,:where(.comparatif__table > table)) tr:last-child td { border-bottom: 0; }
.comparatif__prix { font-size: 1.25rem; font-weight: 500; letter-spacing: -0.02em; white-space: nowrap; }
.comparatif__oui { display: inline-flex; color: var(--accent); }
.comparatif__non { color: var(--acier); }
.comparatif__pour { color: var(--ardoise); font-size: 0.875rem; }
.comparatif__aide { margin-top: 1rem; }
@media (min-width: 1100px) { .comparatif__aide { display: none; } }

.inclus__liste { list-style: none; margin: 0 0 2rem; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 21rem), 1fr)); }
.inclus__liste :is(li,:where(.fp-li)) { display: flex; gap: 1rem; align-items: flex-start; padding: 1.5rem; border-radius: var(--rayon); background: var(--brume); color: var(--ardoise); }
.inclus__liste strong { display: block; margin-bottom: 0.2rem; font-weight: 600; color: var(--encre); }
.inclus__coche { flex: none; width: 2rem; height: 2rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; }

.exemples-prix { display: grid; gap: 1rem; }
@media (min-width: 900px) { .exemples-prix { grid-template-columns: repeat(3, 1fr); } }
.exemple-prix { position: relative; background: #fff; border-radius: var(--rayon); padding: 4rem 2rem 2rem; display: grid; gap: 0.75rem; align-content: start; border: 1.5px dashed var(--filet); }
.exemple-prix__meta { font-size: 0.875rem; color: var(--ardoise); }
.exemple-prix__offre { font-size: 1.375rem; letter-spacing: -0.03em; }
.exemple-prix__montant { font-size: 2.5rem; letter-spacing: -0.05em; line-height: 1; }
.exemple-prix__montant small { display: block; margin-top: 0.4rem; font-size: 0.875rem; letter-spacing: 0; color: var(--ardoise); }
.exemple-prix__texte { color: var(--ardoise); font-size: 0.9375rem; }

.etapes-paiement { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
@media (min-width: 900px) { .etapes-paiement { grid-template-columns: repeat(3, 1fr); } }
.etapes-paiement :is(li,:where(.fp-li)) { padding: 2rem; border-radius: var(--rayon); background: rgba(255, 255, 255, 0.05); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, 0.08); display: grid; gap: 0.75rem; align-content: start; }
.etapes-paiement__num { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; font-weight: 600; }
.etapes-paiement h3 { font-size: 1.5rem; letter-spacing: -0.03em; }
.etapes-paiement p { color: var(--cendre); }
@media (max-width: 767px) {
  :is(:where(table).comparatif__table,:where(.comparatif__table > table)) { min-width: 40rem; font-size: 0.875rem; }
  :is(:where(table).comparatif__table,:where(.comparatif__table > table)) th, :is(:where(table).comparatif__table,:where(.comparatif__table > table)) td { padding: 0.85rem 0.8rem; }
  :is(:where(table).comparatif__table,:where(.comparatif__table > table)) tbody th { width: 8.5rem; font-size: 0.8125rem; }
  :is(:where(table).comparatif__table,:where(.comparatif__table > table)) th:first-child { box-shadow: 1px 0 0 rgba(0, 0, 0, 0.08), 8px 0 12px -8px rgba(0, 0, 0, 0.18); }
  .comparatif__prix { font-size: 1.0625rem; }
}

/* =============================================================================
   PAGE GARANTIE (phase D) — /garantie-punaise-de-lit/
   ============================================================================= */
.hero-garantie__chiffres { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 1.25rem 2.75rem; margin: 0.25rem 0 0.5rem; }
.hero-garantie__chiffres :is(dd,:where(.fp-dd)) { margin: 0; display: grid; gap: 0.35rem; }
.hero-garantie__chiffres b { font-size: clamp(2.75rem, 2rem + 2.6vw, 4rem); font-weight: 400; letter-spacing: -0.055em; line-height: 0.9; }
.hero-garantie__chiffres b:not(.chiffres) { font-size: clamp(1.625rem, 1.3rem + 1.1vw, 2.25rem); letter-spacing: -0.04em; line-height: 1.15; }
.hero-garantie__chiffres :is(dd,:where(.fp-dd)) > :is(span,:where(.fp-span)) { font-size: 0.875rem; color: var(--cendre); }
@media (min-width: 1024px) and (max-width: 1279px) { .hero-garantie .hero-page__contenu > * { max-width: 34rem; } }

.fiche-garantie { display: grid; gap: 1rem; grid-template-columns: repeat(6, 1fr); }
.fiche-garantie__carte { grid-column: span 2; background: var(--brume); border-radius: var(--rayon); padding: clamp(1.75rem, 1.4rem + 1.2vw, 2.5rem); display: flex; flex-direction: column; gap: 0.9rem; align-items: flex-start; }
.fiche-garantie__carte--couvert, .fiche-garantie__carte--prix { grid-column: span 3; }
.fiche-garantie__carte--prix { background: #000; color: #fff; }
.fiche-garantie__icone { width: 2.75rem; height: 2.75rem; border-radius: 50%; display: grid; place-items: center; background: #fff; color: var(--encre); font-weight: 600; font-size: 1.125rem; }
.fiche-garantie__icone--oui, .fiche-garantie__carte--prix .fiche-garantie__icone { background: var(--accent); color: #fff; }
.fiche-garantie__icone--non { background: var(--encre); color: #fff; }
.fiche-garantie__carte h3 { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.fiche-garantie__carte--prix h3 { color: var(--cendre); }
.fiche-garantie__phrase { font-size: clamp(1.5rem, 1.2rem + 1.1vw, 2.25rem); letter-spacing: -0.035em; line-height: 1.12; }
.fiche-garantie__carte p:not(.fiche-garantie__phrase) { color: var(--ardoise); }
.fiche-garantie__carte--prix .fiche-garantie__detail { color: var(--cendre); }
.fiche-garantie__liste { list-style: none; padding: 0; margin: 0; display: grid; gap: 0.6rem; color: var(--ardoise); }
.fiche-garantie__liste :is(li,:where(.fp-li)) { position: relative; padding-left: 1.4rem; }
.fiche-garantie__liste :is(li,:where(.fp-li))::before { content: "—"; position: absolute; left: 0; color: var(--acier); }
.fiche-garantie__tel { color: var(--encre); font-weight: 600; text-decoration: none; white-space: nowrap; }
.fiche-garantie__cgv { margin-top: 1.5rem; }
.fiche-garantie__cgv :is(a,:where(.fp-a)) { color: var(--accent-lien-clair); }
@media (max-width: 899px) { .fiche-garantie { grid-template-columns: 1fr; } .fiche-garantie__carte, .fiche-garantie__carte--couvert, .fiche-garantie__carte--prix { grid-column: auto; } }

/* Frise des 6 mois : les segments se remplissent au défilement (--p posé par app.js) */
.frise { margin: 0; --p: 1; }
.js .frise { --p: 0; }
.frise__piste { display: grid; grid-template-columns: auto 1fr auto; align-items: center; }
.frise__borne { position: relative; z-index: 1; width: 1.25rem; height: 1.25rem; border-radius: 50%; background: var(--accent); box-shadow: 0 0 0 6px var(--accent-halo), 0 0 24px var(--accent); }
.frise__borne--fin { background: #0c0e13; box-shadow: inset 0 0 0 2px rgba(255, 255, 255, 0.35); }
.frise__borne--fin::after { content: ""; position: absolute; inset: 0; border-radius: 50%; background: var(--ambre); box-shadow: 0 0 0 6px rgba(255, 184, 41, 0.25), 0 0 24px var(--ambre); opacity: clamp(0, calc((var(--p) * var(--n) - var(--n) + 0.3) * 4), 1); }
.frise__mois { list-style: none; margin: 0; padding: 0 6px; display: grid; grid-template-columns: repeat(var(--n), 1fr); gap: 6px; }
.frise__mois :is(li,:where(.fp-li)) { position: relative; }
.frise__segment { display: block; height: 6px; border-radius: 6px; background: rgba(255, 255, 255, 0.1); overflow: hidden; }
.frise__segment i { display: block; height: 100%; background: linear-gradient(90deg, var(--accent), var(--accent-lien-sombre)); box-shadow: 0 0 12px var(--accent); transform-origin: left; transform: scaleX(clamp(0, calc(var(--p) * var(--n) - var(--i)), 1)); }
.frise__mois small { position: absolute; top: 1.1rem; right: 0; font-size: 0.875rem; font-weight: 600; color: var(--cendre); font-variant-numeric: tabular-nums; white-space: nowrap; }
.frise__legendes { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; margin-top: 3.25rem; }
.frise__legendes p { display: grid; gap: 0.25rem; }
.frise__legendes b { font-weight: 500; font-size: 1.125rem; letter-spacing: -0.02em; }
.frise__legendes :is(span,:where(.fp-span)) { color: var(--cendre); font-size: 0.875rem; }
.frise__legende-fin { text-align: right; justify-items: end; }
.frise__exemple { margin-top: 2.5rem; max-width: 46rem; color: var(--cendre); font-size: 1.0625rem; }

.conditions-garantie { display: grid; gap: 1rem; }
@media (min-width: 900px) { .conditions-garantie { grid-template-columns: 1fr 1fr; } }
.conditions-garantie__carte { background: #fff; border-radius: var(--rayon); padding: clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem); display: flex; flex-direction: column; gap: 1rem; align-items: flex-start; }
.conditions-garantie__moment { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--accent-lien-clair); }
.conditions-garantie__carte h3 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); letter-spacing: -0.035em; line-height: 1.1; }
.conditions-garantie__carte > p:not(.conditions-garantie__moment) { color: var(--ardoise); }
.conditions-garantie .liste-coches { margin: 0.25rem 0 0.5rem; }
.conditions-garantie__note { margin-top: 1.5rem; }

.offres-garantie { list-style: none; margin: 0; padding: 0; border-top: 1px solid rgba(0, 0, 0, 0.1); }
.offre-garantie { display: grid; grid-template-columns: 2fr 1fr 2fr; align-items: center; gap: 0.5rem 2rem; padding: 1.5rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.1); }
.offre-garantie__nom { display: grid; gap: 0.2rem; }
.offre-garantie__nom small { font-size: 0.6875rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ardoise); }
.offre-garantie__nom b { font-size: clamp(1.375rem, 1.2rem + 0.7vw, 1.875rem); font-weight: 400; letter-spacing: -0.035em; }
.offre-garantie__prix { font-size: 1.25rem; letter-spacing: -0.02em; }
.offre-garantie__engagement { color: var(--ardoise); display: flex; align-items: center; gap: 0.75rem; }
.offre-garantie.est-incluse { background: #000; color: #fff; border-radius: var(--rayon); padding: 1.75rem 2rem; margin-block: 0.75rem; border-bottom: 0; }
.offre-garantie.est-incluse .offre-garantie__nom small, .offre-garantie.est-incluse .offre-garantie__engagement { color: var(--cendre); }
.offre-garantie.est-incluse .offre-garantie__engagement b { color: #fff; font-weight: 600; }
.offre-garantie__marque { flex: none; width: 2.25rem; height: 2.25rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; }
@media (max-width: 699px) { .offre-garantie { grid-template-columns: 1fr auto; } .offre-garantie__engagement { grid-column: 1 / -1; } }

/* Ligne de l'offre incluse : fond qui déborde, colonnes alignées sur les autres lignes */
.offre-garantie.est-incluse { margin-inline: calc(-1 * min(2rem, var(--marge))); padding-inline: min(2rem, var(--marge)); }
@media (max-width: 559px) { .frise__unite { display: none; } }

/* =============================================================================
   PAGE MÉTHODES (phase D) — /methodes/
   ============================================================================= */
.matrice { background: var(--brume); border-radius: var(--rayon); overflow-x: auto; -webkit-overflow-scrolling: touch; }
:is(:where(table).matrice__table,:where(.matrice__table > table)) { width: 100%; min-width: 36rem; border-collapse: collapse; font-size: 1rem; }
:is(:where(table).matrice__table,:where(.matrice__table > table)) th, :is(:where(table).matrice__table,:where(.matrice__table > table)) td { padding: 1.15rem 1.5rem; text-align: left; border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
:is(:where(table).matrice__table,:where(.matrice__table > table)) thead th { font-size: 0.8125rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); padding-top: 1.5rem; }
:is(:where(table).matrice__table,:where(.matrice__table > table)) tbody th { font-weight: 500; font-size: 1.0625rem; letter-spacing: -0.015em; color: var(--encre); }
:is(:where(table).matrice__table,:where(.matrice__table > table)) tbody tr:last-child th, :is(:where(table).matrice__table,:where(.matrice__table > table)) tbody tr:last-child td { border-bottom: 0; }
:is(:where(table).matrice__table,:where(.matrice__table > table)) td { width: 20%; }
.matrice__oui { display: inline-grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; background: var(--accent); color: #fff; }
.matrice__non { color: var(--acier); }

.methode-chapitre__grille { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 1024px) {
  .methode-chapitre__grille { grid-template-columns: 5fr 6fr; gap: 5rem; }
  .methode-chapitre--inverse .methode-chapitre__media { order: 2; }
}
.methode-chapitre__media { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 4 / 5; transform: translate3d(0, calc((1 - var(--p, 1)) * 40px), 0) scale(calc(0.94 + var(--p, 1) * 0.06)); }
.methode-chapitre__media :is(picture,figure.wp-block-image) { display: block; height: 100%; }
@media (max-width: 1023px) { .methode-chapitre__media { aspect-ratio: 16 / 11; } }
.methode-chapitre__texte { display: grid; gap: 1.5rem; align-content: start; }
.methode-chapitre__cle { display: grid; gap: 0.3rem; }
.methode-chapitre__cle b { font-size: clamp(2.5rem, 1.8rem + 2.6vw, 4.25rem); font-weight: 400; letter-spacing: -0.055em; line-height: 0.95; }
.methode-chapitre__cle :is(span,:where(.fp-span)) { font-size: 0.875rem; color: var(--secondaire); }
.sombre .methode-chapitre__cle b, .sombre-2 .methode-chapitre__cle b { color: var(--ambre); }
.clair .methode-chapitre__cle b { color: var(--accent); }
.methode-chapitre__texte .lien-fleche { font-size: 1.0625rem; }
.fiche--clair { border-top-color: rgba(0, 0, 0, 0.1); }
.fiche--clair > div { border-bottom-color: rgba(0, 0, 0, 0.1); }
.fiche--clair :is(dt,:where(.fp-dt)) { color: var(--ardoise); }
.fiche--clair :is(dd,:where(.fp-dd)) { color: var(--encre); }
.fiche--clair .fiche__limites :is(dd,:where(.fp-dd)) { color: var(--ardoise); }

.combinaison { list-style: none; margin: 0 0 3rem; padding: 0; display: grid; gap: 1rem; }
@media (min-width: 900px) { .combinaison { grid-template-columns: repeat(3, 1fr); } }
.combinaison__carte { background: #fff; border-radius: var(--rayon); padding: 2rem; display: grid; gap: 0.9rem; align-content: start; }
.combinaison__num { font-size: 2.5rem; letter-spacing: -0.05em; line-height: 1; color: var(--accent); }
.combinaison__carte h3 { font-size: 1.625rem; letter-spacing: -0.035em; }
.combinaison__force { color: var(--encre); font-size: 1.0625rem; }
.combinaison__limite { display: grid; gap: 0.25rem; padding-top: 0.9rem; border-top: 1px solid rgba(0, 0, 0, 0.08); color: var(--ardoise); }
.combinaison__limite :is(span,:where(.fp-span)) { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ambre-texte); }
.equations { display: grid; gap: 1rem; justify-items: start; }
.equation { display: flex; flex-wrap: wrap; align-items: center; gap: 0.6rem 0.8rem; font-size: 1.0625rem; }
.equation i { font-style: normal; font-size: 1.5rem; color: var(--acier); font-weight: 300; }
.equation b { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); font-weight: 400; letter-spacing: -0.035em; }
.puce-technique { display: inline-flex; align-items: center; min-height: 2.25rem; padding: 0 1rem; border-radius: var(--pilule); background: #fff; box-shadow: inset 0 0 0 1px rgba(0, 0, 0, 0.12); font-size: 0.9375rem; font-weight: 500; color: var(--encre); white-space: nowrap; }
.puce-technique--pleine { background: var(--encre); color: #fff; box-shadow: none; }
.puce-technique--accent { background: var(--accent); color: #fff; box-shadow: none; }

.offres-methodes__puces { display: flex; flex-wrap: wrap; gap: 0.5rem; }
.clair .offres-methodes .puce-technique { background: var(--brume); box-shadow: none; }
.offres-methodes .est-incluse .puce-technique { background: rgba(255, 255, 255, 0.12); color: #fff; box-shadow: none; }
.offres-methodes .est-incluse .puce-technique--accent { background: var(--accent); }
.offres-methodes__selon { color: var(--ardoise); }

/* =============================================================================
   SITE COMPLET (phases D à H) — composants des pages internes
   ============================================================================= */

/* Haut de page générique : variantes */
.hero-page__texte { display: grid; gap: 1.5rem; justify-items: start; }
.hero-page__texte > * { max-width: 44rem; }
.hero-page--compact { min-height: 0; padding-block: calc(var(--entete-h) + 4rem) clamp(3.5rem, 2.5rem + 3vw, 5.5rem); }
.hero-page--compact .hero-page__titre { font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.75rem); }
.hero-page--image .hero-page__contenu--image { display: grid; gap: 2.5rem; align-items: center; }
@media (min-width: 1024px) { .hero-page--image .hero-page__contenu--image { grid-template-columns: 7fr 5fr; gap: 4rem; } }
.hero-page__photo { border-radius: var(--rayon); overflow: hidden; aspect-ratio: 4 / 5; width: 100%; max-width: 32rem; justify-self: end; }
.hero-page__photo :is(picture,figure.wp-block-image) { display: block; height: 100%; }
@media (max-width: 1023px) {
  .hero-page--sans-visuel, .hero-page--image { padding-top: calc(var(--entete-h) + 2.5rem); }
  .hero-page__photo { aspect-ratio: 16 / 10; max-width: none; justify-self: stretch; }
}
.hero-page--article { min-height: 0; padding-block: calc(var(--entete-h) + 3.5rem) clamp(3rem, 2rem + 3vw, 5rem); }
.hero-page--article .hero-page__titre { font-size: clamp(2.25rem, 1.5rem + 2.6vw, 3.75rem); max-width: 16em; }

/* Mises en page communes */
.deux-colonnes { display: grid; gap: 2.5rem; align-items: start; }
@media (min-width: 1024px) { .deux-colonnes { grid-template-columns: 5fr 6fr; gap: 5rem; } }
.carte-blanche { background: #fff; border-radius: var(--rayon); padding: clamp(1.75rem, 1.4rem + 1.2vw, 2.5rem); display: grid; gap: 1rem; align-content: start; }
.clair .carte-blanche { background: var(--brume); }
.texte-courant { display: grid; gap: 1.1rem; font-size: 1.125rem; }
.texte-courant p { color: var(--secondaire); }
.texte-courant--sombre { align-content: center; }
.texte-courant--sombre .t-display { color: #fff; }
.encadre-loi { margin-top: 0.5rem; padding: 1.5rem 1.75rem; border-radius: var(--rayon); background: var(--brume); display: grid; gap: 0.6rem; }
.encadre-loi p:not(.etiquette) { color: var(--encre); }
.sources__refs { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.35rem; }

/* Cartes-liens (hubs, « À lire aussi ») */
.cartes-liens { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; }
@media (min-width: 700px) { .cartes-liens { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1100px) { .cartes-liens--3 { grid-template-columns: repeat(3, 1fr); } }
.carte-lien__lien { height: 100%; display: flex; flex-direction: column; border-radius: var(--rayon); overflow: hidden; background: #fff; text-decoration: none; color: var(--encre); transition: transform 500ms var(--ease), box-shadow 500ms var(--ease); }
.clair .carte-lien__lien { background: var(--brume); }
.carte-lien__lien:hover { transform: translateY(-4px); box-shadow: 0 18px 40px -24px rgba(0, 0, 0, 0.35); }
.carte-lien__media { display: block; aspect-ratio: 16 / 9; overflow: hidden; }
.carte-lien__media :is(picture,figure.wp-block-image) { display: block; height: 100%; }
.carte-lien__corps { position: relative; flex: 1; display: grid; gap: 0.5rem; align-content: start; padding: 1.75rem 1.75rem 3.75rem; }
.carte-lien__etiquette { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.carte-lien__titre { font-size: 1.375rem; line-height: 1.15; letter-spacing: -0.03em; }
.carte-lien__texte { color: var(--ardoise); font-size: 0.9375rem; }
.carte-lien__fleche { position: absolute; left: 1.75rem; bottom: 1.5rem; width: 2.25rem; height: 2.25rem; border-radius: 50%; display: grid; place-items: center; background: var(--encre); color: #fff; transition: background-color var(--d-micro), transform 500ms var(--ease); }
.carte-lien__lien:hover .carte-lien__fleche { background: var(--accent); transform: translateX(4px); }

/* Article (guides Conseils) */
.article__grille { display: grid; gap: 3rem; }
@media (min-width: 1024px) { .article__grille { grid-template-columns: 17rem 1fr; gap: 5rem; align-items: start; } }
.article__aside { display: grid; gap: 1.5rem; }
@media (min-width: 1024px) { .article__aside { position: sticky; top: calc(var(--entete-h) + 2rem); } }
.article__sommaire-titre { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); margin-bottom: 0.75rem; }
.article__sommaire :is(ol,:where(.fp-ol)) { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.1rem; border-left: 1px solid rgba(0, 0, 0, 0.1); }
.article__sommaire :is(a,:where(.fp-a)) { display: block; padding: 0.4rem 0 0.4rem 1rem; margin-left: -1px; border-left: 2px solid transparent; color: var(--ardoise); font-size: 0.9375rem; text-decoration: none; line-height: 1.35; }
.article__sommaire :is(a,:where(.fp-a)):hover { color: var(--encre); border-left-color: var(--accent); }
@media (max-width: 1023px) { .article__sommaire { display: none; } }
.article__cta { border-radius: var(--rayon); background: #000; color: #fff; padding: 1.75rem; display: grid; gap: 0.75rem; justify-items: start; }
.article__cta-titre { font-size: 1.375rem; letter-spacing: -0.03em; }
.article__cta-texte { color: var(--cendre); font-size: 0.9375rem; }
.article__tel { display: inline-flex; align-items: center; gap: 0.5rem; color: #fff; text-decoration: none; font-weight: 600; font-variant-numeric: tabular-nums; }
.article__corps { display: grid; gap: clamp(2.5rem, 2rem + 2vw, 4rem); max-width: 46rem; }
.article__bref { border-radius: var(--rayon); background: var(--brume); padding: clamp(1.75rem, 1.4rem + 1.4vw, 2.75rem); display: grid; gap: 1rem; }
.article__bref .etiquette { color: var(--accent-lien-clair); }
.article__reponse { font-size: clamp(1.1875rem, 1.1rem + 0.35vw, 1.375rem); line-height: 1.5; letter-spacing: -0.015em; color: var(--encre); }
.article__retenir-titre { font-weight: 600; margin-top: 0.5rem; }
.article__section { display: grid; gap: 1rem; }
.article__section h2 { font-size: var(--fs-h3); letter-spacing: -0.03em; line-height: 1.15; }
.article__section p { font-size: 1.125rem; color: #3a3a3c; }
.article__section :is(a,:where(.fp-a)), .article__lyon :is(a,:where(.fp-a)), .texte-legal :is(a,:where(.fp-a)), .carte-blanche p :is(a,:where(.fp-a)):not(.btn):not(.lien-fleche) { color: var(--accent-lien-clair); text-underline-offset: 0.18em; }
.article__liste { margin: 0; padding-left: 1.25rem; display: grid; gap: 0.6rem; font-size: 1.0625rem; color: #3a3a3c; }
.article__etapes { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; counter-reset: etape; }
.article__etapes :is(li,:where(.fp-li)) { position: relative; padding-left: 2.75rem; font-size: 1.0625rem; color: #3a3a3c; counter-increment: etape; min-height: 2rem; }
.article__etapes :is(li,:where(.fp-li))::before { content: counter(etape); position: absolute; left: 0; top: -0.1rem; width: 1.9rem; height: 1.9rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; font-size: 0.875rem; font-weight: 600; }
.article__tableau { overflow-x: auto; border-radius: var(--rayon); background: var(--brume); }
.article__tableau table { width: 100%; min-width: 34rem; border-collapse: collapse; font-size: 0.9375rem; }
.article__tableau th, .article__tableau td { text-align: left; vertical-align: top; padding: 1rem 1.25rem; border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
.article__tableau thead th { font-size: 0.75rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; color: var(--ardoise); }
.article__tableau tbody tr:last-child th, .article__tableau tbody tr:last-child td { border-bottom: 0; }
.article__lyon { border-radius: var(--rayon); padding: 1.75rem 2rem; background: rgba(0, 113, 227, 0.06); box-shadow: inset 0 0 0 1px rgba(0, 113, 227, 0.25); display: grid; gap: 0.5rem; }
.article__lyon .etiquette { color: var(--accent-lien-clair); }
.article__lyon p:not(.etiquette) { font-size: 1.0625rem; color: var(--encre); }

/* Étapes numérotées sur fond noir (méthodes, professionnels) */
.etapes-methode { grid-template-columns: repeat(auto-fit, minmax(min(100%, 15rem), 1fr)); }

/* Services (icône + titre + texte) */
.services-pro { list-style: none; margin: 0; padding: 0; display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(min(100%, 19rem), 1fr)); }
.services-pro :is(li,:where(.fp-li)) { background: #fff; border-radius: var(--rayon); padding: 1.75rem; display: grid; gap: 0.6rem; align-content: start; }
.clair .services-pro :is(li,:where(.fp-li)) { background: var(--brume); }
.services-pro h3 { font-size: 1.25rem; letter-spacing: -0.025em; line-height: 1.2; }
.services-pro p { color: var(--ardoise); }
.services-pro p :is(a,:where(.fp-a)) { color: var(--accent-lien-clair); }
.services-pro__icone { width: 2.5rem; height: 2.5rem; border-radius: 50%; display: grid; place-items: center; background: var(--accent); color: #fff; margin-bottom: 0.25rem; }

/* Page Devis */
.devis-page { padding-top: clamp(3rem, 2rem + 3vw, 5rem); }
.devis-page__grille { display: grid; gap: 2rem; align-items: start; }
@media (min-width: 1024px) { .devis-page__grille { grid-template-columns: 7fr 4fr; gap: 3rem; } .devis-page__aside { position: sticky; top: calc(var(--entete-h) + 1.5rem); } }
.devis-page__aside { display: grid; gap: 1rem; }
.devis-page__tel :is(a,:where(.fp-a)) { font-size: 1.75rem; letter-spacing: -0.03em; font-weight: 500; color: var(--encre); text-decoration: none; font-variant-numeric: tabular-nums; }
.devis-page__prix { list-style: none; margin: 0; padding: 0; display: grid; }
.devis-page__prix :is(li,:where(.fp-li)) { display: flex; justify-content: space-between; gap: 1rem; padding: 0.7rem 0; border-bottom: 1px solid rgba(0, 0, 0, 0.08); }
.devis-page__prix :is(li,:where(.fp-li)):last-child { border-bottom: 0; }
.devis-page__prix b { font-weight: 500; }
.devis-page__note-google { font-size: 0.875rem; color: var(--ardoise); display: flex; align-items: center; gap: 0.4rem; flex-wrap: wrap; }

/* Checklist de préparation (cases à cocher, progression) */
.checklist__grille { display: grid; gap: 3rem; }
@media (min-width: 1024px) { .checklist__grille { grid-template-columns: 17rem 1fr; gap: 5rem; align-items: start; } .checklist__suivi { position: sticky; top: calc(var(--entete-h) + 5.5rem); } }
.checklist__suivi { display: grid; gap: 0.75rem; justify-items: start; }
.checklist__anneau { position: relative; width: 9rem; height: 9rem; display: grid; place-items: center; }
.checklist__anneau svg { position: absolute; inset: 0; width: 100%; height: 100%; transform: rotate(-90deg); }
.checklist__fond { fill: none; stroke: var(--brume); stroke-width: 8; }
.checklist__valeur { fill: none; stroke: var(--accent); stroke-width: 8; stroke-linecap: round; stroke-dasharray: 326.73; stroke-dashoffset: calc(326.73 * (1 - var(--avancement, 0))); transition: stroke-dashoffset 600ms var(--ease); }
.checklist__anneau b { font-size: 1.75rem; font-weight: 500; letter-spacing: -0.03em; }
.checklist__compte { font-weight: 600; }
.checklist__rappel { padding-top: 0.75rem; border-top: 1px solid rgba(0, 0, 0, 0.08); }
.checklist__corps { display: grid; gap: clamp(2.5rem, 2rem + 2vw, 4rem); }
.checklist__groupe { display: grid; gap: 1rem; }
.checklist__sous-titre { font-size: 1.25rem; letter-spacing: -0.025em; margin-top: 0.75rem; }
.checklist__liste { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.6rem; }
.checklist__item { display: flex; align-items: flex-start; gap: 1rem; padding: 1rem 1.25rem; border-radius: 18px; background: var(--brume); cursor: pointer; transition: background-color var(--d-micro); }
.checklist__item:hover { background: #ececf0; }
.checklist__item input { position: absolute; opacity: 0; pointer-events: none; }
.checklist__case { flex: none; width: 1.5rem; height: 1.5rem; margin-top: 0.05rem; border-radius: 50%; border: 1.5px solid var(--acier); display: grid; place-items: center; color: transparent; transition: all var(--d-micro); }
.checklist__item input:checked + .checklist__case { background: var(--accent); border-color: var(--accent); color: #fff; }
.checklist__item input:checked ~ :is(span,:where(.fp-span)):last-child { color: var(--ardoise); text-decoration: line-through; text-decoration-color: rgba(0, 0, 0, 0.25); }
.checklist__item input:focus-visible + .checklist__case { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Formulaire de contact */
.contact-form__champs { display: grid; gap: 1.1rem; justify-items: start; }
.contact-form__champs > .champs-2, .contact-form__champs > .champ { width: 100%; }
.devis__message { margin-top: 1.5rem; }
.devis__erreur { margin-top: 1.25rem; font-size: var(--fs-petit); color: #C0282D; }
.devis__erreur :is(a,:where(.fp-a)) { color: inherit; font-weight: 600; }
.champ textarea { width: 100%; min-height: 9rem; padding: 0.9rem 1rem; border: 1px solid var(--acier); border-radius: var(--rayon-champ); background: #fff; font-size: 1.0625rem; resize: vertical; }
.champ textarea:focus { outline: none; border: 2px solid var(--accent); box-shadow: 0 0 0 4px var(--accent-halo); padding: calc(0.9rem - 1px) calc(1rem - 1px); }
.champ textarea[aria-invalid="true"] { border-color: #C0282D; }
.contact-adresse { font-style: normal; font-size: 1.125rem; line-height: 1.5; }

/* Mur d'avis (/avis/) */
.mur-avis { list-style: none; margin: 0; padding: 0; columns: 1; column-gap: 1rem; }
@media (min-width: 700px) { .mur-avis { columns: 2; } }
@media (min-width: 1100px) { .mur-avis { columns: 3; } }
.mur-avis :is(li,:where(.fp-li)) { break-inside: avoid; margin-bottom: 1rem; }
.mur-avis .avis-carte { height: auto; }

/* Départements (/lyon-rhone/) */
.departements { list-style: none; margin: 0; padding: 0; display: grid; gap: 0.75rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.departements :is(li,:where(.fp-li)) { background: #fff; border-radius: 18px; padding: 1.1rem 1.25rem; display: grid; gap: 0.2rem; }
.departements b { font-weight: 500; font-size: 1.0625rem; }
.departements b :is(span,:where(.fp-span)) { color: var(--ardoise); font-weight: 400; }
.departements :is(li,:where(.fp-li)) > :is(span,:where(.fp-span)) { color: var(--ardoise); font-size: 0.9375rem; }

/* Carte : ville mise en évidence (pages locales) */
.radar--region .ville--active circle { fill: var(--ambre); stroke: #fff; stroke-width: 2; animation: none; }
.carte__lbl--active { fill: var(--ambre) !important; font-weight: 700; }

/* Textes légaux */
.texte-legal__grille { display: grid; gap: 3rem; }
@media (min-width: 1024px) { .texte-legal__grille { grid-template-columns: 17rem 1fr; gap: 5rem; align-items: start; } .texte-legal__sommaire { position: sticky; top: calc(var(--entete-h) + 2rem); } }
.texte-legal__corps { display: grid; gap: 2.5rem; max-width: 46rem; }
.texte-legal__corps section { display: grid; gap: 0.9rem; }
.texte-legal__corps h2 { font-size: 1.5rem; letter-spacing: -0.03em; line-height: 1.2; }
.texte-legal__corps h3 { font-size: 1.125rem; letter-spacing: -0.02em; margin-top: 0.5rem; }
.texte-legal__corps p, .texte-legal__corps :is(li,:where(.fp-li)) { color: #3a3a3c; font-size: 1rem; line-height: 1.65; }
.texte-legal__corps :is(ul,:where(.fp-ul)) { margin: 0; padding-left: 1.25rem; display: grid; gap: 0.4rem; }
.texte-legal__intro { font-size: 1.0625rem; color: var(--encre) !important; }
.texte-modifie { border-left: 3px solid var(--accent); padding: 0.75rem 0 0.75rem 1.25rem; background: rgba(0, 113, 227, 0.05); border-radius: 0 14px 14px 0; display: grid; gap: 0.5rem; }
.texte-modifie p { color: var(--encre) !important; }
.texte-modifie__ancien { font-size: 0.875rem !important; color: var(--ardoise) !important; }

/* Retouches : sommaire des textes légaux, carte-lien seule en grand format */
.texte-legal .texte-legal__sommaire :is(a,:where(.fp-a)) { color: var(--ardoise); text-decoration: none; }
.texte-legal .texte-legal__sommaire :is(a,:where(.fp-a)):hover { color: var(--encre); }
.cartes-liens--large { grid-template-columns: 1fr !important; }
@media (min-width: 800px) {
  .cartes-liens--large .carte-lien__lien { flex-direction: row; min-height: 20rem; }
  .cartes-liens--large .carte-lien__media { flex: 0 0 48%; aspect-ratio: auto; }
  .cartes-liens--large .carte-lien__corps { align-content: center; padding: 2.5rem 3rem 4.5rem; }
  .cartes-liens--large .carte-lien__titre { font-size: clamp(1.75rem, 1.3rem + 1.4vw, 2.5rem); letter-spacing: -0.04em; }
  .cartes-liens--large .carte-lien__fleche { left: 3rem; bottom: 2.25rem; }
}

/* Articles sur mobile : l’encadré « Besoin d’un traitement ? » après le texte */
@media (max-width: 1023px) { .article__aside { order: 2; } }


/* =============================================================================
   ADAPTATIONS WORDPRESS
   Ce qui diffère entre la maquette et le rendu des blocs : enveloppes, balises
   remplacées par des groupes, icônes en masques, lien étendu des cartes.
   Les sélecteurs de composants restent ceux de la maquette (voir tools/wp_css.rb).
   ========================================================================== */

/* Enveloppes : parties de modèle et contenu de page hors de la mise en page */
.wp-site-blocks > * + * { margin-block-start: 0; }
.wp-site-blocks > .wp-block-template-part { display: contents; }
:where(.wp-block-group) > :where(*) { margin-block: 0; }
:where(.wp-block-post-content) { display: contents; }

/* Texte en ligne regroupé dans un paragraphe par la conversion : sans boîte propre */
.fp-p { display: contents; }
.fp-contents { display: contents; }

/* Éléments rétablis par assets/app.js : cachés jusque-là */
.fpa-hidden { display: none !important; }
.fp-dialog { display: none; }

/* Icônes : masques CSS (couleur du texte), mêmes dimensions que les SVG de la maquette */
.ico { display: block; flex: none; background-color: currentColor; -webkit-mask: var(--ico) center / contain no-repeat; mask: var(--ico) center / contain no-repeat; }

/* Image : point focal posé par la conversion */
.fp-pos img { object-position: var(--fp-pos); }
figure.wp-block-image { margin: 0; }
.wp-block-image img { box-sizing: border-box; vertical-align: bottom; }

/* Carte cliquable : le lien couvre toute la carte */
.fp-a { position: relative; }
.fp-lien-etendu { color: inherit; text-decoration: none; }
.fp-lien-etendu::after { content: ""; position: absolute; inset: 0; z-index: 1; border-radius: inherit; }
.fp-lien-etendu:focus-visible { outline: none; }
.fp-a:has(.fp-lien-etendu:focus-visible) { outline: 2px solid var(--accent); outline-offset: 3px; }

/* Listes simples (bloc Liste sans autre classe) : puces du navigateur, comme dans la maquette.
   Spécificité nulle : les composants qui stylent leurs listes (méga-menu, pied de page…) gardent la main. */
:where(ul.wp-block-list[class="wp-block-list"], ol.wp-block-list[class="wp-block-list"]) { list-style: revert; padding-left: revert; }

/* Questions fréquentes : titre de la question dans le résumé */
.fp-titre { display: block; }
.wp-block-details > summary { list-style: none; }
.wp-block-details > summary::-webkit-details-marker { display: none; }

/* Tableau : légende pour lecteurs d'écran seulement ; colonnes repérées par position */
.wp-block-table .wp-element-caption { position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
.wp-block-table { margin: 0; }

/* Logo (bloc Logo du site) */
.wp-block-site-logo { line-height: 0; }
.wp-block-site-logo a { display: block; }
.wp-block-site-logo.pied__logo img { width: 100%; height: auto; }

/* Barre d'administration : l'en-tête fixe reste sous elle */
body.admin-bar .entete { top: var(--wp-admin--admin-bar--height, 32px); }

/* Code court : aucun paragraphe parasite autour des fragments */
:where(.wp-block-post-content) > p:empty { display: none; }


/* Icônes (masques) */
.ico-telephone { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.8 19.8 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.8 19.8 0 0 1 2.12 4.18 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'%3E%3C/path%3E%3C/svg%3E"); }
.ico-etoile { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 2.5l2.94 5.96 6.56.95-4.75 4.63 1.12 6.54L12 17.49l-5.87 3.09 1.12-6.54L2.5 9.41l6.56-.95z' fill='%23000' stroke='none'%3E%3C/path%3E%3C/svg%3E"); }
.ico-fleche { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'%3E%3C/path%3E%3Cpath d='m12 5 7 7-7 7'%3E%3C/path%3E%3C/svg%3E"); }
.ico-pause { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 5v14'%3E%3C/path%3E%3Cpath d='M15 5v14'%3E%3C/path%3E%3C/svg%3E"); }
.ico-lecture { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M8 5.5v13l10.5-6.5z' fill='%23000'%3E%3C/path%3E%3C/svg%3E"); }
.ico-plus { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h14'%3E%3C/path%3E%3Cpath d='M12 5v14'%3E%3C/path%3E%3C/svg%3E"); }
.ico-photo { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14.5 4h-5L7 7H4a2 2 0 0 0-2 2v9a2 2 0 0 0 2 2h16a2 2 0 0 0 2-2V9a2 2 0 0 0-2-2h-3z'%3E%3C/path%3E%3Ccircle cx='12' cy='13' r='3'%3E%3C/circle%3E%3C/svg%3E"); }
.ico-gauche { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m15 18-6-6 6-6'%3E%3C/path%3E%3C/svg%3E"); }
.ico-droite { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m9 18 6-6-6-6'%3E%3C/path%3E%3C/svg%3E"); }
.ico-croix { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M18 6 6 18'%3E%3C/path%3E%3Cpath d='m6 6 12 12'%3E%3C/path%3E%3C/svg%3E"); }
.ico-externe { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 3h6v6'%3E%3C/path%3E%3Cpath d='M10 14 21 3'%3E%3C/path%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'%3E%3C/path%3E%3C/svg%3E"); }
.ico-coche { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'%3E%3C/path%3E%3C/svg%3E"); }
.ico-liste { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='8' y='2' width='8' height='4' rx='1'%3E%3C/rect%3E%3Cpath d='M16 4h2a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2H6a2 2 0 0 1-2-2V6a2 2 0 0 1 2-2h2'%3E%3C/path%3E%3Cpath d='M12 11h4'%3E%3C/path%3E%3Cpath d='M12 16h4'%3E%3C/path%3E%3Cpath d='M8 11h.01'%3E%3C/path%3E%3Cpath d='M8 16h.01'%3E%3C/path%3E%3C/svg%3E"); }
.ico-bouclier { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z'%3E%3C/path%3E%3Cpath d='m9 12 2 2 4-4'%3E%3C/path%3E%3C/svg%3E"); }
.ico-batiment { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 22V4a2 2 0 0 1 2-2h8a2 2 0 0 1 2 2v18z'%3E%3C/path%3E%3Cpath d='M6 12H4a2 2 0 0 0-2 2v6a2 2 0 0 0 2 2h2'%3E%3C/path%3E%3Cpath d='M18 9h2a2 2 0 0 1 2 2v9a2 2 0 0 1-2 2h-2'%3E%3C/path%3E%3Cpath d='M10 6h4'%3E%3C/path%3E%3Cpath d='M10 10h4'%3E%3C/path%3E%3Cpath d='M10 14h4'%3E%3C/path%3E%3Cpath d='M10 18h4'%3E%3C/path%3E%3C/svg%3E"); }
.ico-horloge { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='10'%3E%3C/circle%3E%3Cpath d='M12 6v6l4 2'%3E%3C/path%3E%3C/svg%3E"); }
.ico-document { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M15 2H6a2 2 0 0 0-2 2v16a2 2 0 0 0 2 2h12a2 2 0 0 0 2-2V7z'%3E%3C/path%3E%3Cpath d='M14 2v4a2 2 0 0 0 2 2h4'%3E%3C/path%3E%3Cpath d='M16 13H8'%3E%3C/path%3E%3Cpath d='M16 17H8'%3E%3C/path%3E%3Cpath d='M10 9H8'%3E%3C/path%3E%3C/svg%3E"); }
.ico-loupe { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='11' cy='11' r='7'%3E%3C/circle%3E%3Cpath d='m21 21-4.3-4.3'%3E%3C/path%3E%3C/svg%3E"); }
.ico-vapeur { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M14 4v10.54a4 4 0 1 1-4 0V4a2 2 0 0 1 4 0z'%3E%3C/path%3E%3C/svg%3E"); }
.ico-chevron { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'%3E%3C/path%3E%3C/svg%3E"); }
.ico-menu { --ico: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M4 8h16'%3E%3C/path%3E%3Cpath d='M4 16h16'%3E%3C/path%3E%3C/svg%3E"); }

/* Styles posés par la conversion */
.fp-s-0576ec4 { --fp-pos: 50% 60%; }
.fp-s-344e8f9 { padding: 0.5rem 1rem 1.5rem; }
.fp-s-8800ba3 { justify-content: space-between; }
.fp-s-8ad2674 { --fp-pos: 62% 50%; }
.fp-s-b847b5a { padding-top: 0; }
.fp-s-e624357 { --fp-pos: 50% 40%; }
.fp-s-5fc03fb { --fp-pos: 45% 50%; }
.fp-s-3b4a5f6 { --fp-pos: 35% 50%; }
.fp-s-ca4152e { --fp-pos: 50% 85%; }
.fp-s-a0650fb { --fp-pos: 50% 90%; }
.fp-s-6420569 { --fp-pos: 50% 50%; }
.fp-s-1e5e837 { margin-bottom: 0; }
.fp-s-0ce101b { --fp-pos: 60% 50%; }
.fp-s-d5b645b { max-width: 36rem; }
.fp-s-541ffc0 { justify-content: center; }
.fp-s-7b9b298 { margin-bottom: 1.5rem; }
.fp-s-cea2c38 { --n: 6; }
.fp-s-2b5e46d { --i: 0; }
.fp-s-9218c65 { --i: 1; }
.fp-s-e01f126 { --i: 2; }
.fp-s-d3f99eb { --i: 3; }
.fp-s-d77e4ad { --i: 4; }
.fp-s-cd55af9 { --i: 5; }
.fp-s-bfbe096 { --fp-pos: 50% 45%; }
.fp-s-3a9260d { --fp-pos: 15% 60%; }
.fp-s-d54a1cc { --fp-pos: 64% 50%; }
.fp-s-d34bfe9 { --fp-pos: 80% 50%; }
.fp-s-df11485 { --fp-pos: 50% 35%; }
.fp-s-6b71a20 { margin-bottom: 2rem; }

/* Tableau comparatif (page Tarifs) : colonnes et lignes repérées par position */
.comparatif__table tr > :nth-child(4) { background: rgba(0, 113, 227, 0.05); }
.comparatif__table tbody tr:first-child td { font-size: 1.25rem; font-weight: 500; letter-spacing: -0.02em; white-space: nowrap; }
.comparatif__table tbody tr:last-child td { color: var(--ardoise); font-size: 0.875rem; }
@media (max-width: 699px) { .comparatif__table tbody tr:first-child td { font-size: 1.0625rem; } }
