/* =========================================================
   LES JARDINS MÉHAUX — styles
   ========================================================= */
@font-face{font-family:"Shoulders";src:url(fonts/bigshoulders.woff2) format("woff2");font-weight:100 900;font-display:swap}
@font-face{font-family:"Bodoni";src:url(fonts/bodoni-italic.woff2) format("woff2");font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:"Familjen";src:url(fonts/familjen.woff2) format("woff2");font-weight:400 700;font-display:swap}
@font-face{font-family:"FMono";src:url(fonts/fragmentmono.woff2) format("woff2");font-weight:400;font-display:swap}

:root{
  --ink:#0f1510;
  --ink-2:#172018;
  --ink-3:#223024;
  --bone:#efe8dc;
  --bone-2:#e3dacb;
  --grass:#4f8f2a;
  --grass-2:#6fae3a;
  --sun:#f4a06a;
  --ember:#ec7652;
  --clay:#a57c55;
  --stone:#8d8b82;
  --line:rgba(239,232,220,.16);
  --line-ink:rgba(15,21,16,.16);

  --f-display:"Shoulders","Arial Narrow",Impact,sans-serif;
  --f-serif:"Bodoni",Didot,"Times New Roman",serif;
  --f-body:"Familjen",system-ui,sans-serif;
  --f-mono:"FMono",ui-monospace,Menlo,monospace;

  --gut:clamp(16px,3.2vw,48px);
  --ease:cubic-bezier(.7,0,.2,1);
  --ease-out:cubic-bezier(.16,1,.3,1);
  --r:clamp(14px,1.6vw,26px);
  color-scheme:dark;
}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
html.lenis,html.lenis body{height:auto}
.lenis.lenis-smooth{scroll-behavior:auto!important}
.lenis.lenis-stopped{overflow:hidden}
body{margin:0;background:var(--ink);color:var(--bone);font-family:var(--f-body);font-size:16px;line-height:1.45;-webkit-font-smoothing:antialiased;overflow-x:clip}
body.is-loading{overflow:hidden}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
em{font-style:normal}
p{margin:0}
h1,h2,h3{margin:0;font-weight:400}
::selection{background:var(--sun);color:var(--ink)}
:focus-visible{outline:2px solid var(--sun);outline-offset:3px;border-radius:4px}

.mono{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;line-height:1.5}
.serif{font-family:var(--f-serif);font-style:italic;font-weight:400;text-transform:none;letter-spacing:-.01em}
.huge{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(64px,13vw,230px);line-height:.82;letter-spacing:-.005em}
.huge .serif{font-size:.86em;letter-spacing:-.03em;line-height:.8}
.only-coarse{display:none}
@media (pointer:coarse){.only-fine{display:none}.only-coarse{display:inline}}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;height:46px;padding:0 22px;border-radius:999px;font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;transition:transform .5s var(--ease-out),background .3s,color .3s;white-space:nowrap;position:relative;overflow:hidden;isolation:isolate}
.btn::before{content:"";position:absolute;inset:0;border-radius:inherit;background:var(--bone);transform:translateY(101%);transition:transform .5s var(--ease-out);z-index:-1}
.btn:hover::before{transform:none}
.btn:active{transform:scale(.97)}
.btn--sun{background:var(--sun);color:var(--ink)}
.btn--ink{background:var(--ink);color:var(--bone)}
.btn--ink:hover{color:var(--ink)}
.btn--ghost{border:1px solid currentColor}
.btn--ghost:hover{color:var(--ink)}
.btn--xl{height:64px;padding:0 32px;font-size:13px}
.btn--block{width:100%;height:58px;font-size:13px}
.btn[disabled]{opacity:.35;pointer-events:none}
.btn__arrow{display:inline-block;transition:transform .4s var(--ease-out)}
.btn:hover .btn__arrow{transform:translateX(4px)}

/* ---------- grain ---------- */
.grain{position:fixed;inset:-50%;z-index:90;pointer-events:none;opacity:.07;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 0 0 0 1.4 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:grain 1s steps(4) infinite}
@keyframes grain{0%{transform:translate(0,0)}25%{transform:translate(-3%,2%)}50%{transform:translate(2%,-3%)}75%{transform:translate(-2%,-1%)}100%{transform:translate(0,0)}}

/* ---------- cursor ---------- */
.cursor{position:fixed;left:0;top:0;z-index:200;pointer-events:none;display:none}
@media (pointer:fine){.cursor{display:block}}
.cursor__dot{position:absolute;width:12px;height:12px;margin:-6px 0 0 -6px;border-radius:50%;background:var(--sun);transition:width .35s var(--ease-out),height .35s var(--ease-out),margin .35s var(--ease-out),background .3s}
.cursor__label{position:absolute;transform:translate(-50%,-50%) scale(.4);opacity:0;font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--ink);white-space:nowrap;transition:opacity .25s,transform .35s var(--ease-out)}
.cursor.has-label .cursor__dot{width:78px;height:78px;margin:-39px 0 0 -39px}
.cursor.has-label .cursor__label{opacity:1;transform:translate(-50%,-50%) scale(1)}
.cursor.is-down .cursor__dot{transform:scale(.8)}
.cursor.is-hidden{opacity:0}
.cursor.is-brush .cursor__dot{width:var(--bs,80px);height:var(--bs,80px);margin:calc(var(--bs,80px) / -2) 0 0 calc(var(--bs,80px) / -2);background:transparent;border:2px solid var(--bone);box-shadow:0 0 0 1px rgba(0,0,0,.25)}

/* ---------- loader ---------- */
.loader{position:fixed;inset:0;z-index:300;background:var(--ink);display:grid;place-items:center;overflow:hidden}
.loader__sun{position:absolute;width:62vmin;height:62vmin;border-radius:50%;background:radial-gradient(circle at 50% 35%,var(--sun),var(--ember) 70%);transform:translateY(60vh) scale(.6);filter:blur(0)}
.loader__emblem{position:relative;width:clamp(110px,18vmin,170px);height:auto;opacity:0;transform:scale(.8) rotate(-30deg)}
.loader__count{position:absolute;left:var(--gut);bottom:calc(var(--gut) - .12em);font-family:var(--f-display);font-weight:900;font-size:clamp(110px,26vw,380px);line-height:.8;color:var(--bone);letter-spacing:-.02em}
.loader__meta{position:absolute;top:var(--gut);left:var(--gut);color:var(--stone)}
.loader__panels{position:absolute;inset:0;display:grid;grid-template-columns:repeat(3,1fr);pointer-events:none}
.loader__panels i{background:var(--grass);transform:translateY(101%)}
.loader__panels i:nth-child(2){background:var(--sun)}
.loader__panels i:nth-child(3){background:var(--ink-3)}
body.is-quick .loader{display:none}

/* ---------- nav ---------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px var(--gut);transition:transform .6s var(--ease-out)}
.nav.is-hidden{transform:translateY(-110%)}
.nav__brand{display:flex;align-items:center;gap:10px}
.nav__brand img{width:44px;height:44px;transition:transform .8s var(--ease-out)}
.nav__brand:hover img{transform:rotate(-25deg)}
.nav__name{font-family:var(--f-display);font-weight:800;text-transform:uppercase;font-size:20px;line-height:.9;letter-spacing:.02em;display:flex;flex-direction:column}
.nav__name b{font-weight:800;font-size:12px;letter-spacing:.14em;color:var(--sun)}
.nav__links{display:flex;gap:4px;padding:5px;border-radius:999px;background:rgba(15,21,16,.55);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line)}
.nav__links a{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;padding:9px 14px;border-radius:999px;transition:background .3s,color .3s}
.nav__links a:hover{background:var(--bone);color:var(--ink)}
.nav__actions{display:flex;align-items:center;gap:14px}
.nav__tel{padding:8px 0;border-bottom:1px solid var(--line)}
@media (max-width:980px){.nav__links{display:none}}
@media (max-width:640px){.nav__tel,.nav__actions .btn{display:none}.nav__brand img{width:40px;height:40px}}

/* ---------- mobile dock ---------- */
.dock{position:fixed;left:12px;right:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:85;display:none;gap:8px;transform:translateY(160%);transition:transform .7s var(--ease-out)}
.dock.is-on{transform:none}
.dock a,.dock button{height:56px;border-radius:999px;display:flex;align-items:center;justify-content:center;gap:8px;font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase}
.dock__call{flex:0 0 auto;padding:0 20px;background:rgba(15,21,16,.82);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid var(--line)}
.dock__devis{flex:1;background:var(--sun);color:var(--ink);font-weight:500}
@media (max-width:640px){.dock{display:flex}}

/* =========================================================
   HERO
   ========================================================= */
.hero{position:relative;height:190svh}
.hero__stage{position:sticky;top:0;height:100svh;min-height:560px;overflow:hidden}
.hero__media{position:absolute;inset:0;clip-path:inset(17% 31% 15% 31% round 50vw 50vw 0 0);will-change:clip-path}
.hero__media img{width:100%;height:100%;object-fit:cover;transform:scale(1.25);will-change:transform}
.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(15,21,16,.35),rgba(15,21,16,0) 30%,rgba(15,21,16,0) 55%,rgba(15,21,16,.65))}
.hero__title{position:absolute;inset:auto 0 0 0;padding:0 var(--gut);font-family:var(--f-display);font-weight:900;text-transform:uppercase;line-height:.78;color:var(--bone);pointer-events:none;z-index:2}
.hero__l1{display:block;font-size:clamp(44px,9vw,170px);letter-spacing:.01em;margin-bottom:.06em;color:var(--sun)}
.hero__l2{display:block;white-space:nowrap;font-size:30vw;letter-spacing:-.02em;margin-bottom:-.075em;margin-left:-.02em}
.hero__meta{position:absolute;inset:0;padding:calc(var(--gut) + 64px) var(--gut) var(--gut);pointer-events:none;z-index:2}
.hero__meta>span{position:absolute}
.hero__tl{left:var(--gut);top:calc(var(--gut) + 70px)}
.hero__tr{right:var(--gut);top:calc(var(--gut) + 70px);text-align:right}
.hero__bl{left:50%;top:calc(var(--gut) + 70px);transform:translateX(-50%);white-space:nowrap}
.hero__bl i{color:var(--sun);font-style:normal;font-size:7px;vertical-align:2px;margin:0 .5em}
.hero__scroll{position:absolute;right:var(--gut);bottom:calc(30vw + 16px);display:flex;align-items:center;gap:10px;z-index:2}
.hero__scroll i{width:44px;height:1px;background:var(--bone);transform-origin:left;animation:scrollLine 2.2s var(--ease) infinite}
@keyframes scrollLine{0%{transform:scaleX(0)}50%{transform:scaleX(1);transform-origin:left}50.1%{transform-origin:right}100%{transform:scaleX(0);transform-origin:right}}

.badge{position:absolute;z-index:3;right:calc(var(--gut) + 2vw);top:30%;width:clamp(110px,11vw,170px);aspect-ratio:1;display:grid;place-items:center}
.badge__ring{position:absolute;inset:0;width:100%;height:100%;animation:spin 16s linear infinite;fill:var(--bone);font-family:var(--f-mono);font-size:13.4px;letter-spacing:.12em}
.badge__sun{width:46%;aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 30%,var(--sun),var(--ember));transition:transform .6s var(--ease-out)}
.badge__arrow{position:absolute;font-size:22px;color:var(--ink);transition:transform .6s var(--ease-out)}
.badge:hover .badge__sun{transform:scale(1.25)}
.badge:hover .badge__arrow{transform:rotate(45deg)}
@keyframes spin{to{transform:rotate(360deg)}}

@media (max-width:820px){
  .hero__media{clip-path:inset(20% 10% 26% 10% round 50vw 50vw 0 0)}
  .hero__bl{display:none}
  .badge{top:auto;bottom:calc(30vw + 70px);right:var(--gut);width:104px}
  .hero__scroll{display:none}
}

/* split chars */
.js-split .w{display:inline-block;overflow:hidden;vertical-align:top;padding-top:.3em;margin-top:-.3em}
.js-split .c{display:inline-block;will-change:transform}

/* =========================================================
   TICKER (single calm band)
   ========================================================= */
.band__track{display:inline-flex;align-items:center;will-change:transform}
.ticker{border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(14px,1.6vw,22px) 0;overflow:hidden;white-space:nowrap;margin-top:clamp(30px,5vw,80px)}
.ticker .band__track{gap:clamp(22px,2.8vw,44px)}
.ticker span{font-family:var(--f-serif);font-style:italic;font-weight:400;font-size:clamp(26px,3vw,48px);line-height:1.1;color:var(--bone);letter-spacing:-.01em}
.ticker__sun{flex:0 0 auto;width:clamp(10px,.9vw,14px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 30%,var(--sun),var(--ember))}

/* =========================================================
   LE CORDEAU
   ========================================================= */
.cord{padding:clamp(90px,12vw,180px) 0 clamp(60px,8vw,120px);position:relative}
.cord__head{padding:0 var(--gut);display:grid;grid-template-columns:minmax(120px,1fr) 3fr;gap:24px;align-items:start;max-width:1700px;margin:0 auto}
.cord__label{color:var(--stone);padding-top:.7em}
.cord__title{font-family:var(--f-body);font-weight:500;font-size:clamp(28px,3.5vw,58px);line-height:1.08;letter-spacing:-.02em;max-width:24ch;color:var(--bone)}
.cord__title em{font-family:var(--f-serif);font-style:italic;font-weight:400;color:var(--sun);letter-spacing:-.01em}
.cord__stage{position:relative;height:clamp(420px,62vh,640px);margin-top:clamp(40px,6vw,90px);touch-action:pan-y;user-select:none;-webkit-user-select:none;cursor:grab}
.cord__stage.is-grab{cursor:grabbing}
.cord__canvas{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.cord__photo{position:absolute;left:0;top:0;margin:0;width:clamp(130px,14vw,230px);transform-origin:50% 0;will-change:transform;pointer-events:none}
.cord__print{background:var(--bone);padding:8px 8px 0;box-shadow:0 18px 40px rgba(0,0,0,.45),0 2px 6px rgba(0,0,0,.3);position:relative}
.cord__print img{width:100%;aspect-ratio:4/5;object-fit:cover;display:block;filter:saturate(.92)}
.cord__print figcaption{color:var(--ink);padding:8px 2px 9px;font-size:10px}
.cord__peg{position:absolute;left:50%;top:-14px;width:12px;height:30px;margin-left:-6px;border-radius:3px;background:linear-gradient(90deg,#b98b5f,#a57c55 50%,#8a6544);box-shadow:0 2px 4px rgba(0,0,0,.35);z-index:2}
.cord__peg::after{content:"";position:absolute;left:50%;top:9px;width:6px;height:6px;margin-left:-3px;border-radius:50%;background:#6f6d66}
.cord__hint{text-align:center;color:var(--stone);margin-top:10px}
@media (max-width:820px){
  .cord__head{grid-template-columns:1fr;gap:14px}
  .cord__label{padding-top:0}
  .cord__photo--wide{display:none}
  .cord__photo{width:27vw}
  .cord__print{padding:5px 5px 0}
  .cord__print figcaption{font-size:9px;padding:6px 1px 7px}
  .cord__stage{height:min(62vh,460px)}
}

/* =========================================================
   TRIM (scratch)
   ========================================================= */
.trim{padding:clamp(40px,6vw,100px) var(--gut) clamp(90px,12vw,180px);background:var(--bone);color:var(--ink);border-radius:var(--r) var(--r) 0 0;position:relative;z-index:1}
.trim__head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;margin-bottom:clamp(24px,3vw,48px)}
.trim__head>.mono:first-child{grid-column:1/-1;color:var(--clay)}
.trim__head .serif{color:var(--grass)}
.trim__hint{max-width:20ch;text-align:right;padding-bottom:.6em}
.trim__frame{position:relative;aspect-ratio:16/10;border-radius:var(--r);overflow:hidden;background:var(--ink);touch-action:none;user-select:none;-webkit-user-select:none}
.trim__after,.trim__canvas,.trim__fx{position:absolute;inset:0;width:100%;height:100%}
.trim__after{object-fit:cover}
.trim__canvas{transition:opacity 1s var(--ease)}
.trim__fx{pointer-events:none}
.corner{position:absolute;width:22px;height:22px;border:2px solid var(--bone);z-index:2;pointer-events:none;mix-blend-mode:difference}
.corner--tl{top:14px;left:14px;border-right:0;border-bottom:0}
.corner--tr{top:14px;right:14px;border-left:0;border-bottom:0}
.corner--bl{bottom:14px;left:14px;border-right:0;border-top:0}
.corner--br{bottom:14px;right:14px;border-left:0;border-top:0}
.trim__gauge{position:absolute;top:18px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:rgba(15,21,16,.72);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);color:var(--bone);z-index:3;pointer-events:none}
.trim__gauge b{font-family:var(--f-display);font-size:22px;font-weight:900;min-width:2.1ch;text-align:right;line-height:1}
.trim__gauge i{width:70px;height:4px;border-radius:4px;background:rgba(239,232,220,.2);overflow:hidden}
.trim__gauge u{display:block;height:100%;width:100%;background:var(--sun);transform-origin:left;transform:scaleX(0)}
.trim__fig{position:absolute;left:44px;bottom:16px;color:var(--bone);mix-blend-mode:difference;z-index:2;pointer-events:none}
.trim__done{position:absolute;inset:0;z-index:4;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;text-align:center;color:var(--bone);background:radial-gradient(ellipse at center,rgba(15,21,16,.55),rgba(15,21,16,.1) 70%);opacity:0;visibility:hidden;transition:opacity .6s,visibility .6s}
.trim__done .huge{font-size:clamp(90px,16vw,260px)}
.trim.is-done .trim__done{opacity:1;visibility:visible}
.trim.is-done .trim__canvas{opacity:0}
.trim__done-actions{display:flex;gap:10px;flex-wrap:wrap;justify-content:center}
.trim__all{display:block;margin:18px auto 0;padding:10px 16px;border-bottom:1px solid var(--line-ink);color:var(--ink)}
@media (max-width:820px){
  .trim__head{grid-template-columns:1fr}
  .trim__hint{text-align:left}
  .trim__frame{aspect-ratio:4/5}
  .trim__fig{left:16px;bottom:16px;right:16px}
  .corner{display:none}
}

/* =========================================================
   FIELD (horizontal)
   ========================================================= */
.field{background:var(--bone);color:var(--ink);position:relative}
.field__pin{height:100svh;overflow:hidden;position:relative;display:flex;align-items:center}
.field__ghost{position:absolute;left:0;bottom:-.1em;white-space:nowrap;font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:38vh;line-height:.8;color:transparent;-webkit-text-stroke:1.5px rgba(15,21,16,.12);pointer-events:none;will-change:transform}
.field__track{display:flex;align-items:center;gap:clamp(24px,4vw,70px);padding:0 var(--gut);height:100%;will-change:transform}
.field__intro{flex:0 0 auto;width:clamp(260px,32vw,520px);align-self:center}
.field__intro .serif{color:var(--grass)}
.field__intro>.mono:first-child{color:var(--clay);margin-bottom:16px}
.field__count{margin-top:24px}
.card{flex:0 0 auto;margin:0;position:relative}
.card__img{overflow:hidden;border-radius:calc(var(--r) * .7);background:var(--bone-2)}
.card__img img{width:100%;height:100%;object-fit:cover;transform:scale(1.15);will-change:transform}
.card figcaption{margin-top:12px;display:flex;gap:10px}
.card figcaption b{font-weight:400;color:var(--clay)}
.card--a .card__img{width:clamp(280px,44vw,760px);height:min(58vh,520px)}
.card--b{align-self:flex-start;margin-top:12vh}
.card--b .card__img{width:clamp(200px,22vw,360px);height:min(46vh,480px)}
.card--c{align-self:flex-end;margin-bottom:12vh}
.card--c .card__img{width:clamp(240px,32vw,540px);height:min(44vh,420px)}
.field__end{flex:0 0 auto;width:clamp(280px,36vw,600px);padding-right:var(--gut);display:flex;flex-direction:column;gap:28px;align-items:flex-start}
.field__end .serif{color:var(--grass)}
@media (max-width:820px){
  .card--a .card__img{width:78vw;height:52vh}
  .card--b .card__img{width:58vw;height:40vh}
  .card--c .card__img{width:68vw;height:38vh}
  .card--b{margin-top:14vh}.card--c{margin-bottom:14vh}
  .field__intro{width:76vw}
  .field__end{width:84vw}
}
.field.is-native .field__pin{height:auto;padding:80px 0;overflow-x:auto;scroll-snap-type:x mandatory}
.field.is-native .card,.field.is-native .field__intro{scroll-snap-align:start}

/* =========================================================
   SERVICES
   ========================================================= */
.services{padding:clamp(90px,12vw,180px) var(--gut);position:relative;background:var(--ink)}
.services__head{display:flex;justify-content:space-between;align-items:flex-end;margin-bottom:clamp(24px,3vw,40px);color:var(--stone)}
.services__note{text-align:right}
.svc{list-style:none;margin:0;padding:0;border-top:1px solid var(--line)}
.svc__row{border-bottom:1px solid var(--line)}
.svc__btn{width:100%;display:grid;grid-template-columns:clamp(40px,6vw,100px) 1fr auto;align-items:center;text-align:left;padding:clamp(6px,1vw,14px) 0;position:relative}
.svc__n{color:var(--sun)}
.svc__t{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(58px,11.5vw,210px);line-height:.86;transition:transform .7s var(--ease-out),color .3s,opacity .4s;display:block}
.svc__plus{width:clamp(28px,3vw,48px);aspect-ratio:1;position:relative;transition:transform .6s var(--ease-out)}
.svc__plus::before,.svc__plus::after{content:"";position:absolute;left:0;right:0;top:50%;height:2px;background:currentColor;margin-top:-1px}
.svc__plus::after{transform:rotate(90deg);transition:transform .6s var(--ease-out)}
.svc__row.is-open .svc__plus::after{transform:rotate(0)}
.svc__row.is-open .svc__plus{transform:rotate(180deg)}
@media (hover:hover){
  .svc__btn:hover .svc__t{transform:translateX(clamp(10px,2vw,40px));color:transparent;-webkit-text-stroke:1.5px var(--bone)}
  .svc:hover .svc__row:not(:hover) .svc__t{opacity:.35}
}
.svc__body{display:grid;grid-template-rows:0fr;transition:grid-template-rows .7s var(--ease-out)}
.svc__inner{min-height:0;overflow:hidden}
.svc__row.is-open .svc__body{grid-template-rows:1fr}
.svc__body p{font-family:var(--f-body);font-size:clamp(20px,2vw,30px);padding:0 0 18px clamp(40px,6vw,100px);line-height:1.15}
.svc__body p .serif{color:var(--sun)}
.svc__strip{display:flex;gap:10px;padding:0 0 26px clamp(40px,6vw,100px)}
.svc__strip img{width:clamp(120px,22vw,320px);aspect-ratio:4/3;object-fit:cover;border-radius:12px;flex:0 0 auto}
.svc__float{position:fixed;left:0;top:0;width:clamp(240px,22vw,380px);aspect-ratio:3/4;border-radius:16px;overflow:hidden;pointer-events:none;z-index:60;opacity:0;transform:translate(-50%,-50%) scale(.6);display:none}
.svc__float img{width:100%;height:100%;object-fit:cover}
@media (hover:hover) and (pointer:fine){.svc__float{display:block}}
@media (max-width:640px){.svc__strip{overflow-x:auto;scroll-snap-type:x mandatory;margin-right:calc(var(--gut) * -1);padding-right:var(--gut)}.svc__strip img{width:64vw;scroll-snap-align:start;flex:0 0 auto}.svc__body p,.svc__strip{padding-left:0}}

/* =========================================================
   REEL (image marquee)
   ========================================================= */
.reel{overflow:hidden;padding:0 0 clamp(80px,10vw,160px);background:var(--ink)}
.reel__row{white-space:nowrap}
.reel .band__track{gap:12px}
.reel img{height:clamp(160px,22vw,340px);width:auto;aspect-ratio:4/3;object-fit:cover;border-radius:14px;flex:0 0 auto}
.reel img:nth-child(odd){aspect-ratio:3/4}

/* =========================================================
   BEFORE / AFTER
   ========================================================= */
.ba{background:var(--grass);color:var(--ink);padding:clamp(80px,10vw,160px) var(--gut);border-radius:var(--r) var(--r) 0 0}
.ba__head{display:grid;grid-template-columns:1fr auto;align-items:end;gap:20px;margin-bottom:clamp(30px,4vw,60px)}
.ba__head>.mono:first-child{grid-column:1/-1}
.ba__head .serif{color:var(--bone)}
.ba__hint{text-align:right;max-width:24ch;padding-bottom:.6em}
.ba__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(10px,1.4vw,22px)}
.ba__card{position:relative;aspect-ratio:3/4;border-radius:calc(var(--r) * .8);overflow:hidden;background:var(--ink);touch-action:manipulation;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;transition:transform .6s var(--ease-out)}
.ba__card:nth-child(even){transform:translateY(clamp(20px,4vw,70px))}
.ba__card img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;-webkit-user-drag:none}
.ba__before{clip-path:circle(0% at var(--x,50%) var(--y,50%));will-change:clip-path}
.ba__tag{position:absolute;top:12px;left:12px;height:28px;padding:0 12px;border-radius:999px;background:var(--bone);color:var(--ink);overflow:hidden;display:block}
.ba__tag b{display:block;font-weight:400;line-height:28px;transition:transform .5s var(--ease-out)}
.ba__card.is-before .ba__tag b{transform:translateY(-100%)}
.ba__card.is-before .ba__tag{background:var(--ember)}
.ba__cap{position:absolute;left:12px;bottom:12px;color:var(--bone);text-shadow:0 1px 10px rgba(0,0,0,.4)}
.ba__card::after{content:"";position:absolute;width:56px;height:56px;left:50%;top:50%;margin:-28px;border-radius:50%;border:1.5px solid var(--bone);animation:pulse 2.4s var(--ease-out) infinite;pointer-events:none;opacity:.8}
.ba__card.is-before::after,.ba.is-touched .ba__card::after{display:none}
@keyframes pulse{0%{transform:scale(.6);opacity:.9}100%{transform:scale(1.6);opacity:0}}
@media (max-width:980px){.ba__grid{grid-template-columns:repeat(2,1fr)}.ba__head{grid-template-columns:1fr}.ba__hint{text-align:left}}

/* =========================================================
   METHOD (stack)
   ========================================================= */
.method{background:var(--grass);padding:0 var(--gut) clamp(80px,10vw,160px);color:var(--ink)}
.method__label{padding-top:clamp(40px,6vw,80px);margin-bottom:24px}
.stack{display:grid;gap:clamp(16px,2vw,24px)}
.stack__card{position:sticky;top:calc(80px + var(--i) * 26px);display:grid;grid-template-columns:1.2fr 1fr;min-height:min(78vh,720px);border-radius:var(--r);overflow:hidden;background:var(--ink);color:var(--bone);transform-origin:top center;will-change:transform}
.stack__card:nth-child(2){background:var(--bone);color:var(--ink)}
.stack__card:nth-child(3){background:var(--sun);color:var(--ink)}
.stack__img{overflow:hidden}
.stack__img img{width:100%;height:100%;object-fit:cover}
.stack__txt{padding:clamp(24px,4vw,64px);display:flex;flex-direction:column;justify-content:space-between;gap:24px}
.stack__n{font-family:var(--f-display);font-weight:900;font-size:clamp(70px,10vw,170px);line-height:.8;color:transparent;-webkit-text-stroke:1.5px currentColor}
.stack__card:nth-child(1) .stack__n{-webkit-text-stroke-color:var(--sun)}
.stack__txt h3{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(64px,9vw,170px);line-height:.82}
.stack__txt h3 .serif{font-size:.9em;color:var(--sun)}
.stack__card:nth-child(2) h3 .serif{color:var(--grass)}
.stack__card:nth-child(3) h3 .serif{color:var(--bone)}
@media (max-width:820px){.stack__card{grid-template-columns:1fr;grid-template-rows:42vh auto;min-height:0;top:calc(70px + var(--i) * 18px)}}

/* =========================================================
   SUNRISE CTA
   ========================================================= */
.sunrise{position:relative;min-height:115svh;background:linear-gradient(180deg,var(--ink) 0%,#1d2a1c 55%,#3a3a22 100%);overflow:hidden;display:flex;align-items:flex-end}
.sunrise__sky{position:absolute;inset:0}
.sunrise__sun{position:absolute;left:50%;translate:-50% 0;bottom:0;width:min(86vw,900px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 50% 30%,#ffc48f,var(--sun) 40%,var(--ember) 80%);box-shadow:0 0 200px 40px rgba(244,160,106,.25);will-change:transform}
.sunrise__hills{position:absolute;inset:auto 0 0 0;height:46%}
.sunrise__hills i{position:absolute;left:-20%;right:-20%;border-radius:50% 50% 0 0;will-change:transform}
.sunrise__hills i:nth-child(1){bottom:0;height:120%;background:var(--grass);border-radius:60% 40% 0 0/100% 100% 0 0;left:-40%;right:30%}
.sunrise__hills i:nth-child(2){bottom:0;height:90%;background:#3f7522;border-radius:40% 60% 0 0/100% 100% 0 0;left:10%;right:-50%}
.sunrise__hills i:nth-child(3){bottom:0;height:52%;background:repeating-linear-gradient(100deg,#6b6b66 0 34px,#85847d 34px 70px,#555651 70px 96px);left:-10%;right:-10%;border-radius:80% 80% 0 0/100% 100% 0 0;opacity:.95}
.sunrise__content{position:relative;z-index:2;width:100%;padding:0 var(--gut) clamp(40px,7vw,100px);display:flex;flex-direction:column;gap:clamp(18px,3vw,40px)}
.sunrise__content>.mono{color:var(--bone)}
.sunrise__title{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(96px,22vw,400px);line-height:.78;color:var(--bone);display:flex;flex-direction:column}
.sunrise__title span:last-child{align-self:flex-end;color:var(--ink)}
.sunrise__actions{display:flex;flex-wrap:wrap;align-items:center;gap:18px 30px}
.sunrise__tel{font-family:var(--f-display);font-weight:800;font-size:clamp(34px,4vw,64px);color:var(--ink);line-height:1;border-bottom:3px solid var(--ink)}

/* =========================================================
   FOOTER
   ========================================================= */
.foot{background:var(--ink);padding:clamp(60px,8vw,120px) var(--gut) calc(var(--gut) + env(safe-area-inset-bottom));overflow:hidden}
.foot__grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;padding-bottom:clamp(40px,6vw,90px);border-bottom:1px solid var(--line)}
.foot__k{color:var(--stone);margin-bottom:8px}
.foot__v{font-size:clamp(17px,1.4vw,22px);word-break:break-word}
a.foot__v{background:linear-gradient(var(--sun),var(--sun)) 0 100%/0 1px no-repeat;transition:background-size .5s var(--ease-out)}
a.foot__v:hover{background-size:100% 1px}
.foot__word{font-family:var(--f-display);font-weight:900;text-transform:uppercase;line-height:.76;color:var(--sun);white-space:nowrap;margin:clamp(30px,4vw,60px) 0 clamp(16px,2vw,30px);letter-spacing:-.02em}
.foot__word span{display:inline-block;font-size:30vw}
.foot__bottom{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;color:var(--stone)}
@media (max-width:820px){.foot__grid{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.foot{padding-bottom:calc(92px + env(safe-area-inset-bottom))}.foot__bottom{flex-direction:column}}

/* =========================================================
   FUNNEL
   ========================================================= */
.funnel{position:fixed;inset:0;z-index:150;display:flex;justify-content:flex-end}
.funnel[hidden]{display:none}
.funnel__bg{position:absolute;inset:0;background:rgba(10,14,10,.6);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);opacity:0}
.funnel__panel{position:relative;width:min(640px,100%);height:100%;background:var(--bone);color:var(--ink);display:flex;flex-direction:column;overflow:hidden}
.funnel__top{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:16px 20px 18px;position:relative;flex:0 0 auto}
.funnel__back{justify-self:start;padding:10px 0;opacity:0;pointer-events:none;transition:opacity .3s}
.funnel.has-back .funnel__back{opacity:1;pointer-events:auto}
.funnel__step{color:var(--clay)}
.funnel__close{justify-self:end;width:44px;height:44px;border-radius:50%;border:1px solid var(--line-ink);font-size:16px;transition:background .3s,color .3s,transform .5s var(--ease-out)}
.funnel__close:hover{background:var(--ink);color:var(--bone);transform:rotate(90deg)}
.funnel__progress{position:absolute;left:0;right:0;bottom:0;height:3px;background:var(--line-ink)}
.funnel__progress i{display:block;height:100%;background:var(--grass);transform-origin:left;transform:scaleX(.16);transition:transform .6s var(--ease-out)}
.funnel__form{position:relative;flex:1;min-height:0}
.fstep{position:absolute;inset:0;border:0;margin:0;padding:clamp(18px,3vw,36px) 20px calc(20px + env(safe-area-inset-bottom));display:flex;flex-direction:column;overflow-y:auto;overscroll-behavior:contain;visibility:hidden;opacity:0}
.fstep.is-active{visibility:visible;opacity:1}
.fstep__q{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(52px,9vw,92px);line-height:.84;padding:0;margin-bottom:10px;float:none;width:100%}
.fstep__q .serif{color:var(--grass);font-size:.9em}
.fstep__sub{color:var(--stone);margin-bottom:18px}
.fstep__foot{margin-top:auto;padding-top:18px;position:sticky;bottom:0}
.fstep__foot--2{display:flex;gap:10px}
.fstep__foot--2 .btn{flex:1;height:58px}

.tiles{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.tile{position:relative;aspect-ratio:1;border-radius:14px;overflow:hidden;cursor:pointer;background:var(--ink);isolation:isolate}
.tile input{position:absolute;opacity:0;pointer-events:none}
.tile img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.72;transition:transform .6s var(--ease-out),opacity .3s}
.tile span{position:absolute;left:10px;bottom:8px;right:10px;font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(20px,3.4vw,30px);line-height:.9;color:var(--bone)}
.tile::after{content:"";position:absolute;inset:0;border:3px solid var(--sun);border-radius:inherit;opacity:0;transition:opacity .25s}
.tile__check{position:absolute;top:8px;right:8px;width:26px;height:26px;border-radius:50%;border:1.5px solid var(--bone);display:grid;place-items:center;transition:background .25s,border-color .25s,transform .4s var(--ease-out)}
.tile__check::after{content:"";width:10px;height:6px;border-left:2px solid var(--ink);border-bottom:2px solid var(--ink);transform:rotate(-45deg) translate(1px,-1px) scale(0);transition:transform .3s var(--ease-out)}
.tile:hover img{transform:scale(1.06)}
.tile:has(input:checked) img{opacity:1}
.tile:has(input:checked)::after{opacity:1}
.tile:has(input:checked) .tile__check{background:var(--sun);border-color:var(--sun);transform:scale(1.1)}
.tile:has(input:checked) .tile__check::after{transform:rotate(-45deg) translate(1px,-1px) scale(1)}
.tile:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:2px}
@media (max-width:420px){.tiles{grid-template-columns:repeat(2,1fr)}.tile{aspect-ratio:4/3}}

.area{display:flex;flex-direction:column;align-items:center;text-align:center;gap:6px;padding-top:6px}
.area__viz{width:100%;height:clamp(150px,26vh,240px);display:grid;place-items:center;background:repeating-linear-gradient(0deg,transparent 0 23px,var(--line-ink) 23px 24px),repeating-linear-gradient(90deg,transparent 0 23px,var(--line-ink) 23px 24px);border-radius:14px}
.area__plot{position:relative;width:var(--s,40%);aspect-ratio:1;max-width:100%;max-height:100%;background:var(--grass);border-radius:6px;transition:width .25s var(--ease-out);display:grid;place-items:center}
.area__house{width:22px;height:22px;background:var(--ink);clip-path:polygon(50% 0,100% 45%,100% 100%,0 100%,0 45%)}
.area__val{font-family:var(--f-display);font-weight:900;line-height:.85;display:flex;align-items:baseline;gap:6px;margin-top:10px}
.area__val b{font-size:clamp(80px,14vw,120px);font-weight:900}
.area__val span{font-size:30px}
.area__cmp{color:var(--clay);min-height:1.5em}
.area__range{-webkit-appearance:none;appearance:none;width:100%;height:44px;background:transparent;margin-top:8px;cursor:grab}
.area__range::-webkit-slider-runnable-track{height:6px;border-radius:6px;background:linear-gradient(90deg,var(--grass) var(--p,50%),var(--line-ink) var(--p,50%))}
.area__range::-moz-range-track{height:6px;border-radius:6px;background:var(--line-ink)}
.area__range::-moz-range-progress{height:6px;border-radius:6px;background:var(--grass)}
.area__range::-webkit-slider-thumb{-webkit-appearance:none;width:34px;height:34px;margin-top:-14px;border-radius:50%;background:var(--sun);border:4px solid var(--ink)}
.area__range::-moz-range-thumb{width:28px;height:28px;border-radius:50%;background:var(--sun);border:4px solid var(--ink)}
.area__scale{display:flex;justify-content:space-between;width:100%;color:var(--stone)}

.opts{display:grid;gap:8px}
.opt{position:relative;display:flex;flex-direction:column;gap:4px;padding:18px 20px;border-radius:14px;border:1px solid var(--line-ink);cursor:pointer;transition:background .25s,color .25s,transform .4s var(--ease-out)}
.opt input{position:absolute;opacity:0;pointer-events:none}
.opt__t{font-family:var(--f-display);font-weight:900;text-transform:uppercase;font-size:clamp(34px,6vw,48px);line-height:.9}
.opt__s{color:var(--stone)}
.opt:hover{background:var(--bone-2)}
.opt:has(input:checked){background:var(--ink);color:var(--bone);transform:scale(.985)}
.opt:has(input:focus-visible){outline:2px solid var(--ink);outline-offset:2px}

.field-in{display:flex;flex-direction:column;gap:8px}
.input{width:100%;height:62px;border:0;border-bottom:2px solid var(--ink);background:transparent;font-family:var(--f-display);font-weight:800;font-size:30px;text-transform:uppercase;color:var(--ink);padding:0 2px;border-radius:0;outline:none;transition:border-color .3s}
.input::placeholder{color:rgba(15,21,16,.28)}
.input:focus{border-color:var(--grass)}
.lbl{color:var(--clay);margin-top:12px}
.lbl span{color:var(--stone)}
.chips{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px}
.chip{height:40px;padding:0 16px;border-radius:999px;border:1px solid var(--line-ink);font-family:var(--f-mono);font-size:12px;text-transform:uppercase;letter-spacing:.05em;transition:background .25s,color .25s}
.chip:hover,.chip.is-on{background:var(--ink);color:var(--bone)}

.recap{margin:0 0 20px;border-top:1px solid var(--line-ink)}
.recap div{display:grid;grid-template-columns:96px 1fr auto;gap:12px;align-items:baseline;padding:12px 0;border-bottom:1px solid var(--line-ink)}
.recap dt{font-family:var(--f-mono);font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--stone)}
.recap dd{margin:0;font-size:17px;font-weight:500}
.recap button{font-family:var(--f-mono);font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--clay);text-decoration:underline;text-underline-offset:3px}
.send{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.send__btn{height:58px;border-radius:999px;display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;border:1px solid var(--ink);transition:background .25s,color .25s,transform .4s var(--ease-out)}
.send__btn:hover{background:var(--ink);color:var(--bone)}
.send__btn--wa{grid-column:1/-1;background:var(--grass);border-color:var(--grass);color:var(--bone);font-size:13px;height:64px}
.send__btn--wa:hover{background:var(--ink);border-color:var(--ink)}
.funnel__or{margin-top:16px;text-align:center}
.funnel__or a{color:var(--ink);border-bottom:1px solid}

/* =========================================================
   REDUCED MOTION: keep user-driven (scroll) motion, drop autoplay motion
   ========================================================= */
@media (prefers-reduced-motion:reduce){
  .grain{animation:none}
  .badge__ring,.star{animation:none}
  .hero__scroll i{animation:none}
  .ba__card::after{animation:none;opacity:.6}
}

/* --- fixes --- */
.hero__l2{padding-top:.17em}
.sunrise__sun{bottom:24%}
@media (max-width:640px){
  .svc__t{font-size:13.2vw}
  .svc__btn{grid-template-columns:30px 1fr 24px}
  .svc__plus{width:22px}
  .foot__grid>div:nth-child(3){grid-column:1/-1;order:5}
  .sunrise__hills{height:34%}
  .sunrise__sun{width:120vw;bottom:20%}
}
@media (max-width:640px){.sunrise__content{padding-bottom:110px}}
