
/* ═══════════ PEINT À QUATRE PINCEAUX — LA GALERIE, DÉCLINÉE MARINE & OR ═══════════
   Le design d'origine est conservé : ivoire de porcelaine, didone, filets fins.
   Le noir encre devient le marine du logo, l'or champagne devient son or.
   Mono-thème volontaire (lumière d'atelier parisien) : tout est peint. */
:root{
  /* Mascotte encodée une seule fois puis réutilisée en fond : l'encoder à chaque emplacement coûtait 0,76 Mo. */
  --gustave-ava:url("/assets/gustave-avatar-256.webp");
  --gustave:url("/assets/mascotte-720.webp");

  --ivoire:#F6F3EC;
  --porcelaine:#FDFCF9;
  --noir:#0A1A33;
  --graphite:#3A4557;
  --taupe:#8F897C;
  --ligne:rgba(10,26,51,.16);
  --ligne-soft:rgba(10,26,51,.08);
  --or:#AC813D;
  --or-vif:#D2A95E;
  --nuit:#0E2445;
  --or-ombre:#734C13;
  --or-lumiere:#E7C381;
  --or-metal:linear-gradient(115deg,#734C13 0%,#AC813D 26%,#E7C381 50%,#AC813D 74%,#734C13 100%);
  --rouge:#B30F18;
  --creme:#EAE5DC;
  --wordmark:"Cinzel","Trajan Pro",Georgia,serif;
  --vert:#2E5941;
  --serif:"Bodoni Moda","Didot",Georgia,serif;
  --sans:"Jost","Segoe UI",system-ui,sans-serif;
  --e:cubic-bezier(.22,.7,.16,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:100px}
body{background:var(--ivoire);color:var(--noir);font-family:var(--sans);font-weight:300;font-size:17px;line-height:1.7;overflow-x:hidden;-webkit-font-smoothing:antialiased}
::selection{background:var(--noir);color:var(--ivoire)}
h1,h2,h3{font-family:var(--serif);font-weight:500;line-height:1.08;letter-spacing:.005em}
img{max-width:100%;display:block}
button{font-family:var(--sans);cursor:pointer}
a{color:inherit}
.wrap{max-width:1220px;margin:0 auto;padding:0 clamp(20px,4.5vw,56px)}
section{padding:clamp(80px,10vw,140px) 0;position:relative}
em{font-style:italic}

/* grain discret */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:5;opacity:.035;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}

/* préloader */
#loader{position:fixed;inset:0;z-index:300;background:var(--ivoire);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:26px;transition:opacity .9s var(--e),visibility .9s}
#loader.done{opacity:0;visibility:hidden}
#loader .lw{font-family:var(--serif);font-size:clamp(1.4rem,3.4vw,2.2rem);letter-spacing:.34em;text-indent:.34em;opacity:0;animation:lfade 1.1s .15s var(--e) forwards}
#loader .ll{width:min(320px,60vw);height:1px;background:var(--ligne);position:relative;overflow:hidden}
#loader .ll::after{content:"";position:absolute;inset:0;background:var(--or);transform:translateX(-101%);animation:ldraw 1.2s .3s var(--e) forwards}
#loader .ls{font-size:.62rem;letter-spacing:.44em;text-indent:.44em;text-transform:uppercase;color:var(--taupe);opacity:0;animation:lfade 1.1s .5s var(--e) forwards}
@keyframes lfade{to{opacity:1}}
@keyframes ldraw{to{transform:none}}

/* curseur sur mesure */
#cur,#cur2{position:fixed;top:0;left:0;pointer-events:none;z-index:250;border-radius:50%;display:none}
#curlab{position:fixed;top:0;left:0;pointer-events:none;z-index:251;display:none;background:var(--noir);color:var(--ivoire);font-size:.56rem;letter-spacing:.3em;text-transform:uppercase;padding:8px 16px 8px 19px;transform:translate(-50%,-140%)}
body.cur-on.cur-voir #curlab{display:block}
body.cur-voir #cur2{opacity:0}
#cur{width:6px;height:6px;background:var(--or);transform:translate(-50%,-50%)}
#cur2{width:34px;height:34px;border:1px solid rgba(172,129,61,.55);transform:translate(-50%,-50%);transition:width .3s,height .3s,border-color .3s}
body.cur-on #cur,body.cur-on #cur2{display:block}
body.cur-hov #cur2{width:56px;height:56px;border-color:var(--or)}

/* filet de progression */
#progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--or);z-index:99}

/* ---------- reveals ---------- */
.rv{opacity:0;transform:translateY(30px);transition:opacity .95s var(--e),transform .95s var(--e)}
.rv.in{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  .rv{opacity:1;transform:none;transition:none}
  *{animation-duration:.01s!important;animation-iteration-count:1!important;transition-duration:.01s!important}
  html{scroll-behavior:auto}
  #loader{display:none}
}

/* ---------- titres & étiquettes ---------- */
.eti{display:flex;align-items:center;gap:16px;font-size:.66rem;letter-spacing:.42em;text-transform:uppercase;color:var(--or);font-weight:400;margin-bottom:22px}
.eti::before{content:"";width:44px;height:1px;background:var(--or)}
.eti .no{color:var(--taupe);letter-spacing:.2em}
.sec-title{font-size:clamp(2.1rem,4.6vw,3.7rem);margin-bottom:18px;text-wrap:balance}
.sec-title em{color:var(--or)}
.sec-sub{color:var(--graphite);max-width:60ch;font-size:1.02rem;font-weight:300}

/* ---------- nav ---------- */
nav{position:fixed;inset:0 0 auto 0;z-index:60;background:rgba(246,243,236,.86);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid var(--ligne-soft)}
.nav-in{display:flex;align-items:center;justify-content:space-between;height:78px;max-width:1320px;margin:0 auto;padding:0 clamp(18px,3vw,40px);gap:14px}
.logo{display:flex;align-items:center;gap:14px;text-decoration:none;flex:none}
.logo-m{font-family:var(--serif);font-size:1.7rem;font-weight:600;line-height:1;color:var(--noir)}
.logo-m i{font-style:normal;color:var(--or)}
.logo-t{font-size:.6rem;letter-spacing:.4em;text-transform:uppercase;color:var(--taupe);border-left:1px solid var(--ligne);padding-left:14px;line-height:1.6}
.nav-links{display:flex;gap:clamp(16px,2.4vw,34px);list-style:none;align-items:center}
.nav-links a{text-decoration:none;font-size:.72rem;letter-spacing:.24em;text-transform:uppercase;color:var(--graphite);position:relative;padding:4px 0;transition:color .3s}
.nav-links a:hover,.nav-links a:focus-visible{color:var(--noir)}
.nav-links a::after{content:"";position:absolute;left:0;bottom:0;width:100%;height:1px;background:var(--or);transform:scaleX(0);transform-origin:right;transition:transform .45s var(--e)}
.nav-links a:hover::after{transform:scaleX(1);transform-origin:left}
.nav-cta{display:flex;align-items:center;gap:18px;flex:none}
.tel{font-family:var(--serif);font-weight:600;color:var(--noir);text-decoration:none;font-size:1rem;font-variant-numeric:tabular-nums;white-space:nowrap}
.tel:hover{color:var(--or)}
@media(max-width:1020px){
  .nav-links{position:fixed;top:78px;left:0;right:0;display:flex;gap:0;overflow-x:auto;background:rgba(246,243,236,.94);backdrop-filter:blur(12px);border-bottom:1px solid var(--ligne-soft);scrollbar-width:none;padding:0 10px}
  .nav-links::-webkit-scrollbar{display:none}
  .nav-links li{flex:none}
  .nav-links a{display:block;padding:13px 14px}
  .nav-links a::after{display:none}
  header.hero{padding-top:174px}
  html{scroll-padding-top:145px}
}
@media(max-width:640px){.logo-t{display:none}}
@media(max-width:470px){.nav-cta .tel{display:none}}

/* ---------- boutons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:12px;padding:17px 34px;border:1px solid var(--noir);background:var(--noir);color:var(--ivoire);font-size:.7rem;letter-spacing:.3em;text-transform:uppercase;font-weight:400;text-decoration:none;position:relative;overflow:hidden;transition:color .45s var(--e),border-color .45s}
.btn::before{content:"";position:absolute;inset:0;background:var(--or);transform:translateY(101%);transition:transform .45s var(--e)}
.btn:hover::before{transform:none}
.btn:hover{color:#fff;border-color:var(--or)}
.btn span{position:relative;z-index:1}
.btn:focus-visible{outline:2px solid var(--or);outline-offset:3px}
.btn-ghost{background:transparent;color:var(--noir)}
.btn-ghost:hover{color:#fff}
.btn-ivoire{background:var(--ivoire);color:var(--noir);border-color:var(--ivoire)}
.btn-ivoire:hover{color:#fff}
.btn-sm{padding:13px 24px;font-size:.64rem}

/* ---------- héro ---------- */
header.hero{min-height:100svh;display:flex;align-items:center;position:relative;overflow:hidden;padding:130px 0 60px;background:var(--ivoire)}
.hero-in{display:grid;grid-template-columns:1.08fr .92fr;gap:clamp(34px,5.5vw,84px);align-items:center;max-width:1320px;margin:0 auto;padding:0 clamp(20px,4.5vw,56px);width:100%}
@media(max-width:940px){.hero-in{grid-template-columns:1fr}}
.hero-in>div{min-width:0}
.sur-titre{display:flex;align-items:center;gap:16px;font-size:.63rem;letter-spacing:.44em;text-transform:uppercase;color:var(--taupe);margin-bottom:30px}
.sur-titre::after{content:"";flex:1;max-width:120px;height:1px;background:var(--ligne)}
.dispo{display:inline-flex;align-items:center;gap:10px;font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;color:var(--vert);margin-bottom:26px;border:1px solid rgba(46,89,65,.3);padding:9px 18px}
.dot{width:6px;height:6px;border-radius:50%;background:var(--vert);animation:pulse 2.4s infinite}
@keyframes pulse{0%{box-shadow:0 0 0 0 rgba(46,89,65,.35)}70%{box-shadow:0 0 0 9px rgba(46,89,65,0)}100%{box-shadow:0 0 0 0 rgba(46,89,65,0)}}
.hero h1{font-size:clamp(2.7rem,6vw,5rem);font-weight:500;text-wrap:pretty}
/* révélation ligne à ligne du titre (signature) */
.hero h1 .w{display:inline-block;overflow:hidden;vertical-align:bottom}
.hero h1 .w>span{display:inline-block;transform:translateY(112%);transition:transform 1.1s var(--e)}
.hero h1.play .w>span{transform:none}
.hero h1 .mot{font-style:italic;color:var(--or);display:inline-block}
.hero h1 .mot b{font-weight:inherit;display:inline-block;animation:motin .9s var(--e)}
@keyframes motin{from{opacity:0;transform:translateY(30%)}}
.hero p.lead{margin:28px 0 38px;color:var(--graphite);max-width:50ch;font-size:1.06rem}
.hero-ctas{display:flex;gap:16px;flex-wrap:wrap}
.hero-stats{display:flex;margin-top:60px;flex-wrap:wrap}
.stat{padding:0 clamp(20px,3vw,40px);border-left:1px solid var(--ligne)}
.stat:first-child{padding-left:0;border-left:none}
.stat b{font-family:var(--serif);font-size:clamp(1.9rem,3.2vw,2.7rem);font-weight:600;display:block;font-variant-numeric:tabular-nums;line-height:1.1}
.stat span{font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;color:var(--taupe)}
/* photo en arche */
.hero-visu{position:relative;justify-self:center;width:min(100%,470px)}
.cadre{background:var(--porcelaine);padding:12px;border:1px solid var(--ligne-soft);box-shadow:0 30px 70px rgba(10,26,51,.14)}
.hero-photo{width:100%;height:auto;aspect-ratio:.82;object-fit:cover;border-radius:300px 300px 2px 2px}
.hero-visu .legende{display:flex;justify-content:space-between;align-items:center;padding:14px 6px 4px;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--taupe)}
.hero-visu .legende i{font-style:normal;color:var(--or)}
.gustave-hero{position:absolute;bottom:-10px;left:-52px;height:200px;filter:drop-shadow(0 16px 26px rgba(10,26,51,.28));animation:flot 7s ease-in-out infinite;z-index:2}
@keyframes flot{50%{transform:translateY(-10px)}}
@media(max-width:940px){.gustave-hero{left:-8px;height:160px}}
.scroll-hint{position:absolute;bottom:24px;left:50%;transform:translateX(-50%);font-size:.58rem;letter-spacing:.44em;color:var(--taupe);text-transform:uppercase;display:flex;flex-direction:column;align-items:center;gap:10px}
.scroll-hint::after{content:"";width:1px;height:44px;background:linear-gradient(var(--or),transparent);animation:drip 2.4s var(--e) infinite}
@keyframes drip{0%{transform:scaleY(0);transform-origin:top}55%{transform:scaleY(1);transform-origin:top}56%{transform-origin:bottom}100%{transform:scaleY(0);transform-origin:bottom}}

/* ---------- références ---------- */
.refs{background:var(--noir);color:var(--ivoire);padding:30px 0;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent);mask-image:linear-gradient(90deg,transparent,#000 7%,#000 93%,transparent)}
.marquee{display:flex;width:max-content;animation:slide 40s linear infinite}
.refs:hover .marquee{animation-play-state:paused}
.marquee span{font-family:var(--serif);font-size:1rem;letter-spacing:.28em;text-transform:uppercase;white-space:nowrap;opacity:.8;margin-right:64px;transition:opacity .3s}
.marquee span:hover{opacity:1}
.marquee span::after{content:"·";margin-left:64px;color:var(--or)}
@keyframes slide{to{transform:translateX(-50%)}}

/* ---------- le film ---------- */
#film{background:var(--noir);color:var(--ivoire)}
#film .sec-title{color:var(--ivoire)}
#film .sec-sub{color:rgba(246,243,236,.68)}
#film .eti{color:var(--or-vif)}
.film-head{text-align:center;display:flex;flex-direction:column;align-items:center}
.film-head .eti{justify-content:center}
.film-frame{margin:44px auto 0;max-width:1000px;padding:0}
.film-screen{position:relative;background:#0A0B0D;border:1px solid rgba(210,169,94,.35);overflow:hidden;
  box-shadow:0 40px 100px rgba(0,0,0,.6);aspect-ratio:16/9}
.film-screen video{width:100%;height:100%;object-fit:cover;display:block}
.film-play{position:absolute;inset:0;width:100%;height:100%;border:none;background:rgba(10,11,13,.32);
  display:grid;place-items:center;transition:opacity .5s var(--e),background .5s;padding:0}
.film-play span{width:84px;height:84px;border-radius:50%;border:1px solid var(--or-vif);background:rgba(246,243,236,.1);
  backdrop-filter:blur(6px);display:grid;place-items:center;transition:transform .45s var(--e),background .45s}
.film-play span::after{content:"";border-left:16px solid var(--ivoire);border-top:10px solid transparent;
  border-bottom:10px solid transparent;margin-left:5px}
.film-play:hover span{transform:scale(1.1);background:rgba(210,169,94,.3)}
.film-play.hidden{opacity:0;pointer-events:none}
.film-sound{position:absolute;right:16px;bottom:16px;z-index:2;border:1px solid rgba(246,243,236,.35);
  background:rgba(5,14,30,.55);backdrop-filter:blur(6px);color:var(--ivoire);
  font-size:.56rem;letter-spacing:.28em;text-transform:uppercase;padding:10px 18px;transition:all .3s}
.film-sound:hover{background:var(--or);border-color:var(--or);color:#fff}
.film-sound.on{background:var(--or-vif);border-color:var(--or-vif);color:var(--noir)}
.film-dur{position:absolute;left:16px;bottom:16px;z-index:2;font-size:.54rem;letter-spacing:.3em;
  text-transform:uppercase;color:rgba(246,243,236,.7);background:rgba(5,14,30,.55);padding:9px 14px;pointer-events:none}
.film-cap{display:flex;align-items:center;justify-content:space-between;gap:20px;flex-wrap:wrap;
  margin-top:22px;font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(246,243,236,.6)}
#film .btn{border-color:var(--ivoire);background:var(--ivoire);color:var(--noir)}
#film .btn:hover{color:#fff;border-color:var(--or)}
@media(max-width:600px){.film-play span{width:64px;height:64px}.film-cap{justify-content:center;text-align:center}}

/* ---------- filet qui se dessine ---------- */
.filet{max-width:1220px;margin:0 auto;padding:0 clamp(20px,4.5vw,56px);height:80px;display:flex;align-items:center}
.filet i{display:block;flex:1;height:1px;background:var(--ligne-soft);position:relative;overflow:visible}
.filet i::before{content:"";position:absolute;inset:0;background:var(--or);transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--e)}
.filet i::after{content:"✦";position:absolute;right:-4px;top:50%;transform:translateY(-50%) scale(0);color:var(--or);font-size:.7rem;transition:transform .5s 1.3s var(--e)}
.filet.trace i::before{transform:none}
.filet.trace i::after{transform:translateY(-50%) scale(1)}

/* ---------- réalisations ---------- */
#realisations{background:var(--porcelaine)}
.filt{display:flex;gap:6px;flex-wrap:wrap;margin-top:34px}
.fchip{padding:10px 20px;border:1px solid transparent;background:transparent;color:var(--taupe);font-size:.64rem;letter-spacing:.26em;text-transform:uppercase;transition:all .3s}
.fchip.on{color:var(--noir);border-color:var(--noir)}
.fchip:hover{color:var(--noir)}
.fchip:focus-visible{outline:2px solid var(--or);outline-offset:2px}
.real-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(310px,1fr));gap:clamp(20px,2.6vw,34px);margin-top:38px}
.real{display:block;text-decoration:none;transition:opacity .95s var(--e),transform .95s var(--e)}
.real .imgbox{position:relative;display:block;overflow:hidden;background:var(--ivoire);border:1px solid var(--ligne-soft);line-height:0}
.real img{width:100%;height:300px;object-fit:cover;transition:transform 1.4s var(--e),filter 1.4s var(--e)}
/* révélation des photos au clip-path (galerie) */
.rvimg .imgbox{clip-path:inset(100% 0 0 0);transition:clip-path 1.3s var(--e)}
.rvimg .imgbox img{transform:scale(1.14)}
.rvimg.in .imgbox{clip-path:inset(0 0 0 0)}
.rvimg.in .imgbox img{transform:scale(1)}
.rvimg.in:hover .imgbox img{transform:scale(1.05)}
@media (prefers-reduced-motion:reduce){.rvimg .imgbox{clip-path:none;transition:none}.rvimg .imgbox img{transform:none}}
.real:hover img{transform:scale(1.05)}
.real .voile{position:absolute;inset:0;background:linear-gradient(to top,rgba(10,26,51,.35),transparent 45%);opacity:0;transition:opacity .6s}
.real:hover .voile{opacity:1}
.real .cat{position:absolute;top:14px;left:14px;font-size:.56rem;letter-spacing:.3em;text-transform:uppercase;background:rgba(246,243,236,.92);color:var(--noir);padding:7px 14px}
.real .bas{display:flex;justify-content:space-between;align-items:baseline;gap:10px;padding:16px 2px 0;line-height:1.4}
.real .bas b{font-family:var(--serif);font-weight:500;font-size:1.12rem}
.real .bas span{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--or);white-space:nowrap;position:relative}
.real .bas span::after{content:"→";margin-left:8px;display:inline-block;transition:transform .4s var(--e)}
.real:hover .bas span::after{transform:translateX(6px)}
.real.hide{display:none}
.cta-band{display:flex;align-items:center;justify-content:space-between;gap:22px;flex-wrap:wrap;margin-top:60px;border-top:1px solid var(--ligne);border-bottom:1px solid var(--ligne);padding:30px 0}
.cta-band b{font-family:var(--serif);font-weight:500;font-size:1.5rem}
.cta-band .bs{display:flex;gap:14px;flex-wrap:wrap}

/* ---------- services ---------- */
.svc-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:0;margin-top:50px;border-top:1px solid var(--ligne);border-left:1px solid var(--ligne)}
.svc{padding:34px 30px 38px;border-right:1px solid var(--ligne);border-bottom:1px solid var(--ligne);background:transparent;transition:background .5s,opacity .95s var(--e),transform .95s var(--e);position:relative}
.svc:hover{background:var(--porcelaine)}
.svc .num{font-family:var(--serif);font-style:italic;font-size:1rem;color:var(--or);display:block;margin-bottom:16px}
.svc h3{font-size:1.3rem;font-weight:500;margin-bottom:10px}
.svc p{font-size:.9rem;color:var(--graphite)}
.svc::after{content:"";position:absolute;left:30px;bottom:24px;width:26px;height:1px;background:var(--or);transform:scaleX(0);transform-origin:left;transition:transform .5s var(--e)}
.svc:hover::after{transform:none}

/* ---------- simulateur (galerie de nuit) ---------- */
#simulateur{background:var(--noir);color:var(--ivoire)}
#simulateur .sec-title{color:var(--ivoire)}
#simulateur .sec-sub{color:rgba(246,243,236,.68)}
#simulateur .eti{color:var(--or-vif)}
.sim-shell{margin-top:50px;background:#0A1830;border:1px solid rgba(246,243,236,.1);box-shadow:0 40px 90px rgba(0,0,0,.5)}
.sim-top{display:flex;align-items:center;justify-content:space-between;padding:16px 24px;border-bottom:1px solid rgba(246,243,236,.09)}
.sim-top .t{font-size:.62rem;letter-spacing:.34em;text-transform:uppercase;color:rgba(246,243,236,.55)}
.sim-top .d{font-family:var(--serif);font-style:italic;color:var(--or-vif);font-size:.95rem}
.sim-body{display:grid;grid-template-columns:340px 1fr;min-height:480px}
@media(max-width:900px){.sim-body{grid-template-columns:1fr}}
.sim-side{padding:30px;border-right:1px solid rgba(246,243,236,.09);display:flex;flex-direction:column;gap:24px}
@media(max-width:900px){.sim-side{border-right:none;border-bottom:1px solid rgba(246,243,236,.09)}}
.sim-step{font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;color:var(--or-vif)}
.pal{display:grid;grid-template-columns:repeat(5,1fr);gap:9px;margin-top:14px}
.pal button{aspect-ratio:1;border:1px solid rgba(246,243,236,.14);transition:transform .25s,border-color .25s}
.pal button:hover{transform:scale(1.07)}
.pal button.on{border:2px solid var(--ivoire);transform:scale(1.1)}
.pal button:focus-visible{outline:2px solid var(--or-vif);outline-offset:2px}
.pal-name{font-size:.85rem;color:rgba(246,243,236,.65);min-height:1.4em;margin-top:12px;font-weight:300}
.pal-name b{color:var(--ivoire);font-family:var(--serif);font-weight:500}
.sim-range{width:100%;accent-color:var(--or-vif);margin-top:14px}
.sim-stage{position:relative;display:grid;place-items:center;padding:28px;background:
  linear-gradient(rgba(8,21,42,.92),rgba(8,21,42,.92)),repeating-conic-gradient(#1B1C21 0% 25%,#0A1830 0% 50%) 0 0/28px 28px}
.compare{position:relative;max-width:100%;line-height:0;overflow:hidden;box-shadow:0 22px 60px rgba(0,0,0,.55);border:1px solid rgba(246,243,236,.12);touch-action:none}
.compare canvas{max-width:100%;height:auto;display:block}
#sim-before{position:absolute;inset:0;width:100%;height:100%;clip-path:inset(0 calc(100% - var(--cut,0%)) 0 0)}
.cmp-handle{position:absolute;top:0;bottom:0;left:var(--cut,0%);width:1px;background:var(--or-vif);transform:translateX(-.5px);pointer-events:none;opacity:var(--cuto,0)}
.stage-in{width:100%;display:flex;flex-direction:column;align-items:center;gap:16px}
.cmp-bar{display:flex;align-items:center;gap:14px;width:min(100%,420px);font-size:.56rem;letter-spacing:.28em;text-transform:uppercase;color:rgba(246,241,231,.55)}
.cmp-bar input{flex:1;accent-color:var(--or-vif)}
.cmp-tag{position:absolute;top:14px;font-size:.54rem;letter-spacing:.3em;text-transform:uppercase;font-style:normal;background:rgba(10,26,51,.72);color:var(--ivoire);padding:6px 12px;pointer-events:none}
.cmp-tag.av{left:14px}.cmp-tag.ap{right:14px}
.compare{touch-action:pan-y;cursor:pointer}
.compare.brush{touch-action:none;cursor:crosshair;box-shadow:0 0 0 2px var(--or-vif),0 22px 60px rgba(0,0,0,.55)}
.sim-btn{background:transparent;color:#F6F3EC;border-color:rgba(246,243,236,.3)}
.sim-btn.on{background:var(--or-vif);color:var(--noir);border-color:var(--or-vif)}
.sim-btn.on::before{display:none}
.sim-auto{position:absolute;left:50%;bottom:58px;transform:translateX(-50%);z-index:4;
  background:var(--noir);color:var(--ivoire);border:1px solid var(--or);font-size:.56rem;letter-spacing:.24em;
  text-transform:uppercase;padding:11px 20px;cursor:pointer}
.sim-auto:hover{background:var(--or);border-color:var(--or)}
.sim-hint{position:absolute;left:50%;bottom:16px;transform:translateX(-50%);z-index:3;display:none;
  background:rgba(246,243,236,.94);color:var(--noir);font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;
  padding:10px 20px;white-space:nowrap;pointer-events:none;animation:hintpulse 2.6s ease-in-out infinite;line-height:1.4}
@keyframes hintpulse{50%{transform:translateX(-50%) translateY(-5px)}}
.drop{border:1px dashed rgba(246,243,236,.28);padding:20px;text-align:center;font-size:.85rem;color:rgba(246,243,236,.65);cursor:pointer;transition:border-color .3s,background .3s;margin-top:14px;font-weight:300}
.drop b{color:var(--or-vif);font-weight:400}
.drop:hover,.drop.over{border-color:var(--or-vif);background:rgba(210,169,94,.06)}
.gate{padding:46px clamp(24px,5vw,64px);display:grid;grid-template-columns:auto 1.1fr 1fr;gap:clamp(24px,4vw,52px);align-items:center}
@media(max-width:900px){.gate{grid-template-columns:1fr}.gate .gustave-gate{display:none}}
.gustave-gate{height:290px;filter:drop-shadow(0 18px 30px rgba(0,0,0,.5));animation:flot 7s ease-in-out infinite}
.gate h3{font-size:1.9rem;font-weight:500;color:var(--ivoire);margin-bottom:14px}
.gate p{color:rgba(246,243,236,.68);font-size:.94rem;font-weight:300}
.gate form{display:flex;flex-direction:column;gap:14px}
.field label{display:block;font-size:.58rem;letter-spacing:.3em;text-transform:uppercase;color:var(--taupe);margin-bottom:7px}
.gate .field label{color:rgba(246,243,236,.5)}
.field input,.field select,.field textarea{width:100%;background:var(--porcelaine);border:1px solid var(--ligne);padding:14px 16px;color:var(--noir);font-family:var(--sans);font-weight:300;font-size:.95rem;transition:border-color .3s;border-radius:0;-webkit-appearance:none;appearance:none}
.field select{appearance:auto;-webkit-appearance:auto}
.gate .field input{background:#101114;border-color:rgba(246,243,236,.16);color:var(--ivoire)}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--or)}
.gate .field input:focus{border-color:var(--or-vif)}
@media(max-width:900px){.field input,.field select,.field textarea,.chat-in input{font-size:16px}}
.sim-note{font-size:.76rem;color:rgba(246,243,236,.45);font-weight:300}

/* ---------- nouveautés ---------- */
.nv-head{display:flex;align-items:end;justify-content:space-between;gap:24px;flex-wrap:wrap}
.maj{font-size:.62rem;letter-spacing:.26em;text-transform:uppercase;color:var(--graphite);border:1px solid var(--ligne);padding:11px 20px;display:inline-flex;align-items:center;gap:10px}
.maj b{color:var(--or);font-weight:400}
.nv-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(290px,1fr));gap:clamp(20px,2.6vw,34px);margin-top:46px}
.nv-card{background:var(--porcelaine);border:1px solid var(--ligne-soft);cursor:pointer;text-align:left;color:var(--noir);transition:transform .5s var(--e),box-shadow .5s,opacity .95s var(--e);padding:0}
.nv-card:hover{transform:translateY(-6px);box-shadow:0 26px 60px rgba(10,26,51,.12)}
.nv-art{height:150px;position:relative}
.nv-tag{position:absolute;top:14px;left:14px;font-size:.54rem;letter-spacing:.3em;text-transform:uppercase;background:rgba(246,243,236,.94);padding:7px 13px;color:var(--noir)}
.nv-body{padding:26px 26px 30px}
.nv-body h3{font-size:1.3rem;font-weight:500;margin-bottom:10px}
.nv-body p{font-size:.88rem;color:var(--graphite);font-weight:300}
.nv-more{margin-top:18px;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--or);background:none;border:none;padding:0;font-family:var(--sans)}
.nv-more::after{content:"→";margin-left:8px;display:inline-block;transition:transform .4s var(--e)}
.nv-card:hover .nv-more::after{transform:translateX(6px)}
.nv-more:focus-visible{outline:2px solid var(--or);outline-offset:3px}

/* ---------- IA 24/7 ---------- */
#ia247{background:var(--porcelaine)}
.ia-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(34px,6vw,80px);align-items:center;margin-top:20px}
@media(max-width:900px){.ia-grid{grid-template-columns:1fr}}
.ia-steps{margin-top:34px;border-top:1px solid var(--ligne)}
.ia-step{display:flex;gap:26px;padding:22px 0;border-bottom:1px solid var(--ligne);align-items:baseline}
.ia-n{font-family:var(--serif);font-style:italic;font-size:1.5rem;color:var(--or);flex:none;width:40px}
.ia-step h3{font-size:1.14rem;font-weight:500;margin-bottom:4px}
.ia-step p{font-size:.88rem;color:var(--graphite);font-weight:300}
.phone-card{background:var(--ivoire);border:1px solid var(--ligne);padding:32px;position:relative;box-shadow:0 30px 70px rgba(10,26,51,.1)}
.phone-head{display:flex;align-items:center;gap:16px;margin-bottom:24px;padding-bottom:18px;border-bottom:1px solid var(--ligne)}
.phone-ava{width:54px;height:54px;border-radius:50%;overflow:hidden;background:var(--porcelaine);flex:none;border:1px solid var(--or)}
.phone-ava img{width:100%;height:100%;object-fit:cover}
.phone-head b{display:block;font-family:var(--serif);font-weight:500;font-size:1.05rem}
.phone-head span{font-size:.6rem;letter-spacing:.26em;text-transform:uppercase;color:var(--vert)}
.gustave-phone{position:absolute;right:-26px;bottom:-18px;height:190px;width:auto;filter:drop-shadow(0 16px 26px rgba(10,26,51,.28));animation:flot 7s ease-in-out infinite}
@media(max-width:520px){.gustave-phone{display:none}}
.msg{max-width:86%;padding:13px 18px;font-size:.88rem;margin-bottom:10px;opacity:0;transform:translateY(10px);animation:msgin .6s forwards;font-weight:300}
.msg.bot{background:var(--porcelaine);border:1px solid var(--ligne-soft)}
.msg.hum{background:var(--noir);color:var(--ivoire);margin-left:auto}
@keyframes msgin{to{opacity:1;transform:none}}
.msg.typing{display:inline-flex;gap:5px;align-items:center;padding:15px 18px}
.msg.typing i{width:5px;height:5px;border-radius:50%;background:var(--taupe);animation:tp 1s infinite}
.msg.typing i:nth-child(2){animation-delay:.18s}
.msg.typing i:nth-child(3){animation-delay:.36s}
@keyframes tp{40%{transform:translateY(-4px)}}

/* ---------- avis + garanties ---------- */
.avis-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:clamp(18px,2.4vw,30px);margin-top:48px}
.avis{background:var(--porcelaine);border:1px solid var(--ligne-soft);padding:32px 30px;display:flex;flex-direction:column;gap:18px;transition:transform .5s var(--e),box-shadow .5s,opacity .95s var(--e)}
.avis:hover{transform:translateY(-5px);box-shadow:0 24px 54px rgba(10,26,51,.1)}
.stars{color:var(--or);letter-spacing:6px;font-size:.8rem}
.avis p{font-family:var(--serif);font-style:italic;font-size:1.02rem;color:var(--graphite);line-height:1.6}
.avis .who b{display:block;font-size:.9rem;font-weight:500}
.avis .who span{font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;color:var(--taupe)}
.gar-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:0;margin-top:52px;border-top:1px solid var(--ligne);border-left:1px solid var(--ligne)}
.gar-card{padding:30px 28px;border-right:1px solid var(--ligne);border-bottom:1px solid var(--ligne);text-align:left}
.gar-card .gi{font-family:var(--serif);font-style:italic;color:var(--or);font-size:1.15rem;display:block;margin-bottom:10px}
.gar-card b{font-family:var(--serif);font-weight:500;font-size:1.1rem;display:block;margin-bottom:6px}
.gar-card span{font-size:.84rem;color:var(--graphite);font-weight:300}
.zone-line{margin-top:44px;display:flex;gap:8px 22px;flex-wrap:wrap;align-items:baseline;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--graphite)}
.zone-line .zl{color:var(--taupe);letter-spacing:.3em}
.zone-line b{font-family:var(--serif);font-weight:600;color:var(--or);letter-spacing:.06em;margin-right:4px}

.identite{background:var(--porcelaine);border:1px solid var(--ligne-soft);border-top:2px solid var(--or);padding:34px clamp(22px,4vw,42px);max-width:880px;margin:36px auto 0}
.identite p{font-size:.96rem;color:var(--graphite);font-weight:300}
.id-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(215px,1fr));gap:2px;margin:24px 0 20px;background:var(--ligne-soft)}
.id-grid div{background:var(--porcelaine);padding:14px 16px}
.id-grid span{display:block;font-size:.56rem;letter-spacing:.26em;text-transform:uppercase;color:var(--taupe);margin-bottom:5px}
.id-grid b{font-weight:500;font-size:.9rem}
.id-grid a{text-decoration:none;color:var(--noir)}
.id-note{font-size:.86rem;color:var(--taupe);margin-top:4px}

/* ---------- FAQ ---------- */
.faq{max-width:840px;margin:46px auto 0}
.faq details{border-bottom:1px solid var(--ligne)}
.faq details:first-child{border-top:1px solid var(--ligne)}
.faq summary{padding:24px 8px;cursor:pointer;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:18px;font-family:var(--serif);font-weight:500;font-size:1.14rem}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--sans);font-weight:300;font-size:1.5rem;color:var(--or);transition:transform .4s;flex:none;line-height:1}
.faq details[open] summary::after{transform:rotate(45deg)}
.faq .rep{padding:0 8px 26px;font-size:.94rem;color:var(--graphite);font-weight:300;max-width:66ch}

/* ---------- devis ---------- */
#devis{background:var(--noir);color:var(--ivoire)}
#devis .sec-title{color:var(--ivoire)}
#devis .sec-sub{color:rgba(246,243,236,.68)}
#devis .eti{color:var(--or-vif)}
.devis-grid{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(34px,6vw,80px);margin-top:30px}
@media(max-width:900px){.devis-grid{grid-template-columns:1fr}}
.gar{display:flex;align-items:baseline;gap:16px;padding:15px 0;border-bottom:1px solid rgba(246,243,236,.12);font-size:.95rem;font-weight:300}
.gar i{font-style:italic;font-family:var(--serif);color:var(--or-vif);flex:none}
form.big{display:grid;grid-template-columns:1fr 1fr;gap:16px;background:var(--porcelaine);padding:36px;color:var(--noir);box-shadow:0 40px 90px rgba(0,0,0,.4)}
form.big .full{grid-column:1/-1}
@media(max-width:640px){form.big{grid-template-columns:1fr}}
.form-ok{grid-column:1/-1;border:1px solid rgba(46,89,65,.4);color:var(--vert);padding:16px;font-size:.92rem;display:none}
#devis .coord{margin-top:32px;display:flex;flex-direction:column;gap:10px;font-size:.95rem;color:rgba(246,243,236,.75);font-weight:300}
#devis .coord .tel{color:var(--or-vif)}

/* ---------- footer ---------- */
footer{background:var(--noir);color:rgba(246,243,236,.7);padding:0 0 46px}
.foot-filet{height:1px;background:linear-gradient(90deg,transparent,var(--or) 30%,var(--or) 70%,transparent)}
.foot{display:grid;grid-template-columns:2fr 1fr 1fr;gap:44px;padding-top:64px}
@media(max-width:800px){.foot{grid-template-columns:1fr}}
.foot h4{font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;color:var(--or-vif);margin-bottom:18px;font-weight:400}
.foot a{display:block;text-decoration:none;font-size:.9rem;padding:5px 0;transition:color .25s;font-weight:300}
.foot a:hover{color:var(--ivoire)}
.foot p{font-size:.9rem;max-width:44ch;font-weight:300}
.foot .logo-m{color:var(--ivoire)}
.copy{margin-top:50px;padding-top:24px;border-top:1px solid rgba(246,243,236,.12);display:flex;justify-content:space-between;gap:14px;flex-wrap:wrap;font-size:.62rem;letter-spacing:.22em;text-transform:uppercase;color:rgba(246,243,236,.4)}

/* ---------- barre appel mobile ---------- */
.callbar{position:fixed;left:0;right:0;bottom:0;z-index:70;display:none;grid-template-columns:1fr 1fr;background:rgba(10,26,51,.96);backdrop-filter:blur(10px);border-top:1px solid rgba(210,169,94,.4);padding-bottom:env(safe-area-inset-bottom)}
.callbar a{display:flex;align-items:center;justify-content:center;gap:10px;padding:18px 10px;font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;text-decoration:none;color:var(--ivoire)}
.callbar .cb-tel{border-right:1px solid rgba(246,243,236,.14)}
.callbar .cb-dev{color:var(--or-vif)}
@media(max-width:860px){.callbar{display:grid}footer{padding-bottom:140px}}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:90;display:none;place-items:center;padding:20px}
.modal.open{display:grid}
.modal-veil{position:absolute;inset:0;background:rgba(10,26,51,.6);backdrop-filter:blur(6px)}
.modal-box{position:relative;max-width:680px;width:100%;max-height:86vh;overflow:auto;background:var(--porcelaine);padding:44px;animation:pop .45s var(--e);box-shadow:0 50px 110px rgba(10,26,51,.4);border-top:3px solid var(--or)}
.modal-box:focus{outline:none}
@keyframes pop{from{opacity:0;transform:translateY(26px)}}
.modal-x{position:absolute;top:16px;right:16px;width:40px;height:40px;border:1px solid var(--ligne);background:transparent;color:var(--noir);font-size:1rem;transition:background .3s}
.modal-x:hover{background:var(--ivoire)}
.jour{font-size:.58rem;letter-spacing:.34em;text-transform:uppercase;color:var(--or);margin-bottom:14px}
.modal-box h3{font-size:1.9rem;font-weight:500;margin-bottom:18px}
.modal-box p{color:var(--graphite);font-size:.95rem;margin-bottom:15px;font-weight:300}
.modal-box .astuce{border-left:2px solid var(--or);background:var(--ivoire);padding:18px 20px;font-size:.9rem;font-weight:300}

/* ---------- chatbot Gustave ---------- */
#chat-fab{position:fixed;right:22px;bottom:22px;z-index:80;width:64px;height:64px;border-radius:50%;border:1px solid var(--or);padding:0;overflow:hidden;background:var(--porcelaine);box-shadow:0 16px 40px rgba(10,26,51,.28);transition:transform .35s var(--e),box-shadow .35s}
#chat-fab:hover{transform:scale(1.07);box-shadow:0 20px 50px rgba(172,129,61,.4)}
#chat-fab img{width:100%;height:100%;object-fit:cover}
#chat-fab .bulle{position:absolute;bottom:4px;left:50%;transform:translateX(-50%);background:var(--noir);color:var(--or-vif);font-size:.5rem;letter-spacing:.2em;padding:2px 8px;border-radius:99px}
@media(max-width:860px){#chat-fab{bottom:92px}}
#chat{position:fixed;right:22px;bottom:98px;z-index:80;width:min(380px,calc(100vw - 34px));background:var(--porcelaine);box-shadow:0 40px 90px rgba(10,26,51,.35);display:none;flex-direction:column;max-height:min(560px,66vh);border:1px solid var(--ligne);border-top:3px solid var(--or)}
@media(max-width:860px){#chat{bottom:170px}}
#chat.open{display:flex;animation:pop .4s var(--e)}
.chat-head{display:flex;align-items:center;gap:14px;padding:16px 20px;background:var(--noir);color:var(--ivoire)}
.chat-ava{width:44px;height:44px;border-radius:50%;overflow:hidden;background:var(--ivoire);flex:none;border:1px solid var(--or)}
.chat-ava img{width:100%;height:100%;object-fit:cover}
.chat-head b{font-family:var(--serif);font-weight:500;font-size:1rem;display:block}
.chat-head span{font-size:.56rem;letter-spacing:.26em;text-transform:uppercase;color:#8FBF9C}
.chat-log{flex:1;overflow-y:auto;padding:20px;display:flex;flex-direction:column;background:var(--ivoire)}
.chat-log .msg{animation-duration:.4s}
.chat-log .msg.bot{background:var(--porcelaine)}
.qr{display:flex;flex-wrap:wrap;gap:8px;padding:12px 20px;background:var(--ivoire)}
.qr button{border:1px solid var(--ligne);background:var(--porcelaine);color:var(--noir);padding:9px 16px;font-size:.66rem;letter-spacing:.14em;text-transform:uppercase;transition:all .3s}
.qr button:hover{background:var(--noir);color:var(--ivoire);border-color:var(--noir)}
.chat-in{display:flex;gap:10px;padding:14px;border-top:1px solid var(--ligne-soft);background:var(--porcelaine)}
.chat-in input{flex:1;background:var(--ivoire);border:1px solid var(--ligne);padding:12px 16px;color:var(--noir);font-family:var(--sans);font-weight:300;font-size:.9rem}
.chat-in input:focus{outline:none;border-color:var(--or)}
.chat-in button{width:46px;height:46px;border:none;background:var(--noir);color:var(--or-vif);font-size:1rem;transition:background .3s}
.chat-in button:hover{background:var(--or)}

/* ---------- toast ---------- */
#toast{position:fixed;left:50%;bottom:28px;transform:translate(-50%,90px);z-index:100;background:var(--noir);color:var(--ivoire);padding:15px 30px;font-size:.8rem;letter-spacing:.08em;opacity:0;transition:all .5s var(--e);box-shadow:0 18px 44px rgba(10,26,51,.35);max-width:92vw;text-align:center;border-bottom:2px solid var(--or)}
#toast.show{transform:translate(-50%,0);opacity:1}
@media(max-width:860px){#toast{bottom:100px}}

*{scrollbar-width:thin}
::-webkit-scrollbar{width:9px;height:9px}
::-webkit-scrollbar-thumb{background:#CFC8B8;border-radius:99px}

/* ---------- Mascotte : image déclarée une fois, réutilisée en fond ---------- */
.ava-gustave{background-image:var(--gustave-ava);background-size:cover;background-position:center;background-repeat:no-repeat}
#chat-fab .fab-img{position:absolute;inset:0;border-radius:50%}
/* display:block est nécessaire — un <span> est inline et ignorerait la hauteur.
   La règle .gate .gustave-gate{display:none} du mode téléphone est plus
   spécifique (0,2,0) et continue donc de l'emporter. */
.gustave-hero,.gustave-gate{
  display:block;background-image:var(--gustave);background-size:contain;
  background-position:bottom center;background-repeat:no-repeat;
  aspect-ratio:811/985;   /* proportions réelles de mascotte.png (Gustave), lues à la transformation */
}
/* ═══════════ PEINT À QUATRE PINCEAUX — ajouts au design d'origine ═══════════ */

/* Marque : monogramme + nom en capitales romaines, comme sur le logo */
.logo-img{width:46px;height:auto;flex:none}
.logo-wm{font-family:var(--wordmark);font-weight:600;font-size:1.02rem;letter-spacing:.06em;line-height:1.15;color:var(--noir)}
@media(max-width:1400px){.logo-t{display:none}}
.nav-links a{white-space:nowrap}
@media(max-width:520px){.logo-wm{font-size:.84rem}.logo-img{width:38px}}
#loader .l-mono{width:92px;height:auto;opacity:0;animation:lfade 1.1s var(--e) forwards}
#loader .lw{font-family:var(--wordmark);font-weight:600;color:var(--noir)}
.foot .logo-wm{color:var(--ivoire)}
.medaillon{display:inline-grid;place-items:center;width:62px;height:62px;border-radius:50%;background:var(--porcelaine);box-shadow:0 0 0 1px var(--or);flex:none}
.medaillon img{width:72%;height:auto}

/* Héro : le métier d'abord, la ligne poétique ensuite, la preuve d'expérience */
.sur-titre sup,.zone-line sup,.gar sup,.id-grid sup,.chapeau sup{font-size:.62em}
.h1-poeme{font-family:var(--serif);font-style:italic;font-size:clamp(1.45rem,2.9vw,2.25rem);line-height:1.25;color:var(--graphite);margin:18px 0 0}
.h1-poeme .mot{color:var(--or);display:inline-block}
.h1-poeme .mot b{font-weight:inherit;display:inline-block;animation:motin .9s var(--e)}
.xp{margin:26px 0 0;padding-left:18px;border-left:2px solid var(--or);font-size:.98rem;color:var(--graphite);max-width:52ch;font-weight:300}
.xp b{color:var(--noir);font-weight:500}
.hero-ctas{flex-wrap:wrap}
.btn .wa-dot{width:8px;height:8px;border-radius:50%;background:#25D366;box-shadow:0 0 0 3px rgba(37,211,102,.2);position:relative;z-index:1;flex:none}
.cta-note{margin-top:14px;font-size:.78rem}
.stat .plus{color:var(--or);font-weight:500}

/* La toile : quatre coups de pinceau, en écho au nom de la maison */
.hero-toile{position:relative;display:block;width:100%;aspect-ratio:.82;border-radius:300px 300px 2px 2px;overflow:hidden;
  background:radial-gradient(120% 90% at 28% 18%,#FDFBF6 0%,#F2ECE0 58%,#E5DAC5 100%)}
.hero-toile i{position:absolute;left:-10%;width:120%;height:23%;transform-origin:0 50%;transform:scaleX(0);animation:coup 1.25s var(--e) forwards;
  border-radius:46% 54% 50% 50%/58% 42% 58% 42%;
  -webkit-mask-image:linear-gradient(90deg,#000 0,#000 84%,transparent 100%);mask-image:linear-gradient(90deg,#000 0,#000 84%,transparent 100%)}
.hero-toile i::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(0deg,rgba(255,255,255,.09) 0 2px,transparent 2px 6px)}
.hero-toile .c1{top:7%;rotate:-5deg;background:linear-gradient(90deg,#0A1A33,#1B3563 70%,#24466B);animation-delay:1.15s}
.hero-toile .c2{top:30%;rotate:3deg;background:var(--or-metal);animation-delay:1.5s}
.hero-toile .c3{top:53%;rotate:-2deg;background:linear-gradient(90deg,#10284F,#0A1A33 80%);animation-delay:1.85s}
.hero-toile .c4{top:76%;rotate:4deg;background:linear-gradient(90deg,#E4DDCF,#F8F4EC);animation-delay:2.2s}
.toile-mono{position:absolute;left:50%;top:50%;width:46%;height:auto;padding:6%;border-radius:50%;background:rgba(253,252,249,.95);
  box-shadow:0 18px 40px rgba(10,26,51,.28),0 0 0 1px rgba(172,129,61,.5);transform:translate(-50%,-50%) scale(.86);opacity:0;animation:monoin 1s 2.8s var(--e) forwards}
@keyframes coup{to{transform:scaleX(1)}}
@keyframes monoin{to{opacity:1;transform:translate(-50%,-50%) scale(1)}}
@media(prefers-reduced-motion:reduce){.hero-toile i{transform:none;animation:none}.toile-mono{opacity:1;transform:translate(-50%,-50%);animation:none}}

/* Emplacement « à confirmer » : n'existe que dans l'aperçu */
.a-confirmer{display:inline-block;border:1px dashed var(--rouge);color:var(--rouge);background:rgba(179,15,24,.05);padding:2px 10px;font-size:.8em;
  letter-spacing:.02em;font-style:normal;text-transform:none;font-family:var(--sans);font-weight:400;line-height:1.5}
.bloc-a-confirmer{border:1px dashed var(--rouge);background:rgba(179,15,24,.04);color:var(--rouge);padding:26px;text-align:center;font-size:.92rem;margin-top:36px}
#devis .a-confirmer,footer .a-confirmer,.aside .a-confirmer{color:#FF9A9F;border-color:#FF9A9F;background:rgba(255,154,159,.08)}

/* L'artisan */
.artisan-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(34px,6vw,84px);align-items:center;margin-top:20px}
.portrait{position:relative;margin:0;background:var(--porcelaine);padding:12px;border:1px solid var(--ligne-soft);box-shadow:0 30px 70px rgba(10,26,51,.12)}
.portrait img,.portrait .vide{display:block;width:100%;aspect-ratio:4/5;object-fit:cover}
.portrait .vide{display:grid;place-items:center;text-align:center;padding:30px;
  background:repeating-linear-gradient(135deg,var(--ivoire) 0 14px,var(--porcelaine) 14px 28px);color:var(--rouge);font-size:.88rem;border:1px dashed var(--rouge)}
.portrait figcaption{display:flex;justify-content:space-between;padding:14px 6px 2px;font-size:.6rem;letter-spacing:.3em;text-transform:uppercase;color:var(--taupe)}
.portrait figcaption i{font-style:normal;color:var(--or)}
.portrait .gustave-coin{position:absolute;right:-34px;bottom:-26px;height:150px;width:auto;filter:drop-shadow(0 14px 22px rgba(10,26,51,.25));animation:flot 7s ease-in-out infinite}
.pinceaux{display:grid;grid-template-columns:repeat(2,1fr);gap:0;margin-top:34px;border-top:1px solid var(--ligne);border-left:1px solid var(--ligne)}
.pinceau{padding:22px 22px 24px;border-right:1px solid var(--ligne);border-bottom:1px solid var(--ligne)}
.pinceau em{font-family:var(--serif);color:var(--or);font-size:.95rem;display:block;margin-bottom:6px}
.pinceau b{display:block;font-family:var(--serif);font-weight:500;font-size:1.08rem;margin-bottom:6px}
.pinceau span{font-size:.86rem;color:var(--graphite);font-weight:300}
.clin{margin-top:24px;font-family:var(--serif);font-style:italic;color:var(--graphite);font-size:1.02rem}
@media(max-width:900px){.artisan-grid{grid-template-columns:1fr}.portrait{max-width:420px}.portrait .gustave-coin{right:-10px;height:120px}}
@media(max-width:520px){.pinceaux{grid-template-columns:1fr}}

/* Savoir-faire : cartes cliquables vers les pages de service */
.svc a.svc-lien{position:absolute;inset:0;z-index:1}
.svc a.svc-lien:focus-visible{outline:2px solid var(--or);outline-offset:-4px}
.svc .plus{display:inline-block;margin-top:16px;font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;color:var(--or);transition:color .3s}
.svc:hover .plus{color:var(--noir)}

/* Réalisations : fiches avant / après */
.fiches{display:grid;grid-template-columns:repeat(auto-fill,minmax(min(100%,500px),1fr));gap:clamp(24px,3vw,40px);margin-top:40px}
.fiche{background:var(--porcelaine);border:1px solid var(--ligne-soft)}
.fiche.hide{display:none}
.ap{position:relative;aspect-ratio:3/2;overflow:hidden;background:var(--ivoire);--pos:50%}
.ap img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.ap .apres{clip-path:inset(0 0 0 var(--pos))}
.ap input{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:ew-resize;margin:0}
.ap .poignee{position:absolute;top:0;bottom:0;left:var(--pos);width:2px;background:var(--porcelaine);box-shadow:0 0 0 1px rgba(10,26,51,.2);pointer-events:none}
.ap .poignee::after{content:"⇆";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:38px;height:38px;border-radius:50%;
  background:var(--porcelaine);color:var(--noir);display:grid;place-items:center;font-size:.9rem;box-shadow:0 6px 16px rgba(10,26,51,.25)}
.ap .t-av,.ap .t-ap{position:absolute;top:12px;font-size:.54rem;letter-spacing:.3em;text-transform:uppercase;background:rgba(10,26,51,.78);color:var(--ivoire);padding:6px 12px;pointer-events:none;font-style:normal}
.ap .t-av{left:12px}.ap .t-ap{right:12px}
.ap.vide{display:grid;place-items:center;text-align:center;color:var(--rouge);font-size:.88rem;padding:20px;
  background:repeating-linear-gradient(135deg,var(--ivoire) 0 14px,var(--porcelaine) 14px 28px);border-bottom:1px dashed var(--rouge)}
.fiche-corps{padding:24px 26px 28px}
.fiche-lieu{font-size:.6rem;letter-spacing:.28em;text-transform:uppercase;color:var(--or)}
.fiche-corps h3{font-size:1.3rem;font-weight:500;margin:6px 0 0}
.fiche dl{display:grid;grid-template-columns:auto 1fr;gap:8px 18px;margin:18px 0 22px;font-size:.88rem}
.fiche dt{font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;color:var(--taupe);padding-top:3px}
.fiche dd{margin:0;color:var(--graphite);font-weight:300}

/* Zone : les vingt arrondissements */
.arr-grid{display:grid;grid-template-columns:repeat(10,1fr);gap:1px;background:var(--ligne-soft);border:1px solid var(--ligne-soft);margin-top:18px}
.arr-grid span{background:var(--porcelaine);text-align:center;padding:12px 4px;font-family:var(--serif);font-size:1rem;color:var(--noir)}
.arr-grid sup{font-size:.6em;color:var(--or)}
@media(max-width:640px){.arr-grid{grid-template-columns:repeat(5,1fr)}}

/* Contact et formulaire */
.coord{margin-top:34px;display:grid;gap:12px;font-size:.95rem;font-weight:300}
.coord a{color:var(--or-vif);text-decoration:none}
.coord a:hover{color:var(--ivoire)}
.rgpd{grid-column:1/-1;font-size:.76rem;color:rgba(246,243,236,.6);font-weight:300;margin:0}
.rgpd a{color:var(--or-vif)}

/* Barre mobile : Appeler · WhatsApp · Devis */
.callbar{grid-template-columns:repeat(var(--nb,3),1fr)}
.callbar .cb-tel{border-right:none}
.callbar a+a{border-left:1px solid rgba(246,243,236,.14)}
.callbar .cb-wa{color:#8BE3AE}

/* Pages de service */
.page-hero{padding:clamp(150px,18vw,200px) 0 clamp(40px,6vw,70px)}
/* Le fil d'Ariane est un <nav> : il ne doit pas hériter du menu fixe. */
nav.ariane{position:static;inset:auto;z-index:auto;background:none;backdrop-filter:none;-webkit-backdrop-filter:none;border:0}
.ariane{display:flex;flex-wrap:wrap;gap:8px;font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:var(--taupe);margin-bottom:26px}
.ariane a{color:var(--taupe);text-decoration:none}
.ariane a:hover{color:var(--or)}
.ariane [aria-current]{color:var(--noir)}
.page-hero h1{font-size:clamp(2.3rem,5.2vw,4.1rem);font-weight:500;max-width:20ch;text-wrap:balance}
.page-hero .chapeau{font-size:1.1rem;color:var(--graphite);max-width:62ch;margin-top:22px;font-weight:300}
.page-hero .hero-ctas{margin-top:32px}
.contenu{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:clamp(34px,5vw,70px);align-items:start}
.contenu article h2{font-size:clamp(1.6rem,3vw,2.3rem);margin:56px 0 16px;text-wrap:balance}
.contenu article h2:first-child{margin-top:0}
.contenu article h3{font-size:1.2rem;font-weight:500;margin:28px 0 8px}
.contenu article p,.contenu article li{color:var(--graphite);font-weight:300;font-size:1rem;max-width:68ch}
.contenu article p+p{margin-top:14px}
.contenu article ul{margin:14px 0 0;padding-left:1.1em}
.contenu article li{margin:6px 0}
.contenu article a{color:var(--noir);text-decoration-color:var(--or);text-underline-offset:3px}
.encart{background:var(--porcelaine);border:1px solid var(--ligne-soft);border-left:2px solid var(--or);padding:22px 24px;margin:26px 0}
.encart b{color:var(--noir);font-weight:500}
.aside{position:sticky;top:110px;background:var(--noir);color:var(--ivoire);padding:30px 28px}
.aside h2{font-size:1.4rem;color:var(--ivoire);margin-bottom:10px}
.aside p{font-size:.9rem;color:rgba(246,243,236,.75);font-weight:300;margin-bottom:18px}
.aside .btn{width:100%;margin-top:10px}
.aside .btn-ghost{color:var(--ivoire);border-color:rgba(246,243,236,.4)}
.aside ul{list-style:none;padding:0;margin:20px 0 0;border-top:1px solid rgba(246,243,236,.14)}
.aside li{font-size:.84rem;font-weight:300;padding:10px 0;border-bottom:1px solid rgba(246,243,236,.14);color:rgba(246,243,236,.85)}
.etapes{counter-reset:e;list-style:none;padding:0!important;margin-top:18px!important}
.etapes li{counter-increment:e;position:relative;padding:14px 0 14px 54px!important;border-bottom:1px solid var(--ligne-soft);margin:0!important;max-width:none!important}
.etapes li::before{content:counter(e,upper-roman)".";position:absolute;left:0;top:12px;font-family:var(--serif);font-style:italic;color:var(--or);font-size:1.2rem}
.voir-aussi{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:1px;background:var(--ligne-soft);border:1px solid var(--ligne-soft);margin-top:24px}
.voir-aussi a{background:var(--porcelaine);padding:20px 22px;text-decoration:none;color:var(--noir);font-family:var(--serif);font-size:1.05rem;transition:background .3s}
.voir-aussi a:hover{background:var(--ivoire)}
.voir-aussi a span{display:block;font-family:var(--sans);font-size:.58rem;letter-spacing:.26em;text-transform:uppercase;color:var(--or);margin-bottom:6px}
.p404{min-height:70vh;display:grid;place-items:center;text-align:center;padding:160px 20px 80px}
.p404 img{width:180px;height:auto;margin:0 auto 26px;animation:flot 7s ease-in-out infinite}
@media(max-width:980px){.contenu{grid-template-columns:1fr}.aside{position:static}}

/* Simulateur multi-surfaces : A, B, C… une teinte par surface */
.surf-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:6px;margin-top:14px}
.surf{display:flex;align-items:center;gap:10px;padding:9px 11px;background:rgba(246,243,236,.04);border:1px solid rgba(246,243,236,.14);color:var(--ivoire);text-align:left;font-size:.78rem;font-family:var(--sans);cursor:pointer;transition:border-color .25s,background .25s}
.surf b{font-family:var(--serif);font-size:1.05rem;font-weight:600;color:var(--or-vif);width:1.1em;flex:none}
.surf span{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:rgba(246,243,236,.82);font-weight:300}
.surf .pastille{width:14px;height:14px;border-radius:50%;flex:none;border:1px solid rgba(246,243,236,.35);background:transparent}
.surf:hover{border-color:rgba(210,169,94,.6)}
.surf.on{border-color:var(--or-vif);background:rgba(210,169,94,.12)}
.surf:focus-visible{outline:2px solid var(--or-vif);outline-offset:2px}
.surf-actions{display:flex;gap:10px 14px;flex-wrap:wrap;align-items:center;margin-top:12px}
.sim-step b{color:var(--ivoire);font-weight:500}
.lien-retirer{background:none;border:none;padding:0;color:rgba(246,243,236,.55);font-size:.74rem;font-family:var(--sans);text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.lien-retirer:hover{color:var(--or-vif)}
#surf-clear{display:block;margin-top:10px}
.surf-recap{font-size:.8rem;color:rgba(246,243,236,.75);font-weight:300;min-height:1em;margin:0}
.surf-badges{position:absolute;inset:0;pointer-events:none;z-index:3}
.surf-badge{position:absolute;transform:translate(-50%,-50%);pointer-events:auto;width:34px;height:34px;border-radius:50%;padding:0;
  border:1.5px solid var(--or-vif);background:rgba(10,26,51,.82);color:var(--or-lumiere);font-family:var(--serif);font-weight:600;
  font-size:.95rem;line-height:1;display:grid;place-items:center;box-shadow:0 6px 16px rgba(0,0,0,.35);transition:transform .25s,background .25s;cursor:pointer}
.surf-badge.peinte{box-shadow:0 0 0 3px var(--pastille,transparent),0 6px 16px rgba(0,0,0,.35)}
.surf-badge.on{background:var(--or-vif);color:var(--noir);transform:translate(-50%,-50%) scale(1.12)}
.compare.brush .surf-badge{opacity:.18;pointer-events:none;transition:opacity .2s}
.compare.brush .surf-badge.on{opacity:1;animation:badge-pulse 1.6s ease-in-out infinite}
@keyframes badge-pulse{0%,100%{transform:translate(-50%,-50%) scale(1.12)}50%{transform:translate(-50%,-50%) scale(1.26)}}
@media(prefers-reduced-motion:reduce){.compare.brush .surf-badge.on{animation:none}}
@media(max-width:520px){.surf-badge{width:28px;height:28px;font-size:.82rem}}

/* Accueil : déroulement du chantier, immeuble parisien */
.deroule{list-style:none;padding:0;margin:22px 0 0;counter-reset:d;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));border-top:1px solid var(--ligne);border-left:1px solid var(--ligne)}
.deroule li{counter-increment:d;padding:22px 24px 24px;border-right:1px solid var(--ligne);border-bottom:1px solid var(--ligne)}
.deroule li::before{content:counter(d,upper-roman)".";display:block;font-family:var(--serif);font-style:italic;color:var(--or);font-size:1.1rem;margin-bottom:8px}
.deroule b{display:block;font-family:var(--serif);font-weight:500;font-size:1.08rem;margin-bottom:6px}
.deroule span{font-size:.88rem;color:var(--graphite);font-weight:300}
.immeuble{margin-top:34px;padding:22px 26px;background:var(--porcelaine);border:1px solid var(--ligne-soft);border-left:2px solid var(--or);font-size:.95rem;color:var(--graphite);font-weight:300}
.immeuble b{color:var(--noir);font-weight:500}
.immeuble a{color:var(--noir);text-decoration-color:var(--or);text-underline-offset:3px}
#avis .note{font-size:.8rem;color:var(--taupe)}

/* Pages de service : encadré, intervenant, prix */
.aside-titre{font-family:var(--serif);font-size:1.4rem;color:var(--ivoire);margin:0 0 10px;line-height:1.2}
.qui{display:grid;grid-template-columns:auto 1fr;gap:22px;align-items:center;margin-top:16px}
.qui.sans-photo{grid-template-columns:1fr}
.qui img{width:96px;height:96px;border-radius:50%;object-fit:cover;background:var(--ivoire);border:1px solid var(--or)}
.qui p{margin:0}
table.prix{width:100%;border-collapse:collapse;margin-top:14px;font-size:.95rem;font-variant-numeric:tabular-nums}
table.prix th,table.prix td{padding:12px 14px;border-bottom:1px solid var(--ligne-soft);text-align:left;font-weight:300;color:var(--graphite)}
table.prix td{text-align:right;color:var(--noir);font-weight:500;white-space:nowrap}
.prix-note{font-size:.82rem;color:var(--taupe);margin-top:10px}

/* ═══════════ CONTRASTE (AA) ═══════════
   Mêmes teintes, un cran plus profondes, et seulement sur les fonds clairs :
   l'or #AC813D sur ivoire ne vaut que 3,18:1, le taupe 3,14:1, sous le seuil de 4,5:1. */
:root{--or-texte:#8A6430;--taupe-texte:#6F6A5E}
.eti,.svc .num,.svc .plus,.nv-more,.jour,.fiche-lieu,.voir-aussi a span,.pinceau em,
.portrait figcaption i,.stat .plus,.arr-grid sup,.real .bas span,.gar-card .gi,.maj b,
.etapes li::before,.deroule li::before,.ariane a:hover{color:var(--or-texte)}
.eti::before{background:var(--or)}                                /* le filet garde l'or vif */
#film .eti,#simulateur .eti,#devis .eti{color:var(--or-vif)}      /* fonds marine : re-pose obligatoire */
.eti .no,.stat span,.sur-titre,.logo-t,.hero-visu .legende,.portrait figcaption,
.fiche dt,.id-grid span,.id-note,.prix-note,.ariane,.ariane a,.fchip{color:var(--taupe-texte)}
.copy{color:rgba(246,243,236,.7)}
.sim-note{color:rgba(246,243,236,.6)}

/* États : texte lisible au survol, focus visible partout au clavier */
.btn:hover,.btn:focus-visible,.btn-ghost:hover,.btn-ivoire:hover,#film .btn:hover{color:var(--noir)}
.btn{transition:color .2s var(--e) .28s,border-color .45s}
.btn:not(:hover):not(:focus-visible){transition-delay:0s}
.field input:focus-visible,.field select:focus-visible,.field textarea:focus-visible,
.chat-in input:focus-visible{outline:2px solid var(--or);outline-offset:2px;border-color:var(--or)}
.gate .field input:focus-visible{outline-color:var(--or-vif)}
.chat-in button:hover,.chat-in button:focus-visible{background:var(--or);color:var(--noir)}
.chat-in button:focus-visible,#chat-fab:focus-visible,.qr button:focus-visible,
.lien-retirer:focus-visible,.modal-x:focus-visible,.faq summary:focus-visible{outline:2px solid var(--or);outline-offset:2px}

/* Boutons qui ouvrent Gustave : mêmes formes que les liens qu'ils remplacent */
.btn{font-family:inherit}
.callbar button{display:flex;align-items:center;justify-content:center;gap:10px;padding:18px 10px;font:inherit;
  font-size:.62rem;letter-spacing:.3em;text-transform:uppercase;color:var(--ivoire);background:none;border:0;cursor:pointer}

/* Premier écran : moins haut sur téléphone, pour que le bouton de devis reste visible */
@media(max-width:860px){
  header.hero{padding-top:118px;padding-bottom:40px}
  .sur-titre{margin-bottom:16px}.h1-poeme{margin-top:14px}.xp{margin-top:16px}
  .hero p.lead{margin:18px 0 22px;font-size:1rem}
  .hero-ctas{gap:10px}.hero-stats{margin-top:28px}.stat{padding:0 14px}
}
@media(max-height:820px) and (min-width:941px){
  .hero h1{font-size:clamp(2.5rem,5vw,4.2rem)}.hero-stats{margin-top:32px}.scroll-hint{display:none}
}
.hors-zone{margin-top:8px;font-size:.84rem;color:var(--rouge)}

/* Cartes de savoir-faire : le titre est le lien ; la carte « conseil couleur » n'est pas un métier */
.svc h3 a{color:inherit;text-decoration:none;position:relative;z-index:2}
.svc h3 a:focus-visible{outline:2px solid var(--or);outline-offset:3px}
.svc.svc-outil{background:var(--noir);color:var(--ivoire);border-color:var(--noir)}
.svc.svc-outil h3,.svc.svc-outil h3 a{color:var(--ivoire)}
.svc.svc-outil p{color:rgba(246,243,236,.72)}
.svc.svc-outil .num,.svc.svc-outil .plus{color:var(--or-vif)}
.svc.svc-outil::after{background:var(--or-vif)}
.svc.svc-outil:hover{background:var(--nuit)}
.svc.svc-outil:hover .plus{color:var(--or-lumiere)}
.portrait .portrait-mascotte{object-fit:contain;background:radial-gradient(120% 90% at 30% 20%,var(--porcelaine),var(--creme))}

/* ═══════════ ACCESSIBILITÉ ═══════════ */
.skip{position:absolute;left:16px;top:-100px;z-index:400;background:var(--noir);color:var(--ivoire);
  padding:12px 20px;font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;text-decoration:none}
.skip:focus{top:16px;outline:2px solid var(--or-vif);outline-offset:2px}
.foot h3{font-size:.6rem;letter-spacing:.34em;text-transform:uppercase;color:var(--or-vif);margin-bottom:18px;font-weight:400}
.chat-x{margin-left:auto;width:36px;height:36px;border:1px solid rgba(246,243,236,.35);background:transparent;
  color:var(--ivoire);font-size:.9rem;line-height:1;cursor:pointer}
.chat-x:hover,.chat-x:focus-visible{background:rgba(246,243,236,.12)}
.chat-x:focus-visible{outline:2px solid var(--or-vif);outline-offset:2px}
.chat-log:focus-visible{outline:2px solid var(--or-vif);outline-offset:-2px}
/* Le bandeau défilant : le dégradé passe sur le masque, le bouton l'arrête */
.refs{position:relative;-webkit-mask-image:none;mask-image:none;display:flex;align-items:center}
.marquee-mask{flex:1;overflow:hidden;-webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee.paused,.refs:focus-within .marquee{animation-play-state:paused}
.mq-pause{flex:none;width:36px;height:36px;margin-right:14px;border:1px solid var(--ligne);background:transparent;
  color:var(--taupe-texte);font-size:.7rem;line-height:1;cursor:pointer}
.mq-pause:hover,.mq-pause:focus-visible{color:var(--noir);border-color:var(--or)}
.mq-pause:focus-visible{outline:2px solid var(--or);outline-offset:2px}

/* La mascotte du héros n'est affichée qu'en 165 px : la version légère suffit sur écran simple */
.gustave-hero{
  background-image:-webkit-image-set(url("/assets/mascotte-360.webp") 1x,url("/assets/mascotte-720.webp") 2x);
  background-image:image-set(url("/assets/mascotte-360.webp") 1x,url("/assets/mascotte-720.webp") 2x);
}
.fiche-note{margin-top:10px;font-size:.82rem;color:var(--taupe-texte);font-style:italic}

/* ═══ Avant / après : illustrations (accueil, N°02) ═══ */
.aa-grille{display:grid;grid-template-columns:1.25fr 1fr;gap:clamp(18px,2.4vw,32px);margin-top:40px;align-items:start}
.aa-col{display:grid;gap:clamp(18px,2.4vw,32px)}
.aa-carte{margin:0;background:var(--porcelaine);border:1px solid var(--ligne-soft);box-shadow:0 18px 50px rgba(10,26,51,.10);transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s}
.aa-carte:hover{transform:translateY(-4px);box-shadow:0 26px 70px rgba(10,26,51,.16)}
.aa-carte .ap{aspect-ratio:auto}
.aa-carte .ap .poignee{width:3px;background:var(--or);box-shadow:0 0 18px rgba(184,146,74,.55)}
.aa-carte .ap .poignee::after{width:48px;height:48px;background:var(--noir);color:var(--or-vif,#E2C27A);border:2px solid var(--or);font-size:1rem}
.aa-carte .ap.invite .poignee::after{animation:aa-pouls 2.4s ease-in-out infinite}
.aa-carte .ap:hover .poignee::after{animation:none;transform:translate(-50%,-50%) scale(1.08)}
.aa-carte .ap input:focus-visible{opacity:0}
.aa-carte .ap:focus-within .poignee::after{outline:2px solid var(--or);outline-offset:3px}
@keyframes aa-pouls{0%,100%{box-shadow:0 0 0 0 rgba(184,146,74,.45),0 6px 16px rgba(10,26,51,.25)}50%{box-shadow:0 0 0 12px rgba(184,146,74,0),0 6px 16px rgba(10,26,51,.25)}}
.aa-carte figcaption{display:flex;flex-direction:column;gap:4px;padding:16px 20px 18px}
.aa-carte figcaption b{font-family:var(--serif);font-weight:500;font-size:1.12rem;color:var(--noir)}
.aa-carte figcaption span{font-size:.84rem;color:var(--graphite);font-weight:300}
.aa-carte figcaption a{color:var(--or-texte);text-decoration:underline;text-underline-offset:3px}
#avant-apres .cta-band{margin-top:clamp(28px,4vw,48px)}
@media(max-width:820px){.aa-grille{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.aa-carte,.aa-carte:hover{transition:none;transform:none}.aa-carte .ap.invite .poignee::after{animation:none}}
.qui-photo{margin:0;display:grid;justify-items:center;gap:6px}
.qui-photo figcaption{font-size:.56rem;letter-spacing:.14em;text-transform:uppercase;color:var(--taupe-texte);text-align:center;max-width:110px;line-height:1.4}

/* ═══ Gustave en pied : le lanceur de la discussion ═══ */
#chat-fab.fab-gustave{width:auto;height:auto;border:0;border-radius:0;background:none;box-shadow:none;overflow:visible;display:flex;align-items:flex-end;gap:6px;right:14px;bottom:14px}
#chat-fab.fab-gustave:hover{transform:none;box-shadow:none}
#chat-fab .fab-mascotte{width:auto;height:118px;object-fit:contain;filter:drop-shadow(0 10px 16px rgba(10,26,51,.28));transform-origin:50% 100%;transition:transform .35s cubic-bezier(.22,1,.36,1);animation:gustave-salut 5s ease-in-out 1.8s infinite}
#chat-fab.fab-gustave:hover .fab-mascotte{transform:translateY(-4px) rotate(-3deg);animation:none}
#chat-fab.fab-gustave .bulle{bottom:-4px;left:auto;right:30px;transform:none}
#chat-fab .fab-dit{align-self:center;margin-bottom:36px;background:var(--porcelaine);color:var(--noir);border:1px solid var(--or);box-shadow:0 10px 26px rgba(10,26,51,.16);
  padding:9px 14px;font-size:.78rem;line-height:1.25;text-align:left;white-space:nowrap;border-radius:14px 14px 4px 14px;transition:opacity .3s,transform .3s}
#chat-fab .fab-dit b{display:block;color:var(--or-texte);font-weight:500}
#chat-fab[aria-expanded="true"] .fab-dit{opacity:0;transform:translateX(8px);pointer-events:none}
@keyframes gustave-salut{0%,86%,100%{transform:rotate(0)}90%{transform:rotate(-5deg)}94%{transform:rotate(4deg)}}
@media(max-width:860px){#chat-fab.fab-gustave{bottom:80px;right:8px}#chat-fab .fab-mascotte{height:92px}#chat-fab .fab-dit{display:none}}
@media(prefers-reduced-motion:reduce){#chat-fab .fab-mascotte{animation:none;transition:none}}
@media(max-width:860px){#chat-fab.fab-gustave[aria-expanded="true"]{opacity:0;pointer-events:none}}
@media(min-width:861px){#chat{bottom:162px}}

/* ═══ Le film : un cadre qui s'ouvre au défilement, sur fond marine ═══ */
.film{--p:1;position:relative;background:var(--noir);color:var(--ivoire);padding:clamp(70px,9vw,120px) 0 clamp(40px,5vw,64px);overflow:hidden}
.film::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 50% at 50% 0%,rgba(210,169,94,.16),transparent 70%);pointer-events:none}
.film .eti{color:var(--or-vif)}
.film .eti .no{color:var(--or-vif)}
.film-tete{position:relative;text-align:center;margin-bottom:clamp(30px,4vw,52px)}
.film-tete .eti{justify-content:center}
.film .sec-title{color:var(--ivoire);margin-inline:auto}
.film .sec-title em{color:var(--or-vif)}
.film-scene{position:relative;display:grid;place-items:center}
.film-cadre{position:relative;width:100%;aspect-ratio:16/9;max-height:92vh;background:#061124;
  clip-path:inset(calc((1 - var(--p)) * 9%) calc((1 - var(--p)) * 12%) round calc((1 - var(--p)) * 30px));
  transform:scale(calc(.94 + var(--p) * .06));will-change:clip-path,transform}
.film-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.film-cadre::after{content:"";position:absolute;inset:0;box-shadow:inset 0 0 0 1px rgba(210,169,94,calc(.5 - var(--p) * .5));pointer-events:none}
.film-lecture{position:absolute;right:clamp(14px,2vw,28px);bottom:clamp(18px,2.4vw,32px);width:54px;height:54px;border-radius:50%;
  border:1px solid rgba(231,195,129,.75);background:rgba(10,26,51,.62);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);
  display:grid;place-items:center;cursor:pointer;transition:transform .3s cubic-bezier(.22,1,.36,1),background .3s}
.film-lecture:hover{transform:scale(1.08);background:rgba(10,26,51,.82)}
.film-lecture:focus-visible{outline:2px solid var(--or-vif);outline-offset:3px}
.film-lecture span{width:0;height:0;border-style:solid;border-width:9px 0 9px 15px;border-color:transparent transparent transparent var(--or-lumiere,#E7C381);margin-left:4px}
.film.joue .film-lecture span{width:14px;height:17px;border:0;margin:0;background:linear-gradient(90deg,var(--or-lumiere,#E7C381) 0 5px,transparent 5px 9px,var(--or-lumiere,#E7C381) 9px 14px)}
.film-barre{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(255,255,255,.12)}
.film-barre i{display:block;height:100%;background:var(--or-metal,var(--or));transform:scaleX(0);transform-origin:0 50%;transition:transform .25s linear}
.film-note{position:relative;margin-top:18px;text-align:center;font-size:.62rem;letter-spacing:.24em;text-transform:uppercase;color:rgba(234,229,220,.62)}
@media(max-width:820px){.film-cadre{clip-path:inset(calc((1 - var(--p)) * 5%) calc((1 - var(--p)) * 6%) round calc((1 - var(--p)) * 18px))}.film-lecture{width:46px;height:46px}}
@media(prefers-reduced-motion:reduce){.film{--p:1!important}.film-cadre{transform:none}}

/* ═══ Zone d'intervention : les huit départements d'Île-de-France ═══ */
.dep-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--ligne-soft);border:1px solid var(--ligne-soft);margin-top:18px}
.dep-grid span{background:var(--porcelaine);padding:18px 16px;display:flex;flex-direction:column;gap:4px;font-size:.86rem;color:var(--graphite)}
.dep-grid b{font-family:var(--serif);font-weight:500;font-size:1.6rem;color:var(--noir);line-height:1}
@media(max-width:640px){.dep-grid{grid-template-columns:repeat(2,1fr)}}
.film-son{position:absolute;left:clamp(14px,2vw,28px);bottom:clamp(18px,2.4vw,32px);display:flex;align-items:center;gap:10px;height:54px;padding:0 22px 0 18px;border-radius:99px;
  border:1px solid rgba(231,195,129,.75);background:rgba(10,26,51,.72);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:var(--or-lumiere,#E7C381);
  font:500 .68rem/1 var(--sans,inherit);letter-spacing:.2em;text-transform:uppercase;cursor:pointer;transition:transform .3s cubic-bezier(.22,1,.36,1),background .3s}
.film-son:hover{transform:scale(1.04);background:rgba(10,26,51,.9)}
.film-son:focus-visible{outline:2px solid var(--or-vif);outline-offset:3px}
.film:not(.sonore) .film-son{animation:son-pouls 2.6s ease-in-out infinite}
.film-son-ico{width:18px;height:16px;background:currentColor;clip-path:polygon(0 30%,28% 30%,62% 0,62% 100%,28% 70%,0 70%);position:relative}
.film-son-ico::after{content:"";position:absolute;left:21px;top:-2px;width:2px;height:20px;background:currentColor;transform:rotate(-40deg);transform-origin:50% 50%}
.film.sonore .film-son-ico::after{display:none}
@keyframes son-pouls{0%,100%{box-shadow:0 0 0 0 rgba(231,195,129,.5)}50%{box-shadow:0 0 0 12px rgba(231,195,129,0)}}
@media(max-width:820px){.film-son{height:46px;padding:0 16px 0 14px;font-size:.6rem}}
@media(prefers-reduced-motion:reduce){.film-son{animation:none!important}}

/* ═══ Téléphone : moins de texte, moins de défilement, le métier à un geste (src/patch_mobile.py) ═══ */
.raccourcis{display:none}
@media(max-width:820px){
  .raccourcis{position:static;z-index:auto;background:none;box-shadow:none;transform:none;display:flex;gap:8px;overflow-x:auto;scroll-snap-type:x proximity;margin:22px -16px 0;padding:2px 16px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .raccourcis::-webkit-scrollbar{display:none}
  .raccourcis a{flex:none;scroll-snap-align:start;padding:11px 15px;border:1px solid var(--ligne);border-radius:99px;background:var(--porcelaine);
    font-size:.7rem;letter-spacing:.12em;text-transform:uppercase;color:var(--noir);text-decoration:none;white-space:nowrap}
  .raccourcis a.rac-or{background:var(--noir);color:var(--or-vif);border-color:var(--noir)}
  /* haut de page : l'essentiel sur un écran */
  .hero{min-height:0;padding-top:88px}
  .scroll-hint{display:none}
  .hero .xp{display:none}
  .hero .lead{font-size:.95rem;margin-top:12px}
  .hero-stats{margin-top:20px;display:grid;grid-template-columns:repeat(3,1fr);gap:0}
  .stat{padding:0 8px}.stat b{font-size:1.5rem}.stat span{font-size:.55rem}
  .hero-visu .cadre img{max-height:46vh;object-fit:cover}
  .film{padding:44px 0 26px}
  /* l'artisan : la photo, quatre lignes, le bouton */
  .artisan-grid .pinceaux,.artisan-grid .pinceaux + .clin,.artisan-grid h3{display:none}
  .portrait{max-width:250px;margin-inline:auto;height:auto}.portrait img{height:auto;max-height:50vh;object-fit:cover}.portrait .gustave-coin{display:none}
  .mob-plie{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical;overflow:hidden;margin-bottom:0}
  .mob-plie.ouvert{display:block;-webkit-line-clamp:none}
  .lire-suite{background:none;border:0;padding:6px 0 0;margin-bottom:14px;font:inherit;font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--or-texte);text-decoration:underline;text-underline-offset:4px}
  /* avant / après : un carrousel à balayer */
  .aa-grille{display:flex;gap:14px;overflow-x:auto;scroll-snap-type:x mandatory;margin:26px -16px 0;padding:0 16px 10px;scrollbar-width:none}
  .aa-grille::-webkit-scrollbar{display:none}
  .aa-col{display:contents}
  .aa-carte{flex:0 0 86%;scroll-snap-align:center}
  .aa-carte .ap{aspect-ratio:5/4!important}
  .aa-carte figcaption{padding:12px 14px 14px}
  #avant-apres .sec-sub{font-size:.88rem}
  /* savoir-faire : une liste, un métier par ligne */
  .svc-grid{margin-top:24px}
  .svc{padding:15px 0!important;display:flex;align-items:center;gap:14px;border-left:0!important;border-right:0!important}
  .svc .num{margin:0;width:2.2em;font-size:.8rem}
  .svc h3{margin:0;font-size:1.05rem;flex:1}
  .svc p,.svc .plus{display:none}
  .svc::after{content:"→";color:var(--or)}
  #services .sec-sub{display:none}
  /* l'essayage : outil direct */
  #simulateur .sec-sub{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
  /* gazette et démonstration de Gustave : pas sur téléphone, il est déjà en bas de l'écran */
  #nouveautes,#nouveautes + .filet{display:none}
  .ia-steps,#phone-demo{display:none}
  #ia247 .btn{margin-top:18px!important}
  /* la méthode : les titres, pas les paragraphes */
  .gar-grid{grid-template-columns:1fr 1fr;margin-top:22px!important}
  .gar-card{padding:16px 12px}.gar-card > span:last-child{display:none}.gar-card b{font-size:.95rem}
  .deroule{grid-template-columns:1fr;margin-top:10px}
  .deroule li{padding:12px 0;display:flex;gap:12px;align-items:baseline;border-right:0}
  .deroule li::before{margin:0;font-size:1rem;min-width:1.6em}.deroule b{margin:0;font-size:1rem}.deroule span{display:none}
  #methode .rv[style*="margin-top:64px"]{margin-top:30px!important}
  /* la zone : les huit numéros sur deux lignes */
  .dep-grid{grid-template-columns:repeat(4,1fr)}
  .dep-grid span{padding:10px 6px;font-size:.62rem;gap:2px;align-items:center;text-align:center}
  .dep-grid b{font-size:1.25rem}
  #paris .sec-sub{display:none}
  /* devis, résumé, mentions */
  #devis .sec-sub + .sec-sub{display:none}
  .identite > p,.id-note{display:none}
  .id-grid{grid-template-columns:1fr 1fr}
  #mentions details{padding:10px 0}
  main > section{padding-top:44px!important;padding-bottom:44px!important}
  .sec-title{font-size:1.75rem}
  .filet{margin:0}
}

/* ═══ WhatsApp « Appel gratuit » ═══ */
.btn-wa{--wa1:#31D97A;--wa2:#1DB954;--wa3:#128C7E;display:inline-flex;align-items:center;gap:14px;padding:8px 30px 8px 9px;border-radius:999px;
  background:linear-gradient(135deg,var(--wa1),var(--wa2) 55%,var(--wa3));color:#fff;text-decoration:none;position:relative;isolation:isolate;overflow:hidden;
  box-shadow:0 16px 36px rgba(29,185,84,.32),inset 0 1px 0 rgba(255,255,255,.35);transition:transform .35s var(--e),box-shadow .35s var(--e)}
.btn-wa::after{content:"";position:absolute;inset:0;background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.34) 50%,transparent 70%);transform:translateX(-130%);transition:transform .9s var(--e);pointer-events:none}
.btn-wa:hover{transform:translateY(-3px);box-shadow:0 22px 46px rgba(29,185,84,.42),inset 0 1px 0 rgba(255,255,255,.4);color:#fff}
.btn-wa:hover::after{transform:translateX(130%)}
.btn-wa:focus-visible{outline:3px solid var(--noir);outline-offset:3px}
.wa-rond{position:relative;width:56px;height:56px;border-radius:50%;background:#fff;color:#1DB954;display:grid;place-items:center;flex:none}
.wa-ico{width:32px;height:32px;display:block;position:relative;z-index:1;transform-origin:50% 62%;animation:wa-sonne 4.2s ease-in-out 1.4s infinite}
.wa-onde{position:absolute;inset:0;border-radius:50%;border:2px solid rgba(255,255,255,.9);animation:wa-onde 2.4s cubic-bezier(.2,.7,.3,1) infinite;pointer-events:none}
.wa-onde+.wa-onde{animation-delay:1.2s}
.wa-txt{display:flex;flex-direction:column;line-height:1.05;text-align:left}
.wa-txt b{font-family:var(--serif);font-weight:500;font-size:1.36rem;letter-spacing:.01em}
.wa-txt small{font-size:.6rem;letter-spacing:.24em;text-transform:uppercase;opacity:.94;margin-top:6px;white-space:nowrap}
.hero-ctas .btn-wa{margin-right:4px}
.btn-wa-page{width:100%;justify-content:flex-start;margin-top:10px;box-sizing:border-box}
@keyframes wa-onde{0%{transform:scale(1);opacity:.85}100%{transform:scale(1.95);opacity:0}}
@keyframes wa-sonne{0%,76%,100%{transform:rotate(0)}80%{transform:rotate(-14deg)}84%{transform:rotate(12deg)}88%{transform:rotate(-9deg)}92%{transform:rotate(6deg)}96%{transform:rotate(-3deg)}}
/* pastille flottante, en face de Gustave */
.wa-fab{position:fixed;left:22px;bottom:22px;z-index:80;display:flex;align-items:center;gap:12px;text-decoration:none;color:var(--noir)}
.wa-fab .wa-rond{width:66px;height:66px;background:linear-gradient(135deg,#31D97A,#1DB954 55%,#128C7E);color:#fff;box-shadow:0 14px 30px rgba(29,185,84,.42),inset 0 1px 0 rgba(255,255,255,.35);transition:transform .35s var(--e)}
.wa-fab .wa-ico{width:36px;height:36px}
.wa-fab .wa-onde{border-color:rgba(29,185,84,.75)}
.wa-fab:hover .wa-rond{transform:translateY(-4px) scale(1.04)}
.wa-fab-dit{background:var(--porcelaine);border:1px solid #1DB954;padding:8px 14px;font-size:.58rem;letter-spacing:.24em;text-transform:uppercase;line-height:1.3;color:var(--noir);box-shadow:0 10px 26px rgba(10,26,51,.16)}
.wa-fab-dit b{display:block;font-family:var(--serif);font-size:1.02rem;letter-spacing:0;text-transform:none;color:#128C7E;font-weight:500;margin-top:2px}
.wa-fab:focus-visible{outline:3px solid #1DB954;outline-offset:3px}
/* barre d'appel du téléphone */
.callbar .cb-wa{color:#fff;background:linear-gradient(135deg,#31D97A,#1DB954 55%,#128C7E);gap:8px;letter-spacing:.18em}
.callbar .cb-wa .wa-ico{width:22px;height:22px;flex:none}
@media(max-width:860px){.wa-fab{display:none}}
@media(max-width:560px){.hero-ctas .btn-wa{width:100%;box-sizing:border-box;justify-content:flex-start;margin-right:0}}
@media(prefers-reduced-motion:reduce){.wa-ico{animation:none}.wa-onde{animation:none;opacity:0}.btn-wa::after{transition:none}.btn-wa,.wa-fab .wa-rond{transition:none}}

/* ═══ menu : plus de débordement du bouton Devis (23/09/2026) ═══ */
@media(max-width:1500px){.logo-t{display:none}.nav-links{gap:clamp(14px,1.8vw,26px)}}
@media(max-width:1250px){.nav-links a{font-size:.66rem;letter-spacing:.2em}.nav-cta{gap:12px}}
@media(max-width:520px){.nav-in{gap:10px}.logo{gap:10px}.logo-wm{font-size:.8rem;max-width:118px;white-space:normal}
  .nav-cta .btn-sm{padding:11px 12px;font-size:.56rem;letter-spacing:.18em}}

/* ═══ menu : entre 1020 et 1250 px, le numéro cède la place au bouton (mesuré à 1100 px) ═══ */
@media(max-width:1250px){.nav-cta .tel{display:none}}

/* ═══ nuancier : familles, teinte libre, accords, finitions (24/09/2026) ═══ */
.pal-fam{display:flex;gap:6px;flex-wrap:wrap;margin-top:12px}
.fam,.fin{background:none;border:1px solid rgba(246,243,236,.18);color:rgba(246,243,236,.72);font-family:var(--sans);font-size:.6rem;letter-spacing:.16em;text-transform:uppercase;padding:6px 10px;cursor:pointer;transition:border-color .25s,color .25s,background .25s}
.fam:hover,.fin:hover{border-color:rgba(210,169,94,.6);color:var(--ivoire)}
.fam.on,.fin.on{background:var(--or-vif);color:var(--noir);border-color:var(--or-vif)}
.fam:focus-visible,.fin:focus-visible,.accord:focus-visible,#pal-picker:focus-visible{outline:2px solid var(--or-vif);outline-offset:2px}
.pal-libre{display:flex;align-items:center;gap:10px;margin-top:12px;flex-wrap:wrap}
.pal-libre label{font-size:.74rem;color:rgba(246,243,236,.8);cursor:pointer;text-decoration:underline;text-underline-offset:3px}
#pal-picker{width:36px;height:36px;padding:0;border:1px dashed rgba(246,243,236,.45);border-radius:50%;background:none;cursor:pointer;-webkit-appearance:none;appearance:none}
#pal-picker::-webkit-color-swatch-wrapper{padding:2px}
#pal-picker::-webkit-color-swatch{border:none;border-radius:50%}
#pal-picker::-moz-color-swatch{border:none;border-radius:50%}
.pal-proche{font-size:.74rem;color:rgba(246,243,236,.55);font-style:italic}
.accords{margin-top:12px}
.accords-t{display:block;font-size:.58rem;letter-spacing:.3em;text-transform:uppercase;color:rgba(246,243,236,.5)}
.accords-l{display:flex;gap:8px;flex-wrap:wrap;margin-top:8px}
.accord{display:inline-flex;align-items:center;gap:8px;background:rgba(246,243,236,.04);border:1px solid rgba(246,243,236,.14);color:rgba(246,243,236,.82);font-family:var(--sans);font-size:.72rem;padding:6px 10px;cursor:pointer;transition:border-color .25s}
.accord:hover{border-color:rgba(210,169,94,.6)}
.accord i{width:16px;height:16px;border-radius:50%;border:1px solid rgba(246,243,236,.35);flex:none}
.finitions{display:flex;gap:6px;margin-top:10px}
@media(max-width:860px){.pal-fam{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:4px;margin-left:-4px;padding-left:4px}.pal-fam::-webkit-scrollbar{display:none}.fam{flex:none}}

/* ═══ nuancier : la rangée d'onglets ne fait plus déborder la page sur téléphone (mesuré : 653 px pour 375) ═══ */
@media(max-width:900px){.sim-body{grid-template-columns:minmax(0,1fr)}.sim-side{min-width:0}}
.pal-fam{min-width:0;max-width:100%}

