/* ============================================================
   STYLE PARTAGÉ — Martin & Fils (démo Pro) · s'appuie sur tokens.css
   Toute page du site importe tokens.css PUIS ce fichier.
   ============================================================ */
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--f-texte);font-size:var(--fs-body);line-height:var(--lh-body);color:var(--encre);background:var(--papier)}

/* liens — jamais le bleu navigateur (« traditionnel ne veut pas dire vieillot », 01/08) */
a{color:var(--cuivre);text-decoration:none}
p a,li .r a,.lead a,figcaption a,.r a{border-bottom:1.5px solid var(--cuivre-vif);padding-bottom:1px;transition:color .2s,border-color .2s}
p a:hover,.lead a:hover,.r a:hover{color:var(--nuit);border-color:var(--nuit)}
.w{max-width:var(--w-max);margin:0 auto;padding:0 20px}
h1,h2,h3{font-family:var(--f-titre);line-height:var(--lh-titre)}
img{max-width:100%}

.demo-band{background:var(--encre);color:#fff;font-size:13px;text-align:center;padding:6px 12px}
.demo-band b{color:var(--cuivre-vif)}
.demo-band a{color:#fff}

.sticky{position:sticky;top:0;z-index:50;background:var(--blanc);border-bottom:var(--filet-fin);padding:10px 0}
.sticky .w{display:flex;justify-content:space-between;align-items:center;gap:12px}
.marque{font-family:var(--f-titre);font-weight:900;font-size:20px;color:var(--nuit);text-decoration:none}
.marque small{display:block;font-family:var(--f-texte);font-weight:600;font-size:11.5px;color:var(--cuivre);letter-spacing:.3px}
/* header : UN seul CTA (« Estimer mon devis ») — la grappe de liens saturait (verdict 01/08) */
.nav-devis{font-family:var(--f-titre);font-weight:700;font-size:18px;color:var(--cuivre);border:2px solid var(--cuivre);border-radius:var(--radius);padding:8px 16px;min-height:var(--cible-min);display:inline-flex;align-items:center;margin-left:auto;margin-right:14px;white-space:nowrap;box-shadow:0 4px 0 rgba(168,95,51,.3);transition:transform .15s,box-shadow .15s,background .2s,color .2s}
.nav-devis:hover{background:var(--cuivre);color:#fff;transform:translateY(-2px);box-shadow:0 6px 0 rgba(122,74,40,.5)}
@media (max-width:760px){.nav-devis{display:none}}
.tel-top{font-family:var(--f-titre);font-weight:900;font-size:20px;color:#fff;background:var(--nuit);text-decoration:none;border:2px solid var(--nuit);padding:8px 14px;min-height:var(--cible-min);display:inline-flex;align-items:center;gap:8px;white-space:nowrap}
.tel-top:hover{background:var(--nuit-2)}
.tel-top .ic{background:#fff}

/* HERO accueil */
.hero{background:var(--nuit-2);color:#fff;padding:var(--pad-section) 0 0}
.hero .grid{display:grid;grid-template-columns:1.15fr .85fr;gap:40px;align-items:center}
.estampille{display:inline-block;border:var(--estampille);color:var(--cuivre-vif);font-family:var(--f-titre);font-weight:700;font-size:13px;letter-spacing:1.2px;padding:6px 13px;margin-bottom:18px}
.hero h1{font-size:var(--fs-h1);font-weight:900;margin-bottom:14px}
.hero h1 em{font-style:normal;color:var(--cuivre-vif)}
.hero .sub{font-size:20px;color:#D8DDE1;max-width:56ch;margin-bottom:24px}
.portes{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px}
.porte{display:block;text-decoration:none;padding:18px 18px 16px;border:2px solid var(--ligne-nuit)}
.porte .k{display:block;font-size:12.5px;font-weight:700;letter-spacing:.8px;margin-bottom:6px;color:#AFC0CB}
.porte .v{display:block;font-family:var(--f-titre);font-weight:900;font-size:21px;color:#fff}
.porte .d{display:block;font-size:14.5px;color:#C4CDD3;margin-top:4px}
.porte.urgence{background:var(--rouge);border-color:var(--rouge)}
.porte.urgence .k{color:#F3CFC9}
.porte.urgence:hover{filter:brightness(1.08)}
.porte.projet:hover{background:var(--nuit)}
.preuve-hero{display:flex;gap:18px;align-items:center;flex-wrap:wrap;font-size:15.5px;color:#D8DDE1;padding-bottom:32px}
.preuve-hero a{color:#D8DDE1}
.preuve-hero b{color:#fff}
.preuve-hero .etoiles{color:var(--cuivre-vif);letter-spacing:2px}
.hpic{position:relative}
.hpic img{width:100%;height:430px;object-fit:cover;display:block;border:var(--estampille)}
.hpic figcaption{position:absolute;left:0;bottom:0;background:var(--nuit-2);color:#D8DDE1;font-size:12.5px;padding:6px 12px;border-top:var(--filet);border-right:var(--filet)}

/* HERO de page intérieure — compact */
.hero-page{background:var(--nuit-2);color:#fff;padding:calc(var(--pad-section)*.7) 0}
.hero-page .estampille{margin-bottom:14px}
.hero-page h1{font-size:clamp(30px,4.2vw,44px);font-weight:900;margin-bottom:12px;max-width:24ch}
.hero-page h1 em{font-style:normal;color:var(--cuivre-vif)}
.hero-page .sub{font-size:19px;color:#D8DDE1;max-width:62ch}
.hero-page .actions{margin-top:20px;display:flex;gap:12px;flex-wrap:wrap}
.hero-page.rouge{background:var(--rouge)}
.hero-page.rouge .estampille{border-color:#fff;color:#fff}
.hero-page.rouge .sub{color:#F3CFC9}

.bande{background:var(--nuit);border-top:1px solid var(--ligne-nuit)}
.bande .w{display:grid;grid-template-columns:repeat(4,1fr);gap:0;padding:0}
.bande .c{padding:20px 14px;text-align:center;border-left:1px solid var(--ligne-nuit)}
.bande .c:first-child{border-left:0}
.bande .v{font-family:var(--f-titre);font-weight:900;font-size:var(--fs-chiffre);color:var(--cuivre-vif);font-variant-numeric:tabular-nums}
.bande .k{font-size:13.5px;color:#C4CDD3;margin-top:2px}

.garantie{background:var(--blanc);border-bottom:var(--filet)}
.garantie .w{padding:15px 20px;text-align:center;font-size:16.5px}
.garantie b{font-family:var(--f-titre)}
.garantie .sep{color:var(--cuivre);padding:0 9px}

section{padding:var(--pad-section) 0 0}
.sec-head{display:inline-block;padding-bottom:6px;margin-bottom:8px;position:relative}
.sec-head::after{content:"";position:absolute;left:0;bottom:0;height:3px;background:var(--cuivre);width:100%}
.js [data-rv] .sec-head::after{width:0;transition:width .7s ease .2s}
.js .rv-in .sec-head::after{width:100%}
@media (prefers-reduced-motion: reduce){.js [data-rv] .sec-head::after{width:100%;transition:none}}
.sec-head h2{font-size:var(--fs-h2);font-weight:700}
.lead{max-width:70ch;color:#4a4640;margin-bottom:26px}

/* CTA sculptés — relief mécanique (ombre DURE, pas le flou SaaS) : verdict 01/08 « plus de profondeur » */
.btn{display:inline-flex;align-items:center;gap:8px;font-weight:800;font-size:17px;padding:13px 20px;text-decoration:none;min-height:var(--cible-min);transition:transform .15s,box-shadow .15s}
.btn.u{background:var(--rouge);color:#fff;box-shadow:0 5px 0 #7D2018}
.btn.p{background:var(--nuit);color:#fff;box-shadow:0 5px 0 #081820}
.btn.s{background:#fff;color:var(--nuit);border:2px solid var(--nuit);box-shadow:0 5px 0 var(--nuit)}
.btn.c{background:var(--cuivre-vif);color:var(--nuit-2);box-shadow:0 5px 0 #7A4A28}
.btn:hover{transform:translateY(-2px)}
.btn.u:hover{box-shadow:0 7px 0 #7D2018}.btn.p:hover{box-shadow:0 7px 0 #081820}
.btn.s:hover{box-shadow:0 7px 0 var(--nuit)}.btn.c:hover{box-shadow:0 7px 0 #7A4A28}
.btn:active{transform:translateY(3px)}
.btn.u:active,.btn.p:active,.btn.s:active,.btn.c:active{box-shadow:0 2px 0 rgba(0,0,0,.4)}
.tel-top{box-shadow:0 4px 0 #081820;transition:transform .15s,box-shadow .15s,background .2s,color .2s}
.tel-top:hover{transform:translateY(-2px);box-shadow:0 6px 0 #081820}
.tel-top:active{transform:translateY(2px);box-shadow:0 1px 0 #081820}

/* gros ticket (accueil) */
.ticket{background:var(--nuit);color:#fff;border:none;padding:30px;display:grid;grid-template-columns:1.2fr .8fr;gap:30px;align-items:center}
.ticket h3{font-family:var(--f-titre);font-weight:900;font-size:clamp(22px,2.6vw,30px);margin-bottom:12px}
.ticket p{color:#D8DDE1;font-size:17px;margin-bottom:10px}
.ticket .prix{background:var(--nuit-2);border-left:var(--filet);padding:18px 20px}
.ticket .prix .l{font-size:14px;color:#AFC0CB}
.ticket .prix .v{font-family:var(--f-titre);font-weight:900;font-size:26px;color:var(--cuivre-vif)}
.ticket .prix .n{font-size:13px;color:#AFC0CB;margin-top:4px}

/* services (accueil) */
.serv{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.scol{background:#fff;border:var(--filet-fin);border-top:var(--filet);padding:22px}
.scol h3{font-size:20px;margin-bottom:4px;color:var(--nuit)}
.scol .st{font-size:14px;color:#6b645a;margin-bottom:14px}
.scol ul{list-style:none}
.scol li{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:var(--filet-fin);font-size:16.5px}
.scol li:last-child{border-bottom:0}
.scol li b{font-family:var(--f-titre);color:var(--cuivre);white-space:nowrap;font-size:15.5px}

/* avis */
.avis-head{display:flex;align-items:baseline;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.avis-note{font-family:var(--f-titre);font-weight:900;font-size:40px;color:var(--nuit)}
.avis-note .etoiles{color:var(--cuivre);font-size:22px;letter-spacing:2px;display:block}
.avis-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.avisj{background:#fff;border-left:var(--filet);border-top:var(--filet-fin);border-right:var(--filet-fin);border-bottom:var(--filet-fin);padding:16px 18px;font-size:16px}
.avisj b{color:var(--cuivre)}
.avisj .a{display:block;font-size:13.5px;color:#6b645a;margin-top:10px}
.avisj .rep{margin-top:10px;border-left:2px solid var(--ligne);padding:8px 12px;font-size:14.5px;color:#4a4640;background:var(--papier)}
.avisj .rep b{color:var(--nuit);font-family:var(--f-titre)}

/* répartition de notes (page avis) */
.repart{max-width:420px;margin:10px 0 4px}
.repart .r{display:grid;grid-template-columns:44px 1fr 40px;gap:10px;align-items:center;font-size:14.5px;margin-bottom:6px}
.repart .bar{height:12px;background:#fff;border:var(--filet-fin)}
.repart .bar i{display:block;height:100%;background:var(--cuivre)}

/* héritage (accueil) */
.herit{display:grid;grid-template-columns:.9fr 1.1fr;gap:34px;align-items:center}
.cadre-photo{border:2px dashed var(--cuivre);background:#fff;min-height:320px;display:flex;align-items:center;justify-content:center;text-align:center;color:#8a8177;font-size:14.5px;padding:20px}
.herit h2{font-size:var(--fs-h2);margin-bottom:12px}
.herit p{margin-bottom:12px;max-width:58ch}
.herit .sig{font-family:var(--f-titre);font-weight:700;color:var(--nuit)}

/* zone */
.zone{background:var(--nuit-2);color:#fff;margin-top:var(--pad-section);padding:44px 0}
.zone h2{font-size:var(--fs-h2);margin-bottom:8px}
.zone p{color:#C4CDD3;margin-bottom:16px}
.villes{display:flex;flex-wrap:wrap;gap:10px}
.villes span{border:1px solid var(--ligne-nuit);padding:8px 14px;font-size:15.5px}
.villes span.hub{border:var(--filet);color:var(--cuivre-vif);font-weight:700}

/* FAQ */
.faq details{background:#fff;border:var(--filet-fin);border-left:var(--filet);margin-bottom:10px}
.faq summary{cursor:pointer;padding:14px 18px;font-family:var(--f-titre);font-weight:700;font-size:17.5px;color:var(--nuit);list-style:none;min-height:var(--cible-min)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--cuivre);font-weight:900;margin-right:10px}
.faq details[open] summary::before{content:"–"}
.faq .r{padding:0 18px 16px 40px;max-width:75ch;color:#3b362f;font-size:16.5px}

/* comparatif (page chaudière) */
.comparatif{width:100%;border-collapse:collapse;background:#fff;font-size:16px}
.comparatif th,.comparatif td{border:var(--filet-fin);padding:12px 14px;text-align:left;vertical-align:top}
.comparatif th{background:var(--nuit);color:#fff;font-family:var(--f-titre);font-weight:700}
.comparatif td:first-child{font-weight:700;color:var(--nuit);width:26%}
.comparatif .plus{color:#1d6b3a;font-weight:700}
.comparatif .moins{color:var(--rouge);font-weight:700}

/* cartes prix (page chaudière) */
.prix-cards{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.pcard{background:#fff;border:2px solid var(--nuit);padding:22px}
.pcard .t{font-family:var(--f-titre);font-weight:700;font-size:19px}
.pcard .v{font-family:var(--f-titre);font-weight:900;font-size:30px;color:var(--nuit);margin:8px 0 2px}
.pcard .v small{font-size:14px;color:#6b645a;font-weight:400;font-family:var(--f-texte)}
.pcard ul{list-style:none;margin-top:12px}
.pcard li{padding:7px 0;border-bottom:var(--filet-fin);font-size:15.5px}
.pcard li:last-child{border-bottom:0}
.pcard li::before{content:"— ";color:var(--cuivre)}

/* étapes */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;counter-reset:step}
.step{background:#fff;border-top:var(--filet);border-left:var(--filet-fin);border-right:var(--filet-fin);border-bottom:var(--filet-fin);padding:20px}
.step::before{counter-increment:step;content:counter(step);font-family:var(--f-titre);font-weight:900;font-size:30px;color:var(--cuivre);display:block;margin-bottom:6px}
.step h3{font-size:18px;margin-bottom:6px;color:var(--nuit)}
.step p{font-size:15.5px;color:#4a4640}
.step .d{font-size:13.5px;color:var(--cuivre);font-weight:700;margin-top:8px;display:block}

/* urgences (page dépannage) */
.urg-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.urg{background:#fff;border-left:3px solid var(--rouge);border-top:var(--filet-fin);border-right:var(--filet-fin);border-bottom:var(--filet-fin);padding:18px 20px}
.urg h3{font-size:19px;color:var(--nuit);margin-bottom:4px}
.urg p{font-size:15.5px;color:#4a4640}
.urg .p{font-family:var(--f-titre);font-weight:900;color:var(--cuivre);margin-top:8px;display:block;font-size:17px}
.gestes{background:var(--nuit-2);color:#fff;padding:26px;margin-top:26px}
.gestes h3{font-family:var(--f-titre);font-size:20px;margin-bottom:12px;color:var(--cuivre-vif)}
.gestes ol{padding-left:22px}
.gestes li{margin-bottom:8px;color:#D8DDE1}

/* formulaire (contact) */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:30px}
.coord{background:#fff;border-top:var(--filet);border-left:var(--filet-fin);border-right:var(--filet-fin);border-bottom:var(--filet-fin);padding:24px}
.coord h3{font-size:19px;color:var(--nuit);margin-bottom:10px}
.coord p{margin-bottom:10px;font-size:16.5px}
.coord .tel-big{font-family:var(--f-titre);font-weight:900;font-size:28px;color:var(--nuit);text-decoration:none}
form.demo{background:#fff;border:var(--filet-fin);padding:24px}
form.demo label{display:block;font-weight:700;font-size:15px;margin:14px 0 6px;color:var(--nuit)}
form.demo input,form.demo textarea{width:100%;border:1px solid #b9b2a5;background:var(--papier);padding:12px;font:inherit;font-size:16px;min-height:var(--cible-min)}
form.demo textarea{min-height:110px}
form.demo button{margin-top:16px;border:0;cursor:pointer}
form.demo .note-form{font-size:13px;color:#8a8177;margin-top:10px}

/* CTA final + footer */
.final{background:var(--rouge);color:#fff;margin-top:var(--pad-section);padding:46px 0;text-align:center}
.final h2{font-family:var(--f-titre);font-weight:900;font-size:var(--fs-h2);margin-bottom:8px}
.final .tel{display:inline-block;font-family:var(--f-titre);font-weight:900;font-size:clamp(30px,5vw,46px);color:#fff;text-decoration:none;border:3px solid #fff;padding:12px 26px;margin:12px 0}
.final p{color:#F3CFC9;font-size:15.5px}

footer{background:var(--nuit-2);color:#AFC0CB;font-size:14px;padding:26px 0}
footer .w{display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap}
footer a{color:#D8DDE1}

.telbar{display:none}

/* reveal — classe ajoutée PAR JS (app.js), failsafe + reduced-motion */
.js .rv-init{opacity:0;transform:translateY(14px);transition:opacity .5s ease,transform .5s ease}
.js .rv-in{opacity:1;transform:none}
@media (prefers-reduced-motion: reduce){.js .rv-init{opacity:1;transform:none;transition:none}}

@media (max-width:880px){
  .hero .grid,.ticket,.herit,.contact-grid{grid-template-columns:1fr}
  .hpic img{height:280px}
  .bande .w{grid-template-columns:repeat(2,1fr)}
  .bande .c:nth-child(3){border-left:0}
  .serv,.avis-grid,.urg-grid,.prix-cards{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  .portes{grid-template-columns:1fr}
  body{padding-bottom:64px}
  .telbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:60;background:var(--rouge);justify-content:center}
  .telbar a{color:#fff;font-family:var(--f-titre);font-weight:900;font-size:20px;text-decoration:none;padding:14px 20px;display:inline-flex;align-items:center;gap:10px;min-height:var(--cible-min);width:100%;justify-content:center}
}

/* ============================================================
   V2 — LA VIE (01/08 au soir — verdict Saadou : « plat, il manque
   des éléments, peu de photos ». Animations riches mais maîtrisées :
   classe posée par JS, filet 1400 ms, reduced-motion respecté.)
   ============================================================ */

/* icônes Lucide vendorisées, colorées par mask */
.ic{display:inline-block;width:28px;height:28px;background:var(--cuivre);flex:none;
  -webkit-mask-image:var(--ic);-webkit-mask-size:contain;-webkit-mask-repeat:no-repeat;-webkit-mask-position:center;
  mask-image:var(--ic);mask-size:contain;mask-repeat:no-repeat;mask-position:center}
.ic.blanc{background:#fff}
.ic.vif{background:var(--cuivre-vif)}
.ic.nuit{background:var(--nuit)}
.ic.s20{width:20px;height:20px}
.ic.s36{width:36px;height:36px}

/* sceau M&F — le poinçon (logo v1, SVG inline, currentColor) */
.sceau{flex:none;display:inline-block}
.marque-bloc{display:flex;align-items:center;gap:12px;text-decoration:none}
.sceau-foot{opacity:.9}

/* mini-preuves du hero (remplissent le « vide » — verdict 01/08) */
.usp-mini{list-style:none;margin-top:18px;display:grid;gap:9px}
.usp-mini li{display:flex;align-items:center;gap:10px;font-size:16px;color:#E4E8EB}
.usp-mini b{color:#fff}

/* bande manifeste — la règle de la maison */
.manifesto{background:var(--nuit);color:#fff;margin-top:var(--pad-section);padding:34px 0;border-top:var(--filet);border-bottom:var(--filet)}
.manifesto .w{display:grid;grid-template-columns:auto 1fr;gap:26px;align-items:center}
.manifesto h2{font-size:clamp(20px,2.2vw,25px);color:var(--cuivre-vif);white-space:nowrap}
.manifesto ul{list-style:none;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.manifesto li{font-family:var(--f-titre);font-weight:700;font-size:clamp(16px,1.6vw,19px);line-height:1.3;border-left:2px solid var(--cuivre);padding-left:14px}

/* hero v2 — plus grand, portes en rang majeur, resserré (v1.1)
   v1.2 : fond TEXTURÉ avec relief (grain + lumières) — verdict « plat » du 01/08 */
/* v1.7 — arrière-plan section 1 : LA FLOTTE FLOQUÉE (photo générée par Saadou,
   nano banana sur base Pexels) sous voile nuit — le technicien reste la photo hero.
   Le voile est fort à gauche (lisibilité du texte) et s'ouvre vers la droite pour
   laisser deviner les camionnettes. */
.hero-v2{color:#fff;padding:calc(var(--pad-section)*.5) 0 0;overflow:hidden;
  background:
    linear-gradient(90deg, rgba(9,24,32,.93) 0%, rgba(9,24,32,.82) 42%, rgba(10,28,38,.55) 100%),
    url("assets/photos/flotte-floquee.jpg") center 68%/cover,
    var(--nuit-2)}
.hpic{overflow:hidden}
.hpic img{transform:scale(1.08)}
.hero-v2 .haut{display:grid;grid-template-columns:1.05fr .95fr;gap:34px;align-items:stretch;margin-bottom:20px}
.hero-v2 .hpic img{height:100%;min-height:470px}
/* v1.4 — la photo en FOND PERDU jusqu'au bord droit de l'écran (capture annotée de Saadou :
   les vides gauche/haut/droite du hero). La marge négative tire l'image hors du conteneur. */
@media (min-width:1161px){
  .hero-v2 .hpic{margin-right:calc((1120px - 100vw)/2 - 20px)}
  .hero-v2 .hpic img{border-right:0}
}
.hero-v2 h1{font-size:clamp(38px,5.6vw,62px);font-weight:900;margin-bottom:14px}
.hero-v2 h1 .l2{display:block;color:var(--cuivre-vif)}
.hero-v2 .sub{font-size:20px;color:#D8DDE1;max-width:54ch}
.hero-v2 .hpic img{height:470px}
.portes-xl{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.porte-xl{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center;text-decoration:none;padding:22px 22px;border:2px solid var(--ligne-nuit);transition:transform .25s ease,background .25s ease,box-shadow .25s ease;box-shadow:0 8px 0 rgba(0,0,0,.38)}
.porte-xl:active{transform:translateY(4px);box-shadow:0 3px 0 rgba(0,0,0,.38)}
.porte-xl .tt{font-family:var(--f-titre);font-weight:900;font-size:clamp(20px,2.2vw,26px);color:#fff;display:block}
.porte-xl .dd{font-size:15px;color:#C4CDD3;display:block;margin-top:3px}
.porte-xl .fl{transition:transform .25s ease}
.porte-xl:hover{transform:translateY(-3px)}
.porte-xl:hover .fl{transform:translateX(6px)}
.porte-xl.urgence{background:var(--rouge);border-color:var(--rouge)}
.porte-xl.urgence .dd{color:#F3CFC9}
.porte-xl.projet:hover{background:var(--nuit)}
.pulse{position:relative}
.js .pulse::after{content:"";position:absolute;inset:-6px;border:2px solid rgba(255,255,255,.5);animation:pulser 2s ease-out infinite}
@keyframes pulser{0%{opacity:.8;transform:scale(.9)}70%{opacity:0;transform:scale(1.25)}100%{opacity:0}}
@media (prefers-reduced-motion: reduce){.js .pulse::after{animation:none;opacity:0}}

/* entrée du hero — orchestrée au chargement */
.js .ent{opacity:0;transform:translateY(18px)}
.js.entree .ent{opacity:1;transform:none;transition:opacity .6s ease,transform .6s ease}
.js.entree .ent.d1{transition-delay:.08s}.js.entree .ent.d2{transition-delay:.18s}
.js.entree .ent.d3{transition-delay:.3s}.js.entree .ent.d4{transition-delay:.44s}
.js.entree .ent.d5{transition-delay:.58s}
@media (prefers-reduced-motion: reduce){.js .ent{opacity:1;transform:none}}

/* stagger générique au scroll (enfants marqués data-st) */
.js [data-st]{opacity:0;transform:translateY(16px);transition:opacity .5s ease,transform .5s ease}
.js .st-in [data-st]{opacity:1;transform:none}
.js .st-in [data-st="2"]{transition-delay:.1s}
.js .st-in [data-st="3"]{transition-delay:.2s}
.js .st-in [data-st="4"]{transition-delay:.3s}
@media (prefers-reduced-motion: reduce){.js [data-st]{opacity:1;transform:none;transition:none}}

/* rayons dosés (v1.2) */
.btn,.tel-top,.porte-xl,.choix label,form.demo input,form.demo textarea,.mini-form input{border-radius:var(--radius)}
.scol,.avisj,.pcard,.step,.urg,.coord,.wiz,.laisser-avis,.compo,.sw,.typodemo{border-radius:var(--radius-carte)}
.galerie img,.galerie figure,.hpic img,.herit .photo-r img,.avisj .qui img{border-radius:var(--radius-img)}
.hpic img{border-radius:var(--radius-carte)}

/* carrousel d'avis en pile (dessin Saadou 01/08 23h33) — carte active au centre,
   voisines derrière assombries, flèches rondes. Sans JS : liste verticale simple. */
.caro{position:relative;margin-top:8px}
.caro .scene{position:relative;height:340px;overflow:hidden}
.js .caro .carte{position:absolute;top:50%;left:50%;width:min(560px,78%);transform:translate(-50%,-50%);transition:transform .5s cubic-bezier(.22,.8,.3,1),filter .5s,opacity .5s;will-change:transform}
.js .caro .carte .avisj{box-shadow:0 8px 0 rgba(22,35,43,.12);height:264px;display:flex;flex-direction:column;overflow:hidden}
.js .caro .carte .avisj p{flex:0 1 auto}
.js .caro .carte .avisj .rep{margin-top:auto}
.js .caro .carte[data-pos="0"]{z-index:9;transform:translate(-50%,-50%) scale(1)}
.js .caro .carte[data-pos="-1"]{z-index:8;transform:translate(calc(-50% - 46%),-50%) scale(.88);filter:brightness(.82)}
.js .caro .carte[data-pos="1"]{z-index:8;transform:translate(calc(-50% + 46%),-50%) scale(.88);filter:brightness(.82)}
.js .caro .carte[data-pos="-2"]{z-index:7;transform:translate(calc(-50% - 78%),-50%) scale(.78);filter:brightness(.62)}
.js .caro .carte[data-pos="2"]{z-index:7;transform:translate(calc(-50% + 78%),-50%) scale(.78);filter:brightness(.62)}
.js .caro .carte[data-pos="-3"],.js .caro .carte[data-pos="3"]{z-index:6;opacity:0;transform:translate(-50%,-50%) scale(.7)}
.js .caro .carte[data-pos="x"]{z-index:5;opacity:0;transform:translate(-50%,-50%) scale(.66);pointer-events:none}
.caro .fl{position:absolute;top:50%;transform:translateY(-50%);z-index:12;width:52px;height:52px;border-radius:50%;background:var(--nuit-2);color:#fff;border:0;cursor:pointer;font-size:22px;display:flex;align-items:center;justify-content:center;box-shadow:0 5px 0 rgba(8,24,32,.45);transition:transform .15s,box-shadow .15s}
.caro .fl:hover{transform:translateY(calc(-50% - 2px))}
.caro .fl:active{transform:translateY(calc(-50% + 2px));box-shadow:0 2px 0 rgba(8,24,32,.45)}
.caro .fl.prev{left:-6px}
.caro .fl.next{right:-6px}
.caro .pts{display:flex;justify-content:center;gap:8px;margin-top:14px}
.caro .pts i{width:9px;height:9px;border-radius:50%;background:var(--ligne);transition:background .2s,transform .2s}
.caro .pts i.on{background:var(--cuivre);transform:scale(1.25)}
html:not(.js) .caro .scene{height:auto;overflow:visible}
html:not(.js) .caro .carte{margin-bottom:12px}
html:not(.js) .caro .fl,html:not(.js) .caro .pts{display:none}
@media (max-width:700px){
  .caro .scene{height:400px}
  .js .caro .carte{width:86%}
  .js .caro .carte[data-pos="-1"]{transform:translate(calc(-50% - 24%),-50%) scale(.9);filter:brightness(.75)}
  .js .caro .carte[data-pos="1"]{transform:translate(calc(-50% + 24%),-50%) scale(.9);filter:brightness(.75)}
  .js .caro .carte[data-pos="-2"],.js .caro .carte[data-pos="2"]{opacity:0}
  .caro .fl{width:46px;height:46px}
  .caro .fl.prev{left:2px}.caro .fl.next{right:2px}
}

/* barre d'avis à la Goettl — note + étoiles ambrées + Google + badges */
.gbar{display:flex;align-items:center;gap:22px;flex-wrap:wrap;background:var(--blanc);border:var(--filet-fin);border-radius:var(--radius-carte);padding:18px 24px;margin-bottom:22px;box-shadow:0 5px 0 rgba(22,35,43,.08)}
.gbar .note{font-family:var(--f-titre);font-weight:900;font-size:44px;color:var(--nuit);line-height:1}
.gbar .stars{color:#FABB05;font-size:26px;letter-spacing:3px;line-height:1}
.gbar .glg{display:flex;align-items:center;gap:8px;font-weight:700;color:#5F6368;font-size:17px}
.gbar .glg svg{width:24px;height:24px}
.gbar .cnt{font-size:15.5px;color:#4a4640}
.gbar .badges{margin-left:auto;display:flex;gap:10px;flex-wrap:wrap}
.gbar .badge-c{border:2px solid var(--nuit);border-radius:var(--radius);font-family:var(--f-titre);font-weight:700;font-size:13.5px;color:var(--nuit);padding:7px 12px}
@media (max-width:880px){.gbar .badges{margin-left:0}}

/* avis v2 — visages + Google + entreprise */
.avisj .qui{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.avisj .qui img{width:44px;height:44px;border-radius:50%;object-fit:cover;object-position:center 22%;border:2px solid var(--cuivre)}
.avisj .qui .init{width:44px;height:44px;border-radius:50%;background:var(--nuit);color:#fff;font-family:var(--f-titre);font-weight:700;font-size:18px;display:flex;align-items:center;justify-content:center;border:2px solid var(--cuivre);flex:none}
.avisj .qui .n{font-family:var(--f-titre);font-weight:700;font-size:15px;color:var(--nuit);line-height:1.2}
.avisj .qui .e{display:block;font-family:var(--f-texte);font-weight:400;font-size:12.5px;color:#6b645a}
.avisj .qui .g{margin-left:auto;width:20px;height:20px;flex:none}
.avisj .et{color:var(--cuivre);letter-spacing:2px;font-size:13px}
.laisser-avis{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:var(--blanc);border:var(--filet-fin);border-left:var(--filet);padding:16px 20px;margin-top:18px}
.laisser-avis p{font-size:16px}
.laisser-avis b{font-family:var(--f-titre)}

/* bande logos clients (remplace le ticker texte — verdict 01/08) */
/* v1.8 — logos v3 (détourage propre, pad 4 uniforme) : emblème hors wordmark ~100 px
   pour tous, centres posés sur la médiane. Traits séparateurs en ::after de hauteur
   FIXE centrés (les border-right suivaient la hauteur de chaque item : bâtonnets
   inégaux). Tailles en classes .lg-* (l'inline écrasait la règle mobile). */
.ticker .rail{align-items:center}
.ticker .logo-item{display:inline-flex;align-items:center;padding:0 30px;border-right:0;position:relative;opacity:.92;transition:opacity .2s,transform .2s}
.ticker .logo-item::after{content:"";position:absolute;right:0;top:50%;transform:translateY(-50%);height:96px;width:1px;background:var(--ligne)}
.logo-item:hover{opacity:1;transform:scale(1.04)}
.logo-item img{width:auto;display:block}
.lg-brasserie{height:112px}
.lg-fournil{height:111px}
.lg-valimmo{height:111px;transform:translateY(-3px)}
.lg-hotel{height:105px}
.lg-garage{height:107px}
.lg-tilleuls{height:108px;transform:translate(-7px,8px)}
.lg-peniche{height:105px}
.lg{width:40px;height:40px;border-radius:50%;overflow:hidden;background:#fff;border:1px solid var(--ligne);flex:none;display:flex;align-items:center;justify-content:center}
.lg img{width:100%;height:100%;object-fit:cover;object-position:var(--op,50% 50%);transform:scale(var(--z,1))}
@media (max-width:880px){
  .ticker .logo-item{padding:0 16px}
  .ticker .logo-item::after{height:54px}
  .lg-brasserie{height:64px}.lg-fournil{height:63px}.lg-valimmo{height:63px;transform:translateY(-2px)}
  .lg-hotel{height:60px}.lg-garage{height:61px}
  .lg-tilleuls{height:62px;transform:translate(-4px,5px)}.lg-peniche{height:60px}
}
.ticker-label{text-align:center;font-size:12.5px;letter-spacing:1.6px;color:#8a8177;padding:12px 0 2px;font-weight:700}

/* ticker (mécanique de défilement conservée) */
.ticker{background:var(--papier);border-bottom:var(--filet-fin);overflow:hidden;padding:18px 0 20px}
@media (max-width:880px){.ticker{padding:12px 0 14px}}
.ticker .rail{display:flex;gap:0;white-space:nowrap;width:max-content}
.js .ticker .rail{animation:defile 38s linear infinite}
.ticker:hover .rail{animation-play-state:paused}
@keyframes defile{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@media (prefers-reduced-motion: reduce){.js .ticker .rail{animation:none}}
.ticker span{font-size:15px;color:#4a4640;padding:0 18px;border-right:1px solid var(--ligne)}
.ticker b{font-family:var(--f-titre);color:var(--nuit)}
.ticker i{font-style:normal;color:var(--cuivre);font-weight:700}

/* pages légales — colonne lisible */
.legal{max-width:760px}
.legal h2{font-family:var(--f-titre);color:var(--nuit);font-size:21px;margin:26px 0 8px;padding-top:18px;border-top:var(--filet-fin)}
.legal h2:first-child{margin-top:0;padding-top:0;border-top:0}
.legal p{color:#4a4640;line-height:1.65}
.legal p+p{margin-top:10px}
.legal a{color:var(--cuivre);font-weight:700}

/* avant / après — curseur */
.ba{position:relative;border:var(--estampille);height:440px;overflow:hidden;touch-action:none;cursor:ew-resize;user-select:none}
.ba img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba .apres{clip-path:inset(0 0 0 50%)}
.ba .poignee{position:absolute;top:0;bottom:0;left:50%;width:3px;background:var(--cuivre-vif);pointer-events:none}
.ba .poignee::after{content:"◂ ▸";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);background:var(--cuivre-vif);color:var(--nuit-2);font-weight:900;font-size:15px;padding:8px 10px;white-space:nowrap}
.ba .tag{position:absolute;top:14px;font-family:var(--f-titre);font-weight:900;font-size:14px;letter-spacing:1px;padding:6px 12px;background:var(--nuit-2);color:#fff}
.ba .tag.a{left:14px}
.ba .tag.b{right:14px;background:var(--cuivre-vif);color:var(--nuit-2)}

/* galerie chantiers */
.galerie{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.galerie figure{position:relative;overflow:hidden;border:var(--filet-fin);margin:0}
.galerie img{width:100%;height:210px;object-fit:cover;display:block;transition:transform .5s ease}
.galerie figure:hover img{transform:scale(1.06)}
.galerie figcaption{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(12,34,46,.92));color:#fff;font-size:13.5px;padding:26px 12px 10px}
@media (prefers-reduced-motion: reduce){.galerie img{transition:none}.galerie figure:hover img{transform:none}}

/* marques posées */
.marques{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-top:14px}
.marques span{border:1px solid var(--ligne-nuit);color:#C4CDD3;font-size:14px;padding:6px 12px;font-family:var(--f-titre)}
.marques .l{font-size:13.5px;color:#AFC0CB;border:0;padding:0;font-family:var(--f-texte)}

/* compteur — chiffres vivants */
.count{font-variant-numeric:tabular-nums}

/* héritage v2 : photo réelle encadrée estampille */
.herit .photo-r{border:var(--estampille);position:relative}
.herit .photo-r img{width:100%;height:360px;object-fit:cover;display:block}
.herit .photo-r .badge{position:absolute;left:-1px;bottom:-1px;background:var(--nuit-2);color:var(--cuivre-vif);font-family:var(--f-titre);font-weight:700;font-size:13px;letter-spacing:1px;padding:8px 14px;border:var(--estampille)}

@media (max-width:880px){
  .hero-v2 .haut{grid-template-columns:1fr}
  .hero-v2 .hpic img{height:280px}
  .portes-xl{grid-template-columns:1fr}
  .ba{height:320px}
  .galerie{grid-template-columns:repeat(2,1fr)}
  .galerie img{height:150px}
  .manifesto .w{grid-template-columns:1fr}
  .manifesto h2{white-space:normal}
  .manifesto ul{grid-template-columns:1fr}
}

/* ============ ESTIMATEUR DE DEVIS (devis.html) ============ */
.wiz{background:#fff;border:var(--filet-fin);border-top:var(--filet);padding:26px;max-width:820px;margin:0 auto}
.wiz .prog{display:flex;gap:6px;margin-bottom:22px}
.wiz .prog i{flex:1;height:5px;background:var(--ligne)}
.wiz .prog i.on{background:var(--cuivre)}
.wiz h2{font-size:22px;margin-bottom:4px}
.wiz .aide{font-size:14.5px;color:#6b645a;margin-bottom:16px}
.wiz .etape{display:none}
.wiz .etape.on{display:block}
.choix{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.choix label{display:flex;align-items:center;gap:12px;border:2px solid var(--ligne);padding:15px 16px;cursor:pointer;font-size:16.5px;font-weight:600;color:var(--nuit);transition:border-color .15s,background .15s;min-height:var(--cible-min)}
.choix label:hover{border-color:var(--cuivre)}
.choix input{accent-color:var(--cuivre);width:20px;height:20px;flex:none}
.choix label:has(input:checked){border-color:var(--cuivre);background:var(--papier);box-shadow:0 4px 0 rgba(168,95,51,.25)}
.wiz .nav{display:flex;justify-content:space-between;gap:12px;margin-top:22px}
.wiz .btn[disabled]{opacity:.45;pointer-events:none}
.resultat{border:var(--estampille);background:var(--nuit-2);color:#fff;padding:24px;margin-top:6px}
.resultat .l{font-size:14px;color:#AFC0CB}
.resultat .v{font-family:var(--f-titre);font-weight:900;font-size:clamp(30px,4.5vw,42px);color:var(--cuivre-vif)}
.resultat .d{font-size:15px;color:#D8DDE1;margin-top:8px;max-width:60ch}
.circuit{margin-top:22px}
.circuit .steps{grid-template-columns:repeat(3,1fr)}
.mini-form{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:16px}
.mini-form input{border:1px solid #b9b2a5;background:var(--papier);padding:12px;font:inherit;font-size:16px;min-height:var(--cible-min)}
.mini-form .full{grid-column:1/-1}
.note-demo{font-size:13px;color:#8a8177;margin-top:12px}
@media (max-width:640px){.choix{grid-template-columns:1fr}.mini-form{grid-template-columns:1fr}.circuit .steps{grid-template-columns:1fr}}

/* très petits écrans — le header compact (débordement attrapé par width-sweep à 320px) */
@media (max-width:430px){
  .sceau{width:36px;height:36px}
  .blason{width:62px;height:41px}
  .marque{font-size:15px}
  .marque small{display:none}
  .marque-bloc{gap:7px}
  .tel-top{font-size:14.5px;padding:6px 8px;gap:4px}
  .sticky .w{padding:0 10px;gap:8px}
}

/* v1.5 — icônes en data-URI (les masques vers fichiers externes sont bloqués en file://) */
.ic-tel{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-phone-call%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M13 2a9 9 0 0 1 9 9%22 /%3E %3Cpath d=%22M13 6a5 5 0 0 1 5 5%22 /%3E %3Cpath d=%22M13.832 16.568a1 1 0 0 0 1.213-.303l.355-.465A2 2 0 0 1 17 15h3a2 2 0 0 1 2 2v3a2 2 0 0 1-2 2A18 18 0 0 1 2 4a2 2 0 0 1 2-2h3a2 2 0 0 1 2 2v3a2 2 0 0 1-.8 1.6l-.468.351a1 1 0 0 0-.292 1.233 14 14 0 0 0 6.392 6.384%22 /%3E %3C/svg%3E")}
.ic-goutte{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-droplets%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M7 16.3c2.2 0 4-1.83 4-4.05 0-1.16-.57-2.26-1.71-3.19S7.29 6.75 7 5.3c-.29 1.45-1.14 2.84-2.29 3.76S3 11.1 3 12.25c0 2.22 1.8 4.05 4 4.05z%22 /%3E %3Cpath d=%22M12.56 6.6A10.97 10.97 0 0 0 14 3.02c.5 2.5 2 4.9 4 6.5s3 3.5 3 5.5a6.98 6.98 0 0 1-11.91 4.97%22 /%3E %3C/svg%3E")}
.ic-flamme{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-flame%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M12 3q1 4 4 6.5t3 5.5a1 1 0 0 1-14 0 5 5 0 0 1 1-3 1 1 0 0 0 5 0c0-2-1.5-3-1.5-5q0-2 2.5-4%22 /%3E %3C/svg%3E")}
.ic-cle{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-wrench%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M14.7 6.3a1 1 0 0 0 0 1.4l1.6 1.6a1 1 0 0 0 1.4 0l3.106-3.105c.32-.322.863-.22.983.218a6 6 0 0 1-8.259 7.057l-7.91 7.91a1 1 0 0 1-2.999-3l7.91-7.91a6 6 0 0 1 7.057-8.259c.438.12.54.662.219.984z%22 /%3E %3C/svg%3E")}
.ic-bouclier{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-shield-check%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M20 13c0 5-3.5 7.5-7.66 8.95a1 1 0 0 1-.67-.01C7.5 20.5 4 18 4 13V6a1 1 0 0 1 1-1c2 0 4.5-1.2 6.24-2.72a1.17 1.17 0 0 1 1.52 0C14.51 3.81 17 5 19 5a1 1 0 0 1 1 1z%22 /%3E %3Cpath d=%22m9 12 2 2 4-4%22 /%3E %3C/svg%3E")}
.ic-pin{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-map-pin%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M20 10c0 4.993-5.539 10.193-7.399 11.799a1 1 0 0 1-1.202 0C9.539 20.193 4 14.993 4 10a8 8 0 0 1 16 0%22 /%3E %3Ccircle cx=%2212%22 cy=%2210%22 r=%223%22 /%3E %3C/svg%3E")}
.ic-badge{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-badge-check%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22M3.85 8.62a4 4 0 0 1 4.78-4.77 4 4 0 0 1 6.74 0 4 4 0 0 1 4.78 4.78 4 4 0 0 1 0 6.74 4 4 0 0 1-4.77 4.78 4 4 0 0 1-6.75 0 4 4 0 0 1-4.78-4.77 4 4 0 0 1 0-6.76Z%22 /%3E %3Cpath d=%22m9 12 2 2 4-4%22 /%3E %3C/svg%3E")}
.ic-timer{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-timer%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cline x1=%2210%22 x2=%2214%22 y1=%222%22 y2=%222%22 /%3E %3Cline x1=%2212%22 x2=%2215%22 y1=%2214%22 y2=%2211%22 /%3E %3Ccircle cx=%2212%22 cy=%2214%22 r=%228%22 /%3E %3C/svg%3E")}
.ic-marteau{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-hammer%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22m15 12-9.373 9.373a1 1 0 0 1-3.001-3L12 9%22 /%3E %3Cpath d=%22m18 15 4-4%22 /%3E %3Cpath d=%22m21.5 11.5-1.914-1.914A2 2 0 0 1 19 8.172v-.344a2 2 0 0 0-.586-1.414l-1.657-1.657A6 6 0 0 0 12.516 3H9l1.243 1.243A6 6 0 0 1 12 8.485V10l2 2h1.172a2 2 0 0 1 1.414.586L18.5 14.5%22 /%3E %3C/svg%3E")}
.ic-fleche{--ic:url("data:image/svg+xml,%3Csvg class=%22lucide lucide-chevron-right%22 xmlns=%22http://www.w3.org/2000/svg%22 width=%2224%22 height=%2224%22 viewBox=%220 0 24 24%22 fill=%22none%22 stroke=%22currentColor%22 stroke-width=%222%22 stroke-linecap=%22round%22 stroke-linejoin=%22round%22 %3E %3Cpath d=%22m9 18 6-6-6-6%22 /%3E %3C/svg%3E")}

/* ============================================================
   V4 — DEVIS EN LIGNE (02/08 — signal prospects via Saadou : « un vrai
   DEVIS, pas une estimation ». Standard → devis ferme signable ;
   grand chantier → visite gratuite + devis 24 h.)
   ============================================================ */
.devis-doc{background:#fff;border:var(--estampille);padding:0;margin:14px 0 18px}
.dv-head{display:flex;gap:16px;align-items:flex-start;flex-wrap:wrap;padding:16px 18px;border-bottom:var(--filet)}
.dv-id{flex:1;min-width:220px}
.dv-id b{font-family:var(--f-titre);font-size:18px;color:var(--nuit);display:block;margin-bottom:4px}
.dv-id span{font-size:13px;color:#4a4640;line-height:1.5}
.dv-date{text-align:right;font-size:13.5px;color:#4a4640;display:flex;flex-direction:column;gap:4px}
.dv-date b{font-family:var(--f-titre);color:var(--nuit)}
.dv-lignes{width:100%;border-collapse:collapse;font-size:15.5px}
.dv-lignes th{background:var(--nuit);color:#fff;font-family:var(--f-titre);font-weight:700;text-align:left;padding:10px 18px;font-size:14px}
.dv-lignes th:last-child,.dv-lignes td:last-child{text-align:right;white-space:nowrap}
.dv-lignes td{padding:12px 18px;border-bottom:var(--filet-fin);vertical-align:top}
.dv-lignes td:last-child{font-family:var(--f-titre);font-weight:700;color:var(--nuit)}
#dv-note-txt{font-size:13.5px;color:#6b645a;text-align:left !important;font-family:var(--f-texte);font-weight:400}
.dv-total td{background:var(--papier);border-bottom:0;font-family:var(--f-titre);font-weight:900;color:var(--nuit);font-size:17px}
.dv-total td:last-child{font-size:24px;color:var(--cuivre)}
.dv-mentions{list-style:none;padding:12px 18px 16px;font-size:13px;color:#6b645a}
.dv-mentions li{padding:3px 0 3px 16px;position:relative}
.dv-mentions li::before{content:"—";position:absolute;left:0;color:var(--cuivre)}
.dv-actions{display:flex;gap:12px;flex-wrap:wrap;margin-top:4px}
.dispo-titre{font-family:var(--f-titre);font-size:17px;color:var(--nuit);margin:18px 0 8px}
.dispo-aide{font-family:var(--f-texte);font-weight:400;font-size:13px;color:#8a8177}
.dispos{display:grid;gap:8px}
.dispo-jour{display:flex;align-items:center;gap:10px;flex-wrap:wrap;border:var(--filet-fin);background:#fff;padding:8px 12px;border-radius:var(--radius-carte)}
.dispo-jour .dj{font-family:var(--f-titre);font-weight:700;font-size:14.5px;color:var(--nuit);min-width:130px;text-transform:capitalize}
.dispo-jour label{display:inline-flex;align-items:center;gap:7px;font-size:14.5px;border:2px solid var(--ligne);border-radius:var(--radius);padding:7px 12px;cursor:pointer;min-height:40px}
.dispo-jour label:has(input:checked){border-color:var(--cuivre);background:var(--papier);font-weight:700}
.dispo-jour input{accent-color:var(--cuivre);width:17px;height:17px}
.sign-bloc{position:relative;margin-bottom:12px}
#pad{width:100%;height:150px;background:#fff;border:2px dashed var(--cuivre);border-radius:var(--radius-carte);touch-action:none;display:block;cursor:crosshair}
.sign-clear{position:absolute;top:8px;right:8px;border:1px solid var(--ligne);background:var(--papier);font-size:12.5px;padding:5px 10px;border-radius:var(--radius);cursor:pointer;color:#6b645a}
.case{display:flex;gap:10px;align-items:flex-start;font-size:14px;color:#3b362f;margin-top:10px;cursor:pointer}
.case input{accent-color:var(--cuivre);width:19px;height:19px;flex:none;margin-top:1px}
.case .dv-ref{font-family:var(--f-titre);color:var(--nuit)}
.confirm{text-align:center;padding:8px 0}
.confirm-badge{width:64px;height:64px;border-radius:50%;background:var(--nuit);color:var(--cuivre-vif);font-size:32px;font-weight:900;display:flex;align-items:center;justify-content:center;margin:0 auto 12px;border:3px double var(--cuivre)}
.confirm h2{color:var(--nuit)}
.confirm .aide{max-width:56ch;margin:8px auto 0}
.mail-mock{text-align:left;border:var(--filet-fin);border-left:var(--filet);background:#fff;border-radius:var(--radius-carte);margin-top:18px;overflow:hidden}
.mm-head{background:var(--papier);border-bottom:var(--filet-fin);font-family:var(--f-titre);font-weight:700;font-size:13.5px;color:var(--nuit);padding:9px 14px}
.mm-demo{font-family:var(--f-texte);font-weight:400;color:#8a8177;font-size:12px}
.mm-body{padding:10px 14px 12px}
.mm-ligne{font-size:13.5px;color:#3b362f;padding:3px 0}
.mm-ligne b{font-family:var(--f-titre);color:var(--nuit)}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:var(--nuit);color:#fff;font-size:14.5px;padding:11px 18px;border-radius:var(--radius);z-index:99;box-shadow:0 5px 0 rgba(8,24,32,.4);max-width:92vw;text-align:center}
.urgent-note{border:2px solid var(--rouge);border-left-width:8px;background:#fff;color:var(--encre);font-size:15px;padding:12px 14px;border-radius:var(--radius-carte);margin-top:14px}
@media (max-width:760px){
  /* la passe mobile du PARCOURS (retour Saadou : « sur téléphone ça s'affiche mal ») */
  .hero-page{padding:24px 0}
  .hero-page h1{font-size:24px}
  .hero-page .sub{font-size:14.5px}
  .hero-page .estampille{font-size:10.5px}
  .wiz{padding:16px 14px}
  .wiz .prog{margin-bottom:14px}
  .wiz h2{font-size:19px}
  .wiz .aide{font-size:13px;margin-bottom:12px}
  .choix{gap:8px}
  .choix label{font-size:14.5px;padding:11px 12px;min-height:44px;gap:9px}
  .choix label .ic{width:22px;height:22px}
  .wiz .nav{margin-top:16px}
  .wiz .nav .btn{font-size:14.5px;padding:10px 14px}
  .resultat{padding:16px}
  .resultat .v{font-size:20px !important}
  .resultat .d{font-size:13.5px}
  .mini-form input{font-size:15px;padding:10px 11px}
  .dispo-titre{font-size:15.5px;margin:14px 0 6px}
  .dispo-aide{font-size:12px}
  .dispo-jour{padding:7px 10px;gap:8px}
  .dispo-jour .dj{font-size:13.5px}
  .dispo-jour label{font-size:13.5px;padding:6px 10px;min-height:38px}
  #pad{height:130px}
  .case{font-size:13px}
  .urgent-note{font-size:13.5px}
  .note-demo{font-size:11.5px}
  .confirm h2{font-size:20px}
  .confirm .aide{font-size:13.5px}
  .confirm-badge{width:52px;height:52px;font-size:26px}
  .mm-head{font-size:12.5px}
  .mm-ligne{font-size:12.5px}
  .dv-head{padding:12px 12px}
  .dv-lignes td,.dv-lignes th{padding:9px 12px;font-size:13.5px}
  .dv-total td:last-child{font-size:20px}
  .dv-mentions{font-size:11.5px;padding:10px 12px 12px}
  .dv-date{text-align:left}
  .dispo-jour .dj{min-width:100%;margin-bottom:2px}
  .dv-actions .btn{width:100%;justify-content:center}
}

/* ============================================================
   V3 — PASSE MOBILE (02/08 — verdict Saadou sur la prod au téléphone :
   « tout est énorme, trop écrit ; le desktop est bon ». Ces réglages
   ne touchent QUE ≤ 760 px. Détail par demande :
   ① CTA tél plus petits ② toutes les polices descendent d'un cran
   ③ estampille « de père en fils » centrée ④ photo technicien carrée
   ⑤ fond flotte cadré sur le flanc floqué (pas la calandre)
   ⑥ copy allégé (.m-off + leads + doublons) ⑦ étapes = cartes qui
   s'empilent ⑧ flèches du carrousel aux bords + avis entiers
   ⑨ telbar du bas supprimée (doublon de la navbar)
   ============================================================ */
@media (max-width:760px){
  /* ② — l'échelle descend */
  body{font-size:16px;padding-bottom:0}
  .demo-band{font-size:11px;padding:5px 10px}
  .hero-v2 h1{font-size:27px}
  .sec-head h2{font-size:21px}
  .bande .v{font-size:21px}
  .bande .k{font-size:11.5px}
  .bande .c{padding:12px 8px}
  .garantie .w{font-size:13px;padding:10px 14px}
  .ticker-label{font-size:10.5px;letter-spacing:1.1px}
  .estampille{font-size:11px;letter-spacing:1px;padding:5px 10px}
  .ticket h3{font-size:19px}
  .ticket p{font-size:14.5px}
  .ticket .prix .v{font-size:20px}
  .ticket .prix .n{font-size:12px}
  .marques span{font-size:12.5px;padding:5px 9px}
  .scol h3{font-size:16.5px}
  .scol .st{font-size:12.5px}
  .scol li{font-size:14px;padding:8px 0}
  .scol li b{font-size:13.5px}
  .step h3{font-size:16px}
  .step p{font-size:14px}
  .step::before{font-size:22px}
  .step .d{font-size:12px}
  .gbar{gap:12px;padding:12px 14px}
  .gbar .note{font-size:30px}
  .gbar .stars{font-size:18px;letter-spacing:2px}
  .gbar .glg{font-size:14px}
  .gbar .cnt{font-size:12.5px}
  .gbar .badge-c{font-size:11px;padding:5px 8px}
  .avisj{font-size:14px;padding:12px 14px}
  .avisj .qui .n{font-size:13.5px}
  .avisj .rep{font-size:12.5px}
  .laisser-avis p{font-size:14px}
  .manifesto h2{font-size:17px}
  .manifesto li{font-size:14.5px}
  .herit p{font-size:14.5px}
  .herit .photo-r img{height:260px}
  .herit .photo-r .badge{font-size:11px;padding:6px 10px}
  .galerie figcaption{font-size:11.5px;padding:18px 8px 8px}
  .zone h2{font-size:19px}
  .zone p{font-size:14px}
  .villes span{font-size:13px;padding:6px 10px}
  .faq summary{font-size:14.5px;padding:12px 14px}
  .faq .r{font-size:14px;padding:0 14px 12px 32px}
  .final h2{font-size:21px}
  .final p{font-size:13.5px}
  footer{font-size:12.5px}
  .btn{font-size:15px;padding:11px 16px}
  .usp-mini li{font-size:13.5px;gap:8px}
  .preuve-hero{font-size:13.5px;gap:10px}

  /* ① — les CTA téléphone, un cran plus petits */
  .tel-top{font-size:14px;padding:5px 9px;min-height:42px}
  .final .tel{font-size:23px;border-width:2px;padding:9px 18px}
  .porte-xl{padding:14px;gap:10px}
  .porte-xl .tt{font-size:16.5px}
  .porte-xl .ic.s36{width:24px;height:24px}

  /* ③ — « de père en fils » au milieu */
  .hero-v2 .estampille{display:block;width:max-content;margin:0 auto 14px}

  /* ④ — la photo du technicien, format carré */
  .hero-v2 .hpic img{height:auto;aspect-ratio:1/1;min-height:0}

  /* ⑤ — le fond flotte montre le flanc floqué, pas la calandre */
  .hero-v2{background:
    linear-gradient(180deg, rgba(9,24,32,.93) 0%, rgba(9,24,32,.82) 45%, rgba(10,28,38,.38) 100%),
    url("assets/photos/flotte-floquee.jpg") 76% 66%/cover,
    var(--nuit-2)}

  /* ⑥ — copy allégé : le mobile porte l'essentiel, le desktop garde tout */
  .m-off{display:none}
  .hero-v2 .sub{display:none}
  .lead{display:none}
  .porte-xl .dd{display:none}
  .ticket>div>p:first-of-type{display:none}
  .herit div>p:nth-of-type(2){display:none}
  .final p:nth-of-type(2){display:none}

  /* ⑦ — comment ça se passe : les cartes s'empilent au scroll */
  .steps{display:block}
  .steps .step{position:sticky;margin-bottom:16px;box-shadow:0 -8px 24px rgba(12,34,46,.18)}
  .steps .step:nth-child(1){top:74px}
  .steps .step:nth-child(2){top:90px}
  .steps .step:nth-child(3){top:106px}

  /* ⑧ — flèches aux bords, avis affichés en entier */
  .caro .fl{width:40px;height:40px;font-size:18px}
  .caro .fl.prev{left:-12px}
  .caro .fl.next{right:-12px}
  .caro .scene{height:460px}
  .js .caro .carte{width:94%}
  .js .caro .carte .avisj{height:340px}
  .js .caro .carte[data-pos="-1"]{transform:translate(calc(-50% - 14%),-50%) scale(.92);filter:brightness(.7)}
  .js .caro .carte[data-pos="1"]{transform:translate(calc(-50% + 14%),-50%) scale(.92);filter:brightness(.7)}
  .js .caro .carte[data-pos="-2"],.js .caro .carte[data-pos="2"]{opacity:0}

  /* ⑨ — le doublon téléphone du bas disparaît (déjà dans la navbar) */
  .telbar{display:none}
}
