/* ==========================================================================
   ComLocal — Refonte éditoriale
   Système repris de curaclimate.com (grille verticale, sticky storytelling,
   marquee, révélations masquées) — palette ComLocal strictement conservée.
   ========================================================================== */

:root{
  /* ---- Palette ComLocal (inchangée) ---- */
  --rouge:#E9482F;  --rouge-dark:#C93A22; --rouge-soft:#FF7E6A; --saumon:#F6B2A7;
  --rose-bg:#FFF4F2; --teal:#0E5C64;      --teal-dark:#0A464C;  --mint:#DEF8F3;
  --encre:#26262B;  --encre-2:#333333;    --gris:#63636E;       --gris-clair:#8E8E99;
  --border:#E8E7E9; --off:#F6F6F8;        --blanc:#FFFFFF;

  /* ---- Rythme (repris de Cura : padding fluide en vw, conteneur très large) ---- */
  --pad: 3vw;
  --sec: clamp(5.5rem, 9vw, 9.38rem);
  --wrap: 108rem;
  /* Longueur de ligne de confort : ~68 signes au corps de texte.
     Mesuré, pas estimé — au-delà de 75 l'œil perd la ligne suivante. */
  --measure: 37rem;
  --measure-sm: 32rem;

  --font: "Geist", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;
  --display: "Archivo", "Geist", -apple-system, sans-serif;

  --ease: cubic-bezier(.22,1,.36,1);

  /* ---- Barre de navigation flottante : hauteur, espace au-dessus, total ---- */
  --nav-h: 60px;
  --nav-gap: .75rem;
  --nav-total: calc(var(--nav-gap) + var(--nav-h));
}
/* Tablette et mobile : des gouttières confortables au pouce (16 px au lieu de
   11) et des sections moins hautes — 88 px de respiration en haut et en bas
   sur un écran de 812 px, c'était un quart de l'écran vide à chaque chapitre. */
@media(max-width:900px){ :root{--sec:clamp(3.4rem,8vw,5rem)} }
@media(max-width:600px){ :root{--nav-h:54px;--nav-gap:.5rem;--pad:1rem} }

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0; background:var(--rose-bg); color:var(--encre);
  font-family:var(--font); font-size:1rem; line-height:1.3;
  -webkit-font-smoothing:antialiased; overflow-x:hidden;
}
.js body.is-loading{overflow:hidden;height:100vh}
img{display:block;max-width:100%}
:where(img[width][height]){height:auto}
a{color:inherit;text-decoration:none}
h1,h2,h3,h4,p{margin:0}
::selection{background:var(--rouge);color:#fff}

/* ---------- Échelle typographique (calquée sur Cura) ---------- */
.h1{font-family:var(--display);font-size:clamp(2.5rem,6.6vw,5.25rem);font-weight:600;line-height:.98;letter-spacing:-.035em}
.h2{font-family:var(--display);font-size:clamp(2.1rem,4.6vw,4rem);font-weight:600;line-height:1;letter-spacing:-.03em}
.h3{font-family:var(--display);font-size:clamp(1.4rem,2.1vw,2rem);font-weight:600;line-height:1.15;letter-spacing:-.025em}
.t-xxl{font-size:clamp(1.35rem,3.1vw,3rem);font-weight:500;line-height:1.12;letter-spacing:-.025em}
.t-md{font-size:clamp(1.02rem,1.18vw,1.25rem);line-height:1.6;color:var(--encre-2)}
.t-sm{font-size:.875rem;line-height:1.45}
.muted{color:var(--gris)}

/* ---------- Conteneurs ---------- */
.pad{padding-left:var(--pad);padding-right:var(--pad)}
.sec-head{display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start;max-width:min(44rem,100%)}
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto}
.sec-pad{padding-top:var(--sec);padding-bottom:var(--sec)}
.z1{position:relative;z-index:1}

/* ---------- Grille verticale : la signature visuelle de Cura ----------
   5 traits pleine hauteur, posés en absolu, opacité très basse.
   La variante .is-invert utilise mix-blend-mode:difference pour que les
   traits s'inversent selon ce qui passe derrière (photo, texte, aplat). */
.lines{
  position:absolute;inset:0;display:flex;justify-content:space-between;align-items:stretch;
  padding-left:var(--pad);padding-right:var(--pad);
  pointer-events:none;opacity:.22;z-index:0;
}
.lines span{width:1px;height:100%;background:var(--encre)}
.lines.is-invert{mix-blend-mode:difference;opacity:.16}
.lines.is-invert span{background:#fff}
@media(max-width:767px){ .lines span:nth-child(2),.lines span:nth-child(4){display:none} }

/* ---------- Pastille ---------- */
/* Les pastilles ont été retirées du site. Il ne subsiste que le lien de
   rubrique en tête d'article — de la navigation, pas une étiquette : il
   redevient un libellé lisible, souligné au survol. */
/* Libellé de section : il n'y a jamais eu de règle de base pour `.kicker` —
   seulement trois variantes en pastille selon le contexte. En les aplatissant
   on emportait la typographie avec l'aplat. La voici, une fois pour toutes ;
   les règles contextuelles ne portent plus que la couleur. */
.kicker{display:inline-block;align-self:flex-start;
  font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;line-height:1;color:var(--gris)}

.pill{display:inline-block;align-self:flex-start;color:var(--rouge);
  text-transform:uppercase;letter-spacing:.09em;font-size:.72rem;font-weight:600;
  line-height:1;border-bottom:1px solid transparent;padding-bottom:.2rem;
  transition:border-color .3s var(--ease)}
a.pill:hover{border-bottom-color:var(--rouge)}
.on-ink .pill{color:var(--rouge-soft)}

/* ---------- Bouton : aplat + 4 équerres d'angle qui s'écartent au survol ---------- */
.btn{position:relative;display:inline-block;isolation:isolate}
.btn-inner{
  display:flex;align-items:center;gap:.63rem;background:var(--blanc);color:var(--encre);
  padding:.95rem 1.35rem;font-size:.95rem;font-weight:500;line-height:1;
  transition:background .35s var(--ease),color .35s var(--ease);
}
.btn-inner.is-rouge{background:var(--rouge);color:#fff}
.btn-inner.is-teal{background:var(--teal);color:var(--mint)}
.btn-inner.is-ink{background:var(--encre);color:#fff}
.btn:hover .btn-inner.is-rouge{background:var(--rouge-dark)}
.btn:hover .btn-inner{background:var(--encre);color:#fff}
.btn:hover .btn-inner.is-ink{background:var(--rouge)}
.btn-inner svg{width:14px;height:14px;flex:none;transition:transform .35s var(--ease)}
.btn:hover .btn-inner svg{transform:translate(3px,-3px)}
/* équerres */
.btn-corners{position:absolute;inset:0;pointer-events:none}
.btn-corners i{position:absolute;width:9px;height:9px;border:1.5px solid var(--rouge);transition:all .4s var(--ease)}
.btn-corners i:nth-child(1){top:-4px;left:-4px;border-right:0;border-bottom:0}
.btn-corners i:nth-child(2){top:-4px;right:-4px;border-left:0;border-bottom:0}
.btn-corners i:nth-child(3){bottom:-4px;right:-4px;border-left:0;border-top:0}
.btn-corners i:nth-child(4){bottom:-4px;left:-4px;border-right:0;border-top:0}
.btn:hover .btn-corners i:nth-child(1){top:-8px;left:-8px}
.btn:hover .btn-corners i:nth-child(2){top:-8px;right:-8px}
.btn:hover .btn-corners i:nth-child(3){bottom:-8px;right:-8px}
.btn:hover .btn-corners i:nth-child(4){bottom:-8px;left:-8px}

/* ---------- Révélation masquée (SplitText maison) ---------- */
.rv .w{display:inline-block;overflow:hidden;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.rv .wi{display:inline-block;will-change:transform}
.js .fade-up{opacity:0;transform:translateY(24px)}

/* ==========================================================================
   PRÉLOADER — lettres qui montent + compteur à rouleau (repris de Cura)
   ========================================================================== */
/* ---------- Préloader et transitions ----------
   Première visite : trois mots puis le logo. Ensuite (`.is-trans`) : l'anneau
   du repère tourne, s'arrête, laisse paraître le losange, rebondit et s'ouvre
   en pleine page — sur blanc. `#trans` est l'aller, créé par JS. */
#pre{display:none}
.js #pre{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:var(--blanc)}
.js #pre > *{grid-area:1/1}
.pre-mots{display:grid;text-align:center;font-family:var(--display);font-weight:600;
  font-size:clamp(2rem,5.2vw,3.8rem);letter-spacing:-.03em;line-height:1.05;color:var(--encre)}
.pre-mots span{grid-area:1/1;opacity:0;white-space:nowrap}
.pre-mots em{font-style:normal;color:var(--rouge)}
.pre-logo{width:min(58vw,21rem);color:var(--encre);opacity:0}
.pre-logo svg{width:100%;height:auto;display:block;overflow:visible}
.pre-picto{display:none;width:clamp(4.5rem,9vw,7rem)}
.pre-picto svg{width:100%;height:auto;display:block;overflow:visible}
/* l'anneau est tracé en trait, même géométrie que le logo (rayon médian
   49,245, épaisseur 26,77, bouts droits). Le tracé est le cercle complet
   (pathLength 100) : au repos, le tiret 75/25 ne montre que l'arc du logo ;
   pendant le chargement, JS fait courir un tiret autour du cercle, qui
   s'allonge jusqu'à devenir l'arc */
.pre-picto .anneau__arc,.trans-picto .anneau__arc{fill:none;stroke:var(--rouge);stroke-width:26.77;stroke-linecap:butt;stroke-dasharray:75 25;stroke-dashoffset:0}
.pre-picto .losange{fill:var(--saumon)}
.pre-bar{position:absolute;left:var(--pad);right:var(--pad);bottom:8vh;height:2px;border-radius:2px;background:rgba(38,38,43,.1);overflow:hidden}
.pre-bar i{display:block;height:100%;width:0;background:var(--rouge)}
#pre.is-trans{background:var(--blanc)}
/* le fondu final ne touche qu'à l'opacité et au transform : couches composées */
#pre.is-trans{will-change:opacity}
#pre.is-trans .pre-picto svg{will-change:transform,opacity}
#pre.is-trans .pre-mots,#pre.is-trans .pre-logo,#pre.is-trans .pre-bar{display:none}
#pre.is-trans .pre-picto{display:block}
/* l'aller */
#trans{position:fixed;inset:0;z-index:1001;display:none;align-items:center;justify-content:center;background:var(--blanc);overflow:hidden}
#trans.is-on{display:flex}
.trans-picto{position:relative;width:clamp(4.5rem,9vw,7rem)}
.trans-picto svg{width:100%;height:auto;display:block;overflow:visible}
.trans-picto .losange{display:none}

/* ==========================================================================
   NAV
   ========================================================================== */
/* ---------- Navigation : une barre qui flotte ----------
   Détachée du bord haut (--nav-gap), aux dimensions du conteneur de page, sur
   fond translucide flouté. Elle s'efface en descendant, revient en remontant. */
.nav{position:fixed;top:var(--nav-gap);left:var(--pad);right:var(--pad);z-index:200;
  max-width:var(--wrap);margin-inline:auto;
  background:rgba(255,255,255,.8);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);
  border:1px solid var(--border);box-shadow:0 14px 34px -26px rgba(38,38,43,.28);
  transition:transform .5s var(--ease),background .4s ease,box-shadow .4s ease}
.nav.is-solid{background:rgba(255,255,255,.92);box-shadow:0 22px 44px -26px rgba(38,38,43,.38)}
.nav > .pad{padding-inline:clamp(.9rem,1.8vw,1.4rem)}
.nav-in{display:flex;align-items:center;justify-content:space-between;gap:clamp(1rem,2.5vw,2rem);height:var(--nav-h)}
.logo{font-family:var(--display);font-weight:700;font-size:1.15rem;letter-spacing:-.03em}
.logo i{color:var(--rouge);font-style:normal}
.nav-links{display:flex;gap:clamp(1.1rem,1.8vw,1.9rem);font-size:.9rem;font-weight:500}
.nav-links a{position:relative;padding:.25rem 0;white-space:nowrap}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:0;background:var(--rouge);transition:width .4s var(--ease)}
.nav-links a:hover::after{width:100%}
.nav-right{display:flex;align-items:center;gap:1rem}
.nav-tel{font-size:.9rem;font-weight:500;white-space:nowrap}
.nav-appel .btn-inner{white-space:nowrap}
.nav-right .btn-inner{padding:.75rem 1.1rem}
.burger{display:none;width:44px;height:44px;position:relative;background:none;border:0;cursor:pointer;padding:0}
.burger i{position:absolute;left:11px;right:11px;height:1.5px;background:var(--encre);transition:.35s var(--ease)}
.burger i:nth-child(1){top:17px}.burger i:nth-child(2){bottom:17px}
.burger.on i:nth-child(1){top:21px;transform:rotate(45deg)}
.burger.on i:nth-child(2){bottom:21px;transform:rotate(-45deg)}
@media(max-width:1180px){ .nav-tel,.nav-appel{display:none} .nav-links{gap:1.1rem;font-size:.88rem} .nav-in{gap:1rem} }
@media(max-width:991px){
  .nav-links,.nav-tel,.nav-appel{display:none}
  .burger{display:block}
}
@media(max-width:600px){ .nav-right > .btn{display:none} }

/* Menu mobile : un panneau qui flotte sous la barre, aux mêmes marges. */
.mobile-menu{position:fixed;top:calc(var(--nav-total) + .5rem);left:var(--pad);right:var(--pad);z-index:199;
  max-width:var(--wrap);margin-inline:auto;max-height:calc(100dvh - var(--nav-total) - 1.25rem);
  overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch;
  background:var(--blanc);border:1px solid var(--border);box-shadow:0 30px 60px -30px rgba(38,38,43,.35);
  padding:.5rem clamp(1rem,3vw,1.5rem) 1.1rem;display:flex;flex-direction:column;
  opacity:0;transform:translateY(-8px);visibility:hidden;pointer-events:none;
  transition:opacity .3s var(--ease),transform .35s var(--ease),visibility 0s .35s}
.mobile-menu.on{opacity:1;transform:none;visibility:visible;pointer-events:auto;transition-delay:0s}
/* le menu : une entrée par ligne, un chevron quand il y a un sous-menu */
.mobnav{display:flex;flex-direction:column}
.mobnav > a,.mobnav__ligne > a{display:block;font-family:var(--display);font-size:1.18rem;font-weight:600;letter-spacing:-.025em;padding:.78rem 0;border-bottom:1px solid var(--border)}
.mobnav__ligne{display:flex;align-items:center;gap:.5rem;border-bottom:1px solid var(--border)}
.mobnav__ligne > a{flex:1;border-bottom:0}
.mobnav__plus{flex:none;width:44px;height:44px;display:flex;align-items:center;justify-content:center;
  background:none;border:0;color:var(--gris);cursor:pointer;border-radius:var(--r-sm);transition:.3s var(--ease)}
.mobnav__plus svg{width:18px;height:18px;transition:transform .3s var(--ease)}
.mobnav__plus[aria-expanded="true"]{background:var(--off);color:var(--encre)}
.mobnav__plus[aria-expanded="true"] svg{transform:rotate(180deg)}
.mobnav__sous{display:flex;flex-direction:column;overflow:hidden;border-bottom:1px solid var(--border);background:var(--off)}
.mobnav__sous[hidden]{display:none}
.mobnav__sous a{font-size:.95rem;line-height:1.3;color:var(--encre-2);padding:.72rem .9rem;border-bottom:1px solid var(--border)}
.mobnav__sous a:last-child{border-bottom:0}
.mobnav__pied{display:flex;flex-wrap:wrap;gap:.6rem;margin:1rem 0 0}
.mobnav__tel,.mobnav__cta{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;white-space:nowrap;
  padding:.95rem .9rem;border-radius:var(--r-sm);font-size:.95rem;font-weight:600;text-align:center;line-height:1.1}
.mobnav__tel{flex:0 1 auto}
.mobnav__cta{flex:1 1 10rem}
.mobnav__tel{border:1px solid var(--border);color:var(--encre);background:var(--blanc)}
.mobnav__tel svg{width:15px;height:15px;color:var(--rouge)}
.mobnav__cta{background:var(--rouge);color:#fff}

/* ==========================================================================
   HERO — pleine hauteur, titre en bas à gauche, image décor à droite
   ========================================================================== */
.hero{position:relative;min-height:100svh;display:flex;flex-direction:column;justify-content:space-between;background:var(--blanc);overflow:hidden}
.hero-top{position:relative;z-index:1;padding-top:clamp(7rem,14vh,11rem)}
.hero-title{max-width:16ch}
.hero-lines{z-index:1}
.hero-bottom{position:relative;z-index:1;padding-bottom:clamp(2rem,5vh,3.5rem);padding-top:2rem}
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:2rem;align-items:end}
.hero-copy{max-width:min(38rem,100%);display:flex;flex-direction:column;gap:1.6rem;align-items:flex-start}
.hero-meta{display:flex;flex-wrap:wrap;gap:.5rem .9rem;font-size:.78rem;letter-spacing:.03em;text-transform:uppercase;color:var(--gris)}
.hero-meta span{display:flex;align-items:center;gap:.45rem}
.hero-meta span::before{content:"";width:4px;height:4px;background:var(--rouge)}
.hero-decor{position:absolute;right:0;bottom:0;width:44vw;max-width:780px;max-height:78vh;overflow:hidden;z-index:0;pointer-events:none}
.hero-decor img{width:100%;height:100%;object-fit:cover;
  -webkit-mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 100%);
  mask-image:linear-gradient(to bottom,transparent 0%,#000 22%,#000 100%);}
@media(max-width:900px){
  .hero-grid{grid-template-columns:1fr}
  .hero-decor{position:relative;width:100%;margin-top:2rem;right:auto}
  .hero-title{max-width:none}
}

/* ==========================================================================
   CONSTAT — récit sticky : deux textes qui se relaient au scroll
   (piste de 190vh, bloc collé en haut, cross-fade piloté par ScrollTrigger)
   ========================================================================== */
.about{position:relative;background:var(--blanc);z-index:2}
.about-track{position:relative;min-height:190vh}
.about-sticky{position:sticky;top:0;min-height:100svh;display:flex;align-items:center}
.about-inner{position:relative;width:100%}
.about-texts{position:relative;max-width:min(46rem,100%)}
.about-txt{letter-spacing:-.02em}
.about-txt.is-abs{position:absolute;inset:0}
.about-txt b{font-weight:600;color:var(--rouge)}
.about-txt .teal{color:var(--teal);font-weight:600}
.about-decor{position:absolute;pointer-events:none;overflow:hidden}
.about-decor img{width:100%;height:100%;object-fit:cover}
.about-decor.d1{width:13vw;min-width:130px;max-height:34vh;aspect-ratio:3/4;right:30%;top:7%}
.about-decor.d2{width:17vw;min-width:170px;max-height:42vh;aspect-ratio:4/5;right:2%;bottom:7%}
.about-head{display:flex;align-items:center;gap:1rem;margin-bottom:2.2rem}
@media(max-width:900px){
  .about-track{min-height:auto}
  .about-sticky{position:static;min-height:0;padding:5rem 0}
  .about-txt.is-abs{position:static;margin-bottom:2rem}
  .about-texts{max-width:none}
  .about-decor.d1,.about-decor.d2{position:relative;right:auto;top:auto;bottom:auto;width:100%;min-width:0;max-height:none;margin-top:1.5rem;aspect-ratio:16/10}
  .about-decor.d1{display:none}
}

/* ==========================================================================
   PIN MÉDIA + MARQUEE — image épinglée qui se dézoome, texte par-dessus,
   puis bandeau défilant géant (repris de .section_loop)
   ========================================================================== */
.loop{position:relative;background:var(--mint)}
.loop-track{min-height:250vh}
.loop-sticky{position:sticky;top:0;height:100svh;overflow:hidden;display:flex;flex-direction:column;justify-content:space-between}
.loop-media{position:absolute;inset:0;z-index:0}
.loop-media img{width:100%;height:100%;object-fit:cover;transform:scale(1.18);will-change:transform}
.loop-veil{position:absolute;inset:0;background:var(--encre);opacity:.72}
.loop-content{position:relative;z-index:2;color:#fff;padding-top:clamp(5rem,12vh,9rem);flex:1;display:flex;align-items:center}
.loop-grid{display:grid;grid-template-columns:minmax(0,1.05fr) minmax(0,1fr);gap:clamp(1.5rem,4vw,4rem);align-items:start}
.loop-grid .t-md{color:rgba(255,255,255,.78)}
.loop-list{display:flex;flex-direction:column;gap:1.1rem;margin-top:.4rem}
.loop-li{display:flex;gap:.9rem;align-items:flex-start;padding-top:1rem;border-top:1px solid rgba(255,255,255,.18)}
.loop-li em{font-style:normal;font-size:.72rem;font-weight:600;color:var(--rouge-soft);letter-spacing:.06em;padding-top:.2rem;flex:none;width:2rem}
.marquee{position:relative;z-index:2;overflow:hidden;padding-bottom:1.5rem}
.marquee-mover{display:flex;width:max-content;will-change:transform}
.marquee-txt{
  font-family:var(--display);font-weight:600;text-transform:uppercase;white-space:nowrap;
  font-size:clamp(3.4rem,14vw,14.26rem);line-height:.9;letter-spacing:-.045em;
  color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.55);padding-right:.35em;
}
.marquee-txt.fill{color:var(--mint);-webkit-text-stroke:0}
@media(max-width:900px){
  .loop-track{min-height:auto}
  .loop-sticky{position:static;height:auto;padding-bottom:2rem}
  .loop-media img{transform:none}
  .loop-content{padding-top:5rem;padding-bottom:4rem}
  .loop-grid{grid-template-columns:1fr}
}

/* ==========================================================================
   SLIDER MÉTHODE (Swiper fade + titre qui monte)
   ========================================================================== */
.feat{position:relative;background:var(--rose-bg)}
.feat-head{display:flex;flex-direction:column;gap:1.1rem;max-width:min(42rem,100%);margin-bottom:clamp(2.5rem,5vw,4.5rem)}
.feat-slide{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:clamp(1.5rem,3vw,3rem);align-items:stretch}
.feat-img{position:relative;overflow:hidden;aspect-ratio:4/3;background:var(--saumon)}
.feat-img img{width:100%;height:100%;object-fit:cover}
.feat-right{background:var(--blanc);padding:clamp(1.6rem,3vw,3rem);display:flex;flex-direction:column;gap:1.2rem;justify-content:center}
.feat-num{font-family:var(--display);font-size:.85rem;font-weight:600;color:var(--rouge);letter-spacing:.08em}
.feat-right .h3{overflow:hidden}
.feat-right .h3 span{display:block}
.swiper-nav{display:flex;gap:.5rem;margin-top:auto;padding-top:1.4rem}
.sw-btn{width:44px;height:44px;border:1px solid var(--border);background:transparent;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.35s var(--ease)}
.sw-btn:hover{background:var(--encre);border-color:var(--encre);color:#fff}
.sw-btn svg{width:15px;height:15px}
.sw-btn.swiper-button-disabled{opacity:.3;pointer-events:none}
.feat-dots{display:flex;gap:.4rem;align-items:center;margin-left:auto}
.feat-dots .swiper-pagination-bullet{width:26px;height:2px;border-radius:0;background:var(--encre);opacity:.18;transition:.35s;margin:0!important}
.feat-dots .swiper-pagination-bullet-active{opacity:1;background:var(--rouge)}
@media(max-width:900px){ .feat-slide{grid-template-columns:1fr} }

/* ==========================================================================
   MÉTIERS — cartes photo avec voile + libellé au survol (repris des partners)
   ========================================================================== */
.jobs{position:relative;background:var(--blanc)}
.jobs-grid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.6fr);gap:clamp(2rem,4vw,4rem);align-items:start}
.jobs-left{display:flex;flex-direction:column;gap:1.2rem;position:sticky;top:110px}
.jobs-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border)}
.job{position:relative;aspect-ratio:1;overflow:hidden;background:var(--encre);display:block}
.job img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease),filter .5s ease;filter:grayscale(1) contrast(1.05)}
.job-veil{position:absolute;inset:0;background:var(--encre);opacity:.55;transition:opacity .5s ease}
.job-in{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;gap:.3rem;padding:1.2rem;color:#fff;z-index:2}
.job-name{font-family:var(--display);font-weight:600;font-size:clamp(.95rem,1.25vw,1.2rem);letter-spacing:-.02em}
.job-sub{font-size:.76rem;color:rgba(255,255,255,.72);line-height:1.35;opacity:0;transform:translateY(8px);transition:.45s var(--ease)}
.job:hover img{transform:scale(1.07);filter:grayscale(0) contrast(1)}
.job:hover .job-veil{opacity:.28}
.job:hover .job-sub{opacity:1;transform:none}
.job-arrow{position:absolute;top:1rem;right:1rem;z-index:2;width:30px;height:30px;background:var(--rouge);display:flex;align-items:center;justify-content:center;opacity:0;transform:scale(.6);transition:.4s var(--ease)}
.job:hover .job-arrow{opacity:1;transform:none}
.job-arrow svg{width:12px;height:12px;color:#fff}
@media(max-width:900px){ .jobs-grid{grid-template-columns:1fr} .jobs-left{position:static} .jobs-cards{grid-template-columns:repeat(2,1fr)} }
@media(hover:none){
  .job-sub{opacity:1;transform:none}
  .job-veil{opacity:.46}
  .job img{filter:grayscale(.25)}
  .job-in{gap:.4rem}
}

/* ---------- Séparateur ---------- */
.divider{position:relative;height:1px;background:rgba(38,38,43,.12);margin:0 var(--pad)}
.divider i{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(45deg);width:9px;height:9px;background:var(--rose-bg);border:1px solid var(--rouge)}

/* ==========================================================================
   CHIFFRES
   ========================================================================== */
.stats{position:relative;background:var(--rose-bg)}
.stats-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--border);border-block:1px solid var(--border);margin-top:clamp(2.5rem,5vw,4rem)}
.stat{background:var(--rose-bg);padding:clamp(1.6rem,3vw,2.6rem) clamp(1.1rem,2vw,2rem);display:flex;flex-direction:column;gap:.6rem}
.stat-n{font-family:var(--display);font-size:clamp(2.6rem,5vw,4.6rem);font-weight:600;line-height:.95;letter-spacing:-.04em;color:var(--rouge)}
.stat-t{font-weight:500;font-size:.98rem;line-height:1.3}
.stat-d{font-size:.82rem;color:var(--gris);line-height:1.45}
.stat-src{font-size:.76rem;color:var(--gris);margin-top:auto;padding-top:.8rem}
@media(max-width:1100px){ .stats-grid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .stats-grid{grid-template-columns:1fr} }

/* ==========================================================================
   PACKS
   ========================================================================== */
.packs{position:relative;background:var(--encre);color:#fff}
.packs .lines span{background:#fff}
.pack-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(255,255,255,.14);margin-top:clamp(2.5rem,5vw,4rem)}
.pack{background:var(--encre);padding:clamp(1.8rem,2.6vw,2.6rem);display:flex;flex-direction:column;gap:1.1rem;transition:background .5s var(--ease)}
.pack:hover{background:#1c1c20}
.pack.is-hi{background:#1c1c20}
.pack-top{display:flex;align-items:center;justify-content:space-between;gap:1rem}
.pack h3{font-family:var(--display);font-size:1.35rem;font-weight:600;letter-spacing:-.02em}
.pack-p{font-size:.95rem;line-height:1.5;color:rgba(255,255,255,.66)}
.pack-price{display:flex;align-items:baseline;gap:.5rem;padding-top:.4rem;margin-top:auto}
.pack-price s{color:rgba(255,255,255,.35);font-size:1rem}
.pack-price b{font-family:var(--display);font-size:clamp(2rem,3vw,2.8rem);font-weight:600;letter-spacing:-.03em;line-height:1}
.pack-price em{font-style:normal;font-size:.85rem;color:rgba(255,255,255,.6)}
.pack-save{font-size:.78rem;color:var(--rouge-soft)}
.pack-note{min-height:3.4rem;font-size:.75rem;color:rgba(255,255,255,.45);line-height:1.45;padding-top:.9rem;border-top:1px solid rgba(255,255,255,.12)}
.pack ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.55rem}
.pack li{font-size:.94rem;line-height:1.55;position:relative;padding-left:1.2rem;color:rgba(255,255,255,.8)}
.pack li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--rouge)}
@media(max-width:900px){ .pack-grid{grid-template-columns:1fr} }

/* ==========================================================================
   PARCOURS
   ========================================================================== */
.steps{position:relative;background:var(--blanc)}
.step{display:grid;grid-template-columns:7rem minmax(0,.9fr) minmax(0,1.3fr);gap:clamp(1rem,3vw,3.5rem);padding:clamp(1.8rem,3.2vw,2.8rem) 0;border-top:1px solid var(--border);align-items:start;max-width:72rem}
.step:last-child{border-bottom:1px solid var(--border)}
.step-n{font-family:var(--display);font-size:.85rem;font-weight:600;color:var(--rouge);letter-spacing:.08em;padding-top:.35rem}
.step h3{font-family:var(--display);font-size:clamp(1.2rem,1.9vw,1.7rem);font-weight:600;letter-spacing:-.025em;line-height:1.15}
.step p{font-size:1.02rem;line-height:1.65;color:var(--encre-2);max-width:var(--measure)}
@media(max-width:900px){ .step{grid-template-columns:1fr;gap:.7rem} }

/* ==========================================================================
   AVIS
   ========================================================================== */
.says{position:relative;background:var(--mint)}
.says-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(14,92,100,.16);margin-top:clamp(2.5rem,5vw,4rem)}
.say{background:var(--mint);padding:clamp(1.6rem,2.6vw,2.4rem);display:flex;flex-direction:column;gap:1.2rem}
.say p{font-size:1.02rem;line-height:1.5;color:var(--teal-dark);letter-spacing:-.01em}
.say-who{display:flex;align-items:center;gap:.75rem;margin-top:auto;padding-top:1rem;border-top:1px solid rgba(14,92,100,.16)}
.say-who img{width:38px;height:38px;object-fit:cover;border-radius:50%;filter:grayscale(1)}
.say-who b{font-size:.9rem;font-weight:600;color:var(--teal)}
.say-who span{font-size:.78rem;color:rgba(14,92,100,.7)}
.stars{color:var(--rouge);font-size:.85rem;letter-spacing:.15em}
@media(max-width:1000px){ .says-grid{grid-template-columns:1fr} }

/* ==========================================================================
   CTA FINALE + FOOTER
   ========================================================================== */
.cta{position:relative;background:var(--encre);color:#fff;overflow:hidden;padding-bottom:clamp(3rem,6vw,5rem)}
.cta .lines span{background:#fff}
.cta-in{position:relative;z-index:2;display:flex;flex-direction:column;gap:1.6rem;align-items:flex-start;max-width:min(50rem,100%)}
.cta-bg{position:absolute;inset:0;z-index:0;opacity:.16}
.cta-bg img{width:100%;height:100%;object-fit:cover;filter:grayscale(1)}
.foot{background:var(--encre);color:rgba(255,255,255,.62);position:relative}
.foot-top{display:grid;grid-template-columns:minmax(0,1.4fr) repeat(3,minmax(0,1fr));gap:2rem;padding-block:clamp(2.5rem,5vw,4rem);border-top:1px solid rgba(255,255,255,.12)}
.foot h4{color:#fff;font-size:.75rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;margin-bottom:1rem}
.foot a{display:block;font-size:.9rem;padding:.28rem 0;transition:color .3s}
.foot a:hover{color:var(--rouge-soft)}
.foot-p{font-size:.92rem;line-height:1.55;max-width:34ch}
.foot-bot{display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;font-size:.8rem;padding-block:1.4rem;border-top:1px solid rgba(255,255,255,.12)}
@media(max-width:900px){ .foot-top{grid-template-columns:1fr 1fr} }

@media(prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
  .fade-up{opacity:1;transform:none}
}

/* ==========================================================================
   ═══ EXTENSION — composants des pages intérieures ═══
   Même vocabulaire que l'accueil : angles vifs, filets d'1px, grilles à
   gouttière d'1px sur fond --border, Archivo en display, accent rouge
   réservé aux repères (numéros, puces, liens).
   ========================================================================== */

/* ---------- En-tête de page intérieure ---------- */
.pagehead{position:relative;background:var(--blanc);padding-top:calc(var(--nav-total) + clamp(2.5rem,6vh,4.5rem));padding-bottom:clamp(3rem,5.5vw,5rem);overflow:hidden}
.pagehead.is-ink{background:var(--encre);color:#fff}
.pagehead.is-ink .lines span{background:#fff}
.pagehead-grid{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.5rem,4vw,4rem);align-items:end}
.pagehead-copy{display:flex;flex-direction:column;gap:1.3rem;align-items:flex-start;max-width:min(46rem,100%)}
.pagehead h1{font-family:var(--display);font-size:clamp(2.1rem,4.8vw,4.2rem);font-weight:600;line-height:1;letter-spacing:-.035em;text-wrap:balance}
.pagehead h1 em{font-style:normal;color:var(--rouge)}
.pagehead-lead{font-size:clamp(1.05rem,1.3vw,1.38rem);line-height:1.55;color:var(--encre-2);max-width:min(38rem,100%)}
.pagehead.is-ink .pagehead-lead{color:rgba(255,255,255,.74)}
.pagehead-fig{position:relative;overflow:hidden;aspect-ratio:4/3}
.pagehead-fig img{width:100%;height:100%;object-fit:cover}
.btn-note{font-size:.78rem;color:var(--gris);letter-spacing:.02em}
.pagehead.is-ink .btn-note{color:rgba(255,255,255,.5)}
.btn-row{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center}
@media(max-width:900px){ .pagehead-grid{grid-template-columns:1fr} }

/* ---------- Fil d'Ariane ---------- */
.crumbs{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem;font-size:.76rem;letter-spacing:.04em;text-transform:uppercase;color:var(--gris);margin-bottom:1.6rem}
.crumbs a{border-bottom:1px solid transparent;transition:border-color .3s}
.crumbs a:hover{border-bottom-color:var(--rouge)}
.crumbs i{font-style:normal;opacity:.45}
.crumbs [aria-current]{color:var(--encre)}
.pagehead.is-ink .crumbs,.pagehead.is-ink .crumbs [aria-current]{color:rgba(255,255,255,.65)}

/* ---------- Sommaire ---------- */
.toc{border-top:1px solid var(--border);border-bottom:1px solid var(--border);padding:1.6rem 0}
.toc-lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gris);margin-bottom:1rem}
.toc ol{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:.1rem 2rem;counter-reset:t}
.toc li{counter-increment:t}
.toc a{display:flex;gap:.7rem;align-items:baseline;padding:.5rem 0;font-size:.95rem;border-bottom:1px solid transparent;transition:color .3s}
.toc a::before{content:counter(t,decimal-leading-zero);font-family:var(--display);font-size:.72rem;font-weight:600;color:var(--rouge);flex:none}
.toc a:hover{color:var(--rouge)}
@media(max-width:900px){ .toc ol{grid-template-columns:1fr} }

/* ---------- Corps rédactionnel ---------- */
/* Le conteneur reste large : tableaux et grilles doivent respirer.
   Ce sont les enfants qui LISENT qui sont contraints. */
.prose{max-width:100%;font-size:1.06rem;line-height:1.68;color:var(--encre-2)}
.prose > p,.prose > ul,.prose > ol,.prose > h3,.prose > h4,.prose > blockquote,
.prose > figure figcaption{max-width:var(--measure)}
.prose > * + *{margin-top:1.15rem}
/* (`.prose p{margin:0}` retiré : `p{margin:0}` global suffit, et la règle
   plus spécifique annulait l'espacement `.prose > * + *` des paragraphes) */
.prose strong,.prose b{font-weight:600;color:var(--encre)}
.prose a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35);transition:border-color .3s}
.prose a:hover{border-bottom-color:var(--rouge)}
.prose h3{font-family:var(--display);font-size:clamp(1.2rem,1.7vw,1.55rem);font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre);margin-top:2.8rem;text-wrap:balance}
.prose h4{font-family:var(--display);font-size:1.05rem;font-weight:600;color:var(--encre);margin-top:1.8rem}
.prose ul,.prose ol{margin:1.1rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.6rem}
.prose ul li{position:relative;padding-left:1.4rem}
.prose ul li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;background:var(--rouge)}
.prose ol{counter-reset:p}
.prose ol li{counter-increment:p;position:relative;padding-left:2.1rem}
.prose ol li::before{content:counter(p,decimal-leading-zero);position:absolute;left:0;top:.3em;font-family:var(--display);font-size:.75rem;font-weight:600;color:var(--rouge)}
.prose blockquote{margin:1.6rem 0 0;padding-left:1.2rem;border-left:2px solid var(--rouge);font-size:1.1rem;line-height:1.45;color:var(--encre);letter-spacing:-.015em}
.prose blockquote p + p{margin-top:.7rem}
.prose figure{margin:1.8rem 0 0}
.prose figure img{width:100%;height:auto}
.prose figcaption{font-size:.8rem;color:var(--gris);margin-top:.6rem}
.prose .sr-only,.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.prose-lead{max-width:var(--measure);font-size:clamp(1.12rem,1.5vw,1.4rem);line-height:1.45;letter-spacing:-.018em;color:var(--encre);font-weight:500}

/* ---------- Tableaux ---------- */
.tablewrap{overflow-x:auto;margin-top:1.8rem;margin-bottom:.4rem;border-top:1px solid var(--border)}
.dtable{width:100%;max-width:min(58rem,100%);border-collapse:collapse;font-size:.94rem;min-width:32rem}
.dtable td,.dtable th{overflow-wrap:break-word;hyphens:auto}
.dtable th,.dtable td{text-align:left;padding:.95rem 1.2rem .95rem 0;border-bottom:1px solid var(--border);vertical-align:top;line-height:1.5}
.dtable thead th{font-size:.7rem;text-transform:uppercase;letter-spacing:.09em;color:var(--gris);font-weight:600;padding-top:.9rem}
.dtable tbody th{font-weight:500;color:var(--encre);padding-right:1.5rem}
.dtable .hi{color:var(--rouge);font-weight:500}
.dtable .hi a{color:inherit;border-bottom:1px solid rgba(233,72,47,.35)}
.dtable td{color:var(--encre-2)}

/* ---------- Grille de cartes numérotées (constats, exclusions) ---------- */
.cards{display:grid;gap:1px;background:var(--border);margin-top:clamp(2.2rem,4vw,3.2rem)}
.cards.is-3{grid-template-columns:repeat(3,1fr)}
.cards.is-2{grid-template-columns:repeat(2,1fr)}
.cards.is-4{grid-template-columns:repeat(4,1fr)}
.card{background:var(--blanc);padding:clamp(1.6rem,2.5vw,2.3rem);display:flex;flex-direction:column;gap:.8rem;transition:background .45s var(--ease)}
.card:hover{background:var(--rose-bg)}
.card h3{font-family:var(--display);font-size:clamp(1.05rem,1.35vw,1.28rem);font-weight:600;letter-spacing:-.02em;line-height:1.22}
.card p{font-size:.98rem;line-height:1.6;color:var(--encre-2)}
.card-out{font-size:.8rem;color:var(--rouge);margin-top:auto;padding-top:.7rem}
.on-off .card{background:var(--blanc)}
.on-off .card:hover{background:var(--rose-bg)}
.on-ink .cards{background:rgba(255,255,255,.14)}
.on-ink .card{background:var(--encre);color:#fff}
.on-ink .card:hover{background:#1c1c20}
.on-ink .card p{color:rgba(255,255,255,.7)}
@media(max-width:1100px){ .cards.is-4{grid-template-columns:repeat(2,1fr)} }
@media(max-width:1000px){ .cards.is-3{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .cards.is-2,.cards.is-3,.cards.is-4{grid-template-columns:1fr} }

/* ---------- Duo « sur votre site / sur Google » ---------- */
.duo{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--border);margin-top:clamp(2rem,4vw,3rem)}
.duo-col{background:var(--blanc);padding:clamp(1.6rem,2.7vw,2.5rem);display:flex;flex-direction:column;gap:1.3rem}
.duo-col.is-teal{background:var(--mint)}
.duo-lab{display:inline-block;align-self:flex-start;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;color:var(--rouge)}
.duo-col.is-teal .duo-lab{color:var(--teal)}
.duo ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1.2rem}
.duo li{position:relative;padding-left:1.3rem;font-size:.98rem;line-height:1.6;max-width:34rem}
.duo li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--rouge)}
.duo-col.is-teal li::before{background:var(--teal)}
.duo li b{display:block;font-weight:600;color:var(--encre);margin-bottom:.18rem}
.duo-link{margin-top:auto;padding-top:1rem;border-top:1px solid var(--border);font-size:.86rem;font-weight:500;color:var(--rouge)}
.duo-col.is-teal .duo-link{border-top-color:rgba(14,92,100,.2);color:var(--teal)}
.duo-link:hover{text-decoration:underline}
@media(max-width:800px){ .duo{grid-template-columns:1fr} }

/* ---------- Calcul de rentabilité ---------- */
.calc{margin-top:clamp(2rem,4vw,3rem);border-top:1px solid rgba(255,255,255,.16)}
.calc-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr) minmax(7rem,auto);gap:1rem 2rem;padding:1.25rem 0;border-bottom:1px solid rgba(255,255,255,.16);align-items:baseline;max-width:64rem}
.calc-k{font-weight:500;font-size:1.02rem}
.calc-v{font-size:.9rem;color:rgba(255,255,255,.62);line-height:1.55;max-width:30rem}
.calc-t{font-family:var(--display);font-size:1.35rem;font-weight:600;letter-spacing:-.02em;text-align:right;font-variant-numeric:tabular-nums}
.calc-res{padding:1.6rem 0 0;display:flex;flex-direction:column;gap:.9rem;align-items:flex-start}
.calc-res p{max-width:34rem;font-size:clamp(1.15rem,1.9vw,1.6rem);line-height:1.3;letter-spacing:-.02em;font-weight:500}
.calc-res strong{color:var(--rouge-soft);font-weight:600}
.calc-note{font-size:.88rem!important;color:rgba(255,255,255,.55);font-weight:400!important;line-height:1.6!important;max-width:var(--measure)!important}
@media(max-width:700px){ .calc-row{grid-template-columns:1fr auto} .calc-v{grid-column:1/-1;order:3} }

/* ---------- FAQ ---------- */
.faq{border-top:1px solid var(--border);margin-top:clamp(2rem,4vw,3rem)}
.faq details{border-bottom:1px solid var(--border)}
.faq summary{list-style:none;cursor:pointer;display:flex;gap:1.5rem;align-items:flex-start;justify-content:space-between;padding:1.4rem 0;font-family:var(--display);font-size:clamp(1rem,1.3vw,1.18rem);font-weight:600;letter-spacing:-.02em;line-height:1.3;transition:color .3s}
.faq summary::-webkit-details-marker{display:none}
.faq summary:hover{color:var(--rouge)}
.faq summary::after{content:"";flex:none;width:12px;height:12px;margin-top:.35rem;background:var(--rouge);
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0v12M0 6h12' stroke='%23000' stroke-width='1.6'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M6 0v12M0 6h12' stroke='%23000' stroke-width='1.6'/%3E%3C/svg%3E") center/contain no-repeat;
  transition:transform .35s var(--ease)}
.faq details[open] summary::after{transform:rotate(135deg)}
.faq-body{padding-bottom:1.5rem;font-size:1.02rem;line-height:1.66;color:var(--encre-2);max-width:min(48rem,100%)}
.faq-body > * + *{margin-top:.8rem}
.faq-body ul{list-style:none;margin:.8rem 0 0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.faq-body li{position:relative;padding-left:1.25rem}
.faq-body li::before{content:"";position:absolute;left:0;top:.62em;width:5px;height:5px;background:var(--rouge)}
.faq-body a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.on-off .faq details{border-color:#e6dedc}
.on-ink .faq{border-top-color:rgba(255,255,255,.16)}
.on-ink .faq details{border-bottom-color:rgba(255,255,255,.16)}
.on-ink .faq-body{color:rgba(255,255,255,.7)}

/* ---------- Étiquettes de requêtes ---------- */
.chips{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1.4rem;list-style:none;padding:0}
.chips li{border:1px solid var(--border);padding:.5rem .8rem;font-size:.85rem;background:var(--blanc);transition:.35s var(--ease)}
.chips li:hover{border-color:var(--rouge);color:var(--rouge)}
.chips em{font-style:normal;color:var(--gris)}
.on-off .chips li{background:var(--rose-bg);border-color:#e6dedc}

/* ---------- Liste de liens (métiers voisins, index) ---------- */
.linklist{list-style:none;margin:clamp(1.6rem,3vw,2.4rem) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.linklist.is-2{grid-template-columns:repeat(2,1fr)}
.linklist.is-4{grid-template-columns:repeat(4,1fr)}
.linklist li{background:var(--blanc);display:flex}
.linklist li > a{flex:1}
.on-off .linklist li{background:var(--rose-bg)}
.linklist a{display:block;position:relative;padding:1rem 2.6rem 1rem 1.1rem;font-size:.94rem;line-height:1.5;transition:background .35s var(--ease),color .35s var(--ease)}
.linklist a b{font-weight:600}
.linklist a::after{content:"↗";position:absolute;right:1.1rem;top:1rem;font-size:.8rem;opacity:0;transform:translate(-4px,4px);transition:.35s var(--ease);color:var(--rouge)}
.linklist a:hover{background:var(--encre);color:#fff}
.linklist a:hover::after{opacity:1;transform:none;color:var(--rouge-soft)}
@media(max-width:1100px){ .linklist.is-4{grid-template-columns:repeat(2,1fr)} }
@media(max-width:1000px){ .linklist{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .linklist,.linklist.is-2,.linklist.is-4{grid-template-columns:1fr} }

/* ---------- Encart de franchise ---------- */
.honest{margin-top:clamp(2rem,4vw,3rem)}
.honest b{font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.02em}
.on-ink .honest b{color:#fff}
.honest p{max-width:var(--measure);font-size:1rem;line-height:1.62;color:var(--encre-2)}
.on-ink .honest p{color:rgba(255,255,255,.7)}

/* ---------- Encart d'appel intercalé ---------- */
.midcta{margin:2.4rem 0;background:var(--mint);padding:clamp(1.3rem,2.2vw,1.9rem);display:flex;flex-wrap:wrap;gap:1.1rem;align-items:center;justify-content:space-between}
.midcta p{font-size:1rem;line-height:1.6;color:var(--teal-dark);max-width:var(--measure)}
.midcta b{font-weight:600;color:var(--teal)}

/* ---------- Article : mise en page et méta ---------- */
.artmeta{display:flex;flex-wrap:wrap;gap:.5rem .9rem;font-size:.78rem;text-transform:uppercase;letter-spacing:.05em;color:var(--gris)}
.artmeta span{display:flex;align-items:center;gap:.45rem}
.artmeta span::before{content:"";width:4px;height:4px;background:var(--rouge)}
.artgrid{display:grid;grid-template-columns:minmax(0,1fr) 17rem;gap:clamp(2rem,5vw,5rem);align-items:start}
.artside{position:sticky;top:100px;display:flex;flex-direction:column;gap:2rem;font-size:.9rem}
.artside h2{font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gris);font-weight:600;margin-bottom:.9rem}
.artside ol,.artside ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.1rem}
.artside a{display:block;padding:.42rem 0;border-bottom:1px solid var(--border);transition:color .3s,padding-left .3s}
.artside a:hover{color:var(--rouge);padding-left:.35rem}
.artside .tags{flex-direction:row;flex-wrap:wrap;gap:.4rem}
.artside .tags a{border:1px solid var(--border);padding:.35rem .65rem;font-size:.78rem}
.artside .tags a:hover{border-color:var(--rouge);padding-left:.65rem}
.artbody > section{scroll-margin-top:calc(var(--nav-total) + 1rem)}
.artbody > section + section{margin-top:clamp(2.6rem,5vw,4rem);padding-top:clamp(2.6rem,5vw,4rem);border-top:1px solid var(--border)}
.artbody h2{max-width:24ch;font-family:var(--display);font-size:clamp(1.5rem,2.6vw,2.15rem);font-weight:600;letter-spacing:-.03em;line-height:1.12;margin-bottom:1.5rem;text-wrap:balance}
@media(max-width:1000px){ .artgrid{grid-template-columns:1fr} .artside{position:static;flex-direction:row;flex-wrap:wrap;gap:2rem} .artside > div{flex:1 1 14rem} }

/* ---------- Jauge de lecture ---------- */
.readbar{position:fixed;top:0;left:0;height:2px;background:var(--rouge);width:0;z-index:300;transition:width .1s linear}

/* ---------- Blog ---------- */
.blogtools{display:flex;flex-wrap:wrap;gap:1rem;align-items:center;justify-content:space-between;padding-block:1.3rem;border-top:1px solid var(--border);border-bottom:1px solid var(--border);margin-top:clamp(2rem,4vw,3rem)}
.filters{display:flex;flex-wrap:wrap;gap:.4rem}
.filtre{background:none;border:1px solid var(--border);padding:.5rem .85rem;font:inherit;font-size:.84rem;cursor:pointer;color:var(--encre-2);transition:.3s var(--ease)}
.filtre:hover{border-color:var(--encre)}
.filtre.is-on,.filtre[aria-pressed="true"]{background:var(--encre);border-color:var(--encre);color:#fff}
.searchbox{display:flex;align-items:center;gap:.6rem;border:1px solid var(--border);padding:.5rem .8rem;min-width:min(20rem,100%);background:var(--blanc)}
.searchbox input{border:0;background:none;font:inherit;font-size:.9rem;width:100%;outline:none;color:var(--encre)}
.searchbox svg{width:15px;height:15px;flex:none;color:var(--gris)}
.bloggrid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--border);border-bottom:1px solid var(--border)}
.post{background:var(--rose-bg);display:flex;flex-direction:column;transition:background .4s var(--ease)}
.post:hover{background:var(--blanc)}
.post-img{aspect-ratio:16/10;overflow:hidden;background:var(--saumon)}
.post-img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.post:hover .post-img img{transform:scale(1.05)}
.post-in{padding:1.3rem;display:flex;flex-direction:column;gap:.65rem;flex:1}
.post h3{font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.022em;line-height:1.22}
.post p{font-size:.9rem;line-height:1.48;color:var(--encre-2)}
.post-meta{margin-top:auto;padding-top:.9rem;font-size:.74rem;text-transform:uppercase;letter-spacing:.05em;color:var(--gris);display:flex;gap:.7rem;align-items:center}
.post-meta em{font-style:normal;color:var(--rouge)}
.blogcount{font-size:.82rem;color:var(--gris)}
.blogvide{padding:3rem 0;text-align:center;color:var(--gris)}
@media(max-width:1000px){ .bloggrid{grid-template-columns:repeat(2,1fr)} }
@media(max-width:640px){ .bloggrid{grid-template-columns:1fr} }

/* ---------- Formulaires ---------- */
.formsec{position:relative;background:var(--encre);color:#fff}
.formsec .lines span{background:#fff}
.formgrid{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,4vw,4rem);align-items:start}
.formcard{background:var(--blanc);color:var(--encre);padding:clamp(1.5rem,3vw,2.6rem)}
.fstep{display:flex;flex-direction:column;gap:1.1rem}
.fstep[hidden]{display:none}
.flabel{font-family:var(--display);font-size:clamp(1.1rem,1.6vw,1.4rem);font-weight:600;letter-spacing:-.025em;line-height:1.2}
.fhint{font-size:.85rem;color:var(--gris)}
.fopts{display:grid;gap:.5rem}
.fopt{position:relative;display:block}
.fopt input{position:absolute;opacity:0;pointer-events:none}
.fopt span{display:flex;align-items:center;gap:.7rem;border:1px solid var(--border);padding:.85rem 1rem;font-size:.94rem;cursor:pointer;transition:.3s var(--ease)}
.fopt span::before{content:"";flex:none;width:9px;height:9px;border:1px solid var(--gris-clair);transition:.3s}
.fopt input:checked + span{border-color:var(--rouge);background:var(--rose-bg)}
.fopt input:checked + span::before{background:var(--rouge);border-color:var(--rouge)}
.fopt input:focus-visible + span{outline:2px solid var(--rouge);outline-offset:2px}
.field{display:flex;flex-direction:column;gap:.4rem}
.field label{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);font-weight:600}
.field input,.field select,.field textarea{font:inherit;font-size:.95rem;padding:.8rem .9rem;border:1px solid var(--border);background:var(--blanc);color:var(--encre);outline:none;min-width:0;max-width:100%;transition:border-color .3s}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--rouge)}
.field select{width:100%;min-width:0;max-width:100%}
.frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.fnav{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;padding-top:.4rem}
.fprog{display:flex;gap:.3rem;margin-bottom:.4rem}
.fprog i{flex:1;height:2px;background:var(--border)}
.fprog i.is-on{background:var(--rouge)}
.fnote{font-size:.78rem;color:var(--gris)}
.formaside{display:flex;flex-direction:column;gap:1.4rem;align-items:flex-start}
.formaside ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.8rem}
.formaside li{position:relative;padding-left:1.25rem;font-size:.98rem;line-height:1.55;color:rgba(255,255,255,.78)}
.formaside li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--rouge)}
@media(max-width:900px){ .formgrid{grid-template-columns:1fr} .frow{grid-template-columns:1fr} }

/* ---------- Recherche métier (combobox) ---------- */
.rech{position:relative;max-width:min(40rem,100%);margin-top:1.6rem}
.rech-liste{list-style:none;margin:.4rem 0 0;padding:0;border:1px solid var(--border);background:var(--blanc);max-height:20rem;overflow-y:auto;position:absolute;left:0;right:0;z-index:20}
.rech-liste:empty{display:none}
.rech-liste li{border-bottom:1px solid var(--border)}
.rech-liste li:last-child{border-bottom:0}
.rech-liste a{display:block;padding:.7rem .9rem;font-size:.93rem}
.rech-liste li:hover a,.rech-liste [aria-selected="true"] a{background:var(--rose-bg);color:var(--rouge)}
.rech-aide{font-size:.82rem;color:var(--gris);margin-top:.6rem}
.rech-vide{padding:.9rem;font-size:.9rem;color:var(--gris)}

/* ---------- Simulateur ---------- */
.simu{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:1px;background:var(--border);margin-top:clamp(2rem,4vw,3rem);border-block:1px solid var(--border)}
.simu-form,.simu-recap{background:var(--blanc);padding:clamp(1.5rem,2.8vw,2.4rem)}
.simu-recap{background:var(--rose-bg);position:sticky;top:90px;align-self:start;display:flex;flex-direction:column;gap:1rem}
.simu-bloc{display:flex;flex-direction:column;gap:1rem}
.simu-bloc + .simu-bloc{margin-top:2rem;padding-top:2rem;border-top:1px solid var(--border)}
.simu-tot{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding-top:1rem;border-top:1px solid var(--border)}
.simu-tot b{font-family:var(--display);font-size:1.9rem;font-weight:600;letter-spacing:-.03em;font-variant-numeric:tabular-nums}
.simu-line{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem;padding:.4rem 0;border-bottom:1px dotted var(--border)}
.simu-line span:last-child{font-variant-numeric:tabular-nums;font-weight:500}
.range{width:100%;accent-color:var(--rouge)}
@media(max-width:900px){ .simu{grid-template-columns:1fr} .simu-recap{position:static} }

/* ---------- Section : variantes de fond ---------- */
.on-white{background:var(--blanc)}
.on-off{background:var(--rose-bg)}
.on-mint{background:var(--mint)}
.on-mint .h2,.on-mint h2{color:var(--teal-dark)}
.on-ink{background:var(--encre);color:#fff}
.on-ink .lines span{background:#fff}
.on-ink .t-md,.on-ink p{color:rgba(255,255,255,.72)}
.on-ink .h2,.on-ink h2,.on-ink h3{color:#fff}
.sec{position:relative}

/* ---------- En-tête de section réutilisable ---------- */
.shead{display:flex;flex-direction:column;gap:1.15rem;align-items:flex-start;max-width:min(44rem,100%)}
.shead .lead{max-width:var(--measure);font-size:clamp(1.05rem,1.2vw,1.22rem);line-height:1.55;color:var(--encre-2)}
.on-ink .shead .lead{color:rgba(255,255,255,.7)}
.on-mint .shead .lead{color:var(--teal-dark)}

/* ---------- Corps de section : typographie du contenu repris ---------- */
.secbody{margin-top:clamp(1.8rem,3.4vw,2.8rem)}
.secbody > p{max-width:var(--measure);font-size:1.06rem;line-height:1.68;color:var(--encre-2)}
.secbody > p + p{margin-top:1.05rem}
.secbody > .duo-lab{margin-top:2rem}
.secbody > h3{font-family:var(--display);font-size:clamp(1.15rem,1.6vw,1.5rem);font-weight:600;letter-spacing:-.02em;margin-top:2rem}
.secbody > ul:not([class]),.secbody > ol:not([class]){max-width:var(--measure);list-style:none;margin:1.15rem 0 0;padding:0;display:flex;flex-direction:column;gap:.65rem}
.secbody > ul:not([class]) > li{position:relative;padding-left:1.4rem;font-size:1.04rem;line-height:1.6}
.secbody > ul:not([class]) > li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;background:var(--rouge)}
.secbody strong,.secbody b{font-weight:600;color:var(--encre)}
.secbody a:not(.btn):not(.duo-link):not(.linklist a){color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.on-ink .secbody > p{color:rgba(255,255,255,.72)}
.on-ink .secbody strong,.on-ink .secbody b{color:#fff}
.fnote{font-size:.86rem;line-height:1.6;color:var(--gris);max-width:var(--measure-sm);margin-top:1.5rem}
.on-ink .fnote{color:rgba(255,255,255,.5)}
/* `.on-ink .secbody strong` (0,2,1) l'emportait sur `.calc-res strong` (0,1,1)
   et repeignait le chiffre clé en blanc. On remonte la spécificité. */
.secbody .calc-res strong{color:var(--rouge-soft)}
.cta-back{display:inline-flex;align-items:center;font-size:.86rem;color:rgba(255,255,255,.6);border-bottom:1px solid transparent;transition:.3s}
.cta-back:hover{color:#fff;border-bottom-color:var(--rouge)}
.fstepnum{font-size:.75rem;text-transform:uppercase;letter-spacing:.07em;color:var(--gris);margin-bottom:1.2rem}
.fopt span a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.sidecta{background:var(--encre);color:#fff;padding:1.3rem;display:flex;flex-direction:column;gap:.9rem;align-items:flex-start}
.sidecta p{font-size:.9rem;line-height:1.5;color:rgba(255,255,255,.75)}
.sidecta b{color:#fff;font-weight:600}
.sidetel{font-size:.82rem;color:rgba(255,255,255,.6)}
.sidetel:hover{color:var(--rouge-soft)}
.artside ul li a b{display:block;font-weight:600;color:var(--encre)}
.artside ul li a span{display:block;font-size:.8rem;color:var(--gris)}

/* ---------- Encadré intercalé dans un article ---------- */
.note.is-alert{border-left-color:var(--rouge-dark)}
.note.is-plus{border-left-color:var(--teal)}
.note > b{font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.note p{max-width:var(--measure);font-size:1rem;line-height:1.62;color:var(--encre-2)}
.note p + p{margin-top:.6rem}
.note a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.note.is-plus a{color:var(--teal);border-bottom-color:rgba(14,92,100,.35)}
.sideshare{display:flex;flex-wrap:wrap;gap:.4rem}
.sideshare a{border:1px solid var(--border);padding:.35rem .65rem;font-size:.78rem;display:inline-block}
.sideshare a:hover{border-color:var(--rouge);color:var(--rouge);padding-left:.65rem}
.sidetout{display:inline-block;margin-top:.6rem;font-size:.86rem;font-weight:500;color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.artside .prose,.artside p{font-size:.88rem;line-height:1.5}

/* ---------- Bande de faits sous l'en-tête de page ---------- */
.headfacts{list-style:none;margin:clamp(2rem,4vw,3rem) 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1px;background:var(--border);border-top:1px solid var(--border);border-bottom:1px solid var(--border)}
.headfacts li{background:var(--blanc);padding:1.1rem 1.2rem;display:flex;flex-direction:column;gap:.3rem}
.headfacts b{font-family:var(--display);font-size:.98rem;font-weight:600;letter-spacing:-.015em}
.headfacts span{font-size:.85rem;line-height:1.4;color:var(--gris)}

/* ==========================================================================
   ═══ COMPOSANTS DES PAGES SUR-MESURE ═══
   Les noms de classe viennent de l'ancien site (ils servent de crochets aux
   scripts conservés : simulateur, recherche, blog). Aucune règle d'origine
   n'est reprise : tout est redessiné avec les jetons du nouveau système.
   ========================================================================== */

/* ---- utilitaires hérités ---- */
.center{text-align:left}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.lienfort{color:var(--rouge);font-weight:500;border-bottom:1px solid rgba(233,72,47,.35)}
.lienfort:hover{border-bottom-color:var(--rouge)}
.lienbouton{display:inline-block;border:1px solid var(--border);padding:.6rem 1rem;font-size:.9rem;transition:.3s var(--ease)}
.lienbouton:hover{background:var(--encre);border-color:var(--encre);color:#fff}
.plus,.moins{font-weight:600}
.plus{color:var(--teal)} .moins{color:var(--rouge)}
.card__ico,.pagehead__ico,.zone-list__ico,.canal__ico,.urgence__ico,.fam__puce,.mise__puce{display:none}
.facts__note,.fams__credit,.art__source,.market__src,.plan__note,.pack__note,.simu__aide,.recap__note,
.rech__note,.faqnav__aide,.dureewrap__note,.pacte__note{font-size:.82rem;line-height:1.5;color:var(--gris);margin-top:1rem}
.on-ink .facts__note,.on-ink .plan__note,.on-ink .pack__note{color:rgba(255,255,255,.5)}

/* ---- listes à coches ---- */
.check{list-style:none;margin:1.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.check.check--2col{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(17rem,100%),1fr));gap:.6rem 2rem}
.check li{position:relative;padding-left:1.35rem;font-size:.98rem;line-height:1.6}
.check li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--teal)}
.check--non li::before{background:var(--rouge)}
@media(max-width:640px){ .check.check--2col{grid-template-columns:1fr} }

/* ---- blocs de prix ---- */
.prixbloc,.pricecard{display:flex;flex-direction:column;gap:.35rem;padding:1.2rem 0;border-top:1px solid var(--border)}
.prixbloc__val,.plan__amount{font-family:var(--display);font-size:clamp(2rem,3.4vw,3rem);font-weight:600;letter-spacing:-.03em;line-height:1;color:var(--rouge)}
.prixbloc__unite,.plan__from,.pricecard__label{font-size:.85rem;color:var(--gris);text-transform:uppercase;letter-spacing:.06em}
.prixbloc__ref{text-decoration:line-through;color:var(--gris-clair);font-size:1rem}
.prixbloc__eco,.plan__save{font-size:.85rem;color:var(--teal);font-weight:500}
.on-ink .prixbloc,.on-ink .pricecard{border-top-color:rgba(255,255,255,.16)}
.on-ink .prixbloc__val,.on-ink .plan__amount{color:var(--rouge-soft)}

/* ---- comparatif marché ---- */
.market{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:1px;background:var(--border);margin-top:2rem}
.market__col{background:var(--blanc);padding:1.4rem;display:flex;flex-direction:column;gap:.4rem}
.market__col--us{background:var(--mint)}
.market__who{font-weight:600;font-size:.98rem}
.market__price{font-family:var(--display);font-size:1.7rem;font-weight:600;letter-spacing:-.03em}
.market__unit{font-size:.82rem;color:var(--gris)}
.market__flag{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;color:var(--rouge);font-weight:600}
.on-ink .market{background:rgba(255,255,255,.14)}
.on-ink .market__col{background:var(--encre)}
.on-ink .market__col--us{background:#1c1c20}

/* ---- questions/réponses en colonnes ---- */
.choice{background:var(--blanc);border:1px solid var(--border);padding:1.3rem;display:flex;flex-direction:column;gap:.6rem}
.choice--best{border-color:var(--rouge)}
.choice__q{font-family:var(--display);font-weight:600;font-size:1.05rem;letter-spacing:-.02em}
.choice__a{font-size:.93rem;line-height:1.5;color:var(--encre-2)}
.choice__reco,.choice__flag{font-size:.78rem;text-transform:uppercase;letter-spacing:.07em;color:var(--rouge);font-weight:600}
.detail{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(0,1fr);gap:2rem;margin-top:1.6rem}
.detail__aside{background:var(--rose-bg);padding:1.3rem;font-size:.9rem;line-height:1.5}
.detail__h3{font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em;margin-top:1.4rem}
@media(max-width:900px){ .detail{grid-template-columns:1fr} }

/* ---- familles de métiers ---- */
.fams,.famgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));gap:1px;background:var(--border);margin-top:2.5rem}
.fam,.famcard{background:var(--blanc);display:flex;flex-direction:column}
.fam__media,.famcard__media{aspect-ratio:16/10;overflow:hidden;background:var(--saumon)}
.fam__media img,.famcard__media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.fam:hover .fam__media img{transform:scale(1.05)}
.fam__corps,.famcard__corps{padding:1.4rem;display:flex;flex-direction:column;gap:.7rem;flex:1}
.fam__badge{align-self:flex-start;color:var(--teal);font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600}
.fam__phrase{font-size:.95rem;line-height:1.5;color:var(--encre-2);font-style:italic}
.fam__duo{display:grid;gap:1rem;margin-top:.4rem}
.fam__bloc{display:flex;flex-direction:column;gap:.4rem}
.fam__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--rouge)}
.fam__label--ok,.fam__bloc--ok .fam__label{color:var(--teal)}
.fam__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.4rem;font-size:.9rem;line-height:1.45}
.fam__liste li{position:relative;padding-left:1.15rem}
.fam__liste li::before{content:"";position:absolute;left:0;top:.6em;width:5px;height:5px;background:var(--rouge)}
.fam__bloc--ok .fam__liste li::before{background:var(--teal)}
.fam__metiers{font-size:.86rem;color:var(--gris);line-height:1.5}
.fam__pied,.fam__pages{margin-top:auto;padding-top:1rem;border-top:1px solid var(--border);font-size:.86rem}
.fam__item{display:flex;gap:.6rem;font-size:.9rem;line-height:1.45}
.fam__garde{font-size:.86rem;color:var(--gris)}

/* ---- index des métiers ---- */
.index{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:2rem;margin-top:2.5rem}
.index__col h3{font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.015em;padding-bottom:.6rem;border-bottom:1px solid var(--border);margin-bottom:.6rem}
.index__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.index__col a{display:block;padding:.32rem 0;font-size:.9rem;transition:color .3s,padding-left .3s}
.index__col a:hover{color:var(--rouge);padding-left:.3rem}
.anchors{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1.4rem}
.anchors a{border:1px solid var(--border);padding:.45rem .8rem;font-size:.85rem}
.anchors a:hover{border-color:var(--rouge);color:var(--rouge)}

/* ---- recherche d'activité ---- */
.rech,.rechsec,.faqsearch{position:relative;max-width:min(40rem,100%);margin-top:1.4rem}
/* Cette règle groupait à tort les CHAMPS de saisie avec la liste déroulante :
   les inputs héritaient de `position:absolute` et `display:none` et
   disparaissaient. Les deux rôles sont désormais séparés. */
.rech__liste{list-style:none;margin:0;padding:0;position:absolute;left:0;right:0;top:100%;
  z-index:30;background:var(--blanc);border:1px solid var(--border);border-top:0;
  max-height:22rem;overflow-y:auto;display:none}
.rech input,.faqsearch input,.rechsec input{display:block;width:100%;box-sizing:border-box;
  font:inherit;font-size:1rem;padding:.9rem 1rem;border:1px solid var(--border);
  background:var(--blanc);color:var(--encre);outline:none;transition:border-color .3s var(--ease)}
.rech input:focus,.faqsearch input:focus,.rechsec input:focus{border-color:var(--rouge)}
.rech input::placeholder,.faqsearch input::placeholder{color:var(--gris-clair)}
.rech.is-open .rech__liste{display:block}
.rech__liste li{border-bottom:1px solid var(--border)}
.rech__liste li:last-child{border-bottom:0}
.rech__liste a{display:flex;flex-direction:column;gap:.15rem;padding:.7rem .95rem;font-size:.92rem}
.rech__liste a b{font-weight:600}
.rech__liste a span{font-size:.78rem;color:var(--gris)}
.rech__liste li:hover a,.rech__liste [aria-selected="true"] a{background:var(--rose-bg);color:var(--rouge)}
.rech__vide{padding:.9rem .95rem;font-size:.9rem;color:var(--gris)}
.rechsec__exemples{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:.9rem;font-size:.85rem;color:var(--gris)}

/* ---- page FAQ ---- */
.faqpage{display:grid;grid-template-columns:15rem minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:start;margin-top:2rem}
.faqnav{position:sticky;top:100px}
.faqnav__titre{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gris);font-weight:600;margin-bottom:.8rem}
.faqnav ul{list-style:none;margin:0;padding:0}
.faqnav a{display:block;padding:.4rem 0;font-size:.9rem;border-bottom:1px solid var(--border)}
.faqnav a:hover{color:var(--rouge)}
.faqcat{margin-bottom:2.6rem}
.faqcat__head h2{font-family:var(--display);font-size:clamp(1.3rem,2.2vw,1.8rem);font-weight:600;letter-spacing:-.025em}
.faqcat__head p{font-size:.95rem;color:var(--gris);margin-top:.3rem;margin-bottom:1rem}
.faqcat details{border-bottom:1px solid var(--border)}
.faqcat summary{list-style:none;cursor:pointer;padding:1.1rem 0;font-family:var(--display);font-weight:600;font-size:1.02rem;letter-spacing:-.02em}
.faqcat summary::-webkit-details-marker{display:none}
.faqcat summary:hover{color:var(--rouge)}
@media(max-width:900px){ .faqpage{grid-template-columns:1fr} .faqnav{position:static} }

/* ---- blog ---- */
.filtre{background:none;border:1px solid var(--border);padding:.5rem .85rem;font:inherit;font-size:.84rem;cursor:pointer;color:var(--encre-2);transition:.3s var(--ease)}
.filtre:hover{border-color:var(--encre)}
.filtre.is-actif,.filtre[aria-pressed="true"]{background:var(--encre);border-color:var(--encre);color:#fff}
.post{background:var(--rose-bg);display:flex;flex-direction:column;height:100%;transition:background .4s var(--ease)}
.post:hover{background:var(--blanc)}
.post__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.post:hover .post__img img{transform:scale(1.05)}
.post__txt h3{font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.02em;line-height:1.25}
.blogvide,.faqpage__vide{padding:3rem 0;color:var(--gris)}

/* ---- réalisations ---- */
.work__did{font-size:.88rem;color:var(--gris);line-height:1.5}
.shot__bar{display:flex;gap:.3rem;align-items:center}
.shot__bar::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--saumon);box-shadow:11px 0 0 var(--saumon),22px 0 0 var(--saumon)}
.w45{width:45%}.w50{width:50%}.w55{width:55%}.w60{width:60%}.w70{width:70%}.w75{width:75%}.w80{width:80%}

/* ---- avis ---- */
.review p{font-size:.98rem;line-height:1.55;color:var(--encre-2)}
.review__who{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);display:flex;align-items:center;gap:.7rem;font-size:.88rem}
.review__av{width:36px;height:36px;border-radius:50%;object-fit:cover;filter:grayscale(1)}
.stars{color:var(--rouge);letter-spacing:.14em;font-size:.85rem}
.satisfaction-badge{font-size:.78rem;color:var(--gris)}

/* ---- notre mission ---- */
.portrait,.portrait__vide{aspect-ratio:3/4;background:var(--saumon);overflow:hidden}
.portrait img{width:100%;height:100%;object-fit:cover}
.signature{font-family:var(--display);font-weight:600;margin-top:1.6rem}
.cycle{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;margin-top:1.6rem}

/* ---- contact ---- */
.contactpage{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,.8fr);gap:clamp(2rem,4vw,4rem);align-items:start}
.contact__titre{font-family:var(--display);font-size:clamp(1.3rem,2vw,1.7rem);font-weight:600;letter-spacing:-.025em}
.contact__chapo{font-size:.98rem;line-height:1.55;color:var(--encre-2);margin-top:.5rem}
.contact__sujets{display:flex;flex-wrap:wrap;gap:.4rem;margin:1rem 0}
.canal{display:flex;flex-direction:column;gap:.35rem;padding:1.1rem 0;border-top:1px solid var(--border)}
.canal--fort{border-top-color:var(--rouge)}
.canal__note{font-size:.85rem;color:var(--gris)}
.infobloc{background:var(--rose-bg);padding:1.2rem;margin-top:1.2rem}
.infobloc--soft{background:var(--mint)}
.infobloc__titre{font-family:var(--display);font-weight:600;font-size:1rem;margin-bottom:.5rem}
.infolist{display:grid;grid-template-columns:auto 1fr;gap:.4rem 1rem;font-size:.9rem}
.infolist__k{color:var(--gris)}
.urgence{border-left:2px solid var(--rouge);padding-left:1.1rem;margin-top:1.4rem}
.raccourcis{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem}
.ambiance,.ambiance--aside{overflow:hidden;margin-top:1.4rem}
.ambiance img{width:100%;height:100%;object-fit:cover}
@media(max-width:900px){ .contactpage{grid-template-columns:1fr} }

/* ---- simulateur de devis ---- */
.simu{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:1px;background:var(--border);margin-top:2.5rem;border-block:1px solid var(--border)}
.simu__main{background:var(--blanc);padding:clamp(1.4rem,2.6vw,2.2rem);display:flex;flex-direction:column;gap:2rem}
.simu__aside{background:var(--rose-bg);padding:clamp(1.4rem,2.6vw,2.2rem);position:sticky;top:90px;align-self:start}
.simu__step{border:0;padding:0;margin:0;display:flex;flex-direction:column;gap:.8rem}
.simu__step legend{font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.02em;padding:0;display:flex;align-items:baseline;gap:.6rem}
.simu__n{font-size:.75rem;color:var(--rouge);font-weight:600}
.simu__range{width:100%;accent-color:var(--rouge);margin-top:.4rem}
.simu__step label{display:flex;gap:.7rem;align-items:flex-start;border:1px solid var(--border);padding:.8rem .95rem;font-size:.93rem;line-height:1.45;cursor:pointer;transition:.3s var(--ease);background:var(--blanc)}
.simu__step label:hover{border-color:var(--gris-clair)}
.simu__step label:has(input:checked){border-color:var(--rouge);background:var(--rose-bg)}
.simu__step label em{font-style:normal;color:var(--gris);display:block;font-size:.85rem}
.simu__step input[type=radio],.simu__step input[type=checkbox]{margin-top:.25rem;accent-color:var(--rouge);flex:none}
.recap{display:flex;flex-direction:column;gap:.8rem}
.recap__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gris);font-weight:600}
.recap__bloc{display:flex;flex-direction:column;gap:.35rem;padding-bottom:.8rem;border-bottom:1px solid var(--border)}
.recap__ligne{display:flex;justify-content:space-between;gap:1rem;font-size:.9rem}
.recap__ligne--titre{font-weight:600}
.recap__prix{font-family:var(--display);font-size:clamp(1.8rem,3vw,2.4rem);font-weight:600;letter-spacing:-.03em;color:var(--rouge);font-variant-numeric:tabular-nums}
.recap__detail{font-size:.84rem;color:var(--gris);line-height:1.5}
.recap__vide{font-size:.9rem;color:var(--gris)}
.recap.is-flou .recap__bloc{filter:blur(4px);opacity:.5;pointer-events:none}
.recap__lock{font-size:.88rem;line-height:1.5;color:var(--encre-2)}
.recap__form{display:flex;flex-direction:column;gap:.6rem;margin-top:.8rem}
.recap__form input{font:inherit;font-size:.93rem;padding:.7rem .85rem;border:1px solid var(--border);background:var(--blanc);outline:none}
.recap__form input:focus{border-color:var(--rouge)}
.recap__done{font-size:.95rem;line-height:1.5}
@media(max-width:900px){ .simu{grid-template-columns:1fr} .simu__aside{position:static} }

/* ---- divers ---- */
.assur,.statsrow{display:flex;flex-wrap:wrap;gap:1rem 2rem;padding-block:1.2rem;margin-top:2rem;font-size:.9rem}
.facts{display:grid;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));gap:1px;background:var(--border);margin-top:2rem;border-block:1px solid var(--border)}
.fact{background:var(--rose-bg);padding:1.4rem;display:flex;flex-direction:column;gap:.4rem}
.fact__n{font-family:var(--display);font-size:clamp(2rem,3.4vw,3rem);font-weight:600;letter-spacing:-.04em;color:var(--rouge);line-height:1}
.fact__t{font-weight:500;font-size:.95rem}
.fact__d{font-size:.84rem;color:var(--gris);line-height:1.45}
.fact__s{font-size:.76rem;color:var(--gris);margin-top:auto;padding-top:.6rem}
.turn{margin-top:2rem;padding:1.4rem 0;border-top:1px solid var(--border)}
.turn--soft{border-top:0;background:var(--mint);padding:1.4rem}
.turn__kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;color:var(--rouge);font-weight:600;margin-bottom:.4rem}
.turn__txt{font-size:clamp(1.05rem,1.6vw,1.35rem);line-height:1.4;font-weight:500;letter-spacing:-.02em}
.minis,.mini{font-size:.88rem;color:var(--gris)}
.clients__label,.clients__label--sub{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gris)}
.marquee{overflow:hidden;margin-top:1.4rem}
.marquee__inner{display:flex;gap:2rem;width:max-content;align-items:center}
.concept__intro{display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start}
.artcta,.art--cta{margin-top:2rem}
.article{display:block}

/* ---------- Maquette de résultats Google (héros de l'accueil) ---------- */
.hero-serp{position:relative;z-index:2}
.serp{background:var(--blanc);border:1px solid var(--border);display:flex;flex-direction:column;gap:1px;box-shadow:0 24px 60px -34px rgba(38,38,43,.35)}
.serp__bar{background:var(--rose-bg);border-bottom:1px solid var(--border);padding:.85rem 1rem;font-size:.9rem;color:var(--gris);display:flex;align-items:center;gap:.6rem}
.serp__bar::before{content:"";flex:none;width:13px;height:13px;border:1.5px solid var(--gris-clair);border-radius:50%}
.serp__item{padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.25rem;border-bottom:1px solid var(--border)}
.serp__item:last-of-type{border-bottom:0}
.serp__item--win{background:var(--rose-bg);border-left:2px solid var(--rouge)}
.serp__item--mute{opacity:.55}
.serp__tag{align-self:flex-start;font-size:.66rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;background:var(--rouge);color:#fff;padding:.25rem .5rem}
.serp__tag--grey{background:var(--border);color:var(--gris)}
.serp__title{font-size:1rem;font-weight:500;color:var(--teal);line-height:1.3}
.serp__url{font-size:.78rem;color:var(--gris)}
.serp__desc{font-size:.85rem;line-height:1.45;color:var(--encre-2)}
.serp__reviews{font-size:.8rem;color:var(--gris);display:flex;align-items:center;gap:.4rem}
.serp__badge{background:var(--encre);color:#fff;padding:.8rem 1.1rem;font-size:.85rem;line-height:1.4;display:flex;gap:.6rem;align-items:baseline}
.serp__badge b{font-family:var(--display);font-size:1.1rem;font-weight:600;color:var(--rouge-soft);flex:none}
@media(max-width:900px){ .hero-serp{margin-top:2rem} }

/* ---------- Bandeau défilant en pleine largeur dans une section ---------- */
.marquee-strip{overflow:hidden;margin:clamp(2.5rem,5vw,4rem) calc(var(--pad) * -1) 0;padding-block:.4rem}
.marquee-strip .marquee-mover{display:flex;width:max-content;will-change:transform}
.marquee-strip .marquee-txt{font-family:var(--display);font-weight:600;text-transform:uppercase;white-space:nowrap;
  font-size:clamp(2.6rem,9vw,8rem);line-height:1;letter-spacing:-.045em;padding-right:.3em;
  color:transparent;-webkit-text-stroke:1px rgba(255,255,255,.4)}
.marquee-strip .marquee-txt.fill{color:var(--mint);-webkit-text-stroke:0}
/* L'accent du titre : `em` sert de marqueur sémantique, pas d'italique. */
.h1 em,.hero-title em,.h2 em,.pagehead h1 em{font-style:normal;color:var(--rouge)}
.on-ink .h1 em,.on-ink .h2 em,.cta .h1 em{color:var(--rouge-soft)}

/* ---------- Défilé de logos clients ----------
   Les logos n'ont ni le même format ni le même poids optique : un carré et
   une signature horizontale ne peuvent pas avoir la même hauteur. La valeur
   --h portée par chaque <li> est ce réglage, on le garde — et on l'inscrit
   dans une rangée de hauteur fixe pour que tout soit centré sur une ligne. */
.marquee--logos{padding-block:.5rem;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.marquee--logos .track{display:flex;align-items:center;gap:clamp(2.75rem,5vw,5rem);
  list-style:none;margin:0;padding:0 clamp(1.4rem,2.5vw,2.5rem) 0 0}
.marquee--logos .track li{flex:none;display:flex;align-items:center;justify-content:center;
  height:5.5rem;width:clamp(7rem,11vw,10rem)}
.marquee--logos .track img{height:var(--h,44px);width:auto;max-width:100%;object-fit:contain;
  filter:grayscale(1) contrast(1.05);opacity:.62;transition:filter .45s var(--ease),opacity .45s var(--ease)}
.marquee--logos .track li:hover img{filter:none;opacity:1}
.marquee--chips .track{display:flex;align-items:center;gap:clamp(2rem,4vw,3.5rem);list-style:none;margin:0;padding:0}
.marquee--chips li{flex:none;border:1px solid var(--border);padding:.5rem .85rem;font-size:.85rem;white-space:nowrap}
/* filet de sécurité : aucune image ne doit pouvoir déborder d'une section */
.secbody img,.prose img,.card img,.duo img{max-width:100%;height:auto}
@media(max-width:640px){
  .pill{font-size:.66rem}
  .chips li{font-size:.8rem;padding:.42rem .65rem}
}

/* ---------- Boutons de soumission ----------
   Ce sont de vrais <button> (contact, simulateur) : on les style au lieu de
   les convertir en liens, sinon le formulaire ne se soumet plus. */
button.btn,button.recap__cta{display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  background:var(--rouge);color:#fff;border:0;font:inherit;font-size:.95rem;font-weight:500;
  padding:.95rem 1.35rem;cursor:pointer;transition:background .35s var(--ease)}
button.btn:hover,button.recap__cta:hover{background:var(--rouge-dark)}
button.btn:focus-visible{outline:2px solid var(--encre);outline-offset:2px}
.btn--block,button.btn.btn--block{width:100%}
/* bouton secondaire d'un formulaire à étapes : même gabarit, teinte effacée */
button.btn.btn--second{background:var(--blanc);color:var(--encre);box-shadow:inset 0 0 0 1px var(--border)}
button.btn.btn--second:hover{background:var(--off);color:var(--encre)}
.consent{display:flex;gap:.7rem;align-items:flex-start;font-size:.88rem;line-height:1.5;color:var(--encre-2);margin:1rem 0;cursor:pointer}
.consent input{margin-top:.25rem;accent-color:var(--rouge);flex:none}
.consent a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.form-reassure{font-size:.82rem;color:var(--gris);margin-top:.8rem}

/* ---------- Débordement horizontal ----------
   Un enfant de grille a `min-width:auto` par défaut : il refuse de passer
   sous la largeur de son contenu. Un tableau large poussait donc toute la
   page vers la droite sur mobile, au lieu de défiler dans son cadre. */
.artgrid > *,.pagehead-grid > *,.formgrid > *,.jobs-grid > *,.simu > *,
.contactpage > *,.faqpage > *,.story > *,.detail > *,.hero-grid > *,.loop-grid > *{min-width:0}
.tablewrap{max-width:100%}
@media(max-width:640px){ .dtable{min-width:26rem;font-size:.88rem} }

/* ---------- Formulaires hérités (contact, devis) ----------
   Un <fieldset> non stylé garde la bordure « groove » du navigateur, et des
   champs étalés sur 1244 px ne se lisent pas : on borne la colonne. */
fieldset{border:0;margin:0;padding:0;min-width:0}
legend{padding:0;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);font-weight:600;margin-bottom:.7rem}
.contact__sujets{margin:0 0 1.6rem}
.contact__sujets label{display:inline-flex;align-items:center;gap:.5rem;border:1px solid var(--border);
  padding:.6rem .9rem;font-size:.9rem;cursor:pointer;background:var(--blanc);margin:0 .45rem .45rem 0;
  transition:border-color .3s var(--ease),background .3s var(--ease)}
.contact__sujets label:hover{border-color:var(--gris-clair)}
.contact__sujets label:has(input:checked){border-color:var(--rouge);background:var(--rose-bg)}
.contact__sujets input{accent-color:var(--rouge)}
.formcard > form,.contactpage__form form,form.recap__form{max-width:min(44rem,100%)}
.formcard .field,.formcard .field-row{max-width:min(44rem,100%)}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:.8rem}
.contact__titre + .contact__chapo{margin-bottom:1.4rem}
@media(max-width:640px){ .field-row{grid-template-columns:1fr} }

/* ==========================================================================
   HÉROS — visuel qui s'ouvre en pleine largeur au scroll
   Le calque couvre tout le bas du héros mais n'est révélé que sur la colonne
   de droite via clip-path. Au scroll, l'inset s'ouvre jusqu'à 0 : l'image
   prend toute la largeur et fait le passage vers la section suivante.
   clip-path et transform sont composités — l'animation reste fluide.
   ========================================================================== */
.hero-visual{position:absolute;inset:0;z-index:0;overflow:hidden;
  clip-path:inset(52% 0 0 51%);will-change:clip-path;background:var(--saumon)}
.hero-visual picture{display:block;width:100%;height:100%}
.hero-visual img{width:100%;height:100%;object-fit:cover;transform:scale(1.18);will-change:transform}
.hero-visual::after{content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(105deg,rgba(38,38,43,.5),rgba(38,38,43,0) 58%);opacity:var(--voile,0)}
.hero-visual-slot{min-height:clamp(16rem,32vh,26rem)}


@media(max-width:900px){
  /* Le calque est enfant de .hero (flex colonne) : sur mobile il redevient un
     bloc normal, placé après le texte. Pas d'épinglage, pas de clip. */
  .hero-visual{position:relative;inset:auto;clip-path:none!important;order:3;
    height:clamp(14rem,40vh,20rem);margin-top:2rem}
  .hero-visual img{transform:none}
  .hero-visual::after{display:none}
  .hero-visual-slot{display:none}
  .hero-top{order:1}
  .hero-bottom{order:2}
  .hero{min-height:0;padding-bottom:2rem}
}

/* ---------- Ligne de chiffres clés ---------- */
.statsrow{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:2rem 1.5rem;text-align:center}
.statsrow li{display:flex;flex-direction:column;align-items:center;gap:.25rem}
.statsrow b{font-family:var(--display);font-size:clamp(1.7rem,2.6vw,2.4rem);font-weight:600;letter-spacing:-.03em;line-height:1;color:var(--encre)}
.statsrow li > span{font-size:.9rem;color:var(--gris);line-height:1.4}
.statsrow .stars{color:var(--rouge);font-size:.8rem;letter-spacing:.12em}
.assur ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem 2rem}
.assur li{position:relative;padding-left:1.05rem;font-size:.9rem;color:var(--gris)}
.assur li::before{content:"";position:absolute;left:0;top:.55em;width:5px;height:5px;background:var(--rouge)}
/* Bandes (chiffres clés, logos clients) : ce ne sont pas des chapitres,
   elles n'ont pas besoin du rythme vertical d'une section pleine. */
.sec-slim{padding-block:clamp(2.75rem,4.5vw,4rem)}
@media(max-width:760px){ .statsrow{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.8rem 1rem} }
.sec-slim .secbody{margin-top:0}

/* ---------- Pictogramme de carte ---------- */
.card-ico{display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;
  border:1px solid var(--border);color:var(--rouge);margin-bottom:.3rem;flex:none;
  transition:background .45s var(--ease),border-color .45s var(--ease),color .45s var(--ease)}
.card-ico svg{width:20px;height:20px}
.card:hover .card-ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.on-off .card-ico{background:var(--rose-bg)}
.on-ink .card-ico{border-color:rgba(255,255,255,.22);color:var(--rouge-soft)}

/* ---------- Encart « la bonne nouvelle » ----------
   Posé à plat sur le fond de section, il se lisait comme un paragraphe
   ordinaire. Un aplat le sort du flux. */
.turn{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:1.5rem 2.5rem;margin-top:clamp(2rem,4vw,3rem);padding:clamp(1.5rem,2.8vw,2.2rem);
  background:var(--mint);border:0;border-left:3px solid var(--teal)}
.turn__txt{max-width:min(46rem,100%);display:flex;flex-direction:column;gap:.5rem}
.turn__kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--teal)}
.turn__txt p:not(.turn__kicker){font-size:clamp(1.02rem,1.4vw,1.2rem);line-height:1.5;color:var(--teal-dark)}
.turn__txt strong{color:var(--teal);font-weight:600}
.turn .btn-inner{background:var(--teal);color:var(--mint)}
.turn .btn:hover .btn-inner{background:var(--teal-dark)}
.turn .btn-corners i{border-color:var(--teal)}
.turn--soft{background:var(--rose-bg);border-left-color:var(--rouge)}
.turn--soft .turn__kicker{color:var(--rouge)}
.turn--soft .turn__txt p:not(.turn__kicker){color:var(--encre-2)}

/* ---------- Section « votre métier » : recherche + pastilles ---------- */
.jobsearch{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.85fr);
  gap:clamp(2rem,4vw,4.5rem);align-items:start}
.jobsearch-left{display:flex;flex-direction:column;gap:1.4rem}
.jobsearch-right{display:flex;flex-direction:column;gap:.9rem;padding-top:.4rem}
.jobpills-lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--gris);font-weight:600}
.jobpills{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.6rem}
.jobpill a{display:inline-flex;align-items:center;gap:.55rem;border:1px solid var(--border);
  padding:.55rem 1rem .55rem .7rem;font-size:.92rem;background:var(--blanc);
  transition:border-color .35s var(--ease),background .35s var(--ease),color .35s var(--ease)}
.jobpill svg{width:18px;height:18px;color:var(--rouge);flex:none;transition:color .35s var(--ease)}
.jobpill a:hover{border-color:var(--encre);background:var(--encre);color:#fff}
.jobpill a:hover svg{color:var(--rouge-soft)}
.jobpill.is-all a{padding-left:1rem;border-style:dashed;border-color:var(--rouge);color:var(--rouge)}
.jobpill.is-all a::after{content:"→";font-size:.9rem}
.jobpill.is-all a:hover{background:var(--rouge);border-color:var(--rouge);color:#fff}

/* Barre de recherche : l'icône est dans le champ, pas à côté. */
.rech--bloc{position:relative;max-width:none}
.rech--bloc input,.rech--hero input{padding-left:3rem;font-size:1.05rem;padding-block:1rem}
.rech--bloc::before,.rech--hero::before{content:"";position:absolute;left:1.05rem;top:1.15rem;width:20px;height:20px;
  background:var(--rouge);pointer-events:none;z-index:1;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") center/contain no-repeat}
.rech--bloc input::placeholder{color:var(--gris-clair)}
@media(max-width:900px){ .jobsearch{grid-template-columns:1fr} }

/* ==========================================================================
   PACKS ET SERVICES À LA CARTE (accueil)
   ========================================================================== */

/* ---------- Sélecteur de durée ---------- */
.dureewrap{display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.4rem;margin-top:clamp(2rem,3.5vw,2.8rem)}
.toggle{display:inline-flex;border:1px solid var(--border);background:var(--blanc);padding:.25rem}
.toggle button{background:none;border:0;font:inherit;font-size:.92rem;font-weight:500;
  padding:.65rem 1.15rem;cursor:pointer;color:var(--gris);transition:.3s var(--ease)}
.toggle button:hover{color:var(--encre)}
.toggle button.is-active,.toggle button[aria-checked="true"]{background:var(--encre);color:#fff}
.dureewrap__note{font-size:.86rem;color:var(--gris);margin:0}

/* ---------- Cartes de packs ---------- */
.packgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(17.5rem,1fr));gap:1px;
  background:var(--border);border:1px solid var(--border);margin-top:clamp(1.6rem,3vw,2.4rem)}
.packgrid .pack{position:relative;background:var(--blanc);padding:clamp(1.6rem,2.6vw,2.2rem);
  display:flex;flex-direction:column;gap:.85rem;transition:background .4s var(--ease)}
.packgrid .pack:hover{background:var(--rose-bg)}
/* Les deux packs mensuels vont par paire sous le sélecteur de durée ; le pack
   Lancement, payé une fois, se tient à part pour ne pas laisser croire qu'il
   suit le même engagement. */
.packgrid--duo{grid-template-columns:repeat(2,minmax(0,1fr))}
.packsolo{margin-top:clamp(1.8rem,3.2vw,2.6rem)}
.packsolo__bande{display:grid;grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);
  gap:clamp(1.6rem,3vw,3rem);align-items:center;margin-top:.9rem;
  padding:clamp(1.8rem,3vw,2.6rem);border-radius:var(--r-lg)}
.packsolo__txt h3{font-family:var(--display);font-size:clamp(1.2rem,1.7vw,1.5rem);
  font-weight:600;letter-spacing:-.025em;line-height:1.2;margin:0 0 .7rem}
.packsolo__txt h3{color:#fff}
/* ce qu'il y a dans le pack, une ligne par pièce */
.packsolo__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.62rem}
.packsolo__liste li{display:flex;align-items:flex-start;gap:.7rem}
.packsolo__liste i{flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:1.55rem;height:1.55rem;border-radius:50%;background:rgba(255,255,255,.1);
  color:var(--rouge-soft);margin-top:.05rem}
.packsolo__liste i svg{width:.88rem;height:.88rem}
.packsolo__liste span{font-size:.94rem;line-height:1.5;color:rgba(255,255,255,.82)}
.packsolo__txt > p{margin:0;font-size:.96rem;line-height:1.6}
.packsolo__txt .pack__note{margin:1.1rem 0 0;padding-top:.95rem;
  border-top:1px dotted rgba(255,255,255,.18);font-size:.8rem;line-height:1.5}
.packsolo__prix{border-left:1px solid rgba(255,255,255,.18);padding-left:clamp(1.4rem,3vw,2.4rem)}
.packsolo__prix .prixbloc{display:grid;grid-template-columns:auto 1fr;align-items:baseline;
  column-gap:.5rem;row-gap:.2rem;margin:0;padding:0;border-top:0}
.packsolo__prix .prixbloc__val{color:#fff}
.packsolo__prix .prixbloc__unite{color:rgba(255,255,255,.6)}
.packsolo__prix .prixbloc__note{grid-column:1/-1;margin-top:.5rem;font-size:.85rem;
  line-height:1.5;color:rgba(255,255,255,.6)}
.packsolo__prix .btn{margin-top:1.3rem}
@media(max-width:760px){ .packgrid--duo{grid-template-columns:1fr} }
@media(max-width:860px){
  .packsolo__bande{grid-template-columns:1fr;gap:1.4rem}
  .packsolo__prix{border-left:0;border-top:1px solid rgba(255,255,255,.18);padding-left:0;padding-top:1.3rem}
}
.packgrid .pack .srv__voir::after{content:"";position:absolute;inset:0;z-index:1}
.packgrid .pack__tag{align-self:flex-start;font-size:.7rem;text-transform:uppercase;
  letter-spacing:.1em;font-weight:600;color:var(--teal)}
.packgrid .pack h3{font-family:var(--display);font-size:clamp(1.2rem,1.7vw,1.5rem);font-weight:600;
  letter-spacing:-.025em;line-height:1.2;color:var(--encre)}
.packgrid .pack > p{font-size:.96rem;line-height:1.55;color:var(--encre-2)}

/* Prix : le nombre porte le poids, l'unité et l'économie s'alignent dessous. */
.packgrid .prixbloc{display:grid;grid-template-columns:auto 1fr;align-items:baseline;
  column-gap:.5rem;row-gap:.15rem;margin-top:auto;padding-top:1.1rem;border-top:1px solid var(--border)}
.prixbloc__ref{grid-column:1/-1;font-size:.95rem;color:var(--gris-clair);text-decoration:line-through}
.prixbloc__val{font-family:var(--display);font-size:clamp(2.4rem,4vw,3.2rem);font-weight:600;
  letter-spacing:-.035em;line-height:1;color:var(--encre)}
.prixbloc__unite{font-size:.9rem;font-weight:500;color:var(--gris);text-transform:none;letter-spacing:0}
.prixbloc__note{grid-column:1/-1;font-size:.85rem;line-height:1.4;color:var(--gris);margin-top:.2rem}
.prixbloc__eco{color:var(--teal);font-weight:500}
.packgrid .pack__note{font-size:.8rem;line-height:1.45;color:var(--gris-clair);
  padding-top:.9rem;border-top:1px dotted var(--border)}
/* Les trois pages d'une même ville se présentent en cartes, pas en liens de bas
   de page : on veut voir ce que chacune propose et à quel prix avant de cliquer. */
.packgrid .pack__pts{list-style:none;margin:.1rem 0 0;padding:0;
  display:flex;flex-direction:column;gap:.55rem}
.packgrid .pack__pts li{display:flex;align-items:flex-start;gap:.6rem;
  font-size:.93rem;line-height:1.45;color:var(--encre-2)}
.packgrid .pack__pts i{flex:none;display:inline-flex;align-items:center;justify-content:center;
  width:1.1rem;height:1.1rem;margin-top:.15rem;color:var(--rouge)}
.packgrid .pack__pts i svg{width:100%;height:100%}
.packgrid .pack__bas{margin-top:auto}
/* la flèche du bouton n'a pas de taille propre : sans cette règle, le SVG
   s'étire à la hauteur disponible et le bouton fait quatre cents pixels. */
.packgrid .srv__voir svg{flex:none;width:15px;height:15px}
/* tout ce qui est bouton sur le site a les angles arrondis (--r-sm) : celui-ci
   les avait carrés, ce qui se voyait immédiatement à côté des autres. */
.packgrid .srv__voir{border-radius:var(--r-sm)}

/* CTA : le lien décoratif devient un vrai bouton (la carte entière est cliquable). */
.packgrid .srv__voir{display:flex;text-align:center;align-items:center;justify-content:center;gap:.5rem;
  margin-top:.4rem;padding:.85rem 1.1rem;background:var(--rouge);color:#fff;
  font-size:.92rem;font-weight:500;transition:background .35s var(--ease)}
.packgrid .pack:hover .srv__voir{background:var(--rouge-dark)}
/* devenu un vrai lien, « Voir le détail » héritait du rouge des liens de section :
   du rouge sur du rouge. On lui rend le blanc du bouton. */
.secbody .packgrid a.srv__voir:not(.btn):not(.duo-link):not(.linklist a){color:#fff;border-bottom:0}
.secbody .packgrid a.srv__voir:not(.btn):not(.duo-link):not(.linklist a):hover{color:#fff}

/* ---------- Séparateur « à la carte » ---------- */
.srvsep{display:flex;flex-direction:column;gap:.7rem;align-items:flex-start;height:auto;background:none;
  margin-top:clamp(3.5rem,6vw,5rem);padding-top:clamp(2rem,3.5vw,2.8rem);border-top:1px solid var(--border)}
.srvsep .kicker{color:var(--teal)}
.srvsep p{font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.45;color:var(--encre);
  font-weight:500;letter-spacing:-.015em;max-width:min(40rem,100%)}

/* ---------- Familles de prestations ---------- */
.carte__famille{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .9rem;
  margin-top:clamp(2.2rem,4vw,3rem);padding-bottom:.9rem;border-bottom:1px solid var(--encre)}
.carte__famille h3{font-family:var(--display);font-size:clamp(1.15rem,1.7vw,1.5rem);font-weight:600;
  letter-spacing:-.025em;color:var(--encre)}
.carte__famille span{font-size:.8rem;text-transform:uppercase;letter-spacing:.07em;color:var(--gris)}

/* ---------- Une prestation = une carte ----------
   La liste se parcourait comme une grille tarifaire, pas comme une offre.
   Chaque prestation a maintenant son pictogramme, sa phrase et son prix en
   pied ; la famille de trois s'élargit d'elle-même sur la rangée. */
/* Piste glissante, comme les familles de métiers : cartes espacées, cadre
   propre à chacune, débordement à droite, scroll-snap. */
.carte{list-style:none;margin:1.2rem 0 0;padding:0 var(--pad) 0 0;
  display:flex;gap:clamp(1rem,1.8vw,1.5rem);
  overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
  scrollbar-width:none;-webkit-overflow-scrolling:touch;
  margin-right:calc(var(--pad) * -1)}
.carte::-webkit-scrollbar{display:none}
.carte:focus-visible{outline:2px solid var(--rouge);outline-offset:6px}
.carte li{flex:0 0 auto;width:clamp(16rem,22vw,19.5rem);scroll-snap-align:start;min-width:0}
.carte__lien{display:flex;flex-direction:column;gap:.75rem;height:100%;
  background:var(--blanc);border:1px solid var(--border);
  padding:clamp(1.2rem,2vw,1.5rem);transition:border-color .45s var(--ease)}
.carte__lien:hover{border-color:var(--encre)}
/* Les boutons de piste : dans l'en-tête de famille sur l'accueil, seuls
   au-dessus de la piste sur la page Services. */
.carte__famille .piste__nav{margin-left:auto;margin-top:0;padding-top:0}
.piste__tete{display:flex;justify-content:flex-end}
.piste__nav{margin-top:0;padding-top:0}
@media(max-width:640px){ .carte li{width:min(78vw,18rem)} }
.carte__ico{display:flex;align-items:center;justify-content:center;
  width:2.5rem;height:2.5rem;border:1px solid var(--border);color:var(--rouge);
  background:var(--blanc);margin-bottom:.2rem;
  transition:background .45s var(--ease),border-color .45s var(--ease),color .45s var(--ease)}
.carte__ico svg{width:19px;height:19px}
.carte__lien:hover .carte__ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.carte__corps{display:flex;flex-direction:column;gap:.35rem;min-width:0}
.carte__nom{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem .55rem;
  font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.02em;
  line-height:1.2;color:var(--encre)}
.carte__tag{font-style:normal;font-size:.66rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--rouge)}
.carte__desc{display:block;font-size:.9rem;line-height:1.5;color:var(--encre-2)}
.carte__pied{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);
  display:flex;align-items:flex-end;justify-content:space-between;gap:.6rem}
.carte__prix{display:flex;flex-direction:column;gap:.1rem}
.carte__prix b{font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.02em;
  color:var(--encre);white-space:nowrap}
.carte__prix small{font-size:.74rem;color:var(--gris)}
.carte__cta{display:inline-flex;align-items:center;gap:.3rem;font-size:.8rem;
  color:var(--rouge);white-space:nowrap}
.carte__cta em{font-style:normal;transition:transform .35s var(--ease)}
.carte__lien:hover .carte__cta em{transform:translateX(3px)}
@media(max-width:820px){
}
@media(prefers-reduced-motion:reduce){
  .carte__right{transition:none}
  .carte__cta{transition:none}
}

/* ---------- Bande d'appel intercalée ----------
   Posée à plat sur le fond de section, elle passait inaperçue entre deux
   listes. Un aplat sombre la détache et hiérarchise l'appel à l'action. */
.bande{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;
  gap:1.4rem 2.5rem;margin-top:clamp(2.5rem,4.5vw,3.5rem);
  padding:clamp(1.6rem,3vw,2.4rem);background:var(--encre);color:#fff}
.bande p{display:flex;flex-direction:column;gap:.45rem;max-width:min(44rem,100%);
  font-family:var(--display);font-size:clamp(1.15rem,1.7vw,1.45rem);font-weight:600;
  letter-spacing:-.025em;line-height:1.25;color:#fff}
.bande p span{font-family:var(--font);font-size:.96rem;font-weight:400;line-height:1.55;
  letter-spacing:0;color:rgba(255,255,255,.72)}
.bande .btn-row{flex:none;max-width:100%}   /* sans borne, deux boutons débordaient l'écran mobile */
.bande .btn-inner:not(.is-rouge){background:transparent;color:#fff;border:1px solid rgba(255,255,255,.35)}
.bande .btn:hover .btn-inner:not(.is-rouge){background:#fff;color:var(--encre);border-color:#fff}
/* Variante claire : quand un bandeau suit immédiatement un bloc sur fond encre,
   deux aplats sombres à la file alourdissent la page. Celui-ci reste transparent. */
.bande--clair{background:transparent;color:var(--encre);border:1px solid var(--border)}
.bande--clair p{color:var(--encre)}
.bande--clair p span{color:var(--encre-2)}
.bande--clair .btn-inner:not(.is-rouge){background:var(--blanc);color:var(--encre);border:1px solid var(--border)}
.bande--clair .btn:hover .btn-inner:not(.is-rouge){background:var(--encre);color:#fff;border-color:var(--encre)}
.bande--clair .btn-corners i{border-color:var(--gris-clair)}

/* ---------- Réalisations : cartes d'égale hauteur, aperçu photo ---------- */
.works,.cards.is-4:has(.work),.cards:has(.work){align-items:stretch}
.work{background:var(--blanc);display:flex;flex-direction:column;height:100%}
.on-off .work{background:var(--blanc)}
.shot{background:var(--rose-bg);padding:.8rem;display:flex;flex-direction:column;gap:.6rem;
  border-bottom:1px solid var(--border)}
.shot__bar{display:flex;align-items:center;gap:.5rem;font-size:.72rem;color:var(--gris)}
.shot__bar::before{content:none}
.shot__bar i{flex:none;width:7px;height:7px;border-radius:50%;background:var(--saumon)}
.shot__bar span{margin-left:.3rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* L'aperçu impose sa proportion : toutes les cartes s'alignent. */
.shot__view{position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--blanc);
  border:1px solid var(--border);display:block;padding:0}
.shot__photo{position:absolute;inset:0;display:block}
.shot__photo img{width:100%;height:100%;object-fit:cover}
.shot__view .shot__logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:auto;height:auto;max-width:58%;max-height:34%;object-fit:contain;
  background:rgba(255,255,255,.92);padding:.7rem .9rem;box-shadow:0 10px 30px -18px rgba(38,38,43,.5)}
.work__body{padding:1.3rem;display:flex;flex-direction:column;gap:.55rem;flex:1}
.work__body h3{font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.02em;line-height:1.25}
.work__body p{font-size:.92rem;line-height:1.5;color:var(--encre-2)}
.work__did{font-size:.86rem;color:var(--gris);line-height:1.5;margin-top:auto;padding-top:.8rem;
  border-top:1px solid var(--border)}
.work .check{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);gap:.4rem}
.work .check li{font-size:.86rem;padding-left:1.1rem}
.work .check li::before{width:5px;height:5px;top:.62em}

/* ---------- Quatrième carte : accès à toutes les réalisations ---------- */
.work--tout{background:var(--blanc);color:var(--encre);display:flex;height:100%;transition:background .4s var(--ease)}
.work--tout:hover{background:var(--rose-bg)}
.work--tout-in{display:flex;flex-direction:column;gap:.55rem;padding:1.5rem;width:100%}
.work--tout-n{font-family:var(--display);font-size:clamp(2rem,3vw,2.6rem);font-weight:600;
  letter-spacing:-.035em;line-height:1;color:var(--rouge)}
.work--tout-t{font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.02em;line-height:1.25}
.work--tout-d{font-size:.9rem;line-height:1.5;color:var(--encre-2)}
.work--tout-cta{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);
  font-size:.9rem;font-weight:500;color:var(--rouge)}

/* ==========================================================================
   TARIFS — deux offres détaillées, puis le récapitulatif de toutes les offres
   ========================================================================== */
.plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;
  border:1px solid var(--border);margin-top:clamp(2rem,3.5vw,2.8rem);background:var(--blanc)}
.plans--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.plan{background:var(--blanc);padding:clamp(1.7rem,2.8vw,2.4rem);display:flex;flex-direction:column;gap:0}
.plan > * + *{margin-top:.9rem}
.plan + .plan{border-left:1px solid var(--border)}
@media(max-width:820px){
  .plans,.plans--2{grid-template-columns:1fr}
  .plan + .plan{border-left:0;border-top:1px solid var(--border)}
}
.plan h3{font-family:var(--display);font-size:clamp(1.25rem,1.9vw,1.6rem);font-weight:600;
  letter-spacing:-.025em;line-height:1.2;color:var(--encre)}
.plan__for{font-size:.96rem;line-height:1.55;color:var(--encre-2);max-width:38ch}

/* Prix : « à partir de » discret, le montant porte seul le poids visuel. */
.plan__price{display:flex;flex-wrap:wrap;align-items:baseline;gap:.3rem .6rem;
  margin-top:1.4rem!important;padding-top:1.2rem;border-top:1px solid var(--border)}
.plan__from{font-size:.74rem;text-transform:uppercase;letter-spacing:.09em;color:var(--gris);
  flex-basis:100%;font-weight:600}
.plan__amount{display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.plan__amount b{font-family:var(--display);font-size:clamp(2.4rem,4vw,3.2rem);font-weight:600;
  letter-spacing:-.035em;line-height:1;color:var(--encre)}
.plan__amount > span{font-size:.92rem;font-weight:500;color:var(--gris)}
.plan__save{font-size:.86rem;color:var(--teal);font-weight:500}
.plan__note{font-size:.8rem;color:var(--gris);line-height:1.45}
.plan .btn{align-self:stretch;margin-top:.4rem}
.plan .btn-inner{justify-content:center;padding-block:1rem}
/* le filet sépare, sans écart : la marge devient du rembourrage interne */
.plan .check{margin-top:0!important;padding-top:1.1rem;border-top:1px solid var(--border)}
.plan__save{padding-bottom:1.1rem}
.plan .duo--trois{margin-top:1.4rem!important;padding-top:1.2rem;border-top:1px solid var(--border)}

/* Trois durées d'engagement, à choix égal, la recommandée est marquée. */
.duo--trois{display:flex;flex-direction:column;gap:.5rem;margin-top:.5rem;background:transparent}
.duo__opt{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;
  column-gap:1rem;row-gap:.2rem;border:1px solid var(--border);padding:.95rem 1.1rem;
  background:var(--blanc);transition:border-color .3s var(--ease),background .3s var(--ease)}
.duo__opt:hover{border-color:var(--gris-clair)}
.duo__opt--best{border-color:var(--rouge);background:var(--rose-bg);position:relative}
.duo__opt--best::after{content:"Recommandé";grid-column:1/-1;justify-self:start;
  margin-top:.35rem;color:var(--rouge);font-size:.64rem;text-transform:uppercase;
  letter-spacing:.1em;font-weight:600}
.duo__label{font-size:.8rem;text-transform:uppercase;letter-spacing:.05em;color:var(--encre);font-weight:600}
.duo__price{justify-self:end;text-align:right;font-size:.86rem;color:var(--gris);white-space:nowrap}
.duo__price b{font-family:var(--display);font-size:1.45rem;font-weight:600;letter-spacing:-.03em;
  color:var(--encre);margin-right:.15rem}
.duo__price b{font-weight:600}
.duo__note{grid-column:1/-1;font-size:.82rem;line-height:1.45;color:var(--gris)}

.reviews{display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));gap:0;
  border:1px solid var(--border);background:var(--blanc);margin-top:clamp(2rem,3.5vw,2.8rem)}
.reviews.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.reviews.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}

/* ---------- Avis en carrousel ----------
   Quatre colonnes qui défilent seules, sur le mécanisme des bandeaux de logos
   (site.js duplique la piste et anime -50 %). Au survol la boucle ralentit,
   le temps de lire une carte jusqu'au bout. */
.marquee--avis{--gap:1rem;width:100%;max-width:100%;overflow:hidden;margin-top:clamp(1.6rem,3vw,2.4rem)}
.marquee--avis .marquee__inner{align-items:stretch;gap:var(--gap)}
.marquee--avis .track{display:flex;align-items:stretch;gap:var(--gap);
  list-style:none;margin:0;padding:0;width:max-content}
.marquee--avis .track > li{flex:none;
  width:clamp(15rem, calc((100vw - 2 * var(--pad) - 3 * var(--gap)) / 4), 22rem)}
.marquee--avis .review{height:100%}
/* Sans animation, on doit pouvoir atteindre les cartes suivantes à la main. */
@media(prefers-reduced-motion:reduce){
  .marquee--avis{overflow-x:auto;scrollbar-width:none}
  .marquee--avis::-webkit-scrollbar{display:none}
}
@media(max-width:1100px){
  .marquee--avis .track > li{width:clamp(15rem, calc((100vw - 2 * var(--pad) - var(--gap)) / 2), 20rem)}
}
@media(max-width:640px){
  .marquee--avis .track > li{width:min(78vw, 20rem)}
}
.reviews .review + .review{border-left:1px solid var(--border)}
.review{background:var(--blanc);padding:clamp(1.3rem,2.2vw,1.8rem);display:flex;flex-direction:column;gap:.9rem}
.review p{font-size:.95rem;line-height:1.6;color:var(--encre-2)}
.review__who{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);
  display:flex;align-items:center;gap:.7rem}
.review__who > div{display:flex;flex-direction:column;gap:.05rem}
.review__who b{font-size:.9rem;font-weight:600;color:var(--encre)}
.review__who span:not(.review__av){font-size:.8rem;color:var(--gris)}
.review__av{flex:none;width:36px;height:36px;border-radius:50%;background:var(--mint);color:var(--teal);
  display:flex;align-items:center;justify-content:center;font-family:var(--display);
  font-size:.95rem;font-weight:600}
@media(max-width:1100px){ .reviews.is-4{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:1000px){ .reviews.is-3{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:640px){ .reviews.is-4,.reviews.is-3{grid-template-columns:1fr} }



/* ==========================================================================
   ZONE DE CHALANDISE — trois paliers, la photo prend de l'altitude
   Le titre reste ; le palier courant remplace le précédent, et la photo passe
   de la devanture à la vue aérienne en dézoomant.
   ========================================================================== */
#zone .secbody{margin-top:0}
.zonegrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,4vw,4.5rem);align-items:center}
.zonetxt{display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start}
#zone .kicker{color:var(--mint)}
#zone h2{font-family:var(--display);font-size:clamp(1.9rem,3.2vw,2.9rem);font-weight:600;
  line-height:1.06;letter-spacing:-.03em;color:#fff;text-wrap:balance}
#zone .prose-lead{color:rgba(255,255,255,.75);max-width:min(32rem,100%)}

/* Les paliers sont empilés : un seul est lisible à la fois. */
.zoneslides{display:grid;width:100%;min-height:9.5rem;align-content:center;margin-top:.4rem}
.zoneslide{grid-area:1/1;display:flex;flex-direction:column;gap:.45rem;
  opacity:0;pointer-events:none}
.zoneslide[data-on]{opacity:1;pointer-events:auto}
.zoneslide b{font-family:var(--display);font-size:clamp(1.2rem,1.9vw,1.6rem);font-weight:600;
  letter-spacing:-.025em;color:#fff}
.zoneslide p{font-size:1rem;line-height:1.6;color:rgba(255,255,255,.72);max-width:min(32rem,100%)}

/* La photo : trois altitudes, empilées, qui se relaient en dézoomant. */
.zonephoto{position:relative;width:100%;aspect-ratio:4/3;overflow:hidden;background:#1c1c20}

/* ---------- La carte des trois altitudes ----------
   Une seule carte, sombre comme sa section. Les traits sont en
   `non-scaling-stroke` : quel que soit le recul de la caméra, ils gardent
   leur épaisseur à l'écran — sinon les communes disparaîtraient en s'éloignant
   et le cercle deviendrait un trait d'un demi-pixel. */
.alt{position:absolute;inset:0;width:100%;height:100%;display:block}
.alt__mer{fill:#1c1c20}
.alt__france path{fill:#26262b;stroke:rgba(255,255,255,.14);stroke-width:1;vector-effect:non-scaling-stroke}
.alt__communes path{fill:#2d2d33;stroke:rgba(255,255,255,.16);stroke-width:1;vector-effect:non-scaling-stroke}
.alt__nice{fill:rgba(233,72,47,.28);stroke:var(--rouge);stroke-width:1.2;vector-effect:non-scaling-stroke}
/* Le contour du département se lit dans le SVG statique (mobile, sans JS) ;
   la région et ses voisines n'existent que sur le canvas animé. */
.alt__departement{fill:none;stroke:rgba(255,255,255,.6);stroke-width:1.2;vector-effect:non-scaling-stroke}
.alt__region,.alt__regions,.alt__departements{display:none}
.alt__portee{fill:rgba(233,72,47,.06);stroke:var(--rouge);stroke-width:1.5;
  stroke-dasharray:6 5;vector-effect:non-scaling-stroke}
.alt__centre circle:first-child{fill:var(--rouge)}
/* `:last-child` visait le halo — jusqu'à ce que le nom de la ville, ajouté
   après lui, prenne sa place et laisse le halo en noir SVG par défaut. */
.alt__centre circle:nth-child(2){fill:none;stroke:var(--rouge);stroke-width:1;vector-effect:non-scaling-stroke;opacity:.6}
/* le point et son halo gardent une taille écran constante, comme les traits */
.alt__centre{transform-box:fill-box;transform-origin:center}
.alt__villes{opacity:0;transition:none}
.alt__villes circle{fill:#fff;opacity:.8}
.alt__villes text{fill:#fff;font-family:var(--display);font-size:66px;font-weight:600;letter-spacing:-.02em;opacity:.85}
/* le nom de la ville centrale : lisible au premier palier, effacé ensuite par le JS */
.alt__nom{fill:#fff;font-family:var(--display);font-size:13px;font-weight:600;letter-spacing:-.02em}
.zonereperes{position:absolute;left:0;bottom:0;right:0;z-index:2;display:flex;
  background:linear-gradient(transparent,rgba(28,28,32,.85))}
.zonerepere{flex:1;padding:1.5rem .9rem .9rem;font-size:.74rem;text-transform:uppercase;
  letter-spacing:.07em;font-weight:600;color:rgba(255,255,255,.45);text-align:center;
  border-top:2px solid rgba(255,255,255,.15);transition:color .4s var(--ease),border-color .4s var(--ease)}
.zonerepere[data-on]{color:#fff;border-top-color:var(--rouge)}
@media(max-width:900px){
  .zonegrid{grid-template-columns:1fr;gap:2rem}
  .zoneslides{min-height:0;display:flex;flex-direction:column;gap:1.2rem}
  .zoneslide{opacity:1;pointer-events:auto}
  .zonephoto{aspect-ratio:3/2}
  /* sous 900 px : pas d'épinglage, la carte reste au cadrage département */
  .alt{position:relative}
}

/* ---------- Carte de formulaire sur section sombre ----------
   `.on-ink p` (0,1,1) repeignait en blanc les textes de la carte blanche.
   On repasse au-dessus avec une spécificité supérieure. */
/* `span` sans exclusion attrapait aussi l'intérieur des boutons : un CTA
   rouge se retrouvait en texte encre sur fond rouge. */
.on-ink .formcard,.on-ink .formcard p,.on-ink .formcard span:not(.btn-inner),
.on-ink .formcard label,.on-ink .formcard h2,.on-ink .formcard h3{color:var(--encre)}
.on-ink .formcard .flabel{color:var(--encre)}
.on-ink .formcard .fhint,.on-ink .formcard .fnote,.on-ink .formcard .fstepnum,
.on-ink .formcard .field label{color:var(--gris)}
.on-ink .formcard .fopt span{color:var(--encre)}
.on-ink .formcard a{color:var(--rouge)}
.on-ink .formcard input,.on-ink .formcard select,.on-ink .formcard textarea{color:var(--encre)}
@media(min-width:901px){
  #zone.is-pinned{min-height:100vh;display:flex;align-items:center}
  #zone.is-pinned > .pad{width:100%}
}

/* ---------- Garanties : quatre repères, un pictogramme chacun ----------
   (bloc restauré : un nettoyage regex l'avait emporté avec le radar) */
.guarantees{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;
  margin-top:0;border:1px solid var(--border);border-top:0;background:var(--blanc)}
.guar{display:flex;align-items:flex-start;gap:.9rem;padding:clamp(1.2rem,2vw,1.6rem)}
.guar + .guar{border-left:1px solid var(--border)}
.guar-ico{flex:none;display:flex;align-items:center;justify-content:center;width:2.3rem;height:2.3rem;
  border-radius:50%;background:var(--mint);color:var(--teal)}
.guar-ico svg{width:18px;height:18px}
.guar > div{display:flex;flex-direction:column;gap:.2rem}
.guar b{font-family:var(--display);font-size:.96rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.guar span{font-size:.86rem;line-height:1.45;color:var(--gris)}
@media(max-width:1100px){
  .guarantees{grid-template-columns:repeat(2,minmax(0,1fr))}
  .guar:nth-child(odd){border-left:0}
  .guar:nth-child(n+3){border-top:1px solid var(--border)}
}
@media(max-width:640px){
  .guarantees{grid-template-columns:1fr}
  .guar + .guar{border-left:0;border-top:1px solid var(--border)}
}


/* ---------- Encart dédié : pack Lancement d'entreprise ----------
   (bloc restauré : emporté par le même nettoyage regex que les garanties) */
.lancement{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);
  gap:clamp(1.5rem,3vw,3rem);align-items:center;margin-top:clamp(2rem,3.5vw,3rem);
  background:var(--encre);color:#fff;padding:clamp(1.7rem,3vw,2.6rem)}
.lancement-txt{display:flex;flex-direction:column;gap:.7rem;align-items:flex-start}
.lancement-tag{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;
  color:var(--mint)}
.lancement h3{font-family:var(--display);font-size:clamp(1.4rem,2.4vw,2rem);font-weight:600;
  letter-spacing:-.03em;line-height:1.15;color:#fff}
.lancement p{font-size:1rem;line-height:1.6;color:rgba(255,255,255,.75);max-width:min(38rem,100%)}
.lancement-note{font-size:.85rem!important;color:rgba(255,255,255,.5)!important;
  padding-top:.6rem;border-top:1px solid rgba(255,255,255,.14);width:100%}
.lancement-prix{display:flex;flex-direction:column;gap:.5rem;align-items:flex-start;
  padding-left:clamp(0rem,2vw,2rem);border-left:1px solid rgba(255,255,255,.14)}
.lancement-montant{display:flex;align-items:baseline;gap:.45rem;font-family:var(--display);
  font-size:clamp(2.4rem,4.2vw,3.4rem);font-weight:600;letter-spacing:-.035em;line-height:1;color:#fff}
.lancement-montant em{font-family:var(--font);font-style:normal;font-size:.9rem;font-weight:500;
  letter-spacing:0;color:rgba(255,255,255,.6)}
.lancement-cond{font-size:.88rem;color:var(--rouge-soft)}
.lancement .btn{margin-top:.6rem}
@media(max-width:900px){
  .lancement{grid-template-columns:1fr}
  .lancement-prix{padding-left:0;border-left:0;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.14)}
}

/* ==========================================================================
   PAGES INTÉRIEURES — composants repris de l'accueil
   Mêmes règles que celles validées sur la home : filets d'1px, angles vifs,
   accent rouge réservé aux repères, entrée décalée au défilement.
   ========================================================================== */

/* ---------- Encadrés d'article (note, alerte, complément) ---------- */
/* ENCADRÉS — .note et .honest
   Ils portaient les mises en garde honnêtes du site (139 + 255 blocs), et
   n'étaient qu'un filet vertical posé à côté d'un paragraphe : rien ne les
   séparait du texte courant, ils se lisaient comme une digression.
   Un panneau borné les sort du flux. La teinte s'inverse selon le fond de
   section — un panneau blanc sur une section blanche ne se détache pas. */
.note,.honest{margin-top:1.8rem;max-width:min(56rem,100%);
  display:flex;flex-direction:column;gap:.45rem;
  background:var(--blanc);border:1px solid var(--border);
  border-left:3px solid var(--rouge);padding:clamp(1.1rem,2vw,1.5rem)}
.on-white .note,.on-white .honest{background:var(--rose-bg);border-color:rgba(233,72,47,.18)}
.on-ink .note,.on-ink .honest{background:rgba(255,255,255,.05);border-color:rgba(255,255,255,.14)}
/* Les `note--plus` ne sont pas des mises en garde mais des panneaux
   indicateurs : ils renvoient vers une autre offre. L'aplat menthe leur
   donnait le poids d'un encadré d'alerte pour ce qui n'est qu'un renvoi.
   Un filet haut suffit, et le titre passe en corps display. */
.note.note--plus{background:transparent;border:0;border-top:2px solid var(--teal);
  padding:1.15rem 0 0;gap:.55rem;max-width:min(34rem,100%)}
.on-white .note.note--plus,.on-ink .note.note--plus{background:transparent;border:0;
  border-top:2px solid var(--teal)}
.note--plus > b{font-size:1.12rem;color:var(--teal-dark);margin-bottom:0}
.note--plus > b::before{width:0;height:0;margin:0;
  border-top:.3rem solid transparent;border-bottom:.3rem solid transparent;
  border-left:.42rem solid var(--teal);background:none;
  margin-right:.5rem;vertical-align:.02em}
/* Deux renvois dans la même section se lisent côte à côte, pas l'un sous
   l'autre : ce sont deux portes de sortie, pas une suite. */
.prose:has(> .note--plus + .note--plus){display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1.5rem,3vw,3rem);align-items:start}
.prose:has(> .note--plus + .note--plus) > .note--plus{margin-top:0;max-width:100%}
@media(max-width:760px){
  .prose:has(> .note--plus + .note--plus){grid-template-columns:1fr}
}
.note--alerte{border-left-color:var(--rouge-dark)}
/* Enfants DIRECTS seulement : `.note strong` attrapait aussi les emphases au
   milieu d'un paragraphe et les passait en bloc, coupant la phrase en trois. */
.note > b,.note > strong{display:block;font-family:var(--display);font-size:1.02rem;
  font-weight:600;letter-spacing:-.015em;color:var(--encre);margin-bottom:.15rem}
.note--plus b{color:var(--teal-dark)}
.on-ink .note > b,.on-ink .note > strong{color:#fff}
/* Pastille de tête : elle donne au titre le statut de libellé, et porte la
   couleur de la variante sans que le texte ait à changer de teinte. */
.note > b::before,.honest > b::before{content:"";display:inline-block;
  width:.45rem;height:.45rem;background:var(--rouge);
  margin-right:.6rem;vertical-align:.12em}
.note--plus > b::before{background:var(--teal)}
.note--alerte > b::before{background:var(--rouge-dark)}

/* ---------- Listes et colonnes internes aux articles ---------- */
.art__liste{list-style:none;margin:1.15rem 0 0;padding:0;display:flex;flex-direction:column;gap:.65rem;
  max-width:var(--measure)}
.art__liste li{position:relative;padding-left:1.4rem;font-size:1.04rem;line-height:1.6}
.art__liste li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;background:var(--rouge)}
.art__2,.art__3{display:grid;gap:1px;background:var(--border);border:1px solid var(--border);
  margin-top:1.8rem}
.art__2{grid-template-columns:repeat(2,minmax(0,1fr))}
.art__3{grid-template-columns:repeat(3,minmax(0,1fr))}
.art__2 > *,.art__3 > *{background:var(--blanc);padding:clamp(1.2rem,2vw,1.7rem);margin:0}
.on-off .art__2 > *,.on-off .art__3 > *{background:var(--rose-bg)}
@media(max-width:820px){ .art__2,.art__3{grid-template-columns:1fr} }
.art__lien{display:inline-flex;align-items:center;gap:.4rem;font-weight:500;color:var(--rouge);
  border-bottom:1px solid rgba(233,72,47,.35)}
.art__lien:hover{border-bottom-color:var(--rouge)}
.art__questions{margin-top:1.6rem}
.art__source{font-size:.82rem;color:var(--gris);margin-top:.8rem}

/* ---------- Blocs « ce qui est compris » ---------- */
.feat__head{font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:-.02em;
  color:var(--encre);margin-bottom:.8rem}
.feat__list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.feat__list li{position:relative;padding-left:1.35rem;font-size:.98rem;line-height:1.55;color:var(--encre-2)}
.feat__list li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;background:var(--teal)}

/* ---------- Options et choix ---------- */
.opts{display:grid;gap:.5rem;margin-top:1rem}
.opts--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.opt{display:flex;align-items:flex-start;gap:.7rem;border:1px solid var(--border);
  background:var(--blanc);padding:.85rem 1rem;font-size:.95rem;line-height:1.5}
.opt--check::before{content:"";flex:none;width:7px;height:7px;margin-top:.5rem;background:var(--teal)}
@media(max-width:640px){ .opts--2{grid-template-columns:1fr} }

/* ---------- Divers ---------- */
.tc{text-align:center}
.arem{font-size:.85rem;color:var(--gris);line-height:1.55;margin-top:.7rem}
.brouillon{opacity:.55}
.pricecard__meta{font-size:.82rem;color:var(--gris);margin-top:.5rem}
.detail__main{min-width:0}
.card--out{background:var(--rose-bg)}
.grid{display:grid;gap:1px;background:var(--border)}
.reveal{opacity:1}

/* ---------- Blocs de fonctionnalités en grille de cartes ---------- */
.feat.card{gap:.9rem}
.feat.card .feat__head{margin-bottom:0}
.feat.card .feat__head h3{font-family:var(--display);font-size:clamp(1.05rem,1.35vw,1.25rem);
  font-weight:600;letter-spacing:-.02em;line-height:1.22;color:var(--encre)}
.feat.card .feat__head p{font-size:.94rem;line-height:1.55;color:var(--encre-2);margin-top:.4rem}
.prose .cards{margin-top:1.8rem;max-width:100%}


/* ==========================================================================
   MÉGA-MENUS — panneaux pleine largeur sous la navigation
   Services triés par catégorie avec pictogrammes, un bloc d'appel à droite.
   ========================================================================== */
.nav-item{position:relative;display:flex;align-items:center}
.nav-trigger{display:flex;align-items:center;gap:.35rem}
.nav-chev{width:11px;height:11px;flex:none;transition:transform .3s var(--ease);opacity:.6}
.nav-item.is-open .nav-chev{transform:rotate(180deg);opacity:1}
.nav-item.is-open > .nav-trigger{color:var(--rouge)}
.nav-item.is-open > .nav-trigger::after{width:100%}

.mega{position:absolute;left:-1px;right:-1px;top:calc(100% + .5rem);z-index:190;background:var(--blanc);
  border:1px solid var(--border);
  box-shadow:0 30px 60px -30px rgba(38,38,43,.35);
  opacity:0;transform:translateY(-8px);pointer-events:none;
  transition:opacity .28s var(--ease),transform .28s var(--ease)}
/* Le panneau a la largeur de la barre : ses marges internes sont celles d'une
   carte, pas celles de la page. */
.mega > .pad{padding-inline:clamp(1.2rem,2.4vw,2.2rem)}
/* Le pont : l'espace entre la barre et le panneau reste « dedans » pour la souris. */
.mega::before{content:"";position:absolute;left:0;right:0;bottom:100%;height:.6rem}
.mega[hidden]{display:none}
.mega.is-open{opacity:1;transform:none;pointer-events:auto}
.mega-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) minmax(0,.9fr);
  gap:clamp(1.5rem,3vw,2.6rem);padding-block:clamp(1.6rem,2.8vw,2.4rem);align-items:stretch}
.mega-grid > .mega-col + .mega-col{padding-left:clamp(1.5rem,3vw,2.6rem);margin-left:calc(clamp(1.5rem,3vw,2.6rem) * -1);
  border-left:1px solid var(--border)}
.mega-col.is-large{grid-column:span 1}
.mega-link{display:flex;align-items:flex-start;gap:.7rem;padding:.6rem .7rem;margin-left:-.7rem;
  transition:background .25s var(--ease)}
.mega-link:hover{background:var(--off)}
.mega-ico{flex:none;display:flex;align-items:center;justify-content:center;width:1.4rem;height:1.4rem;
  margin-top:.08rem;border:0;background:none;color:var(--gris-clair);
  transition:color .25s var(--ease)}
.mega-ico svg{width:16px;height:16px}
.mega-link:hover .mega-ico{color:var(--rouge)}
.mega-txt{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.mega-txt b{font-size:.92rem;font-weight:600;color:var(--encre);line-height:1.3}
.mega-txt em{font-style:normal;font-size:.78rem;color:var(--gris);line-height:1.35}
.mega-liste{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 .5rem}

.mega-cta{background:var(--encre);color:#fff;padding:clamp(1.2rem,2vw,1.6rem);
  display:flex;flex-direction:column;gap:.8rem;align-items:flex-start}
.mega-cta p{font-size:.88rem;line-height:1.55;color:rgba(255,255,255,.72)}
.mega-cta .btn{margin-top:.2rem}
.mega-tel{font-size:.8rem;color:rgba(255,255,255,.55);border-bottom:1px solid rgba(255,255,255,.2)}
.mega-tel:hover{color:#fff}

/* Sous 1100 px, le panneau garde ses trois colonnes de liens — plus étroites —
   et l'appel passe dessous, en ligne : le panneau reste plus bas que l'écran. */
@media(max-width:1100px){
  .mega-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
  .mega-cta{grid-column:1/-1;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.8rem 1.4rem}
  .mega-cta p{flex:1 1 22rem}
  .mega-cta .btn{margin-top:0}
}
.mega{max-height:calc(100dvh - var(--nav-total) - 1.5rem);overflow:auto}
@media(max-width:991px){ .mega{display:none!important} }

/* Le panneau « Pour qui » n'a que deux colonnes de liens : sa propre grille,
   sinon il laisse un vide à droite dans le gabarit à quatre colonnes. */
.mega-grid.is-pourqui{grid-template-columns:minmax(0,1.2fr) minmax(0,1.2fr) minmax(0,.85fr)}
.mega-grid.is-pourqui .mega-col.is-large .mega-liste{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1100px){ .mega-grid.is-pourqui{grid-template-columns:repeat(2,minmax(0,1fr))} .mega-grid.is-pourqui .mega-cta{grid-column:1/-1} }

/* ==========================================================================
   ASSISTANT DE QUALIFICATION
   ========================================================================== */
.chat{position:fixed;right:clamp(1rem,2.5vw,2rem);bottom:clamp(1rem,2.5vw,2rem);z-index:400;
  display:flex;flex-direction:column;align-items:flex-end;gap:.8rem}
.chat-bulle-btn{position:relative;width:56px;height:56px;border:0;border-radius:50%;cursor:pointer;
  background:var(--rouge);color:#fff;display:flex;align-items:center;justify-content:center;
  box-shadow:0 12px 28px -10px rgba(233,72,47,.55);transition:transform .3s var(--ease),background .3s var(--ease)}
.chat-bulle-btn:hover{background:var(--rouge-dark);transform:translateY(-2px)}
.chat-bulle-btn svg{width:24px;height:24px}
.chat-point{position:absolute;top:4px;right:4px;width:10px;height:10px;border-radius:50%;
  background:var(--mint);border:2px solid var(--rouge)}
.chat.is-open .chat-point{display:none}
.chat-panneau{width:min(23rem,calc(100vw - 2rem));background:var(--blanc);
  border:1px solid var(--border);box-shadow:0 28px 60px -28px rgba(38,38,43,.4);
  display:flex;flex-direction:column;overflow:hidden}
.chat-panneau[hidden]{display:none}
.chat-tete{display:flex;align-items:center;justify-content:space-between;gap:1rem;
  background:var(--encre);color:#fff;padding:.9rem 1rem}
.chat-tete b{display:block;font-family:var(--display);font-size:.95rem;font-weight:600}
.chat-tete span{font-size:.76rem;color:rgba(255,255,255,.6)}
.chat-fermer{background:none;border:0;color:rgba(255,255,255,.7);font-size:1.4rem;line-height:1;
  cursor:pointer;padding:0 .2rem}
.chat-fermer:hover{color:#fff}
.chat-fil{padding:1rem;display:flex;flex-direction:column;gap:.6rem;max-height:15rem;overflow-y:auto}
.chat-bulle{max-width:88%;padding:.7rem .9rem;font-size:.9rem;line-height:1.5}
.chat-bulle.is-bot{background:var(--rose-bg);color:var(--encre);align-self:flex-start}
.chat-bulle.is-moi{background:var(--encre);color:#fff;align-self:flex-end}
.chat-bulle b{font-weight:600}
.chat-zone{padding:0 1rem 1rem;display:flex;flex-direction:column;gap:.4rem}
.chat-choix{text-align:left;background:var(--blanc);border:1px solid var(--border);
  padding:.65rem .8rem;font:inherit;font-size:.88rem;color:var(--encre);cursor:pointer;
  transition:border-color .25s var(--ease),background .25s var(--ease)}
.chat-choix:hover{border-color:var(--rouge);background:var(--rose-bg)}
.chat-cta{display:block;text-align:center;background:var(--rouge);color:#fff;border:0;
  padding:.8rem 1rem;font:inherit;font-size:.9rem;font-weight:500;cursor:pointer;
  transition:background .3s var(--ease)}
.chat-cta:hover{background:var(--rouge-dark);color:#fff}
.chat-secondaire{display:block;text-align:center;background:none;border:0;padding:.5rem;
  font:inherit;font-size:.82rem;color:var(--gris);cursor:pointer}
.chat-secondaire:hover{color:var(--rouge)}
.chat-attente{font-size:.85rem;color:var(--gris-clair);padding:.3rem 0}
.chat-form{display:flex;flex-direction:column;gap:.45rem}
.chat-form input{font:inherit;font-size:.88rem;padding:.65rem .8rem;border:1px solid var(--border);
  background:var(--blanc);color:var(--encre);outline:none}
.chat-form input:focus{border-color:var(--rouge)}
@media(max-width:600px){ .chat-fil{max-height:11rem} }
@media print{ .chat{display:none} }

/* ==========================================================================
   RAIL DE SOMMAIRE — collé à gauche pendant la lecture
   Replié sur les numéros pour ne pas empiéter sur les sections pleine
   largeur ; il se déplie au survol et suit la section courante.
   ========================================================================== */
.tocrail{position:fixed;left:0;top:50%;transform:translateY(-50%);z-index:120;
  padding:.6rem .5rem;background:rgba(255,255,255,.92);backdrop-filter:blur(10px);
  border:1px solid var(--border);border-left:0;
  opacity:0;pointer-events:none;transition:opacity .35s var(--ease)}
.tocrail.is-on{opacity:1;pointer-events:auto}
.tocrail[hidden]{display:none}
.tocrail ol{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.1rem}
.tocrail a{display:flex;align-items:center;gap:.6rem;padding:.4rem .5rem;
  font-size:.82rem;line-height:1.3;color:var(--gris);white-space:nowrap;
  transition:color .3s var(--ease),background .3s var(--ease)}
.tocrail i{font-style:normal;font-family:var(--display);font-size:.68rem;font-weight:600;
  color:var(--gris-clair);flex:none;width:1.1rem;transition:color .3s var(--ease)}
.tocrail span{max-width:0;overflow:hidden;opacity:0;
  transition:max-width .4s var(--ease),opacity .3s var(--ease)}
.tocrail:hover span,.tocrail:focus-within span{max-width:15rem;opacity:1}
.tocrail a:hover{color:var(--encre);background:var(--rose-bg)}
.tocrail li.is-on a{color:var(--encre)}
.tocrail li.is-on i{color:var(--rouge)}
.tocrail li.is-on a::before{content:"";position:absolute;left:0;width:2px;height:1.6rem;background:var(--rouge)}
.tocrail li{position:relative}
@media(max-width:1200px){ .tocrail{display:none} }

/* ==========================================================================
   BLOG — recherche et filtres
   Une barre de recherche large, des rubriques en pastilles avec leur nombre
   d'articles, les étiquettes en second rideau. Même vocabulaire que le reste.
   ========================================================================== */
.blogbar{display:flex;flex-wrap:wrap;align-items:center;gap:1rem 1.5rem;margin-bottom:1.8rem}
.blogbar > *{min-width:0}
.rech--blog{position:relative;display:block;flex:1 1 20rem;max-width:none;margin-top:0}
.rech--blog::before{content:"";position:absolute;left:1rem;top:50%;transform:translateY(-50%);z-index:1;width:16px;height:16px;
  background:var(--gris-clair);pointer-events:none;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.8'%3E%3Ccircle cx='9' cy='9' r='6'/%3E%3Cpath d='M13.5 13.5 18 18'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%23000' stroke-width='1.8'%3E%3Ccircle cx='9' cy='9' r='6'/%3E%3Cpath d='M13.5 13.5 18 18'/%3E%3C/svg%3E") center/contain no-repeat}
.rech--blog input{display:block;width:100%;box-sizing:border-box;font:inherit;font-size:1.02rem;padding:1rem 1rem 1rem 2.9rem;
  border:1px solid var(--border);background:var(--blanc);color:var(--encre);outline:none;
  transition:border-color .3s var(--ease)}
.rech--blog input:focus{border-color:var(--rouge)}
.rech--blog input::placeholder{color:var(--gris-clair)}
.blogbar__compte{font-size:.88rem;color:var(--gris);white-space:nowrap;font-variant-numeric:tabular-nums}

.filtres{display:flex;flex-wrap:wrap;gap:.45rem;margin-bottom:.9rem;position:relative;z-index:1}
.filtre{display:inline-flex;align-items:center;gap:.45rem;background:var(--blanc);
  border:1px solid var(--border);padding:.55rem .9rem;font:inherit;font-size:.88rem;
  color:var(--encre-2);cursor:pointer;
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}
.filtre:hover{border-color:var(--gris-clair);color:var(--encre)}
.filtre i{font-style:normal;font-size:.74rem;color:var(--gris-clair);font-variant-numeric:tabular-nums}
.filtre.is-actif{background:var(--encre);border-color:var(--encre);color:#fff}
.filtre.is-actif i{color:rgba(255,255,255,.55)}
.filtres--tags{gap:.35rem}
.filtre--tag{padding:.4rem .7rem;font-size:.8rem;background:transparent}
.filtre--tag.is-actif{background:var(--rouge);border-color:var(--rouge);color:#fff}
.filtres__plus{background:none;border:0;font:inherit;font-size:.82rem;color:var(--rouge);
  cursor:pointer;padding:.4rem 0;text-decoration:underline}

.posts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;
  background:var(--border);border:1px solid var(--border);margin-top:1.6rem}
.post{background:var(--blanc);display:flex;flex-direction:column;
  transition:background .4s var(--ease)}
.post:hover{background:var(--rose-bg)}
.post[hidden]{display:none}
.post__img{display:block;aspect-ratio:16/10;overflow:hidden;background:var(--saumon)}
.post__img img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease)}
.post:hover .post__img img{transform:scale(1.05)}
.post__txt{padding:1.3rem;display:flex;flex-direction:column;gap:.6rem;flex:1}
.post__cat{align-self:flex-start;font-size:.7rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--teal)}
.post__txt h3{font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.022em;
  line-height:1.22}
.post__txt h3 a{color:var(--encre)}
.post:hover h3 a{color:var(--rouge)}
.post__txt > p{font-size:.92rem;line-height:1.5;color:var(--encre-2)}
.post__tags{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.3rem}
.post__tags li{font-size:.72rem;color:var(--gris);border:1px solid var(--border);
  padding:.2rem .5rem}
.post__meta{margin-top:auto;padding-top:.9rem;font-size:.74rem;text-transform:uppercase;
  letter-spacing:.05em;color:var(--gris-clair)}
.blogvide{grid-column:1/-1;background:var(--blanc);padding:3.5rem 1.5rem;text-align:center;
  color:var(--gris);font-size:.98rem}
@media(max-width:1000px){ .posts{grid-template-columns:repeat(2,minmax(0,1fr))} .blogbar{grid-template-columns:1fr} }
@media(max-width:640px){ .posts{grid-template-columns:1fr} }

/* ==========================================================================
   EN-TÊTE D'ARTICLE : L'IMAGE SE REPLIE AU SCROLL
   --------------------------------------------------------------------------
   Au chargement : le bloc de titre, puis l'image en 5/2 pleine largeur.
   Au scroll : le titre reste fixe à l'écran (translaté vers le bas d'autant
   qu'on défile), pendant que l'image glisse vers la colonne de droite et
   passe en 4/3. Le corps de l'article remonte au même rythme que le bas de
   l'image : aucun vide ne se crée.

   La hauteur de la section ne change JAMAIS — c'est ce qui garantit qu'il
   n'y a ni saut ni espace résiduel. Toute la course est payée par la cale
   (`.artfold-cale`, dimensionnée en 5/2) que l'image libère en rétrécissant.
   Les mesures et l'interpolation sont dans site.js, module 4 ter.
   ========================================================================== */
.artfold{position:relative;background:var(--blanc);
  padding-top:calc(var(--nav-total) + clamp(1.1rem,2.4vh,1.8rem));
  padding-bottom:clamp(2.6rem,4.5vw,4rem);overflow:hidden}

.artfold-head{position:relative;z-index:2}
.artfold-head .crumbs{width:fit-content;max-width:100%;background:var(--blanc);
  padding-right:1rem;margin-bottom:1.9rem}
.artfold-grid{display:grid;grid-template-columns:minmax(0,1.12fr) minmax(0,.88fr);
  gap:clamp(1.5rem,4vw,4rem);align-items:start}

/* Plateau blanc sous le texte : pendant le repli, l'image passe DERRIÈRE le
   titre au lieu de le traverser. Même blanc que la section, donc invisible. */
.artfold-copy{position:relative;z-index:2;background:var(--blanc);
  display:flex;flex-direction:column;gap:1.25rem;align-items:flex-start;
  max-width:min(46rem,100%);padding:.2rem 1.6rem .9rem 0}
.artfold h1{font-family:var(--display);font-size:clamp(2.1rem,4.8vw,4.2rem);
  font-weight:600;line-height:1;letter-spacing:-.035em;text-wrap:balance}
.artfold h1 em{font-style:normal;color:var(--rouge)}
.artfold-lead{font-size:clamp(1.05rem,1.3vw,1.32rem);line-height:1.55;
  color:var(--encre-2);max-width:min(38rem,100%)}

/* Emplacement d'arrivée : il ne sert qu'à mesurer la colonne de droite,
   il ne doit donc peser aucune hauteur. */
.artfold-slot{height:0}

/* Cale : réserve la place de l'image pleine largeur. Sa hauteur est fixe,
   l'image se déplace à l'intérieur. */
.artfold-cale{position:relative;width:100%;aspect-ratio:5/2;
  margin-top:clamp(1.6rem,3vw,2.6rem)}
.artfold-fig{position:absolute;left:0;top:0;width:100%;height:100%;
  margin:0;overflow:hidden;background:var(--saumon);will-change:width,height}
.artfold-fig img{width:100%;height:100%;object-fit:cover;display:block}

@media(max-width:900px){
  .artfold-grid{grid-template-columns:1fr}
  .artfold-copy{padding-right:0;background:none}
  .artfold-cale{aspect-ratio:16/10}
}

/* La section d'article suit immédiatement l'en-tête replié : elle n'a pas
   besoin de son plein retrait haut, l'en-tête a déjà le sien. */
.artfold + .sec{padding-top:clamp(1.6rem,3vw,2.6rem)}

/* ==========================================================================
   BLOG — BANDEAU DE FILTRES, GRILLE 2 COLONNES, ENCART CTA
   --------------------------------------------------------------------------
   Le bandeau vit DANS la section des articles : c'est ce qui permet à sa
   barre haute de rester collée pendant tout le défilement de la liste.
   Les compteurs des pastilles sont recalculés à chaque changement — chacun
   annonce ce que SON activation donnerait, compte tenu des autres filtres.
   ========================================================================== */
#articles.sec-pad{padding-top:clamp(1.4rem,2.6vw,2.2rem)}

.bandeau{background:var(--blanc);border:1px solid var(--border);border-top:0;
  margin-bottom:clamp(1.4rem,2.4vw,2rem)}

/* ---------- Barre haute : recherche, tri, compteur ----------
   Elle est sœur de la liste, pas fille du bandeau : son bloc conteneur
   couvre ainsi les 30 cartes, et elle reste collée pendant tout le
   défilement au lieu de décrocher au bout de trois lignes. */
.bandeau__barre{position:sticky;top:calc(var(--nav-total) + .5rem);z-index:60;display:grid;
  grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:.9rem 1.1rem;
  padding:.85rem clamp(.9rem,1.8vw,1.3rem);background:var(--blanc);
  border:1px solid var(--border);
  box-shadow:0 1px 0 rgba(23,20,19,.04),0 10px 22px -18px rgba(23,20,19,.5)}
.bandeau .rech--blog{margin:0;max-width:none}
.bandeau .rech--blog input{padding-left:2.9rem;padding-block:.8rem;font-size:.98rem}
.bandeau .rech--blog::before{content:"";position:absolute;left:1rem;top:50%;margin-top:-9px;
  width:18px;height:18px;background:var(--rouge);pointer-events:none;z-index:1;
  -webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") center/contain no-repeat;
  mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") center/contain no-repeat}
.rech__vider{position:absolute;right:.55rem;top:50%;transform:translateY(-50%);
  width:26px;height:26px;border:0;border-radius:50%;background:var(--border);color:var(--encre);
  font-size:1rem;line-height:1;cursor:pointer;transition:background .25s var(--ease)}
.rech__vider:hover{background:var(--rouge);color:#fff}

.tri{font:inherit;font-size:.88rem;color:var(--encre-2);background:var(--blanc);
  border:1px solid var(--border);padding:.72rem 2.1rem .72rem .85rem;cursor:pointer;
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23807b79' stroke-width='2' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right .7rem center;background-size:15px}
.tri:hover{border-color:var(--gris-clair)}
.tri:focus{outline:none;border-color:var(--rouge)}
.bandeau__compte{font-size:.85rem;color:var(--gris);white-space:nowrap;
  font-variant-numeric:tabular-nums;margin:0}
.bandeau__compte b{color:var(--encre);font-weight:600}

/* ---------- Facettes ---------- */
.facettes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1.1rem clamp(1.2rem,2.4vw,2rem);padding:clamp(1rem,1.8vw,1.35rem)}
.facette--large{grid-column:1/-1}
.facette__lab{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--gris);margin:0 0 .6rem}
.facette__chips{display:flex;flex-wrap:wrap;gap:.4rem}

.chip-f{display:inline-flex;align-items:center;gap:.4rem;background:var(--blanc);
  border:1px solid var(--border);padding:.46rem .8rem;font:inherit;font-size:.85rem;
  color:var(--encre-2);cursor:pointer;
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}
.chip-f:hover{border-color:var(--gris-clair);color:var(--encre)}
.chip-f i{font-style:normal;font-size:.72rem;color:var(--gris-clair);font-variant-numeric:tabular-nums}
.chip-f[aria-pressed="true"]{background:var(--encre);border-color:var(--encre);color:#fff}
.chip-f[aria-pressed="true"] i{color:rgba(255,255,255,.55)}
.chip-f--tag{font-size:.8rem;padding:.38rem .7rem}
.chip-f--tag[aria-pressed="true"]{background:var(--rouge);border-color:var(--rouge)}
/* Une pastille qui ne donnerait aucun résultat reste lisible mais s'efface. */
.chip-f[disabled]{opacity:.34;cursor:not-allowed;border-style:dashed}
.chip-f[disabled]:hover{border-color:var(--border);color:var(--encre-2)}
.facette__plus{margin-top:.7rem;background:none;border:0;font:inherit;font-size:.82rem;
  color:var(--rouge);cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px}

/* ---------- Filtres actifs ---------- */
.bandeau__actifs{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem .8rem;
  padding:.85rem clamp(.9rem,1.8vw,1.3rem);border-top:1px solid var(--border);
  background:var(--rose-bg)}
.bandeau__actifs[hidden]{display:none}
.bandeau__actifs-lab{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--gris)}
.actifs{display:flex;flex-wrap:wrap;gap:.4rem;flex:1}
.actif{display:inline-flex;align-items:center;gap:.45rem;background:var(--encre);color:#fff;
  border:0;font:inherit;font-size:.8rem;padding:.36rem .5rem .36rem .75rem;
  cursor:pointer;transition:background .25s var(--ease)}
.actif:hover{background:var(--rouge)}
.actif::after{content:"×";font-size:.95rem;line-height:1;opacity:.7}
.bandeau__reset{background:none;border:0;font:inherit;font-size:.83rem;color:var(--rouge);
  cursor:pointer;padding:0;text-decoration:underline;text-underline-offset:3px;white-space:nowrap}

/* ---------- Grille 2 colonnes ---------- */
.posts{grid-template-columns:repeat(2,minmax(0,1fr))}
.posts .post__img{aspect-ratio:16/9}
.posts .post__txt{padding:clamp(1.3rem,2.2vw,1.8rem);gap:.7rem}
.posts .post__txt h3{font-size:clamp(1.2rem,1.9vw,1.55rem);line-height:1.18;letter-spacing:-.025em}
.posts .post__txt > p{font-size:.98rem;line-height:1.55}
.post[hidden]{display:none}

/* ---------- Encart CTA au milieu de la grille ---------- */
.post-cta{grid-column:1/-1;background:var(--encre);color:#fff;
  display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,.65fr);
  gap:clamp(1.4rem,3vw,3rem);padding:clamp(1.7rem,3vw,2.6rem)}
.post-cta[hidden]{display:none}
.post-cta__txt{display:flex;flex-direction:column;align-items:flex-start;gap:1rem}
.post-cta h3{font-family:var(--display);font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:600;
  letter-spacing:-.03em;line-height:1.12;color:#fff;max-width:20ch;text-wrap:balance}
.post-cta p{font-size:1rem;line-height:1.6;color:rgba(255,255,255,.74);max-width:46ch}
.post-cta__tel{font-size:.87rem;color:rgba(255,255,255,.5)}
.post-cta__tel a{color:#fff;border-bottom:1px solid rgba(255,255,255,.35)}
.post-cta__tel a:hover{border-bottom-color:var(--rouge-soft)}
.post-cta__chiffres{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;
  gap:1.1rem;justify-content:center;border-left:1px solid rgba(255,255,255,.14);
  padding-left:clamp(1.2rem,2.4vw,2rem)}
.post-cta__chiffres li{display:flex;flex-direction:column;gap:.15rem}
.post-cta__chiffres b{font-family:var(--display);font-size:clamp(1.7rem,2.8vw,2.3rem);
  font-weight:600;letter-spacing:-.035em;line-height:1;color:var(--rouge-soft)}
.post-cta__chiffres span{font-size:.8rem;text-transform:uppercase;letter-spacing:.06em;
  color:rgba(255,255,255,.55)}

@media(max-width:1000px){
  .bandeau__barre{grid-template-columns:1fr auto;padding-bottom:.7rem}
  .bandeau__compte{grid-column:1/-1}
  .facettes{grid-template-columns:1fr}
  .post-cta{grid-template-columns:1fr}
  .post-cta__chiffres{flex-direction:row;flex-wrap:wrap;gap:1.4rem;border-left:0;padding-left:0;
    border-top:1px solid rgba(255,255,255,.14);padding-top:1.3rem}
}
@media(max-width:640px){
  .posts{grid-template-columns:1fr}
  .bandeau__barre{grid-template-columns:1fr}
}

/* Le chapô d'article vit hors section : il lui faut le même souffle que les
   séparations d'entre-sections, mais sans le filet, qui le couperait du texte
   qu'il introduit. */
.artbody > .prose + section{margin-top:clamp(2.2rem,4vw,3.2rem)}

/* Renvoi contextuel entre deux sections d'article : discret, mais placé là
   où le lecteur vient de finir une idée — le seul endroit où un lien
   interne est réellement suivi. */
.lireaussi{display:flex;flex-wrap:wrap;align-items:baseline;gap:.5rem .8rem;
  margin:clamp(1.8rem,3vw,2.4rem) 0 0;padding:.9rem 1.1rem;
  background:var(--mint);border-left:2px solid var(--teal)}
.lireaussi span{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--teal)}
.lireaussi a{font-size:1rem;line-height:1.4;color:var(--teal-dark);font-weight:500;
  border-bottom:1px solid rgba(14,92,100,.3);transition:border-color .3s var(--ease)}
.lireaussi a:hover{border-bottom-color:var(--teal)}

/* ==========================================================================
   POUR QUI : LES SIX FAMILLES EN ÉTAPES ÉPINGLÉES
   --------------------------------------------------------------------------
   Même mécanique que la méthode de l'accueil, mais le contenu d'une famille
   est plus dense qu'une étape : on le pose en deux colonnes internes plutôt
   qu'en pile, sans quoi le bloc dépasse la hauteur d'écran pendant
   l'épinglage et se retrouve tronqué.
   ========================================================================== */
.vfam{display:grid;grid-template-columns:minmax(0,.62fr) minmax(0,1fr);
  gap:clamp(1rem,2vw,1.7rem);align-items:start;width:100%;margin-top:.5rem}
.vfam__media{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--saumon)}
.vfam__media img{width:100%;height:100%;object-fit:cover;display:block}
.vfam__corps{display:flex;flex-direction:column;gap:1rem}
.vfam__phrase{font-size:clamp(.95rem,1.1vw,1.05rem);line-height:1.5;
  color:var(--encre-2);font-style:italic;max-width:44ch}
.vfam__duo{display:grid;grid-template-columns:1fr;gap:1.05rem}
.vfam__duo .fam__liste{gap:.5rem}
.vfam__duo .fam__liste li{font-size:.9rem;line-height:1.45}

@media(min-width:1200px){ .vfam__duo{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem} }
@media(max-width:900px){
  .vfam{grid-template-columns:1fr}
  .vfam__media{aspect-ratio:16/9}
}

/* ==========================================================================
   POUR QUI — HÉROS SANS VISUEL, RECHERCHE EN COLONNE DE DROITE
   ========================================================================== */
/* Sans visuel, le héros n'a plus à occuper la hauteur d'écran : on retire
   le retrait bas, la section suivante enchaîne directement. */
.hero--nu{min-height:auto;padding-bottom:0}
.hero--nu .hero-bottom{padding-bottom:0}
.hero--nu .hero-top{padding-top:clamp(6rem,12vh,9rem)}
.hero--nu .hero-grid{align-items:start;gap:clamp(2rem,5vw,4.5rem)}
.hero-cherche{display:flex;flex-direction:column;gap:.5rem}
.hero-cherche__lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--gris)}
.hero-cherche .rech{margin-top:.4rem;max-width:none}

/* ---------- Les six familles, toutes affichées ---------- */
.famlist{display:flex;flex-direction:column;margin-top:2.2rem}
.famrow{padding:clamp(1.8rem,3.4vw,2.8rem) 0;border-top:1px solid var(--border);
  scroll-margin-top:calc(var(--nav-total) + 1rem)}
.famrow:last-child{border-bottom:1px solid var(--border)}
.famrow__tete{display:flex;align-items:baseline;gap:1rem;margin-bottom:1.2rem}
.famrow__n{font-family:var(--display);font-size:.78rem;font-weight:600;
  letter-spacing:.11em;color:var(--rouge)}
.famrow__n::before{content:"Famille "}
.famrow h3{font-family:var(--display);font-size:clamp(1.35rem,2.2vw,1.9rem);
  font-weight:600;letter-spacing:-.025em;line-height:1.15}
.famrow__pied{font-size:.86rem;line-height:1.5;color:var(--gris);
  padding-top:.9rem;border-top:1px dotted var(--border)}

/* ---------- « Pas pour vous » : des lignes, pas des cartes ----------
   Quatre cartes serrées sur fond encre se lisent mal : le texte y est étroit
   et la hiérarchie plate. En lignes pleine largeur, le cas se distingue de
   sa raison, et l'ensemble se parcourt d'un regard. */
.exclus{list-style:none;margin:2.2rem 0 0;padding:0;display:flex;flex-direction:column}
.exclu{display:grid;grid-template-columns:auto minmax(0,.9fr) minmax(0,1.3fr);
  gap:clamp(1rem,2.4vw,2.2rem);align-items:start;
  padding:clamp(1.2rem,2.2vw,1.7rem) 0;border-top:1px solid rgba(255,255,255,.14)}
.exclu:last-child{border-bottom:1px solid rgba(255,255,255,.14)}
.exclu__marque{position:relative;width:22px;height:22px;margin-top:.2rem;flex:none;
  border:1px solid var(--rouge-soft);border-radius:50%}
.exclu__marque::before,.exclu__marque::after{content:"";position:absolute;left:5px;top:10px;
  width:10px;height:1.5px;background:var(--rouge-soft)}
.exclu__marque::before{transform:rotate(45deg)}
.exclu__marque::after{transform:rotate(-45deg)}
.exclu__cas{font-family:var(--display);font-size:clamp(1.02rem,1.5vw,1.25rem);
  font-weight:600;letter-spacing:-.02em;line-height:1.25;color:#fff}
.exclu__pourquoi{font-size:.98rem;line-height:1.6;color:rgba(255,255,255,.74)}
.exclu__pourquoi a{color:var(--rouge-soft)}
@media(max-width:820px){
  .exclu{grid-template-columns:auto minmax(0,1fr);gap:.9rem 1rem}
  .exclu__pourquoi{grid-column:2}
}

/* ---------- Index des métiers en pastilles ----------
   Une colonne de 33 entrées à côté d'une colonne de 8 laissait vingt-cinq
   lignes de vide. En pastilles, chaque famille prend la largeur utile et
   s'arrête où elle finit. */
.famindex{padding:clamp(1.3rem,2.4vw,1.9rem) 0;border-top:1px solid var(--border)}
.famindex:last-of-type{border-bottom:1px solid var(--border)}
.famindex__lab{display:flex;align-items:baseline;gap:.6rem;margin:0 0 .9rem;
  font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.015em}
.famindex__lab i{font-style:normal;font-size:.76rem;font-weight:500;color:var(--gris-clair);
  font-variant-numeric:tabular-nums}
.famindex__chips{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.famindex__chips a{display:inline-block;border:1px solid var(--border);
  padding:.4rem .8rem;font-size:.86rem;color:var(--encre-2);
  transition:border-color .25s var(--ease),color .25s var(--ease),background .25s var(--ease)}
.famindex__chips a:hover{border-color:var(--rouge);color:var(--rouge);background:var(--rose-bg)}

/* ==========================================================================
   CARTE EN DEUX TEMPS : FRANCE → RÉGION → VILLE
   --------------------------------------------------------------------------
   Le texte et la fiche de la commune occupent la moitié gauche, la carte la
   moitié droite. Le contour de la France est tracé à partir de coordonnées
   réelles ; les régions sont des repères posés sur leur centre, pas des
   polygones de frontières — celles-ci seraient approximatives.
   ========================================================================== */
.cartegrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(2rem,4vw,4rem);align-items:start}
.cartegrid__txt{display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start}
.cartegrid__txt .lead{max-width:var(--measure)}
.cartegrid__carte{position:sticky;top:6.5rem}

.cartes{background:var(--blanc);border:1px solid var(--border);
  padding:clamp(1rem,2vw,1.6rem)}
.cartes__lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--gris);margin:0 0 .7rem}
.cartes__note{font-size:.78rem;line-height:1.45;color:var(--gris-clair);margin:.8rem 0 0}
.cartes__tete{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem;margin-bottom:.7rem}
.cartes__retour{background:none;border:1px solid var(--border);
  font:inherit;font-size:.8rem;color:var(--encre-2);padding:.35rem .8rem;cursor:pointer;
  transition:border-color .25s var(--ease),color .25s var(--ease)}
.cartes__retour:hover{border-color:var(--rouge);color:var(--rouge)}
.cartes__tete .cartes__lab{margin:0}
[data-etape][hidden]{display:none}

.cfrance__svg,.cregion__svg{display:block;width:100%;height:auto}
.cfrance__terre{fill:var(--rose-bg);stroke:var(--border);stroke-width:1.2;
  stroke-linejoin:round}

/* Repère de région : une pastille, agrandie au survol. Les régions non
   encore couvertes restent visibles mais inertes — elles annoncent la suite. */
.creg{cursor:default}
.creg__halo{fill:transparent}
.creg__pt{fill:var(--gris-clair);transition:r .25s var(--ease),fill .25s var(--ease)}
.creg.is-actif{cursor:pointer}
.creg.is-actif .creg__pt{fill:var(--rouge)}
.creg.is-actif .creg__halo{fill:rgba(233,72,47,.12);transition:fill .25s var(--ease)}
.creg.is-actif:hover .creg__pt,.creg.is-actif:focus-visible .creg__pt{r:9}
.creg.is-actif:hover .creg__halo,.creg.is-actif:focus-visible .creg__halo{fill:rgba(233,72,47,.22)}
.creg.is-bientot .creg__pt{fill:var(--border)}
.creg:focus{outline:none}
.creg:focus-visible .creg__halo{stroke:var(--rouge);stroke-width:1.5}

/* Contours communaux réels (source IGN/INSEE via geo.api.gouv.fr).
   Les communes non accompagnées sont tracées en gris : sans elles, la zone
   couverte flotterait dans le vide et on ne verrait pas ce qu'elle pèse. */
/* Étape 1 : les treize régions, avec leur contour officiel. On clique la
   région elle-même, pas un point posé à côté. */
.creg-zone{fill:var(--rose-bg);stroke:var(--border);stroke-width:1.1;cursor:pointer;
  transition:fill .25s var(--ease),stroke .25s var(--ease)}
.creg-zone:hover,.creg-zone:focus-visible{fill:var(--saumon);stroke:var(--rouge);outline:none}
.creg-zone.is-bientot{fill:var(--blanc);cursor:default}
.creg-nb{pointer-events:none}
.creg-nb circle{fill:var(--rouge);opacity:.9}
.creg-nb text{fill:#fff;font-size:12.5px;font-weight:600;text-anchor:middle;
  font-family:var(--font)}
/* Étape 2 : la région seule, ses villes posées dessus. */
.cregion__terre{fill:var(--rose-bg);stroke:var(--rouge);stroke-width:1.3;stroke-linejoin:round}
.cregion__mer{fill:var(--mint);opacity:.35}
.ccom{fill:var(--blanc);stroke:var(--border);stroke-width:.55;
  stroke-linejoin:round;opacity:.75}
.ccoms .ccom:hover{fill:var(--rose-bg)}
.ccom.is-couverte{fill:var(--saumon);stroke:var(--rouge);stroke-width:.9;
  opacity:1;cursor:pointer;transition:fill .25s var(--ease)}
.ccom.is-couverte:hover{fill:var(--rouge-soft)}
.ccom.is-couverte.is-on{fill:var(--rouge);stroke:var(--rouge-dark);stroke-width:1.4}
.cville{cursor:pointer}
.cville__halo{fill:transparent;transition:fill .25s var(--ease)}
.cville__pt{fill:var(--encre);transition:r .25s var(--ease),fill .25s var(--ease)}
/* Au plus sept villes par région, largement espacées : les noms peuvent rester
   affichés. Le liseré blanc les détache du contour, et les étiquettes qui se
   chevaucheraient sont décalées à la génération (outils/carte_fr.py). */
.cville__nom{font-size:12px;fill:var(--encre);font-weight:500;
  opacity:.9;pointer-events:none;transition:opacity .2s var(--ease);
  paint-order:stroke;stroke:var(--blanc);stroke-width:3.5px;stroke-linejoin:round}
.cville__nom.is-gauche{text-anchor:end}
.cville:hover .cville__nom,.cville:focus-visible .cville__nom,
.cville.is-on .cville__nom{opacity:1}
.cville.is-on .cville__nom{fill:var(--rouge)}
.cville:hover .cville__pt,.cville:focus-visible .cville__pt,
.cville.is-on .cville__pt{fill:var(--rouge);r:7}
.cville:hover .cville__halo,.cville:focus-visible .cville__halo,
.cville.is-on .cville__halo{fill:rgba(233,72,47,.15)}
.cville:hover .cville__nom,.cville.is-on .cville__nom{fill:var(--rouge);font-weight:600}
.cville:focus{outline:none}

/* ---------- Fiche de la commune, sous le titre ---------- */
.villecards{width:100%;margin-top:.4rem}
.villecards__vide{font-size:.9rem;color:var(--gris);border:1px dashed var(--border);
  padding:1.1rem 1.2rem;margin:0}
.villecard{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr);
  gap:clamp(1rem,2vw,1.5rem);background:var(--blanc);border:1px solid var(--border);
  padding:clamp(1rem,1.8vw,1.4rem);align-items:center}
.villecard[hidden]{display:none}
.villecard__img{margin:0;aspect-ratio:4/3;overflow:hidden;background:var(--saumon)}
.villecard__img img{width:100%;height:100%;object-fit:cover;display:block}
.villecard__corps{display:flex;flex-direction:column;gap:.6rem;align-items:flex-start}
.villecard__dep{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--teal)}
.villecard h3{font-family:var(--display);font-size:clamp(1.2rem,1.9vw,1.6rem);
  font-weight:600;letter-spacing:-.025em;line-height:1.15}
.villecard__txt{font-size:.95rem;line-height:1.5;color:var(--encre-2)}

@media(max-width:1000px){
  /* Sur un écran étroit, la liste des villes doit suivre le tracé de la
     région, pas attendre sous le texte : le bloc de gauche se dissout pour
     que ses morceaux et la carte se rangent dans le même ordre. */
  .cartegrid{grid-template-columns:1fr;row-gap:1.1rem}
  .cartegrid__txt{display:contents}
  .cartegrid__txt > .h2,.cartegrid__txt > h2{order:1}
  .cartegrid__txt > .lead{order:2}
  .cartegrid__carte{position:static;order:3}
  .cartegrid__txt > .villecards__vide,.cartegrid__txt > .villeliste{order:4}
  .cartegrid__txt > .fnote{order:5}
}
@media(max-width:640px){
  .villecard{grid-template-columns:1fr}
  .cville__nom{font-size:13px}
}

/* Dans les listes de famille, le repère en gras ouvre la ligne : sans passage
   à la ligne, la citation et son explication se touchent et le sens se perd. */
.vfam__duo .fam__liste li b{display:block;margin-bottom:.18rem;color:var(--encre);
  font-weight:600;line-height:1.35}
.vfam__duo .fam__liste li{color:var(--encre-2)}

/* ==========================================================================
   POUR QUI — UNE CARTE PAR FAMILLE, EN GRILLE DE DEUX
   --------------------------------------------------------------------------
   À mi-largeur d'écran, deux listes côte à côte tombaient à quatre mots par
   ligne. La carte se lit donc de haut en bas : photo, nom, phrase, puis les
   deux listes l'une sous l'autre — chacune sur toute la largeur utile.
   ========================================================================== */
.famcards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:1px;background:var(--border);border:1px solid var(--border);margin-top:2.2rem}
.famc{background:var(--blanc);display:flex;flex-direction:column;
  scroll-margin-top:calc(var(--nav-total) + 1rem);transition:background .4s var(--ease)}
.famc:hover{background:var(--rose-bg)}
.famc__media{position:relative;margin:0;aspect-ratio:16/9;overflow:hidden;background:var(--saumon)}
.famc__media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .8s var(--ease)}
.famc:hover .famc__media img{transform:scale(1.04)}
.famc__corps{padding:clamp(1.3rem,2.2vw,1.9rem);display:flex;flex-direction:column;
  gap:1rem;flex:1}
.famc h3{font-family:var(--display);font-size:clamp(1.2rem,1.8vw,1.55rem);
  font-weight:600;letter-spacing:-.025em;line-height:1.18}
.famc__phrase{font-size:.98rem;line-height:1.5;color:var(--encre-2);font-style:italic;
  padding-bottom:1rem;border-bottom:1px solid var(--border)}

.famc__pistes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.9rem}
.famc__pistes li{position:relative;padding-left:1.15rem}
.famc__pistes li::before{content:"";position:absolute;left:0;top:.52em;
  width:5px;height:5px;background:var(--rouge)}
.famc__pistes b{display:block;font-weight:600;font-size:.96rem;line-height:1.35;color:var(--encre)}
.famc__pistes span{display:block;margin-top:.2rem;font-size:.9rem;line-height:1.5;color:var(--gris)}
.famc__pied{margin-top:auto;padding-top:1rem;border-top:1px dotted var(--border);
  font-size:.84rem;line-height:1.5;color:var(--gris)}

@media(max-width:900px){ .famcards{grid-template-columns:1fr} }

/* ==========================================================================
   HÉROS DES PAGES SERVICE — deux colonnes
   Le titre ne barre plus toute la largeur : il tient dans la colonne de
   gauche avec l'accroche et les boutons, les trois faits lui répondent à
   droite. Chacun porte un pictogramme, et l'ensemble se passe de libellé —
   trois lignes courtes se lisent sans qu'on les annonce.
   ========================================================================== */
/* Un plancher, sinon l'en-tête d'une offre au titre court se réduit à une
   bande et ne fait plus office d'ouverture. `center` parce que le bloc est
   désormais unique : `space-between` le collerait en haut. */
.hero--offre{min-height:min(78svh,45rem);justify-content:center;
  padding-top:clamp(5.5rem,11vh,8rem);padding-bottom:clamp(2.5rem,5vw,4rem)}
/* Colonnes calées sur la moitié exacte de la zone de texte : le filet du
   décor tombe alors pile entre les deux, au lieu de doubler à 35 px près. */
.hero--offre .hero-grid{align-items:center;gap:0;grid-template-columns:1fr 1fr}
.hero--offre .hero-copy{max-width:none;gap:1.1rem;
  padding-right:clamp(1.5rem,3.5vw,3.5rem)}
.hero--offre .crumbs{margin-bottom:0}
/* Sur une demi-largeur, le corps de l'accueil (jusqu'à 5,25 rem) partirait
   en six lignes : on descend d'un cran sans quitter la même famille. */
.hero--offre .hero-title{max-width:none;margin:.25rem 0 .35rem;
  font-size:clamp(2.2rem,4.7vw,4rem);line-height:1.02}
.hero--offre .btn-row{margin-top:.4rem}

.hero-faits{list-style:none;margin:0;padding:0 0 0 clamp(1.5rem,3.5vw,3.5rem);
  display:flex;flex-direction:column;gap:1.35rem}
.hero-faits li{display:flex;align-items:flex-start;gap:1.05rem;
  padding-bottom:1.35rem;border-bottom:1px solid var(--border)}
.hero-faits li:last-child{border-bottom:0;padding-bottom:0}
.hero-faits__ico{flex:none;display:flex;align-items:center;justify-content:center;
  width:2.6rem;height:2.6rem;border:1px solid var(--border);color:var(--rouge);
  background:var(--blanc);transition:background .45s var(--ease),
  border-color .45s var(--ease),color .45s var(--ease)}
.hero-faits__ico svg{width:20px;height:20px}
.hero-faits li:hover .hero-faits__ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.hero-faits__txt{display:flex;flex-direction:column;gap:.22rem;min-width:0}
.hero-faits__txt b{font-family:var(--display);font-size:1.12rem;font-weight:600;letter-spacing:-.02em}
.hero-faits__txt span{font-size:.9rem;line-height:1.5;color:var(--gris)}
@media(max-width:900px){
  /* La règle générale de .hero-grid est écrasée par la spécificité de
     `.hero--offre .hero-grid` : il faut la reposer ici. */
  .hero--offre{min-height:auto;padding-top:clamp(5rem,10vh,7rem)}
  .hero--offre .hero-grid{grid-template-columns:1fr;gap:2rem}
  .hero--offre .hero-copy{padding-right:0}
  .hero-faits{padding-left:0;border-top:1px solid var(--border);padding-top:1.6rem}
}

/* ==========================================================================
   « LE DÉTAIL » — trois formules, les inclusions, le déroulé
   La section ne se lisait qu'en texte : trois paragraphes gris pour les
   formules, deux colonnes de puces pour le reste. Chaque bloc prend ici la
   forme de ce qu'il décrit — un filaire par formule, une grille de
   pictogrammes pour les inclusions, un chemin numéroté pour les étapes.
   ========================================================================== */
.detail__lead{margin-top:1rem;max-width:var(--measure);
  font-size:clamp(1.02rem,1.2vw,1.15rem);line-height:1.6;color:var(--encre-2)}

/* ---------- Les trois formules ---------- */
.formules{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:clamp(.9rem,1.6vw,1.3rem);margin-top:clamp(1.6rem,3vw,2.4rem)}
.formule{position:relative;display:flex;flex-direction:column;
  background:var(--blanc);border:1px solid var(--border);
  transition:border-color .45s var(--ease),transform .45s var(--ease)}
.formule:hover{border-color:var(--encre);transform:translateY(-3px)}
.formule--phare{border-color:var(--rouge)}
.formule__drapeau{position:absolute;top:-1px;right:-1px;z-index:1;
  background:var(--rouge);color:#fff;font-size:.66rem;font-weight:600;
  text-transform:uppercase;letter-spacing:.07em;padding:.3rem .55rem}
.formule__vue{background:var(--rose-bg);border-bottom:1px solid var(--border);
  padding:1.1rem 1.1rem .9rem}
.formule--phare .formule__vue{background:var(--saumon)}
.formule__corps{display:flex;flex-direction:column;gap:.5rem;
  padding:1.1rem 1.2rem 1.2rem;flex:1}
.formule__corps h4{font-family:var(--display);font-size:1.14rem;font-weight:600;letter-spacing:-.02em}
.formule__corps p{font-size:.92rem;line-height:1.55;color:var(--encre-2)}
.formule__prix{margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);
  display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.3rem .6rem}
.formule__prix b{font-family:var(--display);font-size:1.06rem;font-weight:600;
  letter-spacing:-.02em;color:var(--encre)}
.formule__prix > span{display:inline-flex;align-items:center;gap:.3rem;
  font-size:.82rem;color:var(--rouge)}
.formule__prix svg{width:11px;height:11px;transition:transform .35s var(--ease)}
.formule__prix:hover svg{transform:translate(2px,-2px)}

/* Le filaire : mêmes proportions d'une formule à l'autre, seul le contenu
   change — c'est la comparaison qui doit sauter aux yeux, pas le dessin. */
.wire{display:block;width:100%;height:auto}
.wire__cadre{fill:var(--blanc);stroke:var(--border);stroke-width:1.4}
.wire__bar{fill:var(--rose-bg)}
.formule--phare .wire__bar{fill:#fff}
.wire__pt{fill:var(--gris-clair)}
.wire__bloc{fill:var(--saumon)}
.formule--phare .wire__bloc{fill:var(--rouge-soft)}
.wire__gris{fill:var(--border)}
.wire__accent{fill:var(--rouge)}
.wire__accentpt{fill:var(--rouge)}
.wire__panier{fill:none;stroke:var(--encre);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}
.wire__fil{fill:none;stroke:var(--rouge);stroke-width:1.6;
  stroke-linecap:round;stroke-linejoin:round}

/* ---------- Ce qui est inclus ---------- */
.inclus{list-style:none;margin:1.3rem 0 0;padding:0;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
  background:var(--border);border:1px solid var(--border)}
.inclus li{display:flex;align-items:flex-start;gap:.85rem;
  background:var(--blanc);padding:1rem 1.1rem}
.inclus__ico{flex:none;display:flex;align-items:center;justify-content:center;
  width:2.25rem;height:2.25rem;border:1px solid var(--border);color:var(--rouge);
  transition:background .45s var(--ease),border-color .45s var(--ease),color .45s var(--ease)}
.inclus__ico svg{width:17px;height:17px}
.inclus li:hover .inclus__ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.inclus__txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.inclus__txt b{font-size:.96rem;font-weight:600;letter-spacing:-.01em;line-height:1.3}
.inclus__txt > span{font-size:.85rem;line-height:1.45;color:var(--gris)}
/* Nombre impair d'inclusions : sans cela la dernière case laisse un trou gris
   — le fond de la grille est la couleur des filets. */
.inclus li:last-child:nth-child(odd){grid-column:1/-1}

/* ---------- Le déroulé ---------- */
.parcours{list-style:none;margin:1.3rem 0 0;padding:0;position:relative;
  display:flex;flex-direction:column;gap:1.15rem}
/* Le fil relie les jalons : sans lui, cinq carrés numérotés restent cinq
   éléments côte à côte, pas un chemin. */
.parcours::before{content:"";position:absolute;left:1.1rem;top:1.2rem;bottom:1.2rem;
  width:1px;background:var(--border)}
.parcours li{position:relative;display:flex;align-items:flex-start;gap:1rem;z-index:1}
.parcours__n{flex:none;display:flex;align-items:center;justify-content:center;
  width:2.2rem;height:2.2rem;background:var(--blanc);border:1px solid var(--border);
  font-family:var(--display);font-size:.78rem;font-weight:600;color:var(--rouge);
  transition:background .45s var(--ease),color .45s var(--ease),border-color .45s var(--ease)}
.parcours li:hover .parcours__n{background:var(--rouge);border-color:var(--rouge);color:#fff}
.parcours__txt{display:flex;flex-direction:column;gap:.2rem;padding-top:.15rem;min-width:0}
.parcours__txt b{font-size:1rem;font-weight:600;letter-spacing:-.015em}
.parcours__txt > span{font-size:.92rem;line-height:1.55;color:var(--encre-2);max-width:var(--measure)}

/* La carte de prix suit la lecture : la colonne de gauche est longue, sans
   `align-self` la carte s'étire et `sticky` n'a plus de prise. */
@media(min-width:901px){
  .detail__aside{align-self:start;position:sticky;top:calc(var(--nav-total) + 1.5rem)}
}
@media(max-width:760px){
  .formules{grid-template-columns:1fr}
  .inclus{grid-template-columns:1fr}
}

/* ---------- La carte de prix ----------
   Elle n'avait aucune règle à elle : posée sur le rosé de la section, elle ne
   se lisait pas comme une carte, et ses caractéristiques s'affichaient collées
   (« Délai2 à 4 semaines ») faute de mise en page. */
.detail__aside{background:transparent;padding:0}
.pricecard{background:var(--blanc);border:1px solid var(--border);
  padding:clamp(1.3rem,2vw,1.7rem);display:flex;flex-direction:column;gap:.8rem}
/* Sans le filet, la marge inférieure n'a plus rien à souligner : c'est
   l'écart régulier de la carte (.8rem) qui sépare le libellé du prix. */
.pricecard__label{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--gris)}
.pricecard__meta{list-style:none;margin:.3rem 0 .5rem;padding:0;font-size:.86rem;color:inherit}
.pricecard__meta li{display:flex;align-items:baseline;justify-content:space-between;
  gap:1rem;padding:.6rem 0;border-bottom:1px solid var(--border)}
.pricecard__meta li:last-child{border-bottom:0;padding-bottom:0}
.pricecard__meta li > span{color:var(--gris)}
.pricecard__meta li > b{font-weight:600;color:var(--encre);text-align:right}
.pricecard > .btn{align-self:stretch}
.pricecard > .btn .btn-inner{justify-content:center}

/* ==========================================================================
   COMPARATIF DE MARCHÉ — le face-à-face
   Le marché d'un côté, nous de l'autre. Trois colonnes équivalentes
   laissaient au lecteur le soin de faire la comparaison ; deux plateaux
   la font.
   ========================================================================== */
/* ---------- E. Face-à-face ----------
   Deux plateaux. Les deux fourchettes de marché fusionnent en une seule
   — leurs bornes restent citées en dessous, sinon la synthèse masque
   la source. */
.duel{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
  align-items:stretch;gap:0;margin-top:1.8rem}
.duel__cote{display:flex;flex-direction:column;gap:.5rem;
  padding:clamp(1.4rem,2.6vw,2.2rem);border:1px solid rgba(255,255,255,.16)}
.duel__cote--nous{background:var(--mint);color:var(--teal-dark);border-color:var(--mint)}
.duel__lab{font-size:.78rem;text-transform:uppercase;letter-spacing:.09em;
  font-weight:600;color:rgba(255,255,255,.55)}
.duel__cote--nous .duel__lab{color:var(--rouge)}
.duel__prix{font-family:var(--display);font-size:clamp(1.8rem,3.2vw,2.7rem);
  font-weight:600;letter-spacing:-.03em;line-height:1.05}
.duel__cote--nous .duel__prix{color:var(--encre)}
.duel__unite{font-size:.8rem;line-height:1.5;color:rgba(255,255,255,.5)}
.duel__cote--nous .duel__unite{color:var(--teal)}
.duel__pts{list-style:none;margin:.8rem 0 0;padding:0;
  display:flex;flex-direction:column;gap:.5rem}
.duel__pivot{display:flex;align-items:center;justify-content:center;padding:0 1.1rem}
.duel__pivot span{font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;
  font-weight:600;color:rgba(255,255,255,.4)}
@media(max-width:820px){
  .duel{grid-template-columns:1fr}
  .duel__pivot{padding:.9rem 0}
}

/* ---------- Les trois colonnes ----------
   Sur fond sombre, la colonne « nous » ne valait que #1c1c20 contre #26262b :
   un écart invisible. Elle passe en clair — sur une section sombre, c'est
   l'endroit clair que l'œil trouve en premier. */
.on-ink .market__col--us{background:var(--mint)}
.on-ink .market__col--us .market__who{color:var(--teal-dark)}
.on-ink .market__col--us .market__price{color:var(--encre)}
.on-ink .market__col--us .market__unit{color:var(--teal)}
.on-ink .market__col--us li{color:var(--teal-dark)}
.market__col--us .market__flag{align-self:flex-start;background:var(--rouge);color:#fff;
  padding:.22rem .5rem;margin-bottom:.35rem}

/* Le signe porte le sens ; le texte n'a plus à être gras et coloré sur toute
   sa longueur — quatre lignes en gras teal ou rouge se lisaient en bloc. */
.market__col ul{list-style:none;margin:.9rem 0 0;padding:0;
  display:flex;flex-direction:column;gap:.5rem}
.plus,.moins{position:relative;padding-left:1.5rem;font-weight:400;
  font-size:.92rem;line-height:1.45;color:inherit}
.plus::before,.moins::before{position:absolute;left:0;top:0;width:1.05rem;
  text-align:center;font-weight:600;font-size:.95rem;line-height:1.45}
.plus::before{content:"+";color:var(--teal)}
.moins::before{content:"–";color:var(--rouge)}
.on-ink .plus::before{color:#7fd4c8}
.on-ink .moins::before{color:var(--rouge-soft)}
.on-ink .market__col--us .plus::before{color:var(--teal)}

/* ---------- Garde-fou des boutons pleins ----------
   Le texte d'un bouton à fond plein est blanc, quel que soit le contexte.
   La règle de base (.btn-inner.is-rouge, spécificité 0-2-0) se faisait battre
   par n'importe quelle règle de couleur contextuelle visant un `span`
   (0-2-1). On repasse devant en descendant depuis .btn. */
.btn .btn-inner.is-rouge,
.btn .btn-inner.is-ink,
.btn:hover .btn-inner.is-rouge,
.btn:hover .btn-inner.is-ink,
.btn:hover .btn-inner{color:#fff}
.btn .btn-inner.is-teal,.turn .btn .btn-inner{color:var(--mint)}

/* Mention de sources : c'est de la note de bas de page, pas du corps de texte.
   `.secbody > p` la bridait à la largeur de lecture (592 px) et à la taille du
   courant ; elle prend toute la largeur, en petit et en italique. */
.secbody > .market__src{max-width:none;font-size:.78rem;line-height:1.55;font-style:italic}
.on-ink .market__src{color:rgba(255,255,255,.45)}

/* ---------- Volets thématiques (packs) ----------
   Google Ads, fiche Google, fidélité : des chantiers qui coexistent, pas une
   suite. Des cartes côte à côte le disent ; une liste numérotée aurait
   suggéré un ordre qui n'existe pas. */
.volets{display:grid;grid-template-columns:repeat(auto-fit,minmax(19rem,1fr));
  gap:1px;background:var(--border);border:1px solid var(--border);
  margin-top:clamp(1.6rem,3vw,2.4rem)}
.volet{background:var(--blanc);padding:clamp(1.2rem,2.2vw,1.6rem);
  display:flex;flex-direction:column;gap:.5rem}
/* Nombre impair : la dernière carte prend la largeur restante plutôt que de
   laisser une case vide sur le fond des filets. */
.volet:last-child:nth-child(odd){grid-column:1/-1}
.volet__ico{display:flex;align-items:center;justify-content:center;
  width:2.5rem;height:2.5rem;border:1px solid var(--border);color:var(--rouge);
  margin-bottom:.3rem;flex:none;
  transition:background .45s var(--ease),border-color .45s var(--ease),color .45s var(--ease)}
.volet__ico svg{width:19px;height:19px}
.volet:hover .volet__ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.volet h3{font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em}
.volet__sous{font-size:.88rem;line-height:1.45;color:var(--gris)}
.volet__liste{list-style:none;margin:.5rem 0 0;padding:0;
  display:flex;flex-direction:column;gap:.55rem}
.volet__liste li{position:relative;padding-left:1.2rem;font-size:.93rem;line-height:1.5;color:var(--encre-2)}
.volet__liste li::before{content:"";position:absolute;left:0;top:.58em;
  width:5px;height:5px;background:var(--teal)}

/* ---------- Chemin numéroté, version détaillée ----------
   Le pack Lancement décrit une chronologie : le repère de temps monte au-dessus
   du titre, et chaque jalon porte sa propre liste. */
.parcours--riche{gap:1.6rem}
.parcours--riche::before{top:1.4rem;bottom:1.4rem}
.parcours__quand{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;
  font-weight:600;color:var(--rouge)}
.parcours--riche .parcours__txt{gap:.35rem;padding-top:.05rem}
.parcours--riche .parcours__txt b{font-size:1.12rem}
.parcours__liste{list-style:none;margin:.45rem 0 0;padding:0;
  display:flex;flex-direction:column;gap:.5rem}
.parcours__liste li{position:relative;padding-left:1.2rem;font-size:.93rem;
  line-height:1.5;color:var(--encre-2)}
.parcours__liste li::before{content:"";position:absolute;left:0;top:.58em;
  width:5px;height:5px;background:var(--teal)}

/* ==========================================================================
   MÉTHODE, ZONE, ENCART DE BASCULE — reprises de forme
   ========================================================================== */

/* ---------- Zone : les trois paliers ----------
   Trois textes qui se relaient au même endroit, sans repère : on ne savait
   pas combien il y en avait ni où l'on en était. Un jalon numéroté et un
   filet d'accent ancrent le palier visible. */
.zoneslide{position:relative;padding-left:2.6rem}
.zoneslide::before{content:counter(zs,decimal-leading-zero);counter-increment:zs;
  position:absolute;left:0;top:.15rem;font-family:var(--display);font-size:.75rem;
  font-weight:600;letter-spacing:.08em;color:var(--rouge-soft)}
.zoneslide::after{content:"";position:absolute;left:1.05rem;top:.1rem;bottom:.1rem;
  width:1px;background:rgba(255,255,255,.18)}
.zoneslide[data-on]::after{background:var(--rouge)}
.zoneslides{counter-reset:zs}

/* ---------- Encart de bascule ----------
   Un aplat rosé avec un filet à gauche : il se lisait comme une note de bas de
   page alors qu'il porte l'argument de la section. On lui donne le poids d'une
   affirmation — grande phrase, libellé en accent, appel à l'action à droite. */
.turn--soft{background:transparent;border-left:0;border-top:2px solid var(--rouge);
  padding:clamp(1.6rem,3vw,2.4rem) 0 0;gap:1.5rem 3rem;align-items:end}
.turn--soft .turn__kicker{color:var(--rouge)}
.turn--soft .turn__txt p:not(.turn__kicker){font-size:clamp(1.15rem,1.9vw,1.55rem);
  line-height:1.35;letter-spacing:-.02em;font-weight:500;color:var(--encre)}
.turn--soft .turn__txt strong{color:var(--rouge);font-weight:600}
.on-ink .turn--soft{background:transparent;border-top-color:var(--rouge)}
.on-ink .turn--soft .turn__txt p:not(.turn__kicker){color:#fff}

/* ---------- Les six familles, en images — piste glissante ----------
   Six cartes espacées sur une piste qui déborde du cadre à droite : on la fait
   glisser au doigt ou à la molette, `scroll-snap` cale chaque carte, et deux
   boutons la font avancer d'une carte. Aucune bibliothèque : Swiper n'est
   chargé nulle part sur le site. */
.familles__tete{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;
  gap:1rem 2rem}
.familles__lab{font-size:clamp(1.02rem,1.3vw,1.2rem);line-height:1.5;
  color:var(--encre-2);max-width:var(--measure)}
.familles__nav{margin-top:0;padding-top:0}
.familles{list-style:none;margin:clamp(1.4rem,2.6vw,2rem) 0 0;padding:0 var(--pad) 0 0;
  display:flex;gap:clamp(1rem,1.8vw,1.5rem);
  overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;
  scroll-padding-left:0;scrollbar-width:none;-webkit-overflow-scrolling:touch;
  margin-right:calc(var(--pad) * -1)}
.familles::-webkit-scrollbar{display:none}
.familles:focus-visible{outline:2px solid var(--rouge);outline-offset:6px}
.famille{flex:0 0 auto;width:clamp(15rem,21vw,19rem);scroll-snap-align:start}
.famille a{display:flex;flex-direction:column;height:100%;
  background:var(--blanc);border:1px solid var(--border);
  transition:border-color .45s var(--ease)}
.famille a:hover{border-color:var(--encre)}
.famille__vue{position:relative;overflow:hidden;aspect-ratio:4/5;margin:0;background:var(--saumon)}
.famille__vue img{width:100%;height:100%;object-fit:cover;
  transition:transform 1.1s var(--ease),filter .6s var(--ease);filter:saturate(.9)}
.famille a:hover .famille__vue img{transform:scale(1.05);filter:saturate(1)}
.famille__nom{padding:.9rem 1rem 1rem;font-size:.9rem;font-weight:500;line-height:1.3;
  letter-spacing:-.01em;color:var(--encre);transition:color .35s var(--ease)}
.famille a:hover .famille__nom{color:var(--rouge)}
@media(max-width:640px){ .famille{width:min(72vw,17rem)} }

/* ==========================================================================
   ZONE EN PLEINE PAGE
   La carte devient le fond de toute la section, sur la hauteur de l'écran ;
   le texte occupe la moitié gauche, posé sur un voile dégradé et flouté qui
   s'efface vers la carte nette. Nice n'est plus au centre du cadre mais aux
   deux tiers droits (voir `altDecal` dans site.js), pour rester dégagée.
   ========================================================================== */
@media(min-width:901px){
  /* `.pad` est positionné (.z1) : c'est lui le bloc conteneur du fond en
     `inset:0`. Il prend donc la hauteur de l'écran, et centre son contenu. */
  #zone{padding-block:0;overflow:hidden}
  #zone > .pad{width:100%;min-height:100svh;display:flex;align-items:center}
  #zone > .pad > .wrap{width:100%}
  #zone .zonegrid{display:block}
  /* la carte : tout le fond de la section */
  #zone .zonephoto{position:absolute;inset:0;width:auto;aspect-ratio:auto;z-index:0}
  /* le voile : couleur pour la lisibilité, flou pour la profondeur. Le masque
     fait mourir le flou progressivement — la carte redevient nette à droite
     sans ligne de coupe. */
  #zone .zonephoto::after{content:"";position:absolute;inset:0;pointer-events:none;
    background:linear-gradient(90deg,rgba(38,38,43,.94) 0%,rgba(38,38,43,.82) 34%,
                               rgba(38,38,43,.35) 52%,rgba(38,38,43,0) 66%)}
  /* Le flou coûte ~10 ms par image quand il couvre 60 % de l'écran ; on le
     resserre sur la zone du texte, là où il sert, et le dégradé fait le
     reste — mesuré : de 41 à 34 ms par image au scrub. */
  #zone .zonevoile{position:absolute;inset:0;right:52%;pointer-events:none;
    -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
    -webkit-mask-image:linear-gradient(90deg,#000 55%,transparent 100%);
    mask-image:linear-gradient(90deg,#000 55%,transparent 100%)}
  #zone .zonetxt{position:relative;z-index:2;width:min(46%,38rem);
    padding-block:clamp(6rem,14vh,9rem)}
  #zone h2{font-size:clamp(2.1rem,3.6vw,3.4rem)}
  #zone .zoneslides{min-height:11rem}
  /* les repères descendent au bas de la section, sur toute la largeur */
  #zone .zonereperes{position:absolute;left:0;right:0;bottom:0;z-index:2;
    padding-inline:var(--pad);background:linear-gradient(transparent,rgba(28,28,32,.7))}
  #zone .zonerepere{text-align:left;padding:1.4rem 0 1.1rem;margin-right:2.5rem;flex:0 0 auto}
  /* les traits du décor passent sous la carte */
  #zone > .lines{z-index:1;opacity:.1}
}
.alt__canvas{position:absolute;inset:0;width:100%;height:100%;display:block}

/* ==========================================================================
   RÉALISATIONS — galerie deux par deux
   Une réalisation par grande case : la capture du site dans un cadre de
   navigateur, qui fait défiler la page au survol — on voit le site, pas une
   vignette —, puis la fiche du client : logo, nom, activité, ce qu'on a
   livré, lien. En pied, le bandeau « +80 » vers la page Réalisations.
   ========================================================================== */
.galerie{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));
  gap:clamp(1.2rem,2.4vw,2rem);margin-top:clamp(2.2rem,4vw,3.2rem)}
.oeuvre{display:flex;flex-direction:column;background:var(--blanc);
  border:1px solid var(--border);transition:border-color .45s var(--ease)}
.oeuvre:hover{border-color:var(--encre)}
.oeuvre__cadre{display:block;background:var(--rose-bg);padding:.8rem .8rem 0;
  border-bottom:1px solid var(--border)}
.oeuvre__barre{display:flex;align-items:center;gap:.5rem;font-size:.74rem;color:var(--gris);
  padding-bottom:.7rem}
.oeuvre__barre i{flex:none;width:7px;height:7px;border-radius:50%;background:var(--saumon)}
.oeuvre__barre span{margin-left:.3rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* L'écran : un cadre en 16/10, comme un vrai navigateur. La capture est plus
   haute que le cadre ; au survol elle glisse du haut vers le bas en six
   secondes — le site se fait défiler sous les yeux du visiteur. */
.oeuvre__ecran{position:relative;display:block;aspect-ratio:16/10;overflow:hidden;
  background:var(--blanc);border:1px solid var(--border);border-bottom:0}
.oeuvre__ecran--capture img{display:block;width:100%;height:100%;object-fit:cover;
  object-position:top;transition:object-position 6s cubic-bezier(.45,0,.2,1)}
.oeuvre:hover .oeuvre__ecran--capture img{object-position:bottom}
/* En attente d'une vraie capture : la composition photo + logo existante,
   voilée pour ne pas passer pour une capture. */
.oeuvre__ecran--attente .shot__photo{position:absolute;inset:0;display:block}
.oeuvre__ecran--attente .shot__photo img{width:100%;height:100%;object-fit:cover;filter:saturate(.6) brightness(.9)}
.oeuvre__ecran--attente .shot__logo{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);
  width:min(46%,220px);height:auto;background:#fff;padding:.9rem 1.3rem;box-shadow:0 8px 30px -12px rgba(0,0,0,.35)}
.oeuvre__fiche{display:flex;flex-direction:column;gap:.8rem;padding:clamp(1.2rem,2vw,1.6rem);flex:1}
.oeuvre__tete{display:flex;align-items:center;gap:.9rem}
.oeuvre__logo{flex:none;width:3.2rem;height:3.2rem;object-fit:contain;
  border:1px solid var(--border);padding:.35rem;background:#fff}
.oeuvre__tete h3{font-family:var(--display);font-size:clamp(1.1rem,1.5vw,1.3rem);font-weight:600;
  letter-spacing:-.02em;line-height:1.2}
.oeuvre__meta{font-size:.78rem;text-transform:uppercase;letter-spacing:.08em;color:var(--gris);margin-top:.15rem}
.oeuvre__fiche > p{font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.oeuvre__livre{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.oeuvre__livre li{border:1px solid var(--border);background:var(--rose-bg);padding:.35rem .65rem;
  font-size:.8rem;color:var(--encre-2)}
.oeuvre__lien{margin-top:auto;padding-top:.6rem;display:inline-flex;align-items:center;gap:.35rem;
  font-size:.86rem;font-weight:500;color:var(--rouge)}
.oeuvre__lien em{font-style:normal;transition:transform .35s var(--ease)}
.oeuvre:hover .oeuvre__lien em{transform:translateX(3px)}
/* ---------- L'appel à l'action de la galerie ----------
   Même grammaire que le CTA final du site (.cta) : panneau encre, photo en
   fond passée au gris, titre blanc avec l'accent en rouge doux, deux boutons.
   À droite, le chiffre en très grand — c'est lui l'argument. La photo de
   fond est l'une des captures : le panneau reste dans le sujet. */
.galerie__cta{position:relative;overflow:hidden;margin-top:clamp(2rem,4vw,3rem);
  background:var(--encre);color:#fff;
  display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;
  gap:clamp(1.5rem,4vw,4rem);padding:clamp(2rem,4vw,3.5rem)}
/* Pas de photo de fond : l'aplat encre et les traits verticaux du site,
   comme sur le CTA final — c'est la direction artistique, pas un décor. */
.galerie__cta > .lines{z-index:0;opacity:.12}
.galerie__cta-in{position:relative;z-index:1;display:flex;flex-direction:column;gap:1rem;
  align-items:flex-start;max-width:min(44rem,100%)}
.galerie__cta-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;
  font-weight:600;color:var(--rouge-soft)}
.galerie__cta h3{font-family:var(--display);font-size:clamp(1.6rem,2.8vw,2.5rem);font-weight:600;
  letter-spacing:-.03em;line-height:1.08;color:#fff;text-wrap:balance}
.galerie__cta h3 em{font-style:normal;color:var(--rouge-soft)}
.galerie__cta-in > p{font-size:1rem;line-height:1.6;color:rgba(255,255,255,.72);max-width:38rem}
.galerie__cta .btn-row{margin-top:.4rem}
.galerie__cta .btn-inner.is-ink{background:transparent;color:#fff;border:1px solid rgba(255,255,255,.35)}
.galerie__cta .btn:hover .btn-inner.is-ink{background:#fff;color:var(--encre);border-color:#fff}
/* À droite, trois repères déjà affirmés ailleurs sur le site : délai,
   engagement, paiement. Pas de chiffre de volume — il n'y a pas d'autres
   réalisations à montrer pour l'instant. */
.galerie__cta-faits{position:relative;z-index:1;list-style:none;margin:0;padding:0;
  display:flex;flex-direction:column;gap:0;min-width:15rem;
  border-left:1px solid rgba(255,255,255,.18);padding-left:clamp(1.4rem,2.5vw,2.2rem)}
.galerie__cta-faits li{display:flex;flex-direction:column;gap:.15rem;padding:.8rem 0;
  border-bottom:1px solid rgba(255,255,255,.12)}
.galerie__cta-faits li:last-child{border-bottom:0}
.galerie__cta-faits b{font-family:var(--display);font-size:1.25rem;font-weight:600;
  letter-spacing:-.02em;color:var(--rouge-soft)}
.galerie__cta-faits span{font-size:.84rem;line-height:1.4;color:rgba(255,255,255,.62)}
@media(max-width:820px){
  .galerie__cta{grid-template-columns:minmax(0,1fr)}
  .galerie__cta-faits{border-left:0;padding-left:0;border-top:1px solid rgba(255,255,255,.18);padding-top:.6rem}
}
@media(max-width:820px){
  .galerie{grid-template-columns:1fr}
}

/* ==========================================================================
   MÉTHODE — le fil du projet
   Cinq jalons sur un fil vertical, lus d'un trait : le repère de temps à
   gauche, le nœud sur le fil, le contenu à droite. Rien n'est épinglé — la
   part rouge du fil suit le défilement et allume chaque jalon qu'elle
   atteint. L'ancienne version épinglait la section et relayait une carte à
   la fois : beaucoup de vide, et cinq étapes qu'on ne voyait jamais ensemble.
   ========================================================================== */
.trajet{--quand:clamp(6.5rem,12vw,10.5rem);--noeud:2.5rem;--gap:clamp(1.25rem,3vw,3rem);
  --q:clamp(1.25rem,1.9vw,1.7rem);--h3:clamp(1.35rem,2.1vw,1.85rem);--pad-cta:clamp(1.6rem,3vw,2.5rem);
  --fil-y:calc(var(--h3) * .575);--fil-h:calc(100% - var(--fil-y) * 2);
  position:relative;list-style:none;margin:0;padding:0}
/* le fil : gris sur toute la hauteur, rouge sur la part parcourue (--fil, 0 à 1) */
.trajet::before,.trajet::after{content:"";position:absolute;z-index:0;
  left:calc(var(--quand) + var(--gap) + var(--noeud) / 2 - .5px);width:1px;
  top:var(--fil-y);height:var(--fil-h);background:var(--border)}
.trajet::after{background:var(--rouge);height:calc(var(--fil-h) * var(--fil,0))}

.jalon{position:relative;z-index:1;display:grid;
  grid-template-columns:var(--quand) var(--noeud) minmax(0,1fr);column-gap:var(--gap);
  align-items:start;padding-bottom:clamp(2.6rem,5vw,4.2rem)}
.jalon:last-child{padding-bottom:0}

/* le repère de temps, aligné sur le nœud, gris tant que le fil n'y est pas */
.jalon__quand{text-align:right;padding-top:calc(var(--h3) * .575 - var(--q) * .55)}
.jalon__quand b{display:block;font-family:var(--display);font-size:var(--q);font-weight:600;
  letter-spacing:-.025em;line-height:1.1;color:var(--gris-clair);
  transition:color .45s var(--ease)}
.jalon__quand span{display:block;margin-top:.4rem;font-size:.7rem;font-weight:600;letter-spacing:.11em;
  text-transform:uppercase;color:var(--gris-clair);transition:color .45s var(--ease)}
.jalon.is-on .jalon__quand b{color:var(--rouge)}
.jalon.is-on .jalon__quand span{color:var(--gris)}

/* le nœud : un carré sur le fil, plein quand le fil l'atteint */
.jalon__noeud{position:relative;width:var(--noeud);height:calc(var(--h3) * 1.15)}
.jalon__noeud::before{content:"";position:absolute;left:50%;top:50%;width:10px;height:10px;
  transform:translate(-50%,-50%);background:var(--blanc);border:2px solid var(--gris-clair);
  transition:background .35s var(--ease),border-color .35s var(--ease),box-shadow .45s var(--ease)}
.jalon.is-on .jalon__noeud::before{background:var(--rouge);border-color:var(--rouge);
  box-shadow:0 0 0 5px var(--rose-bg)}

.jalon__corps{display:flex;flex-direction:column;gap:.75rem;align-items:flex-start;max-width:44rem}
.jalon__corps h3{font-family:var(--display);font-size:var(--h3);font-weight:600;letter-spacing:-.025em;
  line-height:1.15;color:var(--encre)}
.jalon__corps p{font-size:clamp(1rem,1.15vw,1.12rem);line-height:1.6;color:var(--encre-2)}
.jalon__livre{list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem}
.jalon__livre li{display:inline-flex;align-items:center;gap:.45rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--blanc);box-shadow:var(--ombre-xs);padding:.4rem .75rem .4rem .55rem;
  font-size:.8rem;line-height:1.2;color:var(--encre-2)}
.jalon__livre li::before{content:"";flex:none;width:1.05rem;height:1.05rem;border-radius:50%;background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230A464C' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/.55rem no-repeat}

/* dernier jalon : l'appel, sur fond sombre, aligné sur le fil comme les autres */
.jalon--cta .jalon__noeud,.jalon--cta .jalon__quand{margin-top:var(--pad-cta)}
.jalon--cta .jalon__corps{max-width:none;width:100%;background:var(--encre);color:#fff;
  padding:var(--pad-cta);gap:.9rem}
.jalon--cta h3{color:#fff}
.jalon--cta p{color:rgba(255,255,255,.72);max-width:38rem}
.jalon--cta .btn{margin-top:.4rem}
.jalon--cta.is-on .jalon__noeud::before{animation:jalonPulse 2.4s var(--ease) infinite}
@keyframes jalonPulse{0%{box-shadow:0 0 0 0 rgba(233,72,47,.5)}100%{box-shadow:0 0 0 14px rgba(233,72,47,0)}}
@media(prefers-reduced-motion:reduce){ .jalon--cta.is-on .jalon__noeud::before{animation:none} }

@media(max-width:900px){
  .trajet{--noeud:1.5rem;--gap:.9rem;--q:1.15rem;--fil-y:calc(var(--q) * .55)}
  .trajet::before,.trajet::after{left:calc(var(--noeud) / 2 - .5px)}
  .jalon{grid-template-columns:var(--noeud) minmax(0,1fr);grid-template-areas:"noeud quand" "noeud corps";
    row-gap:.55rem;padding-bottom:2.4rem}
  .jalon__quand{grid-area:quand;text-align:left;padding-top:0;display:flex;align-items:baseline;
    flex-wrap:wrap;gap:.2rem .7rem}
  .jalon__quand span{margin-top:0}
  .jalon__noeud{grid-area:noeud;height:calc(var(--q) * 1.1)}
  .jalon__corps{grid-area:corps}
  .jalon--cta .jalon__noeud,.jalon--cta .jalon__quand{margin-top:0}
}


/* le menu mobile garde un fond plein et des coins arrondis, comme les cartes */
.mobile-menu{padding-bottom:1.25rem}
.mobnav__sous{border-radius:var(--r-sm);margin-bottom:.15rem}

/* ==========================================================================
   ESPRIT SAAS / AGENCE — d'après alignui.com
   Une couche posée par-dessus le système Cura : géométrie arrondie, surfaces
   blanches sur gris neutre, bordures d'un pixel et ombres en couches, titres
   en Geist plus mesurés, sections centrées, boutons pleins sans équerres.
   Les filets verticaux disparaissent : la structure vient des cartes.
   ========================================================================== */
:root{
  --display:"Geist",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --off:#F7F7F8;
  --border:#EBEBEB;
  --r-sm:8px;--r:12px;--r-lg:16px;--r-xl:24px;
  --ombre-xs:0 0 0 1px rgba(41,41,41,.05),0 1px 2px rgba(41,41,41,.06);
  --ombre-md:0 0 0 1px rgba(41,41,41,.05),0 1px 1px rgba(41,41,41,.04),0 8px 16px -8px rgba(41,41,41,.10),0 28px 48px -24px rgba(41,41,41,.14);
}
body{background:var(--blanc)}
.lines{display:none}

/* ---------- Échelle typographique, plus posée ---------- */
.h1{font-size:clamp(2.35rem,4.8vw,3.75rem);line-height:1.06;letter-spacing:-.03em;font-weight:600}
.h2{font-size:clamp(1.85rem,3.2vw,2.6rem);line-height:1.1;letter-spacing:-.025em;font-weight:600}
.h3{font-size:clamp(1.3rem,1.9vw,1.7rem);letter-spacing:-.02em}
.shead .lead{font-size:clamp(1rem,1.12vw,1.12rem);color:var(--gris)}
/* Les en-têtes de section pleine largeur se centrent ; ceux qui vivent dans
   une grille à deux colonnes gardent leur alignement. */
.wrap > .shead{align-items:center;text-align:center;margin-inline:auto;max-width:min(46rem,100%)}
.wrap > .shead .lead{margin-inline:auto}
.wrap > .shead .h2,.wrap > .shead h2{text-wrap:balance}
/* En-tete de section alignee a gauche : sur les pages de rubrique du blog, le
   titre et le chapo suivent le bord du contenu plutot que d'etre centres. */
.wrap > .shead--gauche{align-items:flex-start;text-align:left;margin-inline:0;
  max-width:min(52rem,100%);padding-top:clamp(.6rem,1.6vw,1.5rem)}
.wrap > .shead--gauche .lead{margin-inline:0;max-width:min(46rem,100%)}
.wrap > .shead--gauche .h2,.wrap > .shead--gauche h2{text-wrap:pretty}
/* Les autres rubriques du blog : une grille de liens, nom puis nombre d'articles. */
/* intertitre discret au-dessus d'une grille de liens */
/* Lexique : un terme, sa définition, en deux colonnes. Plus léger qu'un tableau
   de dix lignes quand il n'y a rien à comparer, juste à expliquer. */
/* Les communes alentour : un intertitre par commune, deux colonnes. */
.alentour{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;
  background:var(--border);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden}
.alentour__e{background:var(--blanc);padding:clamp(1.2rem,2vw,1.7rem)}
.on-off .alentour__e{background:var(--rose-bg)}
.alentour__e h3{margin:0;font-family:var(--display);font-size:1.05rem;font-weight:600;
  letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.alentour__e p{margin:.5rem 0 0;font-size:.93rem;line-height:1.6;color:var(--encre-2)}
@media(max-width:760px){ .alentour{grid-template-columns:1fr} }
/* les pastilles de requêtes et de quartiers ne sont pas des liens ici */
.famindex__chips span{display:inline-block;border:1px solid var(--border);background:var(--blanc);
  padding:.45rem .8rem;font-size:.85rem;border-radius:var(--r-sm);color:var(--encre-2)}
.on-off .famindex__chips span{background:var(--blanc)}
.lexique{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
.lexique__g{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:clamp(1.2rem,2vw,1.6rem)}
.lexique__lab{display:flex;align-items:center;gap:.55rem;margin:0 0 .3rem;
  font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.lexique__lab i{display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;
  flex:none;border-radius:var(--r-sm);background:var(--mint);color:var(--teal-dark)}
.lexique__lab i svg{width:.95rem;height:.95rem}
.lexique__g dl{margin:0}
.lexique__e{padding:.95rem 0 0;margin-top:.9rem;border-top:1px solid var(--border)}
.lexique dt{font-weight:600;font-size:.94rem;line-height:1.35;color:var(--encre)}
.lexique dd{margin:.25rem 0 0;font-size:.88rem;line-height:1.55;color:var(--gris)}
@media(max-width:1000px){ .lexique{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:640px){ .lexique{grid-template-columns:1fr} }
/* face-à-face : le reproche à gauche, la réponse à droite */
.duel__pts li{display:flex;flex-direction:column;gap:.18rem;padding-top:.75rem;margin-top:.15rem;
  border-top:1px solid rgba(255,255,255,.14)}
.duel__pts li:first-child{border-top:0;padding-top:0}
.duel__cote--nous .duel__pts li{border-top-color:rgba(14,92,100,.18)}
.duel__pts b{font-weight:600;font-size:.98rem;line-height:1.3}
.duel__pts span{font-size:.9rem;line-height:1.55;color:rgba(255,255,255,.7)}
.duel__cote--nous .duel__pts span{color:var(--teal)}
/* Sur la colonne menthe, la règle générale des <b> d'une section sombre les
   passait en blanc : illisible. Les intitulés reprennent le rouge de la marque. */
/* #B32F1D : le rouge de la marque assombri juste ce qu'il faut pour passer
   4,5:1 sur le fond menthe (5,6:1 mesuré). --rouge-txt n'y arrivait pas (4,49). */
.secbody .duel__cote--nous .duel__pts b{color:#B32F1D}
.secbody .duel__cote:not(.duel__cote--nous) .duel__pts b{color:#fff}
.duel__suite{justify-content:center;margin-top:clamp(1.6rem,3vw,2.4rem)}
.duel__note{text-align:center;margin-top:.8rem}
.secbody__lab{margin:0 0 .8rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;color:var(--rouge)}
.secbody__lab + .linklist{margin-top:0}
/* plusieurs groupes à la suite (l'index des villes par région) : il faut
   respirer entre deux régions, sinon les listes se lisent comme une seule. */
.linklist + .secbody__lab{margin-top:2rem}
.linklist--rubriques a b{display:block;font-weight:600}
.linklist--rubriques a span{display:block;margin-top:.15rem;font-size:.84rem;color:var(--gris)}
.linklist--rubriques a:hover span{color:rgba(255,255,255,.65)}
.t-md{color:var(--gris)}

/* ---------- Boutons : pleins, arrondis, ombre en couches, sans équerres ---------- */
.btn-corners{display:none}
.btn-inner{border-radius:var(--r-sm);padding:.78rem 1.1rem;font-size:.92rem;font-weight:500;gap:.5rem;
  background:var(--blanc);color:var(--encre);
  box-shadow:0 0 0 1px var(--border),0 1px 2px rgba(41,41,41,.06);
  transition:background .25s var(--ease),color .25s var(--ease),box-shadow .25s var(--ease),transform .25s var(--ease)}
.btn:hover .btn-inner{background:var(--off);color:var(--encre);transform:translateY(-1px);
  box-shadow:0 0 0 1px var(--border),0 8px 16px -10px rgba(41,41,41,.35)}
.btn-inner.is-rouge{background:var(--rouge);color:#fff;
  box-shadow:0 0 0 1px var(--rouge-dark),0 1px 2px rgba(201,58,34,.35),inset 0 1px 0 rgba(255,255,255,.18)}
.btn:hover .btn-inner.is-rouge{background:var(--rouge-dark);color:#fff;
  box-shadow:0 0 0 1px var(--rouge-dark),0 10px 20px -10px rgba(233,72,47,.55),inset 0 1px 0 rgba(255,255,255,.18)}
.btn-inner.is-ink{background:var(--encre);color:#fff;
  box-shadow:0 0 0 1px #151517,0 1px 2px rgba(0,0,0,.25),inset 0 1px 0 rgba(255,255,255,.12)}
.btn:hover .btn-inner.is-ink{background:#3a3a42;color:#fff}
.btn-inner.is-teal{background:var(--teal);color:var(--mint);box-shadow:0 0 0 1px var(--teal-dark),inset 0 1px 0 rgba(255,255,255,.12)}
/* Secondaire : le contour seul, aucun aplat. Au survol il se remplit
   d'encre et le texte passe en blanc, comme les autres boutons sombres. */
.btn-inner.is-ligne{background:transparent;color:var(--encre);
  box-shadow:0 0 0 1px rgba(38,38,43,.26)}
.btn:hover .btn-inner.is-ligne{background:var(--encre);color:#fff;
  box-shadow:0 0 0 1px var(--encre),0 8px 16px -10px rgba(41,41,41,.35)}
.btn:hover .btn-inner svg{transform:translate(2px,-2px)}
.on-ink .btn-inner:not(.is-rouge):not(.is-ink):not(.is-teal){box-shadow:0 0 0 1px rgba(255,255,255,.14)}
.sw-btn{border-radius:var(--r-sm);background:var(--blanc);box-shadow:var(--ombre-xs);border:0}
.toggle{border-radius:var(--r-sm);box-shadow:var(--ombre-xs);border:0}
.toggle button{border-radius:6px}

/* ---------- Surfaces : cartes blanches, bord fin, ombre légère ---------- */
.card,.plan,.review,.fact,.formcard,.post,.villecard,.pack,.pricecard,.canal,.guar,.step,.infobloc,
.duo__opt,.choice,.famc,.fam,.famcard,.oeuvre,.stat,.chat-panneau,.mega-cta,.galerie__cta,
.jalon--cta .jalon__corps,.bande,.note,.honest,.midcta,.post-cta,.simu-bloc,.recap,.market__col,
.duel__cote,.serp,.calc,.simu__aside,.simu-recap,.lireaussi,.sidecta,.artcta,.hero-faits,.about-decor,
.zoneslide,.cartegrid__carte,.volet,.exclu,.pacte__col,.wire__cadre{border-radius:var(--r-lg)}
.card,.post,.villecard,.pack,.pricecard,.canal,.guar,.step,.duo__opt,.choice,.famc,.fam,.famcard,.oeuvre,.fact,.stat{
  border:1px solid var(--border);box-shadow:var(--ombre-xs)}
.card,.fact,.stat,.post{background:var(--blanc)}
.card:hover{background:var(--blanc);box-shadow:var(--ombre-md);transform:translateY(-2px)}
.card{transition:box-shadow .35s var(--ease),transform .35s var(--ease)}
.cards{gap:1rem;background:transparent}
.plans{gap:1rem;border:0;background:transparent}
.plan{border:1px solid var(--border);box-shadow:var(--ombre-xs)}
.plan + .plan{border-left:1px solid var(--border)}
@media(max-width:820px){ .plan + .plan{border-top:1px solid var(--border)} }
.reviews{gap:1rem;border:0;background:transparent}
.review{border:1px solid var(--border);box-shadow:var(--ombre-xs)}
.reviews .review + .review{border-left:1px solid var(--border)}
.review__av{border-radius:50%}

/* icônes dans des carrés doux, médias arrondis */
.card-ico,.carte__ico,.mega-ico,.hero-faits__ico,.inclus__ico,.guar-ico,.volet__ico,.canal__ico,.card__ico,.urgence__ico{border-radius:var(--r-sm)}
.fam__media,.famille__vue,.oeuvre__cadre,.oeuvre__ecran,.post__img,.post-img,.artfold-fig,.pagehead-fig,.villecard__img,
.shot,.formule__vue,.feat-img,.loop-media,.vfam__media,.famc__media,.hero-visual-slot{border-radius:var(--r-lg);overflow:hidden}
.oeuvre__cadre{border-radius:var(--r-lg) var(--r-lg) 0 0}
.carte__lien{border-radius:var(--r-lg);box-shadow:var(--ombre-xs);transition:box-shadow .35s var(--ease),transform .35s var(--ease),border-color .35s var(--ease)}
.carte__lien:hover{border-color:var(--border);box-shadow:var(--ombre-md);transform:translateY(-2px)}
.jalon__noeud::before{border-radius:50%}
.jalon__livre li,.oeuvre__livre li,.chip-f,.filtre,.carte__tag,.pill,.jobpill,.post__tags a,.post__tags span,
.famindex__chips a,.facette__chips a,.facette__chips button,.chips a,.chips span,.galerie__cta-faits li{border-radius:var(--r-sm)}
.tablewrap{border:1px solid var(--border);border-radius:var(--r);overflow:hidden;border-top:1px solid var(--border)}
.dtable{max-width:100%}

/* formulaires */
.field input,.field select,.field textarea,.searchbox,.rech input,.faqsearch input,.rechsec input,.chat-form input,.chat-form textarea,.range{border-radius:var(--r-sm)}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--rouge);box-shadow:0 0 0 3px rgba(233,72,47,.14)}
.fopt span{border-radius:var(--r-sm)}
.fopt span::before{border-radius:50%}
.fprog i{border-radius:2px}

/* FAQ : chaque question dans sa propre carte */
.faq{border-top:0}
.faq details{border:1px solid var(--border);border-radius:var(--r);background:var(--blanc);padding:0 clamp(1rem,2vw,1.4rem);margin-bottom:.6rem;transition:box-shadow .3s var(--ease)}
.faq details[open]{box-shadow:var(--ombre-xs)}
.faq summary{padding:1.1rem 0}

/* navigation : la barre et ses panneaux sont des cartes */
.nav{border-radius:var(--r-lg);background:rgba(255,255,255,.88);border-color:transparent;box-shadow:var(--ombre-md)}
.nav.is-solid{background:rgba(255,255,255,.94);box-shadow:var(--ombre-md)}
.nav-links a{padding:.45rem .7rem;border-radius:var(--r-sm);transition:background .25s var(--ease),color .25s var(--ease)}
.nav-links a::after{display:none}
.nav-links a:hover,.nav-item.is-open > .nav-trigger{background:var(--off);color:var(--encre)}
.nav-right .btn-inner{padding:.62rem .95rem}
.mega{border-radius:var(--r-lg);border-color:transparent;box-shadow:var(--ombre-md)}
.mega-link{border-radius:var(--r-sm)}
.mobile-menu{border-radius:var(--r-lg);border-color:transparent;box-shadow:var(--ombre-md)}
.mobile-menu a:last-child{border-radius:var(--r-sm)}
.chat-panneau{box-shadow:var(--ombre-md)}

/* ---------- Héros de l'accueil : composition centrée, visuel encadré ---------- */
.hero--saas{min-height:0;justify-content:flex-start;padding-top:calc(var(--nav-total) + clamp(3rem,7vh,5.5rem));padding-bottom:0;overflow:visible}
.hero-centre{display:flex;flex-direction:column;align-items:center;text-align:center;gap:1.35rem}
.hero-preuve{display:inline-flex;align-items:center;gap:.55rem;padding:.42rem .9rem;border-radius:var(--r-sm);
  background:var(--blanc);box-shadow:var(--ombre-xs);font-size:.86rem;color:var(--gris);margin:0}
.hero-preuve b{color:var(--encre);font-weight:600}
.hero-preuve__etoiles{color:var(--rouge);font-size:.78rem;letter-spacing:.06em}
.hero--saas .hero-title{max-width:22ch;margin:0;text-wrap:balance}
.hero--saas .hero-copy{display:flex;flex-direction:column;align-items:center;gap:1.15rem;max-width:40rem}
.hero--saas .hero-copy .t-md{font-size:clamp(1.02rem,1.15vw,1.18rem)}
.hero--saas .btn-row{justify-content:center}
.hero--saas .btn-note{margin:0}
.hero-cadre{position:relative;width:min(100%,74rem);aspect-ratio:2.25;margin:clamp(1.6rem,4vw,3rem) auto 0;
  border-radius:var(--r-xl);overflow:hidden;background:var(--off);box-shadow:var(--ombre-md)}
.hero-cadre img{width:100%;height:100%;object-fit:cover;display:block}
.hero-cadre::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(38,38,43,0) 55%,rgba(38,38,43,.35));pointer-events:none}
/* la fiche : ce qu'un client voit quand il vous trouve */
.hero-fiche{position:absolute;z-index:1;left:clamp(1rem,3vw,2.5rem);bottom:clamp(1rem,3vw,2.5rem);width:min(19rem,calc(100% - 2rem));
  background:var(--blanc);border-radius:var(--r);box-shadow:var(--ombre-md);padding:.95rem 1.05rem;text-align:left;
  display:flex;flex-direction:column;gap:.55rem;font-size:.84rem;color:var(--gris)}
.hero-fiche__tete{display:flex;align-items:center;gap:.7rem}
.hero-fiche__logo{flex:none;width:2.2rem;height:2.2rem;border-radius:var(--r-sm);background:var(--rouge);color:#fff;
  display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.95rem}
.hero-fiche__tete b{display:block;color:var(--encre);font-size:.95rem;font-weight:600;line-height:1.2}
.hero-fiche__note{display:flex;align-items:center;gap:.4rem}
.hero-fiche__note b{color:var(--encre);font-weight:600}
.hero-fiche__note i{font-style:normal;color:#F4B400;letter-spacing:.04em;font-size:.78rem}
@media(max-width:700px){
  .hero-cadre{aspect-ratio:4/3;border-radius:var(--r-lg)}
  .hero-fiche{left:.8rem;bottom:.8rem;width:calc(100% - 1.6rem)}
}
/* sections alternées : gris neutre plutôt que rose */
.on-off{background:var(--off)}
.on-off .card:hover{background:var(--blanc)}
.jobpill a{border-radius:var(--r-sm);background:var(--blanc);box-shadow:var(--ombre-xs);border-color:transparent}
.jobpill.is-all a{box-shadow:none}
.rech input,.rech--bloc input{box-shadow:var(--ombre-xs)}
.lancement,.formule,.famrow,.exclu__cas,.cycle__item,.canal,.volet,.infobloc,.pacte,.duel,.market,.choice,.opt,.duo__opt{border-radius:var(--r-lg)}
.oeuvre__cadre{background:var(--off)}
.simu-form .opt,.opt{border-radius:var(--r-sm)}
@media(max-width:600px){
  .hero-preuve{flex-wrap:wrap;justify-content:center;font-size:.8rem;padding:.4rem .8rem}
}

/* ==========================================================================
   LOGO FINAL — le repère et le mot (assets/logo/)
   ========================================================================== */
.logo{display:block;height:26px;line-height:0}
.logo img{height:100%;width:auto;display:block}
.logo--pied,.foot .logo--pied{height:30px;padding:0;margin-bottom:.2rem}
@media(max-width:600px){ .logo{height:23px} }

/* ==========================================================================
   ESPACEMENTS — une seule échelle d'écarts pour tout le site
   --g     entre cartes, colonnes ET lignes (grilles, pistes, galeries)
   --g-col entre les deux colonnes d'une mise en page (texte / aside, formulaire / récap)
   --g-in  entre les éléments d'une rangée (boutons, étiquettes)
   Les anciennes grilles « filet d'un pixel » (gap:1px sur fond bordure)
   deviennent des cartes espacées, chaque cellule portant son propre bord.
   ========================================================================== */
:root{--g:clamp(1rem,1.6vw,1.5rem);--g-col:clamp(2rem,4vw,4rem);--g-in:.75rem}

/* grilles de cartes */
.cards,.jobs-cards,.stats-grid,.pack-grid,.says-grid,.duo,.linklist,.bloggrid,.headfacts,.market,
.fams,.famgrid,.pacte,.facts,.packgrid,.art__2,.art__3,.grid,.posts,.famcards,.inclus,.volets,
.plans,.reviews,.guarantees,.galerie,.formules,.index,.villecards,.cartes,.duel,.vfam__duo,
.calc-row,.facettes,.check.check--2col{gap:var(--g)}
.jobs-cards,.stats-grid,.pack-grid,.says-grid,.duo,.linklist,.bloggrid,.headfacts,.market,
.fams,.famgrid,.pacte,.facts,.packgrid,.art__2,.art__3,.grid,.posts,.famcards,.inclus,.volets,.simu{
  background:transparent;border:0}
.stats-grid,.simu{border-block:0}
/* les cellules deviennent des cartes */
.linklist li,.headfacts li,.market__col,.pacte__col,.art__2 > *,.art__3 > *,.grid > *,.inclus li,
.volet,.say,.duo-col,.duel__cote,.simu__main,.simu__aside,.simu-recap,.jobs-cards .job{
  border:1px solid var(--border);border-radius:var(--r-lg)}
.linklist li{overflow:hidden}
.linklist li:hover{border-color:var(--gris-clair)}
.say{border-color:transparent}
.market__col--us,.pacte__col--vous,.duo-col.is-teal,.duel__cote--nous{border-color:transparent}
.jobs-cards .job{border:0;overflow:hidden}
.inclus li{padding:1rem 1.1rem}
.inclus li:last-child:nth-child(odd){grid-column:auto}

/* colonnes de mise en page */
.simu,.detail,.hero-grid,.foot-top,.zonegrid,.jobsearch,.formgrid,.artgrid,.faqpage,.story,
.contactpage,.pagehead-grid,.artfold-grid,.loop-grid,.feat-slide,.jobs-grid,.cartegrid,.lancement,
.post-cta,.galerie__cta{gap:var(--g-col)}
@media(min-width:901px){ .hero--offre .hero-grid{gap:var(--g-col)} }
.foot-top{row-gap:clamp(2rem,4vw,3rem)}

/* pistes qui défilent : le même écart que les grilles */
.familles,.carte{gap:var(--g)}

/* rangées d'éléments */
.btn-row,.fnav,.jobpills,.dureewrap,.blogtools,.post-cta__chiffres{gap:var(--g-in)}
.chips,.filtres,.filters,.fopts,.opts,.anchors,.rechsec__exemples,.facette__chips,.famindex__chips,
.jalon__livre,.oeuvre__livre,.post__tags,.artside .tags,.contact__sujets,.raccourcis,.actifs{gap:.5rem}
.mega-liste{gap:0 var(--g-in)}

/* lignes : un même souffle sous les en-têtes et entre les blocs empilés */
.secbody{margin-top:clamp(2rem,3.4vw,3rem)}
.cards,.plans,.reviews,.galerie,.facts,.guarantees,.stats-grid,.packgrid,.fams,.famgrid,.posts,
.bloggrid,.famcards,.headfacts,.market,.pacte,.linklist,.says-grid,.volets,.formules,.inclus,
.trajet,.familles,.carte{margin-top:clamp(1.6rem,3vw,2.6rem)}
.secbody > :first-child{margin-top:0}
.turn,.bande,.midcta,.post-cta,.galerie__cta,.lancement{margin-top:clamp(2rem,3.4vw,3rem)}

@media(max-width:600px){ :root{--g:1rem;--g-col:2rem} }

/* ==========================================================================
   BANDEAUX D'INFORMATION — un seul dessin, sans filet latéral
   Le filet vertical de couleur posé à gauche d'un aplat est le tic des
   encadrés générés ; Alessio ne le veut plus. Ici, le même objet que les
   cartes du site : une carte arrondie, un fond à peine teinté, un bord fin
   de la même teinte, et une icône au trait dans un carré blanc à gauche.
   Le libellé n'est plus un sur-titre : il devient l'attaque de la phrase.
   ========================================================================== */
:root{
  --ico-ampoule:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E5C64' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M9 18h6M10 21h4M8.5 13.5A5.5 5.5 0 1 1 15.5 13.5c-.7.7-1.1 1.4-1.2 2.5h-4.6c-.1-1.1-.5-1.8-1.2-2.5z'/%3E%3C/svg%3E");
  --ico-info:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E9482F' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M12 11v5M12 8h.01'/%3E%3C/svg%3E");
  --ico-alerte:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23C93A22' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 4 3 20h18L12 4z'/%3E%3Cpath d='M12 10v4M12 17h.01'/%3E%3C/svg%3E");
  --ico-fleche:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E5C64' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12h13M12 6l6 6-6 6'/%3E%3C/svg%3E");
  --ico-etoile:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23E9482F' stroke-width='1.7' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3.5l2.6 5.4 5.9.8-4.3 4.2 1 5.9L12 17l-5.2 2.8 1-5.9-4.3-4.2 5.9-.8L12 3.5z'/%3E%3C/svg%3E");
}

/* ---------- l'encart « la bonne nouvelle » et ses variantes ---------- */
.turn,.turn--soft{display:flex;flex-wrap:wrap;align-items:center;gap:1rem clamp(1.25rem,2.6vw,2rem);
  padding:clamp(1.15rem,2.2vw,1.6rem) clamp(1.3rem,2.4vw,1.8rem);
  background:var(--mint);border:1px solid rgba(14,92,100,.16);border-radius:var(--r-lg)}
.turn::before{content:"";flex:none;width:2.6rem;height:2.6rem;border-radius:var(--r-sm);
  background:var(--blanc) var(--ico-ampoule) center/20px no-repeat;box-shadow:var(--ombre-xs)}
.turn__txt{flex:1 1 22rem;display:block;max-width:none}
/* le libellé : une ligne en gras au-dessus de la phrase, sans tiret ni
   sur-titre en capitales — le même dessin que le libellé des notes */
.turn__kicker{display:block;font-size:1rem;text-transform:none;letter-spacing:-.01em;font-weight:600;color:var(--teal-dark);margin:0 0 .15rem}
.turn__kicker::after{content:none}
.turn__txt p:not(.turn__kicker){display:block;font-size:clamp(1rem,1.2vw,1.08rem);line-height:1.55;color:var(--teal-dark)}
.turn .btn{flex:none}
.turn--soft{background:var(--blanc);border-color:var(--border)}
.turn--soft::before{background-image:var(--ico-etoile);box-shadow:0 0 0 1px var(--border)}
.turn--soft .turn__kicker{color:var(--encre)}
.turn--soft .turn__txt p:not(.turn__kicker){color:var(--encre-2)}

/* ---------- notes, mises en garde, renvois ---------- */
.note,.honest,.note.note--plus,.on-white .note.note--plus,.on-ink .note.note--plus{position:relative;
  background:var(--rose-bg);border:1px solid rgba(233,72,47,.18);border-radius:var(--r-lg);
  padding:clamp(1.1rem,2vw,1.4rem) clamp(1.2rem,2.2vw,1.6rem) clamp(1.1rem,2vw,1.4rem) calc(clamp(1.2rem,2.2vw,1.6rem) + 3.2rem);
  max-width:min(56rem,100%);gap:.4rem}
.note::before,.honest::before{content:"";position:absolute;left:clamp(1.2rem,2.2vw,1.6rem);top:clamp(1.05rem,2vw,1.35rem);
  width:2.4rem;height:2.4rem;border-radius:var(--r-sm);
  background:var(--blanc) var(--ico-info) center/18px no-repeat;box-shadow:var(--ombre-xs)}
.note.note--plus,.on-white .note.note--plus{background:var(--mint);border-color:rgba(14,92,100,.16)}
.note--plus::before{background-image:var(--ico-fleche)}
.note--alerte{border-color:rgba(201,58,34,.28)}
.note--alerte::before{background-image:var(--ico-alerte)}
.on-ink .note,.on-ink .honest,.on-ink .note.note--plus{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.14)}
.on-ink .note::before,.on-ink .honest::before{background-color:rgba(255,255,255,.12);box-shadow:none}
/* le point de tête et le triangle devant le libellé : l'icône les remplace */
.note > b::before,.honest > b::before,.note--plus > b::before,.note--alerte > b::before{display:none}
.note > b,.note > strong,.honest > b{margin-bottom:.1rem}

/* ---------- « lire aussi » et « votre site est en panne » ---------- */
.lireaussi{align-items:center;padding:.75rem 1.1rem;background:var(--mint);
  border:1px solid rgba(14,92,100,.16);border-radius:var(--r)}
.lireaussi::before{content:"";flex:none;width:1.9rem;height:1.9rem;border-radius:var(--r-sm);
  background:var(--blanc) var(--ico-fleche) center/14px no-repeat;box-shadow:var(--ombre-xs)}
.urgence{position:relative;margin-top:1.4rem;padding:1.05rem 1.3rem 1.05rem calc(1.3rem + 3.2rem);
  background:var(--rose-bg);border:1px solid rgba(201,58,34,.28);border-radius:var(--r-lg)}
.urgence::before{content:"";position:absolute;left:1.2rem;top:50%;transform:translateY(-50%);width:2.4rem;height:2.4rem;
  border-radius:var(--r-sm);background:var(--blanc) var(--ico-alerte) center/18px no-repeat;box-shadow:var(--ombre-xs)}
.urgence p{font-size:.98rem;line-height:1.55}

@media(max-width:600px){
  .note,.honest,.note.note--plus,.on-white .note.note--plus{padding-left:clamp(1.2rem,2.2vw,1.6rem);padding-top:calc(1.1rem + 2.9rem)}
  .note::before,.honest::before{top:1.1rem}
  .urgence{padding-left:1.3rem;padding-top:calc(1.05rem + 2.9rem)}
  .urgence::before{top:1.05rem;transform:none}
}

/* le choix de la durée, seul et centré (la phrase d'explication a été retirée) */
.dureewrap{justify-content:center}

/* ==========================================================================
   SERVICES À LA CARTE — trois familles expliquées
   Pour des lecteurs qui ne connaissent pas le métier : chaque famille a son
   texte, ses repères « si vous êtes dans ce cas → cette prestation », et
   ses prestations en cartes courtes (icône, nom, une phrase, le prix) où l'on
   clique pour en savoir plus. Plus de piste qui défile : tout est visible.
   ========================================================================== */
.srvsep p{max-width:44rem;margin:0 auto;text-align:center;color:var(--gris)}
.famsrv{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.55fr);gap:var(--g-col);align-items:start;
  padding:clamp(2rem,4vw,3.2rem) 0;border-top:1px solid var(--border)}
.famsrv + .famsrv{margin-top:0}
.famsrv__intro{display:flex;flex-direction:column;gap:.9rem;position:sticky;top:calc(var(--nav-total) + 1.5rem)}
.famsrv__intro h3{font-family:var(--display);font-size:clamp(1.45rem,2.2vw,1.95rem);font-weight:600;letter-spacing:-.025em;line-height:1.12;color:var(--encre);margin:0}
.famsrv__lead{font-size:clamp(1rem,1.15vw,1.08rem);line-height:1.6;color:var(--encre-2);margin:0;max-width:34rem}
.famsrv__lab{margin:.5rem 0 0;font-size:.78rem;font-weight:600;color:var(--gris)}
.famsrv__reperes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--border)}
.famsrv__reperes li{display:flex;flex-direction:column;gap:.15rem;padding:.6rem 0;border-bottom:1px solid var(--border);font-size:.9rem;line-height:1.4}
.famsrv__reperes span{color:var(--gris)}
.famsrv__reperes b{font-weight:600;color:var(--encre)}
.famsrv__reperes b::before{content:"→ ";color:var(--rouge)}
.famsrv__liste{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--g)}
.srvc{display:grid;grid-template-columns:auto minmax(0,1fr);grid-template-rows:auto 1fr auto;gap:.45rem 1rem;align-items:start;height:100%;
  padding:1.1rem 1.2rem 1rem 1.1rem;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);
  box-shadow:var(--ombre-xs);color:var(--encre);transition:box-shadow .35s var(--ease),transform .35s var(--ease)}
.srvc:hover{box-shadow:var(--ombre-md);transform:translateY(-2px)}
.srvc__ico{grid-row:1/3;display:flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:var(--r-sm);
  border:1px solid var(--border);background:var(--blanc);color:var(--rouge)}
.srvc__ico svg{width:18px;height:18px}
.srvc__txt{grid-column:2;grid-row:1/3;display:flex;flex-direction:column;gap:.35rem;min-width:0}
.srvc__txt > b{font-size:1.04rem;font-weight:600;letter-spacing:-.01em;line-height:1.25}
.srvc__tag{font-style:normal;font-size:.66rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--rouge);margin-left:.45rem;white-space:nowrap}
.srvc__txt > span{font-size:.92rem;line-height:1.5;color:var(--gris)}
.srvc__pied{grid-column:1/-1;display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;
  margin-top:.55rem;padding-top:.75rem;border-top:1px solid var(--border)}
.srvc__prix{display:flex;flex-direction:column;gap:.1rem}
.srvc__prix b{font-size:1rem;font-weight:600;letter-spacing:-.01em}
.srvc__prix small{font-size:.74rem;color:var(--gris-clair)}
.srvc__voir{font-size:.86rem;font-weight:500;color:var(--rouge);display:inline-flex;align-items:center;gap:.3rem;white-space:nowrap}
.srvc__voir i{font-style:normal;transition:transform .3s var(--ease)}
.srvc:hover .srvc__voir i{transform:translateX(3px)}
@media(max-width:1100px){ .famsrv__liste{grid-template-columns:1fr} }
@media(max-width:900px){
  .famsrv{grid-template-columns:1fr;gap:1.4rem}
  .famsrv__intro{position:static}
  .famsrv__liste{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:700px){ .famsrv__liste{grid-template-columns:1fr} }
/* Chaque famille est maintenant une section à part entière (en-tête centré
   comme les autres) : le corps garde ses deux colonnes, la colonne de gauche
   n'a plus que les repères, présentés en carte. */
.secbody.famsrv{padding:0;border-top:0;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr)}
.famsrv__intro{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);
  padding:1.2rem 1.35rem 1.35rem;gap:.2rem}
.on-off .famsrv__intro{background:var(--blanc)}
.famsrv__lab{margin:0 0 .35rem;font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.01em;color:var(--encre)}
.famsrv__reperes{border-top:1px solid var(--border)}
.famsrv__reperes li:last-child{border-bottom:0;padding-bottom:0}
@media(max-width:900px){ .secbody.famsrv{grid-template-columns:1fr} }

/* ---------- Les besoins : chaque section se lit situation par situation ----------
   « Vous n'avez pas encore de site », « Vous avez déjà un site »… à gauche
   la situation du client et une phrase, à droite les prestations qui y
   répondent. Un guide, pas un catalogue. */
.besoins{display:flex;flex-direction:column}
.besoin{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.6fr);gap:var(--g) var(--g-col);align-items:start;
  padding:clamp(1.6rem,3vw,2.4rem) 0;border-top:1px solid var(--border)}
.besoin:first-child{border-top:0;padding-top:0}
.besoin:last-child{padding-bottom:0}
.besoin__tete{display:flex;flex-direction:column;gap:.5rem;position:sticky;top:calc(var(--nav-total) + 1.5rem)}
.besoin__tete h3{font-family:var(--display);font-size:clamp(1.25rem,1.8vw,1.55rem);font-weight:600;letter-spacing:-.02em;line-height:1.2;color:var(--encre);margin:0}
.besoin__tete h3::before{content:"→ ";color:var(--rouge)}
.besoin__tete p{font-size:.96rem;line-height:1.55;color:var(--gris);margin:0;max-width:30rem}
.besoin__liste{grid-template-columns:repeat(auto-fit,minmax(min(100%,15.5rem),1fr))}
@media(max-width:900px){
  .besoin{grid-template-columns:1fr;gap:1rem}
  .besoin__tete{position:static}
}

/* Les besoins en COLONNES : les trois situations d'une section se lisent
   côte à côte — la situation en tête, ses prestations empilées dessous. */
.besoins{flex-direction:row;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--g-col);align-items:start}
.besoin{display:flex;flex-direction:column;gap:var(--g);padding:0;border-top:0}
.besoin__tete{position:static;padding-bottom:1rem;border-bottom:1px solid var(--border);min-height:6.4rem;justify-content:flex-end}
.besoin__tete h3{font-size:clamp(1.15rem,1.6vw,1.4rem)}
.besoin__tete p{max-width:none}
.besoin__liste{grid-template-columns:1fr}
@media(max-width:1100px){ .besoins{gap:var(--g)} }
@media(max-width:900px){
  .besoins{grid-template-columns:1fr;gap:clamp(1.6rem,4vw,2.4rem)}
  .besoin__tete{min-height:0}
}
/* En-têtes de colonnes alignés : les trois têtes partagent la même rangée de
   grille (hauteur de la plus haute), leur filet du bas tombe donc au même
   niveau et les premières cartes démarrent ensemble. */
@media(min-width:901px){
  .besoins{grid-template-rows:auto auto;gap:var(--g) var(--g-col)}
  .besoin{display:contents}
  .besoin:nth-child(1) > *{grid-column:1}
  .besoin:nth-child(2) > *{grid-column:2}
  .besoin:nth-child(3) > *{grid-column:3}
  .besoin__tete{grid-row:1;align-self:stretch;min-height:0;justify-content:flex-start}
  .besoin__liste{grid-row:2}
}

/* ---------- Les problématiques en cartes ----------
   Chaque situation est une carte ; dedans, les prestations qui y répondent,
   réduites à l'essentiel : le picto, le nom, un bouton-flèche vers la page. */
.besoins{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));grid-template-rows:none;gap:var(--g);align-items:stretch}
.besoin{display:flex;flex-direction:column;gap:.9rem;padding:clamp(1.2rem,2vw,1.6rem);
  background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs)}
.besoin__tete{display:flex;flex-direction:column;gap:.45rem;padding-bottom:.9rem;border-bottom:1px solid var(--border);min-height:0;align-self:auto}
.besoin__tete h3{font-size:clamp(1.15rem,1.5vw,1.3rem)}
.besoin__tete h3::before{content:none}
.besoin__tete p{font-size:.93rem}
.besoin__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.srvm{display:flex;align-items:center;gap:.8rem;padding:.55rem .35rem .55rem .35rem;border-radius:var(--r-sm);color:var(--encre);
  transition:background .25s var(--ease)}
.srvm:hover{background:var(--off)}
.srvm__ico{flex:none;display:flex;align-items:center;justify-content:center;width:2.2rem;height:2.2rem;border-radius:var(--r-sm);
  border:1px solid var(--border);background:var(--blanc);color:var(--rouge)}
.srvm__ico svg{width:17px;height:17px}
.srvm__nom{flex:1;font-size:.98rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;min-width:0}
.srvm__btn{flex:none;width:2rem;height:2rem;border-radius:var(--r-sm);display:flex;align-items:center;justify-content:center;
  background:var(--off);color:var(--encre);font-size:.95rem;transition:background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}
.srvm:hover .srvm__btn{background:var(--rouge);color:#fff;transform:translateX(2px)}
@media(max-width:900px){ .besoins{grid-template-columns:1fr} }
/* la règle générique des liens de corps de section (rouge, souligné) ne
   s'applique pas aux lignes de prestation, qui sont des boutons de liste */
.secbody .besoin__liste a.srvm:not(.btn):not(.duo-link):not(.linklist a){color:var(--encre);border-bottom:0}
/* marges égales tout autour de la carte (les règles de l'ancienne disposition
   en rangées supprimaient le bord et la marge du haut de la première), et
   lignes de prestation sur toute la largeur */
.besoin,.besoin:first-child,.besoin:last-child{align-items:stretch;padding:clamp(1.2rem,2vw,1.6rem);border:1px solid var(--border)}
.besoin__tete,.besoin__liste{width:100%}
.srvm{width:100%}

/* ---------- Largeur maximale des contenus ----------
   Le conteneur Cura (108 rem) laissait tout s'étirer sur les grands écrans :
   cartes trop larges, lignes trop longues, barre et sections distendues.
   On borne à 78 rem (1 248 px) — barre de navigation, sections, héros,
   pied de page passent tous par `--wrap`. */
:root{--wrap:78rem}
/* .grid-N n'a jamais eu de règle : les grilles de cartes passent par .cards.is-N */
.grid.grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.grid.grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.grid.grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:1100px){ .grid.grid-4{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:1000px){ .grid.grid-3{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:640px){ .grid.grid-4,.grid.grid-3,.grid.grid-2{grid-template-columns:1fr} }


/* ==========================================================================
   AUDIT DE COHÉRENCE (14/09/2026)
   Ce que la revue page par page a fait remonter, corrigé au même endroit
   pour tout le site. Chaque bloc dit ce qui clochait.
   ========================================================================== */

/* --- Le sommaire flottant recouvrait le texte ---
   Depuis que le contenu fait 78rem, la marge libre à gauche n'existe qu'au
   delà de 1440px. En dessous, le rail passait SUR les premières lettres. */
@media(max-width:1440px){ .tocrail{display:none} }

/* --- Prose sous un en-tête centré (pages de service, mentions) ---
   Le bloc de texte arrivait collé au titre et restait calé à gauche sous un
   titre centré. Même respiration que `.secbody`, et chaque paragraphe (à
   sa largeur de lecture) se centre sous le titre. */
.wrap > .shead + .prose{margin-top:clamp(2rem,3.4vw,3rem)}
.wrap > .shead + .prose > *{margin-inline:auto}
.wrap > .shead + .prose > .art__2,.wrap > .shead + .prose > .art__3,
.wrap > .shead + .prose > .dtable,.wrap > .shead + .prose > .check--2col{max-width:100%}
.faq-body > * + p{margin-top:.8rem}

/* --- Listes « titre + phrase » ---
   `<li><b>Titre</b><span>Phrase</span>` s'affichait d'un seul tenant, les
   deux mots collés (« L'accueilQui vous êtes »). Le titre prend sa ligne. */
.feat__list li > b,.art__questions li > b,.suite li > b,.prose ol li > b:first-child{display:block;font-weight:600;color:var(--encre)}
.feat__list li > b + span,.art__questions li > b + span,.suite li > b + span,.prose ol li > b:first-child + span{display:block;margin-top:.1rem}
.art__questions li + li{margin-top:.9rem}

/* --- Cartes `.art__2` / `.art__3` ---
   Le titre en gras n'avait pas de marge et les paragraphes se touchaient. */
.art__2 > * > b,.art__3 > * > b{display:block;font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.015em;margin-bottom:.5rem}
.art__2 > * p + p,.art__3 > * p + p{margin-top:.6rem}

/* --- Sections sombres : ce qui restait blanc sur blanc ---
   Les cartes et les listes posées dans `.on-ink` gardaient un fond blanc et
   un texte blanc (pages de service, page mission). Même dessin que les
   colonnes du marché : carte sombre bordée, la colonne « vous » en menthe. */
.on-ink .prose{color:rgba(255,255,255,.72)}
.on-ink .prose b,.on-ink .prose strong,.on-ink .prose h3,.on-ink .prose h4{color:#fff}
.on-ink .check li{color:rgba(255,255,255,.8)}
.on-ink .art__2 > *,.on-ink .art__3 > *{background:#1c1c20;border-color:rgba(255,255,255,.14)}
.on-ink .art__2 > * > b,.on-ink .art__3 > * > b{color:#fff}
.on-ink .art__2 > * p,.on-ink .art__3 > * p{color:rgba(255,255,255,.72)}

/* --- Page mission ---
   Paragraphes sans espacement, citation avec le filet de côté (banni),
   signature collée (« AlessioFondateur »), et un cadre « Photo à ajouter »
   visible en production : tant qu'aucune photo n'est posée, la colonne
   disparaît et le récit prend sa largeur de lecture. Poser une <img> dans
   `.portrait` à la place de `.portrait__vide` rétablit la mise en page. */
.story__main > * + p,.modele__txt > * + p,.vision > * + p,.brouillon > * + p{margin-top:1rem}
.portrait figcaption b,.portrait figcaption span{display:block}
.portrait figcaption span{font-size:.85rem;color:var(--gris)}
.portrait figcaption{margin-top:.6rem}
.signature span{display:block;font-weight:400;font-size:.88rem;color:var(--gris);margin-top:.15rem}
.cycle{justify-content:center}
.detail__main > h2{font-family:var(--display);font-size:clamp(1.5rem,2.4vw,2rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;margin-bottom:.4rem}

/* --- En-têtes de page sans visuel ---
   Blog, contact, audit, mission, pages légales : la grille à deux colonnes
   laissait la moitié droite vide. Sans image ni faits en face, le texte se
   centre — même grammaire que le héros de l'accueil. */
.pagehead-grid:has(> .pagehead-copy:only-child){grid-template-columns:1fr;justify-items:center}
.pagehead-grid > .pagehead-copy:only-child{align-items:center;text-align:center;margin-inline:auto;max-width:min(48rem,100%)}
.pagehead-grid > .pagehead-copy:only-child .crumbs,.pagehead-grid > .pagehead-copy:only-child .btn-row{justify-content:center}
.pagehead-grid > .pagehead-copy:only-child .lead,.pagehead-grid > .pagehead-copy:only-child p{margin-inline:auto}

/* --- Boutons de formulaire (contact, simulateur) ---
   De vrais <button>, restés à angles droits alors que tous les boutons sont
   arrondis. */
button.btn,button.recap__cta{border-radius:var(--r-sm);font-size:.92rem;font-weight:500;padding:.85rem 1.1rem;
  box-shadow:0 0 0 1px var(--rouge-dark),0 1px 2px rgba(201,58,34,.35),inset 0 1px 0 rgba(255,255,255,.18)}

/* --- Blog ---
   La barre de recherche restait collée en haut et passait sur les photos
   des articles ; les titres des cartes prenaient le rouge souligné des
   liens de texte. */
.bandeau__barre{position:static}
.secbody .post__txt h3 a:not(.btn):not(.duo-link):not(.linklist a){color:var(--encre);border-bottom:0}
.secbody .post__txt h3 a:not(.btn):not(.duo-link):not(.linklist a):hover{color:var(--rouge)}

/* --- Article : l'image d'en-tête ---
   Elle partait d'un bord à l'autre de l'écran, seul média du site à
   déborder du cadre. Elle prend la largeur du contenu, coins arrondis. */
.artfold-cale{width:min(var(--wrap),calc(100% - 2*var(--pad)));margin-inline:auto}

/* --- Menus détails ---
   Le numéro de famille (« Famille 01 ») posé sur la photo gardait un angle
   droit ; le libellé « Pack Visibilité Google » de la carte prix devient
   le même petit libellé que partout. */
.formule__drapeau{border-radius:0 calc(var(--r-lg) - 1px) 0 var(--r-sm)}

/* --- Petits libellés en capitales ---
   Ils variaient de .68 à .8rem et de .05 à .12em d'interlettrage selon le
   composant. Un seul réglage. */
.duo-lab,.toc-lab,.fstepnum,.pricecard__label,.market__flag,.pacte__qui,.recap__label,.jobpills-lab,
.facette__lab,.hero-cherche__lab,.cartes__lab,.parcours__quand,.galerie__cta-kicker,
.post__cat,.villecard__dep,.lireaussi span,.foot h4,.artside h2,.faqnav__titre,
.choice__reco,.choice__flag,.bandeau__actifs-lab,.packgrid .pack__tag,.jalon__quand span,.pill{
  font-size:.72rem;letter-spacing:.09em;font-weight:600}

/* --- Page FAQ ---
   Le sommaire des catégories et les questions étaient posés côte à côte
   sans grille (`.faqpage` n'existe pas dans la page) : le sommaire, collant,
   passait par-dessus les questions. La grille est reconstituée ici, et le
   compteur de chaque catégorie se cale à droite. */
.secbody:has(> .faqnav + .faqpage__main){display:grid;grid-template-columns:15rem minmax(0,1fr);gap:clamp(2rem,4vw,4rem);align-items:start}
.faqnav{top:calc(var(--nav-total) + 1rem)}
.faqnav ul li a{display:flex;justify-content:space-between;gap:.6rem;align-items:baseline}
.faqnav ul li a b{font-size:.78rem;color:var(--gris);font-weight:500}
.faqnav__aide{margin-top:1.4rem}
.faqnav__aide > .btn{margin-top:.6rem}
@media(max-width:900px){
  .secbody:has(> .faqnav + .faqpage__main){grid-template-columns:1fr}
  .faqnav{position:static}
}

/* --- Fiche des réalisations (galerie, accueil + page réalisations) ---
   La fiche sous la capture : le lien « Voir le site » héritait du souligné
   rouge des liens de texte, étiré sur toute la largeur de la carte ; le
   sous-titre en capitales espacées pesait plus que le titre ; les étiquettes
   bordées et rosées se confondaient avec des boutons. Nouvelle fiche : logo en
   tuile arrondie, sous-titre en bas de casse, étiquettes douces sur fond gris,
   et un pied de carte « Voir le site » avec le bouton-flèche des lignes de
   prestation (même geste que sur l'accueil). */
.oeuvre__fiche{gap:.9rem;padding:clamp(1.2rem,2vw,1.5rem)}
.oeuvre__tete{gap:.8rem;align-items:center}
.oeuvre__logo{width:2.9rem;height:2.9rem;padding:.4rem;border-radius:var(--r-sm)}
.oeuvre__tete h3{font-size:1.08rem;letter-spacing:-.018em;line-height:1.25}
.oeuvre__meta{font-size:.84rem;text-transform:none;letter-spacing:0;font-weight:400;color:var(--gris);margin-top:.15rem}
.oeuvre__fiche > p{font-size:.94rem;line-height:1.6;color:var(--encre-2)}
.oeuvre__livre{gap:.4rem}
.oeuvre__livre li{border:0;background:var(--off);color:var(--encre-2);font-size:.78rem;font-weight:500;
  padding:.32rem .6rem;line-height:1.3;border-radius:var(--r-sm)}
.secbody .oeuvre__lien:not(.btn):not(.duo-link):not(.linklist a),.oeuvre__lien{
  display:flex;align-items:center;justify-content:space-between;gap:.8rem;
  margin-top:auto;padding-top:.9rem;border-top:1px solid var(--border);border-bottom:0;
  font-size:.92rem;font-weight:600;letter-spacing:-.01em;color:var(--encre)}
.oeuvre__lien em{flex:none;display:flex;align-items:center;justify-content:center;width:2rem;height:2rem;
  border-radius:var(--r-sm);background:var(--off);color:var(--encre);font-size:.95rem;
  transition:background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}
.oeuvre:hover .oeuvre__lien em{background:var(--rouge);color:#fff;transform:translateX(2px)}
.secbody .oeuvre__lien:not(.btn):not(.duo-link):not(.linklist a):hover{color:var(--rouge)}

/* --- Zone : les trois paliers en fiches ---
   La colonne de texte de la carte : une fiche par palier, avec pictogramme,
   numéro, trois étapes numérotées (« comment on vous aide ») et les métiers
   concernés en étiquettes ; le tout se relaie en cascade au changement de
   palier (site.js, module 7 quinquies). Les anciens numéro et filet en
   pseudo-éléments sont retirés. */
.zoneslide{padding:1.3rem 1.4rem 1.4rem;gap:0;background:rgba(255,255,255,.045);
  border:1px solid rgba(255,255,255,.1);border-radius:var(--r-lg);box-shadow:0 20px 50px -30px rgba(0,0,0,.6)}
.zoneslide::before,.zoneslide::after{content:none}
.zoneslide__tete{display:flex;align-items:center;justify-content:space-between;gap:1rem;width:100%;margin-bottom:1rem}
.zoneslide__ico{display:flex;align-items:center;justify-content:center;width:2.7rem;height:2.7rem;
  border-radius:var(--r-sm);background:rgba(233,72,47,.16);border:1px solid rgba(233,72,47,.35);color:var(--rouge-soft)}
.zoneslide__ico svg{width:20px;height:20px}
.zoneslide__num{display:flex;align-items:center;gap:.45rem;font-family:var(--display);font-size:.95rem;font-weight:600;color:#fff}
.zoneslide__num i{font-style:normal;color:rgba(255,255,255,.4);font-weight:500}
.zoneslide__jauge{display:flex;gap:.25rem;margin-left:.4rem}
.zoneslide__jauge i{width:1.1rem;height:3px;border-radius:2px;background:rgba(255,255,255,.18)}
.zoneslide__jauge i.is-on{background:var(--rouge)}
.zoneslide__titre{font-family:var(--display);font-size:clamp(1.25rem,1.9vw,1.55rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;color:#fff;margin:0 0 .45rem}
.zoneslide__lead{font-size:.95rem;line-height:1.55;color:rgba(255,255,255,.72);max-width:100%;margin:0}
.zoneslide__lab{font-size:.68rem;text-transform:uppercase;letter-spacing:.1em;font-weight:600;color:rgba(255,255,255,.42);margin:1.1rem 0 .55rem}
.zoneslide__pts{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.zoneslide__pts li{display:flex;align-items:flex-start;gap:.7rem;font-size:.92rem;line-height:1.45;color:rgba(255,255,255,.86)}
.zoneslide__pts i{flex:none;display:flex;align-items:center;justify-content:center;width:1.45rem;height:1.45rem;margin-top:.05rem;
  border-radius:50%;font-style:normal;font-family:var(--display);font-size:.7rem;font-weight:600;
  color:var(--rouge-soft);background:rgba(233,72,47,.16);border:1px solid rgba(233,72,47,.35)}
.zoneslide__pour{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.4rem}
.zoneslide__pour li{font-size:.76rem;font-weight:500;line-height:1.3;padding:.3rem .6rem;border-radius:var(--r-sm);
  color:rgba(255,255,255,.78);border:1px solid rgba(255,255,255,.16);background:rgba(255,255,255,.03)}
/* le second bouton, en fantôme sur le fond sombre */
#zone .btn-inner.is-ink{background:transparent;color:#fff;box-shadow:0 0 0 1px rgba(255,255,255,.3)}
#zone .btn:hover .btn-inner.is-ink{background:#fff;color:var(--encre);box-shadow:0 0 0 1px #fff}
#zone .btn-row{margin-top:.2rem}
@media(min-width:901px){
  #zone .zonetxt{width:min(48%,40rem);padding-block:clamp(3.5rem,7vh,6rem);gap:1rem}
  #zone h2{font-size:clamp(1.9rem,3vw,2.8rem)}
  /* les fiches se superposent ; la hauteur est celle de la plus haute (mesurée par JS) */
  #zone .zoneslides{min-height:0;margin-top:0}
  .zoneslide{pointer-events:none}
  .zoneslide[data-on]{pointer-events:auto}
}
@media(max-width:900px){
  .zoneslide{opacity:1}
  .zoneslide__pts{gap:.45rem}
}
/* écrans courts (portables 13") : la colonne doit tenir sous 800 px */
@media(min-width:901px) and (max-height:860px){
  #zone .zonetxt{padding-block:2.2rem 3.4rem;gap:.7rem}
  #zone h2{font-size:clamp(1.6rem,2.4vw,2.1rem)}
  .zoneslide{padding:1rem 1.1rem 1.1rem}
  .zoneslide__tete{margin-bottom:.6rem}
  .zoneslide__ico{width:2.3rem;height:2.3rem}
  .zoneslide__titre{font-size:1.2rem;margin-bottom:.3rem}
  .zoneslide__lead{font-size:.88rem;line-height:1.45}
  .zoneslide__lab{margin:.7rem 0 .4rem}
  .zoneslide__pts{gap:.35rem}
  .zoneslide__pts li{font-size:.86rem;line-height:1.35}
  .zoneslide__pour li{font-size:.72rem;padding:.24rem .5rem}
  #zone .zonerepere{padding:.9rem 0 .7rem}
}

/* --- Zone : la fiche, moins empilée ---
   Pictogramme, titre et compteur sur une même ligne ; les trois étapes en
   trois colonnes reliées par un filet (un parcours, pas une liste) ; les
   métiers sur une seule ligne sous un filet. Quatre étages au lieu de sept. */
.zoneslide__tete{align-items:center;gap:.8rem;margin-bottom:.75rem}
.zoneslide__tete .zoneslide__titre{flex:1;margin:0;font-size:clamp(1.15rem,1.7vw,1.4rem)}
.zoneslide__ico{width:2.4rem;height:2.4rem}
.zoneslide__ico svg{width:18px;height:18px}
.zoneslide__num{flex:none}
.zoneslide__lead{font-size:.92rem;line-height:1.5}
.zoneslide__pts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:1.15rem}
.zoneslide__pts li{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.35rem;font-size:.82rem;line-height:1.4;color:rgba(255,255,255,.65)}
.zoneslide__pts li:not(:last-child)::after{content:"";position:absolute;top:.72rem;left:1.85rem;right:-.65rem;height:1px;background:rgba(255,255,255,.14)}
.zoneslide__pts i{margin:0 0 .25rem}
.zoneslide__pts b{font-family:var(--display);font-size:.9rem;font-weight:600;letter-spacing:-.01em;line-height:1.25;color:#fff}
.zoneslide__qui{display:flex;flex-wrap:wrap;align-items:center;gap:.4rem;margin-top:1.15rem;padding-top:.9rem;border-top:1px solid rgba(255,255,255,.1)}
.zoneslide__qui .zoneslide__lab{margin:0 .35rem 0 0}
@media(min-width:901px) and (max-height:860px){
  .zoneslide__tete{margin-bottom:.5rem}
  .zoneslide__pts{margin-top:.8rem;gap:.8rem}
  .zoneslide__pts li{font-size:.78rem}
  .zoneslide__qui{margin-top:.8rem;padding-top:.7rem}
}
@media(max-width:900px){
  /* trop étroit pour trois colonnes : les étapes en lignes, numéro à gauche */
  .zoneslide__pts{grid-template-columns:1fr;gap:.7rem}
  .zoneslide__pts li{display:grid;grid-template-columns:1.45rem 1fr;column-gap:.6rem;row-gap:.15rem}
  .zoneslide__pts li i{grid-row:1/3;margin:0}
  .zoneslide__pts li:not(:last-child)::after{content:none}
}

/* --- Zone : la fiche, version claire ---
   La carte (`.zonefiche`) porte le fond et le bord ; les trois paliers se
   relaient dedans, et les boutons vivent dans la carte, sous un filet.
   Plus de compteur, plus de « pour qui », plus de repères en bas d'écran.
   Les étapes : une ligne par étape — numéro, titre en gras à largeur fixe,
   explication — séparées par un filet fin, alignées en sous-grille. */
.zonefiche{background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.1);border-radius:var(--r-lg);
  padding:1.35rem 1.45rem 1.45rem;box-shadow:0 20px 50px -30px rgba(0,0,0,.6);width:100%}
.zoneslide{background:none;border:0;padding:0;box-shadow:none;border-radius:0}
.zoneslide__tete{margin-bottom:.7rem}
.zoneslide__tete .zoneslide__titre{font-size:clamp(1.2rem,1.8vw,1.45rem)}
.zoneslide__lead{font-size:.95rem;line-height:1.55;color:rgba(255,255,255,.72)}
.zoneslide__pts{display:grid;grid-template-columns:auto minmax(8.5rem,10rem) minmax(0,1fr);column-gap:.9rem;row-gap:0;margin-top:1rem}
.zoneslide__pts li{display:grid;grid-column:1/-1;grid-template-columns:subgrid;column-gap:.9rem;align-items:start;
  padding-block:.7rem;border-top:1px solid rgba(255,255,255,.09);font-size:.88rem;line-height:1.45;color:rgba(255,255,255,.68)}
.zoneslide__pts li:first-child{border-top:0;padding-top:.2rem}
.zoneslide__pts li:last-child{padding-bottom:.2rem}
.zoneslide__pts li::after{content:none}
.zoneslide__pts i{margin:.05rem 0 0}
.zoneslide__pts b{font-family:var(--display);font-size:.95rem;font-weight:600;letter-spacing:-.012em;line-height:1.35;color:#fff;padding-top:.05rem}
@supports not (grid-template-columns:subgrid){
  .zoneslide__pts li{grid-template-columns:auto 10rem minmax(0,1fr)}
}
.zonefiche .btn-row{margin-top:1.1rem;padding-top:0;border-top:0}   /* plus de filet entre les tuiles et le bouton */
@media(min-width:901px) and (max-height:860px){
  .zonefiche{padding:1rem 1.1rem 1.1rem}
  .zoneslide__pts{margin-top:.7rem}
  .zoneslide__pts li{padding-block:.5rem;font-size:.82rem}
  .zonefiche .btn-row{margin-top:.8rem;padding-top:0}
}
@media(max-width:900px){
  .zonefiche{padding:1.1rem 1.15rem 1.2rem}
  .zoneslides{gap:1.6rem}
  /* étroit : numéro à gauche, titre puis explication dessous */
  .zoneslide__pts{grid-template-columns:auto minmax(0,1fr)}
  .zoneslide__pts li{grid-template-columns:auto minmax(0,1fr);row-gap:.15rem}
  .zoneslide__pts li i{grid-row:1/3}
}

/* --- Zone : les trois leviers en prose ---
   Ni liste ni colonnes (Alessio) : les trois leviers de chaque palier
   tiennent en trois phrases courtes, le levier en gras dans chacune. */
.zoneslide__lead{font-size:1rem;line-height:1.55;color:rgba(255,255,255,.86)}
.zoneslide__how{margin:.9rem 0 0;font-size:.95rem;line-height:1.62;color:rgba(255,255,255,.66);max-width:100%}
.zoneslide__how b{display:inline-block;font:inherit;font-weight:600;letter-spacing:0;color:#fff}   /* `.zoneslide b` (titre d'autrefois) grossissait le gras */
@media(min-width:901px) and (max-height:860px){
  .zoneslide__lead{font-size:.92rem}
  .zoneslide__how{margin-top:.6rem;font-size:.88rem;line-height:1.5}
}

/* --- Zone : les services en lignes à pictogramme ---
   Chaque service distinct, sans tableau : un pictogramme dans une tuile,
   le nom en gras et la phrase qui suit, sur la même ligne — le même geste
   que les lignes de prestation de l'accueil. Ni numéros, ni filets. */
.zoneslide__srv{list-style:none;margin:1rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.zoneslide__srv li{display:flex;align-items:flex-start;gap:.75rem}
.zoneslide__srv i{flex:none;display:flex;align-items:center;justify-content:center;width:2.1rem;height:2.1rem;margin-top:.05rem;
  border-radius:var(--r-sm);background:rgba(233,72,47,.14);border:1px solid rgba(233,72,47,.32);color:var(--rouge-soft);font-style:normal}
.zoneslide__srv i svg{width:16px;height:16px}
.zoneslide__srv p{margin:0;font-size:.92rem;line-height:1.5;color:rgba(255,255,255,.66);max-width:100%}
.zoneslide__srv b{font:inherit;font-weight:600;letter-spacing:0;color:#fff}
.zoneslide__lead{color:rgba(255,255,255,.8)}
@media(min-width:901px) and (max-height:860px){
  .zoneslide__srv{margin-top:.7rem;gap:.45rem}
  .zoneslide__srv i{width:1.9rem;height:1.9rem}
  .zoneslide__srv p{font-size:.86rem;line-height:1.4}
}

/* --- Zone : les services, sous-titre puis explication ---
   Sans pictogramme ni numéro : le nom du service en gras sur sa ligne, son
   explication dessous, le tout calé à gauche et aéré. Un seul bouton, en
   fantôme, dans la carte. */
.zoneslide__srv{gap:.85rem}
.zoneslide__srv li{display:block}
.zoneslide__srv li b{display:block;font-family:var(--display);font-size:.98rem;font-weight:600;letter-spacing:-.012em;line-height:1.3;color:#fff;margin-bottom:.15rem}
.zoneslide__srv li p{font-size:.9rem;line-height:1.5;color:rgba(255,255,255,.62)}
@media(min-width:901px) and (max-height:860px){
  .zoneslide__srv{gap:.55rem}
  .zoneslide__srv li b{font-size:.92rem}
  .zoneslide__srv li p{font-size:.84rem;line-height:1.4}
}

/* --- Zone : chaque service dans sa propre tuile ---
   Pour dissocier nettement les trois sous-parties : une tuile arrondie par
   service, fond à peine plus clair que la carte, bord fin, sous-titre puis
   explication à l'intérieur. */
.zoneslide__srv{gap:.5rem;margin-top:1rem}
.zoneslide__srv li{padding:.75rem .95rem .8rem;border-radius:var(--r);background:rgba(255,255,255,.045);border:1px solid rgba(255,255,255,.09)}
.zoneslide__srv li b{margin-bottom:.2rem}
.zoneslide__srv li p{color:rgba(255,255,255,.64)}
@media(min-width:901px) and (max-height:860px){
  .zoneslide__srv{gap:.4rem;margin-top:.7rem}
  .zoneslide__srv li{padding:.55rem .75rem .6rem}
}

/* la pile a désormais une hauteur pilotée (elle glisse d'une fiche à l'autre) */
@media(min-width:901px){ #zone .zoneslides{overflow:visible} }

/* --- Zone : respirations dans la carte ---
   Tuiles un peu plus espacées, et le bouton nettement détaché des tuiles
   (`#zone .btn-row{margin-top:.2rem}`, posé pour l'ancienne rangée sous la
   carte, écrasait la marge du bouton dans la carte). */
.zoneslide__srv{gap:.6rem;margin-top:1.1rem}
#zone .zonefiche .btn-row{margin-top:1.5rem}
@media(min-width:901px) and (max-height:860px){
  .zoneslide__srv{gap:.45rem;margin-top:.8rem}
  #zone .zonefiche .btn-row{margin-top:1.1rem}
}

/* --- Barre de navigation en verre dépoli ---
   Le fond blanc laisse passer la page, floutée, au lieu d'un aplat presque
   opaque (les états « solide » remontaient à 94 % de blanc : le flou ne se
   voyait plus). */
.nav,.nav.is-solid{background:rgba(255,255,255,.7);
  backdrop-filter:blur(18px) saturate(1.5);-webkit-backdrop-filter:blur(18px) saturate(1.5);
  border-color:rgba(255,255,255,.55);box-shadow:0 18px 40px -28px rgba(38,38,43,.35)}
.nav.is-solid{background:rgba(255,255,255,.76)}

/* ==========================================================================
   L'ASSISTANT (chat.js) — nouveau dessin
   Fenêtre un peu plus grande, en-tête avec la marque, bulles arrondies,
   indicateur de frappe, choix en pastilles, boutons de conversion, barre
   de saisie pour poser une question librement, et une carte d'estimation.
   ========================================================================== */
.chat-panneau{width:min(26rem,calc(100vw - 1.5rem));height:min(72vh,42rem);max-height:calc(100vh - 7rem);
  border-radius:var(--r-xl);border:1px solid var(--border);background:var(--blanc);
  box-shadow:0 30px 70px -30px rgba(38,38,43,.45),0 0 0 1px rgba(38,38,43,.03);
  display:flex;flex-direction:column;overflow:hidden;
  transform-origin:100% 100%;animation:chatOuvrir .32s var(--ease) both}
.chat-panneau[hidden]{display:none}
@keyframes chatOuvrir{from{opacity:0;transform:translateY(12px) scale(.96)}to{opacity:1;transform:none}}
.chat-tete{display:flex;align-items:center;gap:.75rem;padding:.85rem 1rem;background:var(--encre);color:#fff;border-radius:0}
.chat-avatar{flex:none;display:flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;border-radius:50%;background:#fff}
.chat-avatar img{width:20px;height:20px;display:block}
.chat-tete__t{flex:1;min-width:0}
.chat-tete b{display:block;font-family:var(--display);font-size:.98rem;font-weight:600;letter-spacing:-.01em}
.chat-tete span{display:flex;align-items:center;gap:.4rem;font-size:.76rem;color:rgba(255,255,255,.62)}
.chat-etat{width:7px;height:7px;border-radius:50%;background:rgba(255,255,255,.35)}
.chat-etat.is-on{background:#3ddc84;box-shadow:0 0 0 3px rgba(61,220,132,.2)}
.chat-fermer{flex:none;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:rgba(255,255,255,.08);border:0;color:rgba(255,255,255,.75);cursor:pointer;padding:0;transition:background .25s var(--ease),color .25s var(--ease)}
.chat-fermer svg{width:14px;height:14px}
.chat-fermer:hover{background:rgba(255,255,255,.16);color:#fff}
.chat-fil{flex:1;min-height:0;max-height:none;padding:1rem 1rem .4rem;display:flex;flex-direction:column;gap:.55rem;overflow-y:auto;overscroll-behavior:contain;background:var(--blanc)}
.chat-bulle{max-width:88%;padding:.7rem .95rem;font-size:.9rem;line-height:1.5;border-radius:14px}
.chat-bulle.is-bot{background:var(--off);color:var(--encre);align-self:flex-start;border-bottom-left-radius:5px}
.chat-bulle.is-moi{background:var(--encre);color:#fff;align-self:flex-end;border-bottom-right-radius:5px}
.chat-bulle b{font-weight:600}
.chat-bulle + .chat-bulle.is-bot{margin-top:-.15rem}
.chat-fil > :first-child{margin-top:auto}   /* la conversation part du bas, près des choix */
/* l'indicateur de frappe */
.chat-frappe{display:flex;gap:4px;align-items:center;padding:.8rem .9rem}
.chat-frappe i{width:6px;height:6px;border-radius:50%;background:var(--gris-clair);animation:chatFrappe 1.1s infinite ease-in-out}
.chat-frappe i:nth-child(2){animation-delay:.15s}
.chat-frappe i:nth-child(3){animation-delay:.3s}
@keyframes chatFrappe{0%,60%,100%{transform:translateY(0);opacity:.5}30%{transform:translateY(-4px);opacity:1}}
/* les choix */
.chat-zone{padding:.35rem 1rem .6rem;display:flex;flex-direction:column;gap:.5rem}
.chat-choix-grp{display:flex;flex-wrap:wrap;gap:.4rem}
.chat-choix{text-align:left;background:var(--blanc);border:1px solid var(--border);border-radius:999px;
  padding:.5rem .85rem;font:inherit;font-size:.85rem;font-weight:500;color:var(--encre);cursor:pointer;line-height:1.3;
  transition:border-color .2s var(--ease),background .2s var(--ease),color .2s var(--ease),transform .2s var(--ease)}
.chat-choix:hover{border-color:var(--rouge);color:var(--rouge);background:var(--rose-bg);transform:translateY(-1px)}
.chat-choix.is-fort{background:var(--rouge);border-color:var(--rouge);color:#fff}
.chat-choix.is-fort:hover{background:var(--rouge-dark);border-color:var(--rouge-dark);color:#fff}
.chat-lien{display:inline-flex;align-items:center;gap:.3rem;align-self:flex-start;font-size:.82rem;font-weight:500;color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35);padding:.1rem 0}
.chat-lien:hover{border-bottom-color:var(--rouge)}
.chat-conv{display:flex;align-items:center;gap:.6rem;padding-top:.35rem;border-top:1px solid var(--border);margin-top:.1rem}
.chat-cta{display:inline-flex;align-items:center;justify-content:center;background:var(--rouge);color:#fff;border:0;border-radius:var(--r-sm);
  padding:.62rem .95rem;font:inherit;font-size:.86rem;font-weight:500;cursor:pointer;
  box-shadow:0 0 0 1px var(--rouge-dark),0 1px 2px rgba(201,58,34,.35);transition:background .25s var(--ease)}
.chat-cta:hover{background:var(--rouge-dark);color:#fff}
.chat-secondaire{background:none;border:0;padding:.4rem .2rem;font:inherit;font-size:.84rem;font-weight:500;color:var(--encre-2);cursor:pointer;text-align:left}
.chat-secondaire:hover{color:var(--rouge)}
/* la saisie */
.chat-saisie{display:flex;align-items:center;gap:.5rem;padding:.6rem .75rem .75rem;border-top:1px solid var(--border);background:var(--blanc)}
.chat-saisie input{flex:1;min-width:0;font:inherit;font-size:.9rem;padding:.65rem .9rem;border:1px solid var(--border);border-radius:999px;
  background:var(--off);color:var(--encre);outline:none;transition:border-color .2s var(--ease),background .2s var(--ease)}
.chat-saisie input:focus{border-color:var(--rouge);background:var(--blanc)}
.chat-saisie button{flex:none;width:2.4rem;height:2.4rem;border-radius:50%;border:0;background:var(--encre);color:#fff;cursor:pointer;
  display:flex;align-items:center;justify-content:center;transition:background .2s var(--ease),transform .2s var(--ease)}
.chat-saisie button svg{width:16px;height:16px}
.chat-saisie button:hover{background:var(--rouge);transform:translateX(1px)}
/* le formulaire */
.chat-form{display:flex;flex-direction:column;gap:.45rem;padding:.9rem;border:1px solid var(--border);border-radius:var(--r);background:var(--off)}
.chat-form__t{margin:0 0 .2rem}
.chat-form__t b{display:block;font-family:var(--display);font-size:.98rem;font-weight:600;letter-spacing:-.01em}
.chat-form__t span{display:block;font-size:.8rem;line-height:1.45;color:var(--gris);margin-top:.15rem}
.chat-form input,.chat-form textarea{font:inherit;font-size:.88rem;padding:.6rem .8rem;border:1px solid var(--border);border-radius:var(--r-sm);
  background:var(--blanc);color:var(--encre);outline:none;resize:vertical;transition:border-color .2s var(--ease)}
.chat-form input:focus,.chat-form textarea:focus{border-color:var(--rouge)}
.chat-form input.is-err{border-color:var(--rouge)}
.chat-form input.is-err::placeholder{color:var(--rouge)}
.chat-form .chat-cta{width:100%;margin-top:.2rem}
.chat-form .chat-cta:disabled{opacity:.6;cursor:default}
.chat-form__n{margin:.1rem 0 0;font-size:.72rem;line-height:1.4;color:var(--gris)}
.chat-form__n a{color:var(--gris);text-decoration:underline}
/* la carte d'estimation */
.chat-bulle .chat-estim{margin:0}
.chat-estim > b{display:block;font-family:var(--display);font-size:.98rem;font-weight:600;margin-bottom:.45rem}
.chat-estim__l,.chat-estim__t{display:flex;justify-content:space-between;gap:.8rem;font-size:.86rem;padding:.3rem 0;border-top:1px solid rgba(38,38,43,.08)}
.chat-estim__l span:first-child{color:var(--encre-2)}
.chat-estim__t{font-weight:600;color:var(--encre)}
.chat-estim__t span:last-child{color:var(--rouge)}
.chat-estim p{margin:.25rem 0 0;font-size:.78rem;color:var(--gris)}
@media(max-width:600px){
  .chat{right:.75rem;bottom:.75rem}
  .chat-panneau{width:calc(100vw - 1.5rem);height:min(78vh,40rem)}
  .chat-fil{max-height:none}
}

/* --- L'assistant : les propositions de réponse, une par ligne ---
   Un nuage de pastilles de largeurs inégales se lisait mal. Chaque
   proposition prend sa ligne, texte à gauche, chevron à droite, la
   précision (prix, durée) sur une seconde ligne en plus petit. */
.chat-choix-grp{flex-direction:column;flex-wrap:nowrap;gap:.35rem}
.chat-choix{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:.1rem;width:100%;
  border-radius:var(--r-sm);padding:.6rem 2.2rem .6rem .85rem;font-size:.88rem;line-height:1.35}
.chat-choix::after{content:"";position:absolute;right:.9rem;top:50%;width:.45rem;height:.45rem;margin-top:-.3rem;
  border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;transform:rotate(-45deg);opacity:.45;transition:opacity .2s var(--ease),transform .2s var(--ease)}
.chat-choix:hover{transform:none;background:var(--rose-bg)}
.chat-choix:hover::after{opacity:1;transform:rotate(-45deg) translate(2px,2px)}
.chat-choix small{font-size:.78rem;font-weight:400;color:var(--gris)}
.chat-choix.is-fort small{color:rgba(255,255,255,.8)}
.chat-choix.is-fort::after{opacity:.9}
.chat-fil{padding-bottom:.25rem}
.chat-zone{max-height:46%;overflow-y:auto;overscroll-behavior:contain}

/* --- L'assistant : quand les propositions sont nombreuses ---
   Le panneau porte `data-lenis-prevent` : la molette y défile le fil et la
   liste des propositions nativement, au lieu de faire défiler la page.
   La liste garde au plus 55 % de la hauteur et défile à l'intérieur, avec
   une barre fine visible. */
.chat-zone{max-height:55%;overflow-y:auto;scrollbar-width:thin;scrollbar-color:var(--gris-clair) transparent;scroll-padding-bottom:.5rem}
.chat-fil{scrollbar-width:thin;scrollbar-color:var(--gris-clair) transparent}
.chat-choix{padding:.62rem 2.2rem .62rem .9rem}
.chat-choix span{font-weight:600}
.chat-choix small{line-height:1.3}

/* --- L'assistant : recommencer, avec confirmation --- */
.chat-recommencer{flex:none;width:2rem;height:2rem;display:flex;align-items:center;justify-content:center;border-radius:50%;
  background:rgba(255,255,255,.08);border:0;color:rgba(255,255,255,.75);cursor:pointer;padding:0;margin-right:.2rem;
  transition:background .25s var(--ease),color .25s var(--ease),transform .4s var(--ease)}
.chat-recommencer svg{width:14px;height:14px}
.chat-recommencer:hover{background:rgba(255,255,255,.16);color:#fff;transform:rotate(-40deg)}
.chat-panneau{position:relative}
.chat-confirm{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;padding:1.2rem;
  background:rgba(38,38,43,.42);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px);animation:chatOuvrir .25s var(--ease) both}
.chat-confirm__carte{background:var(--blanc);border-radius:var(--r);padding:1.2rem 1.25rem 1.1rem;box-shadow:var(--ombre-md);max-width:20rem}
.chat-confirm__carte b{display:block;font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.01em;margin-bottom:.4rem}
.chat-confirm__carte p{margin:0 0 .9rem;font-size:.88rem;line-height:1.5;color:var(--encre-2)}
.chat-confirm__btns{display:flex;align-items:center;gap:.7rem}

/* --- L'assistant : fenêtre plus haute, propositions sur une ligne ---
   Toutes les propositions doivent se lire sans défiler : fenêtre plus
   haute, libellés courts sur une seule ligne, un peu plus grands. */
.chat-panneau{height:min(84vh,50rem)}
.chat-zone{max-height:64%}
.chat-choix{padding:.66rem 2.2rem .66rem .9rem;font-size:.9rem}
.chat-choix span{font-weight:500}
.chat-choix.is-fort span{font-weight:600}
@media(max-width:600px){ .chat-panneau{height:min(86vh,46rem)} }

/* --- Bandeaux d'appel : texte à gauche, boutons à droite ---
   `.bande`, `.midcta`, `.turn` passaient à la ligne dès que le texte prenait
   sa largeur maximale : les boutons se retrouvaient sous le texte. Deux
   colonnes franches, les boutons calés à droite ; une seule colonne sous
   760 px. */
.bande,.midcta,.turn{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;column-gap:clamp(1.5rem,3vw,3rem);row-gap:1rem}
.bande p,.turn__txt,.midcta p{max-width:44rem}
.bande .btn-row,.turn > .btn,.midcta > .btn{justify-self:end}
.bande .btn-row{flex-wrap:wrap;justify-content:flex-end}
@media(max-width:760px){
  .bande,.midcta,.turn{grid-template-columns:1fr}
  .bande .btn-row,.turn > .btn,.midcta > .btn{justify-self:start}
  .bande .btn-row{justify-content:flex-start}
}

/* --- Note de bas de section (`.fnote`) ---
   Une note discrète : petite, en italique, grise. */
.fnote,.secbody > .fnote{font-size:.82rem;font-style:italic;line-height:1.5;color:var(--gris);max-width:none;margin-top:1.25rem}

/* --- Tarifs de l'accueil : trois cartes ---
   Création de site, Visibilité Google (avec le sélecteur de durée dans la
   carte), pack Lancement. Le sélecteur remplace les trois lignes de prix
   empilées ; le prix se met à jour, la mention aussi. */
.plans--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.plan__duree{display:flex;flex-direction:column;gap:.55rem;align-items:flex-start;padding-top:1.1rem;border-top:1px solid var(--border)}
.plan__duree .toggle{width:100%;display:grid;grid-template-columns:repeat(3,1fr)}
.plan__duree .toggle button{padding:.5rem .4rem;font-size:.86rem;text-align:center}
.plan .plan__prixbloc{display:grid;grid-template-columns:auto auto;align-items:baseline;column-gap:.5rem;row-gap:.2rem;justify-content:start;
  padding:.3rem 0 0;border-top:0;margin-top:.5rem}
.plan .plan__prixbloc .prixbloc__ref{grid-column:1/-1;font-size:.95rem}
.plan .plan__prixbloc .prixbloc__val{font-size:clamp(2.4rem,4vw,3.2rem);color:var(--rouge);line-height:1}
.plan .plan__prixbloc .prixbloc__val::after{content:"\00a0€"}
.plan .plan__prixbloc .prixbloc__unite{font-size:.92rem;font-weight:500;color:var(--gris)}
.plan .plan__prixbloc .prixbloc__note{grid-column:1/-1;margin-top:.1rem}
.plan .plan__prixbloc + .plan__save{margin-top:.5rem}
@media(max-width:1000px){ .plans--3{grid-template-columns:1fr} .plan + .plan{border-left:1px solid var(--border)} }

/* le bandeau `.turn` a une icône en pseudo-élément : trois colonnes,
   icône, texte, bouton à droite */
.turn{grid-template-columns:auto minmax(0,1fr) auto}
.turn > .btn{grid-column:3;justify-self:end}
@media(max-width:760px){
  .turn{grid-template-columns:auto minmax(0,1fr)}
  .turn > .btn{grid-column:1/-1;justify-self:start}
}

/* ---------- Tarifs : cartes sans bascule, prestations en colonne de coches ---------- */
.plan__lab{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:var(--gris);
  margin-top:1.2rem!important;padding-top:1.2rem;border-top:1px solid var(--border)}
.plan .plan__lab + .check{margin-top:.45rem!important;padding-top:0;border-top:0}
.plan .check{gap:0}
.plan .check li{display:block;position:relative;padding:.6rem 0 .6rem 2.1rem;font-size:.94rem;line-height:1.5;color:var(--encre-2)}
.plan .check li + li{border-top:1px solid var(--border)}
.plan .check li::before{content:"";position:absolute;left:0;top:.68rem;width:1.3rem;height:1.3rem;border-radius:50%;
  background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 20 20' fill='none' stroke='%230E5C64' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M6 10.4l2.7 2.7L14.2 7.4'/%3E%3C/svg%3E") center/13px 13px no-repeat}
.plan .check li b{font-weight:600;color:var(--encre)}
.plan .check li:last-child{padding-bottom:.9rem}
.plan .check + .btn{margin-top:.2rem}
/* garanties : les cartes flottent sur le fond de section, plus de dalle blanche derrière */
.guarantees{background:transparent;border:0}
/* note Google sous les avis : centrée, un souffle au-dessus */
.satisfaction-badge{text-align:center;margin-top:1.6rem}
.satisfaction-badge b{color:var(--encre)}

/* ---------- FAQ : suites de lecture sous chaque réponse ----------
   Un bouton de conversion plein, des pastilles vers les pages qui expliquent. */
.faq-suite{display:flex;flex-wrap:wrap;align-items:center;gap:.5rem;margin-top:1.1rem!important;padding-top:1rem;border-top:1px dashed var(--border)}
.faq-body .faq-suite a{display:inline-flex;align-items:center;gap:.45rem;padding:.5rem .95rem;border:1px solid var(--border);border-radius:999px;
  font-size:.84rem;font-weight:500;line-height:1.2;color:var(--encre)!important;background:var(--blanc);text-decoration:none;
  transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease),transform .25s var(--ease)}
.faq-body .faq-suite a:hover{border-color:var(--encre);transform:translateY(-1px)}
.faq-body .faq-suite a svg{width:12px;height:12px;flex:none}
.faq-body .faq-suite .faq-suite__cta{background:var(--rouge);border-color:var(--rouge);color:#fff!important}
.faq-body .faq-suite .faq-suite__cta:hover{background:var(--rouge-dark);border-color:var(--rouge-dark)}
.on-ink .faq-body .faq-suite a{background:transparent;border-color:rgba(255,255,255,.22);color:#fff!important}
.on-ink .faq-body .faq-suite a:hover{border-color:#fff}
@media(max-width:560px){ .faq-body .faq-suite a{padding:.48rem .8rem;font-size:.8rem} }

/* ---------- Pied de page : marque, deux cartes (audit, lettre), plan du site ---------- */
.foot{padding-top:clamp(3rem,6vw,5rem);border-top:1px solid rgba(255,255,255,.1)}
.foot-haut{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr) minmax(0,1fr);gap:var(--g);align-items:stretch}
.foot-marque{display:flex;flex-direction:column;align-items:flex-start;gap:1.1rem;padding-right:clamp(0rem,3vw,2.5rem)}
.foot-marque .foot-p{margin:0;max-width:38ch;color:rgba(255,255,255,.62)}
.foot-contact{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem;font-size:.9rem;color:rgba(255,255,255,.5)}
.foot .foot-contact a{display:inline;padding:0;font-size:.92rem;color:#fff;font-weight:500}
.foot-social{display:flex;gap:.5rem;margin-top:.2rem}
.foot .foot-social__lien{display:inline-flex;align-items:center;justify-content:center;width:2.4rem;height:2.4rem;padding:0;border-radius:50%;
  border:1px solid rgba(255,255,255,.18);color:rgba(255,255,255,.75);cursor:pointer;
  transition:border-color .3s var(--ease),color .3s var(--ease),background .3s var(--ease)}
.foot .foot-social__lien:hover{color:#fff;border-color:#fff;background:rgba(255,255,255,.06)}
.foot-social__lien svg{width:17px;height:17px}
.foot-carte{display:flex;flex-direction:column;gap:.7rem;padding:clamp(1.4rem,2.4vw,2rem);
  border:1px solid rgba(255,255,255,.12);border-radius:var(--r-lg);background:rgba(255,255,255,.04)}
.foot-carte__lab{font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;font-weight:600;color:var(--rouge-soft)}
.foot-carte__titre{font-family:var(--display);font-size:clamp(1.1rem,1.4vw,1.3rem);font-weight:600;letter-spacing:-.02em;line-height:1.25;color:#fff}
.foot-carte__txt{font-size:.9rem;line-height:1.55;color:rgba(255,255,255,.6)}
.foot-carte__actions{margin-top:auto;padding-top:.5rem;display:flex;flex-direction:column;align-items:flex-start;gap:.75rem}
.foot .foot-carte__actions .btn{display:inline-block;padding:0;font-size:inherit}
.foot .foot-carte__tel{display:inline;padding:0;font-size:.86rem;color:rgba(255,255,255,.62)}
.foot .foot-carte__tel:hover{color:#fff}
.foot-news__form{display:flex;gap:.5rem;margin-top:auto;padding-top:.5rem}
.foot-news__form input{flex:1;min-width:0;height:2.9rem;padding:0 1rem;border-radius:999px;border:1px solid rgba(255,255,255,.2);
  background:rgba(255,255,255,.06);color:#fff;font:inherit;font-size:.92rem;transition:border-color .3s var(--ease)}
.foot-news__form input::placeholder{color:rgba(255,255,255,.4)}
.foot-news__form input:focus{outline:none;border-color:#fff}
.foot-news.has-error .foot-news__form input{border-color:var(--rouge-soft)}
.foot-news__btn{flex:none;display:inline-flex;align-items:center;gap:.4rem;height:2.9rem;padding:0 1.1rem;border-radius:999px;border:0;
  background:#fff;color:var(--encre);font:inherit;font-size:.88rem;font-weight:600;cursor:pointer;transition:background .3s var(--ease),color .3s var(--ease)}
.foot-news__btn:hover{background:var(--rouge);color:#fff}
.foot-news__btn svg{width:12px;height:12px}
.foot-news__note{font-size:.76rem;line-height:1.5;color:rgba(255,255,255,.62)}
.foot .foot-news__note a{display:inline;padding:0;font-size:inherit;color:rgba(255,255,255,.65);text-decoration:underline;text-underline-offset:2px}
.foot-news.is-ok .foot-news__form{display:none}
.foot-news.is-ok .foot-news__note{color:var(--mint);font-size:.9rem}
.foot-nav{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--g);
  margin-top:clamp(2.5rem,5vw,4rem);padding-top:clamp(2.5rem,5vw,4rem);border-top:1px solid rgba(255,255,255,.12)}
.foot-col{display:flex;flex-direction:column;align-items:flex-start}
.foot-col h4{margin-bottom:.8rem}
.foot-col__sous{margin-top:1.5rem}
.foot .foot-col a{font-size:.88rem;padding:.24rem 0;color:rgba(255,255,255,.62)}
.foot .foot-col a:hover{color:#fff}
.foot .foot-col__tous{margin-top:.5rem;color:#fff;font-weight:500}
.foot-col__tous::after{content:"\00a0→"}
.foot-bot{margin-top:clamp(2.5rem,5vw,4rem);padding-block:1.4rem;border-top:1px solid rgba(255,255,255,.12);font-size:.8rem;color:rgba(255,255,255,.62)}
.foot-bot__liens{display:flex;gap:1.2rem;flex-wrap:wrap}
.foot .foot-bot a{display:inline;padding:0;font-size:.8rem;color:rgba(255,255,255,.62)}
.foot .foot-bot a:hover{color:#fff}
@media(max-width:1100px){
  .foot-haut{grid-template-columns:1fr 1fr}
  .foot-marque{grid-column:1/-1;padding-right:0}
  .foot-nav{grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media(max-width:700px){
  .foot-haut{grid-template-columns:1fr}
  .foot-nav{grid-template-columns:1fr 1fr}
}
@media(max-width:480px){
  .foot-nav{grid-template-columns:1fr}
  .foot-news__form{flex-direction:column}
  .foot-news__btn{justify-content:center}
}

/* ---------- Méthode : les étapes sur un arc, une par cran (grand écran) ----------
   La scène est bâtie par site.js à partir de la liste `.trajet`, qui reste
   le rendu mobile et sans JS. Un grand cercle dont on ne voit que le sommet :
   le point courant y trône, les autres arrivent de la droite et s'en vont
   par la gauche en suivant la courbe. */
@media(min-width:901px){
  section.is-pas{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-block:clamp(1.5rem,4vh,3.5rem)}
  section.is-pas > .pad{width:100%}
  section.is-pas .trajet{display:none}
  section.is-pas .secbody{margin-top:0}
  section.is-pas .shead{margin-bottom:0}
}
.etapes{position:relative;width:100%;height:min(31rem,calc(100vh - 19rem));min-height:21rem;margin-top:clamp(.5rem,2vh,1.5rem);overflow:hidden;--apex:3rem}
.etapes__arc{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.etapes__trace{fill:none;stroke:var(--gris-clair);stroke-width:3;stroke-linecap:round;stroke-dasharray:0 10;opacity:.8}
.etapes__fait{fill:none;stroke:var(--rouge);stroke-width:2.5;stroke-linecap:round}
.etapes__points{position:absolute;inset:0;pointer-events:none}
.etapes__point{position:absolute;left:0;top:0;width:4.2rem;height:4.2rem;margin:-2.1rem 0 0 -2.1rem;border-radius:50%;
  background:var(--rouge);color:#fff;display:flex;align-items:center;justify-content:center;
  font-family:var(--display);font-size:1.5rem;font-weight:600;letter-spacing:-.02em;line-height:1;
  box-shadow:0 0 0 0 rgba(233,72,47,0),0 14px 30px -12px rgba(233,72,47,.55);will-change:transform,opacity;
  transition:box-shadow .5s var(--ease)}
.etapes__point.is-la{box-shadow:0 0 0 12px rgba(233,72,47,.1),0 14px 30px -12px rgba(233,72,47,.55)}
.etapes__point--cta{background:var(--encre);box-shadow:0 14px 30px -12px rgba(38,38,43,.5)}
.etapes__point--cta.is-la{box-shadow:0 0 0 12px rgba(38,38,43,.08),0 14px 30px -12px rgba(38,38,43,.5)}
.etapes__point svg{width:1.5rem;height:1.5rem}
.etapes__fiches{position:absolute;left:50%;top:calc(var(--apex) + 4.4rem);transform:translateX(-50%);width:min(38rem,calc(100% - 3rem));display:grid}
.etapes__fiche{grid-area:1/1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:.85rem;opacity:0;will-change:transform,opacity}
.etapes__quand{display:flex;align-items:baseline;gap:.5rem;font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.01em;color:var(--rouge)}
.etapes__quand span{font-size:.72rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--gris)}
.etapes__quand span::before{content:"·";margin-right:.5rem;color:var(--gris-clair)}
.etapes__fiche h3{font-family:var(--display);font-size:clamp(1.25rem,1.8vw,1.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.12;color:var(--encre)}
.etapes__fiche p{font-size:clamp(1rem,1.15vw,1.12rem);line-height:1.6;color:var(--encre-2);max-width:34rem}
.etapes__livre{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem}
.etapes__livre li{display:inline-flex;align-items:center;gap:.45rem;padding:.4rem .75rem .4rem .55rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--blanc);box-shadow:var(--ombre-xs);font-size:.82rem;line-height:1.2;color:var(--encre-2)}
.etapes__livre li::before{content:"";flex:none;width:1.05rem;height:1.05rem;border-radius:50%;background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230A464C' stroke-width='2.6' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/.55rem no-repeat}
.etapes__fiche .btn{margin-top:.3rem}

/* ══════════════════════════════════════════════════════════════════════════
   ESTIMATION GUIDÉE (page Tarifs, assets/estimation.js)
   Une question par écran, barre de progression, montants floutés jusqu'à la
   révélation, puis options à ajouter sur la page finale.
   ══════════════════════════════════════════════════════════════════════════ */
.estim{position:relative;margin-top:clamp(2rem,4vw,3rem);background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-xl);box-shadow:var(--ombre-md);
  display:flex;flex-direction:column;min-height:min(44rem,calc(100vh - 8rem))}
.estim [hidden]{display:none!important}
.estim__sansjs{padding:clamp(1.5rem,4vw,3rem);font-size:1rem;line-height:1.6;color:var(--encre-2)}
.estim__barre{padding:0 clamp(1.25rem,3.5vw,3rem);border-bottom:1px solid var(--border)}
.estim__prog{position:relative;height:4px;background:var(--off);border-radius:999px;margin-top:1.1rem;overflow:hidden}
.estim__prog i{display:block;height:100%;width:0;background:linear-gradient(90deg,var(--rouge-dark),var(--rouge) 60%,var(--rouge-soft));border-radius:999px;transition:width .6s var(--ease)}
.estim__meta{display:flex;align-items:center;gap:.8rem;padding:.75rem 0 .85rem;font-size:.78rem;color:var(--gris)}
.estim__etape{font-weight:500;color:var(--encre-2)}
.estim__pct{font-family:var(--display);font-weight:600;color:var(--rouge);font-variant-numeric:tabular-nums;letter-spacing:-.01em}
.estim__reset{margin-left:auto;display:inline-flex;align-items:center;gap:.4rem;border:0;background:none;font:inherit;font-size:.78rem;color:var(--gris);cursor:pointer;padding:.3rem .5rem;border-radius:var(--r-sm);transition:color .25s var(--ease),background .25s var(--ease)}
.estim__reset:hover{color:var(--encre);background:var(--off)}
.estim__reset svg{width:.85rem;height:.85rem}
.estim__scene{position:relative;flex:1;padding:clamp(1.6rem,4vw,3.2rem) clamp(1.25rem,3.5vw,3rem) clamp(1.2rem,3vw,2.4rem);min-height:22rem}
.estim__ecran{max-width:46rem}
.estim__ecran.is-final{max-width:none}
.estim__cat{display:flex;align-items:center;gap:.6rem;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--gris);margin:0 0 .9rem}
.estim__cat span{display:inline-flex;align-items:center;justify-content:center;min-width:1.7rem;height:1.7rem;padding:0 .4rem;border-radius:var(--r-sm);background:var(--rose-bg);color:var(--rouge);font-family:var(--display);font-size:.78rem;letter-spacing:0}
.estim__q{font-family:var(--display);font-size:clamp(1.5rem,2.8vw,2.2rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;color:var(--encre);margin:0;outline:none}
.estim__aide{font-size:.98rem;line-height:1.55;color:var(--gris);margin:.7rem 0 0;max-width:38rem}
.estim__opts{display:flex;flex-direction:column;gap:.55rem;margin-top:clamp(1.3rem,2.5vw,2rem);max-width:36rem}
.estim__opts.is-grille{max-width:none;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.estim__opt{display:flex;align-items:center;gap:.9rem;width:100%;text-align:left;border:1px solid var(--border);background:var(--blanc);border-radius:var(--r);padding:.85rem 1rem .85rem .85rem;font:inherit;color:var(--encre);cursor:pointer;
  transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.estim__opt:hover{border-color:var(--gris-clair);transform:translateY(-1px);box-shadow:var(--ombre-xs)}
.estim__opt:focus-visible{outline:2px solid var(--encre);outline-offset:2px}
.estim__opt.is-on{border-color:var(--rouge);background:var(--rose-bg);box-shadow:0 0 0 3px rgba(233,72,47,.12)}
.estim__touche{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border:1px solid var(--border);border-radius:6px;background:var(--off);font-family:var(--display);font-size:.72rem;font-weight:600;color:var(--gris);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
.estim__opt.is-on .estim__touche{background:var(--rouge);border-color:var(--rouge);color:#fff}
.estim__opt-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:.1rem}
.estim__opt-txt b{font-weight:600;font-size:.98rem;line-height:1.3}
.estim__opt-txt i{font-style:normal;font-size:.84rem;line-height:1.4;color:var(--gris)}
.estim__coche{flex:none;width:1.25rem;height:1.25rem;border-radius:50%;background:var(--rouge);color:#fff;display:inline-flex;align-items:center;justify-content:center;opacity:0;transform:scale(.6);transition:opacity .25s var(--ease),transform .3s var(--ease)}
.estim__coche svg{width:.75rem;height:.75rem}
.estim__opt.is-on .estim__coche{opacity:1;transform:scale(1)}
.estim__suite{margin-top:1.2rem}
.estim__ok{display:inline-flex;align-items:center;gap:.6rem;border:0;border-radius:var(--r-sm);background:var(--rouge);color:#fff;font:inherit;font-size:.92rem;font-weight:500;padding:.8rem 1.15rem;cursor:pointer;transition:background .3s var(--ease),opacity .3s var(--ease);box-shadow:0 0 0 1px var(--rouge-dark),0 1px 2px rgba(201,58,34,.35)}
.estim__ok:hover{background:var(--rouge-dark)}
.estim__ok:disabled{opacity:.4;cursor:not-allowed}
.estim__ok kbd,.estim__clavier kbd{font:inherit;font-size:.7rem;padding:.1rem .35rem;border-radius:4px;background:rgba(255,255,255,.2)}
.estim__clavier kbd{background:var(--off);border:1px solid var(--border);color:var(--encre-2)}
.estim__pied{display:flex;align-items:center;gap:1rem;padding:.9rem clamp(1.25rem,3.5vw,3rem);border-top:1px solid var(--border);background:var(--off);border-radius:0 0 var(--r-xl) var(--r-xl);min-height:3.6rem}
.estim__prec{display:inline-flex;align-items:center;gap:.4rem;border:1px solid var(--border);background:var(--blanc);border-radius:var(--r-sm);font:inherit;font-size:.84rem;font-weight:500;color:var(--encre-2);padding:.5rem .8rem .5rem .6rem;cursor:pointer;transition:border-color .25s var(--ease),color .25s var(--ease)}
.estim__prec:hover{border-color:var(--gris-clair);color:var(--encre)}
.estim__prec svg{width:.9rem;height:.9rem}
.estim__clavier{font-size:.78rem;color:var(--gris);margin:0}
.estim__mini{margin-left:auto;display:inline-flex;align-items:center;gap:.6rem;padding:.45rem .7rem .45rem .85rem;border-radius:999px;background:var(--blanc);border:1px solid var(--border);box-shadow:var(--ombre-xs);opacity:.55;transition:opacity .3s var(--ease)}
.estim__mini.is-on{opacity:1}
.estim__mini-lab{font-size:.68rem;text-transform:uppercase;letter-spacing:.08em;font-weight:600;color:var(--gris)}
.estim__mini-val{font-family:var(--display);font-weight:600;font-size:.95rem;color:var(--encre);font-variant-numeric:tabular-nums;min-width:3.6rem;text-align:right}
.estim__mini-val.is-flou{filter:blur(5px);user-select:none}
.estim__mini-cadenas{width:.9rem;height:.9rem;color:var(--rouge)}
.estim__confettis{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}
.estim__confettis i{position:absolute;width:9px;height:12px;border-radius:2px;will-change:transform,opacity}

/* --- écran final --- */
.estim__final{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(19rem,.85fr);gap:clamp(1.5rem,3.5vw,3.5rem);align-items:start}
.estim__badge{display:inline-flex;align-items:center;gap:.4rem;padding:.35rem .75rem;border-radius:999px;background:var(--mint);color:var(--teal);font-size:.74rem;font-weight:600;letter-spacing:.02em;margin-bottom:.9rem}
.estim__badge::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:var(--teal)}
.estim__titre{font-size:clamp(1.5rem,2.6vw,2.05rem)}
.estim__pourquoi{font-size:1rem;line-height:1.65;color:var(--encre-2);margin:.9rem 0 0;max-width:40rem}
.estim__pourquoi + .estim__pourquoi{margin-top:.6rem}
.estim__faits{list-style:none;margin:1.1rem 0 0;padding:0;display:flex;flex-wrap:wrap;gap:.5rem}
.estim__faits li{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .7rem;border-radius:var(--r-sm);background:var(--off);font-size:.82rem;font-weight:500;color:var(--encre-2)}
.estim__faits svg{width:.9rem;height:.9rem;color:var(--rouge)}
.estim__lab{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--gris);margin:0}
.estim__inclus{margin-top:1.6rem;padding-top:1.3rem;border-top:1px solid var(--border)}
.estim__inclus .check{margin-top:.7rem;gap:.4rem}
.estim__inclus .check li{font-size:.93rem;line-height:1.5;padding-left:1.7rem;color:var(--encre-2)}
.estim__inclus .check li::before{top:.28em;width:1.05rem;height:1.05rem;border-radius:50%;background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230E5C64' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/11px 11px no-repeat}
.estim__plus{margin-top:1.6rem;padding-top:1.3rem;border-top:1px solid var(--border)}
.estim__plus-aide{font-size:.88rem;line-height:1.5;color:var(--gris);margin:.4rem 0 0}
.estim__cartes{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-top:1rem}
.estim__carte{display:flex;flex-direction:column;justify-content:space-between;gap:.8rem;border:1px solid var(--border);border-radius:var(--r);padding:.9rem .95rem;background:var(--blanc);transition:border-color .25s var(--ease),background .25s var(--ease),box-shadow .25s var(--ease)}
.estim__carte.is-on{border-color:var(--rouge);background:var(--rose-bg)}
.estim__carte.is-fixe{border-color:rgba(14,92,100,.25);background:var(--mint)}
.estim__carte-txt{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.estim__carte-txt b{font-weight:600;font-size:.94rem;line-height:1.3;display:flex;flex-wrap:wrap;align-items:center;gap:.4rem}
.estim__carte-txt > span{font-size:.82rem;line-height:1.45;color:var(--gris)}
.estim__cartes .estim__carte-txt a{font-size:.8rem;white-space:nowrap}
.estim__tag{display:inline-flex;align-items:center;padding:.15rem .5rem;border-radius:999px;font-size:.66rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase;font-style:normal;line-height:1.4}
.estim__tag.is-precoche{background:var(--rouge);color:#fff}
.estim__tag.is-conseil{background:var(--mint);color:var(--teal)}
.estim__tag.is-nouveau{background:var(--encre);color:#fff}
.estim__tag.is-compris{background:var(--teal);color:#fff}
.estim__carte-fin{display:flex;align-items:center;justify-content:space-between;gap:.8rem;margin-top:auto}
.estim__chip{font-family:var(--display);font-weight:600;font-size:.98rem;color:var(--encre);font-variant-numeric:tabular-nums;letter-spacing:-.01em;transition:filter .9s var(--ease)}
.estim__chip em{font-style:normal;font-family:var(--font);font-weight:500;font-size:.74rem;color:var(--gris);letter-spacing:0;margin-left:.15rem}
.estim__final:not(.is-revele) .estim__chip{filter:blur(6px);user-select:none;pointer-events:none}
.estim__switch{flex:none;position:relative;width:2.6rem;height:1.5rem;border-radius:999px;border:0;background:var(--gris-clair);cursor:pointer;padding:0;transition:background .25s var(--ease)}
.estim__switch i{position:absolute;top:.18rem;left:.18rem;width:1.14rem;height:1.14rem;border-radius:50%;background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.25);transition:transform .3s var(--ease)}
.estim__switch[aria-checked="true"]{background:var(--rouge)}
.estim__switch[aria-checked="true"] i{transform:translateX(1.1rem)}
.estim__switch:focus-visible{outline:2px solid var(--encre);outline-offset:2px}
.estim__pas{display:inline-flex;align-items:center;gap:.2rem;margin-top:.3rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--blanc);padding:.15rem;align-self:flex-start}
.estim__pas b{min-width:2rem;text-align:center;font-family:var(--display);font-weight:600;font-size:.95rem;font-variant-numeric:tabular-nums}
.estim__pas-btn{width:1.7rem;height:1.7rem;border:0;border-radius:6px;background:var(--off);font:inherit;font-size:1rem;color:var(--encre);cursor:pointer;transition:background .25s var(--ease),color .25s var(--ease)}
.estim__pas-btn:hover{background:var(--rouge);color:#fff}
.estim__seg{display:inline-flex;gap:.2rem;margin-top:.35rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--blanc);padding:.15rem;align-self:flex-start;flex-wrap:wrap}
.estim__seg button{border:0;border-radius:6px;background:none;font:inherit;font-size:.76rem;font-weight:500;color:var(--gris);padding:.32rem .6rem;cursor:pointer;transition:background .25s var(--ease),color .25s var(--ease)}
.estim__seg button.is-on{background:var(--encre);color:#fff}

/* le ticket */
.estim__ticket{position:sticky;top:calc(var(--nav-total) + 1rem);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--blanc);box-shadow:var(--ombre-md);padding:clamp(1.2rem,2.2vw,1.6rem);display:flex;flex-direction:column;gap:.9rem}
.estim__lignes{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.estim__lignes li{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;padding:.55rem 0;border-bottom:1px dashed var(--border);font-size:.9rem;line-height:1.35}
.estim__lignes li span{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.estim__lignes li em{font-style:normal;font-size:.76rem;color:var(--gris)}
.estim__lignes li b{flex:none;font-weight:600;font-variant-numeric:tabular-nums;color:var(--encre);transition:filter .9s var(--ease)}
.estim__lignes li b small{font-size:.72rem;font-weight:500;color:var(--gris);margin-left:.1rem}
.estim__total{padding-top:.3rem}
.estim__total-lab{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--gris)}
.estim__prix-l{display:flex;align-items:baseline;gap:.45rem;margin:.15rem 0 0}
.estim__prix{font-family:var(--display);font-size:clamp(2.1rem,3.4vw,2.7rem);font-weight:600;letter-spacing:-.035em;line-height:1;color:var(--rouge);font-variant-numeric:tabular-nums;transition:filter .9s var(--ease)}
.estim__ht{font-size:.86rem;font-weight:500;color:var(--gris)}
.estim__fourchette,.estim__mensuel{font-size:.86rem;color:var(--encre-2);margin:.45rem 0 0;line-height:1.45}
.estim__fourchette b,.estim__mensuel b{font-weight:600;font-variant-numeric:tabular-nums;transition:filter .9s var(--ease)}
.estim__mensuel span{color:var(--gris);font-size:.8rem}
.estim__ticket.is-flou .estim__lignes b,.estim__ticket.is-flou .estim__prix,.estim__ticket.is-flou .estim__fourchette b,.estim__ticket.is-flou .estim__mensuel b{filter:blur(7px);user-select:none;pointer-events:none}
.estim__verrou{margin-top:.2rem;padding:1rem;border-radius:var(--r);background:var(--rose-bg);border:1px solid rgba(233,72,47,.18);overflow:hidden}
.estim__verrou-tete{display:flex;gap:.8rem;align-items:flex-start}
.estim__cadenas{flex:none;width:2.3rem;height:2.3rem;border-radius:var(--r-sm);background:var(--blanc);color:var(--rouge);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--ombre-xs)}
.estim__cadenas svg{width:1.2rem;height:1.2rem}
.estim__verrou-tete p{margin:0;font-size:.88rem;line-height:1.45;color:var(--encre-2)}
.estim__verrou-tete b{display:block;font-weight:600;color:var(--encre);margin-bottom:.1rem}
.estim__form{display:flex;flex-direction:column;gap:.6rem;margin-top:.9rem}
.estim__form .field label{display:flex;gap:.4rem;align-items:baseline}
.estim__form .field label i{font-style:normal;color:var(--rouge)}
.estim__facultatif{text-transform:none;letter-spacing:0;font-weight:500;color:var(--gris-clair)}
.estim__form input.is-mauvais{border-color:var(--rouge);box-shadow:0 0 0 3px rgba(233,72,47,.14)}
.estim__form .consent{margin:.3rem 0 .2rem;font-size:.82rem}
.estim__erreur{margin:0;font-size:.84rem;color:var(--rouge-dark);font-weight:500}
.estim__form button.btn svg{width:1rem;height:1rem}
.estim__form .form-reassure{margin-top:.2rem;text-align:center}
.estim__apres{display:flex;flex-direction:column;gap:.7rem;padding-top:.3rem}
.estim__merci{margin:0;font-size:.92rem;line-height:1.55;color:var(--encre-2);padding:.9rem 1rem;border-radius:var(--r);background:var(--mint);border:1px solid rgba(14,92,100,.16)}
.estim__apres .estim__appel{display:block}
.estim__apres .estim__appel .btn-inner{width:100%;justify-content:center}
.estim__urgence{margin:0;font-size:.84rem;color:var(--gris);text-align:center}
.estim__note{margin:0;font-size:.76rem;line-height:1.45;color:var(--gris-clair)}
.estim.is-final .estim__pied{justify-content:flex-start}
@media(max-width:1100px){ .estim__cartes{grid-template-columns:1fr} }
@media(max-width:900px){
  .estim{min-height:0}
  .estim__final{grid-template-columns:1fr}
  .estim__ticket{position:static;order:-1}
  .estim__reco{order:1}
  .estim__cartes{grid-template-columns:repeat(2,minmax(0,1fr))}
  .estim__clavier{display:none}
}
@media(max-width:700px){
  .estim__opts.is-grille{grid-template-columns:1fr}
  .estim__cartes{grid-template-columns:1fr}
  .estim__pied{gap:.6rem;flex-wrap:wrap}
  .estim__mini-lab{display:none}
}
@media(hover:none){ .estim__clavier{display:none} }

/* --- Page chatbot : conversation d'exemple --- */
.demo-chat{display:flex;flex-direction:column;gap:.55rem;margin:1.4rem auto;max-width:min(44rem,100%);padding:1.2rem;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--blanc);box-shadow:var(--ombre-xs)}
.demo-chat__msg{display:flex;margin:0}
.demo-chat__msg span{max-width:min(34rem,86%);padding:.7rem .95rem;border-radius:16px;font-size:.95rem;line-height:1.5}
.demo-chat__msg.is-visiteur{justify-content:flex-end}
.demo-chat__msg.is-visiteur span{background:var(--encre);color:#fff;border-bottom-right-radius:4px}
.demo-chat__msg.is-assistant span{background:var(--off);color:var(--encre);border-bottom-left-radius:4px;border:1px solid var(--border)}
.demo-chat + p{margin-top:1rem}
#exemple .turn{margin-top:1.6rem}

/* ══════════════════════════════════════════════════════════════════════════
   CONTRASTES (15/09/2026). Le rouge de marque (#E9482F) reste sur les
   aplats, les icônes et les grands titres ; pour le TEXTE rouge sur fond
   clair et les petits boutons pleins, un rouge à peine plus profond qui passe
   le seuil AA (4,5:1) : --rouge-txt sur blanc 4,85, sur rosé 4,5 ;
   --rouge-btn 4,62 sous du blanc. Le gris clair (#8E8E99, 3,2:1) ne porte
   plus de texte : les notes passent en gris (#63636E, 5,9:1).
   ══════════════════════════════════════════════════════════════════════════ */
:root{--rouge-txt:#CC3A22;--rouge-btn:#D53E26}
.prose a,.secbody a:not(.btn):not(.duo-link):not(.linklist a),.dtable .hi,.dtable .hi a,.toc a::before,
.stars,.statsrow .stars,.review .stars,.estim__pct,.estim__cat span,.lienfort,.mega-tel,
.consent a,.faq-body a:not(.faq-suite__cta):not(.faq-suite__lien),.parcours__n,.estim__erreur,.foot-news__note a,.plan__from,
.estim__form .field label i,.turn a:not(.btn){color:var(--rouge-txt)}
.hero-title em,.h1 em,.h2 em{color:var(--rouge)}
.btn-inner.is-rouge,button.btn,button.recap__cta,.faq-suite__cta,.estim__ok,.estim__tag.is-precoche,.estim__opt.is-on .estim__touche,
.foot-news__btn:hover,.estim__pas-btn:hover,.foot-cta .btn-inner.is-rouge{background:var(--rouge-btn)}
.faq-body .faq-suite .faq-suite__cta{background:var(--rouge-btn);border-color:var(--rouge-btn)}
.stat-src,.fact__s,.plan__note,.art__source,.chat-attente,.cartes__note,.srvc__prix small,.filtre i,.chip-f i,.estim__facultatif,.estim__note,.prixbloc__ref{color:var(--gris)}
/* tableaux posés sur une section encre : le texte restait encre sur encre */
.on-ink .tablewrap{border-color:rgba(255,255,255,.14);background:#1c1c20}
.on-ink .dtable th,.on-ink .dtable td{color:rgba(255,255,255,.86);border-bottom-color:rgba(255,255,255,.12)}
.on-ink .dtable thead th{color:rgba(255,255,255,.62)}
.on-ink .dtable tbody th{color:#fff}
.on-ink .dtable .hi,.on-ink .dtable .hi a{color:var(--rouge-soft)}
.on-ink .dtable tr:nth-child(even) td{background:transparent}
/* liens sur encre : rouge doux (6:1), la règle générale des liens repeignait en rouge texte */
.on-ink .secbody a:not(.btn):not(.duo-link):not(.linklist a),.on-ink .prose a,.on-ink .art__lien,.on-ink .faq-body a:not(.faq-suite__cta):not(.faq-suite__lien){color:var(--rouge-soft);border-bottom-color:rgba(255,126,106,.45)}
.on-ink .art__2 > * a,.on-ink .art__3 > * a{color:var(--rouge-soft)}
/* petits libellés rouges des pages pack : rouge texte ; drapeaux pleins : rouge bouton */
.choice__reco,.choice__flag,.duel__lab,.market__flag,.feat-num{color:var(--rouge-txt)}
.formule__drapeau{background:var(--rouge-btn)}
.turn a:not(.btn),.note--plus a{color:var(--teal-dark)}
.market__col--us .market__flag{background:var(--rouge-btn)}
.packgrid .srv__voir{background:var(--rouge-btn)}
.duel__lab{color:rgba(255,255,255,.7)}
.duel__cote--nous .duel__lab{color:var(--rouge-txt)}
.duel__pivot span{color:rgba(255,255,255,.62)}
.duel__unite{color:rgba(255,255,255,.66)}
.formule__prix > span{color:var(--rouge-txt)}

/* ══════════════════════════════════════════════════════════════════════════
   PAGES SERVICE (refonte du 15/09/2026, seconde version) : les pages
   réutilisent les composants validés de l'accueil (cadre photo + fiche,
   cartes à picto, plans et garanties, étapes, avis, galerie, besoins,
   bande). Ici seulement les quelques variantes nécessaires.
   ══════════════════════════════════════════════════════════════════════════ */
/* héros : le cadre photo de l'accueil, posé dans la colonne de droite,
   avec les trois faits dans une fiche blanche */
.hero-cadre--offre{width:auto;aspect-ratio:5/4;margin:0 0 0 clamp(1.5rem,3.5vw,3.5rem);box-sizing:border-box}
.hero-cadre--offre::after{background:linear-gradient(180deg,rgba(38,38,43,0) 45%,rgba(38,38,43,.42))}
.hero-fiche--faits{width:min(22rem,calc(100% - 2rem));padding:.55rem .9rem;gap:0}
.hero-fiche--faits .hero-faits{padding:0;gap:0;border:0}
.hero-fiche--faits .hero-faits li{padding:.6rem 0;border-bottom:1px solid var(--border);gap:.75rem;align-items:center}
.hero-fiche--faits .hero-faits li:last-child{border-bottom:0;padding-bottom:.6rem}
.hero-fiche--faits .hero-faits__ico{width:2rem;height:2rem;background:var(--rose-bg);border-color:transparent}
.hero-fiche--faits .hero-faits__ico svg{width:16px;height:16px}
.hero-fiche--faits .hero-faits__txt{gap:.08rem}
.hero-fiche--faits .hero-faits__txt b{font-size:.92rem;color:var(--encre)}
.hero-fiche--faits .hero-faits__txt span{font-size:.78rem;line-height:1.35}
@media(max-width:900px){
  .hero-cadre--offre{margin:0;aspect-ratio:16/10}
  .hero-fiche--faits{position:static;width:100%;margin-top:.75rem;box-shadow:var(--ombre-xs);border:1px solid var(--border)}
  .hero--offre .hero-grid > .hero-cadre--offre{display:flex;flex-direction:column;aspect-ratio:auto;background:transparent;box-shadow:none;overflow:visible}
  .hero--offre .hero-grid > .hero-cadre--offre::after{display:none}
  .hero--offre .hero-grid > .hero-cadre--offre picture{display:block;aspect-ratio:16/10;border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--ombre-md)}
}
/* bande visuelle au milieu d'une page : le même cadre que l'accueil */
.visuel-cadre{aspect-ratio:2.4;margin-top:clamp(2rem,3.5vw,3rem)}
.hero-fiche--fait{gap:.35rem}
.hero-fiche--fait b{display:flex;align-items:center;gap:.5rem;color:var(--encre);font-size:1rem}
.hero-fiche--fait b svg{width:1.05rem;height:1.05rem;color:var(--rouge);flex:none}
.hero-fiche--fait span{font-size:.84rem;line-height:1.45;color:var(--gris)}
@media(max-width:700px){ .visuel-cadre{aspect-ratio:4/3} }
/* cartes numérotées : la structure d'un site, une page après l'autre */
.card-ico--n{font-family:var(--display);font-weight:600;font-size:.82rem;letter-spacing:.03em}
/* un seul plan, ou deux besoins : centrés, pas étirés */
.plans--1{grid-template-columns:minmax(0,1fr);max-width:36rem;margin-inline:auto}
.besoins.is-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:64rem;margin-inline:auto}
@media(max-width:760px){ .besoins.is-2{grid-template-columns:1fr} }
/* section prix : le texte reste en colonne de lecture, les plans en dessous prennent toute la largeur */
.prix-plans{margin-top:clamp(2rem,3.5vw,2.8rem)}
.prix-plans + .guarantees{margin-top:1rem}
/* galerie de deux réalisations sur une page service */
.galerie.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:820px){ .galerie.is-2{grid-template-columns:1fr} }
/* cartes de l'accueil posées dans un bloc de texte : sans l'espacement des intertitres de prose */
.prose .cards{margin-top:1.6rem;max-width:none}
.prose .card h3{margin-top:0}
.prose .card > * + *{margin-top:0}
.prose .card p{margin:0}
.prose .card{gap:.8rem}
/* plans et garanties posés sur une section encre (pages service) : la carte reste blanche, les garanties passent en carte sombre */
.on-ink .plan p,.on-ink .plan .plan__for{color:var(--encre-2)}
.on-ink .plan .plan__from,.on-ink .plan .plan__lab,.on-ink .plan .plan__note{color:var(--gris)}
.on-ink .plan .plan__save{color:var(--teal)}
.on-ink .plan h3{color:var(--encre)}
.on-ink .guar{background:#1c1c20;border-color:rgba(255,255,255,.12)}
.on-ink .guar b{color:#fff}
.on-ink .guar span{color:rgba(255,255,255,.72)}
.on-ink .guar-ico{background:rgba(255,255,255,.08);color:var(--rouge-soft);border-color:transparent}
.on-ink .note p,.on-ink .note li{color:rgba(255,255,255,.82)}
.on-ink .note > b,.on-ink .note > strong{color:#fff}
.duel__cote--nous .duel__lab{color:var(--teal-dark)}

/* ══════════════════════════════════════════════════════════════════════════
   PIED DE PAGE, version du 18/09/2026 : la marque à gauche (logo, texte,
   contact, réseaux), les liens classiques à droite en quatre colonnes ;
   plus de cartes audit / lettre.
   ══════════════════════════════════════════════════════════════════════════ */
.foot-haut{grid-template-columns:minmax(17rem,.9fr) minmax(0,2.4fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.foot-haut .foot-nav{grid-template-columns:repeat(4,minmax(0,1fr));margin-top:0;padding-top:0;border-top:0;gap:clamp(1.2rem,2.5vw,2.5rem)}
.foot-nav h4{color:#fff;font-size:.74rem;letter-spacing:.09em;margin-bottom:.9rem}
.foot .foot-col a{font-size:.88rem;padding:.26rem 0;line-height:1.35;color:rgba(255,255,255,.7)}
.foot .foot-col a:hover{color:#fff}
.foot-col__sous{margin-top:1.4rem}
@media(max-width:1100px){ .foot-haut{grid-template-columns:1fr;gap:2.5rem} .foot-marque{padding-right:0} .foot-haut .foot-nav{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:640px){ .foot-haut .foot-nav{grid-template-columns:1fr} }

/* ══════════════════════════════════════════════════════════════════════════
   PAGES SERVICE, troisième passe (18/09/2026) : hiérarchie et lisibilité.
   Libellé au-dessus du titre, chapeau centré dans l'en-tête, texte courant
   en colonne de lecture, offres en rangées (groupe + points), liste
   « compris » en carte, échelle typographique unique.
   ══════════════════════════════════════════════════════════════════════════ */
.shead__kicker{margin:0;font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--rouge-txt)}
.shead .shead__kicker + .h2{margin-top:-.25rem}
.on-ink .shead__kicker{color:var(--rouge-soft)}
main.srv .shead{gap:.9rem}
main.srv .shead .lead{font-size:clamp(1.05rem,1.25vw,1.2rem);line-height:1.55;color:var(--encre-2);max-width:44rem}
main.srv .on-ink .shead .lead{color:rgba(255,255,255,.82)}
/* texte courant : colonne de lecture centrée, composants pleine largeur */
main.srv .secbody .prose,main.srv .wrap > .shead + .prose{max-width:none;margin-top:0}
main.srv .prose > p,main.srv .prose > ul:not(.check):not(.trajet),main.srv .prose > ol:not(.trajet):not(.srv-grille),main.srv .prose > .arem{max-width:44rem;margin-inline:auto}
main.srv .prose > p{font-size:1.02rem;line-height:1.65;color:var(--encre-2)}
main.srv .prose > .prose-lead{font-size:clamp(1.05rem,1.25vw,1.2rem);color:var(--encre-2);font-weight:500}
main.srv .prose > .note,main.srv .prose > .honest,main.srv .prose > .cards,main.srv .prose > .offres,main.srv .prose > .compris,main.srv .prose > .tablewrap,main.srv .prose > .trajet,main.srv .prose > .hero-cadre,main.srv .prose > .bande,main.srv .prose > .plans{max-width:none;margin-inline:0}
main.srv .prose > * + *{margin-top:1.3rem}
main.srv .prose > .cards,main.srv .prose > .offres,main.srv .prose > .compris,main.srv .prose > .tablewrap,main.srv .prose > .trajet{margin-top:2rem}
main.srv .prose > .cards + p,main.srv .prose > .offres + p,main.srv .prose > .compris + p,main.srv .prose > .tablewrap + p{margin-top:2rem}
main.srv .prose > .hero-cadre{margin-top:2.4rem}
main.srv .prose > .bande{margin-top:2.4rem}
main.srv .art__liste{max-width:44rem;margin-inline:auto}
/* échelle : titre de section > chapeau > titres de cartes > texte > notes */
main.srv .card h3{font-size:1.12rem;line-height:1.3}
main.srv .card p{font-size:.95rem;line-height:1.58}
main.srv .card p + p{margin-top:.5rem}
main.srv .note p,main.srv .honest p{font-size:.95rem}
main.srv .dtable{font-size:.94rem}
/* offres : une rangée par groupe, le bénéfice à gauche, les points à droite */
.offres{display:flex;flex-direction:column;gap:1rem}
.offre{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.7fr);gap:1.6rem clamp(1.5rem,3vw,3rem);padding:clamp(1.4rem,2.4vw,2rem);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--blanc);box-shadow:var(--ombre-xs)}
.offre__tete{display:flex;flex-direction:column;gap:.6rem}
.offre__tete .card-ico{margin-bottom:.2rem}
.offre__tete h3{margin:0;font-family:var(--display);font-size:1.28rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.offre__tete p{margin:0;font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.offre__liste{list-style:none;margin:0!important;padding:0;display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem 1.4rem!important}
.offre__liste li{display:flex;align-items:flex-start;gap:.7rem;padding-left:0!important}
.offre__liste li::before{display:none}
.offre__pt{flex:none;width:1.75rem;height:1.75rem;border-radius:50%;background:var(--mint);color:var(--teal);display:inline-flex;align-items:center;justify-content:center;margin-top:.1rem}
.offre__pt svg{width:.95rem;height:.95rem}
.offre__txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.offre__txt b{font-weight:600;font-size:1rem;line-height:1.3;color:var(--encre)}
.offre__txt span{font-size:.9rem;line-height:1.5;color:var(--gris)}
.on-ink .offre{background:#1c1c20;border-color:rgba(255,255,255,.1)}
.on-ink .offre__tete h3,.on-ink .offre__txt b{color:#fff}
.on-ink .offre__tete p{color:rgba(255,255,255,.8)}.on-ink .offre__txt span{color:rgba(255,255,255,.66)}
@media(max-width:900px){ .offre{grid-template-columns:1fr} }
@media(max-width:640px){ .offre__liste{grid-template-columns:1fr} }
/* liste « compris » : une carte, deux colonnes de coches */
.compris{padding:clamp(1.2rem,2.2vw,1.8rem);border:1px solid var(--border);border-radius:var(--r-lg);background:var(--blanc);box-shadow:var(--ombre-xs)}
.compris .check{margin:0}
.compris .check li{font-size:.95rem;line-height:1.5;padding-left:1.8rem;color:var(--encre-2)}
.compris .check li::before{top:.28em;width:1.05rem;height:1.05rem;border-radius:50%;background:var(--mint) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%230E5C64' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/11px 11px no-repeat}
.on-ink .compris{background:#1c1c20;border-color:rgba(255,255,255,.1)}
.on-ink .compris .check li{color:rgba(255,255,255,.82)}
@media(max-width:640px){ .compris .check--2col{grid-template-columns:1fr} }
/* listes à puces restantes (dans la colonne de lecture) */
main.srv .prose > ul:not(.check) li{font-size:1rem;line-height:1.6}
main.srv .on-ink .prose > p,main.srv .on-ink .prose > .arem,main.srv .on-ink .prose > ul:not(.check) li{color:rgba(255,255,255,.82)}
main.srv .on-ink .prose > .prose-lead,main.srv .on-ink .prose > p strong{color:#fff}
/* retouches de contraste (accueil, blog) */
.turn .btn-inner,.turn .btn-inner.is-rouge{background:var(--teal);color:var(--mint)}
.turn .btn:hover .btn-inner{background:var(--teal-dark)}
.jobpill.is-all a,.jobpill.is-all a span{color:var(--rouge-txt)}
.facette__plus{color:var(--rouge-txt)}
.post-cta__tel{color:rgba(255,255,255,.7)}
.secbody .post-cta__tel a:not(.btn),.post-cta__tel a{color:#fff!important}

/* --- estimation guidée, écran de question sur toute la largeur (18/09/2026) --- */
.estim__ecran:not(.is-final){max-width:none;display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(1.5rem,4vw,4.5rem);align-items:start}
.estim__qcol{display:flex;flex-direction:column;gap:0}
.estim__indice{display:flex;align-items:flex-start;gap:.7rem;margin:1.4rem 0 0;padding:.9rem 1rem;border-radius:var(--r);background:var(--mint);border:1px solid rgba(14,92,100,.16);font-size:.9rem;line-height:1.5;color:var(--teal-dark);max-width:30rem}
.estim__indice-ico{flex:none;width:2rem;height:2rem;border-radius:var(--r-sm);background:var(--blanc);color:var(--teal);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--ombre-xs)}
.estim__indice-ico svg{width:1.1rem;height:1.1rem}
.estim__ecran:not(.is-final) .estim__opts{margin-top:.4rem;max-width:none}
.estim__opts.is-grille{grid-template-columns:repeat(2,minmax(0,1fr))}
.estim__opt{padding:1rem 1rem 1rem .95rem;min-height:4.6rem}
.estim__opt-fleche{flex:none;width:1.6rem;height:1.6rem;border-radius:50%;border:1px solid var(--border);color:var(--gris);display:inline-flex;align-items:center;justify-content:center;transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease),transform .25s var(--ease)}
.estim__opt-fleche svg{width:.8rem;height:.8rem}
.estim__opt:hover .estim__opt-fleche{background:var(--rouge-btn);border-color:var(--rouge-btn);color:#fff;transform:translateX(2px)}
.estim__opt.is-on .estim__opt-fleche{display:none}
.estim__opt.is-on .estim__coche{margin-left:auto}
.estim__suiv{margin-left:.5rem;display:inline-flex;align-items:center;gap:.45rem;border:0;border-radius:var(--r-sm);background:var(--rouge-btn);color:#fff;font:inherit;font-size:.86rem;font-weight:500;padding:.6rem .9rem .6rem 1rem;cursor:pointer;transition:background .25s var(--ease),opacity .25s var(--ease);box-shadow:0 0 0 1px var(--rouge-dark),0 1px 2px rgba(201,58,34,.35)}
.estim__suiv svg{width:.85rem;height:.85rem}
.estim__suiv:hover{background:var(--rouge-dark)}
.estim__suiv:disabled{opacity:.35;cursor:not-allowed}
.estim__pied .estim__mini{margin-left:auto}
.estim__suite .estim__ok{margin-top:1rem}
@media(max-width:900px){
  .estim__ecran:not(.is-final){grid-template-columns:1fr;gap:1.2rem}
  .estim__indice{max-width:none}
  .estim__opts.is-grille{grid-template-columns:1fr}
  .estim__pied .estim__mini{margin-left:0}
  .estim__suiv{margin-left:auto}
}

/* ══════════════════════════════════════════════════════════════════════════
   BLOG (18/09/2026) : recherche et tri dans le héros, facettes dans un
   panneau latéral qui glisse par-dessus la page.
   ══════════════════════════════════════════════════════════════════════════ */
.blog-outils{display:flex;gap:.6rem;align-items:stretch;margin-top:1.5rem;max-width:52rem}
.blog-outils .rech--blog{flex:1 1 16rem;margin:0}
.blog-outils .rech--blog input{padding-left:2.9rem;padding-block:.85rem;font-size:.98rem;height:100%;box-sizing:border-box;border-radius:var(--r-sm);box-shadow:var(--ombre-xs)}
.blog-outils .rech--blog::before{content:"";position:absolute;left:1rem;top:50%;margin-top:-9px;width:18px;height:18px;background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2363636E' stroke-width='1.8' stroke-linecap='round'%3E%3Ccircle cx='11' cy='11' r='7'/%3E%3Cpath d='m21 21-4.3-4.3'/%3E%3C/svg%3E") center/18px no-repeat}
.blog-outils .bandeau__tri{display:flex}
.blog-outils .tri{height:100%;padding:.85rem 2.2rem .85rem 1rem;border-radius:var(--r-sm);box-shadow:var(--ombre-xs);border:1px solid var(--border)}
.blog-filtres{position:relative;display:inline-flex;align-items:center;gap:.5rem;padding:.85rem 1.1rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--blanc);box-shadow:var(--ombre-xs);font:inherit;font-size:.92rem;font-weight:500;color:var(--encre);cursor:pointer;transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}
.blog-filtres svg{width:1.05rem;height:1.05rem;color:var(--rouge)}
.blog-filtres:hover{border-color:var(--encre)}
.blog-filtres.is-actif{background:var(--encre);border-color:var(--encre);color:#fff}
.blog-filtres.is-actif svg{color:var(--rouge-soft)}
.blog-filtres__n{display:inline-flex;align-items:center;justify-content:center;min-width:1.35rem;height:1.35rem;padding:0 .35rem;border-radius:999px;background:var(--rouge-btn);color:#fff;font-size:.72rem;font-weight:600}
#articles .bandeau__compte{margin:0 0 1.2rem;font-size:.9rem;color:var(--gris)}
@media(max-width:700px){ .blog-outils{flex-wrap:wrap} .blog-outils .rech--blog{flex-basis:100%} .blog-outils .bandeau__tri{flex:1} .blog-outils .tri{width:100%} }
/* panneau */
.filtres-voile{position:fixed;inset:0;z-index:590;background:rgba(38,38,43,.5);opacity:0;transition:opacity .4s var(--ease)}
.filtres-voile.is-ouvert{opacity:1}
.filtres-panneau{position:fixed;top:0;right:0;bottom:0;z-index:600;width:min(28rem,100%);background:var(--blanc);box-shadow:-24px 0 60px -30px rgba(0,0,0,.4);display:flex;flex-direction:column;transform:translateX(102%);transition:transform .45s var(--ease)}
.filtres-panneau.is-ouvert{transform:none}
.filtres-panneau[hidden],.filtres-voile[hidden]{display:none}
.filtres-panneau__tete{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.1rem 1.4rem;border-bottom:1px solid var(--border)}
.filtres-panneau__titre{margin:0;font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.filtres-panneau__fermer{width:2.4rem;height:2.4rem;border-radius:50%;border:1px solid var(--border);background:var(--blanc);color:var(--encre);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .25s var(--ease),color .25s var(--ease)}
.filtres-panneau__fermer svg{width:.95rem;height:.95rem}
.filtres-panneau__fermer:hover{background:var(--encre);color:#fff}
.filtres-panneau__corps{flex:1;overflow-y:auto;padding:1.4rem;display:flex;flex-direction:column;gap:1.6rem;scrollbar-width:thin}
.filtres-panneau .facettes{display:flex;flex-direction:column;gap:1.5rem;border:0;padding:0;background:transparent;margin:0}
.filtres-panneau .facette--large{grid-column:auto}
.filtres-panneau .bandeau__actifs{order:-1;margin:0;padding:1rem;border-radius:var(--r);background:var(--off);border:1px solid var(--border)}
.filtres-panneau__pied{display:flex;gap:.6rem;align-items:center;justify-content:space-between;padding:1rem 1.4rem;border-top:1px solid var(--border);background:var(--blanc)}
.filtres-panneau__reset{background:none;border:0;font:inherit;font-size:.88rem;font-weight:500;color:var(--gris);cursor:pointer;padding:.5rem .2rem;text-decoration:underline;text-underline-offset:3px}
.filtres-panneau__reset:hover{color:var(--encre)}
.filtres-panneau .btn.filtres-panneau__voir{display:inline-flex;align-items:center;gap:.5rem;background:var(--rouge-btn);color:#fff;border-radius:var(--r-sm);padding:.8rem 1.1rem;font-size:.92rem;font-weight:500;border:0;cursor:pointer}
.filtres-panneau .btn.filtres-panneau__voir svg{width:.9rem;height:.9rem}
.filtres-panneau .btn.filtres-panneau__voir:hover{background:var(--rouge-dark)}
body.has-panneau{overflow:hidden}
.blog-filtres__n[hidden]{display:none!important}
.pagehead .blog-outils{max-width:44rem;margin-inline:auto;width:100%}
.pagehead-copy:only-child .blog-outils{margin-inline:auto}

/* ══════════════════════════════════════════════════════════════════════════
   ARTICLES (18/09/2026) : corps de texte mieux rythmé, photos dans le
   texte, panneau latéral pensé pour la conversion.
   ══════════════════════════════════════════════════════════════════════════ */
.artgrid{grid-template-columns:minmax(0,1fr) 19rem}
.artbody{counter-reset:art}
.artbody > section:not(#questions-frequentes) > h2{position:relative;padding-top:.35rem}
.artbody > section:not(#questions-frequentes) > h2::before{counter-increment:art;content:counter(art,decimal-leading-zero);display:block;margin-bottom:.7rem;font-family:var(--display);font-size:.78rem;font-weight:600;letter-spacing:.1em;color:var(--rouge-txt)}
.artbody .prose{font-size:1.05rem;line-height:1.72;color:var(--encre-2)}
.artbody .prose > p + p{margin-top:1.15rem}
.artbody .prose-lead{font-size:clamp(1.15rem,1.5vw,1.32rem);line-height:1.5;color:var(--encre);font-weight:500}
.artbody h3{font-family:var(--display);font-size:1.3rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre);margin-top:2.4rem;margin-bottom:.9rem}
.artbody h4{font-size:1.06rem;margin-top:1.8rem}
.artbody .prose ul{gap:.75rem}
.artbody .prose ul li{padding-left:1.9rem;line-height:1.62}
.artbody .prose ul li::before{top:.4em;width:1.05rem;height:1.05rem;border-radius:50%;background:var(--rose-bg) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23CC3A22' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/11px 11px no-repeat}
.artbody .prose ul li > b{color:var(--encre)}
.artbody .prose a{color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35);font-weight:500}
.artbody .prose a:hover{border-bottom-color:var(--rouge-txt)}
.artbody .prose strong{color:var(--encre)}
.artbody .note,.artbody .honest{margin-top:1.8rem}
.art-fig{margin:clamp(2rem,4vw,3rem) 0 0;border-radius:var(--r-xl);overflow:hidden;box-shadow:var(--ombre-md);background:var(--off);aspect-ratio:16/9}
.art-fig img{width:100%;height:100%;object-fit:cover;display:block}
.art-fig + section{margin-top:clamp(2.6rem,5vw,4rem);padding-top:clamp(2.6rem,5vw,4rem);border-top:1px solid var(--border)}
/* panneau latéral */
.artside--v2{gap:1.4rem;top:calc(var(--nav-total) + 1rem)}
.artside--v2 .side-bloc h2{margin-bottom:.7rem}
.artside--v2 .side-som ol{counter-reset:som}
.artside--v2 .side-som a{display:flex;gap:.55rem;align-items:baseline;padding:.4rem 0;font-size:.86rem;line-height:1.35;color:var(--encre-2);border-bottom:1px solid var(--border)}
.artside--v2 .side-som a::before{counter-increment:som;content:counter(som,decimal-leading-zero);flex:none;font-family:var(--display);font-size:.68rem;font-weight:600;color:var(--rouge-txt)}
.artside--v2 .side-som a:hover{color:var(--encre);padding-left:0}
.side-cta{position:relative;background:var(--encre);color:#fff;padding:1.4rem;border-radius:var(--r-lg);display:flex;flex-direction:column;gap:.85rem;align-items:flex-start;overflow:hidden}
.side-cta__ico{width:2.4rem;height:2.4rem;border-radius:var(--r-sm);background:rgba(255,255,255,.1);color:var(--rouge-soft);display:inline-flex;align-items:center;justify-content:center}
.side-cta__ico svg{width:1.2rem;height:1.2rem}
.side-cta p{font-size:.92rem;line-height:1.5;color:rgba(255,255,255,.8);margin:0}
.side-cta p b{display:block;color:#fff;font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.015em;margin-bottom:.3rem}
.artside--v2 .side-cta .btn{display:block;width:100%;padding:0;border-bottom:0}
.artside--v2 .side-cta .btn:hover{padding-left:0}
.side-cta .btn-inner{width:100%;justify-content:center}
.side-cta__faits{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.side-cta__faits li{position:relative;padding-left:1.35rem;font-size:.8rem;line-height:1.4;color:rgba(255,255,255,.72)}
.side-cta__faits li::before{content:"";position:absolute;left:0;top:.2em;width:.85rem;height:.85rem;border-radius:50%;background:rgba(222,248,243,.16) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23DEF8F3' stroke-width='2.2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/9px 9px no-repeat}
.artside--v2 .sidetel{display:inline;padding:0;border-bottom:0;font-size:.82rem;color:rgba(255,255,255,.72)}
.artside--v2 .sidetel:hover{color:#fff;padding-left:0}
.artside--v2 .side-estim{display:flex;align-items:center;gap:.8rem;padding:1rem 1.05rem;border-radius:var(--r-lg);background:var(--mint);border:1px solid rgba(14,92,100,.16);color:var(--teal-dark);border-bottom:1px solid rgba(14,92,100,.16);transition:transform .3s var(--ease),box-shadow .3s var(--ease)}
.artside--v2 .side-estim:hover{padding-left:1.05rem;transform:translateY(-2px);box-shadow:var(--ombre-md);color:var(--teal-dark)}
.side-estim__ico{flex:none;width:2.2rem;height:2.2rem;border-radius:var(--r-sm);background:var(--blanc);color:var(--teal);display:inline-flex;align-items:center;justify-content:center;box-shadow:var(--ombre-xs)}
.side-estim__ico svg{width:1.1rem;height:1.1rem}
.side-estim > span:not(.side-estim__ico):not(.side-srv__fleche){display:flex;flex-direction:column;gap:.1rem;min-width:0}
.side-estim b{font-weight:600;font-size:.92rem;line-height:1.3;color:var(--teal-dark)}
.side-estim > span > span{font-size:.8rem;line-height:1.35;color:var(--teal)}
.artside--v2 .side-srv{gap:.45rem}
.artside--v2 .side-srv a{display:flex;align-items:center;gap:.7rem;padding:.6rem .7rem;border:1px solid var(--border);border-radius:var(--r);background:var(--blanc);box-shadow:var(--ombre-xs);transition:transform .3s var(--ease),box-shadow .3s var(--ease),border-color .3s var(--ease)}
.artside--v2 .side-srv a:hover{padding-left:.7rem;transform:translateY(-2px);box-shadow:var(--ombre-md);border-color:transparent;color:inherit}
.side-srv__ico{flex:none;width:2.1rem;height:2.1rem;border-radius:var(--r-sm);background:var(--rose-bg);color:var(--rouge);display:inline-flex;align-items:center;justify-content:center}
.side-srv__ico svg{width:1.05rem;height:1.05rem}
.side-srv__txt{display:flex;flex-direction:column;gap:.05rem;min-width:0;flex:1}
.artside--v2 .side-srv a b{display:block;font-weight:600;font-size:.88rem;line-height:1.3;color:var(--encre)}
.artside--v2 .side-srv a span.side-srv__txt > span{display:block;font-size:.76rem;color:var(--gris);line-height:1.3}
.side-srv__fleche{flex:none;width:1.5rem;height:1.5rem;border-radius:50%;border:1px solid var(--border);display:inline-flex;align-items:center;justify-content:center;font-size:.8rem;color:var(--gris);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
/* .artside ul li a span (texte des liens de la colonne) est plus spécifique et
   passait ces deux pastilles en display:block, gris : l'icône et la flèche
   tombaient dans le coin haut gauche de leur cadre. */
.artside .side-srv__ico,.artside .side-srv__fleche{display:inline-flex;align-items:center;justify-content:center}
.artside .side-srv__ico{color:var(--rouge)}
.artside--v2 .side-srv a:hover .side-srv__fleche,.artside--v2 .side-estim:hover .side-srv__fleche{color:#fff}
.artside--v2 .side-srv a:hover .side-srv__fleche,.artside--v2 .side-estim:hover .side-srv__fleche{background:var(--rouge-btn);border-color:var(--rouge-btn);color:#fff}
.side-preuve{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem;padding:.9rem .6rem;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--off)}
.side-preuve div{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.1rem}
.side-preuve b{font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em;color:var(--encre);line-height:1}
.side-preuve span{font-size:.7rem;color:var(--gris);line-height:1.2}
.artside--v2 .side-fin .fnote a{display:inline;padding:0;color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}
/* .artside > div{flex:1 1 14rem} (colonne d'origine, en ligne) l'emportait sur
   .artside--v2 > * : empilés, les blocs prenaient 224 px de haut, la carte d'audit
   était coupée et les chiffres s'étiraient (vu le 16/10/2026) */
@media(max-width:1000px){ .artgrid{grid-template-columns:1fr} .artside--v2{flex-direction:column;gap:1.2rem} .artside--v2 > *,.artside--v2 > div{flex:none} .side-som{display:none} }
/* petits libellés rouges des pages métier / ville / pour-qui / articles : rouge texte */
.duo-lab,.duo-link,.pill,.sidetout,.post__cat,.artfold .pill,.bloggrid .post__cat,.post em{color:var(--rouge-txt)}
.duo-col.is-teal .duo-lab,.duo-col.is-teal .duo-link{color:var(--teal-dark)}

/* ══════════════════════════════════════════════════════════════════════════
   PAGES SERVICE, quatrième version (18/09/2026, outils/service_page.py) :
   un seul gabarit, les composants de l'accueil tels quels (cartes, tour
   « bonne nouvelle », plans, frise, avis, besoins, bande) et un composant
   photo + points (`.split`), bâti comme le cadre du héros.
   ══════════════════════════════════════════════════════════════════════════ */
main.srv[data-srv="3"] .card h3{font-size:clamp(1.05rem,1.35vw,1.28rem);line-height:1.22}
main.srv[data-srv="3"] .card p{font-size:.98rem;line-height:1.6}
main.srv[data-srv="3"] .card .pain__cost{margin-top:auto;padding-top:.6rem}
main.srv[data-srv="3"] .secbody > .bande{margin-top:clamp(1.8rem,3vw,2.6rem)}
main.srv[data-srv="3"] .secbody > .note{margin-inline:0;max-width:none;margin-top:1.6rem}
main.srv[data-srv="3"] .secbody > .note p{font-size:.98rem;max-width:none}
/* photo + points : la photo dans le cadre de l'accueil, le texte en face */
.split{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5.5rem);align-items:center;
  margin-top:clamp(2.2rem,4vw,3.2rem)}
.split__media{position:relative;margin:0;aspect-ratio:5/4;border-radius:var(--r-xl);overflow:hidden;background:var(--off);box-shadow:var(--ombre-md)}
.split__media picture,.split__media img{display:block;width:100%;height:100%;object-fit:cover}
.split__media::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(38,38,43,0) 55%,rgba(38,38,43,.38));pointer-events:none}
.split__media .hero-fiche{width:auto;max-width:calc(100% - 2rem)}
.split--inv .split__media{order:2}
.split__copy{display:flex;flex-direction:column;align-items:flex-start;gap:1.1rem;max-width:36rem}
.split__copy h3{margin:0;font-family:var(--display);font-size:clamp(1.3rem,1.75vw,1.6rem);font-weight:600;letter-spacing:-.025em;line-height:1.12;text-wrap:balance;color:var(--encre)}
.split__copy > p{margin:0;font-size:1.04rem;line-height:1.62;color:var(--encre-2)}
.split__liste{list-style:none;margin:.35rem 0 0;padding:0;display:flex;flex-direction:column;gap:1rem;width:100%}
.split__liste li{display:flex;align-items:flex-start;gap:.85rem}
.split__liste li i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.75rem;height:1.75rem;border-radius:50%;
  background:var(--mint);color:var(--teal);margin-top:.05rem}
.split__liste li i svg{width:.95rem;height:.95rem}
.split__liste li div{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.split__liste li b{font-weight:600;font-size:1.02rem;line-height:1.3;color:var(--encre)}
.split__liste li span{font-size:.94rem;line-height:1.5;color:var(--gris)}
.split__copy .btn-row{margin-top:.6rem}
.on-ink .split__copy h3,.on-ink .split__liste li b{color:#fff}
.on-ink .split__copy > p{color:rgba(255,255,255,.82)}.on-ink .split__liste li span{color:rgba(255,255,255,.66)}
@media(max-width:900px){
  .split{grid-template-columns:1fr;gap:1.8rem}
  .split--inv .split__media{order:0}
  .split__media{aspect-ratio:16/10}
  .split__copy{max-width:none}
}
/* tableau comparatif : centré, en colonne de lecture large */
.choix-table{margin:clamp(2rem,3.5vw,2.8rem) 0 0}
.choix-table .tablewrap{margin-top:0}
.choix-table .dtable{max-width:none;width:100%}
/* plans posés sur l'encre : la carte reste blanche, montant et coches en encre */
.on-ink .secbody .plan .plan__amount b,.on-ink .secbody .plan .check b,.on-ink .secbody .plan .check strong{color:var(--encre)}
main.srv[data-srv="3"] .plan .btn{margin-top:auto;padding-top:.9rem}
main.srv[data-srv="3"] .card .pain__cost{font-size:.9rem;line-height:1.45;font-weight:500;color:var(--rouge-txt);border-top:1px solid var(--border)}
main.srv[data-srv="3"] .card .pain__cost::before{content:"→ ";color:var(--rouge-txt)}
@media(max-width:700px){ .choix-table .dtable{min-width:38rem;hyphens:manual} }
.on-ink .secbody .plan .plan__note a:not(.btn):not(.duo-link):not(.linklist a){color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}

/* ══════════════════════════════════════════════════════════════════════════
   MÊME LARGEUR POUR TOUT (18/09/2026, soir). Dans une section, chaque
   élément prend toute la largeur du conteneur, et le texte remplit son
   cadre : plus de note plus étroite que les plans, plus de colonne vide.
   Pages service (data-srv="3") et pages métier / ville (data-pq).
   ══════════════════════════════════════════════════════════════════════════ */
main.srv[data-srv="3"] .note,main[data-pq] .note,main.srv[data-srv="3"] .honest{max-width:none}
main.srv[data-srv="3"] .note p,main[data-pq] .note p,main.srv[data-srv="3"] .honest p{max-width:none}
main.srv[data-srv="3"] .besoins.is-2,main[data-pq] .besoins.is-2{max-width:none}
main.srv[data-srv="3"] .split__copy{max-width:none}
/* .turn et .bande sont des grilles (colonne minmax(0,1fr)) : un min-width de
   22rem y forçait le texte à 352 px. Safari iPhone l'appliquait et poussait le
   bloc 28 px hors de l'écran — la page glissait sur le côté (11/10/2026). */
main.srv[data-srv="3"] .turn__txt,main[data-pq] .turn__txt{max-width:none;flex:1 1 0;min-width:0}
main.srv[data-srv="3"] .turn > .btn,main[data-pq] .turn > .btn{flex:none}
main.srv[data-srv="3"] .bande > p,main[data-pq] .bande > p{max-width:none;flex:1 1 0;min-width:0}
main.srv[data-srv="3"] .plans--1{max-width:none}
/* un seul plan : toute la largeur, l'offre à gauche, la liste des prestations à droite */
.plan--large{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.4fr);column-gap:clamp(2rem,5vw,5rem);align-items:stretch}
.plan--large > * + *{margin-top:0}
.plan--large .plan__col{display:flex;flex-direction:column;min-width:0}
.plan--large .plan__col > * + *{margin-top:.9rem}
.plan--large .plan__col--liste{padding-left:clamp(2rem,5vw,5rem);border-left:1px solid var(--border)}
.plan--large .plan__col--liste .plan__lab{margin-top:0}
.plan--large .check{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem 2rem}
.plan--large .plan__for{max-width:none}
.plan--large .btn{align-self:stretch}
@media(max-width:1100px){ .plan--large .check{grid-template-columns:1fr} }
@media(max-width:900px){
  .plan--large{grid-template-columns:1fr;row-gap:1.4rem}
  .plan--large .plan__col--liste{padding-left:0;border-left:0}
}
/* la démo de conversation (page chatbot) posée comme une photo dans le split */
.split__media--chat{aspect-ratio:auto;box-shadow:none;background:transparent;overflow:visible;border-radius:0}
.split__media--chat::after{display:none}
/* Même chose pour les maquettes des pages ville : une maquette n'est pas une
   photo. Avec le cadre d'image, elle flottait en haut d'un bloc gris de quatre
   cents pixels, barré d'un dégradé sombre. */
.split__media--mock{aspect-ratio:auto;box-shadow:none;background:transparent;overflow:visible;border-radius:0}
.split__media--mock::after{display:none}
/* la colonne fait cinq cents pixels : la maquette doit l'occuper, sinon elle a
   l'air perdue au milieu du vide. */
.split__media--chat .demo-chat{margin:0;max-width:none}
.split--chat{align-items:center}
main.srv[data-srv="3"] .split + .turn{margin-top:clamp(1.6rem,3vw,2.4rem)}

/* ══════════════════════════════════════════════════════════════════════════
   NOTES ET ENCADRÉS : toujours la largeur des éléments qui les entourent
   (18/09/2026, soir, sur tout le site) ; le texte remplit le cadre.
   ══════════════════════════════════════════════════════════════════════════ */
.note,.honest,.note.note--plus,.on-white .note.note--plus,.on-ink .note.note--plus{max-width:none}
.note p,.honest p,.note li{max-width:none}
.secbody > .note,.secbody > .honest{margin-inline:0}

/* ══════════════════════════════════════════════════════════════════════════
   TABLEAUX (18/09/2026, soir). Comparatifs et grilles de prix dans une
   carte blanche : en-tête sombre, colonne des prestations grisée et
   séparée, colonne mise en avant teintée, cellules avec de vraies marges.
   La grille de prix distingue « à la commande » (une fois) et « par
   mois » (abonnement) : colonne menthe, montants en corps display.
   ══════════════════════════════════════════════════════════════════════════ */
.tablewrap{margin-top:clamp(1.8rem,3vw,2.6rem);margin-bottom:0;border:1px solid var(--border);border-radius:var(--r-lg);
  background:var(--blanc);box-shadow:var(--ombre-xs);overflow:auto;max-width:none}
.tablewrap + .tablewrap{margin-top:1.4rem}
.dtable{width:100%;max-width:none;min-width:40rem;border-collapse:separate;border-spacing:0;font-size:.95rem}
.dtable th,.dtable td{padding:1rem clamp(1rem,1.8vw,1.5rem);border-bottom:1px solid var(--border);vertical-align:top;line-height:1.5;text-align:left;
  font-variant-numeric:tabular-nums;hyphens:manual;overflow-wrap:normal}
.dtable thead th{background:var(--encre);color:#fff;font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;font-weight:600;padding-block:.9rem;border-bottom:0}
.dtable thead th.hi{background:var(--rouge)}
.dtable thead th small{display:block;text-transform:none;letter-spacing:0;font-weight:400;font-size:.76rem;opacity:.78;margin-top:.15rem}
.dtable tbody th{background:var(--off);font-weight:600;color:var(--encre);border-right:1px solid var(--border);min-width:13rem;width:30%}
.dtable tbody td{color:var(--encre-2)}
.dtable tbody td.hi{background:var(--rose-bg);color:var(--encre);font-weight:500}
.dtable tbody tr:last-child th,.dtable tbody tr:last-child td{border-bottom:0}
.dtable .hi a{color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}
.dtable tr.is-prix td{font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:-.01em;color:var(--encre)}
.on-ink .tablewrap{background:#1c1c20;border-color:rgba(255,255,255,.12);box-shadow:none}
.on-ink .dtable th,.on-ink .dtable td{border-color:rgba(255,255,255,.1)}
.on-ink .dtable thead th{background:rgba(255,255,255,.1);color:#fff}
.on-ink .dtable thead th.hi{background:var(--rouge)}
.on-ink .dtable tbody th{background:rgba(255,255,255,.05);color:#fff;border-right-color:rgba(255,255,255,.1)}
.on-ink .dtable tbody td{color:rgba(255,255,255,.82)}
.on-ink .dtable tbody td.hi{background:rgba(233,72,47,.16);color:#fff}
.on-ink .dtable .hi a{color:var(--rouge-soft);border-bottom-color:rgba(255,126,106,.45)}
/* grille de prix : une fois / par mois */
.dtable--prix td.col-mois{background:rgba(222,248,243,.55)}
.dtable--prix td b{display:block;font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.02em;line-height:1.2;color:var(--encre)}
.dtable--prix td.col-mois b{color:var(--teal-dark)}
.dtable--prix td small{display:block;margin-top:.15rem;font-size:.76rem;line-height:1.3;color:var(--gris)}
.dtable--prix td.col-mois small{color:var(--teal)}
.dtable--prix td.is-vide{color:var(--gris-clair);font-size:1rem}
.dtable__chip{display:inline-block;font-style:normal;font-size:.76rem;font-weight:600;line-height:1.2;padding:.3rem .65rem;border-radius:999px;background:var(--mint);color:var(--teal-dark)}
.dtable--prix tbody th{width:38%}
.dtable__legende{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;margin-top:1rem;font-size:.86rem;color:var(--gris)}
.dtable__legende span{display:inline-flex;align-items:center;gap:.45rem}
.dtable__legende i{width:.9rem;height:.9rem;border-radius:3px;border:1px solid var(--border);background:var(--blanc)}
.dtable__legende i.is-mois{background:rgba(222,248,243,.9);border-color:rgba(14,92,100,.25)}
@media(max-width:700px){
  .dtable{min-width:36rem;font-size:.9rem}
  .dtable th,.dtable td{padding:.85rem 1rem}
  .dtable tbody th{min-width:11rem}
}
.dtable thead th.hi,.on-ink .dtable thead th.hi{color:#fff}

/* ══════════════════════════════════════════════════════════════════════════
   PAGE « POUR QUI » (18/09/2026, soir) : héros centré avec la recherche
   sous les boutons, cartes de famille en points lisibles, exclusions en
   cartes, « par où commencer » en cartes, liste des communes à gauche de
   la carte.
   ══════════════════════════════════════════════════════════════════════════ */
.hero--centre .hero-top .wrap,.hero--centre .hero-bottom .wrap{display:flex;flex-direction:column;align-items:center;text-align:center}
.hero--centre .crumbs{justify-content:center;margin-bottom:1.2rem}
.hero--centre .hero-title{max-width:24ch;text-wrap:balance;margin-inline:auto}
.hero--centre .hero-copy{align-items:center;max-width:46rem;margin-inline:auto}
.hero--centre .btn-row{justify-content:center}
.hero--centre .hero-cherche{width:min(40rem,100%);margin:clamp(1.6rem,3vw,2.4rem) auto 0;align-items:center;text-align:center}
.hero--centre .hero-cherche__lab{font-size:.95rem;text-transform:none;letter-spacing:0;font-weight:600;color:var(--encre)}
.hero--centre .hero-cherche .rech{width:100%;text-align:left}
.hero--centre .rech__note{width:100%}
.hero--nu.hero--centre .hero-bottom{padding-bottom:clamp(2rem,4vw,3rem)}
/* familles : deux blocs teintés, un point par ligne */
.famc--v3 .famc__phrase{font-style:normal}
.famc--v3:hover{background:var(--blanc)}
.famc--v3 .famc__pistes{margin-bottom:auto}
.secbody .famc--v3 .famc__pistes b a:not(.btn):not(.duo-link){color:var(--encre);border-bottom:1px solid rgba(38,38,43,.22);transition:border-color .25s var(--ease),color .25s var(--ease)}
.secbody .famc--v3 .famc__pistes b a:not(.btn):not(.duo-link):hover{color:var(--rouge-txt);border-bottom-color:var(--rouge)}
.famc--v3 .btn{align-self:flex-start;margin-top:.4rem}
.famc--v3 .famc__pied{margin-top:0;padding-top:1.1rem;border-top:1px solid var(--border)}
.famc__metiers{margin:.9rem 0 0;font-size:.88rem;line-height:1.5}
.secbody .famc__metiers a:not(.btn):not(.duo-link):not(.linklist a){color:var(--gris);border-bottom:1px solid rgba(142,142,153,.4);transition:color .25s var(--ease),border-color .25s var(--ease)}
.secbody .famc__metiers a:not(.btn):not(.duo-link):not(.linklist a):hover{color:var(--rouge-txt);border-bottom-color:var(--rouge)}
/* exclusions : quatre cartes sombres */
.exclucards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:clamp(2rem,3.5vw,2.8rem)}
.exclucard{display:flex;flex-direction:column;gap:.7rem;padding:clamp(1.4rem,2.4vw,2rem);border-radius:var(--r-lg);background:#1c1c20;border:1px solid rgba(255,255,255,.12)}
.exclucard__ico{display:inline-flex;align-items:center;justify-content:center;width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid rgba(255,126,106,.45);color:var(--rouge-soft);margin-bottom:.3rem}
.exclucard__ico svg{width:1.3rem;height:1.3rem}
.exclucard h3{margin:0;font-family:var(--display);font-size:clamp(1.1rem,1.6vw,1.35rem);font-weight:600;letter-spacing:-.02em;line-height:1.2;color:#fff}
.exclucard p{margin:0;font-size:.96rem;line-height:1.6;color:rgba(255,255,255,.78)}
.exclucard p a{color:var(--rouge-soft)}
@media(max-width:760px){ .exclucards{grid-template-columns:1fr} }
/* par où commencer : la première étape en pied de carte */
.card .card__etape{margin-top:auto;padding-top:.8rem;border-top:1px solid var(--border);font-size:.93rem;line-height:1.5;color:var(--encre)}
.card .card__etape b{font-weight:600;color:var(--teal-dark)}
.card .card__etape a{color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}
/* la liste des communes, à gauche de la carte */
.villeliste{width:100%;margin-top:.4rem;border:1px solid var(--border);border-radius:var(--r-lg);background:var(--blanc);box-shadow:var(--ombre-xs);overflow:hidden}
.villeliste[hidden]{display:none}
.villeliste__tete{margin:0;padding:.9rem 1.1rem;font-size:.86rem;line-height:1.45;color:var(--gris);border-bottom:1px solid var(--border);background:var(--off)}
.villeliste__tete b{color:var(--encre);font-weight:600}
.villeliste__ul{list-style:none;margin:0;padding:0;max-height:min(30rem,62vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--gris-clair) transparent}
.villeitem{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:.85rem;align-items:center;padding:.85rem 1.1rem;border-bottom:1px solid var(--border);transition:background .3s var(--ease)}
.villeitem:last-child{border-bottom:0}
.villeitem[hidden]{display:none}
.villeitem:hover,.villeitem.is-on{background:var(--rose-bg)}
.villeitem__ico{display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%;border:1px solid var(--border);background:var(--blanc);color:var(--rouge);flex:none}
.villeitem.is-on .villeitem__ico{background:var(--rouge);border-color:var(--rouge);color:#fff}
.villeitem__ico svg{width:1rem;height:1rem}
.villeitem__txt{display:flex;flex-direction:column;gap:.1rem;min-width:0}
.villeitem__txt b{font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.01em;color:var(--encre)}
.villeitem__txt span{font-size:.86rem;line-height:1.4;color:var(--gris)}
.villeitem__btn{flex:none;display:inline-flex;align-items:center;gap:.35rem;padding:.5rem .8rem;border-radius:999px;border:1px solid var(--border);background:var(--blanc);font-size:.8rem;font-weight:600;color:var(--encre);white-space:nowrap;transition:.25s var(--ease)}
.villeitem__btn svg{width:.8rem;height:.8rem}
.villeitem__btn:hover,.villeitem.is-on .villeitem__btn{background:var(--encre);border-color:var(--encre);color:#fff}
.villecards__vide{width:100%}
@media(max-width:640px){ .villeitem{grid-template-columns:auto minmax(0,1fr)} .villeitem__btn{grid-column:2} }
/* les trois éléments de réassurance sous un en-tête de page (réalisations, tarifs…) : les garanties de l'accueil */
.guarantees--tete{grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:.8rem;margin-top:clamp(2rem,4vw,3rem)}
.guarantees--tete .guar{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);align-items:center}
.guarantees--tete .guar + .guar{border-left:1px solid var(--border)}
.guarantees--tete .guar b{font-size:1.02rem}
.guarantees--tete .guar span{font-size:.88rem;color:var(--gris)}
@media(max-width:820px){ .guarantees--tete{grid-template-columns:1fr;gap:.6rem} }

/* ══════════════════════════════════════════════════════════════════════════
   LE TUNNEL DE DEMANDE (assets/audit.js) : audit gratuit et contact, en
   cinq étapes au plus, dans la carte blanche des sections formulaire.
   ══════════════════════════════════════════════════════════════════════════ */
.tunnel{display:flex;flex-direction:column;gap:1.2rem}
.tunnel__tete{display:flex;flex-direction:column;gap:.7rem}
.tunnel__prog{display:flex;gap:.35rem}
.tunnel__prog i{flex:1;height:3px;border-radius:2px;background:var(--border);transition:background .4s var(--ease)}
.tunnel__prog i.is-on{background:var(--rouge)}
.tunnel__etape{margin:0;display:flex;gap:.5rem;align-items:center;font-size:.86rem;color:var(--gris)}
.tunnel__etape [data-nom]{color:var(--encre);font-weight:600}
.tunnel__scene{display:flex;flex-direction:column;gap:1rem}
.tunnel__q{margin:0;font-family:var(--display);font-size:clamp(1.2rem,1.7vw,1.5rem);font-weight:600;letter-spacing:-.025em;line-height:1.2;color:var(--encre)}
.tunnel__aide{margin:0;font-size:.92rem;line-height:1.5;color:var(--gris)}
.tunnel__aide b{color:var(--encre)}
.tunnel__opts{display:grid;gap:.55rem;margin-top:.3rem}
.tunnel__opts.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.tunnel__opt{display:flex;align-items:flex-start;gap:.75rem;width:100%;text-align:left;padding:.85rem 1rem;border:1px solid var(--border);border-radius:var(--r);background:var(--blanc);color:var(--encre);font:inherit;cursor:pointer;transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease)}
.tunnel__opt:hover{border-color:var(--gris-clair);transform:translateY(-1px)}
.tunnel__opt.is-on{border-color:var(--rouge);background:var(--rose-bg)}
.tunnel__opt:focus-visible{outline:2px solid var(--rouge);outline-offset:2px}
.tunnel__marque{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.25rem;height:1.25rem;margin-top:.1rem;border-radius:50%;border:1.5px solid var(--gris-clair);color:transparent;transition:.25s var(--ease)}
.tunnel__marque svg{width:.7rem;height:.7rem}
[role="checkbox"] .tunnel__marque{border-radius:5px}
.tunnel__opt.is-on .tunnel__marque{background:var(--rouge);border-color:var(--rouge);color:#fff}
.tunnel__opt-txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.tunnel__opt-txt b{font-weight:600;font-size:.96rem;line-height:1.3}
.tunnel__opt-txt i{font-style:normal;font-size:.84rem;line-height:1.4;color:var(--gris)}
.tunnel .frow{margin-top:.2rem}
.tunnel .field label i{color:var(--rouge);font-style:normal}
.tunnel .field.is-manque input,.tunnel .field.is-manque select,.tunnel .fopt.is-manque span{border-color:var(--rouge-dark);box-shadow:0 0 0 3px rgba(233,72,47,.14)}
.tunnel__consent{margin-top:.2rem}
.tunnel__consent span{font-size:.86rem;line-height:1.5}
.tunnel__suite{display:flex;flex-wrap:wrap;gap:.7rem;align-items:center;padding-top:.4rem}
.tunnel__suite .btn{max-width:100%}
.tunnel .btn.is-attente{opacity:.6;pointer-events:none}
.tunnel__pied{display:flex;flex-wrap:wrap;gap:.6rem 1rem;align-items:center;justify-content:space-between;padding-top:.6rem;border-top:1px solid var(--border)}
.tunnel__retour{font:inherit;font-size:.9rem;font-weight:500;color:var(--encre);background:transparent;border:0;padding:.35rem 0;cursor:pointer;border-bottom:1px solid transparent}
.tunnel__retour:hover{border-bottom-color:var(--encre)}
.tunnel__retour[hidden]{display:none}
.tunnel__note{font-size:.84rem;color:var(--gris);margin-left:auto}
.tunnel__merci{display:flex;flex-direction:column;gap:.9rem;padding:.4rem 0}
.tunnel__merci-ico{display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;border-radius:50%;background:var(--mint);color:var(--teal)}
.tunnel__merci-ico svg{width:1.1rem;height:1.1rem}
.tunnel__recap{list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-direction:column;border:1px solid var(--border);border-radius:var(--r);overflow:hidden}
.tunnel__recap li{display:grid;grid-template-columns:minmax(7rem,.35fr) minmax(0,1fr);gap:1rem;padding:.7rem .95rem;border-bottom:1px solid var(--border);font-size:.9rem;line-height:1.45}
.tunnel__recap li:last-child{border-bottom:0}
.tunnel__recap b{color:var(--gris);font-weight:500}
.tunnel__recap span{color:var(--encre)}
.on-ink .formcard .tunnel__q,.on-ink .formcard .tunnel__opt,.on-ink .formcard .tunnel__opt-txt b,.on-ink .formcard .tunnel__retour,.on-ink .formcard .tunnel__recap span{color:var(--encre)}
.on-ink .formcard .tunnel__aide,.on-ink .formcard .tunnel__note,.on-ink .formcard .tunnel__opt-txt i,.on-ink .formcard .tunnel__etape,.on-ink .formcard .tunnel__recap b{color:var(--gris)}
@media(max-width:640px){ .tunnel__opts.is-2{grid-template-columns:1fr} .tunnel .frow{grid-template-columns:1fr} }

/* ══════════════════════════════════════════════════════════════════════════
   ESTIMATION, questions plus claires (18/09/2026, soir) : une réponse par
   ligne, le repère d'étape en bas de casse, une réponse « je ne sais pas »
   à part, et le bloc des hypothèses retenues dans l'estimation finale.
   ══════════════════════════════════════════════════════════════════════════ */
.estim__cat{text-transform:none;letter-spacing:0;font-size:.9rem;font-weight:500;color:var(--gris)}
.estim__cat span{min-width:1.8rem;height:1.8rem;font-size:.82rem}
.estim__cat span::after{content:""}
.estim__ecran:not(.is-final) .estim__opts{display:flex;flex-direction:column;gap:.6rem}
.estim__opt{min-height:0;padding:.95rem 1rem .95rem .95rem}
.estim__opt-txt b{font-size:1.02rem}
.estim__opt--nsp{margin-top:.35rem;border-style:dashed;background:var(--off)}
.estim__opt--nsp .estim__touche{background:var(--blanc)}
.estim__opt--nsp .estim__opt-txt b{font-weight:500;color:var(--encre-2)}
.estim__opt--nsp:hover{background:var(--blanc);border-style:solid}
.estim__opt--nsp.is-on{border-style:solid;background:var(--rose-bg)}
.estim__hypo{margin-top:1.4rem;padding:1rem 1.1rem 1.05rem;border-radius:var(--r);background:var(--off);border:1px solid var(--border)}
.estim__hypo .estim__lab{margin-bottom:.5rem}
.estim__hypo ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.35rem}
.estim__hypo li{position:relative;padding-left:1.2rem;font-size:.93rem;line-height:1.5;color:var(--encre-2)}
.estim__hypo li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--teal)}
.estim__hypo p:last-child{margin:.6rem 0 0;font-size:.86rem;line-height:1.45;color:var(--gris)}


/* ══════════════════════════════════════════════════════════════════════════
   RETOURS DU 18/09 AU SOIR, suite (liens, tableaux, plans, section audit,
   espacements, démonstration de l'assistant, sous-menus).
   ══════════════════════════════════════════════════════════════════════════ */
/* le lien des cartes d'article : le trait sous le texte du lien seulement, plus de trait pleine largeur */
.art__lien{display:block;border-bottom:0;padding-bottom:0}
/* variante centrée (sous une FAQ pleine largeur) : `.secbody > p` la bridait à
   la largeur de lecture, le centrage se faisait donc dans 592 px collés à gauche */
.secbody > .art__lien--centre{max-width:none;text-align:center;margin-top:1.7rem}
.art__lien:hover{border-bottom-color:transparent}
.art__lien a{display:inline;border-bottom:1px solid rgba(233,72,47,.45);padding-bottom:.1rem;transition:border-color .25s var(--ease)}
.art__lien a:hover{border-bottom-color:var(--rouge)}
.on-ink .art__lien a{border-bottom-color:rgba(255,126,106,.45)}
.art__lien svg{width:14px;height:14px;flex:none;vertical-align:-2px}

/* grille de prix : en-tête d'une seule couleur, la colonne « par mois » garde sa teinte dans le corps */
.dtable--prix thead th.col-mois small,.dtable--prix thead th.col-une small{color:rgba(255,255,255,.62)}

/* ── espacements : dans une section, chaque bloc est séparé du précédent du même écart ── */
main.srv[data-srv="3"] .secbody > * + *{margin-top:clamp(1.6rem,3vw,2.4rem)}
main.srv[data-srv="3"] .secbody > .reviews + .satisfaction-badge{margin-top:1.4rem}
main.srv[data-srv="3"] .secbody > .galerie + .btn-row{margin-top:1.6rem}
main.srv[data-srv="3"] .secbody > .plans + .guarantees{margin-top:clamp(1.6rem,3vw,2.4rem)}

/* ── plans : le prix et le bouton en orange, « En savoir plus » en contour, le plus choisi signalé ── */
.plan .plan__amount b,.on-ink .secbody .plan .plan__amount b,.on-ink .plan .plan__amount b{color:var(--rouge)}
.plan .btn .btn-inner,.plan .btn .btn-inner.is-ink{background:var(--rouge);color:#fff}
.plan .btn:hover .btn-inner,.plan .btn:hover .btn-inner.is-ink{background:var(--rouge-dark);color:#fff}
.plan__actions{display:flex;flex-direction:column;gap:.55rem;margin-top:auto;padding-top:1.2rem}
.plan .plan__actions .btn{margin-top:0;align-self:stretch}
.plan .plan__actions + .plan__note{margin-top:.7rem}
.btn--fantome{display:block}
.btn-inner.is-fantome{background:transparent;color:var(--encre);box-shadow:inset 0 0 0 1px var(--gris-clair);font-weight:500}
.btn--fantome:hover .btn-inner.is-fantome{background:var(--off);color:var(--encre);box-shadow:inset 0 0 0 1px var(--encre)}
.btn--fantome:hover .btn-inner svg{transform:translate(3px,-3px)}
.plan{position:relative}
.plan--star{border-color:var(--rouge);box-shadow:0 0 0 1px var(--rouge),var(--ombre-sm)}
.plan__badge{position:absolute;top:-.85rem;left:50%;transform:translateX(-50%);display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:999px;background:var(--rouge);color:#fff;font-size:.8rem;font-weight:600;letter-spacing:0;text-transform:none;white-space:nowrap;box-shadow:0 4px 12px rgba(233,72,47,.3)}
.plan__badge::before{content:"";width:.45rem;height:.45rem;border-radius:50%;background:#fff}
.plans .plan--star{z-index:1}
@media(max-width:820px){ .plans .plan--star{margin-top:.6rem} }

/* ── un seul plan, pleine largeur : l'offre à gauche, la liste dans un panneau à droite ── */
.plan--large{grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);column-gap:clamp(1.6rem,3.5vw,3.2rem);padding:clamp(1.6rem,2.6vw,2.2rem)}
.plan--large .plan__col--offre{justify-content:flex-start}
.plan--large .plan__col--offre .plan__price{margin-top:1.2rem!important}
.plan--large .plan__col--offre .plan__actions{margin-top:.4rem;padding-top:.6rem;max-width:22rem}
.plan--large .plan__col--liste{padding:clamp(1.2rem,2vw,1.6rem) clamp(1.2rem,2vw,1.8rem);border-left:0;background:var(--off);border-radius:var(--r)}
.plan--large .plan__col--liste .plan__lab{margin-top:0!important;padding-top:0;border-top:0}
.plan--large .plan__col--liste .check{margin-top:.6rem!important;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 2rem;padding-top:0;border-top:0}
.plan--large .plan__col--liste .check li{border-top:1px solid var(--border);padding:.7rem 0 .7rem 2.1rem}
.plan--large .plan__col--liste .check li:nth-child(-n+2){border-top:0}
@media(max-width:1100px){
  .plan--large .plan__col--liste .check{grid-template-columns:1fr}
  .plan--large .plan__col--liste .check li:nth-child(2){border-top:1px solid var(--border)}
}
@media(max-width:900px){
  .plan--large{grid-template-columns:1fr;row-gap:1.4rem}
  .plan--large .plan__col--offre .plan__actions{max-width:none}
}

/* ── deux listes côte à côte (réalisable / à prévoir) à la place d'un tableau à deux colonnes ── */
.duoliste{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,1.5rem)}
.duoliste__col{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);padding:clamp(1.3rem,2.2vw,1.8rem);box-shadow:var(--ombre-xs)}
.duoliste__col h3{display:flex;align-items:center;gap:.7rem;margin:0 0 1rem;font-family:var(--display);font-size:clamp(1.05rem,1.4vw,1.25rem);font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.duoliste__col h3 i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:2rem;height:2rem;border-radius:50%}
.duoliste__col h3 i svg{width:.9rem;height:.9rem}
.duoliste__col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.duoliste__col li{display:flex;align-items:flex-start;gap:.7rem;padding:.7rem 0;border-top:1px solid var(--border);font-size:.96rem;line-height:1.5;color:var(--encre-2)}
.duoliste__col li:first-child{border-top:0;padding-top:0}
.duoliste__col li i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;margin-top:.1rem;border-radius:50%}
.duoliste__col li i svg{width:.65rem;height:.65rem}
.duoliste__col.is-oui h3 i,.duoliste__col.is-oui li i{background:var(--mint);color:var(--teal)}
.duoliste__col.is-plus h3 i,.duoliste__col.is-plus li i{background:var(--rose-bg);color:var(--rouge-txt)}
.duoliste__col.is-oui li{color:var(--encre)}
.on-off .duoliste__col{border-color:var(--border)}
@media(max-width:760px){ .duoliste{grid-template-columns:1fr} }

/* ── ce qui n'est pas compris : des croix, pas des coches ── */
.split__liste--non li i{background:var(--rose-bg);color:var(--rouge-txt)}
.card-ico--non{color:var(--rouge-txt);background:var(--rose-bg);border-color:rgba(233,72,47,.2)}
.card-ico--non svg{width:.85rem;height:.85rem}

/* ── démonstration de l'assistant (page chatbot) : le même panneau que l'assistant du site ── */
.split__media--chat{aspect-ratio:auto;box-shadow:none;background:transparent;border-radius:0;overflow:visible;display:flex;flex-direction:column;gap:.9rem}
.split__media--chat::after{content:none}
.demo-panneau{display:flex;flex-direction:column;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);overflow:hidden;box-shadow:var(--ombre-md);max-width:30rem;width:100%;margin:0 auto}
.demo-panneau .chat-tete{border-radius:0}
.demo-avatar{font-family:var(--display);font-weight:600;font-size:.82rem;color:var(--encre);letter-spacing:.02em}
.demo-panneau .chat-fil{flex:none;max-height:none;overflow:visible;padding:1rem 1rem .6rem}
.demo-panneau .chat-fil > :first-child{margin-top:0}
.demo-panneau .chat-bulle{font-size:.88rem}
.demo-choix{display:flex;flex-wrap:wrap;gap:.35rem;margin:.1rem 0 .35rem;padding-left:.2rem}
.demo-choix .chat-choix{width:auto;flex-direction:row;align-items:baseline;gap:.4rem;padding:.42rem .8rem;font-size:.8rem;cursor:default;border-radius:999px;background:var(--blanc);border:1px solid var(--gris-clair);color:var(--encre);opacity:.8}
.demo-choix .chat-choix::after{content:none}
.demo-choix .chat-choix small{font-size:.72rem;color:var(--gris)}
.demo-choix .chat-choix.is-pris{opacity:1;background:var(--rouge);border-color:var(--rouge);color:#fff;font-weight:600}
.demo-choix .chat-choix.is-pris small{color:rgba(255,255,255,.8)}
.demo-choix .chat-choix.is-pris::before{content:"";width:.4rem;height:.4rem;border-radius:50%;background:#fff;align-self:center;flex:none}
.demo-panneau .chat-zone{padding:.35rem 1rem .8rem;border-top:1px dashed var(--border)}
.demo-panneau .chat-zone .chat-choix-grp{flex-direction:row;flex-wrap:wrap;gap:.4rem;margin-top:.5rem}
.demo-panneau .chat-zone .chat-choix{width:auto;padding:.5rem .9rem;border-radius:999px;font-size:.82rem;cursor:default}
.demo-panneau .chat-zone .chat-choix::after{content:none}
.demo-saisie{display:flex;align-items:center;gap:.5rem}
.demo-saisie span{flex:1;padding:.62rem .9rem;border:1px solid var(--border);border-radius:999px;background:var(--off);color:var(--gris-clair);font-size:.86rem}
.demo-saisie b{flex:none;display:inline-flex;align-items:center;justify-content:center;width:2.3rem;height:2.3rem;border-radius:50%;background:var(--encre);color:#fff;font-weight:400}
.demo-legende{list-style:none;margin:0 auto;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:.5rem .9rem;max-width:30rem}
.demo-legende li{display:inline-flex;align-items:center;gap:.45rem;font-size:.8rem;color:var(--encre-2)}
.demo-legende li i{display:inline-flex;align-items:center;justify-content:center;width:1.3rem;height:1.3rem;border-radius:50%;background:var(--rouge);color:#fff;font-style:normal;font-weight:600;font-size:.7rem}
.on-ink .demo-legende li{color:rgba(255,255,255,.75)}
.split--chat{align-items:start}
@media(max-width:900px){ .demo-panneau{max-width:none} }

/* ── section audit (formulaire) : les points à gauche lisibles, une colonne qui respire ── */
.formsec .formgrid{align-items:center;gap:clamp(2.4rem,5vw,5.5rem)}
.formaside{gap:1.3rem}
.formaside .t-md{font-size:1.02rem;line-height:1.65;color:rgba(255,255,255,.72)}
.formaside ul{gap:.55rem;width:100%}
.formaside li{display:flex;align-items:flex-start;gap:.85rem;padding:.85rem 1rem;border:1px solid rgba(255,255,255,.1);border-radius:var(--r);background:rgba(255,255,255,.04);color:rgba(255,255,255,.86);font-size:.95rem;line-height:1.5}
.formaside li::before{content:none}
.formaside li i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;border-radius:50%;background:var(--mint);color:var(--teal);margin-top:-.1rem}
.formaside li i svg{width:.95rem;height:.95rem}
.formaside li b{color:#fff;font-weight:600}
.formaside li span{display:block;color:rgba(255,255,255,.62);font-size:.86rem;margin-top:.1rem}
.formaside__titre{font-size:.72rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:rgba(255,255,255,.55);margin:.2rem 0 -.5rem}
.formaside__conf{display:inline-flex;align-items:center;gap:.5rem;font-size:.84rem;color:rgba(255,255,255,.55)}
.formaside__conf svg{width:.95rem;height:.95rem;flex:none}
.formaside .fnote,.formsec .formaside > p:last-child:not(.t-md){font-size:.84rem;color:rgba(255,255,255,.5)}
@media(max-width:900px){ .formsec .formgrid{gap:2rem} }

/* ── tunnel : le bouton est un vrai <button class="btn"> sans doublure ── */
.tunnel button.btn{display:inline-flex;align-items:center;gap:.6rem;background:var(--rouge);color:#fff;border-radius:var(--r-sm);padding:.9rem 1.25rem;font-size:.95rem;font-weight:500}
.tunnel button.btn svg{width:14px;height:14px;flex:none;transition:transform .35s var(--ease)}
.tunnel button.btn:hover{background:var(--rouge-dark)}
.tunnel button.btn:hover svg{transform:translate(3px,-3px)}

/* ── sous-menus : « Pour qui ? » en tuiles, et l'encart d'appel des services plus léger ── */
.mega-grid.is-pourqui{grid-template-columns:minmax(0,1.5fr) minmax(0,1fr) minmax(0,.9fr);gap:clamp(1.2rem,2.4vw,2rem)}
.mega-grid.is-pourqui .mega-col.is-large .mega-liste{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
.mega-grid.is-pourqui .mega-liste .mega-link{margin-left:0;padding:.7rem .8rem;border:1px solid var(--border);border-radius:var(--r);background:var(--blanc);align-items:center;gap:.75rem}
.mega-grid.is-pourqui .mega-liste .mega-link:hover{border-color:var(--rouge);background:var(--rose-bg)}
.mega-grid.is-pourqui .mega-liste .mega-ico{width:2.2rem;height:2.2rem;border-radius:50%;background:var(--mint);color:var(--teal);border:0}
.mega-grid.is-pourqui .mega-liste .mega-link:hover .mega-ico{background:var(--blanc);color:var(--rouge)}
.mega-grid.is-pourqui .mega-txt b{font-size:.9rem}
.mega-grid.is-pourqui .mega-txt em{font-size:.76rem}
.mega-grid.is-pourqui .mega-chips{display:flex;flex-wrap:wrap;gap:.4rem}
.mega-grid.is-pourqui .mega-chips a{display:inline-flex;align-items:center;padding:.42rem .8rem;border:1px solid var(--border);border-radius:999px;font-size:.84rem;font-weight:500;color:var(--encre);background:var(--blanc);transition:border-color .25s var(--ease),background .25s var(--ease),color .25s var(--ease)}
.mega-grid.is-pourqui .mega-chips a:hover{border-color:var(--rouge);color:var(--rouge);background:var(--rose-bg)}
.mega-grid.is-pourqui .mega-chips a.is-tout{border-style:dashed;color:var(--gris)}
.mega-cta{background:var(--off);color:var(--encre);border:1px solid var(--border);border-radius:var(--r-lg);gap:.75rem}
.mega-cta b{display:block;font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.mega-cta p{font-size:.86rem;line-height:1.55;color:var(--encre-2)}
.mega-cta .btn{margin-top:.1rem}
.mega-cta .btn .btn-inner{padding:.8rem 1.1rem;font-size:.9rem}
.mega-tel{font-size:.8rem;color:var(--gris);border-bottom:1px solid var(--border)}
.mega-tel:hover{color:var(--encre);border-bottom-color:var(--encre)}
.mega-cta__faits{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.mega-cta__faits li{display:flex;align-items:center;gap:.5rem;font-size:.82rem;color:var(--encre-2)}
.mega-cta__faits li::before{content:"";flex:none;width:.4rem;height:.4rem;border-radius:50%;background:var(--teal)}
@media(max-width:1180px){ .mega-grid.is-pourqui{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)} .mega-grid.is-pourqui .mega-cta{grid-column:1/-1} }

/* « Pour qui ? » : une vignette photo par famille, la tuile s'allume au survol */
.mega-grid.is-pourqui .mega-liste .mega-link{padding:.55rem .7rem .55rem .55rem}
.mega-vign{flex:none;width:3.4rem;height:3.4rem;border-radius:var(--r-sm);overflow:hidden;background:var(--off);box-shadow:0 0 0 1px var(--border)}
.mega-vign picture,.mega-vign img{display:block;width:100%;height:100%;object-fit:cover}
.mega-grid.is-pourqui .mega-liste .mega-link:hover .mega-vign{box-shadow:0 0 0 1px var(--rouge)}
.mega-grid.is-pourqui .mega-liste .mega-link:hover .mega-txt b{color:var(--rouge)}
.mega-grid.is-pourqui .mega-txt{display:flex;flex-direction:column;gap:.15rem}
.mega-grid.is-pourqui .mega-txt b{font-size:.92rem;line-height:1.2}
.mega-grid.is-pourqui .mega-txt em{font-size:.76rem;line-height:1.35}

/* ── l'encart d'appel des sous-menus, version forte : fond encre, halo rouge, titre large ── */
.mega-cta{position:relative;overflow:hidden;background:var(--encre);color:#fff;border:0;border-radius:var(--r-lg);padding:clamp(1.3rem,2vw,1.7rem);gap:.8rem;isolation:isolate}
/* (halo et trait du haut retirés à la demande d'Alessio : juste le contenu) */
.mega-cta b{font-size:clamp(1.15rem,1.4vw,1.35rem);line-height:1.15;letter-spacing:-.02em;color:#fff}
.mega-cta b em{font-style:normal;color:var(--rouge-soft)}
.mega-cta p{color:rgba(255,255,255,.72);font-size:.86rem}
.mega-cta__faits li{color:rgba(255,255,255,.8)}
.mega-cta__faits li::before{background:var(--rouge-soft)}
.mega-cta .btn .btn-inner{padding:.9rem 1.15rem;font-size:.92rem}
.mega-cta .btn-corners i{border-color:rgba(255,255,255,.5)}
.mega-tel{color:rgba(255,255,255,.6);border-bottom-color:rgba(255,255,255,.25)}
.mega-tel:hover{color:#fff;border-bottom-color:#fff}

/* liste des communes : on peut la faire défiler à la molette (Lenis laisse passer), et le bouton survolé passe en blanc sur encre */
.villeliste__ul{max-height:min(34rem,66vh);overflow-y:auto;padding-right:.15rem}
main .secbody .villeitem a.villeitem__btn{color:var(--encre);border-bottom:1px solid var(--border)}
main .secbody .villeitem a.villeitem__btn:hover,main .secbody .villeitem.is-on a.villeitem__btn{color:#fff;background:var(--encre);border-color:var(--encre)}
main .secbody .villeitem a.villeitem__btn svg{color:inherit}

/* section audit, points à gauche : discrets, sans encadré, sans libellé au-dessus */
.formaside ul{gap:.7rem}
.formaside li{padding:0;border:0;background:transparent;border-radius:0;gap:.7rem;font-size:.95rem;line-height:1.55;color:rgba(255,255,255,.8)}
.formaside li i{width:1.35rem;height:1.35rem;margin-top:.15rem;background:rgba(222,248,243,.14);color:var(--mint)}
.formaside li i svg{width:.7rem;height:.7rem}
.formaside__titre{display:none}

/* ── simulateur de rentabilité Google Ads ── */
.simu-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(1.4rem,2.6vw,2.2rem);align-items:start}
.simu-form{display:flex;flex-direction:column;gap:1.1rem;border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);max-width:none}
.simu-form .field{max-width:none}
.simu-form .field label small{display:block;font-weight:400;text-transform:none;letter-spacing:0;color:var(--gris);font-size:.8rem;margin-top:.1rem}
.simu-form .frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem;margin-top:0}
.simu-unit{position:relative;display:flex;align-items:center}
.simu-unit input{width:100%;padding-right:5.2rem}
.simu-unit span{position:absolute;right:.9rem;font-size:.82rem;color:var(--gris);pointer-events:none;white-space:nowrap}
.simu-eng{border:0;margin:0;padding:0;min-width:0}
.simu-eng legend{padding:0;margin-bottom:.45rem;font-size:.78rem;font-weight:600;color:var(--encre)}
.simu-eng__opts{display:flex;flex-direction:column;gap:.4rem}
.simu-eng .fopt{margin:0}
.simu-eng .fopt span{display:flex;flex-direction:column;gap:.05rem;padding:.6rem .8rem}
.simu-eng .fopt span b{font-weight:600;font-size:.9rem}
.simu-eng .fopt span small{font-size:.76rem;color:var(--gris)}
.simu-form__pied{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.2rem;padding-top:.4rem}
.simu-form__pied button.btn{display:inline-flex;align-items:center;gap:.6rem;border-radius:var(--r-sm)}
.simu-form__pied button.btn svg{width:14px;height:14px}
.simu-form__pied .tunnel__note{margin-left:0;flex:1 1 14rem}
.simu-resultat{display:flex;flex-direction:column;gap:1rem;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);padding:clamp(1.3rem,2.4vw,2rem);box-shadow:var(--ombre-xs);position:sticky;top:calc(var(--nav-total,5rem) + 1rem)}
.simu-verdict{display:flex;flex-direction:column;gap:.35rem;padding:1rem 1.1rem;border-radius:var(--r);border:1px solid var(--border);background:var(--off)}
.simu-verdict b{font-family:var(--display);font-size:clamp(1.05rem,1.4vw,1.25rem);font-weight:600;letter-spacing:-.02em;line-height:1.25}
.simu-verdict span{font-size:.9rem;line-height:1.5;color:var(--encre-2)}
.simu-verdict.is-ok{background:var(--mint);border-color:rgba(14,92,100,.18)}
.simu-verdict.is-ok b{color:var(--teal-dark)}
.simu-verdict.is-limite{background:#FFF6E5;border-color:rgba(180,120,0,.2)}
.simu-verdict.is-limite b{color:#8A5A00}
.simu-verdict.is-non{background:var(--rose-bg);border-color:rgba(233,72,47,.2)}
.simu-verdict.is-non b{color:var(--rouge-txt)}
.simu-res{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.simu-res li{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;padding:.6rem 0;border-top:1px solid var(--border)}
.simu-res li:first-child{border-top:0;padding-top:0}
.simu-res__lib{display:flex;flex-direction:column;gap:.05rem;font-size:.92rem;color:var(--encre)}
.simu-res__lib small{font-size:.76rem;color:var(--gris)}
.simu-res li b{flex:none;font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.02em;color:var(--encre);text-align:right;white-space:nowrap}
.simu-res li.is-ok b{color:var(--teal-dark)}
.simu-res li.is-non b{color:var(--rouge-txt)}
.simu-res li.is-limite b{color:#8A5A00}
.simu-res li:last-child{margin-top:.2rem;padding-top:.8rem;border-top:2px solid var(--encre)}
.simu-res li:last-child b{font-size:1.25rem}
.simu-res__titre{margin:.4rem 0 -.5rem;font-family:var(--display);font-size:.95rem;font-weight:600;color:var(--encre)}
.simu-hyp,.simu-reco{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.45rem}
.simu-hyp li,.simu-reco li{position:relative;padding-left:1.2rem;font-size:.9rem;line-height:1.55;color:var(--encre-2)}
.simu-hyp li::before,.simu-reco li::before{content:"";position:absolute;left:0;top:.6em;width:.4rem;height:.4rem;border-radius:50%;background:var(--gris-clair)}
.simu-reco li::before{background:var(--rouge)}
.simu-hyp b{color:var(--encre)}
.simu-reco a{color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}
.simu-cta{padding-top:.4rem}
.simu-cta .btn{flex:1 1 14rem}
.simu-cta .btn-inner{justify-content:center}
main[data-simu] .secbody > .note{margin-top:clamp(1.6rem,3vw,2.4rem);max-width:none}
main[data-simu] .secbody > .cards + .turn{margin-top:clamp(1.6rem,3vw,2.4rem)}
@media(max-width:900px){ .simu-grid{grid-template-columns:minmax(0,1fr)} .simu-resultat{position:static} .simu-form .frow{grid-template-columns:1fr} }

/* ── « À lire sur le blog » en bas des pages service ── */
.lire{display:flex;flex-direction:column;gap:1rem}
.lire__tete{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:.5rem 1rem}
.lire__tete h3{margin:0;font-family:var(--display);font-size:clamp(1.1rem,1.5vw,1.35rem);font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.lire__tout{font-size:.9rem;font-weight:500;color:var(--encre);border-bottom:1px solid var(--gris-clair)}
.lire__tout:hover{border-bottom-color:var(--encre)}
.lire__liste{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.lire__liste a{display:grid;grid-template-columns:2.6rem minmax(0,1fr) auto;align-items:center;gap:.9rem;padding:.6rem .9rem .6rem .6rem;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r);color:var(--encre);transition:border-color .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.lire__liste a:hover{border-color:var(--gris-clair);transform:translateY(-1px);box-shadow:var(--ombre-xs)}
.lire__img{display:block;width:4.2rem;height:3.2rem;border-radius:var(--r-sm);overflow:hidden;background:var(--off)}
.lire__img picture,.lire__img img{display:block;width:100%;height:100%;object-fit:cover}
.lire__txt{display:flex;flex-direction:column;gap:.15rem;min-width:0}
.lire__txt b{font-weight:600;font-size:.95rem;line-height:1.3;color:var(--encre)}
.lire__txt small{font-size:.78rem;color:var(--gris)}
.lire__fl{display:inline-flex;align-items:center;justify-content:center;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--off);color:var(--encre);font-size:.9rem;transition:background .25s var(--ease),color .25s var(--ease)}
.lire__liste a:hover .lire__fl{background:var(--rouge);color:#fff}
main.srv[data-srv="3"] .secbody a.lire__tout,main.srv[data-srv="3"] .secbody .lire__liste a{border-bottom:0}
main.srv[data-srv="3"] .secbody .lire__liste a{border-bottom:1px solid var(--border)}
main.srv[data-srv="3"] .secbody a.lire__tout{border-bottom:1px solid var(--gris-clair);color:var(--encre)}
@media(max-width:760px){ .lire__liste{grid-template-columns:1fr} }
/* bandeau vers le simulateur */
.bande--simu{background:var(--mint);border:1px solid rgba(14,92,100,.16);color:var(--teal-dark)}
.bande--simu p{color:var(--teal-dark)}
.bande--simu p span{color:rgba(14,52,56,.78)}
.bande--simu .btn-corners i{border-color:var(--teal)}
.lire__ico{display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;border-radius:var(--r-sm);background:var(--rose-bg);color:var(--rouge-txt)}
.lire__ico svg{width:1.15rem;height:1.15rem}

/* ── page audit gratuit : le formulaire dans le héros, à droite du titre ── */
.pagehead--audit{padding-bottom:clamp(2.5rem,5vw,4.5rem)}
.audit-hero{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,4.5vw,5rem);align-items:center;margin-top:clamp(1.2rem,2.5vw,2rem)}
.audit-hero__copy{display:flex;flex-direction:column;gap:1.2rem;max-width:none}
.audit-hero__copy h1{margin:0}
.audit-hero__copy .pagehead-lead{max-width:none}
.audit-hero__faits{list-style:none;margin:.2rem 0 0;padding:0;display:flex;flex-direction:column;gap:.6rem}
.audit-hero__faits li{display:flex;align-items:flex-start;gap:.7rem;font-size:.96rem;line-height:1.5;color:var(--encre-2)}
.audit-hero__faits li i{flex:none;display:inline-flex;align-items:center;justify-content:center;width:1.35rem;height:1.35rem;margin-top:.15rem;border-radius:50%;background:var(--mint);color:var(--teal)}
.audit-hero__faits li i svg{width:.7rem;height:.7rem}
.audit-hero__tel{font-size:.92rem;color:var(--gris)}
.audit-hero__tel a{color:var(--encre);font-weight:600;border-bottom:1px solid var(--gris-clair)}
.audit-hero__tel a:hover{border-bottom-color:var(--encre)}
.audit-hero__carte{border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-md);padding:clamp(1.4rem,2.4vw,2rem)}
.audit-hero__carte > form{max-width:none}
.audit-hero__carte .tunnel__opts.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.pagehead--audit .lines span{opacity:.5}
main .secbody > .cards + .turn{margin-top:clamp(1.6rem,3vw,2.4rem)}
@media(max-width:900px){ .audit-hero{grid-template-columns:1fr} .audit-hero__carte .tunnel__opts.is-2{grid-template-columns:1fr} }

/* démonstration de l'assistant : l'en-tête garde ses couleurs quel que soit le fond de la section */
.secbody .demo-panneau .chat-tete b{color:#fff;font-family:var(--display)}
.secbody .demo-panneau .chat-tete span{color:rgba(255,255,255,.62)}
.secbody .demo-panneau .chat-tete .demo-avatar{color:var(--encre);font-family:var(--display);font-weight:600}
.secbody .demo-panneau .chat-bulle.is-moi{color:#fff}
.secbody .demo-panneau .chat-bulle.is-bot{color:var(--encre)}

/* « En savoir plus » : vraiment en contour, même dans un plan (le bouton plein reste le premier) */
.plan .btn--fantome .btn-inner.is-fantome,.btn--fantome .btn-inner.is-fantome{background:transparent;color:var(--encre);box-shadow:inset 0 0 0 1.5px rgba(38,38,43,.3)}
.plan .btn--fantome:hover .btn-inner.is-fantome,.btn--fantome:hover .btn-inner.is-fantome{background:var(--off);color:var(--encre);box-shadow:inset 0 0 0 1px var(--encre)}
/* petits libellés : en minuscules, sans espacement de capitales (les majuscules espacées font « généré ») */
.plan__lab,.plan__from,.turn__kicker,.formaside__titre{text-transform:none;letter-spacing:0;font-size:.82rem;font-weight:600;color:var(--gris)}
.plan__from{font-size:.8rem}

/* sous-menu « Outils » : deux colonnes, la liste large, l'encart à droite */
.mega-grid.is-outils{grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:clamp(1.2rem,2.4vw,2rem)}
.mega-grid.is-outils .mega-liste{grid-template-columns:repeat(2,minmax(0,1fr));gap:.4rem}
.mega-grid.is-outils .mega-liste .mega-link{margin-left:0;padding:.7rem .8rem;border:1px solid var(--border);border-radius:var(--r);background:var(--blanc);align-items:flex-start;gap:.75rem}
.mega-grid.is-outils .mega-liste .mega-link:hover{border-color:var(--rouge);background:var(--rose-bg)}
.mega-grid.is-outils .mega-txt b{font-size:.92rem}
.mega-grid.is-outils .mega-txt em{font-size:.78rem;line-height:1.4}
@media(max-width:1180px){ .mega-grid.is-outils{grid-template-columns:minmax(0,1.4fr) minmax(0,1fr)} }

/* ══════════════════════════════════════════════════════════════════════════
   BLOG (18/09/2026, soir) : loupe centrée, cartes sans étiquettes, panneau
   de filtres en listes à cocher, pagination, encarts au gabarit d'une carte.
   ══════════════════════════════════════════════════════════════════════════ */
/* la loupe : un seul décalage vertical, plus de masque hérité de l'ancienne règle */
.blog-outils .rech--blog::before{top:50%;margin-top:-9px;transform:none;-webkit-mask:none;mask:none;background-color:transparent}
/* cartes : photo à fleur du haut, pas de liseré sous l'image, date et durée discrètes */
.posts .post__img{position:relative;border-radius:var(--r-lg) var(--r-lg) 0 0;background:var(--off)}
.posts .post__img picture{display:block;height:100%}
.posts .post__img img{display:block}
.posts .post__cat{font-size:.82rem;text-transform:none;letter-spacing:0;font-weight:600;color:var(--rouge-txt)}
.posts .post__txt > p.post__meta{padding-top:.7rem;font-size:.8rem;text-transform:none;letter-spacing:0;color:var(--gris)}
.bandeau__compte-page{color:var(--gris-clair)}
/* pagination */
.pages{display:flex;align-items:center;justify-content:center;gap:.6rem;flex-wrap:wrap;margin-top:clamp(1.8rem,3vw,2.6rem)}
.pages[hidden]{display:none}
.pages__nums{display:flex;gap:.35rem}
.secbody .pages a:not(.btn),.pages__num,.pages__fleche{display:inline-flex;align-items:center;justify-content:center;gap:.4rem;min-width:2.6rem;height:2.6rem;padding:0 .8rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--blanc);color:var(--encre);font-size:.92rem;font-weight:500;box-shadow:var(--ombre-xs);transition:background .25s var(--ease),color .25s var(--ease),border-color .25s var(--ease)}
.secbody .pages a:not(.btn):hover,.pages a.pages__num:hover,.pages a.pages__fleche:hover{background:var(--encre);border-color:var(--encre);color:#fff}
.pages__num.is-actuel{background:var(--rouge-btn);border-color:var(--rouge-btn);color:#fff}
.pages__fleche svg{width:.85rem;height:.85rem}
@media(max-width:560px){ .pages__fleche span{display:none} .pages__fleche{padding:0} }
/* encarts : même carte, visuel sombre à la place de la photo */
.post--cta[hidden]{display:none}
.post--cta .post-cta__vue{position:relative;display:flex;align-items:center;justify-content:center;padding:clamp(1rem,2vw,1.6rem);background:var(--encre);overflow:hidden}
.post--cta .post-cta__vue .lines{position:absolute;inset:0;z-index:0;padding-left:1.2rem;padding-right:1.2rem}
.post--cta .post__cat{color:var(--rouge-txt)}
.post--cta .post__txt > p.post__meta{margin-top:auto}
.post--cta .btn{align-self:flex-start;margin-top:.2rem}
.post--cta:hover{background:var(--blanc)}
.post--cta:hover .post-cta__vue{transform:none}
.cta-mock{position:relative;z-index:1;width:min(100%,21rem);background:var(--blanc);border-radius:var(--r);box-shadow:0 18px 40px -18px rgba(0,0,0,.55);padding:1rem 1.1rem;display:flex;flex-direction:column;gap:.7rem;font-size:.8rem;color:var(--encre-2)}
.cta-mock__titre{margin:0;font-family:var(--display);font-size:.92rem;font-weight:600;letter-spacing:-.01em;color:var(--encre);display:flex;flex-direction:column;gap:.1rem}
.cta-mock__titre span{font-family:var(--font);font-size:.74rem;font-weight:400;color:var(--gris)}
.cta-mock ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.5rem}
.cta-mock li{display:flex;align-items:center;gap:.6rem}
.cta-mock li span{flex:1 1 auto;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cta-mock li b{flex:none;font-weight:600;color:var(--encre);font-variant-numeric:tabular-nums}
.cta-mock--audit li i{flex:0 0 5.5rem;height:.4rem;border-radius:999px;background:var(--off);position:relative;overflow:hidden}
.cta-mock--audit li i::after{content:"";position:absolute;inset:0;width:var(--v,50%);border-radius:999px;background:var(--rouge)}
.cta-mock--audit li:nth-child(3) i::after{background:var(--teal)}
.cta-mock__pied{margin:0;padding-top:.6rem;border-top:1px solid var(--border);font-size:.76rem;color:var(--gris)}
.cta-mock--devis li b{color:var(--teal-dark);background:var(--mint);border-radius:999px;padding:.15rem .55rem;font-size:.72rem}
.cta-mock--chat{background:transparent;box-shadow:none;padding:0;gap:.6rem;width:min(100%,22rem)}
.cta-mock__bulle{margin:0;max-width:88%;padding:.7rem .9rem;border-radius:14px;font-size:.82rem;line-height:1.45}
.cta-mock__bulle.is-lui{align-self:flex-start;background:var(--blanc);color:var(--encre);border-bottom-left-radius:4px}
.cta-mock__bulle.is-nous{align-self:flex-end;background:var(--rouge);color:#fff;border-bottom-right-radius:4px}
/* panneau de filtres : listes à cocher, groupes repliables, comme une boutique en ligne */
.filtres-panneau{width:min(25rem,100%)}
.filtres-panneau__tete{padding:1.15rem 1.5rem}
.filtres-panneau__corps{padding:0 1.5rem 1.4rem;gap:0}
.filtres-panneau .bandeau__actifs{order:-1;margin:0;padding:1rem 0;border:0;border-bottom:1px solid var(--border);border-radius:0;background:transparent;gap:.5rem}
.filtres-panneau .bandeau__actifs-lab{width:100%;font-size:.8rem;text-transform:none;letter-spacing:0;font-weight:500;color:var(--gris)}
.filtres-panneau .actif{border-radius:999px;font-size:.8rem;padding:.32rem .6rem .32rem .75rem}
.filtres-panneau .bandeau__reset{font-size:.8rem;color:var(--gris);text-decoration:none}
.filtres-panneau .bandeau__reset:hover{color:var(--rouge-txt);text-decoration:underline}
.filtres-panneau .facettes{gap:0}
.filtres-panneau .facette{padding:0 0 .6rem;border-bottom:1px solid var(--border)}
.filtres-panneau .facette:last-child{border-bottom:0}
.filtres-panneau .facette__lab{display:flex;align-items:center;justify-content:space-between;width:100%;margin:0;padding:1.05rem 0 .7rem;background:none;border:0;font:inherit;font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.01em;text-transform:none;color:var(--encre);text-align:left;cursor:pointer}
.filtres-panneau .facette__lab svg{width:.9rem;height:.9rem;color:var(--gris);transition:transform .3s var(--ease)}
.filtres-panneau .facette.is-replie .facette__lab{padding-bottom:.9rem}
.filtres-panneau .facette.is-replie .facette__lab svg{transform:rotate(-90deg)}
.filtres-panneau .facette.is-replie .facette__chips,.filtres-panneau .facette.is-replie .facette__plus{display:none}
.filtres-panneau .facette__chips{display:flex;flex-direction:column;gap:0}
.filtres-panneau .chip-f,.filtres-panneau .chip-f--tag{display:flex;align-items:center;gap:.7rem;width:100%;margin:0;padding:.45rem 0;border:0;border-radius:0;background:none;box-shadow:none;font:inherit;font-size:.93rem;line-height:1.35;color:var(--encre-2);text-align:left;cursor:pointer;transition:color .2s var(--ease)}
.filtres-panneau .chip-f::before{content:"";flex:none;width:1.1rem;height:1.1rem;border-radius:4px;border:1.5px solid var(--gris-clair);background:var(--blanc);transition:border-color .2s var(--ease),background .2s var(--ease)}
.filtres-panneau .chip-f:hover{color:var(--encre);border:0;background:none}
.filtres-panneau .chip-f:hover::before{border-color:var(--encre)}
.filtres-panneau .chip-f[aria-pressed="true"],.filtres-panneau .chip-f--tag[aria-pressed="true"]{background:none;border:0;color:var(--encre);font-weight:500}
.filtres-panneau .chip-f[aria-pressed="true"]::before{border-color:var(--rouge-btn);background:var(--rouge-btn) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='none' stroke='%23fff' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M3.5 8.5 6.5 11.5 12.5 5'/%3E%3C/svg%3E") center/.75rem no-repeat}
.filtres-panneau .chip-f i{margin-left:auto;flex:none;font-style:normal;font-size:.78rem;color:var(--gris-clair);font-variant-numeric:tabular-nums}
.filtres-panneau .chip-f[aria-pressed="true"] i{color:var(--gris)}
.filtres-panneau .chip-f[disabled]{opacity:.38;cursor:default;border:0}
.filtres-panneau .chip-f[disabled]:hover{color:var(--encre-2);background:none}
.filtres-panneau .chip-f[disabled]:hover::before{border-color:var(--gris-clair)}
.filtres-panneau .chip-f[hidden]{display:none}
.filtres-panneau .chip-f--tag{text-transform:none}
.filtres-panneau .facette__plus{margin:.4rem 0 .3rem;padding:0;background:none;border:0;font:inherit;font-size:.86rem;font-weight:500;color:var(--rouge-txt);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.filtres-panneau__pied{padding:1rem 1.5rem}
.filtres-panneau__reset{text-decoration:none;color:var(--gris)}
.filtres-panneau__reset:hover{text-decoration:underline;color:var(--encre)}

/* ══════════════════════════════════════════════════════════════════════════
   SIMULATEUR v2 (18/09/2026, soir) : affinage repliable, interprétation
   visuelle sous la grille (barres, jauge du seuil, retour par euro), pack conseillé.
   ══════════════════════════════════════════════════════════════════════════ */
.simu-res li.is-limite b{color:#8A5A00}
.simu-verdict strong{font-weight:600}
.simu-verdict.is-ok strong{color:var(--teal-dark)}
/* interprétation, pleine largeur sous la grille */
.simu-interp{display:flex;flex-direction:column;gap:clamp(1.2rem,2vw,1.6rem);margin-top:clamp(1.6rem,3vw,2.4rem)}
.simu-interp[hidden]{display:none}
.simu-tuiles{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,1.8vw,1.4rem)}
.simu-tuile{display:flex;flex-direction:column;gap:.8rem;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);padding:clamp(1.2rem,2vw,1.6rem)}
.simu-tuile__titre{margin:0;font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.simu-barres{display:flex;flex-direction:column;gap:.9rem;flex:1;justify-content:center}
.simu-barre{display:grid;grid-template-columns:1fr auto;gap:.3rem .8rem;align-items:center}
.simu-barre__lib{grid-column:1/-1;font-size:.84rem;color:var(--encre-2)}
.simu-barre__piste{display:block;height:.7rem;border-radius:999px;background:var(--off);overflow:hidden}
.simu-barre__piste i{display:block;height:100%;width:0;border-radius:999px;background:var(--gris-clair);transition:width .9s var(--ease)}
.simu-barre.is-cout .simu-barre__piste i{background:var(--encre)}
.simu-barre.is-plus .simu-barre__piste i{background:var(--teal)}
.simu-barre.is-moins .simu-barre__piste i{background:var(--rouge)}
.simu-barre__val{font-family:var(--display);font-size:.98rem;font-weight:600;letter-spacing:-.02em;color:var(--encre);white-space:nowrap;font-variant-numeric:tabular-nums}
.simu-seuil__txt{margin:0;font-size:.92rem;line-height:1.55;color:var(--encre-2)}
.simu-seuil__txt b{color:var(--encre)}
.simu-jauge{position:relative;height:.8rem;border-radius:999px;background:var(--off);overflow:visible;margin-top:.3rem}
.simu-jauge i{display:block;height:100%;border-radius:999px;background:var(--teal);transition:width .9s var(--ease)}
.simu-seuil.is-non .simu-jauge i{background:var(--rouge)}
.simu-seuil.is-limite .simu-jauge i{background:#D99A1E}
.simu-jauge em{position:absolute;top:-.35rem;bottom:-.35rem;width:2px;margin-left:-1px;background:var(--encre);border-radius:2px}
.simu-jauge__leg{display:flex;justify-content:space-between;font-size:.74rem;color:var(--gris);margin-top:.2rem}
.simu-jauge__leg span:nth-child(2){font-weight:600;color:var(--encre)}
.simu-seuil__note{margin:0;font-size:.86rem;line-height:1.5;color:var(--encre-2)}
.simu-roi__chiffre{margin:0;display:flex;align-items:baseline;gap:.5rem;flex-wrap:wrap}
.simu-roi__chiffre b{font-family:var(--display);font-size:clamp(2.6rem,4vw,3.4rem);font-weight:600;letter-spacing:-.04em;line-height:1;color:var(--teal-dark);font-variant-numeric:tabular-nums}
.simu-roi.is-non .simu-roi__chiffre b{color:var(--rouge-txt)}
.simu-roi.is-limite .simu-roi__chiffre b{color:#8A5A00}
.simu-roi__chiffre span{font-size:.95rem;color:var(--encre-2)}
.simu-roi__txt{margin:0;font-size:.88rem;line-height:1.55;color:var(--encre-2)}
.simu-roi__txt b{color:var(--encre)}
/* le pack conseillé : carte sombre pleine largeur, boutons bien visibles */
.simu-pack{position:relative;overflow:hidden;isolation:isolate;display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.4rem,3vw,3rem);background:var(--encre);color:#fff;border-radius:var(--r-lg);padding:clamp(1.5rem,3vw,2.4rem)}
.simu-pack .lines{position:absolute;inset:0;z-index:0}
.simu-pack__txt,.simu-pack__conseils{position:relative;z-index:1;display:flex;flex-direction:column;gap:.9rem}
.simu-pack__lab{margin:0;font-size:.9rem;color:rgba(255,255,255,.65)}
.simu-pack h3{margin:0;font-family:var(--display);font-size:clamp(1.5rem,2.4vw,2rem);font-weight:600;letter-spacing:-.03em;line-height:1.12;color:#fff}
.simu-pack__txt > p:not(.simu-pack__lab){margin:0;font-size:.98rem;line-height:1.6;color:rgba(255,255,255,.78)}
.simu-pack .btn-row{margin-top:.3rem}
.secbody .simu-pack .btn-inner.is-fantome,.simu-pack .btn-inner.is-fantome{background:transparent;color:#fff;box-shadow:inset 0 0 0 1.5px rgba(255,255,255,.45)}
.simu-pack .btn:hover .btn-inner.is-fantome{background:#fff;color:var(--encre)}
.simu-pack .btn-corners i{border-color:rgba(255,255,255,.5)}
.simu-pack__conseils{padding-left:clamp(1.2rem,2.4vw,2rem);border-left:1px solid rgba(255,255,255,.14)}
.simu-pack__conseils > p{margin:0;font-family:var(--display);font-size:1rem;font-weight:600;color:#fff}
.simu-pack__conseils ol{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.7rem;counter-reset:conseil}
.simu-pack__conseils li{position:relative;padding-left:2.1rem;font-size:.92rem;line-height:1.5;color:rgba(255,255,255,.8);counter-increment:conseil}
.simu-pack__conseils li::before{content:counter(conseil);position:absolute;left:0;top:.05em;width:1.5rem;height:1.5rem;border-radius:50%;background:var(--rouge);color:#fff;font-size:.78rem;font-weight:600;display:flex;align-items:center;justify-content:center}
@media(max-width:1000px){ .simu-tuiles{grid-template-columns:1fr} .simu-pack{grid-template-columns:1fr} .simu-pack__conseils{padding-left:0;border-left:0;padding-top:1.2rem;border-top:1px solid rgba(255,255,255,.14)} }

/* ── hors horaires : panneau de demande de rappel ── */
.rappel-voile{position:fixed;inset:0;z-index:690;background:rgba(38,38,43,.55);opacity:0;transition:opacity .35s var(--ease)}
.rappel-voile.is-ouvert{opacity:1}
.rappel{position:fixed;left:50%;top:50%;z-index:700;width:min(34rem,calc(100% - 2rem));max-height:calc(100% - 2rem);overflow:auto;transform:translate(-50%,-50%) translateY(14px);opacity:0;background:var(--blanc);border-radius:var(--r-lg);box-shadow:0 30px 80px -30px rgba(0,0,0,.5);transition:opacity .35s var(--ease),transform .35s var(--ease);scrollbar-width:thin}
.rappel.is-ouvert{opacity:1;transform:translate(-50%,-50%)}
.rappel[hidden],.rappel-voile[hidden],.rappel__form[hidden],.rappel__merci[hidden],.rappel__erreur[hidden]{display:none}
.rappel__fermer{position:absolute;top:.9rem;right:.9rem;width:2.3rem;height:2.3rem;border-radius:50%;border:1px solid var(--border);background:var(--blanc);color:var(--encre);display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:background .25s var(--ease),color .25s var(--ease)}
.rappel__fermer svg{width:.9rem;height:.9rem}
.rappel__fermer:hover{background:var(--encre);color:#fff}
.rappel__corps{display:flex;flex-direction:column;gap:1rem;padding:clamp(1.4rem,3vw,2.2rem)}
.rappel__etat{margin:0;display:inline-flex;align-items:center;gap:.5rem;align-self:flex-start;font-size:.88rem;font-weight:500;color:var(--rouge-txt)}
.rappel__etat i{width:.55rem;height:.55rem;border-radius:50%;background:var(--rouge);box-shadow:0 0 0 3px rgba(233,72,47,.18)}
.rappel__titre{margin:0;font-family:var(--display);font-size:clamp(1.4rem,2.4vw,1.85rem);font-weight:600;letter-spacing:-.025em;line-height:1.15;color:var(--encre);padding-right:2.5rem}
.rappel__titre em{font-style:normal;color:var(--rouge)}
.rappel__txt{margin:0;font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.rappel__form{display:flex;flex-direction:column;gap:.9rem}
.rappel__form .frow{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;margin:0}
.rappel__form .field{max-width:none}
.rappel__form textarea{resize:vertical;min-height:5rem}
.rappel__creneau{border:0;margin:0;padding:0;min-width:0;display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}
.rappel__creneau legend{padding:0;margin-bottom:.4rem;width:100%;font-size:.78rem;text-transform:uppercase;letter-spacing:.06em;color:var(--gris);font-weight:600}
.rappel__creneau .fopt{margin:0}
.rappel__creneau .fopt span{padding:.5rem .8rem;font-size:.88rem}
.rappel__erreur{margin:0;font-size:.86rem;color:var(--rouge-txt)}
.rappel__pied{display:flex;flex-wrap:wrap;align-items:center;gap:.8rem 1.2rem;padding-top:.2rem}
.rappel__pied .btn{border:0;background:none;padding:0;font:inherit;cursor:pointer}
.rappel__sinon{flex:1 1 14rem;font-size:.84rem;line-height:1.5;color:var(--gris)}
.rappel__sinon b{font-weight:600;color:var(--encre)}
.rappel__merci{display:flex;flex-direction:column;gap:.8rem}
.rappel__merci-ico{display:inline-flex;align-items:center;justify-content:center;width:2.6rem;height:2.6rem;border-radius:50%;background:var(--mint);color:var(--teal)}
.rappel__merci-ico svg{width:1.1rem;height:1.1rem}
.rappel__merci h3{margin:0;font-family:var(--display);font-size:1.3rem;font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.rappel__merci p{margin:0;font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.rappel__merci a{color:var(--rouge-txt);border-bottom:1px solid rgba(204,58,34,.35)}
@media(max-width:640px){ .rappel__form .frow{grid-template-columns:1fr} }

/* ── sous-menu Pour qui (18/09/2026, soir) : six familles en vignettes, cinq métiers par famille, CTA pleine largeur ── */
.mega-pq{display:flex;flex-direction:column;gap:clamp(1.1rem,1.8vw,1.5rem);padding-block:clamp(1.5rem,2.6vw,2.2rem)}
/* Les six familles : un pictogramme plutôt qu'une photo. À cette taille une
   photo n'était plus lisible, et le liseré gris autour de chaque carte hachait
   la rangée. On garde une carte posée sur un fond légèrement teinté, sans
   contour, avec de l'air autour du texte ; le contour n'apparaît qu'au survol. */
.mega-pq__familles{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.7rem}
.mega-fam{display:flex;flex-direction:column;gap:.3rem;padding:1rem .9rem 1.1rem;border:1px solid transparent;border-radius:var(--r);background:var(--off);color:var(--encre);transition:border-color .25s var(--ease),background .25s var(--ease),transform .25s var(--ease),box-shadow .25s var(--ease)}
.mega-fam:hover{border-color:var(--rouge);background:var(--blanc);box-shadow:var(--ombre-xs);transform:translateY(-2px)}
.mega-fam__ico{display:grid;place-items:center;width:34px;height:34px;margin-bottom:.45rem;border-radius:var(--r-sm);background:var(--mint);color:var(--teal-dark);transition:background .25s var(--ease),color .25s var(--ease)}
.mega-fam__ico svg{width:19px;height:19px;display:block}
.mega-fam:hover .mega-fam__ico{background:var(--rouge);color:#fff}
.mega-fam b{font-size:.9rem;font-weight:600;line-height:1.25;color:var(--encre)}
.mega-fam:hover b{color:var(--rouge)}
.mega-fam em{font-style:normal;font-size:.76rem;line-height:1.35;color:var(--gris)}
.mega-pq__metiers{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.8rem;padding-top:clamp(.9rem,1.5vw,1.2rem);border-top:1px solid var(--border)}
.mega-pq__col{display:flex;flex-direction:column;min-width:0}
.mega-pq__col a{display:block;padding:.28rem 0;font-size:.9rem;line-height:1.3;color:var(--encre);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s var(--ease)}
.mega-pq__col a:hover{color:var(--rouge)}
.mega-pq__tous{margin:-.2rem 0 0}
.mega-pq__tous a{display:inline-flex;align-items:center;gap:.4rem;font-size:.88rem;font-weight:500;color:var(--rouge-txt)}
.mega-pq__tous a svg{width:.8rem;height:.8rem}
.mega-pq__tous a:hover{text-decoration:underline;text-underline-offset:3px}
.mega-pq .mega-cta.is-large{display:flex;flex-direction:row;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1rem 2rem;padding:clamp(1.2rem,2vw,1.6rem) clamp(1.3rem,2.4vw,2rem)}
.mega-pq .mega-cta__txt{display:flex;flex-direction:column;gap:.35rem;flex:1 1 24rem}
.mega-pq .mega-cta__txt p{margin:0;max-width:44rem}
.mega-pq .mega-cta__actions{display:flex;flex-direction:column;align-items:flex-start;gap:.5rem;flex:none}
.mega-pq .mega-cta .btn{margin:0}
@media(max-width:1180px){ .mega-pq__familles,.mega-pq__metiers{grid-template-columns:repeat(3,minmax(0,1fr))} }
/* v3 : lecture « chaque mois » / « sur un an », pour quelqu'un qui ne connaît pas le métier */
.simu-res li.simu-res__tete{display:block;padding:0 0 .5rem;border-top:0}
.simu-res li.simu-res__tete span{font-family:var(--display);font-size:.98rem;font-weight:600;color:var(--encre)}
.simu-res li.is-total{margin-top:.2rem;padding-top:.8rem;border-top:2px solid var(--encre)}
.simu-res li.is-total b{font-size:1.25rem}
.simu-res li:last-child{margin-top:0;padding-top:.6rem;border-top:1px solid var(--border)}
.simu-res li.is-total:last-child{margin-top:.2rem;padding-top:.8rem;border-top:2px solid var(--encre)}
.simu-barre__lib em{display:block;font-style:normal;font-size:.76rem;color:var(--gris);margin-top:.1rem}
.simu-barre.is-marge.is-plus .simu-barre__piste i{background:var(--teal)}
.simu-barre.is-marge.is-moins .simu-barre__piste i{background:var(--rouge)}
.simu-an__reste{margin:.2rem 0 0;padding-top:.9rem;border-top:2px solid var(--encre);display:flex;flex-direction:column;gap:.15rem}
.simu-an__reste span{font-size:.9rem;color:var(--encre-2)}
.simu-an__reste b{font-family:var(--display);font-size:clamp(1.7rem,2.6vw,2.2rem);font-weight:600;letter-spacing:-.035em;line-height:1.05;color:var(--teal-dark);font-variant-numeric:tabular-nums}
.simu-an__reste.is-non b{color:var(--rouge-txt)}
.simu-an__reste small{font-size:.8rem;line-height:1.45;color:var(--gris)}
.simu-extra{display:flex;flex-direction:column;gap:1.1rem}
.simu-extra[hidden]{display:none}
.simu-extra .field{max-width:none}
/* v4 : mini résultat à droite, détail étape par étape en dessous */
.simu-resultat{gap:1.1rem}
.simu-detail{display:flex;flex-direction:column;gap:clamp(1.3rem,2.2vw,1.8rem);margin-top:clamp(2.2rem,4vw,3.4rem);padding-top:clamp(2rem,3.6vw,3rem);border-top:1px solid var(--border)}
.simu-detail[hidden]{display:none}
.simu-resultat[hidden]{display:none}
/* Tant que le résultat n'est pas demandé, le simulateur est seul : une
   colonne, centrée. Au clic, la grille reprend ses deux colonnes — le
   formulaire à gauche, le résultat à droite — et le détail s'ouvre dessous. */
.simu-grid.est-attente{grid-template-columns:minmax(0,1fr);max-width:44rem;margin-inline:auto}
/* la note de bas de bloc suit la même largeur, sinon le centrage ne se voit pas */
.simu-grid.est-attente ~ .fnote{max-width:44rem;margin-inline:auto}
.simu-detail__tete{display:flex;flex-direction:column;gap:.5rem;align-items:center;text-align:center}
.simu-detail__tete h3{margin:0;font-family:var(--display);font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:600;letter-spacing:-.03em;line-height:1.1;color:var(--encre)}
.simu-detail__tete .lead{margin:0;max-width:44rem}
.simu-detail__tete .lead b{color:var(--encre);font-weight:600}
/* les étapes du mois : une frise de cartes reliées par des flèches */
.simu-res__lien{display:inline-flex;align-items:center;gap:.4rem;align-self:flex-start;font-size:.9rem;font-weight:500;color:var(--rouge-txt)}
.simu-res__lien svg{width:.85rem;height:.85rem}
.simu-res__lien:hover{text-decoration:underline;text-underline-offset:3px}
/* le graphique : cumul mois après mois, courbes tracées à l'affichage */
.simu-graph{gap:.9rem}
.simu-graph__tete{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:.5rem 1rem}
.simu-graph__verdict{margin:0;display:inline-flex;align-items:center;gap:.5rem;padding:.4rem .85rem;border-radius:999px;font-size:.88rem;font-weight:600}
.simu-graph__verdict.is-ok{background:var(--mint);color:var(--teal-dark)}
.simu-graph__verdict.is-non{background:var(--rose-bg);color:var(--rouge-txt)}
.simu-graph__verdict sup{font-size:.7em}
.simu-graph__svg{display:block;width:100%;height:auto;overflow:visible}
.simu-graph__grille line{stroke:var(--border);stroke-width:1}
.simu-graph__aire{fill:rgba(14,92,100,.10);opacity:0;transition:opacity 1.2s var(--ease) .6s}
.simu-graph.is-trace .simu-graph__aire{opacity:1}
.simu-graph__cout{fill:none;stroke:var(--encre);stroke-width:2;stroke-dasharray:6 6;opacity:0;transition:opacity .8s var(--ease) .3s}
.simu-graph.is-trace .simu-graph__cout{opacity:1}
.simu-graph__marge{fill:none;stroke:var(--teal);stroke-width:3;stroke-linecap:round;stroke-linejoin:round;transition:stroke-dashoffset 1.6s var(--ease) .2s}
.simu-graph__pt{fill:var(--rouge);stroke:#fff;stroke-width:3;opacity:0;transition:opacity .5s var(--ease) 1.6s}
.simu-graph.is-trace .simu-graph__pt{opacity:1}
.simu-graph__mois text{font-family:var(--font);font-size:11px;fill:var(--gris)}
.simu-graph__leg{display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;font-size:.86rem;color:var(--encre-2)}
.simu-graph__leg span{display:inline-flex;align-items:center;gap:.5rem}
.simu-graph__leg i{width:1.1rem;height:3px;border-radius:2px;background:var(--teal)}
.simu-graph__leg .is-cout i{background:repeating-linear-gradient(90deg,var(--encre) 0 4px,transparent 4px 7px);height:2px}
.simu-graph__leg b{font-family:var(--display);font-weight:600;color:var(--encre);font-variant-numeric:tabular-nums}

/* ══════════════════════════════════════════════════════════════════════════
   PAGES MÉTIER v2 (18/09/2026, nuit) : recherches en barres Google, dispositif
   en deux volets maquettés, simulateur réglé sur le métier dans « rentable ».
   ══════════════════════════════════════════════════════════════════════════ */
.rech2{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr);gap:clamp(1.4rem,2.6vw,2.4rem);align-items:start}
.rech2__liste{display:flex;flex-direction:column;gap:1rem;min-width:0}
.rech2__liste h3,.rech2__carte h3{margin:0;font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.rech2__ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.rech2__ul li{display:flex;align-items:center;gap:.7rem;padding:.8rem 1.1rem;border:1px solid var(--border);border-radius:999px;background:var(--blanc);box-shadow:var(--ombre-xs);font-size:.95rem;color:var(--encre);min-width:0}
.rech2__ul li svg{flex:none;width:1rem;height:1rem;color:var(--gris)}
.rech2__ul li span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.rech2__ul li em{font-style:normal;color:var(--rouge-txt);font-weight:500}
.rech2__carte{display:flex;flex-direction:column;gap:.8rem;align-items:flex-start;padding:clamp(1.3rem,2.2vw,1.8rem);background:var(--off);border:1px solid var(--border);border-radius:var(--r-lg)}
.rech2__carte p{margin:0;font-size:.95rem;line-height:1.6;color:var(--encre-2);max-width:none}
.rech2__carte .btn{margin-top:.3rem}
@media(max-width:900px){ .rech2{grid-template-columns:1fr} .rech2__ul{grid-template-columns:1fr} }
/* dispositif : deux volets avec maquette */
.disp{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(1rem,2vw,1.6rem)}
.disp__col{display:flex;flex-direction:column;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);overflow:hidden}
.disp__mock{display:flex;align-items:flex-end;justify-content:center;height:21rem;padding:1.5rem clamp(1.2rem,2vw,1.8rem) 0;background:var(--rose-bg);overflow:hidden}
.disp__col.is-google .disp__mock{background:var(--mint);align-items:center;padding-bottom:1.5rem}
.disp__corps{display:flex;flex-direction:column;gap:1rem;padding:clamp(1.3rem,2.2vw,1.8rem);flex:1}
.disp__corps h3{margin:0;font-family:var(--display);font-size:1.3rem;font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.disp__liste{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.85rem}
.disp__liste li{display:flex;gap:.7rem;align-items:flex-start;font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.disp__liste li i{flex:none;width:1.35rem;height:1.35rem;margin-top:.15rem;border-radius:50%;background:var(--mint);color:var(--teal-dark);display:inline-flex;align-items:center;justify-content:center}
.disp__liste li i svg{width:.7rem;height:.7rem}
.disp__liste li b{display:block;color:var(--encre);font-weight:600;margin-bottom:.1rem}
.disp__corps .btn{margin-top:auto;align-self:flex-start}
.disp__corps .btn--fantome .btn-inner.is-fantome{background:transparent;color:var(--encre);box-shadow:inset 0 0 0 1.5px rgba(38,38,43,.3)}
.disp__corps .btn--fantome:hover .btn-inner.is-fantome{background:var(--encre);color:#fff}
@media(max-width:900px){ .disp{grid-template-columns:1fr} }
/* maquette téléphone : un site de métier avec le bouton d'appel fixe */
/* maquette Google : la recherche, l'annonce, la fiche */
/* le simulateur dans la section sombre */
.simu-fixe[hidden]{display:none}
.on-ink .simu-resultat,.on-ink .simu-resultat .simu-res__lib,.on-ink .simu-res li b{color:var(--encre)}
.on-ink .simu-res__lib small{color:var(--gris)}
.on-ink .simu-res li.is-ok b{color:var(--teal-dark)}
.on-ink .simu-res li.is-non b{color:var(--rouge-txt)}
.on-ink .simu-form .tunnel__note{color:var(--gris)}
.on-ink .simu-grid + .fnote{margin-top:1.4rem}
/* recherches, v3 : deux colonnes, le texte à gauche (aligné à gauche, mesure courte), les recherches à droite */
.rech3{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(2rem,5vw,5rem);align-items:start}
.rech3__copy{display:flex;flex-direction:column;gap:1.1rem;align-items:flex-start;text-align:left}
.rech3__copy .h2{margin:0;text-align:left;max-width:none}
.rech3__copy .lead{margin:0;text-align:left;max-width:none;font-size:clamp(1.02rem,1.25vw,1.12rem);line-height:1.65;color:var(--encre-2)}
.rech3__note{display:flex;flex-direction:column;gap:.9rem;align-items:flex-start;margin-top:.4rem;padding-top:1.2rem;border-top:1px solid var(--border);width:100%}
.rech3__note p{margin:0;font-size:.92rem;line-height:1.55;color:var(--gris);max-width:none}
.rech3__liste{display:flex;flex-direction:column;gap:1rem;min-width:0;padding:clamp(1.3rem,2.2vw,1.8rem);background:var(--off);border:1px solid var(--border);border-radius:var(--r-lg)}
.rech3__liste h3{margin:0;font-family:var(--display);font-size:1.15rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.rech2__ul.is-1col{grid-template-columns:1fr;gap:.55rem}
.rech2__ul.is-1col li{padding:.7rem 1rem;font-size:.97rem}
@media(max-width:900px){ .rech3{grid-template-columns:1fr} }
@media(max-width:640px){
  /* La requête se passe à la ligne au lieu d'être coupée par une ellipsis ;
     la gélule garde son arrondi, l'icône reste alignée sur la première ligne. */
  .rech2__ul li{align-items:flex-start}
  .rech2__ul li svg{margin-top:.2rem}
  .rech2__ul li span{white-space:normal;overflow:visible;text-overflow:clip}
}
/* le détail du simulateur dans la section sombre des pages métier */
.on-ink .simu-detail{border-top-color:rgba(255,255,255,.14)}
.on-ink .simu-detail__tete h3{color:#fff}
.on-ink .simu-detail__tete .lead{color:rgba(255,255,255,.72)}
.on-ink .simu-detail__tete .lead b{color:#fff}
.on-ink .simu-pack{background:#31313A;border:1px solid rgba(255,255,255,.12)}
.on-ink .simu-tuile,.on-ink .simu-tuile p,.on-ink .simu-tuile span{color:var(--encre)}
.on-ink .simu-tuile__titre{color:var(--encre)}
.on-ink .simu-seuil__txt,.on-ink .simu-seuil__note,.on-ink .simu-roi__txt,.on-ink .simu-barre__lib{color:var(--encre-2)}
.on-ink .simu-jauge__leg span,.on-ink .simu-an__reste small,.on-ink .simu-barre__lib em{color:var(--gris)}
.on-ink .simu-jauge__leg span:nth-child(2),.on-ink .simu-seuil__txt b,.on-ink .simu-roi__txt b{color:var(--encre)}
.on-ink .simu-graph__leg{color:var(--encre-2)}
.on-ink .simu-graph__leg b{color:var(--encre)}
.on-ink .simu-an__reste b,.on-ink .simu-roi__chiffre b{color:var(--teal-dark)}
.on-ink .simu-an__reste.is-non b,.on-ink .simu-roi.is-non .simu-roi__chiffre b{color:var(--rouge-txt)}

/* ── outil : valeur d'un client fidèle ── */
.fid-tete{display:flex;flex-direction:column;gap:.25rem;padding:1.1rem 1.2rem;border-radius:var(--r);background:var(--mint);border:1px solid rgba(14,92,100,.18)}
.fid-tete span{font-size:.92rem;font-weight:500;color:var(--teal-dark)}
.fid-tete b{font-family:var(--display);font-size:clamp(2rem,3.4vw,2.8rem);font-weight:600;letter-spacing:-.04em;line-height:1;color:var(--teal-dark);font-variant-numeric:tabular-nums}
.fid-tete small{font-size:.86rem;line-height:1.45;color:var(--encre-2)}
.fid-graph__barre{fill:var(--teal);transform:scaleY(0);transform-origin:bottom;transform-box:fill-box;transition:transform .8s var(--ease) var(--d,0s)}
.fid-graph.is-trace .fid-graph__barre{transform:scaleY(1)}
.fid-graph__val{font-family:var(--display);font-size:12px;font-weight:600;fill:var(--encre);opacity:0;transition:opacity .5s var(--ease) var(--d,0s)}
.fid-graph.is-trace .fid-graph__val{opacity:1}
.fid-graph__jour{stroke:var(--rouge);stroke-width:2;stroke-dasharray:6 6}
.fid-graph__jourlab{font-family:var(--font);font-size:11px;fill:var(--rouge-txt);font-weight:500}
.fid-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.7rem}
.fid-duo__col{display:flex;flex-direction:column;gap:.2rem;padding:.9rem 1rem;border-radius:var(--r);background:var(--off);border:1px solid var(--border)}
.fid-duo__col.is-fidele{background:var(--mint);border-color:rgba(14,92,100,.18)}
.fid-duo__col span{font-size:.82rem;font-weight:500;color:var(--encre-2)}
.fid-duo__col b{font-family:var(--display);font-size:clamp(1.3rem,1.9vw,1.6rem);font-weight:600;letter-spacing:-.03em;line-height:1.05;color:var(--encre);font-variant-numeric:tabular-nums}
.fid-duo__col.is-fidele b{color:var(--teal-dark)}
.fid-duo__col small{font-size:.76rem;line-height:1.4;color:var(--gris)}

/* ── outil : test de fiche Google ── */
.fiche-form{gap:1.3rem}
.fiche-groupe{border:0;margin:0;padding:1.1rem 0 0;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:1rem;min-width:0}
.fiche-groupe legend{padding:0;margin-bottom:.2rem;font-family:var(--display);font-size:1.05rem;font-weight:600;letter-spacing:-.015em;text-transform:none;color:var(--encre);float:left;width:100%}
.fiche-groupe legend + .fiche-q{clear:both}
.fiche-q{display:flex;flex-direction:column;gap:.5rem}
.fiche-q__txt{margin:0;font-size:.94rem;line-height:1.5;color:var(--encre)}
.fiche-q__rep{display:flex;gap:.4rem;flex-wrap:wrap}
.fiche-rep{position:relative;display:inline-flex}
.fiche-rep input{position:absolute;opacity:0;pointer-events:none}
.fiche-rep span{display:inline-flex;align-items:center;padding:.42rem .85rem;border:1px solid var(--border);border-radius:999px;background:var(--blanc);font-size:.86rem;font-weight:500;color:var(--encre-2);cursor:pointer;transition:background .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease)}
.fiche-rep span:hover{border-color:var(--gris-clair);color:var(--encre)}
.fiche-rep input:focus-visible + span{outline:2px solid var(--rouge);outline-offset:2px}
.fiche-rep.is-oui input:checked + span{background:var(--teal);border-color:var(--teal);color:#fff}
.fiche-rep.is-non input:checked + span{background:var(--rouge-btn);border-color:var(--rouge-btn);color:#fff}
.fiche-rep.is-nsp input:checked + span{background:var(--encre);border-color:var(--encre);color:#fff}
.fiche-tete{display:grid;grid-template-columns:auto minmax(0,1fr);gap:1rem;align-items:center;padding:1rem 1.1rem;border-radius:var(--r);border:1px solid var(--border);background:var(--off)}
.fiche-tete.is-ok{background:var(--mint);border-color:rgba(14,92,100,.18)}
.fiche-tete.is-limite{background:#FFF6E5;border-color:rgba(180,120,0,.2)}
.fiche-tete.is-non{background:var(--rose-bg);border-color:rgba(233,72,47,.2)}
.fiche-score{position:relative;width:6.2rem;height:6.2rem;flex:none}
.fiche-score svg{width:100%;height:100%;transform:rotate(-90deg)}
.fiche-score__fond{fill:none;stroke:rgba(38,38,43,.1);stroke-width:9}
.fiche-score__arc{fill:none;stroke:var(--gris-clair);stroke-width:9;stroke-linecap:round;transition:stroke-dashoffset .9s var(--ease),stroke .4s var(--ease)}
.fiche-tete.is-ok .fiche-score__arc{stroke:var(--teal)}
.fiche-tete.is-limite .fiche-score__arc{stroke:#D99A1E}
.fiche-tete.is-non .fiche-score__arc{stroke:var(--rouge)}
.fiche-score__val{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.05rem}
.fiche-score__val b{font-family:var(--display);font-size:1.9rem;font-weight:600;letter-spacing:-.04em;line-height:1;color:var(--encre);font-variant-numeric:tabular-nums}
.fiche-score__val span{font-size:.7rem;color:var(--gris)}
.fiche-verdict{display:flex;flex-direction:column;gap:.3rem;min-width:0}
.fiche-verdict b{font-family:var(--display);font-size:clamp(1.05rem,1.4vw,1.25rem);font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.fiche-tete.is-ok .fiche-verdict b{color:var(--teal-dark)}
.fiche-tete.is-limite .fiche-verdict b{color:#8A5A00}
.fiche-tete.is-non .fiche-verdict b{color:var(--rouge-txt)}
.fiche-verdict span{font-size:.9rem;line-height:1.5;color:var(--encre-2)}
.fiche-verdict em{font-style:normal;color:var(--gris)}
.simu-pack__note{margin:0;font-size:.84rem;line-height:1.5;color:rgba(255,255,255,.6)}
@media(max-width:640px){ .fiche-tete{grid-template-columns:1fr} }
.fiche-recos{display:flex;flex-direction:column;gap:clamp(1.2rem,2vw,1.6rem)}
.fiche-fams{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:.8rem}
.fiche-fam{display:flex;flex-direction:column;gap:.5rem;padding:1rem 1.1rem;background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs)}
.fiche-fam__nom{font-size:.9rem;font-weight:600;color:var(--encre)}
.fiche-fam__piste{display:block;height:.45rem;border-radius:999px;background:var(--off);overflow:hidden}
.fiche-fam__piste i{display:block;height:100%;border-radius:999px;background:var(--teal);transition:width .8s var(--ease)}
.fiche-fam b{font-family:var(--display);font-size:1.25rem;font-weight:600;letter-spacing:-.03em;color:var(--encre);font-variant-numeric:tabular-nums}
.fiche-fam b small{font-family:var(--font);font-size:.8rem;font-weight:400;color:var(--gris);margin-left:.15rem}
.fiche-actions{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem}
.fiche-action{display:flex;flex-direction:column;gap:.55rem;padding:clamp(1.1rem,1.8vw,1.4rem);background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);min-width:0}
.fiche-action.is-verif{background:var(--off)}
.fiche-action__tete{display:flex;align-items:center;gap:.7rem}
.fiche-action__n{flex:none;width:1.7rem;height:1.7rem;border-radius:50%;background:var(--encre);color:#fff;font-size:.8rem;font-weight:600;display:inline-flex;align-items:center;justify-content:center}
.fiche-action__tete b{flex:1;font-family:var(--display);font-size:1.08rem;font-weight:600;letter-spacing:-.015em;line-height:1.25;color:var(--encre)}
.fiche-action__pts{flex:none;font-family:var(--display);font-size:1rem;font-weight:600;color:var(--teal-dark);font-variant-numeric:tabular-nums}
.fiche-action__faire{margin:0;font-size:.95rem;line-height:1.55;color:var(--encre)}
.fiche-action__pourquoi{margin:0;font-size:.86rem;line-height:1.5;color:var(--gris)}
.fiche-action__pied{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:auto;padding-top:.3rem}
.fiche-action__pied span{display:inline-flex;align-items:center;padding:.22rem .6rem;border-radius:999px;background:var(--off);font-size:.76rem;font-weight:500;color:var(--gris)}
.fiche-action__pied span.is-verif{background:var(--rose-bg);color:var(--rouge-txt)}
@media(max-width:900px){ .fiche-fams{grid-template-columns:repeat(2,minmax(0,1fr))} .fiche-actions{grid-template-columns:1fr} }

/* ── accueil, six familles : photo arrondie, nom, exemples de métiers, lien ── */
.famille{width:clamp(16rem,22vw,20rem)}
.famille a{background:transparent;border:0;gap:.45rem;transition:none}
.famille a:hover{border-color:transparent}
.famille__vue{aspect-ratio:4/3;border-radius:var(--r-lg);background:var(--off);margin-bottom:.5rem}
.famille__nom{padding:0;font-family:var(--display);font-size:1.12rem;font-weight:600;letter-spacing:-.02em;line-height:1.25;color:var(--encre)}
.famille__ex{font-size:.88rem;line-height:1.45;color:var(--gris)}
.famille__lien{margin-top:.25rem;display:inline-flex;align-items:center;gap:.35rem;font-size:.88rem;font-weight:500;color:var(--rouge-txt)}
.famille__lien svg{width:.85rem;height:.85rem;transition:transform .35s var(--ease)}
.famille a:hover .famille__lien svg{transform:translateX(3px)}
.famille a:hover .famille__lien{text-decoration:underline;text-underline-offset:3px}
.secbody .familles .famille > a:not(.btn):not(.duo-link),.secbody .familles .famille > a:not(.btn):not(.duo-link):hover{border-bottom:0;padding-bottom:0;color:inherit}

/* ══════════════════════════════════════════════════════════════════════════
   PAGES VILLE v2 (18/09/2026, nuit) : marché en deux colonnes, dispositif
   maquetté, carte de la commune avec ses quartiers, sections propres à la ville.
   ══════════════════════════════════════════════════════════════════════════ */
.rech3__p{margin:0;font-size:1rem;line-height:1.65;color:var(--encre-2);max-width:none}
.rech3__copy .rech3__p + .rech3__p{margin-top:0}
/* la carte et les quartiers */
.zones2{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);gap:clamp(1.4rem,2.6vw,2.4rem);align-items:start}
.zones2__carte{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs);padding:clamp(1rem,1.8vw,1.4rem)}
.carte-ville{margin:0;display:flex;flex-direction:column;gap:.7rem}
.carte-ville svg{display:block;width:100%;height:auto;max-height:34rem}
.carte__terre{fill:var(--mint);stroke:var(--teal);stroke-width:1.5;stroke-linejoin:round}
.carte__pt circle{fill:var(--rouge);stroke:#fff;stroke-width:2.5}
.carte__pt text{font-family:var(--font);font-size:12px;font-weight:500;fill:var(--encre);paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}
.carte-ville figcaption{font-size:.78rem;line-height:1.45;color:var(--gris)}
.zones2__liste{display:flex;flex-direction:column;gap:1rem}
.zones2__bloc{display:flex;flex-direction:column;gap:.8rem;padding:clamp(1.2rem,2vw,1.6rem);background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-xs)}
.zones2__bloc h3{margin:0;font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.zones2__quartiers{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:.45rem}
.zones2__quartiers li{display:inline-flex;align-items:center;gap:.45rem;padding:.42rem .8rem;border-radius:999px;background:var(--off);border:1px solid var(--border);font-size:.88rem;color:var(--encre)}
.zones2__quartiers li::before{content:"";width:.5rem;height:.5rem;border-radius:50%;background:var(--rouge)}
.zones2__bloc .linklist{margin:0}
@media(max-width:900px){ .zones2{grid-template-columns:1fr} }
.zones2__bloc .linklist,.secbody .zones2__bloc ul.linklist{display:flex;flex-direction:column;gap:.4rem;margin:0;padding:0;list-style:none}
.zones2__bloc .linklist li{margin:0}
.secbody .zones2__bloc .linklist a:not(.btn){display:flex;align-items:center;gap:.5rem;padding:.55rem .8rem;border-radius:var(--r-sm);background:var(--off);border:0;font-size:.9rem;color:var(--encre);transition:background .2s var(--ease),color .2s var(--ease)}
.secbody .zones2__bloc .linklist a:not(.btn):hover{background:var(--rose-bg);color:var(--rouge-txt)}
.secbody .zones2__bloc .linklist a b{font-weight:600}
/* maquette ordinateur portable : la page d'accueil d'une entreprise de la ville */
@media(max-width:380px){
}
.mock-pack__terre{fill:var(--mint);stroke:rgba(14,92,100,.35);stroke-width:1}
.mock-pack__pin path{fill:var(--gris-clair)}
.mock-pack__pin circle{fill:#fff}
.mock-pack__pin.is-vous path{fill:var(--rouge)}

/* lien d'évitement : invisible tant qu'il n'a pas le focus clavier */
.skip{position:fixed;left:-999px;top:.6rem;z-index:1000;background:var(--encre);color:#fff;padding:.7rem 1.1rem;border-radius:.4rem;font-weight:600;text-decoration:none}
.skip:focus{left:.6rem;outline:2px solid var(--rouge);outline-offset:2px}
/* menu mobile ouvert : la bulle de discussion s'efface pour ne pas couvrir le bouton du bas */
body:has(#mobileMenu.on) .chat:not(.is-open){opacity:0;pointer-events:none;transition:opacity .2s var(--ease)}

/* ── Ville, département, région : version simple au doigt ──────────────
   Pas de carte animée sous 901 px (elle demande un écran large et un vrai
   défilement) : la carte du SVG passe en tête de section, cadrée et arrondie,
   et les trois paliers se lisent l'un sous l'autre. Rien à piloter, rien qui
   puisse se décaler. */
@media(max-width:900px){
  #zone .zonegrid{display:flex;flex-direction:column;gap:1.4rem}
  #zone .zonephoto{order:-1;aspect-ratio:4/3;border-radius:var(--r-lg);overflow:hidden;
    background:#1c1c20;border:1px solid rgba(255,255,255,.1)}
  #zone .zonephoto .alt{width:100%;height:100%}
  #zone .zonevoile{display:none}
  #zone .zonetxt{order:0}
}
@media(min-width:601px) and (max-width:900px){ #zone .zonephoto{aspect-ratio:16/9} }

/* ── Doigt : des zones de toucher confortables sur les liens de liste ──
   Les liens de paragraphe gardent leur ligne de texte ; ceux qui sont seuls
   sur leur ligne (pied de page, listes de liens, « voir le détail ») passent
   à 36 px de haut, la taille minimale conseillée au pouce. */
@media(max-width:900px){
  .foot .foot-col a,.foot-bot__liens a,.foot-col__tous,.linklist a,.lire__tout,.simu-res__lien,
  .side-srv a,.jobpill a,.villecard,.pill,.faq-suite__lien,.cta-back,
  .crumbs a,.foot .foot-contact li a,.foot-social__lien,.mega-fam{min-height:36px;display:inline-flex;align-items:center}
  .foot-social__lien{min-width:36px;justify-content:center}
  /* rien sous 12 px au doigt : ces libellés passaient à 11 */
  .estim__mini-lab,.side-preuve span{font-size:.75rem}
  /* « ou appelez le … » en colonne d'article : une vraie ligne cliquable */
  .sidetel{min-height:36px;display:inline-flex;align-items:center;font-size:.88rem}
  .faq-suite__cta,.faq-suite__lien,.tunnel__retour{min-height:40px}
  .card__etape a,.faqnav li a{min-height:38px;display:inline-flex;align-items:center}
  .nav-right .btn-inner{min-height:40px}
  .tunnel__retour{padding-inline:.2rem}
  .foot .foot-col a,.foot-bot__liens a{padding-block:.35rem}
  .linklist a{padding-block:.4rem}
}

/* ── Tableaux au doigt : un dégradé sur le bord droit dit qu'il y a la suite ──
   Les tableaux comparatifs ne tiennent pas dans 375 px : ils glissent déjà
   horizontalement, mais rien ne le montrait. */
@media(max-width:900px){
  .tablewrap{position:relative}
  .tablewrap::after{content:"";position:absolute;top:0;right:0;bottom:0;width:2.2rem;pointer-events:none;
    background:linear-gradient(90deg,rgba(255,255,255,0),var(--blanc));border-radius:0 var(--r) var(--r) 0}
  .on-off .tablewrap::after{background:linear-gradient(90deg,rgba(246,246,248,0),var(--off))}
  .on-ink .tablewrap::after{background:linear-gradient(90deg,rgba(28,28,32,0),#1c1c20)}
  .tablewrap.est-au-bout::after{opacity:0;transition:opacity .25s var(--ease)}
}

/* ── Boutons d'appel à l'action : pleine largeur au doigt ──
   Deux boutons de largeurs différentes au fil du texte donnaient une colonne
   en escalier ; sur un téléphone ils prennent toute la largeur et s'empilent. */
@media(max-width:600px){
  .hero-copy .btn-row,.pagehead-copy .btn-row,.bande .btn-row,.midcta .btn-row,.zonefiche .btn-row,.split__copy .btn-row{
    flex-direction:column;align-items:stretch;align-self:stretch;width:100%;gap:.6rem}
  .hero-copy .btn-row > .btn,.pagehead-copy .btn-row > .btn,.bande .btn-row > .btn,.midcta .btn-row > .btn,
  .zonefiche .btn-row > .btn,.split__copy .btn-row > .btn{width:100%}
  .hero-copy .btn-row .btn-inner,.pagehead-copy .btn-row .btn-inner,.bande .btn-row .btn-inner,
  .midcta .btn-row .btn-inner,.zonefiche .btn-row .btn-inner,.split__copy .btn-row .btn-inner{justify-content:center}
}

/* ── « À lire sur le blog » : les cartes du blog, telles quelles ──
   Le bloc affichait un titre déjà lié à l'intérieur d'un lien : le navigateur
   coupait le lien extérieur en morceaux et la carte partait en lambeaux. Il
   reprend maintenant la carte du blog (image, rubrique, titre, chapô, durée). */
.posts--lire{margin-top:1.15rem}
.posts--lire.is-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.posts--lire.is-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.posts--lire.is-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.posts--lire .post__txt{padding:1.05rem 1.1rem 1.15rem;gap:.5rem}
.posts--lire .post__txt h3{font-size:1.02rem}
.posts--lire .post__txt > p{font-size:.88rem;line-height:1.45}
@media(max-width:1100px){ .posts--lire.is-4{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:1000px){ .posts--lire.is-3{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:640px){ .posts--lire.is-4,.posts--lire.is-3,.posts--lire.is-2{grid-template-columns:1fr} }

/* ── Le déroulé du projet, en deux colonnes (pages service) ──────────────
   Titre, accroche et bouton à gauche ; les étapes numérotées à droite. Les
   étapes s'allument une à une au défilement (site.js) : la première est
   lisible d'emblée, les suivantes sont grisées tant qu'on n'y est pas.
   Sans JS, tout reste à pleine opacité. */
.deroul{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr);gap:clamp(2rem,5vw,4.5rem);align-items:start}
.deroul__copy h2{margin:0 0 .8rem}
.deroul__copy .lead{margin:0 0 1.4rem;max-width:26rem}
.deroul__copy .btn-row{margin-top:0}
.deroul__note{margin:.9rem 0 0;max-width:24rem;font-size:.86rem;line-height:1.5;color:var(--gris)}
.deroul__liste{list-style:none;margin:0;padding:0;counter-reset:deroul}
.deroul__e{counter-increment:deroul;display:grid;grid-template-columns:2.4rem minmax(0,1fr);column-gap:1.1rem;
  padding:1.15rem 0;border-top:1px solid var(--border);transition:opacity .45s var(--ease)}
.deroul__e:first-child{border-top:0;padding-top:0}
.deroul__e::before{content:counter(deroul,decimal-leading-zero);grid-row:1/3;font-family:var(--display);font-size:.9rem;
  font-weight:600;color:var(--rouge);padding-top:.15rem}
.deroul__t{display:flex;flex-wrap:wrap;align-items:baseline;gap:.4rem .8rem;margin-bottom:.25rem}
.deroul__t h3{margin:0;font-family:var(--display);font-size:1.1rem;font-weight:600;letter-spacing:-.02em;color:var(--encre)}
.deroul__t span{font-size:.76rem;text-transform:uppercase;letter-spacing:.09em;font-weight:600;color:var(--gris)}
.deroul__e > p{margin:0;font-size:.95rem;line-height:1.55;color:var(--encre-2)}
.on-off .deroul__e{border-top-color:#e6dedc}
@media(max-width:900px){
  .deroul{grid-template-columns:1fr;gap:1.6rem}
  .deroul__copy .lead{margin-bottom:1.1rem}
  .deroul__e{grid-template-columns:2rem minmax(0,1fr);column-gap:.8rem;padding:1rem 0}
}

/* le déroulé figé le temps d'allumer les étapes (grand écran seulement) */
@media(min-width:901px){
  section.is-der{min-height:100vh;display:flex;flex-direction:column;justify-content:center;padding-block:clamp(1.5rem,4vh,3.5rem)}
  section.is-der > .pad{width:100%}
}

/* ── Bandeau de consentement ──────────────────────────────────────────────
   Discret, en bas d'écran, jamais bloquant : refuser et accepter coûtent le
   même clic. Il n'apparaît qu'une fois, et se rappelle depuis le pied de page. */
/* une carte en bas à gauche, sur ordinateur comme sur mobile (11/10/2026) :
   l'assistant reste libre en bas à droite, et la page reste lisible */
.cookies{position:fixed;left:clamp(.8rem,2vw,1.4rem);bottom:clamp(.8rem,2vw,1.4rem);z-index:800;width:min(25rem,calc(100% - 1.6rem));
  transform:translateY(calc(100% + 2rem));opacity:0;transition:transform .45s var(--ease),opacity .35s var(--ease)}
.cookies.is-on{transform:none;opacity:1}
/* sur mobile la carte prend toute la largeur : la bulle de l'assistant, dessous,
   s'efface le temps du choix, puis revient */
@media(max-width:640px){ body.a-cookies .chat-bulle-btn{opacity:0;pointer-events:none} }
.cookies[hidden]{display:none}
.cookies__in{display:flex;flex-direction:column;align-items:stretch;gap:1rem;
  padding:clamp(1rem,2vw,1.35rem) clamp(1.1rem,2.2vw,1.6rem);background:var(--encre);color:#fff;
  border-radius:var(--r-lg);box-shadow:0 26px 60px -28px rgba(0,0,0,.6)}
.cookies__txt{min-width:0}
.cookies__txt b{display:block;font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.02em;margin-bottom:.25rem}
.cookies__txt p{margin:0;font-size:.88rem;line-height:1.5;color:rgba(255,255,255,.72)}
.cookies__txt a{color:#fff;border-bottom:1px solid rgba(255,255,255,.4)}
.cookies__txt a:hover{border-bottom-color:#fff}
.cookies__btns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem}
.cookies__non,.cookies__oui{font:inherit;font-size:.9rem;font-weight:600;padding:.75rem 1.1rem;border-radius:var(--r-sm);
  cursor:pointer;border:0;transition:.3s var(--ease);min-height:44px}
.cookies__non{background:transparent;color:#fff;box-shadow:inset 0 0 0 1px rgba(255,255,255,.35)}
.cookies__non:hover{background:rgba(255,255,255,.1)}
.cookies__oui{background:var(--rouge);color:#fff}
.cookies__oui:hover{background:var(--rouge-dark)}
.foot-cookies{font:inherit;font-size:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer;
  text-align:left;opacity:.62;transition:opacity .3s}
.foot-cookies:hover{opacity:1}


/* ═══ Page 404 : la devanture dont le rideau se ferme ═══════════════════════
   Tout est vectoriel et animé en CSS — aucune image à charger, net sur tous
   les écrans, et rien ne bouge si le système demande moins d'animations. */
.dev404{width:100%;max-width:33rem;margin-left:auto}
.dev404__svg{display:block;width:100%;height:auto}
.dv-sol{fill:none;stroke:var(--border);stroke-width:4;stroke-linecap:round}
.dv-mur{fill:var(--blanc);stroke:var(--encre);stroke-width:2}
.dv-ens{fill:var(--teal)}
.dv-logo{fill:#fff}
.dv-vitre{fill:var(--mint);stroke:var(--encre);stroke-width:2}
.dv-porte{fill:var(--off);stroke:var(--encre);stroke-width:2}
.dv-trait{fill:none;stroke:var(--encre);stroke-width:2;stroke-linecap:round}
.dv-fin{fill:none;stroke:rgba(38,38,43,.22);stroke-width:1.4}
.dv-tablier{fill:#EDEDF1;stroke:var(--encre);stroke-width:2}
.dv-caisson{fill:var(--encre)}
.dv-num{fill:var(--rouge);font-family:var(--display);font-size:38px;font-weight:600;letter-spacing:.02em;text-anchor:middle}
/* Le rideau descend, se cale d'un rebond, tient trois secondes, puis remonte. */
.dv-rideau{transform:translateY(184px)}
@keyframes cl-rideau{
  0%,10%  {transform:translateY(0);      animation-timing-function:cubic-bezier(.45,0,.75,.1)}
  40%     {transform:translateY(186px);  animation-timing-function:cubic-bezier(.2,.9,.3,1)}
  46%,76% {transform:translateY(184px)}
  100%    {transform:translateY(0)}
}
.dev404__svg .dv-rideau{animation:cl-rideau 5s infinite}
@media(max-width:900px){ .dev404{margin-inline:auto;max-width:26rem} }
@media(prefers-reduced-motion:reduce){ .dev404__svg *{animation:none!important} }

/* ═══ Page contact : la demande est dans le héros ═══════════════════════════
   C'est une demande de devis, pas un questionnaire : tout tient sur un écran,
   à droite du titre. Les trois garanties passent en réassurance sous le texte,
   en ligne et sans cadre — elles accompagnent, elles ne concurrencent pas. */
.pagehead--contact .pagehead-grid{grid-template-columns:minmax(0,1fr) minmax(0,1.02fr);align-items:start;gap:clamp(2rem,4vw,4.5rem)}
.pagehead--contact .pagehead-copy{gap:1.15rem}
.reassur{list-style:none;margin:.6rem 0 0;padding:0;display:flex;flex-direction:column;gap:1.05rem;width:100%}
.reassur li{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.8rem;align-items:start}
.reassur__ico{flex:none;width:21px;height:21px;color:var(--rouge);margin-top:.12rem}
.reassur__ico svg{display:block;width:100%;height:100%}
.reassur__t{font-size:.93rem;line-height:1.5;color:var(--gris)}
.reassur__t b{display:block;margin-bottom:.12rem;font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.contactcard{background:var(--blanc);border:1px solid var(--border);border-radius:var(--r-lg);box-shadow:var(--ombre-md);padding:clamp(1.25rem,2.4vw,2rem)}
.contactpage__form{display:flex;flex-direction:column;gap:.85rem}
.contactpage__form .field label i{font-style:normal;text-transform:none;letter-spacing:0;font-weight:400;color:var(--gris-clair)}
.contactpage__form .field textarea{resize:vertical;min-height:7.5rem}
.contactpage__form .btn{margin-top:.2rem}
.contactpage__form .btn svg{width:14px;height:14px;flex:none}
.contactpage__form .fnote{margin:0;font-style:normal;font-size:.8rem;line-height:1.5}
.fopt--consent span{display:block;position:relative;border:0;padding:0 0 0 1.4rem;font-size:.85rem;line-height:1.5;color:var(--gris)}
.fopt--consent span::before{position:absolute;left:0;top:.35em;margin:0}
.fopt--consent span a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
.fopt--consent input:checked + span{background:none}
.ferreur{margin:0;font-size:.88rem;line-height:1.45;color:var(--rouge-dark);background:var(--rose-bg);border-left:2px solid var(--rouge);padding:.6rem .75rem}
.field.est-faux input,.field.est-faux select,.field.est-faux textarea{border-color:var(--rouge);background:var(--rose-bg)}
.fopt.est-faux span::before{border-color:var(--rouge)}
.contactmerci{display:flex;flex-direction:column;gap:.7rem;align-items:flex-start}
.contactmerci__ico{display:grid;place-items:center;width:38px;height:38px;border-radius:50%;background:var(--mint);color:var(--teal-dark)}
.contactmerci__ico svg{width:19px;height:19px}
.contactmerci h2{font-family:var(--display);font-size:clamp(1.3rem,2vw,1.65rem);font-weight:600;letter-spacing:-.025em;line-height:1.15}
.contactmerci p{font-size:.97rem;line-height:1.6;color:var(--encre-2)}
.contactmerci a{color:var(--rouge);border-bottom:1px solid rgba(233,72,47,.35)}
@media(max-width:900px){
  .pagehead--contact .pagehead-grid{grid-template-columns:1fr}
  .contactpage__form .frow{grid-template-columns:1fr 1fr}
}
@media(max-width:640px){ .contactpage__form .frow{grid-template-columns:1fr} }

/* ═══ Outils : les champs d'une même ligne s'alignent ══════════════════════
   Les libellés font une, deux ou trois lignes selon la question ; en flex,
   chaque champ démarrait donc à une hauteur différente et la ligne partait
   en escalier. La sous-grille fait partager à toute la rangée la hauteur du
   plus grand libellé : les saisies retombent sur la même ligne de base. */
/* La première rangée porte le secteur et le métier : des libellés longs
   (« Restauration et métiers de bouche ») qu'une demi-colonne coupait en plein
   milieu. Elle passe sur toute la largeur du formulaire, les autres restent
   à deux colonnes — un champ chiffré n'a pas besoin de plus. */
.simu-form .frow:first-of-type{grid-template-columns:minmax(0,1fr)}

@supports (grid-template-rows: subgrid){
  .simu-form .frow{grid-template-rows:auto auto}
  .simu-form .frow > .field{display:grid;grid-template-rows:subgrid;grid-row:span 2;gap:.4rem}
  .simu-form .frow > .field > label{align-self:start}
  .simu-form .frow > .field > :last-child{align-self:end}
}

/* Réassurance en quatre colonnes (bas de la page FAQ) : même brique qu'en haut
   de la page contact, posée en grille plutôt qu'en colonne. */
.reassur--4{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1.6rem 1.8rem;margin-top:0}
@media(max-width:1100px){ .reassur--4{grid-template-columns:repeat(2,minmax(0,1fr));gap:1.4rem} }
@media(max-width:640px){ .reassur--4{grid-template-columns:1fr} }

/* ── Page FAQ ────────────────────────────────────────────────────────────── */
/* Les deux repères du héros : côte à côte, centrés sous le titre, sans cadre —
   ce sont des indications, pas des cartes à cliquer. */
.faqduo{list-style:none;margin:clamp(2rem,4vw,3rem) auto 0;padding:0;display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(2rem,6vw,5rem)}
.faqduo li{display:flex;flex-direction:column;align-items:center;text-align:center;gap:.2rem;max-width:18rem}
.faqduo__ico{display:grid;place-items:center;width:38px;height:38px;margin-bottom:.5rem;border-radius:50%;background:var(--mint);color:var(--teal-dark)}
.faqduo__ico svg{width:19px;height:19px;display:block}
.faqduo b{font-family:var(--display);font-size:1.02rem;font-weight:600;letter-spacing:-.015em;color:var(--encre)}
.faqduo span:not(.faqduo__ico){font-size:.9rem;line-height:1.45;color:var(--gris)}
@media(max-width:560px){ .faqduo{gap:1.8rem} }

/* La recherche est descendue avec les questions : elle porte sur elles, pas sur
   la page. Pleine largeur de la colonne, et un filet la sépare du premier thème. */
/* `hidden` seul ne suffit pas quand la règle pose un `display` explicite :
   le bandeau restait affiché alors que son thème avait disparu. */
.midcta[hidden]{display:none}
/* Le bouton d'effacement se place dans le champ, pas en dessous. */
.faqsearch input{padding-right:2.9rem}
.faqsearch button{position:absolute;right:.5rem;top:50%;transform:translateY(-50%);display:grid;place-items:center;
  width:34px;height:34px;padding:0;border:0;background:none;color:var(--gris);font:inherit;font-size:.9rem;
  cursor:pointer;border-radius:var(--r-sm);transition:background .25s var(--ease),color .25s var(--ease)}
.faqsearch button:hover{background:var(--off);color:var(--encre)}
.faqsearch button[hidden]{display:none}
.faqbarre{margin-bottom:clamp(1.6rem,3vw,2.4rem);padding-bottom:clamp(1.3rem,2.4vw,1.9rem);border-bottom:1px solid var(--border)}
.faqsearch--bloc{max-width:none;margin-top:0}

/* ── Sous-menu Services : quatre colonnes, bandeau d'appel en pleine largeur ──
   La colonne « Vos objectifs » reprend les mêmes prestations par ce que le
   client cherche à obtenir. Le bandeau d'appel, qui occupait une colonne,
   passe sous les listes : il gagne en lisibilité et rend la largeur aux liens. */
.mega-grid.is-services{grid-template-columns:repeat(4,minmax(0,1fr))}
/* La grille rendait déjà 35 px de marge basse, le bandeau en ajoutait 28 : le
   décrochage était trop grand au-dessus, et nul en dessous : le bandeau touchait
   le bord du panneau. La grille se resserre, et le bandeau porte lui-même la
   marge du bas, égale à celle des côtés. */
.mega-grid.is-services{padding-bottom:clamp(1rem,1.8vw,1.4rem)}
.mega-cta--bas{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:start;
  gap:.3rem clamp(2rem,3vw,3.2rem);margin:0 0 clamp(1.2rem,2.4vw,2.2rem);
  padding:clamp(1.2rem,2vw,1.7rem) clamp(1.4rem,2.4vw,2rem)}
/* Le bouton et le numéro forment un bloc à part : sans lui, la hauteur du
   bouton commandait la rangée du titre et décalait tout le texte vers le bas.
   Les deux colonnes partent maintenant de la même ligne, en haut. */
.mega-cta--bas > b{grid-column:1;grid-row:1;margin:0}
.mega-cta--bas > p{grid-column:1;grid-row:2;margin:.35rem 0 0;max-width:46rem}
.mega-cta__act{grid-column:2;grid-row:1/3;display:flex;flex-direction:column;align-items:center;gap:.5rem}
.mega-cta__act .btn{margin:0}
.mega-cta__act .mega-tel{margin:0}
@media(max-width:1180px){ .mega-grid.is-services{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:900px){ .mega-grid.is-services{grid-template-columns:1fr} }

/* ── Téléphone : la section « zone » en carrousel ──────────────────────────
   Sous 901 px, la carte animée n'est pas montée (voir site.js) : le fond de
   carte y est illisible, des communes de trois millimètres. On le retire et
   les trois niveaux se balaient du doigt, un par écran. Les `!important`
   sont là pour effacer les styles en ligne que la version bureau laisse
   derrière elle quand on réduit la fenêtre ou qu'on tourne le téléphone :
   sans eux, les fiches restent invisibles. */
@media(max-width:900px){
  #zone .zonephoto{display:none}
  #zone .zoneglisse{display:block}
  /* min-width:0 : sans lui, le conteneur adopte la largeur de ses trois
     fiches au lieu de défiler, et pousse toute la page de quarante pixels. */
  #zone .zonetxt,#zone .zonefiche{min-width:0;max-width:100%}
  #zone .zoneslides{flex-direction:row;gap:.8rem;overflow-x:auto;scroll-snap-type:x mandatory;
    padding-bottom:.5rem;scrollbar-width:none;min-width:0;width:100%;max-width:100%}
  #zone .zoneslides::-webkit-scrollbar{display:none}
  /* le cadre passe sur les fiches elles-mêmes : le panneau qui les entourait
     n'a plus de sens quand on les fait défiler une par une */
  #zone .zonefiche{padding:0;border:0;background:none;box-shadow:none}
  #zone .zoneslide{flex:0 0 86%;scroll-snap-align:center;margin:0;
    padding:1.1rem 1.1rem 1.2rem;background:rgba(255,255,255,.05);
    border:1px solid rgba(255,255,255,.1);border-radius:var(--r-lg)}
  #zone .zoneslide,#zone .zoneslide__tete,#zone .zoneslide__lead,#zone .zoneslide__srv li{
    opacity:1!important;filter:none!important;transform:none!important}
}
.zoneglisse{display:none;margin:.8rem 0 0;font-size:.82rem;line-height:1.45;
  color:rgba(255,255,255,.45)}

/* ==========================================================================
   Maquettes réalistes (07/10/2026) — « Sur votre site » / « Sur Google »
   Les anciennes .mock-tel / .mock-google montraient des barres grises : on ne
   reconnaissait ni un site ni une fiche Google. Ici, deux téléphones qui
   affichent vraiment quelque chose : à gauche le site du client, à droite la
   page de résultats Google avec son logo, son annonce « Sponsorisé » et sa
   fiche d'établissement (photo, note, horaires, boutons ronds).
   Les couleurs Google sont citées telles quelles : c'est ce qui rend la
   capture crédible. Tout est aria-hidden : rien de tout ça n'est du contenu.
   ========================================================================== */
.mock-phone{width:min(16rem,100%);height:100%;display:flex;flex-direction:column;padding:.45rem .45rem 0;background:#17171B;border-radius:2rem 2rem 0 0;box-shadow:0 22px 44px -22px rgba(0,0,0,.55)}
.mock-phone__ecran{position:relative;flex:1;min-height:0;display:flex;flex-direction:column;background:#fff;border-radius:1.7rem 1.7rem 0 0;overflow:hidden;font-size:.68rem;line-height:1.35;color:#202124;letter-spacing:0}
/* l'île : le repère qui dit « téléphone » en un coup d'œil */
.mock-phone__ecran::before{content:"";position:absolute;left:50%;top:.34rem;z-index:3;width:2.9rem;height:.44rem;margin-left:-1.45rem;border-radius:999px;background:#17171B}
.mock-phone__url{display:flex;align-items:center;justify-content:center;gap:.25rem;padding:1.1rem .6rem .4rem;background:#F1F3F4;color:#5F6368;font-size:.58rem}
.mock-phone__url svg{width:.52rem;height:.52rem;flex:none}

/* ---------- Le site du client ---------- */
.msite{display:flex;flex-direction:column;flex:1;min-height:0}
.msite > *{flex:none}
.msite__nav{display:flex;align-items:center;gap:.4rem;padding:.45rem .55rem;border-bottom:1px solid #EFEFF1}
.msite__logo{flex:none;width:1.15rem;height:1.15rem;border-radius:.3rem;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.5rem;font-weight:700;letter-spacing:.02em}
.msite__nav b{flex:1;min-width:0;font-family:var(--display);font-size:.66rem;font-weight:600;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#1b1b20}
.msite__burger{flex:none;width:.72rem;height:.5rem;border-top:1.5px solid #3c3c44;border-bottom:1.5px solid #3c3c44;position:relative}
.msite__burger::after{content:"";position:absolute;left:0;top:50%;width:100%;height:1.5px;margin-top:-.75px;background:#3c3c44}
.msite__hero{position:relative;isolation:isolate;display:flex;flex-direction:column;justify-content:flex-end;gap:.18rem;min-height:7.4rem;padding:.6rem .6rem .65rem;color:#fff;overflow:hidden}
.msite__hero img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 32%;z-index:-2}
.msite__hero::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(to top,rgba(10,22,26,.92) 0%,rgba(10,22,26,.72) 42%,rgba(10,22,26,.34) 72%,rgba(10,22,26,.1) 100%)}
.msite__hero b{font-family:var(--display);font-size:.84rem;font-weight:600;line-height:1.12;letter-spacing:-.02em;text-shadow:0 1px 6px rgba(10,22,26,.5)}
/* .secbody b force l'encre sur tous les gras : le titre du héros sortait gris sur la photo. */
.msite .msite__hero b{color:#fff}
.msite__hero span{font-size:.6rem;opacity:.88}
.msite__hero em{align-self:flex-start;margin-top:.3rem;font-style:normal;padding:.26rem .55rem;border-radius:999px;background:var(--rouge);font-size:.58rem;font-weight:600}
.msite__note{display:flex;align-items:center;gap:.25rem;padding:.4rem .6rem;border-bottom:1px solid #EFEFF1;font-size:.58rem;color:#5F6368}
.msite__note b{color:#202124;font-weight:600}
.msite__form{display:flex;flex-direction:column;gap:.3rem;padding:.55rem .6rem}
.msite__form b{font-family:var(--display);font-size:.66rem;font-weight:600;letter-spacing:-.01em}
.msite__champ{display:flex;align-items:center;padding:.33rem .45rem;border:1px solid #DCDCE0;border-radius:.35rem;font-size:.56rem;color:#9a9aa3}
.msite__champ::after{content:"";width:1px;height:.6rem;margin-left:.1rem;background:var(--rouge);animation:msiteCaret 1.1s steps(1,end) infinite}
@keyframes msiteCaret{0%,49%{opacity:1}50%,100%{opacity:0}}
@media(prefers-reduced-motion:reduce){.msite__champ::after{animation:none}}
.msite__bas{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:.5rem;background:var(--rouge);color:#fff;text-align:center;font-size:.64rem;font-weight:600;box-shadow:0 -6px 12px -8px rgba(0,0,0,.3)}
.msite__ventes{padding:.55rem .6rem 0;padding-bottom:1.8rem}
.msite__ventes b{display:block;font-family:var(--display);font-size:.66rem;font-weight:600;letter-spacing:-.01em}
.msite__ventes ul{list-style:none;margin:.3rem 0 0;padding:0;display:flex;flex-direction:column;gap:.3rem}
.msite__ventes li{display:flex;align-items:center;gap:.4rem;padding:.33rem .45rem;border:1px solid #EFEFF1;border-radius:.35rem;font-size:.56rem;color:#5F6368}
.msite__ventes li span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.msite__ventes li em{flex:none;font-style:normal;padding:.08rem .3rem;border-radius:999px;background:var(--mint);color:var(--teal-dark);font-size:.5rem;font-weight:600}

/* ---------- La page de résultats Google ---------- */
.mserp{display:flex;flex-direction:column;flex:1;min-height:0;background:#fff}
.mserp > *{flex:none}
.mserp__tete{display:flex;align-items:center;gap:.4rem;padding:.4rem .6rem .3rem}
.gmark{font-family:var(--display);font-size:1rem;font-weight:600;letter-spacing:-.045em;line-height:1}
.gmark i{font-style:normal}
.gmark i:nth-child(1){color:#4285F4}
.gmark i:nth-child(2){color:#EA4335}
.gmark i:nth-child(3){color:#FBBC05}
.gmark i:nth-child(4){color:#4285F4}
.gmark i:nth-child(5){color:#34A853}
.gmark i:nth-child(6){color:#EA4335}
.mserp__compte{margin-left:auto;width:.95rem;height:.95rem;border-radius:50%;background:#C6DAFC;color:#1A3C7A;display:flex;align-items:center;justify-content:center;font-size:.5rem;font-weight:600}
.mserp__champ{display:flex;align-items:center;gap:.4rem;margin:0 .6rem;padding:.33rem .55rem;border:1px solid #DFE1E5;border-radius:999px;font-size:.62rem;color:#202124;box-shadow:0 1px 3px rgba(32,33,36,.1)}
.mserp__champ svg{flex:none;width:.62rem;height:.62rem}
.mserp__champ svg:first-child{color:#9AA0A6}
.mserp__champ span{flex:1;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.mserp__champ .mserp__micro{color:#4285F4}
.mserp__onglets{display:flex;gap:.7rem;padding:.4rem .6rem 0;border-bottom:1px solid #EBEBEB;font-size:.58rem;color:#5F6368}
.mserp__onglets span{padding-bottom:.3rem}
.mserp__onglets span.is-on{color:#1A73E8;box-shadow:inset 0 -2px 0 #1A73E8}
.mserp__ann{padding:.42rem .6rem .4rem}
.mserp__site{display:flex;align-items:center;gap:.33rem}
.mserp__fav{flex:none;width:.95rem;height:.95rem;border-radius:50%;background:var(--teal);color:#fff;display:flex;align-items:center;justify-content:center;font-size:.46rem;font-weight:700}
.mserp__fav.is-gris{background:#DADCE0;color:#5F6368}
.mserp__site b{font-size:.6rem;font-weight:500;color:#202124}
.mserp__spons{margin:.12rem 0 .1rem;font-size:.58rem;font-weight:700;color:#202124}
.mserp__spons span{font-weight:400;color:#5F6368}
.mserp__titre{display:block;font-size:.76rem;line-height:1.2;color:#1A0DAB}
.mserp__desc{margin:.1rem 0 0;font-size:.58rem;line-height:1.35;color:#4D5156;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
/* la fiche d'établissement */
.mserp__fiche{margin:0 .5rem .5rem;border:1px solid #DADCE0;border-radius:.5rem;overflow:hidden;box-shadow:0 1px 3px rgba(32,33,36,.08)}
.mserp__fiche img{width:100%;height:3.1rem;object-fit:cover;object-position:center 40%}
.mserp__fcorps{padding:.4rem .5rem .5rem}
.mserp__fcorps > b{display:block;font-size:.74rem;font-weight:500;color:#202124;line-height:1.2}
.mserp__fnote{display:flex;align-items:center;gap:.15rem;margin-top:.1rem;font-size:.58rem;color:#70757A}
.mserp__fnote i{font-style:normal;color:#70757A}
.mserp__etoiles{display:inline-flex;gap:.02rem;color:#FBBC04}
.mserp__etoiles svg{width:.5rem;height:.5rem}
.mserp__etoiles svg.is-off{color:#DADCE0}
.mserp__fcat{display:block;font-size:.58rem;color:#70757A}
.mserp__fh{display:block;font-size:.58rem;color:#70757A}
.mserp__fh em{font-style:normal;color:#188038;font-weight:500}
.mserp__fact{display:flex;gap:.3rem;margin-top:.4rem}
/* le résultat suivant, coupé par le bas de l'écran : c'est ce qui fait « vraie capture » */
.mserp__suite{padding:.45rem .6rem 0}
.mserp__suite .mserp__site{margin-bottom:.12rem}
.mserp__fact span{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:.18rem;font-size:.5rem;color:#5F6368;text-align:center}
.mserp__fact i{width:1.5rem;height:1.5rem;border-radius:50%;border:1px solid #DADCE0;color:#1A73E8;display:flex;align-items:center;justify-content:center}
.mserp__fact i svg{width:.68rem;height:.68rem}

/* les deux volets portent désormais un téléphone : même socle, même coupe.
   La fenêtre est plus haute que l'ancienne (21rem) parce qu'une fiche Google
   complète — photo, note, horaires, boutons ronds — ne tient pas en dessous. */
.disp__col.is-google .disp__mock:has(.mock-phone){align-items:flex-end;padding-bottom:0}
.disp__mock:has(.mock-phone){height:27rem;padding-top:1rem;padding-bottom:0}

/* ---------- Le pack local de Google, dans le téléphone ----------
   La carte garde le tracé réel de la commune et les repères déjà calculés ;
   seules les couleurs changent, pour celles d'une tuile Google Maps. */
.gmap{position:relative;height:5rem;background:#F1EFEA;overflow:hidden}
.gmap svg{display:block;width:100%;height:100%}
/* la commune en limite administrative, pointillés rouges : le dessin de Google */
.gmap .mock-pack__terre{fill:rgba(234,67,53,.055);stroke:#EA4335;stroke-width:1.2;stroke-dasharray:3.5 2.5}
.gmap__routes path{fill:none;stroke:#fff;stroke-width:4.5;stroke-linecap:round}
.gmap__routes path:first-child{stroke:#FBE5A0;stroke-width:6}
.gmap .mock-pack__pin path{fill:#9AA0A6}
.gmap .mock-pack__pin circle{fill:#fff}
.gmap .mock-pack__pin.is-vous path{fill:#EA4335}
.gmap--vide{background:#E8EAED}
.gmap__lab{position:absolute;left:.4rem;top:.35rem;padding:.14rem .4rem;border-radius:.25rem;background:rgba(255,255,255,.94);box-shadow:0 1px 3px rgba(32,33,36,.2);font-size:.52rem;font-weight:500;color:#202124;max-width:calc(100% - .8rem);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gpack{border-top:1px solid #EBEBEB}
.gpack__ligne{display:grid;gap:.03rem;padding:.38rem .6rem;border-bottom:1px solid #EFEFF1}
.gpack__ligne b{font-size:.68rem;font-weight:500;color:#202124;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gpack__note{display:flex;align-items:center;gap:.15rem;font-size:.56rem;color:#70757A}
.gpack__note i{font-style:normal}
.gpack__h{font-size:.56rem;color:#70757A;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gpack__h em{font-style:normal;color:#188038;font-weight:500}
/* la vôtre est celle que Google a sélectionnée : liseré bleu, fond très pâle */
.gpack__ligne.is-vous{background:#F6F9FE;box-shadow:inset 3px 0 0 #1A73E8}

/* Dans un split, le téléphone est entier : son écran coupe la page comme un
   vrai écran de téléphone, et la barre d'appel collante tombe pile en bas. */
.split__media--mock .mock-phone{width:min(16.5rem,100%);height:30rem;margin-inline:auto;border-radius:2.2rem;padding-bottom:.45rem}
.split__media--mock .mock-phone__ecran{border-radius:1.85rem}

/* La fiche posée sur la photo du héros : même langage que la fiche dans le
   téléphone — gris Google, étoiles ambre, « Ouvert » vert, boutons ronds. */
.hero-fiche__tete b{color:#202124}
.hero-fiche__note{gap:.3rem;color:#70757A}
.hero-fiche__note b{color:#202124;font-weight:500}
.hero-fiche .mserp__etoiles svg{width:.72rem;height:.72rem}
.hero-fiche__h{color:#70757A}
.hero-fiche__h em{font-style:normal;color:#188038;font-weight:500}
.hero-fiche .mserp__fact{gap:.45rem;margin-top:.3rem}
.hero-fiche .mserp__fact span{font-size:.7rem;gap:.3rem}
.hero-fiche .mserp__fact i{width:2.15rem;height:2.15rem}
.hero-fiche .mserp__fact i svg{width:.95rem;height:.95rem}

/* Articles (08/10/2026) : le texte occupe toute la colonne, comme les tableaux
   et les encadrés. Demande d'Alessio, maintenue après l'alerte sur la longueur
   des lignes (~115 signes à 1440 px, au lieu de ~76). Le reste du site garde
   sa mesure de lecture (--measure). */
.artbody .prose > p,.artbody .prose > ul,.artbody .prose > ol,.artbody .prose > h3,.artbody .prose > h4,
.artbody .prose > blockquote,.artbody .prose > figure figcaption,.artbody .prose-lead,
.artbody h2,.artbody .faq-body{max-width:none}

/* GEO (08/10/2026) : « Ce qu'il faut retenir » ouvre chaque article. C'est la
   note verte des articles, posée en tête, sans la marge du haut. Le texte des
   notes suit la pleine largeur des articles, comme les paragraphes. */
.artbody > .enbref{margin-top:0;margin-bottom:clamp(1.6rem,3vw,2.4rem);max-width:none}
.artbody .note p{max-width:none}
.artmeta .artmeta__qui{display:inline}
.artmeta .artmeta__qui a{text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}

/* ---------- Page de remerciement : les quatre étapes de la demande ----------
   Les cartes .guarantees--tete de la page Tarifs, numérotées par leur ordre :
   l'étape faite en rouge plein, celle en cours cerclée de rouge, les suivantes
   en gris. Échelle de rupture du site : 4 → 2 à 1100 px, 2 → 1 à 640 px. */
.guarantees--suivi{grid-template-columns:repeat(4,minmax(0,1fr));list-style:none;padding:0}
.guarantees--suivi .guar{align-items:flex-start}
.guarantees--suivi .guar > div{gap:.3rem}
.guar-quand{font-style:normal;font-size:.86rem;font-weight:600;color:var(--gris);margin-top:.35rem}
.guar.is-fait .guar-ico{background:var(--rouge);color:#fff}
.guar.is-fait .guar-quand,.guar.is-cours .guar-quand{color:var(--rouge-txt)}
.guar.is-cours{border-color:var(--saumon)}
.guar.is-cours .guar-ico{background:var(--rose-bg);color:var(--rouge);box-shadow:inset 0 0 0 1.5px var(--rouge)}
.guarantees--suivi .guar:not(.is-fait):not(.is-cours) .guar-ico{background:#F1F1F3;color:var(--gris)}
@media(max-width:1100px){ .guarantees--suivi{grid-template-columns:repeat(2,minmax(0,1fr))} }
@media(max-width:820px){ .guarantees--suivi{grid-template-columns:repeat(2,minmax(0,1fr));gap:.8rem} }
@media(max-width:640px){ .guarantees--suivi{grid-template-columns:minmax(0,1fr);gap:.6rem} }

/* ---------- Pages légales (11/10/2026) : gabarit des articles ----------
   Sous l'en-tête, le texte démarre tout de suite, comme la liste du blog
   (#articles) ; les fiches d'identité (éditeur, hébergeur) en deux colonnes,
   avec les filets du sommaire. */
main[data-legal] .pagehead + .sec-pad{padding-top:clamp(1.4rem,2.6vw,2.2rem)}
.artbody .prose dl{display:grid;grid-template-columns:minmax(0,13rem) minmax(0,1fr);margin:1.4rem 0 0;border-top:1px solid var(--border)}
.artbody .prose dt,.artbody .prose dd{margin:0;padding:.75rem 0;border-bottom:1px solid var(--border);line-height:1.5}
.artbody .prose dt{color:var(--gris);font-size:.95rem;padding-right:1.2rem}
.artbody .prose dd{color:var(--encre)}
@media(max-width:640px){
  .artbody .prose dl{grid-template-columns:minmax(0,1fr)}
  .artbody .prose dt{border-bottom:0;padding-bottom:0}
  .artbody .prose dd{padding-top:.2rem}
}

/* ---------- Page « liens » (16/10/2026) : la page de la bio Instagram ----------
   Une colonne de téléphone, centrée, sans menu ni pied. Les cartes viennent de
   la colonne des articles (.artside--v2) : on lui retire seulement ce qui tient
   à sa place dans un article (collée en haut, police réduite). */
body.liens-page{background:var(--off,#F6F6F4)}
.liens{min-height:100svh;display:flex;justify-content:center;padding:clamp(2rem,6vh,3.5rem) 16px clamp(2rem,5vh,3rem)}
.liens__in{width:min(100%,27rem);display:flex;flex-direction:column;align-items:stretch;gap:1.1rem}
.liens__logo{align-self:center;display:block;margin-bottom:.4rem}
.liens__logo img{display:block;height:2.1rem;width:auto}
.liens__titre{font-family:var(--display);font-size:clamp(1.45rem,5.6vw,1.75rem);font-weight:600;line-height:1.15;letter-spacing:-.03em;text-align:center;text-wrap:balance;color:var(--encre)}
.liens__lead{font-size:.98rem;line-height:1.55;color:var(--encre-2);text-align:center;text-wrap:balance;margin-top:-.3rem}
.liens .artside{position:static;font-size:1rem;gap:.8rem}
.liens .artside--v2 .side-srv{gap:.55rem}
.liens .artside--v2 .side-srv a{padding:.85rem .9rem;min-height:3.9rem}
.liens .artside--v2 .side-srv a b{font-size:.98rem}
.liens .artside--v2 .side-srv a span.side-srv__txt > span{font-size:.82rem}
.liens__appel{display:flex;flex-direction:column;gap:.45rem;align-items:stretch;text-align:center}
.liens__appel .btn{display:block}
.liens__appel .btn-inner{width:100%;justify-content:center;min-height:3.2rem}
.liens__appel .fnote{margin:0}
.liens__reseaux{justify-content:center;gap:.6rem;margin-top:.2rem}
.liens .foot-social__lien{display:inline-flex;align-items:center;justify-content:center;width:2.9rem;height:2.9rem;border-radius:50%;
  border:1px solid var(--border);background:var(--blanc);color:var(--encre);transition:.3s var(--ease)}
.liens .foot-social__lien:hover{background:var(--rouge);border-color:var(--rouge);color:#fff}
.liens .foot-social__lien svg{width:18px;height:18px}
.liens__pied{display:flex;justify-content:center;flex-wrap:wrap;gap:.3rem 1.1rem;font-size:.8rem;color:var(--gris);margin-top:.4rem}
.liens__pied a,.liens__pied .foot-cookies{color:var(--gris);opacity:1;font-size:inherit}
.liens__pied a:hover,.liens__pied .foot-cookies:hover{color:var(--encre)}
