/* Maquette A « Le Rappel » : de la cime aux racines */
@font-face{font-family:"Bricolage";src:url(../fonts/bricolage.woff2) format("woff2");font-weight:200 800;font-stretch:75% 100%;font-display:swap}
@font-face{font-family:"Fraunces";src:url(../fonts/fraunces-italic.woff2) format("woff2");font-style:italic;font-weight:100 900;font-display:swap}
@font-face{font-family:"Mono";src:url(../fonts/jetbrains-mono.woff2) format("woff2");font-weight:100 800;font-display:swap}

:root{--gut:clamp(18px,4vw,64px);--rail:clamp(0px,6vw,92px);--sig:#ff5a14;--radius:16px;--font-ui:"Bricolage",system-ui,sans-serif;--ease:cubic-bezier(.2,.8,.2,1)}
body,html:not(.js) section[data-theme]{--c-bg:var(--bg);--c-fg:var(--fg);--c-mute:color-mix(in srgb,var(--fg) 66%,transparent);--c-line:color-mix(in srgb,var(--fg) 26%,transparent);--c-accent:var(--sig);--c-accent-fg:#180a02;--c-card:color-mix(in srgb,var(--fg) 7%,transparent)}
body[data-theme=sky],html:not(.js) section[data-theme=sky]{--bg:#2a6fce;--fg:#fff}
body[data-theme=paper],html:not(.js) section[data-theme=paper]{--bg:#f1ecdf;--fg:#10190f}
body[data-theme=forest],html:not(.js) section[data-theme=forest]{--bg:#10261a;--fg:#eef0dd}
body[data-theme=bark],html:not(.js) section[data-theme=bark]{--bg:#2a1610;--fg:#f4e6d3}
body[data-theme=signal],html:not(.js) section[data-theme=signal]{--bg:#ff5a14;--fg:#140802;--c-accent:#140802;--c-accent-fg:#ff8a4f}
body[data-theme=soil],html:not(.js) section[data-theme=soil]{--bg:#110a07;--fg:#efe3d2}
html:not(.js) section[data-theme]{background:var(--bg);color:var(--fg)}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-padding-top:90px}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
body{margin:0;background:var(--bg);color:var(--fg);font:400 clamp(1rem,.96rem + .2vw,1.14rem)/1.55 var(--font-ui);font-stretch:100%;transition:background-color .8s ease,color .8s ease;overflow-x:clip;-webkit-font-smoothing:antialiased}
img,video,canvas,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
h1,h2,h3{margin:0;font-weight:800;font-stretch:78%;line-height:.98;letter-spacing:-.015em;text-wrap:balance}
p{margin:0 0 1em}
ul,ol{margin:0;padding:0;list-style:none}
:focus-visible{outline:3px solid var(--sig);outline-offset:3px;border-radius:4px}
.skip{position:fixed;left:12px;top:-60px;z-index:200;padding:10px 16px;background:var(--sig);color:#180a02;border-radius:8px}
.skip:focus{top:12px}
.wrap{width:100%;padding-inline:var(--gut);padding-right:calc(var(--gut) + var(--rail))}
.kicker{font:500 .78rem/1.3 "Mono",monospace;letter-spacing:.06em;text-transform:uppercase;margin:0 0 1.1em;opacity:.78}
.w{display:inline-block;overflow:clip;vertical-align:top;padding-bottom:.08em;margin-bottom:-.08em}
.w>span{display:inline-block}
.btn{display:inline-flex;align-items:center;gap:.6em;min-height:52px;padding:0 24px;border-radius:99px;font:600 1rem/1 var(--font-ui);text-decoration:none;border:1.5px solid transparent;cursor:pointer;transition:transform .3s var(--ease),background .25s,color .25s,border-color .25s}
.btn:hover{transform:translateY(-2px)}
.btn .ar{transition:transform .3s var(--ease)}
.btn:hover .ar{transform:translateX(4px)}
.btn--solid{background:var(--sig);color:#180a02}
.btn--ghost{border-color:color-mix(in srgb,currentColor 40%,transparent);background:transparent;color:inherit}
.btn--dark{background:#140802;color:#ff9a63}
.link{display:inline-flex;align-items:center;gap:.5em;font-weight:600;text-decoration:underline;text-underline-offset:.28em;text-decoration-thickness:1.5px}
.link .ar{transition:transform .3s var(--ease)}
.link:hover .ar{transform:translateX(5px)}

/* En-tête */
.top{position:fixed;z-index:60;inset:0 0 auto 0;display:flex;align-items:center;justify-content:space-between;padding:14px var(--gut);color:#fff;mix-blend-mode:normal;transition:background .4s,color .4s,padding .4s}
.top.is-scrolled{background:color-mix(in srgb,var(--bg) 82%,transparent);color:var(--fg);backdrop-filter:blur(12px);padding-block:9px}
.menu-open .top{background:none;color:#f1ecdf;backdrop-filter:none}
.top__brand{display:inline-flex;align-items:center;min-height:44px;font-weight:800;font-stretch:75%;font-size:1.25rem;letter-spacing:.01em;text-decoration:none}
.top__r{display:flex;align-items:center;gap:clamp(8px,2vw,22px)}
.top__tel{text-decoration:none;font:500 .9rem/1 "Mono",monospace;white-space:nowrap}
.top__cta{display:inline-flex;align-items:center;min-height:40px;padding:0 16px;border-radius:99px;background:var(--sig);color:#180a02;font-weight:600;text-decoration:none}
body[data-theme=signal] .top__cta{background:#140802;color:#ff9a63}
.top__btn{display:inline-flex;align-items:center;gap:10px;min-height:44px;padding:0 4px;background:none;border:0;color:inherit;font:600 1rem/1 var(--font-ui);cursor:pointer}
.top__btn i{display:block;width:24px;height:9px;border-block:2px solid currentColor;transition:transform .4s var(--ease),height .4s var(--ease)}
.top__btn[aria-expanded=true] i{height:2px;border-bottom:0;transform:rotate(45deg)}

/* Menu plein écran */
.menu{position:fixed;inset:0;z-index:50;background:#10261a;color:#f1ecdf;overflow:auto;clip-path:inset(0 0 100% 0);transition:clip-path .6s cubic-bezier(.7,0,.2,1)}
.menu.is-on{clip-path:inset(0)}
.menu__in{min-height:100%;display:grid;grid-template-columns:1fr auto;gap:30px;padding:88px var(--gut) 30px;align-items:end}
.menu__in{position:relative;--mcol:clamp(76px,8.5vw,126px);--cord:7px}
.menu__hint{margin:0 0 .9em;font:500 .76rem/1.3 "Mono",monospace;letter-spacing:.06em;text-transform:uppercase;opacity:.65}
.menu__descent>.menu__hint{margin-left:calc(var(--mcol) + var(--cord) + clamp(14px,1.8vw,26px))}
.menu__ropew{position:relative}
/* La corde du menu, du haut en bas de l'écran : le motif vient de rope.js, avec un repli si le script manque */
.menu__in::before{content:"";position:absolute;top:0;bottom:0;left:calc(var(--gut) + var(--mcol));width:var(--cord);background:var(--rope-tile,repeating-linear-gradient(160deg,#f4ecd9 0 5px,#ff6a1f 5px 8px)) 0 0/var(--cord) calc(var(--cord)*1.65) repeat-y;filter:drop-shadow(2px 3px 2px rgba(0,0,0,.35))}
.menu__rope a{position:relative;display:flex;align-items:center;column-gap:.55em;min-height:44px;padding:.08em 0;font-weight:800;font-stretch:75%;font-size:clamp(1.65rem,min(5.6vh,7vw),4.1rem);line-height:1.02;white-space:nowrap;text-decoration:none;letter-spacing:-.015em;transition:color .25s}
.menu__rope a::before{content:"";position:absolute;left:calc(var(--mcol) - 2px);top:50%;width:calc(var(--cord) + 4px);height:9px;margin-top:-4.5px;border-radius:2px;background:linear-gradient(90deg,#8a2e05,#ff7a38 42%,#a33a08);box-shadow:0 1px 2px rgba(0,0,0,.4)}
.menu__rope b{flex:none;width:var(--mcol);padding-right:clamp(32px,3vw,40px);text-align:right;font:600 clamp(.82rem,1.4vw,1.15rem)/1 "Mono",monospace;letter-spacing:0}
.menu__rope b i{font-style:normal;font-weight:500;opacity:.7}
.menu__rope span{margin-left:calc(var(--cord) + clamp(14px,1.8vw,26px));transition:transform .4s var(--ease)}
.menu__rope a:hover,.menu__rope a:focus-visible,.menu__rope a.is-here{color:var(--sig)}
.menu__rope a:hover span{transform:translateX(8px)}
.menu__dev{position:absolute;left:calc(var(--mcol) + var(--cord)/2);top:0;width:0;height:0;pointer-events:none;transition:transform .5s var(--ease)}
.menu__dev{--dev-s:.7}
.menu__side{max-width:280px}
.menu__pages{margin-bottom:1.4em}
.menu__pages a{display:flex;align-items:center;min-height:32px;font-weight:600;text-decoration:none;transition:color .2s}
.menu__pages a:hover,.menu__pages a[aria-current]{color:var(--sig)}
.menu__tel{display:block;font-weight:800;font-stretch:75%;font-size:1.9rem;margin-bottom:.5em;text-decoration:none}

/* La corde : elle reste en place, le prusik la descend */
.hud{position:fixed;z-index:40;top:0;bottom:0;right:0;width:340px;display:none;pointer-events:none;overflow:clip;color:var(--fg);transition:color .8s;--dev-s:.6}
.js .hud{display:block}
.hud__rope{position:absolute;top:0;right:0;max-width:none}
.hud__nav{display:none}
.hud__dev{position:absolute;top:0;right:var(--rope-x,12px);width:0;height:0;will-change:transform}
/* Le prusik : trois couches à la même échelle, la corde passe entre le dos et l'avant */
.dev{position:absolute;left:-54px;top:-78px;width:84px;height:156px;transform:scale(var(--dev-s,1));transform-origin:54px 78px;filter:drop-shadow(1px 3px 3px rgba(0,0,0,.45))}
.dev__l{position:absolute;inset:0;width:100%;height:100%;max-width:none;overflow:visible}
/* On attrape le prusik pour monter ou descendre ; un clic sur la corde l'y envoie */
.hud__line{position:absolute;top:0;bottom:0;right:calc(var(--rope-x,12px) - 14px);width:28px;pointer-events:auto;cursor:pointer;touch-action:pan-y}
@media (hover:none){.hud__line{display:none}}
.hud__grip{position:absolute;left:calc(-36px*var(--dev-s,1));top:calc(-72px*var(--dev-s,1));width:calc(66px*var(--dev-s,1));min-width:44px;height:calc(144px*var(--dev-s,1));margin:0;padding:0;border:0;border-radius:14px;background:none;cursor:grab;pointer-events:auto;touch-action:none;-webkit-tap-highlight-color:transparent}
.hud__grip:focus-visible{outline:3px solid var(--sig);outline-offset:2px}
.is-rappel,.is-rappel *{cursor:grabbing!important;-webkit-user-select:none;user-select:none}
.hud__hint{position:absolute;right:calc(44px*var(--dev-s,1) + 10px);top:-16px;padding:7px 11px;border-radius:9px;background:#140802;color:#fff;font:600 .82rem/1 var(--font-ui);white-space:nowrap;opacity:0;transform:translateX(6px);transition:opacity .25s,transform .25s var(--ease);pointer-events:none}
.hud__grip:hover~.hud__hint,.hud__hint.is-on{opacity:1;transform:none}
.is-rappel .hud__hint{opacity:0}

/* L'altimètre, dans l'en-tête */
.top__alt{display:none;text-align:right;white-space:nowrap}
.js .top__alt{display:block}
.top__alt span{display:block;font:600 .92rem/1.1 "Mono",monospace}
.top__alt b{font-weight:700}.top__alt i{font-style:normal;font-weight:500}
.top__alt small{display:block;font:500 .66rem/1.2 "Mono",monospace;opacity:.8;margin-top:2px}
@media (max-width:760px){
  .top__alt small{display:none}
  .top__alt span{font-size:.8rem}
  .menu__dev{--dev-s:.6}
  .menu__in{--cord:6px}
  /* Les pages passent sous la liste : la corde s'arrête au dernier mètre */
  .menu__in::before{top:0;bottom:auto;height:var(--menu-rope,560px)}
}

/* Barre mobile */
.bar{display:none}
@media (max-width:760px){
  .top__tel{display:none}.top__cta{display:none}
  :root{--rail:14px}
  .bar{position:fixed;z-index:45;left:10px;right:10px;bottom:calc(10px + var(--bar-lift,0px) + env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 1fr 1fr;gap:4px;padding:4px;border-radius:14px;background:#10190f;box-shadow:0 10px 30px rgba(0,0,0,.35)}
  .bar a{display:flex;align-items:center;justify-content:center;min-height:46px;border-radius:10px;color:#f1ecdf;font-weight:600;text-decoration:none}
  .bar .bar__on{background:var(--sig);color:#180a02}
  .menu__in{grid-template-columns:1fr;padding-bottom:90px}
  .roots{padding-bottom:calc(88px + var(--bar-lift,0px))!important}
  .hero .hero__intro{padding-bottom:calc(84px + var(--bar-lift,0px))}
  .touch__txt{padding-bottom:calc(84px + var(--bar-lift,0px))!important}
  .hero .hero__cue{display:none}
}
/* Badge imposé par l'offre gratuite de Netlify : le menu passe au-dessus. Sans badge, rien ne change. */
body:has(>#nl-badge-frame,>#nl-hud-frame){--bar-lift:56px}

/* Curseur */
.cur{position:fixed;left:0;top:0;z-index:300;pointer-events:none;display:none}
.has-cur .cur{display:block;opacity:0;transition:opacity .3s}
.has-cur .cur.is-live{opacity:1}
.cur span{position:absolute;display:grid;place-items:center;left:-6px;top:-6px;width:12px;height:12px;border-radius:50%;background:var(--sig);color:#180a02;font:600 .78rem/1 var(--font-ui);overflow:hidden;white-space:nowrap;transition:width .3s var(--ease),height .3s var(--ease),left .3s var(--ease),top .3s var(--ease),opacity .3s}
.cur.is-link span{width:34px;height:34px;left:-17px;top:-17px;opacity:.45}
.cur.is-label span{width:74px;height:74px;left:-37px;top:-37px}

/* Préchargement */
.loader{position:fixed;inset:0;z-index:150;display:none;background:#130b07;transition:clip-path 1s cubic-bezier(.76,0,.2,1)}
.js .loader{display:block}
.seen .loader{display:none}
.loader canvas{position:absolute;inset:0;width:100%;height:100%}
.loader.is-out{clip-path:circle(0% at 50% 50%)}
.loader__txt{position:absolute;inset:auto var(--gut) 26px;display:flex;justify-content:space-between;align-items:baseline;color:#f4e6d3;font-weight:800;font-stretch:75%;font-size:clamp(1.3rem,3vw,2.2rem);mix-blend-mode:difference}
.loader__txt b{font:500 1rem "Mono",monospace}
.loader__txt b::after{content:" %"}

/* Héros */
.hero{--h:max(133.34vw,185svh);--w:calc(var(--h)*.75);position:relative;height:var(--h);overflow:clip;color:#fff}
.hero__stage{position:absolute;top:0;left:calc((100vw - var(--w))*.36);width:var(--w);height:var(--h);z-index:0}
.hero__stage img{width:100%;height:100%;object-fit:cover}
.hero__stage--front{z-index:2;pointer-events:none}
.hero__mast{position:sticky;top:0;height:100svh;z-index:1;display:flex;align-items:flex-start;justify-content:center;padding-top:clamp(84px,15vh,170px);overflow:clip}
.hero__mast span{display:block;font-weight:800;font-stretch:75%;font-size:17vw;line-height:.8;letter-spacing:-.02em;white-space:nowrap;color:#fff}
.hero__intro{position:absolute;z-index:3;top:0;left:0;right:0;height:100svh;display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:30px;pointer-events:none}
.hero__intro>*{pointer-events:auto;position:relative}
.hero__intro::before{content:"";position:absolute;inset:auto 0 0;height:62%;background:linear-gradient(to top,rgba(6,24,56,.72),rgba(6,24,56,0));pointer-events:none}
.hero__intro h1{font-size:clamp(1.65rem,3.4vw,3.2rem);line-height:1.04;margin-bottom:.4em}
.hero__intro p{max-width:38em;margin-bottom:1.1em}
.hero__cta{display:flex;flex-wrap:wrap;align-items:center;gap:22px}
.hero__cue{display:inline-flex;align-items:center;gap:12px;font:500 .84rem/1.2 "Mono",monospace;text-decoration:none}
.motion .hero__cue svg{animation:cue 2.2s ease-in-out infinite}
@keyframes cue{0%,100%{transform:translateY(-4px)}50%{transform:translateY(6px)}}

/* Toucher du bois */
.touch{position:relative;height:300svh}
.touch__pin{position:sticky;top:0;height:100svh;overflow:clip;background:#10261a}
.touch__img{position:absolute;inset:0;overflow:clip}
.touch__img img{width:100%;height:100%;object-fit:cover;object-position:50% 68%}
.touch__txt{position:absolute;inset:0;margin:0;padding-inline:var(--gut);padding-right:calc(var(--gut) + var(--rail));display:flex;flex-direction:column;justify-content:flex-end;padding-bottom:7vh;color:#fff;font:italic 300 clamp(3rem,10.4vw,11rem)/.94 "Fraunces",serif;letter-spacing:-.025em;text-shadow:0 2px 40px rgba(0,0,0,.4)}
.touch__txt span{display:block}

/* Le parti pris */
.read{padding-block:clamp(90px,16vh,200px)}
.read__big{font-weight:700;font-stretch:80%;font-size:clamp(2.2rem,6.2vw,6.4rem);line-height:1.02;letter-spacing:-.02em;margin:0 0 .9em;max-width:17em}
.triad{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(24px,4vw,64px);padding-top:clamp(24px,4vw,44px);border-top:1.5px solid var(--c-line)}
.triad__i span{font:500 .78rem "Mono",monospace;opacity:.6}
.triad__i h2,.triad__i h3{font-size:clamp(1.7rem,3vw,2.8rem);margin:.5em 0 .4em}
.read__out{margin-top:clamp(36px,6vw,70px);font-size:clamp(1.15rem,1.8vw,1.55rem);max-width:34em}
.read__out .link{display:flex;width:fit-content;margin-top:.8em;font-size:1rem}

/* La branche */
.limb{position:relative;overflow:clip}
.limb__pin{position:relative}
.limb__track{display:flex;flex-wrap:wrap;gap:clamp(22px,3vw,48px);padding:clamp(70px,10vh,110px) var(--gut) 70px}
.limb__head{flex:1 1 100%}
.limb__head h2{font-size:clamp(2.6rem,7vw,7rem);margin-bottom:.35em}
.limb__hint{display:none}
.limb__card{flex:1 1 280px;text-decoration:none;display:block}
.limb__img{overflow:hidden;border-radius:var(--radius);aspect-ratio:4/5;margin-bottom:14px;background:var(--c-card)}
.limb__img img{width:100%;height:100%;object-fit:cover}
.limb__n{font:500 .78rem "Mono",monospace;opacity:.7}
.limb__card h3{font-size:clamp(1.6rem,2.6vw,2.5rem);margin:.25em 0 .35em}
.limb__card p{margin:0;opacity:.84;max-width:30em}
.limb__art{display:none}
.js .limb__art{display:block;width:100%;height:130px;pointer-events:none}
.limb__card--end{display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:6px}
.limb__card--end .btn{margin-top:18px}
@media (min-width:1000px){
  html.motion .limb__pin{height:100svh;overflow:clip}
  html.motion .limb__track{flex-wrap:nowrap;height:100svh;width:max-content;align-items:center;padding:70px 9vw 150px var(--gut);gap:clamp(30px,4vw,70px)}
  html.motion .limb__head{flex:0 0 min(52vw,720px)}
  html.motion .limb__hint{display:inline-flex;align-items:center;gap:.5em;font:500 .84rem "Mono",monospace;margin-top:1em}
  html.motion .limb__card{flex:0 0 clamp(300px,27vw,430px);position:relative;z-index:1}
  html.motion .limb__card:nth-child(even){transform:translateY(-3.5vh)}
  html.motion .limb__img{aspect-ratio:auto;height:44svh}
  html.motion .limb__img img{transition:transform .8s var(--ease)}
  html.motion .limb__card--end{flex-basis:clamp(320px,28vw,440px)}
  html.motion .limb__art{position:absolute;left:0;right:0;bottom:0;height:176px}
  html:not(.motion) .limb__track{padding-right:calc(var(--gut) + var(--rail))}
  html:not(.motion) .limb__card{flex:1 1 30%}
}

/* Avant / après */
.after{padding-block:clamp(90px,14vh,180px)}
.after__g{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:clamp(30px,6vw,100px);align-items:center}
.after__txt h2{font-size:clamp(2.6rem,6.2vw,6.4rem);margin-bottom:.4em}
.quote{margin:2em 0;padding-left:18px;border-left:3px solid var(--sig)}
.quote p{font:italic 300 clamp(1.15rem,1.7vw,1.5rem)/1.3 "Fraunces",serif;margin-bottom:.5em}
.quote footer{font:500 .8rem "Mono",monospace;opacity:.75}
@media (max-width:860px){.after__g{grid-template-columns:1fr}}

/* Le matériel */
.tool{padding-block:clamp(90px,14vh,170px)}
.tool__h{font-size:clamp(2.6rem,7.4vw,7.6rem);margin-bottom:.55em}
.tool__g{display:grid;grid-template-columns:minmax(200px,3fr) minmax(0,9fr);gap:clamp(18px,3vw,44px);align-items:start}
.tool__v{margin:0;position:relative}
.tool__v video{width:100%;height:auto;border-radius:var(--radius);background:#000}
.tool__v figcaption{margin-top:8px;font:500 .76rem/1.3 "Mono",monospace;opacity:.75}
.fleet__map{position:relative;border-radius:var(--radius);overflow:hidden}
.fleet__map img{width:100%}
.fleet__dot{position:absolute;width:38px;height:38px;margin:-19px 0 0 -19px;border:2px solid #fff;border-radius:50%;background:rgba(16,25,15,.72);color:#fff;font:600 .85rem/1 "Mono",monospace;cursor:pointer;backdrop-filter:blur(4px);transition:transform .3s var(--ease),background .25s,color .25s,border-color .25s}
.fleet__dot:hover,.fleet__dot.is-on{background:var(--sig);border-color:var(--sig);color:#180a02;transform:scale(1.18)}
.fleet__list{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:4px 26px;margin-top:18px}
.fleet__list li{padding:10px 0 12px;border-top:1.5px solid var(--c-line);opacity:.62;transition:opacity .25s,border-color .25s}
.fleet__list li.is-on{opacity:1;border-color:var(--sig)}
.fleet__list b{display:block;font-weight:700}
.fleet__list span{font-size:.94rem}
.tool__more{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(16px,2vw,28px);margin-top:clamp(30px,5vw,60px)}
.tool__c{text-decoration:none;display:block}
.tool__c img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);margin-bottom:10px;transition:transform .7s var(--ease)}
.tool__c:hover img{transform:scale(1.025)}
.tool__c b{display:block;font-size:1.25rem;font-stretch:80%}
.tool__c span{font-size:.94rem;opacity:.8}
@media (max-width:760px){.tool__g{grid-template-columns:1fr}.tool__v{max-width:280px}.fleet__dot{width:36px;height:36px;margin:-18px 0 0 -18px;font-size:.76rem}}

/* L'ascension */
.ascent{position:relative;height:400svh;color:#140802}
.ascent__pin{position:sticky;top:0;height:100svh;overflow:clip;background:var(--sig);isolation:isolate}
.ascent__bg{position:absolute;inset:0 0 0 auto;width:min(62vw,1000px);display:flex;justify-content:flex-end;mix-blend-mode:multiply;-webkit-mask-image:linear-gradient(to right,transparent,#000 42%);mask-image:linear-gradient(to right,transparent,#000 42%)}
.ascent__bg img{height:165svh;width:auto;max-width:none;filter:grayscale(1) contrast(1.5) brightness(1.3)}
@media (max-width:760px){.ascent__bg{width:100%;opacity:.55;-webkit-mask-image:none;mask-image:none;justify-content:center}}
.ascent__steps{position:absolute;inset:0;display:grid;align-items:center}
.ascent__s{grid-area:1/1;margin:0;font-weight:800;font-stretch:75%;font-size:clamp(3.6rem,15vw,16rem);line-height:.86;letter-spacing:-.025em}
.ascent__s span{display:block}
.ascent__final{font-size:1rem;font-weight:400;font-stretch:100%;line-height:1.5;letter-spacing:0;max-width:640px}
.ascent__final h2{font-size:clamp(3rem,8.4vw,8.6rem);line-height:.9;margin-bottom:.35em;letter-spacing:-.02em}
.ascent__final p{font-size:clamp(1.02rem,1.5vw,1.25rem)}
html:not(.motion) .ascent:not(.ascent--page){height:auto}
html:not(.motion) .ascent__pin{position:relative;height:auto}
html:not(.motion) .ascent__steps{position:relative;padding-block:100px;gap:30px}
html:not(.motion) .ascent__s{grid-area:auto}
html:not(.motion) .ascent__bg{display:none}
html:not(.motion) .touch{height:auto}
html:not(.motion) .touch__pin{position:relative}

/* La souche */
.stump{position:relative;padding-block:clamp(100px,18vh,220px);overflow:clip;color:#fff}
.stump__c{position:absolute;inset:0;width:100%;height:100%;background:radial-gradient(circle,#b98551,#2a1610 72%)}
.stump::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(19,11,7,.55),rgba(19,11,7,.28) 30%,rgba(19,11,7,.72));pointer-events:none}
.stump__in{position:relative;z-index:1}
.stump__h{font-size:clamp(3.8rem,13.5vw,14.5rem);line-height:.86;margin-bottom:.2em;letter-spacing:-.025em;text-shadow:0 4px 50px rgba(19,11,7,.55)}
.stump__lead{font-size:clamp(1.15rem,2vw,1.6rem);max-width:30em;text-shadow:0 1px 18px rgba(19,11,7,.8)}
.stump__g{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(14px,2vw,26px);margin-top:clamp(40px,7vw,90px)}
.stump__c1{display:block;padding:10px 10px 18px;border-radius:calc(var(--radius) + 4px);background:rgba(19,11,7,.72);backdrop-filter:blur(10px);text-decoration:none;transition:transform .5s var(--ease)}
.stump__c1:hover{transform:translateY(-6px)}
.stump__c1 img{width:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--radius);margin-bottom:12px}
.stump__c1 b{display:block;font-size:1.5rem;font-stretch:80%;padding-inline:6px}
.stump__c1 span{display:block;padding:4px 6px 0;font-size:.95rem;opacity:.86}
.stump--page{min-height:88svh;display:flex;align-items:flex-end}

/* L'équipe */
.crew{padding-bottom:clamp(80px,12vh,150px)}
.crew__img{overflow:hidden;margin-bottom:clamp(30px,5vw,60px)}
.crew__img img{width:100%;max-height:92svh;object-fit:cover;object-position:50% 40%}
.crew__g{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(20px,5vw,80px)}
.crew__g .kicker{grid-column:1/-1;margin:0}
.crew__g h2{font-size:clamp(2.4rem,5.4vw,5.6rem)}
@media (max-width:760px){.crew__g{grid-template-columns:1fr}}

/* Racines */
.roots{position:relative;padding-bottom:30px;overflow:clip}
.roots__art{width:100%;height:clamp(170px,22vw,320px);margin-bottom:-20px}
.roots__soil{position:absolute;inset:48px 0 0;background-size:1024px 1024px;opacity:0;transition:opacity .8s;pointer-events:none}
body[data-theme=soil] .roots__soil{opacity:1}
.roots__c{position:absolute;left:0;top:0;width:100%;height:clamp(420px,60vw,860px);max-width:none;pointer-events:none;-webkit-mask-image:linear-gradient(#000 42%,rgba(0,0,0,.5) 66%,transparent);mask-image:linear-gradient(#000 42%,rgba(0,0,0,.5) 66%,transparent)}
.roots__top,.roots__grid,.roots__end{position:relative;z-index:1}
.roots__top{text-shadow:0 1px 14px rgba(17,10,7,.85)}
.roots__top{position:relative;padding-top:10px}
.roots__title{font-size:clamp(2.6rem,7vw,7rem);margin-bottom:.1em}
.roots__tel{display:block;width:fit-content;font-weight:800;font-stretch:75%;font-size:clamp(3rem,13.4vw,14rem);line-height:1;letter-spacing:-.025em;text-decoration:none;color:var(--sig);white-space:nowrap}
.roots__cta{display:flex;flex-wrap:wrap;gap:10px;margin:22px 0}
.roots__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:26px;margin-top:clamp(40px,7vw,80px);padding-top:26px;border-top:1px solid var(--c-line)}
.roots__grid h3{font-size:1.05rem;font-stretch:90%;font-weight:700;letter-spacing:0;margin-bottom:.5em}
.roots__grid a{text-underline-offset:.2em}
.roots__grid li{margin-bottom:.2em}
.roots__s{font-size:.9rem;opacity:.75}
.roots__end{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;margin:40px 0 0;font:500 .74rem "Mono",monospace;opacity:.6}

/* Pages intérieures */
.ph{position:relative;height:clamp(520px,92svh,1000px);overflow:clip;color:#fff}
.ph__img{position:absolute;inset:0}
.ph__img img{width:100%;height:100%;object-fit:cover;object-position:var(--pos,50% 50%)}
.ph::after{content:"";position:absolute;inset:0;background:linear-gradient(rgba(8,16,10,.42),rgba(8,16,10,.05) 30%,rgba(8,16,10,.72))}
.ph__txt{position:absolute;z-index:1;left:0;right:0;bottom:clamp(26px,6vh,70px)}
.ph h1{font-size:clamp(2.9rem,9.4vw,10rem);line-height:.9;letter-spacing:-.025em;max-width:13em}
.ph__lead{margin:.8em 0 0;font-size:clamp(1.1rem,1.9vw,1.55rem);max-width:30em}
.chips{display:flex;flex-wrap:wrap;gap:8px;padding-block:26px 0}
.chips a{display:inline-flex;align-items:center;min-height:40px;padding:0 14px;border-radius:99px;border:1.5px solid var(--c-line);text-decoration:none;font-weight:600;font-size:.92rem;transition:background .2s,color .2s}
.chips a:hover{background:var(--fg);color:var(--bg)}
.svc{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(24px,5vw,80px);align-items:center;padding:clamp(50px,9vw,130px) var(--gut);padding-right:calc(var(--gut) + var(--rail));scroll-margin-top:60px}
.svc--r .svc__m{order:2}
.svc__m{overflow:hidden;border-radius:var(--radius)}
.svc__m img{width:100%;aspect-ratio:1/1;object-fit:cover}
.svc__n{font:500 .8rem "Mono",monospace;opacity:.65}
.svc h2{font-size:clamp(2.4rem,5.2vw,5.4rem);margin:.2em 0 .4em}
.svc__l{font-size:clamp(1.05rem,1.4vw,1.24rem)}
.svc__note{font-size:.95rem;opacity:.75}
.svc .link{margin-right:18px;margin-top:6px}
.ticks{display:grid;gap:6px;margin:1.1em 0 1.3em}
.ticks li{position:relative;padding-left:22px}
.ticks li::before{content:"";position:absolute;left:0;top:.62em;width:10px;height:2px;background:var(--sig)}
@media (max-width:820px){.svc{grid-template-columns:1fr}.svc--r .svc__m{order:0}}
.prose-g{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(24px,5vw,90px);padding-block:clamp(70px,11vw,160px) clamp(30px,5vw,70px)}
.prose-g h2{font-size:clamp(2.4rem,5.4vw,5.6rem)}
.prose{font-size:clamp(1.05rem,1.5vw,1.28rem)}
@media (max-width:820px){.prose-g{grid-template-columns:1fr}}
.band{padding-block:clamp(70px,11vw,160px);margin-top:clamp(50px,8vw,100px)}
.band h2{font-size:clamp(2.4rem,5.6vw,5.8rem);margin-bottom:.6em}
.cols4{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:clamp(18px,3vw,44px)}
.cols4 h3{font-size:1.5rem;margin-bottom:.4em}
.band__ba{max-width:760px;margin-top:clamp(36px,6vw,70px)}
.twocol{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(26px,5vw,80px);align-items:center;padding-block:clamp(60px,9vw,130px)}
.band .twocol{padding-block:0;padding-inline:0}
.band>.wrap.twocol{padding-inline:var(--gut);padding-right:calc(var(--gut) + var(--rail))}
.twocol__t h2{font-size:clamp(2.2rem,4.6vw,4.8rem);margin-bottom:.45em}
.twocol__m{overflow:hidden;border-radius:var(--radius)}
.twocol__m img{width:100%;aspect-ratio:4/3;object-fit:cover}
@media (max-width:860px){.twocol{grid-template-columns:1fr}}
.tool-page .tool__v{max-width:360px;justify-self:center}
.faq{padding-block:clamp(50px,8vw,110px)}
.faq h2{font-size:clamp(2rem,4vw,3.6rem);margin-bottom:.5em}
.faq details{border-top:1.5px solid var(--c-line);padding:16px 0}
.faq summary{cursor:pointer;font-weight:700;font-size:clamp(1.1rem,1.6vw,1.4rem);min-height:32px}
.faq details p{margin:.7em 0 0;max-width:46em}
.gear{display:grid;grid-template-columns:repeat(auto-fit,minmax(270px,1fr));gap:clamp(26px,3vw,46px)}
.gear__c{scroll-margin-top:90px}
.gear__i{overflow:hidden;border-radius:var(--radius);margin-bottom:14px}
.gear__i img{width:100%;aspect-ratio:4/3;object-fit:cover}
.gear__tag{font:500 .74rem "Mono",monospace;margin:0 0 .4em;opacity:.7;text-transform:uppercase;letter-spacing:.05em}
.gear__c h3{font-size:1.8rem;margin-bottom:.25em}
.gear__spec{margin:0 0 .6em}
.gear__spec b{font-weight:800;font-stretch:78%;font-size:1.5rem;color:var(--sig)}
.wide figure{margin:clamp(50px,8vw,100px) 0 0;overflow:hidden}
.wide img{width:100%;max-height:90svh;object-fit:cover}
.wide figcaption{padding-block:14px;font-size:.95rem;opacity:.8}
.trio{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:clamp(12px,2vw,24px)}
.trio>div{overflow:hidden;border-radius:var(--radius)}
.trio img{width:100%;aspect-ratio:3/4;object-fit:cover}
.case{padding-block:clamp(60px,9vw,130px);scroll-margin-top:50px}
.case__g{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:clamp(26px,5vw,80px);align-items:start}
.case--r .case__t{order:2}
.case__t{position:sticky;top:90px}
.case__t h2{font-size:clamp(2.2rem,4.6vw,4.8rem);margin-bottom:.35em}
.case__l{font:italic 300 clamp(1.25rem,2vw,1.8rem)/1.2 "Fraunces",serif}
.case__m{display:grid;gap:clamp(10px,1.4vw,18px)}
.case__m--2,.case__m--3{grid-template-columns:1fr 1fr}
.case__m--3>:first-child{grid-column:1/-1}
.case__m>div{overflow:hidden;border-radius:var(--radius)}
.case__m>div img{width:100%;height:100%;object-fit:cover;aspect-ratio:4/5}
.case__m--3>:first-child img{aspect-ratio:4/3}
@media (max-width:860px){.case__g{grid-template-columns:1fr}.case__t{position:static}.case--r .case__t{order:0}}
.after-more{padding-block:clamp(70px,10vw,130px)}
.after-more h2{font-size:clamp(3rem,10vw,10rem);margin-bottom:.3em}
.ascent--page{height:auto;padding-block:clamp(70px,11vw,160px);margin-block:0}
.tcb{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);gap:clamp(26px,5vw,80px);align-items:center}
.tcb__h{font-size:clamp(3rem,8vw,8rem);line-height:.9;margin-bottom:.4em}
.tcb p{font-size:clamp(1.02rem,1.4vw,1.2rem);max-width:36em}
@media (max-width:860px){.tcb{grid-template-columns:1fr}}
.tl{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:clamp(20px,3vw,40px)}
.tl li{position:relative;padding-top:18px;border-top:1.5px solid var(--c-line)}
.tl li::before{content:"";position:absolute;top:-6px;left:0;width:11px;height:11px;border-radius:50%;background:var(--sig)}
.tl time{font:500 .78rem "Mono",monospace;opacity:.75}
.tl h3{font-size:1.55rem;margin:.35em 0 .3em}
.tl p{margin:0;font-size:.97rem}
.job{padding-block:clamp(70px,10vw,140px)}
.job__g{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(26px,5vw,80px)}
.job h2{font-size:clamp(2.6rem,6vw,6rem);margin-bottom:.4em}
.job__l h3{font-size:1.2rem;font-stretch:90%;margin-bottom:.3em}
@media (max-width:760px){.job__g{grid-template-columns:1fr}}
.contact{padding-block:clamp(110px,16vh,180px) clamp(60px,8vw,110px)}
.contact__g{display:grid;grid-template-columns:minmax(0,6fr) minmax(0,5fr);gap:clamp(30px,6vw,100px)}
.contact h1{font-size:clamp(2.8rem,7vw,7.2rem);line-height:.92;margin-bottom:.35em}
.contact__tel{display:block;width:fit-content;font-weight:800;font-stretch:75%;font-size:clamp(2.6rem,7vw,6.6rem);line-height:1;color:var(--sig);text-decoration:none;margin-bottom:.35em}
.contact__f{padding:clamp(20px,3vw,36px);border-radius:var(--radius);background:var(--c-card)}
.contact__f h2{font-size:clamp(1.7rem,2.8vw,2.6rem);margin-bottom:.7em}
.dl{display:grid;gap:12px;margin:26px 0 0}
.dl div{display:grid;grid-template-columns:90px 1fr;gap:10px;padding-top:12px;border-top:1px solid var(--c-line)}
.dl dt{font:500 .78rem/1.8 "Mono",monospace;opacity:.7}
.dl dd{margin:0}
@media (max-width:860px){.contact__g{grid-template-columns:1fr}}
.legal{padding-block:clamp(110px,16vh,170px) 70px;max-width:60em}
.legal h1{font-size:clamp(2.6rem,6vw,5.6rem);margin-bottom:.6em}
.legal h2{font-size:1.5rem;margin:1.5em 0 .4em}

/* Grand écran : le menu reste visible, le long de la corde, à la place du bouton en haut */
@media (min-width:900px){
  :root{--rail:calc(240px - var(--gut))}
  .top__btn{display:none}
  .hud{--dev-s:.8}
  .hud__nav{display:block}
  .hud__tag{position:absolute;top:0;right:calc(var(--rope-x,32px) + 2px);display:flex;align-items:center;min-height:32px;transform:translateY(-50%);color:var(--fg);text-decoration:none;white-space:nowrap;pointer-events:auto}
  .hud__tag::after{content:"";width:46px;height:1.5px;background:currentColor;opacity:.5}
  .hud__tag em{display:inline-flex;align-items:baseline;gap:.5em;padding:6px 9px;border-radius:8px;background:color-mix(in srgb,var(--bg) 92%,transparent);backdrop-filter:blur(6px);font:600 .86rem/1 var(--font-ui);transition:background .2s,color .2s}
  .hud__tag b{font:500 .7rem/1 "Mono",monospace;opacity:.75}
  .hud__tag:hover em,.hud__tag:focus-visible em,.hud__tag.is-here em{background:var(--sig);color:#180a02}
  .hud__tag.is-here::after{background:var(--sig);opacity:1}
  body[data-theme=signal] .hud__tag:hover em,body[data-theme=signal] .hud__tag:focus-visible em,body[data-theme=signal] .hud__tag.is-here em{background:#140802;color:#ff9a63}
  body[data-theme=signal] .hud__tag.is-here::after{background:#140802}
  .hero__mast{padding-inline:var(--gut) 240px}
  .roots__tel{font-size:clamp(3rem,calc((100vw - var(--gut) - 240px)/6.4),14rem)}
  .ascent__s:not(.ascent__final){font-size:clamp(3.6rem,calc((100vw - var(--gut) - 240px)/6.6),16rem)}
  .ascent__final{max-width:min(640px,46vw)}
  html.motion .limb__track{padding-right:calc(var(--gut) + var(--rail))}
}

/* Transitions de page natives */
@view-transition{navigation:auto}
::view-transition-old(root){animation:.35s ease both vt-out}
::view-transition-new(root){animation:.5s ease both vt-in}
@keyframes vt-out{to{opacity:0;transform:translateY(-3vh)}}
@keyframes vt-in{from{opacity:0;transform:translateY(4vh)}}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}
  @view-transition{navigation:none}
}
