@charset "UTF-8";
/* =====================================================================
   V6 — refonte « couleur & mouvement », version épurée · Climat Actif 66
   Couche posée au-dessus de v5.css (chargée après lui).
   Principes validés par Jules le 23/09 :
   - le sombre encadre la page (en-tête, contact, pied de page), le milieu
     reste clair ;
   - aucune trame décorative, aucune pastille pour des mots : du texte, des
     filets, des photos, des chiffres réels ;
   - le mouvement accompagne la lecture (apparitions, frise, compteurs),
     jamais de gadget.
   Tout ce qui bouge s'arrête avec prefers-reduced-motion (fin de fichier).
   ===================================================================== */
:root{
  --grad-v:linear-gradient(180deg,var(--turq),var(--cyan) 30%,var(--vio) 66%,var(--mag));
  --r-lg:2px;--r-md:2px;
  --card-shadow:0 1px 2px rgba(18,26,38,.04),0 20px 44px -32px rgba(18,26,38,.4);
  interpolate-size:allow-keywords;
}

/* ---- barre de progression de lecture ---------------------------------- */
.scroll-bar{position:fixed;left:0;top:0;z-index:95;width:100%;height:3px;pointer-events:none;
  background:var(--grad-n);transform-origin:left;transform:scaleX(var(--sp,0))}
body.admin-bar .scroll-bar{top:32px}
@media screen and (max-width:782px){body.admin-bar .scroll-bar{top:46px}}

/* =====================================================================
   FONDS — lavis de couleur doux sur le clair, aurore douce sur le sombre
   ===================================================================== */
.v4-sec:not(.v4-cta)::before{
  background:
    radial-gradient(640px 470px at 100% 0%,rgba(123,47,247,.10),transparent 68%),
    radial-gradient(580px 480px at 0% 100%,rgba(16,185,255,.08),transparent 66%)}
.v4-sec:nth-of-type(even):not(.v4-cta)::before{
  background:
    radial-gradient(640px 470px at 0% 0%,rgba(226,63,208,.07),transparent 68%),
    radial-gradient(580px 480px at 100% 100%,rgba(123,47,247,.10),transparent 66%)}

.m-hero.is-night::before,.v4-cta::before{content:"";position:absolute;inset:-25%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(28% 34% at 16% 26%,rgba(47,227,184,.13),transparent 70%),
    radial-gradient(32% 38% at 84% 18%,rgba(139,92,246,.26),transparent 70%),
    radial-gradient(34% 40% at 72% 88%,rgba(226,63,208,.12),transparent 70%);
  animation:aurora 30s ease-in-out infinite alternate;will-change:transform}
@keyframes aurora{
  0%{transform:translate3d(-2%,-1%,0) rotate(0deg) scale(1)}
  50%{transform:translate3d(3%,2%,0) rotate(5deg) scale(1.05)}
  100%{transform:translate3d(-1%,3%,0) rotate(-3deg) scale(1)}}
.v4-cta{overflow:clip;isolation:isolate}

/* =====================================================================
   TITRES — révélés mot à mot
   ===================================================================== */
.v4-h2{letter-spacing:-.055em}
.split .w{display:inline-block;overflow:hidden;vertical-align:top;padding:0 .07em .14em 0;margin:0 -.07em -.14em 0}
.split .w>span{display:inline-block;transform:translate3d(0,112%,0) rotate(5deg);transform-origin:0 100%;
  transition:transform 1s var(--ease);transition-delay:calc(var(--i,0) * 42ms + var(--d,0s))}
.split.in .w>span{transform:none}
.split em{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:inherit}
.split em .w>span{background:var(--grad);background-repeat:no-repeat;
  -webkit-background-clip:text;background-clip:text;color:transparent}
.v4-cta .split em .w>span,.m-hero.is-night .split em .w>span{background-image:var(--grad-n)}

/* =====================================================================
   BOUTONS — dégradé qui glisse et reflet au survol
   ===================================================================== */
.v4-btn-main,.v4-tel{position:relative;overflow:hidden;isolation:isolate}
.v4-btn-main{background:linear-gradient(100deg,var(--vio) 0%,var(--vio2) 42%,var(--mag) 100%);background-size:190% 100%;
  transition:transform .22s var(--ease),box-shadow .3s,background-position .7s var(--ease)}
.v4-btn-main::after,.v4-tel::after{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;
  background:linear-gradient(110deg,transparent 28%,rgba(255,255,255,.34) 50%,transparent 72%);
  transform:translateX(-135%);transition:transform .85s var(--ease)}
.v4-btn-main:hover{background-position:100% 0;box-shadow:0 22px 48px rgba(163,43,214,.36)}
.v4-btn-main:hover::after,.v4-tel:hover::after{transform:translateX(135%)}

/* =====================================================================
   PHOTOS — coins adoucis, dévoilement au défilement
   ===================================================================== */
.shot,.m-shot,.method-photo,.sol-media,.ba figure,.svc-visual,.landmark-shot,
.avis-lead .lead-photo{border-radius:2px}
.svc-visual{border:0;box-shadow:0 40px 80px -38px rgba(36,25,56,.45)}
.motion-ready .rv-img{clip-path:inset(10% 8% 10% 8% round var(--r-md));transition:clip-path 1.25s var(--ease)}
.motion-ready .rv-img img{transform:scale(1.14);transition:transform 1.7s var(--ease)}
.motion-ready .rv-img.in{clip-path:inset(0 0 0 0 round var(--r-md))}
.motion-ready .rv-img.in img{transform:none}

/* =====================================================================
   EN-TÊTE DES PAGES MÉTIER — sombre, sobre
   ===================================================================== */
.m-hero.is-night{position:relative;isolation:isolate;overflow:clip;color:#F6F3FF;background:var(--night);
  padding:calc(var(--head) + 26px) 0 clamp(44px,5vw,72px);border-bottom:0}
.m-hero.is-night .page-bc{padding-top:0;margin-bottom:clamp(22px,2.6vw,34px);color:#9B95AE}
.m-hero.is-night .page-bc a{border-color:var(--nline2)}
.m-hero.is-night .page-bc a:hover{color:#fff;border-color:var(--n-vio)}
.m-hero.is-night .v4-kicker{color:#B9AEDA}
.m-hero.is-night .v4-kicker::before{background:var(--grad-n)}
.m-hero.is-night h1{color:#fff;font-size:clamp(2.5rem,5.2vw,4.7rem);max-width:13ch}
.m-hero.is-night h1 em{background:var(--grad-n);-webkit-background-clip:text;background-clip:text;color:transparent}
.m-hero.is-night .lead{color:#D2CEDC}
.m-hero.is-night .lead strong{color:#fff}
.m-hero.is-night .v4-btn-ghost{color:#F6F3FF;border-color:var(--nline2);background:rgba(255,255,255,.04)}
.m-hero.is-night .v4-btn-ghost:hover{border-color:var(--n-vio);background:rgba(139,92,246,.14)}
/* repères : une ligne de texte sous un filet, les prix ressortent */
.m-hero.is-night .marks{border-top-color:var(--nline);color:#CFC9E0;gap:10px 30px;font-size:.8rem}
.m-hero.is-night .marks b{color:#fff}
.m-hero.is-night .marks .hot b{background:var(--grad-n);-webkit-background-clip:text;background-clip:text;color:transparent}
.m-hero.is-night .m-shot{border-radius:2px;background:var(--night2);
  box-shadow:0 0 0 1px rgba(202,184,255,.16),0 44px 90px -40px rgba(0,0,0,.85)}
.m-hero.is-night .m-shot img{height:clamp(320px,40vw,520px)}
.m-hero.is-night .sommaire{margin-top:8px;padding-top:22px;border-top:1px solid var(--nline)}
.m-hero.is-night .sommaire a{color:#CFC9E0;border-color:var(--nline2)}
.m-hero.is-night .sommaire a:hover{color:#fff;border-color:var(--n-vio)}
/* entrée progressive, comme le premier écran de l'accueil */
.m-hero.is-night .v4-kicker{animation:v4fade .8s var(--ease) backwards .05s}
.m-hero.is-night .lead{animation:v4fade .9s var(--ease) backwards .45s}
.m-hero.is-night .v4-actions{animation:v4fade .9s var(--ease) backwards .6s}
.m-hero.is-night .marks{animation:v4fade .9s var(--ease) backwards .75s}
.m-hero.is-night .sommaire{animation:v4fade .9s var(--ease) backwards .9s}
.m-visual{animation:mvIn 1.2s var(--ease) backwards .25s}
@keyframes mvIn{from{opacity:0;transform:translateY(30px)}}
.m-hero-grid>*{min-width:0}

/* =====================================================================
   ÉTAPES — frise qui se remplit, pastilles numérotées qui s'allument
   ===================================================================== */
.steps{--nd:56px;position:relative;border-top:0}
.steps::before,.steps::after{content:"";position:absolute;left:calc(var(--nd) / 2 - 1px);top:40px;bottom:40px;width:2px;border-radius:2px}
.steps::before{background:var(--line)}
.steps::after{background:var(--grad-v);transform-origin:top;transform:scaleY(var(--p,0));transition:transform .15s linear}
.steps li,#methode .steps li{grid-template-columns:var(--nd) 1fr;gap:4px 28px;padding:22px 0;border-bottom:0}
.steps .n{position:relative;z-index:1;grid-row:1/3;width:var(--nd);height:var(--nd);display:grid;place-items:center;padding:0;
  border-radius:2px;border:1.5px solid rgba(123,47,247,.28);background:var(--bg);
  -webkit-background-clip:border-box;background-clip:border-box;color:var(--vio2);font:700 .86rem var(--grot);letter-spacing:.04em;
  transition:background .5s var(--ease),color .5s,border-color .5s,box-shadow .5s}
.steps li.on .n{background:var(--grad);color:#fff;border-color:transparent;box-shadow:0 12px 26px -12px rgba(123,47,247,.6)}
.steps h3{padding-top:12px;font-size:clamp(1.2rem,1.9vw,1.6rem)}
.steps p{margin-top:4px}
.steps .step-tag{grid-column:2;margin-top:10px;font-size:.88rem;color:var(--text)}
.steps .step-tag b{color:var(--vio2)}

/* =====================================================================
   ACCUEIL — métiers, avis, chiffres clés, zones
   ===================================================================== */
.svc>summary{padding:26px 0}
.svc[open] h3{background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.svc[open]>summary .tog{background:var(--grad);border-color:transparent}
.svc>summary:hover .tog{border-color:var(--vio)}
.svc::details-content,.v4-faqlist details::details-content{block-size:0;overflow:hidden;
  transition:block-size .5s var(--ease),content-visibility .5s allow-discrete}
.svc[open]::details-content,.v4-faqlist details[open]::details-content{block-size:auto}

.avis-list:not(.avis-more) figure{padding:14px 14px 20px;border-radius:2px;border:1px solid var(--line);
  background:#fff;box-shadow:var(--card-shadow);transition:transform .4s var(--ease),box-shadow .4s}
.avis-list:not(.avis-more) figure:hover{transform:translateY(-4px);box-shadow:0 30px 60px -36px rgba(36,25,56,.45)}
.avis-list:not(.avis-more) .avis-photo{border-radius:2px}
.avis-list:not(.avis-more) .who,.avis-list:not(.avis-more) .stars,.avis-list:not(.avis-more) p{padding-inline:4px}

/* chiffres clés : une rangée séparée par des filets, pas de cartes */
.stats{grid-column:1/-1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  margin-top:clamp(44px,5vw,72px);border-top:1px solid var(--line2)}
.stat{padding:26px 26px 0 0}
.stat+.stat{padding-left:26px;border-left:1px solid var(--line2)}
.stat b{display:block;font:700 clamp(2.8rem,5vw,4.4rem)/1 var(--grot);letter-spacing:-.05em;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.stat span{display:block;margin-top:12px;font-size:.84rem;line-height:1.6;color:var(--muted);max-width:26ch}

.zones-strip{position:relative;padding:clamp(48px,5.4vw,76px) 0;border-top:1px solid var(--line)}
.zones-strip-l{max-width:96ch;font-size:.95rem;line-height:2;color:var(--muted)}
.zones-strip-l a{color:var(--text);font-weight:500;border-bottom:1px solid var(--line2);transition:color .25s,border-color .25s}
.zones-strip-l a:hover{color:var(--vio2);border-color:var(--vio)}
.zones-strip .text-link{margin-top:22px}

/* =====================================================================
   FAQ — questions posées sur des cartes blanches, ouverture en douceur
   ===================================================================== */
.v4-faqlist details,.v4-faqlist details:first-child{margin-bottom:10px;padding:0 22px;border:1px solid var(--line);
  border-radius:2px;background:rgba(255,255,255,.7);transition:border-color .3s,box-shadow .3s,background .3s}
.v4-faqlist details:hover{border-color:rgba(123,47,247,.32)}
.v4-faqlist details[open]{background:#fff;border-color:rgba(123,47,247,.38);box-shadow:var(--card-shadow)}

/* =====================================================================
   BANDEAU DE RELANCE (pages métier) — plein dégradé de marque
   ===================================================================== */
.cta-band{position:relative;overflow:hidden;isolation:isolate;border:0;color:#fff;
  background:linear-gradient(115deg,#4C1CC0,var(--vio) 34%,#A62BD4 68%,var(--mag));background-size:200% 200%;
  animation:bandshift 14s ease-in-out infinite alternate;box-shadow:0 34px 64px -36px rgba(123,47,247,.7)}
@keyframes bandshift{to{background-position:100% 50%}}
.cta-band h2,.cta-band h2 em{color:#fff}
.cta-band p:last-child{color:rgba(255,255,255,.86)}
.cta-band .v4-kicker{color:rgba(255,255,255,.8)}
.cta-band .v4-kicker::before{background:#fff}
.cta-band .v4-btn-main{background:#fff;color:var(--vio2);box-shadow:0 16px 34px -12px rgba(20,8,50,.5)}
.cta-band .v4-btn-main::after{background:linear-gradient(110deg,transparent 28%,rgba(123,47,247,.18) 50%,transparent 72%)}
.cta-band .v4-btn-ghost{color:#fff;border-color:rgba(255,255,255,.5);background:rgba(255,255,255,.08)}
.cta-band .v4-btn-ghost:hover{background:rgba(255,255,255,.18);border-color:#fff}

/* =====================================================================
   INSTALLATION — marques, facteurs de prix, paiement
   ===================================================================== */
.brand-cards{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,28px)}
.brand-card{display:flex;flex-direction:column;padding:clamp(24px,2.6vw,34px);border-radius:2px;
  border:1px solid var(--line);background:#fff;box-shadow:var(--card-shadow);transition:border-color .4s}
.brand-card:hover{border-color:rgba(123,47,247,.3)}
.brand-logo{display:flex;align-items:center;height:78px;padding:0 4px;margin-bottom:24px;border-bottom:1px solid var(--line)}
.brand-logo img{max-height:52px;max-width:230px;width:auto;height:auto;object-fit:contain;padding-bottom:22px;box-sizing:content-box}
.brand-card .typ{display:block;margin-bottom:8px;font:600 .58rem var(--grot);letter-spacing:.2em;text-transform:uppercase;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.brand-card h3{font:700 clamp(1.4rem,2.2vw,1.9rem) var(--grot);letter-spacing:-.035em}
.brand-card p{margin-top:12px;color:var(--muted);font-size:.88rem;line-height:1.8}
.brand-card .text-link{margin-top:auto;padding-top:18px;align-self:flex-start}

/* facteurs : trois colonnes éditoriales sous filet, pas de cartes */
.factors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:34px clamp(24px,3vw,48px)}
.factor{padding-top:20px;border-top:1px solid var(--line2)}
.factor-n{display:block;font:700 1.9rem/1 var(--grot);letter-spacing:-.04em;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.factor h3{margin-top:14px;font:700 1.04rem/1.35 var(--grot);letter-spacing:-.015em;color:var(--text)}
.factor p{margin-top:8px;font-size:.86rem;line-height:1.75;color:var(--muted)}
.pay-card{display:grid;grid-template-columns:1fr auto;gap:clamp(20px,3vw,40px);align-items:center;
  margin-top:clamp(38px,4.4vw,58px);padding:clamp(24px,3vw,34px);border-radius:2px;
  border:1px solid var(--line);background:#fff;box-shadow:var(--card-shadow)}
.pay-card h3{font:700 clamp(1.25rem,2vw,1.6rem) var(--grot);letter-spacing:-.03em}
.pay-card p{margin-top:8px;font-size:.88rem;line-height:1.75;color:var(--muted);max-width:66ch}
.pay-card .v4-actions{margin:0}

/* =====================================================================
   ENTRETIEN — comparatif Ponctuel / Essentiel / Premium
   Mobile d'abord : trois cartes empilées, Premium en tête. Sur grand
   écran, une grille dont les lignes s'alignent d'une carte à l'autre.
   ===================================================================== */
.plans{display:flex;flex-direction:column;gap:22px}
.plans-labels{display:none}
.plan{position:relative;padding:0 22px;border-radius:2px;border:1px solid var(--line);
  background:#fff;box-shadow:var(--card-shadow)}
.plan ul{list-style:none}
.plan li{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:13px 0;
  border-bottom:1px solid var(--line);font-size:.84rem;line-height:1.45;color:var(--muted)}
.plan .lbl{flex:1;font:600 .82rem/1.4 var(--grot);color:var(--text)}
.plan .val{display:inline-flex;align-items:center;gap:8px;text-align:right}
.pl-head{padding:28px 0 20px;text-align:center}
.pl-head h3{font:700 1.35rem var(--grot);letter-spacing:-.03em}
.pl-price{margin-top:10px;font:700 2.3rem/1 var(--grot);letter-spacing:-.045em;color:var(--text)}
.pl-price small{font:500 .78rem var(--sans);letter-spacing:0;color:var(--muted)}
.pl-price.txt{font:600 1.02rem/2.25 var(--grot);letter-spacing:-.01em;color:var(--muted)}
.pl-desc{margin:10px auto 0;max-width:26ch;font-size:.8rem;line-height:1.55;color:var(--muted)}
.pl-foot{display:flex;justify-content:center;align-items:flex-end;padding:22px 0 26px}
.pl-foot .v4-btn{width:100%;min-height:50px;padding:14px 18px;font-size:.82rem}
.ok,.star{display:inline-grid;place-items:center;width:20px;height:20px;flex:none;border-radius:2px;
  background:var(--grad);color:#fff;font:700 .64rem/1 var(--sans)}
.ok::before{content:"\2713"}
.star::before{content:"\2605";font-size:.66rem}
.val.no{color:var(--line2);font-weight:700}
.val.prio{font-weight:600;color:var(--vio2)}
.plan--premium{order:-1;margin-top:14px;border:1px solid transparent;color:#F6F3FF;
  background:linear-gradient(160deg,#1B1438,var(--night) 58%) padding-box,var(--grad-n) border-box;
  box-shadow:0 40px 80px -36px rgba(99,32,216,.7)}
.plan--premium::before{content:"";position:absolute;inset:0;z-index:-1;border-radius:inherit;pointer-events:none;
  background:radial-gradient(110% 46% at 50% 0%,rgba(139,92,246,.35),transparent 62%)}
.plan--premium li{border-color:var(--nline);color:#DCD6EA}
.plan--premium .lbl,.plan--premium h3{color:#fff}
.plan--premium .pl-price{background:var(--grad-n);-webkit-background-clip:text;background-clip:text;color:transparent}
.plan--premium .pl-price small{-webkit-text-fill-color:#B9AEDA;color:#B9AEDA}
.plan--premium .pl-desc{color:#CFC9E0}
.plan--premium .ok,.plan--premium .star{background:var(--grad-n)}
.plan--premium .val.prio{color:#fff}
.plan--premium .val.no{color:var(--nline2)}
.pl-badge{position:absolute;top:-14px;left:50%;transform:translateX(-50%);z-index:2;padding:6px 14px;border-radius:2px;
  background:var(--grad-n);color:#fff;font:700 .6rem var(--grot);letter-spacing:.16em;text-transform:uppercase;white-space:nowrap}
.plans-note{margin-top:22px}

@media (min-width:981px){
  @supports (grid-template-rows:subgrid){
    .plans{display:grid;grid-template-columns:minmax(210px,1.1fr) repeat(3,minmax(0,1fr));
      grid-template-rows:repeat(11,auto);column-gap:16px;align-items:stretch;padding-top:18px}
    .plans-labels,.plan{display:grid;grid-template-rows:subgrid;grid-row:1/-1}
    .plans-labels>div{display:flex;align-items:center;padding:13px 4px;border-bottom:1px solid var(--line);
      font:600 .84rem/1.4 var(--grot);color:var(--text)}
    .plans-labels>.pl-head,.plans-labels>.pl-foot{border-bottom:0}
    .plan ul{display:contents}
    .plan li,.plan .val{justify-content:center;text-align:center}
    .plan .lbl{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
    /* surélevé sans décaler ses lignes : marge négative compensée par le padding */
    .plan--premium{order:0;margin-block:-20px;padding-block:20px}
  }
}

/* =====================================================================
   ENTRETIEN — simulateur, version claire
   ===================================================================== */
.sim{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.8fr);gap:clamp(22px,3vw,40px);align-items:start}
.sim-form{display:grid;gap:12px;min-width:0}
.sim-q{min-width:0;margin:0;padding:20px 22px 22px;border:1px solid var(--line);border-radius:2px;
  background:#fff;box-shadow:var(--card-shadow)}
.sim-q legend{float:left;width:100%;padding:0;margin-bottom:14px}
.sim-q legend+*{clear:both}
.sim-l{display:flex;align-items:baseline;gap:12px;font:700 1rem var(--grot);letter-spacing:-.01em;color:var(--text)}
.sim-n{font:700 .82rem var(--grot);color:var(--vio2)}
.sim-opts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}
.sim-opts.four{grid-template-columns:repeat(4,minmax(0,1fr))}
.sim-opts.two{grid-template-columns:1fr 1fr}
.opt{position:relative;display:block;cursor:pointer}
.opt input{position:absolute;inset:0;width:100%;height:100%;margin:0;opacity:0;cursor:pointer}
.opt>span{display:flex;flex-direction:column;gap:3px;height:100%;padding:13px 14px;border-radius:2px;
  border:1px solid var(--line2);background:#fff;color:var(--text);transition:border-color .25s,background .25s,box-shadow .25s}
.opt svg{align-self:flex-start;height:16px;width:auto;margin-bottom:7px;color:var(--muted);overflow:visible}
.opt b{font:700 .9rem var(--grot)}
.opt small{font-size:.72rem;line-height:1.4;color:var(--muted)}
.opt:hover>span{border-color:rgba(123,47,247,.45)}
.opt input:checked+span{border-color:var(--vio);background:var(--lav);box-shadow:inset 0 0 0 1px var(--vio)}
.opt input:checked+span b,.opt input:checked+span svg{color:var(--vio2)}
.opt input:focus-visible+span{outline:2px solid var(--vio2);outline-offset:3px}
.sim-pair{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.stepper{display:flex;align-items:center;gap:16px}
.stepper button{width:42px;height:42px;flex:none;border-radius:2px;border:1px solid var(--line2);background:#fff;
  font:600 1.25rem/1 var(--grot);color:var(--vio2);transition:border-color .25s,background .25s}
.stepper button:hover:not(:disabled){border-color:var(--vio);background:var(--lav)}
.stepper button:disabled{opacity:.35;cursor:not-allowed}
.stepper output{min-width:1.6ch;text-align:center;font:700 1.9rem/1 var(--grot);letter-spacing:-.04em;color:var(--text)}
.sim-help{margin-top:12px;font-size:.76rem;line-height:1.55;color:var(--muted)}

.sim-result{position:sticky;top:calc(var(--head) + 22px);overflow:hidden;padding:30px 26px 26px;
  border-radius:2px;border:1px solid var(--line);background:#fff;box-shadow:0 30px 64px -38px rgba(36,25,56,.5)}
.sim-result::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--grad)}
.sim-k{font:600 .6rem var(--grot);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.sim-price{display:block;margin-top:10px;font:700 clamp(2.6rem,4.4vw,3.6rem)/1 var(--grot);letter-spacing:-.05em;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent;font-variant-numeric:tabular-nums}
.sim-price small{font-size:.38em;letter-spacing:0;-webkit-text-fill-color:var(--muted);color:var(--muted)}
.sim-lines{list-style:none;margin-top:20px;border-top:1px solid var(--line)}
.sim-lines li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:11px 0;
  border-bottom:1px solid var(--line);font-size:.82rem;line-height:1.45;color:var(--muted)}
.sim-lines li b{flex:none;font-family:var(--grot);color:var(--text);white-space:nowrap}
.sim-ttc,.sim-fnote{margin-top:12px;font-size:.76rem;line-height:1.6;color:var(--muted)}
.sim-fnote{padding:10px 12px;border-radius:2px;background:var(--lav);color:var(--ink)}
.sim-result .v4-actions{margin-top:20px}
.sim-result .v4-btn{width:100%}
.sim-note{margin-top:14px;font-size:.7rem;line-height:1.6;color:var(--muted)}
.sim-mini{display:none}
#simulateur .why-grid{margin-top:clamp(40px,4.6vw,64px)}

/* =====================================================================
   DÉPANNAGE — symptômes, formules en deux cartes
   ===================================================================== */
.syms{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.sym{padding:24px;border-radius:2px;border:1px solid var(--line);background:#fff;box-shadow:var(--card-shadow);
  transition:border-color .35s,transform .35s var(--ease)}
.sym:hover{border-color:rgba(123,47,247,.34);transform:translateY(-3px)}
.sym-ic{display:block;color:var(--vio2)}
.sym-ic svg{width:28px;height:28px}
.sym h3{margin-top:16px;font:700 1.08rem/1.3 var(--grot);letter-spacing:-.02em}
.sym p{margin-top:8px;color:var(--muted);font-size:.86rem;line-height:1.75}

.dplans{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,2.4vw,28px);align-items:stretch;padding-top:16px}
.dplan{position:relative;display:flex;flex-direction:column;padding:clamp(26px,2.8vw,36px);border-radius:2px;
  border:1px solid var(--line);background:#fff;box-shadow:var(--card-shadow)}
.dplan .typ{font:600 .6rem var(--grot);letter-spacing:.18em;text-transform:uppercase;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.dplan h3{margin-top:12px;font:700 clamp(1.35rem,2.2vw,1.85rem)/1.15 var(--grot);letter-spacing:-.035em}
.dplan p{margin-top:12px;color:var(--muted);font-size:.88rem;line-height:1.8}
.dplan .who-for{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);font-size:.8rem;color:var(--ink)}
.dplan .who-for+.v4-btn{margin-top:22px;align-self:flex-start}
.dplan--premium{border-color:transparent;color:#F6F3FF;
  background:linear-gradient(160deg,#1B1438,var(--night) 60%) padding-box,var(--grad-n) border-box;
  box-shadow:0 40px 80px -36px rgba(99,32,216,.7)}
.dplan--premium .typ{background-image:var(--grad-n)}
.dplan--premium h3,.dplan--premium b{color:#fff}
.dplan--premium p{color:#D2CEDC}
.dplan--premium .who-for{border-color:var(--nline);color:#CFC9E0}
.dplan .pl-badge{left:auto;right:26px;transform:none}

/* =====================================================================
   RESPONSIVE
   ===================================================================== */
@media(max-width:1100px){
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .stat:nth-child(odd){padding-left:0;border-left:0}
  .stat:nth-child(n+3){margin-top:8px}
  .sim{grid-template-columns:1fr}
  .sim-result{position:relative;top:auto}
  .sim-mini{position:sticky;bottom:12px;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:14px;
    margin:0 70px 0 0;padding:12px 18px;border-radius:2px;border:1px solid var(--line);background:#fff;
    box-shadow:0 18px 40px -16px rgba(18,26,38,.4);transition:opacity .3s,transform .3s var(--ease)}
  .sim-mini.off{opacity:0;transform:translateY(20px);pointer-events:none}
  .sim-mini span{font:600 .62rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
  .sim-mini b{font:700 1.25rem var(--grot);letter-spacing:-.03em;background:var(--grad);
    -webkit-background-clip:text;background-clip:text;color:transparent}
  .sim-mini a{font:600 .74rem var(--grot);color:var(--vio2);border-bottom:1px solid var(--vio)}
}
@media(max-width:900px){
  .syms,.factors{grid-template-columns:1fr 1fr}
  .brand-cards,.dplans{grid-template-columns:1fr}
  .pay-card{grid-template-columns:1fr}
}
@media(max-width:760px){
  .m-hero.is-night{padding-top:calc(var(--head) + 18px)}
  .m-hero.is-night h1{font-size:clamp(2.2rem,9vw,3.1rem)}
  .m-hero.is-night .m-shot img{height:280px}
  .steps{--nd:44px}
  .steps li,#methode .steps li{gap:4px 16px;padding:18px 0}
  .steps h3{padding-top:8px}
  .stat{padding-right:14px}
  .stat+.stat{padding-left:14px}
  .stat:nth-child(odd){padding-left:0}
  .stat span{font-size:.78rem}
  .sim-opts,.sim-opts.four{grid-template-columns:1fr 1fr}
  .sim-pair{grid-template-columns:1fr}
  .sim-q{padding:18px 16px}
  .v4-faqlist details,.v4-faqlist details:first-child{padding:0 16px}
  .zones-strip-l{font-size:.9rem}
}
@media(max-width:560px){
  .syms,.factors{grid-template-columns:1fr}
  .sym,.factor{display:grid;grid-template-columns:auto 1fr;gap:4px 16px;align-items:start}
  .sym{padding:18px}
  .sym-ic{grid-row:1/3;padding-top:2px}
  .factor-n{grid-row:1/3;font-size:1.6rem;min-width:1.6em}
  .sym h3,.factor h3{margin-top:2px}
  .sym p,.factor p{margin-top:2px}
  .stat b{font-size:2.5rem}
  .dplan .pl-badge{right:18px}
}

/* =====================================================================
   MOUVEMENT RÉDUIT — tout s'affiche, rien ne bouge
   ===================================================================== */
@media(prefers-reduced-motion:reduce){
  .m-hero.is-night::before,.v4-cta::before,.cta-band,.m-visual,
  .m-hero.is-night .v4-kicker,.m-hero.is-night .lead,.m-hero.is-night .v4-actions,
  .m-hero.is-night .marks,.m-hero.is-night .sommaire{animation:none}
  .split .w>span{transform:none;transition:none}
  .motion-ready .rv-img,.motion-ready .rv-img img{clip-path:none;transform:none;transition:none}
  .steps::after{transform:scaleY(1)}
  .avis-list:not(.avis-more) figure:hover,.sym:hover{transform:none}
}

/* =====================================================================
   ZONES D'INTERVENTION — carte, communes par secteur, frais en tableau
   ===================================================================== */
.map-frame{margin:0;overflow:hidden;border-radius:2px;background:var(--night2);
  box-shadow:0 0 0 1px rgba(202,184,255,.16),0 44px 90px -40px rgba(0,0,0,.85)}
.map-frame iframe{display:block;width:100%;height:clamp(320px,38vw,480px);border:0;filter:saturate(.8)}
.map-frame figcaption{padding:12px 18px;font-size:.76rem;color:#CFC9E0}
.map-frame figcaption a{color:#fff;border-bottom:1px solid var(--nline2);transition:border-color .25s}
.map-frame figcaption a:hover{border-color:var(--n-cyan)}

.zlist{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:36px clamp(24px,3vw,44px);align-items:start}
.zgroup h3{padding-top:18px;border-top:2px solid transparent;border-image:var(--grad) 1;
  font:700 1.05rem var(--grot);letter-spacing:-.015em}
.zgroup ul{list-style:none;margin-top:10px}
.zgroup li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:10px 0;border-bottom:1px solid var(--line)}
.zgroup .zc{font-weight:600;font-size:.92rem;color:var(--text);transition:color .25s}
.zgroup .zc:hover{color:var(--vio2)}
.zgroup .zl{flex:none;font-size:.76rem;color:var(--muted);border-bottom:1px solid var(--line2);transition:color .25s,border-color .25s}
.zgroup .zl:hover{color:var(--vio2);border-color:var(--vio)}

.dep-wrap{overflow-x:auto;border:1px solid var(--line);border-radius:2px;background:#fff;box-shadow:var(--card-shadow)}
.dep-table{width:100%;border-collapse:collapse;font-size:.92rem}
.dep-table th,.dep-table td{padding:17px 24px;text-align:left;border-bottom:1px solid var(--line)}
.dep-table tbody tr:last-child th,.dep-table tbody tr:last-child td{border-bottom:0}
.dep-table thead th{font:600 .62rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);background:var(--bg)}
.dep-table tbody th{font:600 .92rem var(--grot);color:var(--text)}
.dep-table td{font-family:var(--grot);font-weight:600;color:var(--text)}
.dep-table td:last-child,.dep-table thead th:last-child{background:rgba(123,47,247,.05)}
.dep-table td.inc{color:var(--vio2)}
.dep-notes{display:grid;grid-template-columns:1fr 1fr;gap:18px clamp(24px,3vw,48px);margin-top:26px}
.dep-notes p{font-size:.88rem;line-height:1.8;color:var(--muted)}
.dep-notes a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}

/* =====================================================================
   CONTACT — coordonnées d'un côté, formulaire InterFast de l'autre
   ===================================================================== */
.contact-hero{padding-bottom:clamp(40px,4.4vw,64px)}
.contact-hero h1{max-width:none}
.contact-hero .lead{max-width:60ch}
.contact-sec{padding-top:clamp(48px,5.4vw,80px)}
.contact-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.1fr);gap:clamp(30px,4.4vw,72px);align-items:start}
.ci-block{padding:24px 0;border-top:1px solid var(--line2)}
.ci-block:first-child{padding-top:0;border-top:0}
.ci-k{font:600 .62rem var(--grot);letter-spacing:.2em;text-transform:uppercase;color:var(--muted)}
.ci-phone{display:inline-block;margin-top:8px;font:700 clamp(2rem,3.4vw,2.8rem)/1.1 var(--grot);letter-spacing:-.035em;
  background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.ci-mail{display:inline-block;margin-top:8px;font:600 1.1rem var(--grot);color:var(--text);
  border-bottom:1px solid var(--line2);transition:color .25s,border-color .25s}
.ci-mail:hover{color:var(--vio2);border-color:var(--vio)}
.ci-block>p:not(.ci-k){margin-top:10px;max-width:48ch;font-size:.88rem;line-height:1.75;color:var(--muted)}
.ci-block>p a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.ci-steps{margin-top:12px;list-style:none;counter-reset:ci}
.ci-steps li{counter-increment:ci;position:relative;padding:7px 0 7px 36px;font-size:.88rem;line-height:1.65;color:var(--muted)}
.ci-steps li::before{content:counter(ci);position:absolute;left:0;top:8px;width:24px;height:24px;border-radius:2px;
  display:grid;place-items:center;font:700 .7rem var(--grot);color:#fff;background:var(--grad)}
.contact-form{position:relative;overflow:hidden;border:1px solid var(--line);border-radius:2px;background:#fff;
  box-shadow:0 34px 70px -40px rgba(36,25,56,.55)}
.contact-form::before{content:"";position:absolute;left:0;right:0;top:0;height:4px;background:var(--grad)}
/* la page InterFast a toujours une barre de défilement : on la rejette hors du cadre, le défilement reste possible */
.contact-form iframe{display:block;width:calc(100% + 18px);max-width:none;height:1060px;border:0}
.cf-note{padding:14px 26px 18px;border-top:1px solid var(--line);font-size:.76rem;line-height:1.6;color:var(--muted)}
.cf-note a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}

@media(max-width:1100px){
  .zlist{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:900px){
  .contact-grid{grid-template-columns:1fr}
  .dep-notes{grid-template-columns:1fr}
}
@media(max-width:560px){
  .zlist{grid-template-columns:1fr}
  .dep-table th,.dep-table td{padding:13px 10px;font-size:.8rem}
  .dep-table th:first-child,.dep-table td:first-child{padding-left:14px}
  .dep-table thead th{font-size:.52rem;letter-spacing:.1em}
  .dep-table tbody th{font-size:.8rem}
  .contact-form iframe{height:1180px}
}

/* =====================================================================
   GÉOMÉTRIE — rectangle par défaut (sérieux), arrondi réservé à ce qui
   doit sortir du lot : l'action principale, l'offre mise en avant, le
   prix calculé. Le contraste carré / rond guide l'œil.
   ===================================================================== */
/* boutons d'action : tous en pilule, principal comme secondaire, pour qu'une paire reste homogène */
.v4-btn,.v4-tel{border-radius:999px}
.help-open{border-radius:50%}
.pl-badge{border-radius:999px}
.plan--premium,.dplan--premium,.sim-result,.cta-band{border-radius:20px}
.sim-result::before{border-radius:20px 20px 0 0}

/* =====================================================================
   SÉPARATEURS — l'espace sépare, pas le trait.
   On ne garde une ligne que si elle aide à lire : rangées des tableaux
   (comparatif, frais, détail du prix), frise des étapes, soulignement
   des liens d'action. Tout le reste disparaît.
   ===================================================================== */
/* étiquettes et paragraphes d'accompagnement : plus de filet décoratif */
.v4-kicker::before,.sec-head>p::before,.faq-group-t::before{content:none}
.v4-kicker{gap:0;color:var(--vio2)}
.m-hero.is-night .v4-kicker,.v4-cta .v4-kicker{color:#C9B8FF}
.sec-head>p{padding-left:0}
.faq-group-t{padding-top:0}

/* en-têtes de page */
.page-bc a,.m-hero.is-night .page-bc a{border-bottom:0}
.page-bc a:hover{color:var(--vio2)}
.m-hero.is-night .page-bc a:hover{color:#fff}
.m-hero,.page-hero{border-bottom:0}
.marks,.m-hero.is-night .marks{border-top:0;padding-top:0;margin-top:28px}
.m-hero.is-night .sommaire{border-top:0;margin-top:14px;padding-top:6px}
.sommaire a,.m-hero.is-night .sommaire a{border-bottom:0;padding-bottom:0}

/* sections : plus de filet entre elles */
.v4-avis,.v4-faq,.zones-strip{border-top:0}

/* listes et blocs de texte : rythme par l'espacement */
.svc-list{border-top:0}
.svc{border-bottom:0}
.svc>summary{padding:18px 0}
.why{border-top:0}
.why li{border-bottom:0;padding:12px 0}
.brands,.services-3{border-top:0;padding-top:0}
.sol,.sol:last-of-type{border-top:0;border-bottom:0}
.sol .who-for,.dplan .who-for{border-top:0;padding-top:0}
.factor{border-top:0;padding-top:0}
.stats{border-top:0}
.stat,.stat+.stat{border-left:0;padding-left:0}
.ci-block{border-top:0;padding:0 0 30px}
.brand-logo{border-bottom:0;margin-bottom:14px}
.zgroup h3{border-top:0;padding-top:0}
.zgroup li{border-bottom:0;padding:7px 0}
.zgroup .zl,.zones-strip-l a,.svc-links .alt{border-bottom:0}
.zones-strip-l a{color:var(--vio2)}
.avis-list figure{border-top:0}
.avis-list:not(.avis-more) .who{border-top:0}
.v4-faqlist details,.v4-faqlist details:first-child{border-bottom:0}

/* cartes blanches : le fond et l'ombre suffisent, plus de contour */
.avis-list:not(.avis-more) figure,.brand-card,.pay-card,.plan,.sim-q,.sim-result,.sym,.dplan,
.dep-wrap,.contact-form,.v4-faqlist details,.v4-faqlist details:first-child,.sim-mini{border-color:transparent}
.v4-faqlist details[open],.v4-faqlist details:hover,.brand-card:hover,.sym:hover{border-color:transparent}
.cf-note{border-top:0}

/* pied de page */
.v4-cols,.v4-legal{border-top:0}
.sim-result::before,.contact-form::before{content:none}
.projects{border-top:0;border-bottom:0}



/* =====================================================================
   ACCUEIL — premier écran « photo d'abord »
   Une vraie photo, lumineuse : le voile sombre ne couvre plus que la zone
   du texte. À l'arrivée, la photo fait sa mise au point. Aucun effet au
   défilement (retiré à la demande de Jules le 25/09 : le premier écran
   ne doit pas retenir la page).
   La photo elle-même reste celle de v5.css (.hero-image).
   ===================================================================== */
.hero .hero-image{animation:heroFocus 1.9s var(--ease) both}
@keyframes heroFocus{from{scale:1.14;filter:blur(16px) brightness(.45)}}
.hero::before{background:
  linear-gradient(90deg,rgba(11,21,25,.80) 0%,rgba(11,21,25,.52) 34%,rgba(11,21,25,0) 60%),
  linear-gradient(0deg,rgba(15,23,26,.55) 0%,rgba(15,23,26,0) 32%),
  linear-gradient(180deg,rgba(15,23,26,.5) 0%,rgba(15,23,26,0) 20%)}
@media(max-width:1000px){
  .hero::before{background:
    linear-gradient(90deg,rgba(11,21,25,.84) 0%,rgba(11,21,25,.45) 62%,rgba(11,21,25,.12) 100%),
    linear-gradient(0deg,rgba(15,23,26,.6) 0%,rgba(15,23,26,0) 40%)}
}
@media(max-width:760px){
  .hero::before{background:linear-gradient(0deg,rgba(15,23,26,.9) 10%,rgba(15,23,26,.6) 52%,rgba(15,23,26,.3) 78%,rgba(15,23,26,.5) 100%)}
}
@media(prefers-reduced-motion:reduce){
  .hero .hero-image{animation:none}
}

/* accueil : lien vers la galerie complète */
.gal-more{margin-top:clamp(26px,3vw,38px)}

/* accueil : zones d'intervention — titre à gauche, communes en colonnes */
.zones-grid{display:grid;grid-template-columns:minmax(0,.8fr) minmax(0,1.4fr);gap:clamp(30px,5vw,80px);align-items:start}
.zones-t{font:700 clamp(1.7rem,3vw,2.5rem)/1.1 var(--grot);letter-spacing:-.04em;color:var(--text)}
.zones-head>p:not(.v4-kicker){margin-top:14px;max-width:40ch;font-size:.9rem;line-height:1.75;color:var(--muted)}
.zones-head .text-link{margin-top:22px}
.zones-list{list-style:none;columns:3;column-gap:clamp(20px,3vw,40px);padding-top:6px}
.zones-list li{break-inside:avoid;padding:6px 0}
.zones-list a{font-size:.92rem;color:var(--text);transition:color .25s}
.zones-list a:hover{color:var(--vio2)}
@media(max-width:900px){.zones-grid{grid-template-columns:1fr}.zones-list{columns:2}}

/* =====================================================================
   COULEUR DES COMMANDES — violet uni, jamais de dégradé multicolore en
   remplissage (« ça a l'air bug et trop flashy »). Le dégradé de marque
   reste réservé à l'italique des titres.
   ===================================================================== */
.v4-btn-main,.v4-tel{background:var(--vio2);background-size:auto;box-shadow:0 12px 28px -12px rgba(99,32,216,.55)}
.v4-btn-main:hover,.v4-tel:hover{background:#5217BE;background-position:0 0;box-shadow:0 16px 34px -12px rgba(99,32,216,.6)}
.v4-btn-main::after,.v4-tel::after{content:none}
.cta-band .v4-btn-main{background:#fff;color:var(--vio2)}
.cta-band .v4-btn-main:hover{background:#F1EAFF}
.svc[open]>summary .tog{background:var(--vio2);border-color:var(--vio2);color:#fff;box-shadow:none}
.steps li.on .n{background:var(--vio2);box-shadow:none}
.ok,.star,.plan--premium .ok,.plan--premium .star{background:var(--vio2)}
.plan--premium .ok,.plan--premium .star{background:var(--n-vio)}
.ci-steps li::before{background:var(--vio2)}
.pl-badge{background:var(--n-vio);box-shadow:none}
.help-open{background:var(--vio2)}
.cta-band{background:var(--vio2);animation:none}

/* accueil : zones par secteur */
.zones-top{display:flex;justify-content:space-between;align-items:flex-end;gap:40px;margin-bottom:clamp(30px,3.6vw,48px)}
.zones-t em{font-family:var(--serif);font-style:italic;font-weight:400;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.zones-aside{max-width:44ch}
.zones-aside p{font-size:.9rem;line-height:1.75;color:var(--muted)}
.zones-aside .text-link{margin-top:14px}
.zones-cols{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(18px,2vw,28px)}
.zcol{padding:22px 24px 18px;background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.zcol h3{margin-bottom:10px;font:600 .62rem var(--grot);letter-spacing:.18em;text-transform:uppercase;color:var(--vio2)}
.zcol ul{list-style:none}
.zcol li{padding:5px 0}
.zcol a{display:inline-flex;align-items:baseline;gap:8px;font-size:.92rem;color:var(--text);transition:color .25s}
.zcol a::after{content:"\002192";font-size:.8em;color:var(--vio2);opacity:0;translate:-4px 0;transition:opacity .25s,translate .25s var(--ease)}
.zcol a:hover{color:var(--vio2)}
.zcol a:hover::after{opacity:1;translate:0 0}
.zcol small{font-size:.74em;color:var(--muted)}
@media(max-width:1000px){.zones-cols{grid-template-columns:repeat(2,minmax(0,1fr))}.zones-top{display:block}.zones-aside{margin-top:14px}}
@media(max-width:560px){.zones-cols{grid-template-columns:1fr}}
/* derniers dégradés de remplissage → violet uni */
.nav-anchors a::after{background:var(--n-vio)}
body.past-hero .v4-head .nav-anchors a::after{background:var(--vio)}
body.past-hero.on-dark .v4-head .nav-anchors a::after{background:var(--n-vio)}
.gtab.is-active{background:var(--vio2);box-shadow:none}
#solutions .sol::after{background:var(--vio2)}
.steps::after{background:var(--vio2)}
.plan--premium,.dplan--premium{background:linear-gradient(160deg,#1B1438,var(--night) 60%) padding-box,var(--n-vio) border-box}

/* lien vers la galerie : centré, détaché des photos */
.gal-more{margin-top:clamp(44px,5vw,64px);text-align:center}

/* =====================================================================
   PAGES COMMUNES — prestations en cartes, bloc « Autour de … »
   ===================================================================== */
.services-3{gap:clamp(18px,2vw,28px)}
.services-3 .brand{padding:clamp(22px,2.4vw,30px);background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.services-3 .brand p a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.near{padding:clamp(52px,6vw,84px) 0}
.near-grid{display:grid;grid-template-columns:minmax(0,.9fr) minmax(0,1.3fr);gap:clamp(28px,4.4vw,72px);align-items:start}
.near-t{font:700 clamp(1.7rem,3vw,2.5rem)/1.1 var(--grot);letter-spacing:-.04em;color:var(--text)}
.near-t em{font-family:var(--serif);font-style:italic;font-weight:400;background:var(--grad);-webkit-background-clip:text;background-clip:text;color:transparent}
.near-head>p:not(.v4-kicker){margin-top:14px;max-width:44ch;font-size:.9rem;line-height:1.75;color:var(--muted)}
.near-head>p a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.near-cols{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(16px,2vw,24px);align-items:stretch}
.near-twin{display:flex;flex-direction:column}
.near-twin p{font-size:.88rem;line-height:1.7;color:var(--muted)}
.near-twin .text-link{margin-top:auto;padding-top:16px;align-self:flex-start;font-size:.8rem}
@media(max-width:900px){.near-grid,.near-cols{grid-template-columns:1fr}}

/* petites étiquettes en violet uni (cohérent avec les boutons) */
.sol .typ,.brand .typ,.brand-card .typ,.dplan .typ,.faq-group-t,.featured .typ{
  background:none;-webkit-background-clip:border-box;background-clip:border-box;color:var(--vio2)}
.dplan--premium .typ,.ba .typ,.pgrid .typ{background:none;-webkit-background-clip:border-box;background-clip:border-box;color:#D9CCFF}

/* =====================================================================
   RÉALISATIONS · PLAN DU SITE · MENTIONS LÉGALES
   ===================================================================== */
/* compteur de photos sur les onglets de la galerie */
.gtab-n{display:inline-block;min-width:1.7em;margin-left:8px;padding:1px 7px;border-radius:999px;
  font:600 .7rem/1.5 var(--grot);text-align:center;background:rgba(123,47,247,.1);color:var(--vio2)}
.gtab.is-active .gtab-n{background:rgba(255,255,255,.22);color:#fff}

/* plan du site : pages principales en cartes */
.sm-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(14px,1.6vw,22px)}
.sm-card{display:flex;flex-direction:column;gap:8px;padding:22px 22px 24px;background:#fff;border-radius:2px;
  box-shadow:var(--card-shadow);transition:transform .3s var(--ease),box-shadow .3s}
.sm-card b{font:700 1rem/1.3 var(--grot);letter-spacing:-.015em;color:var(--text)}
.sm-card b::after{content:"\002192";margin-left:8px;color:var(--vio2);opacity:0;transition:opacity .25s}
.sm-card span{font-size:.84rem;line-height:1.6;color:var(--muted)}
.sm-card:hover{transform:translateY(-3px);box-shadow:0 26px 50px -34px rgba(36,25,56,.5)}
.sm-card:hover b::after{opacity:1}
.sm-table td{font-family:var(--sans);font-weight:500}
.sm-table td a{color:var(--text);transition:color .25s}
.sm-table td a:hover{color:var(--vio2)}
.sm-table td:last-child,.sm-table thead th:last-child{background:none}

/* mentions légales : sommaire fixe à gauche, identité en tableau */
.legal-grid{display:grid;grid-template-columns:minmax(200px,.34fr) minmax(0,1fr);gap:clamp(30px,5vw,80px);align-items:start}
.legal-toc{position:sticky;top:calc(var(--head) + 28px);display:grid;gap:2px}
.legal-toc a{padding:6px 0;font-size:.84rem;color:var(--muted);transition:color .25s}
.legal-toc a:hover{color:var(--vio2)}
.legal-body{min-width:0}
.legal-body h2{scroll-margin-top:calc(var(--head) + 24px)}
.legal-body>h2:first-child{margin-top:0}
.legal-id{margin:4px 0 8px;padding:6px 26px;background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.legal-id>div{display:grid;grid-template-columns:minmax(150px,.42fr) 1fr;gap:6px 24px;padding:13px 0}
.legal-id>div+div{border-top:1px solid var(--line)}
.legal-id dt{font:600 .8rem/1.5 var(--grot);color:var(--text)}
.legal-id dd{margin:0;font-size:.88rem;line-height:1.6;color:var(--muted)}
.legal-id a{color:var(--vio2)}

@media(max-width:1000px){.sm-cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:900px){.legal-grid{grid-template-columns:1fr}.legal-toc{position:static;grid-template-columns:1fr 1fr}}
@media(max-width:560px){
  .sm-cards{grid-template-columns:1fr}
  .legal-toc{grid-template-columns:1fr}
  .legal-id{padding:4px 18px}
  .legal-id>div{grid-template-columns:1fr;gap:2px}
  .sm-table thead{display:none}
  .sm-table tr{display:grid;grid-template-columns:1fr;padding:12px 16px;border-bottom:1px solid var(--line)}
  .sm-table th,.sm-table td{padding:3px 0;border:0}
}

/* carte de la zone d'intervention (Leaflet) */
.zone-map{height:clamp(340px,38vw,470px);background:#E9EEF3}
.zone-frame figcaption{padding:14px 18px 16px}
.zone-legend{list-style:none;display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.78rem;color:#E4DAFF}
.zone-legend li{display:inline-flex;align-items:center;gap:8px}
.zone-legend i{width:12px;height:12px;border-radius:50%;border:1.5px solid #9B7BF0;flex:none}
.zone-legend .z1{background:rgba(123,47,247,.75)}
.zone-legend .z2{background:rgba(123,47,247,.45)}
.zone-legend .z3{background:rgba(123,47,247,.22)}
.zone-legend .z4{background:transparent;border-style:dashed}
.zone-frame figcaption>p:last-child{margin-top:10px;font-size:.72rem;line-height:1.55;color:#B9AEDA}
.leaflet-container{font-family:var(--sans)}
.leaflet-tooltip.zone-base{font:600 .74rem var(--grot);color:var(--vio2);border:0;box-shadow:0 6px 18px rgba(0,0,0,.25)}

/* carte : recherche de commune + légende cliquable */
.zone-find{margin-bottom:14px}
.zone-search{display:flex;gap:8px}
.zone-search input{flex:1;min-width:0;height:46px;padding:0 18px;border-radius:999px;border:1px solid var(--nline2);
  background:rgba(255,255,255,.06);color:#fff;font:500 .88rem var(--sans)}
.zone-search input::placeholder{color:#9B95AE}
.zone-search input:focus-visible{outline:2px solid var(--n-vio);outline-offset:2px}
.zone-search .v4-btn{min-height:46px;padding:0 22px;font-size:.82rem}
.zone-answer{margin-top:10px;font-size:.84rem;line-height:1.55;color:#E4DAFF}
.zone-answer:empty{display:none}
.zone-answer.is-ok{color:#fff}
.zone-answer.is-ok::before{content:"\002713";display:inline-block;margin-right:8px;color:var(--n-turq);font-weight:700}
.zone-legend{display:flex;flex-wrap:wrap;gap:6px}
.zone-legend button{display:inline-flex;align-items:center;gap:8px;padding:7px 12px;border-radius:999px;
  border:1px solid transparent;font:500 .76rem var(--sans);color:#E4DAFF;transition:border-color .25s,background .25s,color .25s}
.zone-legend button:hover{border-color:var(--nline2)}
.zone-legend button[aria-pressed="true"]{border-color:var(--n-vio);background:rgba(139,92,246,.18);color:#fff}
.zone-info{margin-top:10px;font-size:.8rem;line-height:1.55;color:#fff}

/* simulateur : une ligne par groupe extérieur */
.sim-intro{margin:0 0 14px}
.grp-list{display:grid;gap:10px}
.grp{display:grid;grid-template-columns:auto minmax(0,1fr) auto auto auto;grid-template-areas:"n type step price del" "n name name name name";
  align-items:center;gap:4px 16px;padding:14px 16px;border:1px solid var(--line2);border-radius:2px;background:#fff}
.grp-n{grid-area:n;align-self:start;padding-top:8px;font:700 .72rem var(--grot);letter-spacing:.06em;text-transform:uppercase;color:var(--vio2)}
.grp-type{grid-area:type;display:flex;flex-wrap:wrap;gap:6px}
.seg{position:relative;cursor:pointer}
.seg input{position:absolute;opacity:0;inset:0;margin:0;cursor:pointer}
.seg span{display:inline-block;padding:7px 12px;border:1px solid var(--line2);border-radius:2px;font:600 .8rem var(--grot);color:var(--text);
  transition:border-color .2s,background .2s,color .2s}
.seg:hover span{border-color:rgba(123,47,247,.45)}
.seg input:checked+span{border-color:var(--vio);background:var(--lav);color:var(--vio2)}
.seg input:focus-visible+span{outline:2px solid var(--vio2);outline-offset:2px}
.grp-step{grid-area:step;gap:8px}
.grp-step button{width:34px;height:34px;font-size:1.05rem}
.grp-step output{font-size:1.35rem;min-width:1.4ch}
.grp-u{font-size:.76rem;color:var(--muted)}
.grp-name{grid-area:name;font-size:.76rem;color:var(--muted)}
.grp-price{grid-area:price;font:700 .95rem var(--grot);color:var(--text);white-space:nowrap}
.grp-del{grid-area:del;width:30px;height:30px;border:1px solid var(--line2);border-radius:2px;background:#fff;color:var(--muted);font-size:1.1rem;line-height:1;
  transition:border-color .2s,color .2s}
.grp-del:hover{border-color:var(--vio);color:var(--vio2)}
.grp-add{margin-top:12px;padding:10px 16px;border:1px dashed rgba(123,47,247,.5);border-radius:2px;background:transparent;
  font:600 .82rem var(--grot);color:var(--vio2);transition:background .2s,border-color .2s}
.grp-add:hover:not(:disabled){background:var(--lav);border-color:var(--vio)}
.grp-add:disabled{border-color:var(--line2);color:var(--muted);cursor:default}
@media(max-width:760px){
  .grp{grid-template-columns:minmax(0,1fr) auto;grid-template-areas:"n del" "type type" "step price" "name name"}
  .grp-n{padding-top:0}
}

/* prix d'appel « Entretien à partir de 90 € HT » : typographique, pas une étiquette promo */
.price-from{display:grid;grid-template-columns:auto 1fr;align-items:center;gap:4px 18px;margin-top:26px;max-width:54ch}
.pf-k{grid-column:1/-1;font:600 .62rem var(--grot);letter-spacing:.2em;text-transform:uppercase;color:#C9B8FF}
.pf-v{font:700 clamp(2.4rem,4vw,3.3rem)/1 var(--grot);letter-spacing:-.045em;color:#fff}
.pf-v small{font-size:.4em;letter-spacing:0;color:#CFC9E0}
.pf-d{font-size:.8rem;line-height:1.45;color:#CFC9E0}
.m-hero.is-night .price-from{animation:v4fade .9s var(--ease) backwards .5s}
@media(max-width:560px){.price-from{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.m-hero.is-night .price-from{animation:none}}
.pf-note{grid-column:1/-1;margin-top:6px;font-size:.72rem;line-height:1.5;color:#B9AEDA}

/* simulateur explicite : schéma par groupe + calcul écrit */
.grp{grid-template-areas:"n type step price del" "fig name name name name"}
.grp-n{align-self:center;padding-top:0}
.grp-fig{grid-area:fig;display:flex;align-items:center;color:var(--vio2);padding-top:6px}
.grp-fig svg{display:block;overflow:visible}
.grp-fig .lk{stroke-width:1;stroke-dasharray:2 2;opacity:.7}
.grp-fig .out{fill:var(--lav)}
.grp-name{display:flex;flex-direction:column;gap:2px;padding-top:6px;font-size:.8rem;color:var(--text)}
.grp-calc{font:600 .76rem var(--grot);color:var(--vio2)}
.sim-types{margin-top:14px}
.sim-help a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.sim-opts .opt small{line-height:1.45}
@media(max-width:760px){
  .grp{grid-template-areas:"n del" "type type" "step price" "fig name"}
  .grp-fig{padding-top:4px}
}
/* photo verticale du dépannage à Elne : cadrer sur le groupe et les manomètres */
.m-shot img[src*="depannage-climatisation-elne"]{object-position:center 58%}

/* =====================================================================
   SIMULATEUR — une question à la fois (remplace le formulaire complet)
   ===================================================================== */
.wiz{max-width:780px;margin:0 auto;padding:clamp(24px,3.4vw,44px);border-radius:20px;background:#fff;
  box-shadow:0 1px 2px rgba(18,26,38,.04),0 40px 80px -48px rgba(36,25,56,.55)}
.wiz-fallback{font-size:.92rem;color:var(--muted)}
.wiz-fallback a{color:var(--vio2)}
.wiz-bar{height:3px;border-radius:3px;background:var(--line);overflow:hidden}
.wiz-bar span{display:block;height:100%;background:var(--vio2);transition:width .5s var(--ease)}
.wiz-meta{display:flex;justify-content:space-between;align-items:center;margin-top:12px;min-height:28px}
.wiz-back{padding:4px 0;font:600 .8rem var(--grot);color:var(--muted);transition:color .2s}
.wiz-back:hover{color:var(--vio2)}
.wiz-count{font:600 .62rem var(--grot);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.wiz-step{margin-top:clamp(22px,3vw,34px);animation:wizIn .45s var(--ease) both}
@keyframes wizIn{from{opacity:0;transform:translateX(18px)}}
.wiz-q{font:700 clamp(1.4rem,2.6vw,2rem)/1.2 var(--grot);letter-spacing:-.03em;color:var(--text);outline:none}
.wiz-help{margin-top:10px;font-size:.88rem;line-height:1.6;color:var(--muted)}
.wiz-help a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.wiz-opts{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin-top:24px}
.wiz-opts.compact{grid-template-columns:repeat(auto-fit,minmax(96px,1fr))}
.wiz-opt{display:flex;flex-direction:column;gap:6px;align-items:flex-start;text-align:left;padding:20px 20px 18px;
  border:1px solid var(--line2);border-radius:2px;background:#fff;
  transition:border-color .2s,background .2s,transform .2s var(--ease),box-shadow .2s}
.wiz-opt b{font:700 1.08rem var(--grot);letter-spacing:-.01em;color:var(--text)}
.wiz-opt span{font-size:.8rem;line-height:1.5;color:var(--muted)}
.compact .wiz-opt{align-items:center;text-align:center;padding:18px 10px}
.compact .wiz-opt b{font-size:1.7rem;letter-spacing:-.03em}
.wiz-opt:hover{border-color:var(--vio);transform:translateY(-2px);box-shadow:0 14px 30px -20px rgba(99,32,216,.5)}
.wiz-opt[aria-pressed="true"]{border-color:var(--vio);background:var(--lav)}
.wiz-opt[aria-pressed="true"] b{color:var(--vio2)}
.wiz-opt:focus-visible{outline:2px solid var(--vio2);outline-offset:3px}
.wiz-link{margin-top:18px}
.wiz-k{font:600 .7rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--muted);outline:none}
.wiz-price{margin-top:8px;font:700 clamp(3rem,6vw,4.4rem)/1 var(--grot);letter-spacing:-.05em;color:var(--vio2)}
.wiz-price small{font-size:.3em;letter-spacing:0;color:var(--muted)}
.wiz-ttc{margin-top:10px;font-size:.84rem;color:var(--muted)}
.wiz-lines{list-style:none;margin-top:24px}
.wiz-lines li{display:flex;justify-content:space-between;align-items:baseline;gap:16px;padding:12px 0;border-top:1px solid var(--line)}
.wiz-lines li>span{display:flex;flex-direction:column;gap:2px;font-size:.92rem;color:var(--text)}
.wiz-lines small{font-size:.76rem;color:var(--muted)}
.wiz-lines b{flex:none;font-family:var(--grot);white-space:nowrap}
.wiz-result .v4-actions{margin-top:26px}
.wiz-note{margin-top:14px;font-size:.74rem;color:var(--muted)}
@media(max-width:560px){.wiz-opts{grid-template-columns:1fr}.wiz-opts.compact{grid-template-columns:repeat(3,1fr)}}
@media(prefers-reduced-motion:reduce){.wiz-step{animation:none}.wiz-opt:hover{transform:none}}
.method-photo video[data-loop]{cursor:pointer}
.method-photo video[data-loop]{object-position:center 28%}
/* questionnaire : choix multiples, bouton continuer, écran « sur devis » */
.wiz-check{position:relative;padding-left:52px}
.wiz-box{position:absolute;left:18px;top:21px;width:20px;height:20px;border:1.5px solid var(--line2);border-radius:2px;background:#fff;
  transition:background .2s,border-color .2s}
.wiz-check[aria-checked="true"]{border-color:var(--vio);background:var(--lav)}
.wiz-check[aria-checked="true"] b{color:var(--vio2)}
.wiz-check[aria-checked="true"] .wiz-box{background:var(--vio2);border-color:var(--vio2)}
.wiz-check[aria-checked="true"] .wiz-box::after{content:"\002713";position:absolute;inset:0;display:grid;place-items:center;
  font:700 .72rem/20px var(--sans);text-align:center;color:#fff}
.wiz-actions{margin-top:22px}
.wiz-next:disabled{opacity:.4;cursor:not-allowed;transform:none;box-shadow:none}
.wiz-devis .v4-actions{margin-top:24px}
.wiz-restart{display:block;margin-top:16px;padding:4px 0;font:600 .82rem var(--grot);color:var(--vio2);
  text-decoration:underline;text-underline-offset:4px}
.wiz-restart:hover{color:var(--cyan)}
/* simulateur : distance calculée à partir de la commune */
.wiz-lookup{margin-top:22px}
.wiz-lookup .wiz-help{margin-top:0}
.wiz-lookup-form{display:flex;gap:8px;margin-top:10px;max-width:460px}
.wiz-lookup-form input{flex:1;min-width:0;height:48px;padding:0 18px;border:1px solid var(--line2);border-radius:999px;background:#fff;
  font:500 .9rem var(--sans);color:var(--text)}
.wiz-lookup-form input:focus-visible{outline:2px solid var(--vio2);outline-offset:2px}
.wiz-lookup-form .v4-btn{min-height:48px;padding:0 22px;font-size:.84rem}
.wiz-lookup-msg{margin-top:16px;font-size:.95rem;line-height:1.6;color:var(--text)}
.wiz-lookup-msg:empty{display:none}
.wiz-lookup-msg .v4-btn{margin-top:14px}


/* pied de page : liens légaux dans la barre du bas */
.v4-legal{align-items:center;padding-right:72px}
.v4-legal nav{display:flex;flex-wrap:wrap;gap:6px 22px}
.v4-legal nav a{color:#9B95AE;transition:color .25s}
.v4-legal nav a:hover{color:#fff}

/* pages légales : tableaux de tarifs, formulaire de rétractation */
.legal-body h3{margin:30px 0 12px;font:600 1rem/1.4 var(--grot);letter-spacing:-.01em;color:var(--text)}
.legal-body ul{margin:10px 0 0;padding-left:1.1em;max-width:76ch;color:var(--muted);font-size:.92rem;line-height:1.85}
.legal-body li+li{margin-top:6px}
.legal-body ul+p,.legal-body .legal-scroll+p,.legal-body .legal-id+p{margin-top:14px}
.legal-scroll{margin:6px 0 4px;overflow-x:auto;background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.legal-table{width:100%;min-width:520px;border-collapse:collapse;font-size:.86rem}
.legal-table th,.legal-table td{padding:12px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.legal-table tbody tr:last-child th,.legal-table tbody tr:last-child td{border-bottom:0}
.legal-table thead th{font:600 .6rem var(--grot);letter-spacing:.14em;text-transform:uppercase;color:var(--muted);background:var(--bg);white-space:nowrap}
.legal-table tbody th{font:500 .86rem/1.5 var(--grot);color:var(--text)}
.legal-table td{font:600 .86rem/1.5 var(--grot);color:var(--text);white-space:nowrap}
.legal-table--text{min-width:760px}
.legal-table--text td{font:400 .84rem/1.6 var(--sans);color:var(--muted);white-space:normal}
.legal-form{margin-top:10px;padding:20px 26px;background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.legal-form p,.legal-form ul{margin:0;font-size:.88rem}
.legal-form>*+*{margin-top:10px}
.legal-body .legal-date{margin-top:36px;font-size:.8rem}
@media(max-width:560px){
  .legal-table th,.legal-table td{padding:10px 12px}
  .legal-form{padding:16px 18px}
}

/* page 404 */
.page-404 .v4-actions{margin-top:28px}
@media(max-width:700px){
  .legal-table{min-width:0;font-size:.8rem}
  .legal-table th,.legal-table td{padding:10px 8px}
  .legal-table th:first-child,.legal-table td:first-child{padding-left:14px}
  .legal-table thead th{font-size:.5rem;letter-spacing:.08em;white-space:normal}
  .legal-table tbody th,.legal-table td{font-size:.8rem}
  /* tableau des données : une fiche par situation */
  .legal-table--text thead{display:none}
  .legal-table--text,.legal-table--text tbody,.legal-table--text tr,.legal-table--text th,.legal-table--text td{display:block;width:100%}
  .legal-table--text tr{padding:14px 16px;border-bottom:1px solid var(--line)}
  .legal-table--text tbody tr:last-child{border-bottom:0}
  .legal-table--text th,.legal-table--text td,.legal-table--text th:first-child,.legal-table--text td:first-child{padding:0;border:0}
  .legal-table--text th{font-size:.9rem;margin-bottom:8px}
  .legal-table--text td+td{margin-top:8px}
  .legal-table--text td::before{content:attr(data-label);display:block;font:600 .56rem var(--grot);letter-spacing:.12em;text-transform:uppercase;color:var(--text);margin-bottom:2px}
}

/* prix TTC affichés à côté des prix HT (information des consommateurs) */
.pf-ttc{grid-column:1;grid-row:3;font:500 .78rem/1.3 var(--sans);color:#CFC9E0;white-space:nowrap}
.price-from .pf-d{grid-column:2;grid-row:2 / span 2}
.pl-ttc{display:block;margin-top:8px;font:500 .78rem/1.3 var(--sans);letter-spacing:0;color:var(--muted)}
.plan--premium .pl-ttc{-webkit-text-fill-color:#B9AEDA;color:#B9AEDA}
.dep-table small.ttc{display:block;margin-top:2px;font:400 .76rem var(--sans);color:var(--muted)}
.dep-table td.inc small.ttc{color:inherit}
@media(max-width:560px){
  .pf-ttc,.price-from .pf-d{grid-column:1;grid-row:auto}
}

/* bandeau de consentement aux cookies (affiché seulement si des balises sont configurées) */
.cc{position:fixed;left:18px;bottom:18px;z-index:90;width:min(420px,calc(100vw - 36px));max-height:calc(100vh - 36px);overflow:auto;
  background:#fff;border-radius:20px;box-shadow:0 30px 70px -30px rgba(24,16,48,.55),0 0 0 1px rgba(24,16,48,.06);
  animation:v4fade .5s var(--ease) both}
.cc-main{padding:22px 24px 18px}
.cc-title{font:700 1.05rem var(--grot);letter-spacing:-.02em;color:var(--text)}
.cc-text{margin-top:8px;font-size:.84rem;line-height:1.6;color:var(--muted)}
.cc-text a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.cc-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:16px}
.cc-btn{min-height:46px;padding:0 18px;border:0;border-radius:999px;background:var(--vio2);color:#fff;
  font:600 .84rem var(--grot);cursor:pointer;transition:filter .2s}
.cc-btn:hover{filter:brightness(1.12)}
.cc-btn:focus-visible,.cc-more:focus-visible,.cc-link:focus-visible{outline:2px solid var(--vio2);outline-offset:3px}
.cc-more{margin-top:12px;padding:4px 0;border:0;background:none;font:500 .8rem var(--sans);color:var(--muted);
  text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.cc-panel{padding:4px 24px 22px;border-top:1px solid var(--line)}
.cc-row{display:grid;grid-template-columns:auto 1fr;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);cursor:pointer}
.cc-row input{width:18px;height:18px;margin-top:2px;accent-color:var(--vio2)}
.cc-row b{display:block;font:600 .86rem var(--grot);color:var(--text)}
.cc-row span span{display:block;margin-top:3px;font-size:.78rem;line-height:1.55;color:var(--muted)}
.cc-save{width:100%;margin-top:16px}
body.cc-open .v4-fr{display:none}
.cc-link{padding:0;border:0;background:none;font:inherit;color:#9B95AE;cursor:pointer;transition:color .25s}
.cc-link:hover{color:#fff}
@media(max-width:560px){
  .cc{left:10px;right:10px;bottom:10px;width:auto;border-radius:16px}
  body.cc-open .help-open{display:none}
}
@media(prefers-reduced-motion:reduce){.cc{animation:none}}

/* contenu externe chargé au clic (formulaire InterFast) */
.ext-embed{padding:clamp(28px,4vw,44px) clamp(22px,3vw,36px)}
.ext-embed .ci-k{margin-bottom:12px}
.ext-embed p:not(.ci-k){max-width:52ch;font-size:.9rem;line-height:1.75;color:var(--muted)}
.ext-embed .v4-actions{margin-top:22px}
.ext-embed .v4-btn-ghost{color:var(--text);border-color:var(--line2)}

/* galerie : photo très panoramique, recadrée en 4/3 pour laisser respirer la légende */
.pgrid figure.is-wide img{aspect-ratio:4/3;object-fit:cover;object-position:center}

/* Entretien : cartes des formules empilées (mobile, tablette) → seulement ce qui est inclus.
   Le tableau complet, avec les « non inclus », reste affiché sur grand écran. */
@media (max-width:980px){
  .plan li:has(> .val.no){display:none}
}
/* Entretien : grille détaillée des tarifs repliée sur téléphone (le texte reste dans la page) */
.rates-toggle{width:100%;margin-bottom:6px}
@media (max-width:700px){
  .why.is-collapsed{display:none}
}
@media (min-width:701px){
  .rates-toggle{display:none}
}

/* Accueil, téléphone : les avis défilent à l'horizontale (une carte, la suivante qui dépasse)
   au lieu d'être empilés. Tout le texte reste dans la page. */
@media (max-width:700px){
  .avis-list:not(.avis-more){columns:auto;display:flex;gap:14px;overflow-x:auto;overscroll-behavior-x:contain;
    scroll-snap-type:x mandatory;margin-inline:calc(-1 * var(--pad));padding:4px var(--pad) 18px;
    scroll-padding-inline:var(--pad);scrollbar-width:none}
  .avis-list:not(.avis-more)::-webkit-scrollbar{display:none}
  .avis-list:not(.avis-more) figure{flex:0 0 84%;margin:0;scroll-snap-align:start}
  .avis-list:not(.avis-more) .avis-photo{max-width:none}
}

/* Réalisations, téléphone : la mosaïque passe à deux colonnes ; sur ces petites vignettes,
   la légende se réduit à son étiquette (le texte complet s'affiche dans la visionneuse). */
@media (max-width:679px){
  .mosaic{column-count:2;column-gap:10px}
  .mosaic figure{margin-bottom:10px}
  .mosaic figcaption{padding:28px 10px 9px}
  .mosaic figcaption h3{display:none}
  .mosaic .typ{font-size:.5rem}
}

/* =====================================================================
   LISIBILITÉ — plancher de taille pour les petites étiquettes en capitales
   (audit du 25/09 : certaines descendaient à 8 px sur téléphone)
   ===================================================================== */
.page-bc{font-size:.7rem}

.v4-kicker,.v4-eyebrow{font-size:.66rem}
.faq-group-t,.pf-k,.ci-k,.zcol h3{font-size:.68rem}
.pl-badge{font-size:.66rem}
.typ,.featured .typ,.avis-lead .typ,.sol .typ,.ba .typ,.brand .typ{font-size:.66rem}
.wiz-count{font-size:.72rem}
.dep-table thead th,.legal-table thead th{font-size:.66rem}
@media(max-width:760px){
  .v4-kicker,.v4-eyebrow{font-size:.66rem}
  .featured .typ,.typ{font-size:.64rem}
  .dep-table thead th,.legal-table thead th{font-size:.62rem;letter-spacing:.08em}
}
@media(max-width:679px){.mosaic .typ{font-size:.62rem}}

/* =====================================================================
   RÉALISATIONS — avant / après mis en valeur (une ligne par chantier)
   ===================================================================== */
.ba-list{display:grid;gap:clamp(48px,6.4vw,88px)}
.ba-pair{display:grid;grid-template-columns:minmax(0,.85fr) minmax(0,1.7fr);gap:clamp(24px,4.4vw,72px);align-items:center}
.ba-pair:nth-child(even){grid-template-columns:minmax(0,1.7fr) minmax(0,.85fr)}
.ba-pair:nth-child(even) .ba-txt{order:2}
.ba-cat{font:600 .66rem var(--grot);letter-spacing:.2em;text-transform:uppercase;color:var(--vio2)}
.ba-txt h3{margin-top:12px;font:700 clamp(1.3rem,2.1vw,1.7rem)/1.2 var(--grot);letter-spacing:-.03em;color:var(--text)}
.ba-txt p:not(.ba-cat){margin-top:14px;max-width:44ch;font-size:.9rem;line-height:1.8;color:var(--muted)}
.ba.ba--pair{grid-template-columns:1fr 1fr;gap:clamp(10px,1.4vw,18px)}
.ba--pair a{display:block}
.ba--pair img{height:clamp(230px,27vw,400px);transition:transform .6s var(--ease)}
.ba--pair a:hover img{transform:scale(1.03)}
@media(max-width:900px){
  .ba-pair,.ba-pair:nth-child(even){grid-template-columns:1fr}
  .ba-pair:nth-child(even) .ba-txt{order:0}
}
@media(max-width:760px){
  .ba.ba--pair{grid-template-columns:1fr 1fr;gap:8px}
  .ba--pair img{height:210px}
  .ba--pair figcaption{padding:34px 10px 10px}
  .ba--pair figcaption p{font-size:.78rem}
}
@media(prefers-reduced-motion:reduce){.ba--pair img{transition:none}}

/* Réalisations : 3 photos « à la une » en tête de l'onglet Installation */
.feat3{grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(12px,1.6vw,22px);margin-top:26px}
.feat3 .shot{height:clamp(320px,34vw,500px)}
.feat3 .shot img{width:100%;height:100%;object-fit:cover}
.feat3 figcaption{padding:70px 24px 22px}
.feat3 h3{font-size:1.2rem}
.feat3 + .mosaic{margin-top:clamp(12px,1.6vw,22px)}
@media(max-width:760px){
  .feat3{grid-template-columns:1fr 1fr;gap:10px}
  .feat3 figure:first-child{grid-column:1/-1}
  .feat3 .shot{height:230px}
  .feat3 figure:first-child .shot{height:320px}
  .feat3 figcaption{padding:40px 12px 12px}
  .feat3 figure:not(:first-child) h3{display:none}
  .feat3 + .mosaic{margin-top:10px}
}

/* Installation : bande courte vers la galerie (remplace la section photos) */
.detail-slim .v4-actions{margin-top:clamp(18px,2.4vw,28px)}
/* Installation : arguments des marques */
.brand-pts{list-style:none;margin:16px 0 0;display:grid;gap:9px}
.brand-pts li{position:relative;padding-left:24px;font-size:.86rem;line-height:1.65;color:var(--muted)}
.brand-pts li::before{content:"\002713";position:absolute;left:0;top:0;color:var(--vio2);font-weight:700}
.brand-note{margin-top:clamp(22px,2.6vw,32px);max-width:72ch;font-size:.9rem;line-height:1.8;color:var(--muted)}
.brand-pts strong{color:var(--text);font-weight:600}
.brand-pts a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
.nowrap{white-space:nowrap}

/* En-tête : logo complet (dessin + « Climat Actif 66 »), détouré, à la place du texte blanc */
.v4-brand img.brand-logo-h{height:46px;width:auto;max-width:none}
@media(max-width:760px){.v4-brand img.brand-logo-h{height:36px}}
@media(max-width:420px){.v4-brand img.brand-logo-h{height:31px}}

/* Entretien : le simulateur s'annonce comme tel dès la première question */
.wiz-label{font:600 .72rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--vio2)}

/* Entretien : section du simulateur mise en évidence (titre centré et plus grand ; pas de fond teinté, refusé par Jules),
   pour qu'on ne la rate pas en faisant défiler la page */

.sim-head{flex-direction:column;align-items:center;text-align:center;gap:16px}
.sim-head .v4-kicker{justify-content:center;margin-bottom:14px}
.sim-head .v4-h2{font-size:clamp(2.3rem,5vw,4.1rem)}
.sim-head>p{max-width:58ch;margin:0 auto;font-size:.98rem}
@media(max-width:760px){.sim-head{text-align:center}.sim-head>p{margin-top:12px}}

/* Accueil : la ligne d'accroche fait partie du titre h1 (mot-clé « Climatisation à Perpignan »), même rendu
   qu'en paragraphe : bloc à part (sinon elle hériterait de la hauteur de ligne du grand titre). */
.hero h1 .v4-eyebrow{display:flex;width:fit-content;max-width:100%;line-height:1.5}

/* Pages commune : la section entretien tient en plusieurs paragraphes à côté de sa photo */
.sec-text > p + p{margin-top:1.1em}
.sec-text > .text-link{margin-top:22px}

/* =====================================================================
   ACCUEIL — téléphone : la photo d'abord, le texte ensuite (27/09)
   Sur un écran étroit, la photo (paysage) passée sous le texte ne montrait qu'une bande sombre et la clim,
   sujet de l'image, disparaissait derrière le titre. Ici la photo devient un bandeau net en haut (clim bien
   visible, fondu vers le fond nuit), le texte suit, le bouton principal reste visible dès l'ouverture, et le
   logo signe le bloc sous les boutons. Ordinateur et tablette : inchangés.
   ===================================================================== */
@media(max-width:760px){
  .hero{display:flex;flex-direction:column;align-items:stretch;min-height:0;padding:var(--head) 0 46px}
  .hero::before{background:none}
  .hero::after{background:radial-gradient(70% 45% at 0% 100%,rgba(139,92,246,.22),transparent 70%)}
  .hero-image{position:relative;inset:auto;z-index:0;flex:none;width:100%;height:clamp(220px,38svh,330px);
    background-position:49% 30%;background-size:cover;transform:none;filter:saturate(.9)}
  .hero-image::after{content:"";position:absolute;inset:0;
    background:linear-gradient(180deg,rgba(15,23,26,.28) 0%,rgba(15,23,26,0) 26%,rgba(15,23,26,0) 58%,var(--night) 100%)}
  .hero-grid{gap:0;margin-top:-6px}
  .hero h1 .v4-eyebrow{margin-bottom:16px}
  .hero h1{font-size:clamp(2.35rem,10.4vw,2.7rem);line-height:1.03}
  .hero .v4-lead{line-height:1.65;margin:18px 0 24px}
  .v4-hlogo{justify-content:center;margin-top:34px}
  .v4-hlogo img{width:min(44vw,150px)}
  .hero-bottom{display:none}
}

/* =====================================================================
   ACCUEIL — avant / après à comparer (balcon), en tête de « Chez vous, ça change tout. »
   La photo « avant » est posée sur la photo « après » et coupée à la position de la poignée (--pos).
   « Avant » / « Après » : du texte, pas des pastilles (règle du site : pas de badge sur une photo).
   ===================================================================== */
.ba-slide{position:relative;min-width:0;margin:0}
.featured .ba-slide{grid-row:1/3}
.ba-slide-view{position:relative;height:100%;min-height:300px;overflow:hidden;border-radius:2px;background:#DCE5EE;
  box-shadow:0 18px 40px rgba(18,26,38,.12);touch-action:pan-y;cursor:ew-resize;-webkit-user-select:none;user-select:none}
.ba-slide-view::before{content:"";position:absolute;inset:0 0 auto;height:28%;z-index:2;pointer-events:none;
  background:linear-gradient(rgba(6,21,23,.5),transparent)}
.ba-slide-view img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 62%;pointer-events:none}
.ba-slide-avant{clip-path:inset(0 calc(100% - var(--pos,50%)) 0 0)}
.ba-slide-tag{position:absolute;top:18px;z-index:3;font:600 .6rem var(--grot);letter-spacing:.2em;text-transform:uppercase;
  color:#fff;text-shadow:0 1px 8px rgba(6,21,23,.7);pointer-events:none}
.ba-slide-tag.is-avant{left:20px}
.ba-slide-tag.is-apres{right:20px}
.ba-slide-bar{position:absolute;top:0;bottom:0;left:var(--pos,50%);z-index:3;width:2px;margin-left:-1px;background:#fff;
  box-shadow:0 0 12px rgba(6,21,23,.35);pointer-events:none}
.ba-slide-knob{position:absolute;top:50%;left:50%;width:48px;height:48px;margin:-24px 0 0 -24px;border-radius:50%;
  display:grid;place-items:center;background:#fff;color:var(--vio2);font:700 1rem/1 var(--grot);letter-spacing:.1em;
  box-shadow:0 10px 26px rgba(6,21,23,.3);transition:transform .25s var(--ease)}
.ba-slide-view:hover .ba-slide-knob{transform:scale(1.08)}
/* le curseur natif reste là pour le clavier et les lecteurs d'écran, invisible */
.ba-slide-range{position:absolute;inset:0;z-index:4;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize;pointer-events:none}
.ba-slide-view:has(.ba-slide-range:focus-visible) .ba-slide-knob{outline:3px solid var(--n-cyan,#22D3EE);outline-offset:3px}
@media(max-width:760px){
  .featured .ba-slide-view{height:430px}
  .ba-slide-tag{top:14px;font-size:.54rem}
  .ba-slide-tag.is-avant{left:14px}
  .ba-slide-tag.is-apres{right:14px}
  .ba-slide-knob{width:44px;height:44px;margin:-22px 0 0 -22px}
}

/* Zones d'intervention : distance depuis Saleilles et zone de déplacement, à droite du nom de la commune */
.zgroup .zd{flex:none;font-size:.76rem;color:var(--muted);white-space:nowrap}
.zgroup .zd a{color:inherit;border-bottom:1px solid var(--line2);transition:color .25s,border-color .25s}
.zgroup .zd a:hover{color:var(--vio2);border-color:var(--vio)}

/* Téléphone (revue « comme un client » du 27/09) :
   - la bulle d'aide attend qu'on ait dépassé les boutons du haut de page (elle recouvrait « Décrire ma panne »,
     « Demander un devis »… dès l'ouverture) — classe posée par v6.js ;
   - accueil : les communes sur deux colonnes (la liste faisait 1 440 px de haut) ;
   - fil d'Ariane : zone de toucher agrandie sans rien changer à l'affichage. */
.help-open{transition:transform .22s var(--ease),box-shadow .25s,opacity .3s,visibility .3s}
.help-open.is-waiting{opacity:0;visibility:hidden;transform:translateY(14px) scale(.9);pointer-events:none}
.page-bc a{position:relative}
.page-bc a::after{content:"";position:absolute;inset:-12px -4px}
@media(max-width:760px){
  .zones-cols .zcol ul{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:14px}
  .zones-cols .zcol a{font-size:.88rem}
}

/* Perpignan : les quartiers et leur distance depuis Saleilles (deux colonnes, une sur téléphone), même allure
   que la liste des communes de /zones-intervention/ (sans trait entre les lignes) */
.quartiers{list-style:none;columns:2;column-gap:clamp(24px,4vw,56px);max-width:860px}
.quartiers li{display:flex;justify-content:space-between;align-items:baseline;gap:14px;padding:7px 0;break-inside:avoid}
.quartiers .qn{font-weight:600;font-size:.92rem;color:var(--text)}
.quartiers .zd{flex:none;font-size:.76rem;color:var(--muted);white-space:nowrap}
.quartiers-note{margin-top:22px;max-width:72ch;font-size:.88rem;line-height:1.75;color:var(--muted)}
.quartiers-note a{color:var(--vio2);border-bottom:1px solid var(--vio)}
@media(max-width:640px){.quartiers{columns:1}}

/* Réalisations : les communes des chantiers, sous la galerie (liens vers leurs pages) */
.chantiers-lieux{margin-top:clamp(22px,2.4vw,32px);max-width:80ch;font-size:.9rem;line-height:1.8;color:var(--muted)}
.chantiers-lieux a{color:var(--vio2);border-bottom:1px solid var(--vio)}

/* Pages métier : bloc « près de chez vous » (mêmes groupes que l'accueil). Sur téléphone, sans cartes et avec les
   communes à la suite (séparées par un point) : 1 277 → 869 px de haut, sans rien masquer. */
@media(max-width:760px){
  #communes.zones-strip .zcol{padding:0;background:none;box-shadow:none}
  #communes.zones-strip .zcol h3{margin-bottom:4px}
  #communes.zones-strip .zones-cols{gap:20px}
  #communes.zones-strip .zones-cols .zcol ul{display:flex;flex-wrap:wrap;column-gap:0}
  #communes.zones-strip .zcol li{padding:3px 0}
  #communes.zones-strip .zcol li:not(:last-child)::after{content:"·";margin:0 10px;color:var(--muted)}
  #communes.zones-strip .zcol a::after{display:none}
}

/* Page gainable (01/10/2026) : schémas SVG avec légende numérotée, tableaux comparatifs, régulation Koolnova, avis */
.schema-fig{margin-top:clamp(26px,3vw,40px);padding:clamp(14px,2.4vw,30px);background:#fff;border-radius:2px;box-shadow:var(--card-shadow)}
.schema-scroll img{display:block;width:100%;height:auto}
.schema-leg{list-style:none;counter-reset:leg;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px clamp(22px,3vw,44px);margin-top:clamp(18px,2.4vw,28px);padding-top:clamp(16px,2vw,24px);border-top:1px solid var(--line)}
.schema-leg li{counter-increment:leg;position:relative;padding-left:38px;font-size:.88rem;line-height:1.65;color:var(--muted)}
.schema-leg li::before{content:counter(leg);position:absolute;left:0;top:-1px;width:26px;height:26px;border-radius:50%;background:var(--vio);color:#fff;font:700 .78rem/26px var(--grot);text-align:center}
.schema-leg strong{color:var(--text);font-family:var(--grot);font-weight:600}
.schema-cap{margin-top:14px;font-size:.84rem;line-height:1.7;color:var(--muted)}
.schema-note{margin-top:clamp(24px,2.8vw,36px)}
.cmp-table td{font:400 .88rem/1.6 var(--sans);color:var(--muted)}
.cmp-table tbody th{width:28%}
.cmp-cap{caption-side:top;padding:16px 24px 4px;text-align:left;font:700 1rem var(--grot);color:var(--text)}
.brand-note a{color:var(--vio2);border-bottom:1px solid var(--vio)}
.brand-note strong{color:var(--text)}
.kool-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:clamp(30px,4.4vw,64px);align-items:start;margin-top:clamp(34px,4vw,56px)}
.kool-who{margin-top:22px;font-size:.88rem;line-height:1.8;color:var(--muted)}
.kool-who b{color:var(--text);font-family:var(--grot)}
.gain-avis{margin:0;padding:clamp(22px,2.6vw,32px);background:#fff;border-radius:2px;box-shadow:var(--card-shadow);border-top:3px solid var(--vio)}
.gain-avis .stars{color:#E8A317;font-size:.82rem;letter-spacing:2px}
.gain-avis blockquote p{margin-top:12px;font:400 .95rem/1.8 var(--sans);color:var(--muted)}
.gain-avis blockquote strong{color:var(--text)}
.gain-avis figcaption{margin-top:16px;font:600 .82rem var(--grot);color:var(--text)}
.gain-avis figcaption span{display:block;margin-top:4px;font:600 .56rem var(--grot);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
@media(max-width:960px){.kool-grid{grid-template-columns:1fr}}
@media(max-width:640px){
  .schema-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -6px;padding:0 6px 6px}
  .schema-scroll img{width:600px;max-width:none}
  .schema-leg{grid-template-columns:1fr}
  /* tableaux comparatifs : une carte par ligne, la colonne rappelée devant chaque valeur */
  .cmp-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
  .cmp-table tr,.cmp-table th,.cmp-table td{display:block}
  .cmp-table tbody tr{padding:14px 16px;border-bottom:1px solid var(--line)}
  .cmp-table tbody tr:last-child{border-bottom:0}
  .cmp-table tbody th,.cmp-table td{width:auto;padding:0;border:0;background:none}
  .cmp-table tbody th{margin-bottom:8px;font-size:.86rem}
  .cmp-table td{font-size:.84rem}
  .cmp-table td + td{margin-top:6px}
  .cmp-table td::before{content:attr(data-l);display:block;font:600 .54rem var(--grot);letter-spacing:.14em;text-transform:uppercase;color:var(--vio2)}
  .cmp-table td:last-child{background:none}
  .cmp-cap{padding:14px 16px 0}
}

/* Pied de page : adhésion CAPEB (logo fourni par Jules, fond transparent) */
.v4-member{margin-top:22px;display:flex;flex-direction:column;align-items:flex-start;gap:10px}
.v4-member span{font:600 .6rem var(--grot);letter-spacing:.22em;text-transform:uppercase;color:var(--nmuted)}
.v4-member img{width:140px;height:auto}
/* gainable, téléphone : indication de défilement des schémas ; tableaux comparatifs en deux colonnes par carte */
.schema-hint{display:none}
@media(max-width:640px){
  .schema-hint{display:block;margin-bottom:10px;font:600 .58rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--vio2)}
  .cmp-table tbody tr{display:grid;grid-template-columns:1fr 1fr;column-gap:14px}
  .cmp-table tbody th{grid-column:1/-1}
  .cmp-table td + td{margin-top:0}
}
.schema-scroll img{max-width:920px;margin:0 auto}
.factors.f4{grid-template-columns:repeat(4,minmax(0,1fr))}
@media(max-width:900px){.factors.f4{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.factors.f4{grid-template-columns:1fr}}

/* =====================================================================
   Performances (2e audit, 01/10/2026 — mesures Lighthouse mobile)
   - Haut de page : le texte ne part plus de opacity:0 (le fondu repoussait le LCP d'environ une seconde) ; il glisse
     seulement de quelques pixels, sans attendre. Aucun mouvement pour qui a demandé d'en réduire.
   - Photo du premier écran de l'accueil : la même image, en WebP (170 → 92 Ko), préchargée par functions.php.
   ===================================================================== */
@keyframes v4rise{from{transform:translateY(14px)}}
@media(prefers-reduced-motion:no-preference){
  .m-hero.is-night .v4-kicker{animation:v4rise .55s var(--ease) backwards}
  .m-hero.is-night .lead{animation:v4rise .55s var(--ease) backwards .04s}
  .m-hero.is-night .v4-actions{animation:v4rise .55s var(--ease) backwards .08s}
  .m-hero.is-night .marks{animation:v4rise .55s var(--ease) backwards .12s}
  .m-hero.is-night .sommaire{animation:v4rise .55s var(--ease) backwards .16s}
  .m-hero.is-night .price-from{animation:v4rise .55s var(--ease) backwards .08s}
}
.hero-image{background-image:url("hero-clim-golden.webp")}
/* Photo de l'avis mis en avant (accueil) : les dimensions d'image ajoutées au balisage ne doivent pas imposer la hauteur,
   elle suit toujours le rapport 4/3 (16/10 sur téléphone) défini dans v5.css. */
.avis-lead .lead-photo{height:auto}

/* Gainable : « Les limites du gainable » (question posée par Google, 01/10/2026) — liste sobre, un point violet par ligne */
.limites{max-width:72ch;margin-top:clamp(30px,3.4vw,46px)}
.limites h3{font:700 1.12rem/1.3 var(--grot);letter-spacing:-.015em;color:var(--text)}
.limites ul{list-style:none;margin-top:14px}
.limites li{position:relative;padding:5px 0 5px 22px;font-size:.9rem;line-height:1.75;color:var(--muted)}
.limites li::before{content:"";position:absolute;left:2px;top:.95em;width:7px;height:7px;border-radius:50%;background:var(--vio)}
.limites li strong{color:var(--text);font-family:var(--grot);font-weight:600}

/* =====================================================================
   Blog « Conseils » (01/10/2026) — liste, vignettes et articles
   Même grammaire que les pages : filets fins, grande typographie, aucune pastille ni ombre décorative. L'article est
   une colonne de lecture d'environ 70 caractères sur le fond clair ; le premier écran et le contact restent sombres.
   ===================================================================== */
.m-hero.is-night.art-hero h1{font-size:clamp(2.1rem,4.3vw,3.6rem);max-width:21ch;letter-spacing:-.045em}
.art-meta{display:flex;flex-wrap:wrap;gap:6px 26px;margin-top:26px;font:600 .64rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:#B9AEDA}
.art-meta>*{position:relative}
.art-meta>*+*::before{content:"";position:absolute;left:-15px;top:50%;width:3px;height:3px;border-radius:50%;background:var(--n-vio);transform:translateY(-50%)}
.art-meta time{color:inherit}

.art-sec{padding:clamp(44px,5.6vw,84px) 0 clamp(56px,7vw,104px)}
.art-body{max-width:46rem;margin:0 auto;font-size:1.04rem;line-height:1.85;color:var(--text)}
.art-body>:first-child{margin-top:0}
.art-body p{margin:0 0 1.15em}
.art-body h2{margin:2.1em 0 .55em;font:700 clamp(1.6rem,2.7vw,2.25rem)/1.12 var(--grot);letter-spacing:-.045em;max-width:28ch}
.art-body h3{margin:1.8em 0 .45em;font:700 1.22rem/1.3 var(--grot);letter-spacing:-.03em}
.art-body h2+p,.art-body h3+p{margin-top:0}
.art-body a{color:var(--vio2);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .25s}
.art-body a:hover{color:var(--cyan)}
.art-body ul,.art-body ol{margin:0 0 1.2em;padding:0;list-style:none}
.art-body li{position:relative;margin:.5em 0;padding-left:1.55em}
.art-body ul>li::before{content:"";position:absolute;left:.12em;top:.8em;width:6px;height:6px;border-radius:50%;background:var(--vio)}
.art-body ol{counter-reset:art}
.art-body ol>li{counter-increment:art}
.art-body ol>li::before{content:counter(art);position:absolute;left:0;top:0;font:700 .92em/2.01 var(--grot);color:var(--vio2)}
.art-body li>ul,.art-body li>ol{margin:.5em 0 .2em}
.art-body blockquote{margin:1.8em 0;padding:.15em 0 .15em 1.4em;border-left:3px solid var(--vio);font:italic 400 1.3em/1.5 var(--serif);color:var(--ink)}
.art-body blockquote p{margin:0}
.art-body figure{width:fit-content;max-width:100%;margin:2em auto}
.art-body img{width:auto;height:auto;max-width:100%;border-radius:2px}
/* la plupart des photos du site sont en portrait : on borne leur hauteur pour qu'elles ne prennent pas tout l'écran */
.art-body figure img{max-height:min(640px,80vh)}
.art-body figcaption{margin-top:10px;font-size:.78rem;line-height:1.6;color:var(--muted)}
.art-body table{width:100%;margin:1.8em 0;border-collapse:collapse;font-size:.9rem;line-height:1.6}
.art-body th,.art-body td{padding:11px 16px 11px 0;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.art-body th{border-bottom-color:var(--line2);font:700 .66rem var(--grot);letter-spacing:.12em;text-transform:uppercase;color:var(--muted);white-space:nowrap}
.art-body hr{height:1px;margin:2.4em 0;border:0;background:var(--line2)}
.art-body code{padding:1px 6px;border-radius:2px;background:var(--bg2);font-size:.88em}
.art-body .callout{margin:1.9em 0;padding:18px 22px;border-left:3px solid var(--vio);border-radius:2px;background:var(--lav)}
.art-body .callout>:last-child{margin-bottom:0}
.art-body .callout strong:first-child{font-family:var(--grot)}
.art-body .art-sources{margin-top:2.6em;padding-top:1.2em;border-top:1px solid var(--line2);font-size:.84rem;line-height:1.7;color:var(--muted)}
.art-body .art-sources h2{margin:0 0 .6em;font:700 .66rem var(--grot);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
.art-body .art-sources li{margin:.3em 0}

/* vignettes : liste « Conseils » et « À lire aussi » */
.art-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:clamp(18px,2.4vw,30px);margin-top:clamp(28px,3.4vw,44px)}
.art-card{display:flex;flex-direction:column;overflow:hidden;border:1px solid var(--line);border-radius:2px;background:var(--bg);transition:border-color .25s}
.art-card:hover{border-color:var(--vio)}
.art-card-img{display:block;aspect-ratio:3/2;overflow:hidden;background:var(--bg2)}
.art-card-img img{width:100%;height:100%;object-fit:cover}
.art-card-body{display:flex;flex:1;flex-direction:column;gap:9px;padding:20px 22px 22px}
.art-card-cat{font:600 .6rem var(--grot);letter-spacing:.18em;text-transform:uppercase;color:var(--vio2)}
.art-card-title{font:700 1.2rem/1.25 var(--grot);letter-spacing:-.03em;color:var(--text)}
.art-card-lead{font-size:.86rem;line-height:1.7;color:var(--muted)}
.art-card-date{margin-top:auto;padding-top:6px;font-size:.72rem;color:var(--muted)}
.art-empty{max-width:60ch;margin-top:clamp(24px,3vw,40px);color:var(--muted)}
.art-empty a{color:var(--vio2);text-decoration:underline;text-underline-offset:3px}
@media(max-width:760px){
  .art-body table{display:block;overflow-x:auto}
  .art-body{font-size:1rem;line-height:1.8}
  .art-meta{gap:6px 22px;margin-top:22px}
}

/* Liens dans le paragraphe compagnon d'un titre de section (.sec-head>p) : ils n'étaient pas distingués du texte
   (plan du site « voir la carte de notre zone », Zones, Conseils). Les liens .text-link gardent leur propre style. */
.sec-head>p a:not(.text-link){color:var(--vio2);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;transition:color .25s}
.sec-head>p a:not(.text-link):hover{color:var(--cyan)}

/* Menu du téléphone : avec « Climatisation gainable » et « Conseils », le panneau (633 px) dépassait l'écran des petits téléphones
   (667 px de haut et moins) et le dernier lien devenait inaccessible. Il garde sa hauteur sur les grands écrans et défile dans
   l'espace restant sur les petits. */
@media(max-width:1000px){
  .menu nav{max-height:calc(100svh - var(--head) - 16px);overflow-y:auto;overscroll-behavior:contain}
}

/* Note Google de l'accueil : simple texte. Le widget Elfsight (script tiers, cookies posés avant tout consentement, offre gratuite
   limitée en nombre de vues, balisage « Product » ajouté en JavaScript) est remplacé ; les chiffres se mettent à jour à la main. */
.avis-score{display:grid;gap:8px;flex:none;margin:0;padding-right:26px;border-right:1px solid var(--line2)}
.avis-score .sc-note{display:flex;align-items:baseline;gap:12px;font:700 2.7rem/1 var(--grot);letter-spacing:-.03em;color:var(--text)}
.avis-score .sc-stars{font-size:.95rem;letter-spacing:3px;color:#E8A317}
/* étoiles remplies à due proportion de la note (--p = note / 5) : 4,9 ne montre pas cinq étoiles pleines */
@supports((background-clip:text) or (-webkit-background-clip:text)){
  .avis-score .sc-stars{color:transparent;background:linear-gradient(90deg,#E8A317 var(--p,100%),#D6D2E0 var(--p,100%));-webkit-background-clip:text;background-clip:text}
}
.avis-score .sc-txt{font:600 .6rem var(--grot);letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
@media(max-width:760px){
  .avis-score{padding-right:0;border-right:0}
}

/* Mention légale du crédit (paiement Alma au-delà de 3 mois) : une petite ligne discrète juste sous « Paiement en plusieurs fois possible avec Alma… ». */
.credit-note{display:block;margin-top:8px;font-size:.78rem;line-height:1.5;color:var(--muted)}
/* bloc de contact final (fond sombre) : la petite phrase passe SOUS la ligne Alma (le cadre est en ligne flexible), même couleur claire */
.pay-note{flex-wrap:wrap}
.pay-note:has(.credit-note){flex-direction:column;gap:2px}
.pay-note .credit-note{width:100%;margin-top:0;color:inherit}
.svc-body .note .credit-note{margin-top:2px;font-size:.7rem;line-height:1.5}

/* Mention France Rénov' (arrêté du 7 juillet 2026) : une ligne dans le pied de page de toutes les pages, un encart lisible dans les pages qui
   promeuvent l'installation. Le texte est imposé mot pour mot ; le lien reste souligné et visible. */
.fr-info{margin:0 0 4px;padding:20px 0;border-top:1px solid var(--nline);font-size:.88rem;line-height:1.7;color:#D2CEDC}
.fr-info a{white-space:nowrap;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:3px;color:#fff;font-weight:600}
.fr-info a:hover{color:var(--n-cyan)}
/* Bandeau officiel : image du kit de l'Anah, jamais retouchée ni recadrée ; cliquable ; pleine largeur sur téléphone. */
.fr-band{padding:clamp(14px,2vw,22px) 0}
.fr-banner{display:block;width:100%;max-width:701px;margin:0 auto;line-height:0}
.fr-banner img{display:block;width:100%;height:auto}
.fr-banner:focus-visible{outline:3px solid var(--cyan);outline-offset:3px}
@media(max-width:700px){.fr-band{padding:12px 0}.fr-band .wrap{padding-left:0;padding-right:0}.fr-banner{max-width:none}}
/* 08/10/2026 : le même bandeau officiel dans le bloc de fin des articles, avec l’appel « devis / Alma » (pleine largeur sur téléphone, comme dans les pages) */
.fr-fin{max-width:701px;margin:clamp(18px,2.4vw,26px) auto 0}
@media(max-width:700px){.fr-fin{width:100vw;max-width:none;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}.fr-fin .fr-banner{max-width:none}}
