:root{
  --bg:#f7faf7;
  --paper:#ffffff;
  --ink:#123532;
  --muted:#60716f;
  --line:#dce5e1;
  --mint:#78ead2;
  --mint-deep:#1cae94;
  --soft:#eaf7f3;
  --radius:34px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:Arial,Helvetica,sans-serif;line-height:1.5;overflow-x:hidden}
a{color:inherit;text-decoration:none}
button,input{font:inherit}
img{max-width:100%;display:block}
button{color:inherit}
.sr-only{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.skip-link{position:fixed;top:8px;left:8px;z-index:9999;background:var(--ink);color:#fff;padding:10px 14px;transform:translateY(-150%)}
.skip-link:focus{transform:none}

.site-header{height:78px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 clamp(20px,4vw,72px);border-bottom:1px solid rgba(18,53,50,.08);position:sticky;top:0;z-index:50;background:rgba(247,250,247,.9);backdrop-filter:blur(16px)}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:800;font-size:19px;letter-spacing:-.03em;width:max-content}.brand b{color:var(--mint-deep)}.brand-dot{width:17px;height:17px;border-radius:50%;background:var(--mint);box-shadow:inset 0 0 0 5px #d9fff7}
.desktop-nav{display:flex;gap:32px;font-size:14px}.desktop-nav a{position:relative}.desktop-nav a::after{content:"";position:absolute;left:0;right:100%;bottom:-8px;height:1px;background:var(--ink);transition:.25s}.desktop-nav a:hover::after{right:0}
.header-cta{justify-self:end;background:var(--ink);color:#fff;padding:12px 18px;border-radius:999px;font-weight:700;font-size:13px}.menu-toggle,.mobile-menu{display:none}

.hero{min-height:calc(100vh - 78px);display:grid;grid-template-columns:minmax(0,1.03fr) minmax(420px,.97fr);gap:clamp(40px,6vw,100px);align-items:center;padding:clamp(64px,8vw,120px) clamp(20px,5.5vw,100px)}
.eyebrow{font-size:11px;letter-spacing:.18em;font-weight:800;color:var(--mint-deep);margin:0 0 26px;text-transform:uppercase}
.hero h1,.services h2,.quality h2,.quote h2{font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:-.055em;margin:0}
.hero h1{font-size:clamp(72px,8.2vw,150px);line-height:.84;max-width:990px}.hero h1 em{font-weight:400;color:var(--ink)}
.hero-lead{max-width:650px;font-size:clamp(18px,1.5vw,23px);line-height:1.55;color:#39524f;margin:38px 0 30px}
.hero-actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap}.btn{display:inline-flex;align-items:center;justify-content:center;border:0;cursor:pointer;min-height:52px;padding:0 24px;border-radius:999px;font-weight:800}.btn-primary{background:var(--ink);color:white}.btn-primary:hover{transform:translateY(-1px)}.btn-link{font-weight:700;font-size:14px}.btn-link span{margin-left:8px}
.hero-proof{display:flex;gap:26px;flex-wrap:wrap;margin-top:46px;padding-top:20px;border-top:1px solid var(--line);max-width:690px;color:#425b58;font-size:13px}.hero-proof b{color:var(--mint-deep);margin-right:7px}

.clean-window{position:relative;min-height:650px;border-radius:42px 42px 160px 42px;overflow:hidden;background:#d8e4df;cursor:none;isolation:isolate;box-shadow:0 28px 70px rgba(15,54,49,.12)}
.clean-window img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.grime-canvas{position:absolute;inset:0;width:100%;height:100%;z-index:2}
.clean-window::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(120deg,rgba(255,255,255,.18),transparent 40%)}
.squeegee{position:absolute;z-index:6;width:72px;height:72px;pointer-events:none;transform:translate(-50%,-46%) rotate(-16deg);filter:drop-shadow(0 10px 12px rgba(0,0,0,.18));opacity:0;transition:opacity .2s}.clean-window:hover .squeegee,.clean-window.is-touching .squeegee{opacity:1}.squeegee svg{width:100%;height:100%;fill:var(--ink);stroke:#fff;stroke-width:1.2}
.clean-hint{position:absolute;z-index:5;left:28px;bottom:28px;background:rgba(255,255,255,.94);padding:15px 18px;border-radius:18px;max-width:240px;box-shadow:0 12px 30px rgba(0,0,0,.08);transition:.35s}.clean-hint span{font-size:9px;letter-spacing:.14em;font-weight:800;color:var(--mint-deep);display:block}.clean-hint strong{font-family:Georgia,serif;font-size:20px;font-weight:400}.clean-window.has-cleaned .clean-hint{opacity:0;transform:translateY(12px)}
.clean-progress{position:absolute;z-index:7;right:24px;top:24px;display:flex;align-items:center;gap:10px}.clean-progress span{background:var(--ink);color:#fff;border-radius:999px;padding:8px 12px;font-weight:800;font-size:11px}.clean-progress button{border:0;background:#fff;border-radius:999px;padding:8px 12px;font-weight:700;font-size:10px;cursor:pointer}

.quick-strip{min-height:70px;padding:0 clamp(20px,5.5vw,100px);display:flex;align-items:center;justify-content:center;gap:24px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);font-size:11px;font-weight:800;letter-spacing:.13em;white-space:nowrap;overflow:hidden}.quick-strip i{width:4px;height:4px;border-radius:50%;background:var(--mint-deep);flex:0 0 auto}

.services{padding:clamp(90px,10vw,170px) clamp(20px,5.5vw,100px)}
.services-intro{display:grid;grid-template-columns:.55fr 1.45fr;gap:40px;align-items:start;margin-bottom:70px}.services-intro h2{font-size:clamp(54px,6.5vw,110px);line-height:.92;max-width:1100px}.services-intro .eyebrow{padding-top:12px}
.service-selector{border-top:1px solid var(--ink)}
.service-tabs{display:grid;grid-template-columns:repeat(4,1fr);border-bottom:1px solid var(--line)}
.service-tab{border:0;background:transparent;text-align:left;padding:22px 10px 22px 0;font-weight:700;cursor:pointer;color:#788582;position:relative}.service-tab::after{content:"";position:absolute;left:0;bottom:-1px;width:0;height:3px;background:var(--mint-deep);transition:.3s}.service-tab.is-active{color:var(--ink)}.service-tab.is-active::after{width:100%}
.service-display{display:grid;grid-template-columns:.82fr 1.18fr;gap:clamp(40px,7vw,110px);padding-top:58px;align-items:center}
.service-copy{max-width:560px}.service-code{font-size:10px;letter-spacing:.17em;font-weight:800;color:var(--mint-deep);margin:0 0 22px}.service-copy h3{font-family:Georgia,serif;font-size:clamp(44px,4.3vw,74px);font-weight:400;line-height:.96;letter-spacing:-.04em;margin:0 0 25px}.service-copy>p:not(.service-code){font-size:17px;color:#4e625f;line-height:1.65}.service-copy ul{list-style:none;padding:0;margin:30px 0 36px;border-top:1px solid var(--line)}.service-copy li{padding:12px 0;border-bottom:1px solid var(--line);font-size:14px}.service-copy li::before{content:"✓";color:var(--mint-deep);font-weight:900;margin-right:10px}.service-link{font-weight:800;font-size:14px}.service-link span{margin-left:8px}
.service-media{margin:0;position:relative;min-height:580px;border-radius:28px 100px 28px 28px;overflow:hidden;background:#d8e4df}.service-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:opacity .25s,transform .5s}.service-media figcaption{position:absolute;left:18px;right:18px;bottom:18px;background:rgba(12,47,43,.9);color:#fff;padding:17px 20px;border-radius:18px;font-family:Georgia,serif;font-size:20px}

.quality{background:var(--ink);color:#fff;padding:clamp(90px,10vw,160px) clamp(20px,5.5vw,100px);display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(50px,8vw,130px)}
.quality .eyebrow{color:var(--mint)}.quality h2{font-size:clamp(58px,6vw,96px);line-height:.93;color:#fff}
.quality-lines article{display:grid;grid-template-columns:60px .8fr 1.2fr;gap:25px;padding:32px 0;border-top:1px solid rgba(255,255,255,.19);align-items:start}.quality-lines article:last-child{border-bottom:1px solid rgba(255,255,255,.19)}.quality-lines span{color:var(--mint);font-weight:800;font-size:12px}.quality-lines h3{font-family:Georgia,serif;font-weight:400;font-size:28px;margin:0}.quality-lines p{margin:3px 0 0;color:#c5d6d2;font-size:14px;line-height:1.65}

.quote{padding:clamp(90px,10vw,170px) clamp(20px,5.5vw,100px);display:grid;grid-template-columns:.75fr 1.25fr;gap:clamp(50px,8vw,130px);align-items:start}.quote h2{font-size:clamp(58px,6vw,100px);line-height:.92}.quote-copy>p:last-child{max-width:520px;color:#526763;font-size:16px;line-height:1.7;margin-top:30px}.quote-form{background:#fff;border:1px solid var(--line);border-radius:28px;padding:clamp(28px,4vw,55px)}
.quote-form fieldset{border:0;padding:0;margin:0 0 34px}.quote-form legend{font-family:Georgia,serif;font-size:26px;margin-bottom:16px}.choice-row{display:flex;gap:8px;flex-wrap:wrap}.choice-row label{cursor:pointer}.choice-row input{position:absolute;opacity:0;pointer-events:none}.choice-row span{display:block;padding:10px 14px;border:1px solid var(--line);border-radius:999px;font-size:12px;font-weight:700}.choice-row input:checked+span{background:var(--soft);border-color:var(--mint-deep);color:var(--ink)}
.quote-contact{display:grid;grid-template-columns:1fr auto;gap:12px;align-items:end;margin-top:12px}.quote-contact label{font-size:12px;font-weight:800}.quote-contact input{display:block;width:100%;height:52px;border:1px solid var(--line);border-radius:999px;padding:0 18px;margin-top:9px;outline:none}.quote-contact input:focus{border-color:var(--mint-deep)}
.quote-summary{margin-top:34px;padding-top:22px;border-top:1px dashed var(--line);display:grid;gap:4px}.quote-summary span{font-size:9px;letter-spacing:.15em;font-weight:800;color:var(--mint-deep)}.quote-summary strong{font-size:16px}.quote-summary small{color:#6f7e7b}

.site-footer{padding:38px clamp(20px,5.5vw,100px);display:grid;grid-template-columns:1fr 1fr auto;gap:28px;align-items:center;border-top:1px solid var(--line);font-size:12px}.site-footer p{margin:0;color:#60716e}.site-footer>div{display:flex;gap:18px}.site-footer small{grid-column:1/-1;color:#87938f;border-top:1px solid var(--line);padding-top:20px}.footer-brand{font-size:16px}

@media(max-width:980px){
  .site-header{grid-template-columns:1fr auto}.desktop-nav,.header-cta{display:none}.menu-toggle{display:grid;width:44px;height:44px;border:0;background:transparent;place-content:center;gap:5px}.menu-toggle span:not(.sr-only){width:24px;height:2px;background:var(--ink)}.mobile-menu{position:absolute;left:0;right:0;top:78px;padding:20px;background:var(--paper);border-bottom:1px solid var(--line);display:none}.mobile-menu.is-open{display:grid}.mobile-menu a{padding:14px 4px;border-bottom:1px solid var(--line);font-weight:700}
  .hero{grid-template-columns:1fr;padding-top:70px}.clean-window{min-height:620px;cursor:auto}.squeegee{display:none}.services-intro,.service-display,.quality,.quote{grid-template-columns:1fr}.services-intro{gap:20px}.service-tabs{overflow-x:auto;grid-template-columns:repeat(4,minmax(180px,1fr))}.quality{gap:60px}.quote-form{max-width:850px}.site-footer{grid-template-columns:1fr auto}.site-footer p{grid-column:1/-1}
}
@media(max-width:640px){
  .site-header{height:68px;padding:0 16px}.mobile-menu{top:68px}.hero{min-height:0;padding:56px 16px 36px;gap:36px}.hero h1{font-size:clamp(54px,15vw,80px);line-height:.86}.hero-lead{font-size:17px;margin:28px 0 24px}.hero-proof{display:grid;gap:10px;margin-top:32px}.clean-window{min-height:480px;border-radius:24px 24px 90px 24px}.clean-progress{right:14px;top:14px}.clean-progress button{display:none}.clean-hint{left:14px;bottom:14px}.quick-strip{justify-content:flex-start;overflow:auto;padding:0 16px;height:58px}
  .services{padding:80px 16px}.services-intro{margin-bottom:45px}.services-intro h2{font-size:46px}.service-display{padding-top:38px}.service-copy h3{font-size:43px}.service-media{min-height:420px;border-radius:22px 70px 22px 22px}.service-media figcaption{font-size:17px}
  .quality{padding:80px 16px}.quality h2{font-size:48px}.quality-lines article{grid-template-columns:40px 1fr;gap:14px}.quality-lines p{grid-column:2}.quality-lines h3{font-size:24px}
  .quote{padding:80px 16px}.quote h2{font-size:48px}.quote-form{padding:25px 18px}.quote-contact{grid-template-columns:1fr}.quote-contact .btn{width:100%}.site-footer{grid-template-columns:1fr;padding:34px 16px}.site-footer>div{justify-self:start}
}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* =========================================================
   V4 — respiration, contrôle final éditorial et devis progressif
   ========================================================= */
.hero-copy{padding-bottom:12px}

.quality{
  background:var(--ink);
  color:#fff;
  padding:clamp(90px,10vw,160px) clamp(20px,5.5vw,100px);
  display:grid;
  grid-template-columns:minmax(280px,.7fr) minmax(0,1.3fr);
  gap:clamp(54px,8vw,135px);
  align-items:start;
}
.quality-head{position:sticky;top:120px}
.quality .eyebrow{color:var(--mint)}
.quality h2{font-size:clamp(54px,5.6vw,92px);line-height:.92;color:#fff}
.quality-head>p:last-child{max-width:470px;margin:30px 0 0;color:#bfd0cc;font-size:15px;line-height:1.75}
.quality-gallery{
  display:grid;
  grid-template-columns:repeat(12,minmax(0,1fr));
  grid-auto-rows:minmax(210px,24vw);
  gap:16px;
}
.quality-detail{position:relative;margin:0;overflow:hidden;border-radius:28px;background:#224844;grid-column:span 5;min-height:300px}
.quality-detail-large{grid-column:span 7;grid-row:span 2}
.quality-detail-wide{grid-column:span 5}
.quality-detail img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;transition:transform .7s ease,filter .5s ease}
.quality-detail-large img{object-position:center}
.quality-detail-wide img{object-position:70% center}
.quality-detail::after{content:"";position:absolute;inset:42% 0 0;background:linear-gradient(transparent,rgba(5,32,29,.88));pointer-events:none}
.quality-detail figcaption{position:absolute;z-index:2;left:22px;right:22px;bottom:20px;display:grid;grid-template-columns:auto 1fr;gap:2px 12px;align-items:end}
.quality-detail figcaption span{grid-row:1/3;color:var(--mint);font-size:10px;font-weight:900;letter-spacing:.12em;padding-top:5px}
.quality-detail figcaption strong{font-family:Georgia,serif;font-size:clamp(21px,2vw,31px);font-weight:400;line-height:1.05}
.quality-detail figcaption small{color:#d5e2df;font-size:12px}
.quality-detail:hover img{transform:scale(1.025);filter:brightness(1.04)}

.quote-form-progressive{overflow:hidden}
.quote-form-progressive .quote-step{transition:max-height .5s ease,opacity .35s ease,transform .45s ease,padding .45s ease,margin .45s ease}
.quote-form-progressive fieldset.quote-step{max-height:240px}
.quote-form-progressive .quote-step-contact{max-height:180px}
.quote-form-progressive .quote-step[aria-hidden="true"]{max-height:0!important;opacity:0;transform:translateY(-12px);overflow:hidden;pointer-events:none;margin:0!important;padding-top:0!important;padding-bottom:0!important}
.quote-form-progressive .quote-step.is-active{opacity:1;transform:none}
.quote-step-head{display:flex;align-items:baseline;gap:14px;margin-bottom:16px}
.quote-step-head>span{flex:0 0 auto;color:var(--mint-deep);font-size:10px;font-weight:900;letter-spacing:.12em}
.quote-form-progressive .quote-step-head legend,.quote-step-head>strong{font-family:Georgia,serif;font-size:26px;font-weight:400;margin:0}
.quote-form-progressive .quote-contact{margin-top:0;grid-template-columns:1fr auto;align-items:center}
.quote-form-progressive .quote-contact input{margin-top:0}
.quote-form-progressive .quote-summary{margin-top:26px;transition:.35s ease}
.quote-form-progressive .quote-summary strong{min-height:24px}

@media(max-width:980px){
  .quality{grid-template-columns:1fr;gap:46px}
  .quality-head{position:static;max-width:760px}
  .quality-gallery{grid-auto-rows:minmax(260px,48vw)}
}
@media(max-width:640px){
  .quality{padding:80px 16px}
  .quality h2{font-size:48px}
  .quality-head>p:last-child{font-size:14px;margin-top:22px}
  .quality-gallery{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:12px;padding-bottom:5px;margin-right:-16px;padding-right:16px}
  .quality-detail,.quality-detail-large,.quality-detail-wide{flex:0 0 84vw;min-height:420px;grid-column:auto;grid-row:auto;scroll-snap-align:start;border-radius:22px}
  .quality-detail figcaption{left:18px;right:18px;bottom:17px}
  .quote-form-progressive .quote-step-head legend,.quote-step-head>strong{font-size:23px}
  .quote-form-progressive .quote-contact{grid-template-columns:1fr}
}
