/* Greeen — feuille de style du site */
/* Layout : le rendu d'accueil reste fixe, la suite glisse par-dessus en panneaux arrondis.
   Le noir porte le texte (écrit en crème), le clair porte les images. Un panneau par public,
   ouvert par son nom en très grand. */
:root{
  --star:#f5b301;            /* jaune des étoiles d'avis */
  --paper:#faf8f3;      /* blanc chaud */
  --lin:#ece5d5;        /* beige lin : accent sur noir, surface sur clair */
  --line:#d9d2c2;
  --graphite:#625e54;
  --ink:#0f100d;        /* noir chaud */
  --ink-2:#1a1b17;
  --lin-dim:#a59f90;
  --lin-off:#666359;        /* mots pas encore allumés du bandeau : 3,2 pour 1 sur le noir (grand texte, minimum 3) */
  --lin-wait:#89857b;       /* éléments en attente sur fond noir : 5,2 pour 1 (petit texte, minimum 4,5) */
  --line-ink:#302f29;
  --glass:rgba(236,229,213,.14);
  --glass-line:rgba(236,229,213,.28);
  --bubble:rgba(15,16,13,.88);
  --shade:rgba(8,8,6,.78);
  --shade-mid:rgba(8,8,6,.34);
  --veil:rgba(8,8,6,.55);

  --f-display:"Archivo","Archivo Secours","Helvetica Neue",Arial,sans-serif;   /* « Archivo Secours » : Arial agrandi à la largeur d’Archivo, le temps que la vraie police arrive (défini dans la page, voir build.py) */
  --f-body:"Hanken Grotesk","Hanken Secours","Segoe UI",system-ui,sans-serif;   /* « Hanken Secours » : Arial, de même largeur que Hanken Grotesk à 0,1 % près */
  --f-mono:"DM Mono",ui-monospace,"SF Mono",Menlo,monospace;

  --gx:clamp(16px,4.2vw,64px);
  --sect:clamp(3.4rem,6.5vw,6.5rem);
  --rp:clamp(26px,4.4vw,60px);
  --ri:clamp(16px,2vw,28px);
  --rc:clamp(14px,1.5vw,20px);
  --ease:cubic-bezier(.2,.8,.2,1);
  --ease-io:cubic-bezier(.7,0,.2,1);
  color-scheme:light;
}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--ink);color:var(--ink);font-family:var(--f-body);font-size:1.0625rem;line-height:1.55;-webkit-font-smoothing:antialiased;overflow-x:clip}
img{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit}
h1,h2,h3,p,ul,ol,figure{margin:0}
ul,ol{padding:0;list-style:none}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.skip{position:absolute;left:-999px;top:0;background:var(--ink);color:var(--lin);padding:.6rem 1rem;z-index:100}
.skip:focus{left:var(--gx);top:.5rem}
[id]{scroll-margin-top:84px}

/* Thèmes */
.on-paper,.on-mist{background:var(--paper);color:var(--ink);--rule:var(--line);--muted:var(--graphite);--acc:var(--ink);--soft:var(--lin);--btn:var(--ink);--btn-on:var(--lin);--fill:var(--lin);--strong:var(--ink)}
.on-mist{background:var(--lin);--soft:var(--paper);--rule:#cfc7b4}
.on-ink{background:var(--ink);color:var(--lin);--rule:var(--line-ink);--muted:var(--lin-dim);--acc:var(--lin);--soft:var(--ink-2);--btn:var(--lin);--btn-on:var(--ink);--fill:var(--paper);--strong:var(--lin)}

.wrap{padding-inline:var(--gx)}
.mono{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;line-height:1.4}
.dim{color:var(--muted)}
.dot{display:inline-block;width:.5em;height:.5em;border-radius:50%;background:var(--acc);margin-right:.7em;vertical-align:.08em}

.display{font-family:var(--f-display);font-stretch:112%;font-weight:560;letter-spacing:-.035em;line-height:.97;text-wrap:balance}
h1.display{font-size:clamp(2.45rem,7.1vw,6.9rem)}
h2.display{font-size:clamp(2rem,4.5vw,4.3rem)}
.lede{font-size:clamp(1.05rem,1.3vw,1.25rem);max-width:32em}

/* Logotype animé */
.wm{font-family:var(--f-display);font-stretch:112%;font-weight:720;letter-spacing:-.045em;line-height:1;display:inline-flex;align-items:baseline;white-space:nowrap}
.wm .e{display:inline-block}
.wm .e1{font-weight:200;animation:e-a 5s var(--ease-io) infinite}
.wm .e2{font-weight:440;animation:e-b 5s var(--ease-io) infinite}
.wm .e3{font-weight:720;animation:e-c 5s var(--ease-io) infinite}
/* Hors de l'écran, le logo ne s'anime pas (voir src/site.js) : son animation oblige à recalculer la mise en page à chaque image */
.js .flow .wm:not(.is-vu) .e,.wm.is-off .e{animation-play-state:paused}
@keyframes e-a{0%,100%{font-weight:200}50%{font-weight:720}}
@keyframes e-b{0%,50%,100%{font-weight:440}25%{font-weight:720}75%{font-weight:200}}
@keyframes e-c{0%,100%{font-weight:720}50%{font-weight:200}}

/* Boutons */
.btn{display:inline-flex;align-items:center;gap:.9em;min-height:48px;padding:.9em 1.5em;border:1px solid var(--btn);border-radius:999px;font-family:var(--f-mono);font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;background:linear-gradient(var(--btn),var(--btn)) no-repeat 0 100%/100% 0;transition:background-size .45s var(--ease),color .3s,border-color .3s}
.btn .arr{transition:transform .45s var(--ease)}
.btn:hover{background-size:100% 100%;color:var(--btn-on)}
.btn:hover .arr{transform:translateX(.35em)}
.btn--solid{background-color:var(--btn);color:var(--btn-on);background-image:linear-gradient(var(--fill),var(--fill))}
.btn--solid:hover{color:var(--ink)}
.hero .btn:not(.btn--solid){border-color:var(--glass-line);background-color:var(--glass);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}

/* Menu : bulle sombre fixe, avec fil de progression de lecture */
.hd{position:fixed;z-index:50;left:var(--gx);right:var(--gx);top:calc(env(safe-area-inset-top,0px) + 14px);pointer-events:none}
.bubble{position:relative;pointer-events:auto;max-width:1240px;margin-inline:auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;padding:7px 7px 7px 26px;border-radius:999px;background:var(--bubble);color:var(--lin);border:1px solid var(--glass-line);backdrop-filter:blur(18px) saturate(1.3);-webkit-backdrop-filter:blur(18px) saturate(1.3);box-shadow:0 14px 40px -18px rgba(0,0,0,.6)}
.bubble .wm{font-size:1.6rem;justify-self:start;min-width:5.2em}
.prog{position:absolute;left:30px;right:30px;bottom:-1px;height:2px;border-radius:2px;background:var(--lin);transform:scaleX(var(--p,0));transform-origin:left;pointer-events:none}
.nav{position:relative;display:flex}
.nav a{position:relative;z-index:1;padding:.9em 1.2em;border-radius:999px;color:rgba(236,232,220,.78);transition:color .3s}
.nav a:hover,.nav a.is-cur{color:var(--lin)}
.nav-hl{position:absolute;top:0;bottom:0;left:0;width:0;border-radius:999px;background:var(--glass);opacity:0;transition:transform .45s var(--ease),width .45s var(--ease),opacity .3s}
.bubble-cta{justify-self:end;display:inline-flex;align-items:center;gap:.8em;padding:.9em 1.35em;border-radius:999px;background:var(--lin);color:var(--ink);transition:background-color .3s}
.bubble-cta:hover{background:var(--paper)}
.bubble-cta .arr{transition:transform .45s var(--ease)}
.bubble-cta:hover .arr{transform:translateX(.3em)}
.menu-btn{display:none;justify-self:end;border:0;cursor:pointer;min-height:44px;padding:.9em 1.35em;border-radius:999px;background:var(--lin);color:var(--ink)}
@media (max-width:1080px){.nav,.bubble-cta{display:none}.menu-btn{display:inline-block}.bubble{grid-template-columns:1fr auto;padding-left:20px}}

/* Menu mobile : fond crème */
.menu{border:0;padding:0;margin:0;width:100%;max-width:none;height:100%;max-height:none;background:var(--lin);color:var(--ink)}
.menu[open]{display:flex;flex-direction:column;animation:menu-in .6s var(--ease-io)}
@keyframes menu-in{from{clip-path:inset(0 0 100% 0)}to{clip-path:inset(0)}}
.menu-top{display:flex;justify-content:space-between;align-items:center;margin-top:calc(env(safe-area-inset-top,0px) + 22px)}
.menu-top .wm{font-size:1.6rem}
.menu-close{border:0;background:var(--ink);color:var(--lin);min-height:44px;padding:.9em 1.35em;border-radius:999px;cursor:pointer}
.menu-list{flex:1;display:flex;flex-direction:column;justify-content:center}
.menu-list a{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-family:var(--f-display);font-stretch:112%;font-weight:560;font-size:clamp(2.1rem,10.5vw,3.6rem);letter-spacing:-.035em;line-height:1.1;border-bottom:1px solid rgba(13,18,15,.16);padding-block:.32em}
.menu-list a span{color:var(--graphite)}
.menu-foot{padding-block:1.5rem;color:var(--graphite)}

/* Accès rapide en bas d'écran, sous le pouce (téléphone) */
.dock{position:fixed;z-index:49;left:50%;bottom:calc(env(safe-area-inset-bottom,0px) + 12px);transform:translate(-50%,160%);display:none;gap:2px;padding:5px;border-radius:999px;background:var(--bubble);color:var(--lin);border:1px solid var(--glass-line);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);box-shadow:0 14px 40px -14px rgba(0,0,0,.7);transition:transform .55s var(--ease);white-space:nowrap}
.dock.is-up{transform:translate(-50%,0)}
.dock a{display:inline-flex;align-items:center;min-height:46px;padding:0 1.05em;border-radius:999px;font-size:.68rem;color:rgba(236,232,220,.78);transition:background-color .3s,color .3s}
.dock a.is-cur{background:var(--glass);color:var(--lin)}
.dock a.dock-cta{background:var(--lin);color:var(--ink)}
@media (max-width:1080px){.dock{display:flex}}

/* Arrivée : rendu plein écran, fixe ; la suite glisse par-dessus */
.hero{position:sticky;top:0;z-index:1;height:100vh;height:100svh;min-height:560px;display:flex;align-items:flex-end;overflow:hidden;--hp:0}
.slides{position:absolute;inset:0;transform:scale(calc(1 + var(--hp) * .03));transform-origin:50% 60%}
.slide{position:absolute;inset:0;z-index:1;opacity:0}
.slide.is-on{opacity:1}
.slide img{width:100%;height:100%;object-fit:cover}
.slide.is-on img{animation:kb 9s linear both}
.slide.is-wipe{animation:wipe 1.25s var(--ease-io) both}
@keyframes wipe{from{clip-path:inset(0 0 0 100%)}to{clip-path:inset(0)}}
@keyframes kb{from{transform:scale(1.045)}to{transform:scale(1)}}
.hero::before{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:linear-gradient(to top,var(--shade) 0%,var(--shade-mid) 34%,transparent 64%)}
.hero::after{content:"";position:absolute;inset:0;z-index:3;pointer-events:none;background:var(--veil);opacity:var(--hp)}
.hero-in{position:relative;z-index:4;width:100%;padding-bottom:clamp(1.4rem,3.4vw,3rem);display:grid;gap:clamp(.8rem,1.6vw,1.4rem);opacity:calc(1 - var(--hp) * 1.5);transform:translate3d(0,calc(var(--hp) * -7vh),0)}
.hero-l{display:grid;gap:.7rem;min-width:0}
.hero-r{display:grid;gap:.9rem;justify-items:end}
@media (max-width:640px){.hero-r{justify-items:start;width:100%}.hero-r .bars{order:2}}
@media (max-aspect-ratio:1/1){.slide img{object-position:var(--px,50%) 50%}}
.hero-wm{font-size:clamp(3rem,min(10.75vw,20vh),11.5rem);letter-spacing:-.06em;line-height:.78;margin:0 0 .04em -.05em;text-shadow:0 4px 60px rgba(8,8,6,.35)}
.hero-say{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.3rem,2.5vw,2.4rem);letter-spacing:-.028em;line-height:1.05;max-width:15em;text-wrap:balance;text-shadow:0 2px 24px rgba(8,8,6,.45)}
.hero-foot{display:flex;justify-content:space-between;align-items:end;gap:1.1rem 2rem;flex-wrap:wrap;border-top:1px solid var(--glass-line);padding-top:clamp(.9rem,1.6vw,1.4rem)}
.entries{display:flex;gap:.7rem;flex-wrap:wrap}
.bars{display:flex;align-items:center;gap:.9rem}
.bars-row{display:flex;gap:6px}
.bar{position:relative;width:clamp(26px,4.5vw,58px);height:24px;border:0;background:none;padding:0;cursor:pointer}
.bar::before,.bar i{content:"";position:absolute;left:0;right:0;top:50%;height:2px;margin-top:-1px;border-radius:2px;background:var(--glass-line)}
.bar i{background:var(--lin);transform:scaleX(0);transform-origin:left}
.bar.is-done i{transform:none}
.bar.is-on i{animation:fill var(--dur,5.5s) linear both}
@keyframes fill{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@media (max-width:640px){.entries{width:100%}.entries .btn{flex:1 1 100%;justify-content:space-between}}

/* Panneaux arrondis qui se recouvrent */
.flow{position:relative;z-index:2}
.panel{position:relative;border-radius:var(--rp) var(--rp) 0 0;margin-top:calc(var(--rp) * -1);padding-block:var(--sect) calc(var(--sect) + var(--rp))}
.panel:first-child{margin-top:0}
.panel--last{padding-bottom:0}
.sect-head{display:flex;justify-content:space-between;align-items:center;gap:.8rem 1rem;flex-wrap:wrap;padding-bottom:1.1rem;border-bottom:1px solid var(--rule);margin-bottom:clamp(1.4rem,3vw,2.6rem)}

/* Bandeau noir : le texte arrive juste sous le bord, puis s'éclaire au défilement */
.band{padding-block:0 var(--rp)}
.band-track{height:calc(100svh + 36vh)}
.band-pin{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;gap:clamp(1rem,2.2vw,2rem);padding-block:clamp(88px,12vh,128px) clamp(1.6rem,5vh,3.4rem)}
.band-label{display:flex;justify-content:space-between;gap:.6rem 1rem;flex-wrap:wrap}
.reveal{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.6rem,min(4.9vw,7.6vh),4.7rem);letter-spacing:-.032em;line-height:1.07;max-width:19em}
.js .reveal .w{color:var(--lin-off);transition:color .45s var(--ease)}
.js .reveal .w.is-lit{color:var(--lin)}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2.4vw,2.4rem);margin-top:auto}
.fact{border-top:1px solid var(--rule);padding-top:.9rem;display:grid;gap:.4rem;align-content:start;min-width:0}
.fact b{font-family:var(--f-display);font-stretch:112%;font-weight:300;font-size:clamp(2rem,4vw,3.8rem);letter-spacing:-.04em;line-height:1;color:var(--acc)}
.fact span{color:var(--muted);max-width:19em}
@media (max-width:700px){
  .reveal{font-size:clamp(1.5rem,min(7.4vw,3.7vh),2rem)}
  .facts{grid-template-columns:1fr;gap:0}
  .fact{grid-template-columns:4.6rem minmax(0,1fr);align-items:center;padding-block:.6rem;font-size:.95rem;line-height:1.35}
  .fact b{font-size:1.9rem}
}
@media (max-width:1080px){.band-pin{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 84px)}}
.band.is-flow .band-track{height:auto}
.band.is-flow .band-pin{position:static;height:auto;gap:1.6rem}
.band.is-flow .facts{margin-top:1.5rem}

/* Un panneau par public, ouvert par son nom en très grand */
.tagline{display:inline-flex;align-items:center;gap:.8em}
.badge{display:inline-grid;place-items:center;min-width:2.3em;height:2.3em;padding-inline:.7em;border-radius:999px;background:var(--btn);color:var(--btn-on)}
.mega{font-family:var(--f-display);font-stretch:118%;font-weight:640;font-size:clamp(3rem,12.6vw,13rem);letter-spacing:-.058em;line-height:.84;white-space:nowrap;width:max-content;margin:0 0 clamp(1.6rem,4vw,4rem) -.045em}
.split{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,6fr);gap:clamp(1.5rem,4.5vw,4.5rem);align-items:center}
.split--top{align-items:start}
.split-txt{display:grid;gap:clamp(1.1rem,2vw,1.8rem);min-width:0;justify-items:start}
.say{font-family:var(--f-display);font-stretch:110%;font-weight:540;font-size:clamp(1.85rem,3.7vw,3.6rem);letter-spacing:-.034em;line-height:1;text-wrap:balance}
.fig{min-width:0;border-radius:var(--ri);overflow:hidden;aspect-ratio:3/2;background:var(--soft)}
.fig img{width:100%;height:100%;object-fit:cover}
.points{width:100%;border-top:1px solid var(--rule)}
.points li{display:grid;grid-template-columns:minmax(0,11em) minmax(0,1fr);gap:.3rem 1.2rem;padding-block:1rem;border-bottom:1px solid var(--rule);color:var(--muted);align-items:baseline}
.points b{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.1rem,1.5vw,1.4rem);letter-spacing:-.02em;color:var(--strong)}
@media (max-width:860px){.split{grid-template-columns:1fr}}
@media (max-width:520px){.points li{grid-template-columns:1fr}}

/* Carte claire dans le panneau noir : les images restent sur fond clair */
.card{border-radius:var(--ri);padding:clamp(12px,1.6vw,22px);margin-top:clamp(2rem,4.5vw,4rem);display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(1.2rem,3vw,3rem);align-items:center}
.card .fig{border-radius:calc(var(--ri) - 6px)}
.card-steps{padding:clamp(.4rem,1.4vw,1.4rem) clamp(.4rem,1.4vw,1.4rem) clamp(.4rem,1.4vw,1.4rem) 0}
.card-steps li{display:grid;grid-template-columns:3.4rem minmax(0,1fr);gap:.2rem .8rem;padding-block:1.1rem;border-bottom:1px solid var(--rule)}
.card-steps li:first-child{border-top:1px solid var(--rule)}
.card-steps .step-n{grid-row:span 2}
.card-steps h3{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.1rem,1.5vw,1.4rem);letter-spacing:-.02em;line-height:1.1}
.card-steps p{color:var(--muted);font-size:.97rem;line-height:1.45}
@media (max-width:860px){.card{grid-template-columns:1fr}.card-steps{padding:0 .5rem .5rem}}

/* Schéma interlocuteur unique */
.dia-card{background:var(--soft);border-radius:var(--ri);padding:clamp(1.1rem,2.6vw,2.6rem);margin-top:clamp(2rem,4.5vw,4rem)}
.dia-title{display:flex;justify-content:space-between;gap:.6rem 1rem;flex-wrap:wrap;margin-bottom:clamp(1.2rem,2.4vw,2rem)}
.dia{display:grid;grid-template-columns:minmax(0,1fr) minmax(36px,.7fr) minmax(0,1.3fr) minmax(36px,.7fr) minmax(0,1fr);align-items:center}
.node{background:var(--paper);color:var(--ink);border-radius:var(--rc);padding:.95rem 1.15rem;display:grid;gap:.3rem;min-width:0}
.node strong{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.02rem,1.45vw,1.35rem);letter-spacing:-.02em;line-height:1.1}
.node--hub{background:var(--ink);color:var(--lin);padding:1.4rem 1.5rem 1.3rem;gap:.8rem;--muted:var(--lin-dim)}
.node--hub .wm{font-size:clamp(2.2rem,4vw,3.6rem)}
.node--hub ul{display:flex;flex-wrap:wrap;gap:.4rem .5rem}
.node--hub li{border:1px solid var(--line-ink);border-radius:999px;padding:.35em .85em}
.dia-link{height:1px;background:var(--ink);transform-origin:left}
.dia-fan{position:relative;display:grid;gap:10px;padding-left:clamp(44px,6vw,100px);--half:calc(clamp(44px,6vw,100px) / 2);--tick-y:2rem}
.dia-fan::before{content:"";position:absolute;left:0;top:50%;width:var(--half);height:1px;background:var(--ink);transform-origin:left}
.dia-fan::after{content:"";position:absolute;left:var(--half);top:var(--tick-y);bottom:var(--tick-y);width:1px;background:var(--ink)}
.dia-fan .node{position:relative;min-height:4rem;align-content:center}
.dia-fan .node::before{content:"";position:absolute;right:100%;top:50%;width:var(--half);height:1px;background:var(--ink);transform-origin:left}
@media (max-width:860px){
  .dia{grid-template-columns:1fr}
  .dia-link{width:1px;height:28px;margin-left:24px;transform-origin:top}
  .dia-fan{padding-left:48px;padding-top:28px;--half:24px}
  .dia-fan::before{display:none}
  .dia-fan::after{left:24px;top:0;bottom:var(--tick-y);transform-origin:top}
}

/* Étapes */
.steps{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:clamp(2rem,4.5vw,4rem);border-top:1px solid var(--rule)}
.step{padding:1.2rem 1.2rem 0 0;display:grid;gap:.4rem;align-content:start;min-width:0}
.step + .step{border-left:1px solid var(--rule);padding-left:1.2rem}
.step-n{font-family:var(--f-display);font-stretch:112%;font-weight:300;font-size:clamp(1.6rem,2.6vw,2.4rem);letter-spacing:-.03em;line-height:1;color:var(--acc)}
.step h3{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.05rem,1.4vw,1.3rem);letter-spacing:-.02em;line-height:1.1;margin-top:.5rem}
.step p{color:var(--muted);font-size:.95rem;line-height:1.45}
@media (max-width:980px){
  .steps{grid-template-columns:1fr}
  .step{grid-template-columns:3.2rem minmax(0,1fr);column-gap:.8rem;padding:1.05rem 0;border-bottom:1px solid var(--rule)}
  .step + .step{border-left:0;padding-left:0}
  .step .step-n{grid-row:span 3}
  .step h3{margin-top:0}
}

/* Réalisations : formats paysage sur fond clair */
.gal-head{display:flex;justify-content:space-between;align-items:end;gap:1.2rem 2rem;flex-wrap:wrap;margin-bottom:clamp(1.6rem,3.4vw,3rem)}
.gal{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(8px,1.1vw,16px)}
.tile{position:relative;aspect-ratio:3/2;border-radius:var(--ri);overflow:hidden;background:var(--lin);min-width:0}
.tile--big{grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.tile img{width:100%;height:100%;object-fit:cover;transition:filter .5s var(--ease),transform .9s var(--ease)}
.tile figcaption{position:absolute;left:10px;bottom:10px;right:10px;display:none}
.tile figcaption span{display:inline-block;background:var(--bubble);color:var(--lin);border-radius:999px;padding:.5em .9em}
@media (hover:hover) and (pointer:fine){
  .tile{cursor:none}
  .tile:hover img{filter:blur(7px) brightness(.74);transform:scale(1.07)}
}
@media (hover:none),(pointer:coarse){.tile figcaption{display:block}}
@media (max-width:900px){.gal{grid-template-columns:repeat(2,minmax(0,1fr))}.tile--big{aspect-ratio:3/2;grid-row:auto}}
.cur{position:fixed;left:0;top:0;z-index:60;pointer-events:none;opacity:0;transition:opacity .25s}
.cur.is-on{opacity:1}
.cur-in{display:inline-flex;align-items:center;gap:.7em;background:var(--lin);color:var(--ink);border-radius:999px;padding:.7em 1.1em;white-space:nowrap;transform:scale(.7);transform-origin:0 0;transition:transform .35s var(--ease);box-shadow:0 10px 30px -12px rgba(0,0,0,.5)}
.cur.is-on .cur-in{transform:none}

/* Questions fréquentes */
.faq{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.5rem,5vw,5rem);align-items:start}
.faq-list{border-top:1px solid var(--ink)}
.faq-list details{border-bottom:1px solid var(--rule)}
.faq-list summary{display:flex;justify-content:space-between;align-items:center;gap:1rem;cursor:pointer;list-style:none;padding-block:1.15rem;font-family:var(--f-display);font-stretch:108%;font-weight:540;font-size:clamp(1.08rem,1.5vw,1.35rem);letter-spacing:-.02em;line-height:1.2}
.faq-list summary::-webkit-details-marker{display:none}
.faq-list summary i{flex:none;position:relative;width:34px;height:34px;border-radius:50%;background:var(--paper);transition:transform .45s var(--ease),background-color .3s}
.faq-list summary i::before,.faq-list summary i::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;margin:-.75px 0 0 -6px;background:var(--ink)}
.faq-list summary i::after{transform:rotate(90deg)}
.faq-list details[open] summary i{transform:rotate(45deg);background:var(--ink)}
.faq-list details[open] summary i::before,.faq-list details[open] summary i::after{background:var(--lin)}
.faq-list p{padding:0 3.2rem 1.3rem 0;color:var(--graphite);max-width:38em}
@media (max-width:860px){.faq{grid-template-columns:1fr}}

/* Contact + pied de page */
.cta{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(1.5rem,4vw,4rem);align-items:end}
.cta-side{display:grid;gap:1.3rem}
.cta-btns{display:flex;flex-wrap:wrap;gap:.7rem}
.cta-mail{font-family:var(--f-display);font-stretch:108%;font-size:clamp(1.2rem,2vw,1.7rem);font-weight:500;letter-spacing:-.02em;user-select:all;overflow-wrap:anywhere}
@media (max-width:820px){.cta{grid-template-columns:1fr;align-items:start}}
.giant{overflow:clip;margin-top:clamp(2.5rem,6vw,6rem);border-top:1px solid var(--rule);padding-top:clamp(1rem,2vw,2rem)}
.giant .wm{font-size:min(25.5vw,30rem);letter-spacing:-.06em;line-height:.8;display:flex}
.ft{display:flex;justify-content:space-between;gap:1rem 2rem;flex-wrap:wrap;padding-block:1.6rem 2rem;color:var(--muted)}
.ft nav{display:flex;gap:1.4rem;flex-wrap:wrap}
.ft a:hover{color:var(--lin)}
@media (max-width:1080px){.ft{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 84px)}}

/* Apparitions */
.js [data-ink] .w{display:inline-block;opacity:0;transform:translateY(.28em);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:calc(var(--l,0) * 90ms)}
.js [data-ink].is-in .w{opacity:1;transform:none}
.js [data-ink]:not(.is-w){opacity:0}
.js [data-rise]{opacity:0;transform:translateY(22px);transition:opacity .9s var(--ease),transform .9s var(--ease);transition-delay:calc(var(--d,0) * 80ms)}
.js [data-rise].is-in{opacity:1;transform:none}
.js [data-unveil] img{transform:scale(1.14);transition:transform 1.6s var(--ease),filter .5s var(--ease)}
.js [data-unveil].is-in img{transform:none}
.mega span{display:block}
.js .mega span{clip-path:inset(0 0 100% 0);transform:translateY(.18em);transition:clip-path 1.1s var(--ease-io),transform 1.1s var(--ease)}
.js .mega.is-in span{clip-path:inset(-10% -10% -30% -10%);transform:none}
.js .dia .dia-link,.js .dia-fan::before,.js .dia-fan .node::before{transform:scaleX(0);transition:transform .7s var(--ease-io)}
.js .dia-fan::after{transform:scaleY(0);transition:transform .6s var(--ease-io) .95s}
.js .dia-fan::before{transition-delay:.7s}
.js .dia-fan .node::before{transition-delay:calc(1.3s + var(--d,0) * 120ms)}
.js .dia .dia-link--2{transition-delay:.7s}
.js .dia .node--end{opacity:0;transition:opacity .7s var(--ease) 1.3s}
.js .dia.is-in .node--end{opacity:1}
.js .dia.is-in .dia-link,.js .dia.is-in .dia-fan::before,.js .dia.is-in .dia-fan .node::before,.js .dia.is-in .dia-fan::after{transform:none}
.js .dia .dia-fan .node{opacity:0;transition:opacity .7s var(--ease);transition-delay:calc(1.5s + var(--d,0) * 120ms)}
.js .dia.is-in .dia-fan .node{opacity:1}
@media (max-width:860px){.js .dia .dia-link{transform:scaleY(0)}.js .dia.is-in .dia-link{transform:none}}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation:none!important;transition:none!important}
  .wm .e1,.wm .e2,.wm .e3{font-weight:720}
  .js [data-ink] .w,.js [data-rise],.js [data-unveil] img,.js .mega span,.js .dia .dia-link,.js .dia-fan::before,.js .dia-fan::after,.js .dia-fan .node::before,.js .dia .dia-fan .node,.js .dia .node--end{opacity:1;transform:none;clip-path:none}
  .js .reveal .w{color:var(--lin)}
  .js [data-ink]:not(.is-w){opacity:1}
  .band-track{height:auto}
  .band-pin{position:static;height:auto}
  .facts{margin-top:2rem}
}

/* ---------- Pages intérieures ---------- */
.nav a[aria-current="page"]{color:var(--lin)}
.phead{padding:calc(env(safe-area-inset-top,0px) + clamp(7rem,13vw,11rem)) 0 calc(var(--rp) + clamp(2.4rem,5vw,4.5rem))}
.phead .mono{margin-bottom:1.1rem}
.phead .mega{margin-bottom:clamp(1.2rem,2.6vw,2.2rem)}
.phead .lede{color:var(--lin-dim);max-width:34em}
.ft a{text-underline-offset:.25em}
.cta-tel{font-family:var(--f-display);font-stretch:108%;font-size:clamp(1.2rem,2vw,1.7rem);font-weight:500;letter-spacing:-.02em;user-select:all}
.cta-lines{display:grid;gap:.2rem}
.cta-hours{color:var(--muted)}
.tile-link{display:block;width:100%;height:100%}

/* Réalisations : un bloc par projet */
.project{padding-block:clamp(2.2rem,5vw,4.5rem);border-top:1px solid var(--rule)}
.project:first-of-type{border-top:0;padding-top:0}
.project-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:1rem clamp(1.5rem,4vw,4rem);align-items:end;margin-bottom:clamp(1.2rem,2.6vw,2.2rem)}
.project-head .mono{margin-bottom:.7rem;color:var(--muted)}
.project-head p.lede{color:var(--muted);justify-self:end}
@media (max-width:760px){.project-head{grid-template-columns:1fr}.project-head p.lede{justify-self:start}}
.shots{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(8px,1.1vw,16px)}
.shot{position:relative;display:block;aspect-ratio:16/9;border:0;padding:0;margin:0;border-radius:var(--ri);overflow:hidden;background:var(--lin);min-width:0;cursor:zoom-in}
.shot:nth-child(1){grid-column:span 2;grid-row:span 2;aspect-ratio:auto}
.shot img{width:100%;height:100%;object-fit:cover;transition:filter .5s var(--ease),transform .9s var(--ease)}
@media (hover:hover) and (pointer:fine){
  .shot{cursor:none}
  .shot:hover img{filter:blur(6px) brightness(.76);transform:scale(1.06)}
}
@media (max-width:900px){
  .shots{grid-template-columns:repeat(2,minmax(0,1fr))}
  .shot:nth-child(1),.shot:nth-child(6){grid-column:span 2;grid-row:auto;aspect-ratio:16/9}
}

/* Visionneuse */
.lb{border:0;padding:0;margin:0;width:100%;max-width:none;height:100%;max-height:none;background:rgba(8,8,6,.96);color:var(--lin)}
.lb[open]{display:grid;grid-template-rows:auto minmax(0,1fr) auto;animation:lb-in .35s var(--ease)}
.lb::backdrop{background:rgba(8,8,6,.96)}
@keyframes lb-in{from{opacity:0}to{opacity:1}}
.lb-top,.lb-bot{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:calc(env(safe-area-inset-top,0px) + 14px) var(--gx) 14px}
.lb-bot{padding:14px var(--gx) calc(env(safe-area-inset-bottom,0px) + 16px)}
.lb-stage{display:grid;place-items:center;min-height:0;padding-inline:var(--gx)}
.lb-stage img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:clamp(8px,1vw,14px)}
.lb-btn{display:inline-flex;align-items:center;justify-content:center;min-height:46px;min-width:46px;padding:0 1.2em;border-radius:999px;border:1px solid var(--glass-line);background:none;color:var(--lin);cursor:pointer;transition:background-color .25s,color .25s}
.lb-btn:hover{background:var(--lin);color:var(--ink)}
.lb-nav{display:flex;gap:.5rem}

/* Le studio */
.values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(1rem,2.4vw,2.4rem)}
.value{border-top:1px solid var(--rule);padding-top:1rem;display:grid;gap:.5rem;align-content:start;min-width:0}
.value b{font-family:var(--f-display);font-stretch:112%;font-weight:560;font-size:clamp(1.6rem,3vw,2.8rem);letter-spacing:-.035em;line-height:1}
.value span{color:var(--muted);max-width:22em}
@media (max-width:760px){.values{grid-template-columns:1fr}}
.duo{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.5rem,5vw,5rem);align-items:start}
@media (max-width:860px){.duo{grid-template-columns:1fr}}
.prose{display:grid;gap:1rem;max-width:40em}
.prose p{color:var(--muted)}
.prose p.big{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.3rem,2.2vw,2rem);letter-spacing:-.028em;line-height:1.12;color:var(--strong)}
.todo{border:1.5px dashed var(--graphite);border-radius:var(--ri);padding:clamp(1rem,2vw,1.6rem);display:grid;gap:.5rem;background:var(--paper);color:var(--ink)}
.todo .mono{color:var(--graphite)}

/* Contact */
.contact{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.5rem,5vw,5rem);align-items:start}
@media (max-width:900px){.contact{grid-template-columns:1fr}}
.coords{display:grid;gap:1.4rem}
.coord{border-top:1px solid var(--rule);padding-top:.9rem;display:grid;gap:.25rem}
.coord b{font-family:var(--f-display);font-stretch:108%;font-weight:520;font-size:clamp(1.15rem,1.7vw,1.5rem);letter-spacing:-.02em;overflow-wrap:anywhere;user-select:all}
.coord .mono{color:var(--muted)}
.coord a{text-underline-offset:.25em}
.form{background:var(--lin);border-radius:var(--rp);padding:clamp(1.2rem,3vw,2.6rem);display:grid;gap:1.1rem}
.form-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1rem}
@media (max-width:640px){.form-row{grid-template-columns:1fr}}
.fld{display:grid;gap:.35rem;min-width:0}
.fld label,.fld legend{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--graphite);padding:0}
.fld input,.fld textarea{width:100%;min-height:52px;padding:.8rem 1rem;border-radius:16px;border:1px solid #cfc7b4;background:var(--paper);color:var(--ink);font:inherit;font-size:1rem}
.fld textarea{min-height:150px;resize:vertical}
.fld input:focus,.fld textarea:focus{outline:2px solid var(--ink);outline-offset:1px;border-color:var(--ink)}
fieldset.fld{border:0;margin:0;padding:0}
.choice{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.6rem;margin-top:.35rem}
.choice label{position:relative;display:flex;align-items:center;justify-content:center;min-height:52px;border-radius:999px;border:1px solid var(--ink);cursor:pointer;font-family:var(--f-mono);font-size:.74rem;letter-spacing:.09em;text-transform:uppercase;color:var(--ink);transition:background-color .25s,color .25s}
.choice input{position:absolute;opacity:0;inset:0;width:100%;height:100%;min-height:0;margin:0;cursor:pointer}
.choice label:has(input:checked){background:var(--ink);color:var(--lin)}
.choice label:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:3px}
.consent{display:grid;grid-template-columns:auto minmax(0,1fr);gap:.7rem;align-items:start;font-size:.95rem;color:var(--graphite)}
.consent input{width:22px;height:22px;margin-top:.1rem;accent-color:var(--ink)}
.consent a{color:var(--ink)}
.trap{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}
.form .btn{justify-self:start;cursor:pointer;font-family:var(--f-mono)}
.form-msg{border-radius:16px;padding:.85rem 1.1rem;background:#f6e3df;color:#9b2c1f}

/* Pages légales */
.legal{max-width:46rem;display:grid;gap:clamp(1.6rem,3vw,2.4rem)}
.legal h2{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.25rem,2vw,1.6rem);letter-spacing:-.025em;line-height:1.1;margin-bottom:.6rem}
.legal p,.legal li{color:var(--graphite)}
.legal p + p{margin-top:.6rem}
.legal ul{list-style:disc;padding-left:1.2rem;display:grid;gap:.3rem}
.legal a{color:var(--ink);text-underline-offset:.25em}
.legal b{color:var(--ink);font-weight:600}
/* série de cinq images : la dernière occupe deux colonnes, à la hauteur de sa voisine */
@media (min-width:901px){.shot:nth-child(5):last-child{grid-column:span 2;aspect-ratio:auto}}

/* ====================================================================== */
/* Deuxième passe : profondeur, chevauchements, repères, animation du parcours */
/* ====================================================================== */

/* Transition douce entre les pages (navigateurs récents) */
@view-transition{navigation:auto}
::view-transition-old(root){animation:vt-out .28s var(--ease) both}
::view-transition-new(root){animation:vt-in .45s var(--ease) both}
@keyframes vt-out{to{opacity:0}}
@keyframes vt-in{from{opacity:0;transform:translateY(14px)}}

/* Panneaux : chacun glisse par-dessus le précédent, qui reste en place, avec une ombre douce pour fondre les bords */
.panel{box-shadow:0 -22px 60px -26px rgba(8,8,6,.42),0 -1px 0 rgba(236,229,213,.08)}
.on-paper.panel,.on-mist.panel{box-shadow:0 -26px 70px -22px rgba(8,8,6,.5)}
@media (min-width:821px){
  /* Le bandeau reste en place pendant que « Particuliers » le recouvre, puis « Paysagistes » recouvre « Particuliers ». Le reste défile simplement. */
  #bureau,#particuliers{position:sticky;top:calc(100svh - var(--h,100000px))}
  #particuliers{padding-bottom:calc(var(--sect) + var(--rp) + clamp(5.5rem,17vh,11rem))}
}

/* Images : dévoilées par le bas, sans recadrage */
.fig{aspect-ratio:16/9}
.tile{aspect-ratio:16/9}
@media (max-width:900px){.tile--big{aspect-ratio:16/9}}
.js [data-unveil] img{clip-path:inset(0 0 100% 0);transform:scale(1.05);transition:clip-path 1.15s var(--ease-io),transform 1.5s var(--ease),filter .5s var(--ease)}
.js [data-unveil].is-in img{clip-path:inset(0);transform:none}
.js .tile.is-in:hover img,.js .shot.is-in:hover img{transform:scale(1.05)}
.slide.is-on img{animation:none}

/* Accueil : le titre principal réunit le métier et la phrase */
.hero-h1{display:grid;gap:.7rem;margin:0;font:inherit;font-weight:400}
.hero-h1 .mono{display:block}
html{background:var(--ink)}

/* Menu */
.nav a.nav-pro{color:var(--lin);border:1px solid var(--glass-line);margin-left:.4rem}
/* Six entrées dans la barre : jamais sur deux lignes, et le bouton Menu prend le relais plus tôt */
.nav a,.bubble-cta{white-space:nowrap}
@media (max-width:1260px){.nav,.bubble-cta{display:none}.menu-btn{display:inline-block}.bubble{grid-template-columns:1fr auto;padding-left:20px}}
.menu-list a.is-pro{color:var(--graphite)}

/* Repère de position : un filet et un point lumineux à droite, à la place de la barre de défilement du navigateur */
html{scrollbar-width:none}
html::-webkit-scrollbar{display:none}
.rail{position:fixed;z-index:60;right:clamp(7px,1vw,16px);top:22vh;height:56vh;width:1px;mix-blend-mode:difference;background:rgba(236,229,213,.3);touch-action:none}
.rail::before{content:"";position:absolute;inset:-14px -14px -14px -14px}
.rail i{position:absolute;left:50%;top:calc(var(--p,0) * 100%);width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--lin);box-shadow:0 0 14px 5px rgba(236,229,213,.55),0 0 2px 1px rgba(236,229,213,.9);transition:transform .25s var(--ease)}
.rail:hover i,.rail.is-drag i{transform:scale(1.5)}
@media (hover:none),(pointer:coarse){.rail{pointer-events:none;top:30vh;height:40vh;right:5px}}
.prog{display:none}

/* Curseur : un rond beige avec une légère lueur (souris uniquement) */
.has-cursor,.has-cursor *{cursor:none!important}
.has-cursor input,.has-cursor textarea{cursor:text!important}
.cursor{position:fixed;left:0;top:0;z-index:1000;pointer-events:none;opacity:0;transition:opacity .25s;will-change:transform}
.cursor.is-on{opacity:1}
.cursor.is-label{opacity:0}
.cursor i{display:block;width:14px;height:14px;margin:-7px 0 0 -7px;border-radius:50%;background:var(--lin);box-shadow:0 0 0 1px rgba(15,16,13,.5),0 0 22px 9px rgba(236,229,213,.42),0 3px 12px rgba(15,16,13,.28);transition:transform .35s var(--ease),background-color .25s,box-shadow .25s}
.cursor.is-hot i{transform:scale(2.7);background:rgba(236,229,213,.3);box-shadow:0 0 0 .5px rgba(15,16,13,.55),0 0 26px 10px rgba(236,229,213,.34)}
.cursor.is-down i{transform:scale(.7)}
.cursor.is-hot.is-down i{transform:scale(2.2)}
.lb .cursor{position:fixed}

/* Très grands titres : plus contenus */
.mega{margin-bottom:clamp(1.4rem,3vw,3rem)}

/* Bandeau : repères rapprochés du texte */
.band-pin{justify-content:center;gap:clamp(1rem,2.4vh,1.8rem)}
.facts{margin-top:clamp(.6rem,2.5vh,1.8rem)}

/* ---------- Le parcours : du terrain nu au jardin (pleine largeur, en couleur) ---------- */
.path-track{height:calc(100svh + 150vh)}
.path-pin{position:sticky;top:0;height:100svh;display:flex;flex-direction:column;justify-content:center;gap:clamp(.5rem,1.6vh,1.2rem);padding-block:clamp(84px,11vh,118px) clamp(1.2rem,4vh,2.4rem);--s1:1;--s2:1;--s3:1;--s4:1;--p:1;--cam:0}
.js .path-pin{--s1:0;--s2:0;--s3:0;--s4:0;--p:0}
.path-head{display:flex;justify-content:space-between;align-items:end;gap:.6rem 2rem;flex-wrap:wrap}
.path-title{font-family:var(--f-display);font-stretch:110%;font-weight:540;font-size:clamp(1.5rem,3.2vw,3rem);letter-spacing:-.032em;line-height:1.02;display:flex;flex-wrap:wrap;align-items:flex-end;gap:.3em 1.2em}
.path-count{font-family:var(--f-display);font-stretch:112%;font-weight:300;font-size:clamp(1.6rem,3vw,2.8rem);letter-spacing:-.03em;line-height:1;white-space:nowrap}
.path-count small{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.09em;color:var(--lin-dim);margin-left:.5em}
.path-scene{flex:1 1 auto;min-height:clamp(190px,30vh,300px);width:100%;position:relative}
.path-scene canvas{display:block;position:absolute;inset:0;width:100%;height:100%}
.path-tags{display:none;list-style:none;padding:0;margin:0 0 .8rem;flex-wrap:wrap;gap:.28rem;counter-reset:tag}
.path-tags li{counter-increment:tag;display:inline-flex;opacity:calc(.55 + var(--s4,1) * .45)}
.path-tags button{display:inline-flex;align-items:center;gap:.5em;padding:.3em .75em .3em .32em;border-radius:999px;border:1px solid var(--glass-line);background:none;font:inherit;font-size:.58rem;letter-spacing:inherit;text-transform:inherit;color:var(--lin);cursor:pointer;transition:background .3s,color .3s,border-color .3s}
.path-tags button::before{content:counter(tag);display:inline-grid;place-items:center;width:1.7em;height:1.7em;border-radius:50%;background:var(--lin);color:var(--ink);font-size:.95em;letter-spacing:0}
.path-tags button[aria-pressed="true"]{background:var(--lin);border-color:var(--lin);color:var(--ink);font-weight:500;box-shadow:0 0 14px rgba(255,250,235,.45)}
.path-tags button[aria-pressed="true"]::before{background:var(--ink);color:var(--lin)}
/* Consigne et bouton « Tout réveiller » : posés à l'écart de la maquette, visibles une fois les légendes affichées */
.path-foot{position:relative}
.path-hint{position:absolute;right:var(--gx);bottom:100%;margin:0 0 .9rem;display:flex;align-items:center;gap:.9rem;color:var(--lin-dim);font-size:.6rem;opacity:0;pointer-events:none;transition:opacity .5s var(--ease)}
.path-pin.is-live .path-hint{opacity:1;pointer-events:auto}
.path-hint button{flex:none;min-height:34px;padding:0 1.1em;border-radius:999px;border:1px solid var(--lin);background:none;font:inherit;letter-spacing:inherit;text-transform:inherit;color:var(--lin);cursor:pointer;transition:background .3s,color .3s,box-shadow .3s}
.path-hint button:hover,.path-hint button[aria-pressed="true"]{background:var(--lin);color:var(--ink)}
.path-hint button[aria-pressed="true"]{box-shadow:0 0 14px rgba(255,250,235,.45)}
#pathCanvas.is-pick{cursor:pointer}
.path-title span{flex:0 1 21em;padding-bottom:.28em;font-size:.42em;font-weight:440;letter-spacing:-.012em;line-height:1.22;color:var(--lin-dim);text-wrap:balance}
#pathCanvas{touch-action:pan-y}
.path-steps{position:relative;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(.8rem,2vw,2rem);border-top:1px solid var(--rule)}
.path-steps::before{content:"";position:absolute;left:0;right:0;top:-1px;height:1px;background:var(--lin);transform:scaleX(var(--p));transform-origin:left}
.path-step{padding-top:.9rem;display:grid;gap:.3rem;align-content:start;min-width:0}
.path-step b,.path-step span{transition:color .45s var(--ease)}
.path-step .mono{color:var(--lin-dim)}
.js .path-step:not(.is-on):not(.is-done) b,.js .path-step:not(.is-on):not(.is-done) span{color:var(--lin-wait)}
.path-step b{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.05rem,1.5vw,1.4rem);letter-spacing:-.02em;line-height:1.1}
.path-step span:last-child{color:var(--lin-dim);font-size:.95rem;line-height:1.4}
@media (max-width:820px){
  .path-tags{display:flex;flex-wrap:nowrap;gap:.25rem;margin:0 calc(var(--gx) * -1) .6rem;padding:2px var(--gx);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .path-tags::-webkit-scrollbar{display:none}
  .path-tags li{flex:none}
  .path-tags button{font-size:.56rem;padding:.32em .8em .32em .3em;letter-spacing:.06em;white-space:nowrap}
  .path-hint{position:static;justify-content:space-between;gap:.6rem;margin:0 0 .5rem;font-size:.54rem;opacity:var(--s4,1);pointer-events:auto}
  .path-hint button{min-height:30px;padding:0 .9em}
  .path-title span{flex-basis:100%;font-size:.56em}
  .path-steps{grid-template-columns:1fr;gap:0;min-height:6.2rem}
  .js .path-step{display:none}
  .js .path-step.is-on{display:grid!important}
}
@media (max-width:1080px){.path-pin{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 84px)}}
.band.is-flow .path-track{height:auto}
.band.is-flow .path-pin{position:static;height:auto;padding-block:clamp(3rem,8vw,6rem);--cam:0}
.band.is-flow .path-scene{flex:none;height:min(62vw,480px)}

/* ---------- Chevauchements entre panneaux ---------- */
/* Pastille tournante, à cheval sur deux panneaux */
.seal{position:absolute;z-index:3;right:clamp(16px,6vw,96px);top:0;width:clamp(86px,10vw,136px);aspect-ratio:1;transform:translateY(-50%);border-radius:50%;background:var(--ink);color:var(--lin);box-shadow:0 10px 30px -10px rgba(8,8,6,.6),0 0 0 1px rgba(236,229,213,.22)}
.seal svg{display:block;width:100%;height:100%;transform:rotate(calc(var(--r,0) * 1deg))}
.seal text{fill:var(--lin);font-family:var(--f-mono);font-size:10.4px;letter-spacing:.2em;text-transform:uppercase}
.seal circle{fill:var(--lin)}
/* Bande de mots dans une bulle claire, à cheval sur deux panneaux */
.seam{position:absolute;z-index:3;left:clamp(10px,2.2vw,34px);right:clamp(10px,2.2vw,34px);top:0;height:clamp(3rem,7vw,6.2rem);transform:translateY(-50%);border-radius:999px;overflow:hidden;pointer-events:none;background:var(--paper);color:var(--ink);box-shadow:0 0 0 1px rgba(15,16,13,.1),0 0 46px 10px rgba(250,248,243,.3),0 20px 46px -20px rgba(8,8,6,.6);display:flex;align-items:center}
.seam::before,.seam::after{content:"";position:absolute;top:0;bottom:0;width:clamp(28px,6vw,90px);z-index:1;pointer-events:none}
.seam::before{left:0;background:linear-gradient(to right,var(--paper),rgba(250,248,243,0))}
.seam::after{right:0;background:linear-gradient(to left,var(--paper),rgba(250,248,243,0))}
.seam-row{white-space:nowrap;font-family:var(--f-display);font-stretch:116%;font-weight:620;font-size:clamp(1.35rem,3.5vw,3.1rem);letter-spacing:-.04em;line-height:1;transform:translate3d(calc(var(--sx,0) * -1px),0,0);will-change:transform}
.seam-row span{padding-right:.55em}
.seam-row span:nth-child(even){font-weight:300;color:var(--graphite)}
#paysagistes{padding-top:calc(var(--sect) + clamp(2.6rem,6vw,5.5rem))}
#particuliers{padding-top:calc(var(--sect) + clamp(1rem,3vw,2.5rem));padding-bottom:calc(var(--sect) + var(--rp) + clamp(1.6rem,4vw,3rem))}

#questions{box-shadow:none}

/* Paysagistes : trois repères */
.pro-facts{margin-top:clamp(2rem,4.5vw,4rem)}
.pro-facts .fact b{min-width:1.6em}
.split-txt .cta-btns{margin-top:.2rem}

/* Étapes : le filet se trace à l'apparition */
.steps{border-top:0;position:relative}
.steps::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--rule)}
.js .steps::after{content:"";position:absolute;left:0;right:0;top:0;height:1px;background:var(--acc);transform:scaleX(0);transform-origin:left;transition:transform 1.6s var(--ease-io) .2s}
.js .steps.is-in::after{transform:none}

/* Questions : ouverture animée (navigateurs récents) */
.faq-list{interpolate-size:allow-keywords}
.faq-list details::details-content{block-size:0;overflow:clip;transition:block-size .45s var(--ease),content-visibility .45s allow-discrete}
.faq-list details[open]::details-content{block-size:auto}

/* ---------- Pied de page ---------- */
.giant{display:flex;justify-content:space-between;align-items:end;gap:1.2rem 3rem;flex-wrap:wrap;overflow:visible}
.giant .wm{font-size:min(12.5vw,15rem);letter-spacing:-.055em;line-height:.82}
.giant-say{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.1rem,1.9vw,1.75rem);letter-spacing:-.025em;line-height:1.12;text-align:right;padding-bottom:.25em}
.giant-say span{display:block;color:var(--lin-dim)}
@media (max-width:640px){.giant-say{text-align:left}}
.socials{display:flex;gap:.5rem;flex-wrap:wrap}
.social{display:inline-flex;align-items:center;gap:.6em;min-height:44px;padding:0 1.1em 0 .45em;border-radius:999px;border:1px solid var(--glass-line);transition:background-color .25s,color .25s,border-color .25s}
.social i{font-style:normal;display:inline-grid;place-items:center;width:32px;height:32px;border-radius:50%;background:var(--lin);color:var(--ink);font-size:.62rem;letter-spacing:.02em}
.social:hover{background:var(--lin);color:var(--ink);border-color:var(--lin)}
.social:hover i{background:var(--ink);color:var(--lin)}
.ft{align-items:center}

.cta-addr{color:var(--lin-dim);margin-top:.5rem;line-height:1.6}
.zones{display:flex;flex-wrap:wrap;align-items:center;gap:.35rem .5rem;padding-block:1.1rem;border-top:1px solid var(--rule);margin-top:1.4rem}
.zones span{color:var(--lin-dim);margin-right:.6rem}
.zones a{display:inline-flex;align-items:center;min-height:36px;padding:0 .9em;border-radius:999px;border:1px solid var(--glass-line);transition:background-color .25s,color .25s}
.zones a:hover,.zones a[aria-current="page"]{background:var(--lin);color:var(--ink)}

/* ---------- Pages de secteur ---------- */
.sector-fig{margin-top:clamp(1.6rem,3.5vw,3rem)}
.sector-fig figcaption{margin-top:.7rem;color:var(--muted)}
.towns{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:clamp(1.2rem,2.4vw,2rem) 0 0}
.towns li{padding:.5em 1em;border-radius:999px;border:1px solid var(--rule);font-family:var(--f-mono);font-size:.7rem;letter-spacing:.08em;text-transform:uppercase}
.sector-h{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.25rem,2vw,1.7rem);letter-spacing:-.025em;line-height:1.1;margin-top:clamp(2rem,4vw,3.4rem)}
.prose p + p{margin-top:0}

/* ---------- Réalisations : accès direct aux projets ---------- */
.chips{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:clamp(2rem,4vw,3.5rem)}
.chip{display:inline-flex;align-items:center;gap:.6em;min-height:44px;padding:0 1.1em;border-radius:999px;border:1px solid var(--ink);transition:background-color .25s,color .25s}
.chip:hover{background:var(--ink);color:var(--lin)}
.chip b{font-weight:400;color:var(--graphite)}
.chip:hover b{color:var(--lin-dim)}
.project{scroll-margin-top:96px}

@media (prefers-reduced-motion:reduce){
  .js .path-pin{--s1:1;--s2:1;--s3:1;--s4:1;--p:1;--cam:0}
  .path-track{height:auto}
  .path-pin{position:static;height:auto}
  .path-scene{flex:none;height:min(62vw,480px)}
  .path-tags li{opacity:1}
  .intro{display:none}
  .rev-track{animation:none}
  .rev-wrap{overflow-x:auto}
  .rev-dup{display:none}
  .js [data-unveil] img{clip-path:none;transform:none}
  .js .path-step{display:grid!important}
  .js .path-step:not(.is-on):not(.is-done) b{color:inherit}
  .js .path-step:not(.is-on):not(.is-done) span{color:var(--lin-dim)}
  .seal svg{transform:none}
  #bureau,#particuliers{position:relative;top:auto}
}

/* ---------- Bloc « un seul interlocuteur » : qui fait quoi, et ce que le client y gagne ---------- */
.trio-h{font-family:var(--f-display);font-stretch:110%;font-weight:540;font-size:clamp(1.35rem,2.5vw,2.3rem);letter-spacing:-.03em;line-height:1.05;max-width:22em;margin-bottom:clamp(1.2rem,2.6vw,2.2rem);text-wrap:balance}
.trio{display:grid;grid-template-columns:minmax(0,1fr) clamp(24px,4vw,64px) minmax(0,1.25fr) clamp(24px,4vw,64px) minmax(0,1fr);align-items:stretch}
.trio-col{background:var(--paper);color:var(--ink);border-radius:var(--rc);padding:clamp(1rem,1.8vw,1.5rem);display:grid;gap:.5rem;align-content:start;min-width:0}
.trio-col strong{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.15rem,1.7vw,1.5rem);letter-spacing:-.02em;line-height:1.1}
.trio-col p{color:var(--graphite);font-size:.97rem;line-height:1.45}
.trio-col--hub{background:var(--ink);color:var(--lin);--muted:var(--lin-dim);gap:.7rem}
.trio-col--hub p{color:var(--lin-dim)}
.trio-col--hub .wm{font-size:clamp(2.1rem,3.6vw,3.3rem);line-height:.9}
.trio-col--hub ul{display:flex;flex-wrap:wrap;gap:.35rem .4rem;margin-top:.2rem}
.trio-col--hub li{border:1px solid var(--line-ink);border-radius:999px;padding:.35em .8em;font-size:.64rem}
.trio-link{align-self:center;height:1px;background:var(--ink);position:relative;transform-origin:left}
.trio-link::after{content:"";position:absolute;right:0;top:50%;width:7px;height:7px;border-top:1px solid var(--ink);border-right:1px solid var(--ink);transform:translateY(-50%) rotate(45deg)}
.js .trio .trio-link{transform:scaleX(0);transition:transform .7s var(--ease-io) .25s}
.js .trio .trio-link--2{transition-delay:.75s}
.js .trio.is-in .trio-link{transform:none}
.gains{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(.8rem,2vw,2rem);margin-top:clamp(1.2rem,2.6vw,2.2rem)}
.gains li{border-top:1px solid var(--ink);padding-top:.8rem;display:grid;gap:.3rem;align-content:start}
.gains b{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.02rem,1.4vw,1.25rem);letter-spacing:-.02em}
.gains span{color:var(--graphite);font-size:.95rem;line-height:1.45}
@media (max-width:860px){
  .trio{grid-template-columns:1fr}
  .trio-link{width:1px;height:26px;margin-left:26px;transform-origin:top}
  .trio-link::after{right:auto;left:50%;top:auto;bottom:0;transform:translate(-50%,0) rotate(135deg)}
  .js .trio .trio-link{transform:scaleY(0)}
  .gains{grid-template-columns:1fr;gap:.2rem}
  .gains li{padding-block:.8rem}
}

/* ---------- Paysagistes : animation plan → maquette, puis les trois temps ---------- */
.pro-card{align-items:stretch}
.pro-anim{position:relative;border-radius:calc(var(--ri) - 6px);background:#f3efe6;min-height:clamp(260px,34vw,470px);overflow:hidden}
.pro-anim canvas{position:absolute;inset:0;width:100%;height:100%;display:block}
.pro-anim-cap{position:absolute;left:14px;bottom:12px;margin:0;padding:.45em .9em;border-radius:999px;background:var(--ink);color:var(--lin);font-size:.62rem}
.pro-anim-cap .dot{background:var(--lin)}
.pro-card-txt{display:grid;gap:clamp(.7rem,1.4vw,1.1rem);align-content:center;padding:clamp(.6rem,1.6vw,1.6rem) clamp(.4rem,1.4vw,1.4rem) clamp(.6rem,1.6vw,1.6rem) 0}
.pro-card-txt .say{font-size:clamp(1.5rem,2.6vw,2.5rem)}
.pro-card-txt .lede{color:var(--graphite);font-size:1rem}
.pro-card-txt .card-steps{padding:0}
@media (max-width:860px){.pro-card-txt{padding:.2rem .5rem .6rem}.pro-anim{min-height:64vw}}

/* ---------- Réseau : carte de France ---------- */
.net{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(1.5rem,5vw,5rem);align-items:center;margin-top:clamp(3rem,7vw,7rem);padding-top:clamp(2rem,4vw,3.4rem);border-top:1px solid var(--rule)}
.net-txt{display:grid;gap:clamp(1rem,2vw,1.6rem);justify-items:start}
.net-list{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:0}
.net-list li{padding:.5em 1em;border-radius:999px;border:1px solid var(--glass-line)}
.net-map{margin:0;justify-self:center;width:100%;max-width:560px}
.net-map svg{display:block;width:100%;height:auto;overflow:visible}
.net-land{fill:rgba(236,229,213,.05);stroke:var(--lin);stroke-width:1.1;stroke-linejoin:round;opacity:.8}
.net-arc{fill:none;stroke:var(--lin);stroke-width:1.2;stroke-dasharray:1;stroke-dashoffset:0;opacity:.6}
.net-pt circle{fill:var(--lin)}
.net-pt .net-halo{fill:var(--lin);opacity:.16;transform-box:fill-box;transform-origin:center;animation:net-pulse 2.8s ease-in-out infinite;animation-delay:calc(var(--d) * .35s)}
.net-pt text{fill:var(--lin);font-family:var(--f-mono);font-size:15px;letter-spacing:.08em;text-transform:uppercase}
.net-pt--home text{font-weight:500}
@keyframes net-pulse{0%,100%{transform:scale(.6);opacity:.26}50%{transform:scale(1.25);opacity:.06}}
.js .net-arc{stroke-dashoffset:1;transition:stroke-dashoffset 1.3s var(--ease-io);transition-delay:calc(.3s + var(--d) * .16s)}
.js .net-pt{opacity:0;transition:opacity .6s var(--ease);transition-delay:calc(.2s + var(--d) * .16s)}
.js .net.is-in .net-arc{stroke-dashoffset:0}
.js .net.is-in .net-pt{opacity:1}
@media (max-width:860px){.net{grid-template-columns:1fr}.net-pt text{font-size:19px}}

/* ---------- Avis ---------- */
#avis{padding-bottom:calc(var(--sect) + var(--rp))}
.rev-wrap{overflow:hidden;margin-top:clamp(1.4rem,3vw,2.6rem);mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent);-webkit-mask-image:linear-gradient(to right,transparent,#000 6%,#000 94%,transparent)}
.rev-track,.rev-dup{display:flex;gap:clamp(10px,1.2vw,18px)}
.rev-track{width:max-content;padding-inline:var(--gx);animation:rev-move 95s linear infinite}
.rev-wrap:hover .rev-track{animation-play-state:paused}
@keyframes rev-move{to{transform:translateX(calc(-50% - clamp(5px,.6vw,9px)))}}
.rev{flex:none;width:min(84vw,400px);margin:0;background:var(--lin);border-radius:var(--ri);padding:clamp(1.1rem,2vw,1.6rem);display:grid;gap:.8rem;align-content:start}
.rev-stars{display:flex;align-items:center;gap:.7rem;margin:0;color:var(--star)}
.rev-stars span{letter-spacing:.14em;font-size:1.05rem;line-height:1}
.rev-stars b{font-family:var(--f-mono);font-weight:500;font-size:.68rem;letter-spacing:.06em;line-height:1;padding:.5em .8em;border-radius:999px;background:var(--ink);color:var(--star)}
.split-more{max-width:34em;color:var(--graphite)}
.rev blockquote{margin:0;font-size:1rem;line-height:1.5}
.rev figcaption{display:flex;justify-content:space-between;gap:.6rem;color:var(--graphite)}
.rev figcaption b{color:var(--ink);font-weight:500}
.rev{min-height:13.5rem;align-content:space-between}
/* Au doigt : on fait défiler soi-même, carte par carte */
@media (hover:none),(pointer:coarse){
  .rev-wrap{overflow-x:auto;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none;mask-image:none;-webkit-mask-image:none}
  .rev-wrap::-webkit-scrollbar{display:none}
  .rev-track{animation:none}
  .rev-dup{display:none}
  .rev{scroll-snap-align:center}
}

/* ---------- Écran d'arrivée : voile clair et flou, logo animé ---------- */
.intro{position:fixed;inset:0;z-index:3000;display:grid;place-items:center;background:rgba(250,248,243,.8);-webkit-backdrop-filter:blur(30px) saturate(1.15);backdrop-filter:blur(30px) saturate(1.15);color:var(--ink);pointer-events:none;animation:intro-out .75s var(--ease) 1.15s both}
.intro .wm{font-size:clamp(3.4rem,13vw,9.5rem);letter-spacing:-.06em;line-height:.8;animation:intro-wm .7s var(--ease) both}
.intro-in{display:inline-grid;justify-items:stretch;row-gap:clamp(.85rem,2.1vw,1.6rem)}
/* Slogan : chaque lettre est répartie d'un bord à l'autre du logo (width:0 + min-width:100% = il ne peut pas élargir le bloc) */
.intro-sl{display:flex;justify-content:space-between;width:0;min-width:100%;padding:0 .5% 0 1%;font-size:clamp(.56rem,1.42vw,1.04rem);line-height:1;letter-spacing:0;text-transform:uppercase;white-space:pre;animation:intro-sl .7s var(--ease) .22s both}
@keyframes intro-sl{from{opacity:0;transform:translateY(.5em)}}
@media (prefers-reduced-motion:reduce){.intro-sl{animation:none}}
.intro i{position:absolute;left:50%;bottom:clamp(2rem,7vh,4.5rem);width:min(40vw,220px);height:2px;margin-left:calc(min(40vw,220px) / -2);background:rgba(15,16,13,.14);overflow:hidden;border-radius:2px}
.intro i::after{content:"";position:absolute;inset:0;background:var(--ink);transform-origin:left;animation:intro-bar 1.1s var(--ease-io) both}
@keyframes intro-wm{from{opacity:0;transform:translateY(.12em) scale(.97);filter:blur(10px)}}
@keyframes intro-bar{from{transform:scaleX(0)}}
@keyframes intro-out{to{opacity:0;visibility:hidden;-webkit-backdrop-filter:blur(0);backdrop-filter:blur(0)}}
.no-intro .intro{display:none}

.zones-more{color:var(--lin-dim);line-height:1.9;padding-bottom:1.1rem;font-size:.66rem}

/* ---------- Page Paysagistes ---------- */
.phead-cta{margin-top:clamp(1.4rem,2.6vw,2.2rem)}
.lp-facts{margin-top:clamp(2rem,4.5vw,4rem)}
.lp-card{margin-top:0;grid-template-columns:1fr}
.lp-card .pro-anim{aspect-ratio:21/9;min-height:0}
.lp-card .pro-card-txt{grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(1.2rem,4vw,4rem);align-items:start;padding:clamp(.8rem,2vw,2rem) clamp(.4rem,1.4vw,1.4rem) clamp(.6rem,1.4vw,1.4rem)}
.lp-intro{display:grid;gap:clamp(.7rem,1.4vw,1.1rem);align-content:start}
.lp-card .card-steps li{padding-block:.85rem}
@media (max-width:860px){.lp-card .pro-anim{aspect-ratio:4/3}.lp-card .pro-card-txt{grid-template-columns:1fr;padding:.4rem .5rem .6rem}}
.lp-h{margin-bottom:clamp(1.4rem,3vw,2.6rem)}
.ticks{display:grid;gap:.55rem;list-style:none;padding:0;margin:0}
.ticks li{position:relative;padding-left:1.5rem;color:var(--muted);line-height:1.45}
.ticks li::before{content:"";position:absolute;left:0;top:.62em;width:.7rem;height:1px;background:var(--acc)}
.offers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.8rem,1.6vw,1.4rem)}
.offer{display:grid;gap:clamp(.8rem,1.4vw,1.1rem);align-content:start;justify-items:start;padding:clamp(1.3rem,2.6vw,2.4rem);border-radius:var(--ri);border:1px solid var(--glass-line)}
.offer--main{background:var(--paper);color:var(--ink);border-color:var(--paper);--muted:var(--graphite);--acc:var(--ink);--btn:var(--ink);--btn-on:var(--lin)}
.offer h3{font-family:var(--f-display);font-stretch:110%;font-weight:540;font-size:clamp(1.7rem,3vw,2.8rem);letter-spacing:-.034em;line-height:1}
.offer-say{color:var(--muted);font-size:1.02rem}
.offer .ticks{padding-block:clamp(.7rem,1.4vw,1.1rem);border-block:1px solid var(--glass-line);width:100%}
.offer--main .ticks{border-color:var(--line)}
.offer .btn{margin-top:.2rem}
.trust{list-style:none;padding:0;margin:0;border-top:1px solid var(--rule)}
.trust li{display:grid;grid-template-columns:3.4rem minmax(0,1fr);gap:.25rem .8rem;padding-block:1.15rem;border-bottom:1px solid var(--rule)}
.trust .step-n{grid-row:span 2}
.trust h3{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1.1rem,1.5vw,1.4rem);letter-spacing:-.02em;line-height:1.1}
.trust p{color:var(--muted);line-height:1.45;max-width:34em}
.xp-row{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(1.5rem,5vw,5rem);align-items:center;margin-top:clamp(3rem,7vw,6rem);padding-top:clamp(2rem,4vw,3.4rem);border-top:1px solid var(--rule)}
.xp-txt{display:grid;gap:clamp(1rem,2vw,1.5rem);justify-items:start}
.xp-txt .lede{color:var(--graphite)}
.xp{margin:0;display:grid;gap:.7rem}
.xp figcaption{color:var(--graphite);font-size:.62rem}
.xp-win{border-radius:var(--ri);background:var(--ink);color:var(--lin);padding:clamp(.9rem,1.8vw,1.5rem);display:grid;gap:clamp(.8rem,1.6vw,1.2rem);box-shadow:0 30px 60px -34px rgba(8,8,6,.55)}
.xp-bar{display:flex;justify-content:space-between;gap:1rem;font-size:.62rem;color:var(--lin-dim)}
.xp-bar .dot{background:var(--lin)}
.xp-proj{border-radius:calc(var(--ri) - 8px);background:rgba(236,229,213,.06);padding:clamp(.9rem,1.6vw,1.3rem);display:grid;gap:1rem}
.xp-name{display:flex;justify-content:space-between;align-items:baseline;gap:1rem;font-family:var(--f-display);font-stretch:108%;font-weight:540;font-size:clamp(1.1rem,1.6vw,1.45rem);letter-spacing:-.02em}
.xp-name span{font-size:.58rem;color:var(--lin-dim);border:1px solid var(--glass-line);border-radius:999px;padding:.35em .8em}
.xp-stages{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:.35rem}
.xp-stages li{display:grid;gap:.5rem;min-width:0}
.xp-stages i{height:4px;border-radius:2px;background:rgba(236,229,213,.16)}
.xp-stages span{font-size:.5rem;letter-spacing:.04em;color:var(--lin-dim);line-height:1.25;overflow-wrap:anywhere}
.xp-stages .is-done i{background:var(--lin)}
.xp-stages .is-now i{background:linear-gradient(90deg,var(--lin) 55%,rgba(236,229,213,.16) 55%)}
.xp-stages .is-now span,.xp-stages .is-done span{color:var(--lin)}
.xp-files{list-style:none;padding:0;margin:0}
.xp-files li{display:flex;justify-content:space-between;align-items:center;gap:1rem;padding:.7rem .2rem;border-top:1px solid var(--line-ink)}
.xp-files b{font-weight:500;font-size:.95rem}
.xp-files span{font-size:.58rem;color:var(--lin-dim)}
@media (max-width:860px){
  .offers,.xp-row{grid-template-columns:1fr}
  .xp-stages{grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem .35rem}
}

/* Rendus 3D qui arrivent les uns sur les autres */
.stack{background:var(--ink)}
.stack img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0;z-index:1}
.stack img.is-in{opacity:1}
.stack img.is-go{animation:stack-in 1.3s var(--ease-io) both}
@keyframes stack-in{from{clip-path:inset(100% 0 0 0);transform:scale(1.16)}to{clip-path:inset(0 0 0 0);transform:none}}
.stack .pro-anim-cap{z-index:5}
.stack-n{position:absolute;right:14px;bottom:12px;z-index:5;margin:0;padding:.45em .9em;border-radius:999px;background:rgba(15,16,13,.55);color:var(--lin);font-size:.62rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}

/* En-tête de la page Paysagistes : rendus 3D en fond, en mouvement lent */
.phead--media{position:relative;overflow:hidden;min-height:min(100svh,920px);display:grid;align-items:end}
.phead--media .wrap{position:relative;z-index:1;width:100%}
.phead--media .lede{color:var(--lin)}
.phead-bg{position:absolute;inset:0;z-index:0}
.phead-bg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:0}
.phead-bg img:first-child{opacity:1}
.js .phead-bg img{animation:bg-cycle 28s linear infinite;animation-delay:calc(var(--i) * 7s)}
@keyframes bg-cycle{0%{opacity:0;transform:scale(1)}5%{opacity:1}25%{opacity:1}31%{opacity:0;transform:scale(1.035)}100%{opacity:0;transform:scale(1.035)}}
.phead-bg::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(15,16,13,.8) 0%,rgba(15,16,13,.5) 40%,rgba(15,16,13,.06) 78%,rgba(15,16,13,0) 100%),linear-gradient(0deg,rgba(15,16,13,.5),rgba(15,16,13,0) 40%)}
.phead-credit{position:absolute;z-index:1;right:clamp(16px,3vw,44px);bottom:calc(var(--rp) + 1.1rem);font-size:.6rem;color:var(--lin);opacity:.75}
@media (max-width:860px){
  .phead--media{min-height:min(100svh,760px)}
  .phead-bg::after{background:linear-gradient(0deg,rgba(15,16,13,.88) 0%,rgba(15,16,13,.62) 48%,rgba(15,16,13,.22) 100%)}
  .phead-credit{display:none}
}

/* Bandeau des chiffres */
.vs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(.8rem,1.6vw,1.4rem)}
.vs-col{display:grid;gap:clamp(.9rem,1.6vw,1.3rem);align-content:start;padding:clamp(1.3rem,2.6vw,2.4rem);border-radius:var(--ri);border:1px solid var(--rule)}
.vs-col--main{background:var(--ink);color:var(--lin);border-color:var(--ink);--muted:var(--lin-dim);--acc:var(--lin);--rule:var(--line-ink)}
.vs-n{display:flex;align-items:baseline;flex-wrap:wrap;gap:.2em .5em;line-height:1}
.vs-n small:first-child{flex-basis:100%}
.vs-n b{font-family:var(--f-display);font-stretch:112%;font-weight:300;font-size:clamp(3rem,7.4vw,6.6rem);letter-spacing:-.05em;line-height:.9}
.vs-col--main .vs-n b{font-weight:520}
.vs-n small{font-family:var(--f-mono);font-size:.7rem;letter-spacing:.09em;text-transform:uppercase;color:var(--muted)}
.vs-col .ticks{padding-top:clamp(.9rem,1.6vw,1.3rem);border-top:1px solid var(--rule)}
.vs-col:not(.vs-col--main) .vs-n b{color:var(--graphite)}
.vs-note{justify-self:start;margin:0;padding:.6em 1em;border-radius:999px;background:var(--lin);color:var(--ink);font-size:.66rem}
.lp-ratio{margin-top:clamp(2rem,4.5vw,4rem)}
.lp-close{display:flex;justify-content:space-between;align-items:center;gap:1.2rem 2rem;flex-wrap:wrap;margin-top:clamp(1.6rem,3.4vw,3rem);padding-top:clamp(1.2rem,2.4vw,2rem);border-top:1px solid var(--ink)}
.lp-close p{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.25rem,2.2vw,2rem);letter-spacing:-.028em;line-height:1.12;max-width:26em;text-wrap:balance}
.offer-price{font-family:var(--f-mono);font-size:.72rem;letter-spacing:.09em;text-transform:uppercase;padding:.55em 1em;border-radius:999px;border:1px solid currentColor}
@media (max-width:860px){
  .vs{grid-template-columns:1fr}
  .lp-ratio .fact{grid-template-columns:6.4rem minmax(0,1fr);gap:.4rem .9rem}
  .stack-n{bottom:auto;top:12px}
}
.stack .pro-anim-cap{max-width:calc(100% - 28px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.lp-h span{display:block}
@media (prefers-reduced-motion:reduce){.phead-bg img{animation:none!important}.stack img.is-go{animation:none}}

/* Bandeau des chiffres, version simplifiée : deux nombres géants */
.wow{display:grid;gap:clamp(.6rem,1.2vw,1rem)}
.wow-row{display:grid;gap:clamp(.5rem,1vw,.9rem);padding:clamp(1.2rem,2.6vw,2.4rem);border-radius:var(--ri);border:1px solid var(--rule);color:var(--graphite)}
.wow-row--main{background:var(--ink);border-color:var(--ink);color:var(--lin)}
.wow-n{display:flex;align-items:baseline;flex-wrap:wrap;gap:.1em .6em;line-height:.9}
.wow-n b{font-family:var(--f-display);font-stretch:112%;font-weight:260;font-size:clamp(3.3rem,14.5vw,13rem);letter-spacing:-.055em;line-height:.86}
.wow-row--main .wow-n b{font-weight:560}
.wow-n small{font-family:var(--f-mono);font-size:clamp(.66rem,1vw,.86rem);letter-spacing:.09em;text-transform:uppercase}
.wow-list{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;padding:0;margin:clamp(.3rem,.8vw,.7rem) 0 0;font-size:.64rem}
.wow-list li{padding:.55em 1em;border-radius:999px;border:1px solid currentColor;opacity:.85}
.wow-note{margin-top:.9rem;color:var(--graphite);font-size:.6rem}
.lp-close{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center}
.lp-pct b{font-family:var(--f-display);font-stretch:112%;font-weight:560;font-size:clamp(2.8rem,6vw,5.4rem);letter-spacing:-.05em;line-height:1;white-space:nowrap}
@media (max-width:860px){.lp-close{grid-template-columns:1fr;justify-items:start}}
.phead--media h1,.phead--media .lede,.phead--media .mono{text-shadow:0 1px 18px rgba(15,16,13,.55)}
.phead--media .btn{text-shadow:none}

/* Bandeau : mots clés en vert clair, du plus clair au plus soutenu */
.reveal .g1{color:#e3f6d5}.reveal .g2{color:#cfefb9}.reveal .g3{color:#b9e69c}.reveal .g4{color:#a3dc80}.reveal .g5{color:#8dd066}.reveal .g6{color:#77c44f}
.js .reveal .w.g{color:var(--lin-off)}
.js .reveal .w.g1.is-lit{color:#e3f6d5}.js .reveal .w.g2.is-lit{color:#cfefb9}.js .reveal .w.g3.is-lit{color:#b9e69c}.js .reveal .w.g4.is-lit{color:#a3dc80}.js .reveal .w.g5.is-lit{color:#8dd066}.js .reveal .w.g6.is-lit{color:#77c44f}
@media (prefers-reduced-motion:reduce){.js .reveal .w.g1{color:#e3f6d5}.js .reveal .w.g2{color:#cfefb9}.js .reveal .w.g3{color:#b9e69c}.js .reveal .w.g4{color:#a3dc80}.js .reveal .w.g5{color:#8dd066}.js .reveal .w.g6{color:#77c44f}}

/* Étiquette au bas des images de réalisations */
.img-tag{position:absolute;left:10px;bottom:10px;z-index:2;max-width:calc(100% - 20px);padding:.5em .9em;border-radius:999px;background:rgba(15,16,13,.62);color:var(--lin);font-size:.58rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);pointer-events:none}
@media (max-width:560px){.img-tag{left:7px;bottom:7px;font-size:.52rem;padding:.45em .75em}}

/* Le bureau : portrait et parcours */
.who{display:grid;grid-template-columns:clamp(150px,16.5vw,235px) minmax(0,1fr);gap:clamp(1.6rem,5vw,5.5rem);align-items:start}
.who-fig{margin:0;border-radius:var(--ri);overflow:hidden;background:var(--lin);position:relative}
.who-fig img{display:block;width:100%;height:auto}
.who-fig figcaption{position:absolute;left:8px;bottom:8px;max-width:calc(100% - 16px);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:.45em .8em;border-radius:999px;background:rgba(15,16,13,.62);color:var(--lin);font-size:.52rem;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.who-txt{display:grid;gap:clamp(1rem,2vw,1.6rem);align-content:start}
.who-big{font-family:var(--f-display);font-stretch:108%;font-weight:500;font-size:clamp(1.2rem,1.75vw,1.65rem);letter-spacing:-.024em;line-height:1.2;max-width:34em}
.who-p{color:var(--graphite);font-size:clamp(1.02rem,1.25vw,1.18rem);line-height:1.55;max-width:38em}
.who-lbl{margin-top:clamp(.4rem,1.4vw,1.2rem)}
@media (max-width:860px){.who{grid-template-columns:1fr}.who-fig{max-width:200px}}

/* Le bureau : organigramme très simple (gérant, puis réseau de partenaires sur deux lignes) */
.org{--ln:rgba(15,16,13,.3);--gap:clamp(26px,3vw,44px);display:grid;justify-items:center;margin-top:clamp(2rem,4.5vw,4rem)}
.org-lede{margin-top:clamp(1rem,1.8vw,1.6rem);max-width:36em;color:var(--graphite);text-wrap:pretty}
.org-lvl{position:relative;padding-bottom:var(--gap)}
.org-lvl::after{content:"";position:absolute;left:50%;bottom:0;width:1px;height:var(--gap);background:var(--ln)}
.org-card{margin:0;display:grid;gap:.75rem;justify-items:center;text-align:center;width:clamp(128px,13vw,176px);padding:7px 7px 14px;border-radius:calc(var(--ri) * .85);background:var(--paper);border:1px solid rgba(15,16,13,.1);box-shadow:0 14px 30px -22px rgba(15,16,13,.5);transition:transform .5s var(--ease),box-shadow .5s var(--ease)}
.org-ph{display:block;width:100%;overflow:hidden;border-radius:calc(var(--ri) * .62);background:var(--lin)}
.org-ph img{display:block;width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;filter:grayscale(1);transition:transform 1.1s var(--ease)}
.org-card figcaption{display:grid;gap:.42rem;justify-items:center;padding-inline:.3rem}
.org-card b:empty{display:none}
.org-card b{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(.98rem,1.15vw,1.12rem);letter-spacing:-.02em;line-height:1.15}
.org-link{font-size:.76rem;line-height:1.3;color:var(--graphite);text-wrap:balance;max-width:11em}
.org-role{display:inline-block;max-width:100%;padding:.5em 1em;border-radius:1.5em;text-wrap:balance;border:1px solid rgba(15,16,13,.55);font-size:.54rem;line-height:1.2;color:var(--ink)}
.org-plus{flex:none;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;border:1px solid var(--ink);font-family:var(--f-display);font-weight:300;font-size:1.5rem;line-height:1;transition:background .4s var(--ease),color .4s var(--ease),transform .5s var(--ease)}
/* Invitation à rejoindre le réseau : une bande sous les portraits */
.org-join{display:inline-flex;align-items:center;gap:1rem 1.3rem;flex-wrap:wrap;justify-content:center;margin-top:clamp(1.4rem,2.6vw,2.2rem);padding:.7rem 1rem .7rem .8rem;border-radius:999px;border:1px dashed rgba(15,16,13,.45);text-decoration:none;color:var(--ink);transition:border-color .3s}
.org-join b{font-family:var(--f-display);font-stretch:108%;font-weight:560;font-size:clamp(1rem,1.3vw,1.2rem);letter-spacing:-.02em}
.org-join .org-role{background:var(--ink);color:var(--lin);border-color:var(--ink);white-space:nowrap;font-size:.58rem;padding:.75em 1.2em}
.org-join .org-role .arr{margin-left:.5em}
@media (hover:hover){.org-join:hover{border-style:solid;border-color:var(--ink)}.org-join:hover .org-plus{background:var(--ink);color:var(--lin);transform:rotate(90deg)}}
@media (max-width:560px){.org-join{border-radius:28px;padding:1rem 1.1rem}}
/* La promesse, sous l'organigramme */
.org-serment{margin:clamp(2.4rem,5vw,4.4rem) auto 0;max-width:25em;text-align:center;font-family:var(--f-display);font-stretch:110%;font-weight:620;font-size:clamp(1.5rem,3vw,2.7rem);letter-spacing:-.032em;line-height:1.06;text-wrap:balance}
.org-card--lead{width:clamp(150px,15.5vw,212px);background:var(--ink);border-color:var(--ink);color:var(--lin);box-shadow:0 22px 44px -24px rgba(15,16,13,.75)}
.org-card--lead b{font-size:clamp(1.05rem,1.35vw,1.3rem)}
.org-card--lead .org-role{border-color:rgba(236,229,213,.5);color:var(--lin)}
@media (hover:hover){.org-card:hover{transform:translateY(-4px);box-shadow:0 22px 38px -22px rgba(15,16,13,.6)}.org-card:hover .org-ph img{transform:scale(1.05)}}
.org-row{--og:clamp(12px,1.6vw,22px);--cw:clamp(132px,12.6vw,176px);position:relative;display:flex;flex-wrap:wrap;justify-content:center;gap:clamp(16px,2.2vw,28px) var(--og);width:100%;max-width:calc(var(--cw) * 6 + var(--og) * 5);list-style:none;margin:0;padding:var(--gap) 0 0}
.org-row::before{content:"";position:absolute;top:-3px;left:calc(var(--cw) / 2 - 3.5px);right:calc(var(--cw) / 2 - 3.5px);height:7px;
  background:radial-gradient(circle at 3.5px 50%,var(--ink) 3px,transparent 3.6px),radial-gradient(circle at calc(100% - 3.5px) 50%,var(--ink) 3px,transparent 3.6px),radial-gradient(circle at 50% 50%,var(--ink) 3px,transparent 3.6px),linear-gradient(var(--ln),var(--ln)) center/100% 1px no-repeat}
.org-row li{display:grid;width:var(--cw)}
.org-row .org-card{width:100%;height:100%;grid-template-rows:auto 1fr}
/* Intitulés sur une ou deux lignes : le texte reste en haut, la pastille en bas, les cartes d'une rangée restent alignées */
.org-row .org-card figcaption{align-content:space-between}
@media (min-width:561px) and (max-width:900px){.org-row{--cw:clamp(140px,19.5vw,168px);max-width:calc(var(--cw) * 4 + var(--og) * 3)}}
@media (max-width:560px){.org-row{--cw:clamp(124px,40vw,156px)}.org-row::before{left:22%;right:22%}}

/* Blocs masqués depuis l'administration */
[hidden]{display:none!important}
/* Mode édition : page immobile, tout est visible */
.edition .intro{display:none!important}
.steps-head{margin:clamp(2.5rem,5vw,4.5rem) 0 0;border-bottom:0}
.steps-head + .steps{margin-top:0}
/* Bandeau « Votre avis sur le nouveau site » (créé par site.js dès l'ouverture ; l'en-tête descend d'autant) */
.hd{transform:translateY(var(--avis-h,0px));transition:transform .5s var(--ease)}
.avis{position:fixed;z-index:60;top:0;left:0;right:0;display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:.35rem 1.1rem;padding:calc(env(safe-area-inset-top,0px) + 9px) 52px 9px var(--gx);background:var(--ink);color:var(--lin);border-bottom:1px solid var(--glass-line);font-size:.92rem;line-height:1.3;transform:translateY(-100%);transition:transform .5s var(--ease)}
.avis.is-on{transform:none}
.avis-txt{margin:0;text-align:center}
.avis-txt b{font-weight:600}
.avis-txt span{color:var(--lin-dim)}
.avis-stars{display:inline-flex;flex-direction:row-reverse}
.avis-stars button{font:inherit;font-size:1.35rem;line-height:1;padding:.15em .12em;border:0;background:none;color:#8a867c;cursor:pointer;transition:color .2s,transform .2s}
.avis-stars button:hover,.avis-stars button:hover~button,.avis-stars button:focus-visible,.avis-stars button:focus-visible~button{color:var(--star)}
.avis-stars button:hover{transform:scale(1.15)}
.avis-stars button:focus-visible{outline:2px solid var(--lin);outline-offset:2px;border-radius:4px}
.avis.is-sent .avis-stars{display:none}
.avis-x{position:absolute;right:calc(var(--gx) - 6px);top:50%;transform:translateY(-50%);width:36px;height:36px;border:0;border-radius:50%;background:none;color:var(--lin-dim);font-size:1.4rem;line-height:1;cursor:pointer}
.avis-x:hover{color:var(--lin);background:var(--glass)}
@media (max-width:560px){.avis{font-size:.82rem;padding-right:44px}.avis-txt span{display:block}}
@media (prefers-reduced-motion:reduce){.avis,.hd{transition:none}}
/* La feuille complète est là : les blocs situés sous le premier écran, laissés en attente par les styles placés dans la page, sont dessinés (voir critique.py) */
:root{--pre:visible}
