/* ==========================================================================
   Terra Preta Landscapes — styles
   Implemented from the Claude Design prototype (design/Terra Preta Landscapes.dc.html)
   ========================================================================== */

:root{
  --cream:#F4E9D6;
  --sand:#E9DAC0;
  --sand-2:#D9C6A3;
  --clay:#D4532A;
  --clay-light:#E8703A;
  --clay-dark:#B8431F;
  --earth:#4A1F19;
  --earth-mid:#6B3A31;
  --earth-deep:#2E1710;
  --olive:#5C6B2F;
  --moss:#2F4B3E;       /* cool accent for contrast moments */
  --moss-deep:#22382E;

  --serif:'Cormorant Garamond',Georgia,'Times New Roman',serif;
  --sans:'Hanken Grotesk',system-ui,-apple-system,'Segoe UI',sans-serif;

  --gutter:clamp(20px,5vw,80px);
  --section:clamp(80px,12vh,150px);

  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-soft:cubic-bezier(.2,.7,.2,1);
  --ease-curtain:cubic-bezier(.76,0,.24,1);
}

*{box-sizing:border-box}
html,body{margin:0;padding:0;background:var(--cream);color:var(--earth);font-family:var(--sans);-webkit-font-smoothing:antialiased}
body{overflow-x:clip}
a{color:inherit;text-decoration:none}
a:hover{color:var(--clay)}
img{display:block;max-width:100%}
button{font:inherit;color:inherit}
input,textarea,button{font-family:inherit}
[hidden]{display:none!important}
::selection{background:var(--clay);color:var(--cream)}
:focus-visible{outline:2px solid var(--clay);outline-offset:4px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}

@keyframes sway{0%{transform:rotate(-1.8deg)}100%{transform:rotate(2deg)}}
@keyframes drift{from{transform:translateX(0)}to{transform:translateX(-50%)}}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(8px)}}
@keyframes mote{0%{transform:translate(0,0);opacity:0}12%{opacity:.85}85%{opacity:.5}100%{transform:translate(var(--dx),-75vh);opacity:0}}
@keyframes grain{0%,100%{transform:translate(0,0)}25%{transform:translate(-2%,1%)}50%{transform:translate(1%,-2%)}75%{transform:translate(-1%,2%)}}

.site{position:relative;min-height:100vh;background:var(--cream);color:var(--earth);overflow-x:clip}
.on-dark{color:var(--cream)}

/* --------------------------------------------------------------------------
   Overlays: grain, curtain, cursor
   -------------------------------------------------------------------------- */
.grain{position:fixed;inset:-10%;pointer-events:none;z-index:60;opacity:.16;mix-blend-mode:multiply;
  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 baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 .9 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 1.4s steps(4) infinite}

.curtain{position:fixed;inset:0;z-index:90;background:var(--earth-deep);display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;transform:translateY(0);transition:transform .8s var(--ease-curtain);pointer-events:none}
.curtain--moss{background:var(--moss)}
.curtain__eyebrow{font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--clay-light);opacity:0;transition:opacity .4s}
.curtain--project .curtain__eyebrow{opacity:1}
.curtain__word{font-family:var(--serif);font-weight:500;font-size:clamp(28px,4vw,56px);letter-spacing:.14em;text-transform:uppercase;color:var(--cream);transition:opacity .4s;text-align:center;padding:0 24px}
.curtain--project .curtain__word{text-transform:none;letter-spacing:0;font-weight:400;font-size:clamp(34px,5vw,72px);line-height:1;text-wrap:balance;max-width:16ch}
.curtain__track{width:120px;height:1px;background:rgba(244,233,214,.25);overflow:hidden}
.curtain__count{font-family:var(--sans);font-size:11px;letter-spacing:.3em;color:var(--cream);opacity:.6;font-variant-numeric:tabular-nums}
.curtain__bar{width:100%;height:100%;background:var(--clay);transform:translateX(-100%);transition:transform .9s var(--ease-soft)}

.cursor{position:fixed;left:0;top:0;width:28px;height:28px;margin:-14px 0 0 -14px;border:1px solid var(--clay);border-radius:50%;z-index:80;pointer-events:none;display:none;align-items:center;justify-content:center;font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream);background:transparent;transition:width .35s,height .35s,margin .35s,background .35s,border-color .35s;will-change:transform}
.cursor span{opacity:0;transition:opacity .25s}
.cursor.is-link{width:44px;height:44px;margin:-22px 0 0 -22px;background:rgba(212,83,42,.18)}
.cursor.is-view{width:84px;height:84px;margin:-42px 0 0 -42px;background:rgba(212,83,42,.92);border-color:transparent}
.cursor.is-view span{opacity:1}

/* --------------------------------------------------------------------------
   Navigation
   -------------------------------------------------------------------------- */
.nav{position:fixed;top:0;left:0;right:0;z-index:50;display:flex;align-items:center;justify-content:space-between;gap:24px;padding:18px clamp(20px,4vw,56px);color:var(--cream);transition:background .5s,color .5s,padding .5s,box-shadow .5s}
.nav.is-light{color:var(--earth)}
.nav.is-solid{padding:12px clamp(20px,4vw,56px);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
.nav.is-solid:not(.is-light){background:rgba(46,23,16,.55)}
.nav.is-solid.is-light{background:rgba(244,233,214,.85)}
.nav__brand{display:flex;align-items:center;gap:12px;color:inherit}
.nav__brand:hover{color:inherit}
.nav__name{font-family:var(--serif);font-weight:600;font-size:22px;letter-spacing:.08em;text-transform:uppercase;line-height:1}
.nav__sub{font-size:11px;letter-spacing:.28em;text-transform:uppercase;opacity:.75;margin-top:2px}
.nav__links{display:flex;align-items:center;gap:clamp(14px,2.4vw,34px);font-size:13px;letter-spacing:.12em;text-transform:uppercase}
.nav__links a{color:inherit;opacity:.85;transition:opacity .3s,color .3s,transform .3s}
.nav__links a:hover{opacity:1;color:var(--clay-light)}
.nav__links .nav__cta{color:var(--cream);background:var(--clay);padding:11px 18px;border-radius:999px;font-weight:500;opacity:1;transition:background .3s,transform .3s}
.nav__links .nav__cta:hover{background:var(--clay-dark);transform:translateY(-1px);color:var(--cream)}
.nav__toggle{all:unset;display:none;cursor:pointer;font-size:11px;letter-spacing:.24em;text-transform:uppercase;padding:9px 14px 8px;border:1px solid currentColor;border-radius:999px;opacity:.85;transition:opacity .3s,background .3s}
.nav__toggle:hover{opacity:1}
.nav__extra{display:none}

@media (max-width:720px){
  .nav__sub{display:none}
  .nav__toggle{display:inline-block}
  .nav.is-open{color:var(--cream);background:transparent;backdrop-filter:none;-webkit-backdrop-filter:none}
  .nav__links{position:fixed;inset:0;z-index:-1;display:flex;flex-direction:column;align-items:stretch;justify-content:flex-end;gap:0;padding:96px 24px 28px;
    background:radial-gradient(90% 50% at 50% 110%,rgba(212,83,42,.32),transparent 70%),var(--earth-deep);color:var(--cream);
    font-family:var(--serif);font-size:clamp(34px,10vw,44px);line-height:1;letter-spacing:0;text-transform:none;
    visibility:hidden;opacity:0;transition:opacity .35s ease,visibility 0s linear .35s;counter-reset:menu}
  .nav.is-open .nav__links{visibility:visible;opacity:1;transition:opacity .35s ease}
  .nav__links>a{display:flex;align-items:baseline;gap:16px;padding:16px 0;border-bottom:1px solid rgba(244,233,214,.14);opacity:0;transform:translateY(14px);transition:opacity .5s var(--ease-out),transform .5s var(--ease-out),color .3s}
  .nav__links>a:not(.nav__cta)::before{counter-increment:menu;content:"0" counter(menu);font-family:var(--sans);font-size:11px;letter-spacing:.2em;color:var(--clay-light);min-width:26px}
  .nav.is-open .nav__links>a{opacity:1;transform:none}
  .nav.is-open .nav__links>a:nth-child(1){transition-delay:.08s}
  .nav.is-open .nav__links>a:nth-child(2){transition-delay:.14s}
  .nav.is-open .nav__links>a:nth-child(3){transition-delay:.2s}
  .nav.is-open .nav__links>a:nth-child(4){transition-delay:.26s}
  .nav__links .nav__cta{justify-content:center;margin-top:22px;padding:17px 22px;border:0;border-radius:999px;font-family:var(--sans);font-size:14px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;background:var(--clay);color:var(--cream)}
  .nav__links .nav__cta::before{content:none}
  .nav__extra{display:grid;gap:8px;margin-top:auto;padding-top:28px;font-family:var(--sans);font-size:14px;line-height:1.4;letter-spacing:0;text-transform:none;opacity:0;transition:opacity .5s ease .34s}
  .nav.is-open .nav__extra{opacity:1}
  .nav__extra a{color:var(--cream)}
  .nav__extra span{opacity:.6}
  .nav__extra em{font-family:var(--serif);font-style:italic;font-size:17px;color:var(--clay-light);margin-top:4px}
}

/* --------------------------------------------------------------------------
   Shared type + controls
   -------------------------------------------------------------------------- */
.eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--clay);margin-bottom:18px}
.on-dark .eyebrow{color:var(--clay-light)}
.kicker{display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--clay)}
.kicker::before{content:"";display:block;width:36px;height:1px;background:var(--clay)}
.kicker i{display:block;width:5px;height:5px;border-radius:50%;background:var(--clay)}

.h-section{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(36px,4.6vw,72px);line-height:1.02;text-wrap:balance}
.h-section--sm{font-size:clamp(34px,4vw,60px);line-height:1.05}
.h-section--xs{font-size:clamp(34px,4vw,56px);line-height:1.05}
.h-page{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(44px,7vw,120px);line-height:.95;text-wrap:balance}
em.accent{font-style:italic;color:var(--clay)}
.on-dark em.accent{color:var(--clay-light)}
.body{margin:0;font-size:17px;line-height:1.65;color:var(--earth-mid)}

.btn{display:inline-flex;align-items:center;gap:10px;padding:16px 26px;border-radius:999px;font-size:14px;letter-spacing:.1em;text-transform:uppercase;font-weight:500;line-height:1.2;border:0;background:none;cursor:pointer;transition:background .3s,transform .3s,color .3s,border-color .3s}
.btn .arrow{font-size:18px;line-height:0}
.btn--solid{background:var(--clay);color:var(--cream)}
.btn--solid:hover{background:var(--clay-dark);transform:translateY(-2px);color:var(--cream)}
.btn--solid.btn--bright:hover{background:var(--clay-light)}
.btn--ghost{background:transparent;color:var(--cream);border:1px solid rgba(244,233,214,.5);font-weight:400}
.btn--ghost:hover{border-color:var(--cream);background:rgba(244,233,214,.1);color:var(--cream)}
.btn--outline{border:1px solid var(--earth);color:var(--earth);padding:14px 24px;font-size:13px;letter-spacing:.12em;font-weight:400}
.btn--outline:hover{background:var(--earth);color:var(--cream)}
.btn--lg{padding:18px 32px}

.link-ul{border-bottom:1px solid var(--clay);padding-bottom:6px;font-size:13px;letter-spacing:.12em;text-transform:uppercase;transition:color .3s}
.link-ul:hover{color:var(--clay)}
.on-dark .link-ul{color:var(--cream);border-color:var(--clay-light)}
.on-dark .link-ul:hover{color:var(--clay-light)}

.section-head{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:20px;margin-bottom:56px}

/* --------------------------------------------------------------------------
   Reveal system
   -------------------------------------------------------------------------- */
[data-reveal]{opacity:0;transform:translateY(24px);transition:opacity .9s ease,transform .9s ease}
[data-reveal].reveal--d1{transition-delay:.1s}
[data-reveal].reveal--d2{transition-delay:.2s}
[data-reveal].reveal--soft{transform:translateY(30px);transition-delay:.15s}
[data-reveal].reveal--lift{transform:translateY(40px);transition:opacity 1.4s var(--ease-out),transform 1.4s var(--ease-out)}
[data-reveal].reveal--slow{transform:translateY(60px);transition:opacity 1.4s var(--ease-out),transform 1.4s var(--ease-out)}
[data-reveal].reveal--card{transform:translateY(80px);transition:opacity 1.6s var(--ease-out),transform 1.6s var(--ease-out)}

[data-clip]{clip-path:inset(100% 0 0 0);transition:clip-path 1.4s var(--ease-out)}
.reveal--card [data-clip]{transition-duration:1.6s}
[data-reveal][data-clip]{transition:opacity 1.4s var(--ease-out),transform 1.4s var(--ease-out),clip-path 1.4s var(--ease-out)}

/* --------------------------------------------------------------------------
   Image slots — drop real photos into assets/photos/<name>.jpg
   -------------------------------------------------------------------------- */
.slot{position:relative;margin:0;width:100%;height:100%;overflow:hidden;background:var(--sand)}
.slot__media{position:absolute;inset:0;background:linear-gradient(135deg,#EBDDC4 0%,#D9C6A3 100%);will-change:transform}
.slot__media::after{content:"";position:absolute;inset:0;background:repeating-linear-gradient(-45deg,rgba(74,31,25,.05) 0 1px,transparent 1px 16px)}
.slot__media img{width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.08);filter:blur(10px);transition:opacity .6s ease,transform 1.4s var(--ease-out),filter 1.1s ease}
.slot.is-filled .slot__media img{opacity:1}
.slot.is-filled.is-inview .slot__media img,.slot--bare.is-filled .slot__media img{transform:none;filter:none}
.slot figcaption{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;text-align:center;padding:20px;font-family:var(--serif);font-style:italic;font-size:clamp(15px,1.2vw,19px);line-height:1.4;color:var(--earth-mid);opacity:.8;pointer-events:none}
.hp{position:absolute!important;left:-9999px;width:1px;height:1px;overflow:hidden}
.form__note{margin:0 0 18px;font-size:13px;line-height:1.5;color:var(--earth-mid)}
.form__note a{text-decoration:underline;text-underline-offset:3px}
.legal .page-head .h-page{max-width:900px}
.legal__updated{margin:18px 0 0;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--earth-mid)}
.legal__body{padding:0 var(--gutter) var(--section);max-width:calc(760px + var(--gutter) * 2)}
.legal__body h2{margin:clamp(40px,6vh,64px) 0 14px;font-family:var(--serif);font-weight:400;font-size:clamp(26px,2.4vw,34px);line-height:1.15;color:var(--earth)}
.legal__body h2:first-child{margin-top:clamp(8px,2vh,24px)}
.legal__body p,.legal__body li{font-size:17px;line-height:1.7;color:var(--earth-mid)}
.legal__body p{margin:0 0 16px}
.legal__body ul{margin:0 0 16px;padding-left:22px}
.legal__body li{margin-bottom:8px}
.legal__body a{color:var(--earth);text-decoration:underline;text-underline-offset:3px;text-decoration-color:var(--clay)}
.legal__body strong{color:var(--earth);font-weight:600}
.legal__body mark{background:rgba(212,83,42,.14);color:var(--clay-dark);padding:0 4px;border-radius:2px}
.footer__legal-links{display:flex;gap:18px}
.footer__legal-links a{color:inherit;text-decoration:underline;text-underline-offset:3px}
.form__error{margin:0 0 16px;padding:12px 16px;border-left:3px solid var(--clay);background:rgba(212,83,42,.08);font-size:15px;line-height:1.5;color:var(--earth)}
.form button[disabled]{opacity:.6;cursor:wait}
.slot.has-src .slot__media{background-size:cover;background-position:center}
.slot.has-src .slot__media::after,.slot.has-src figcaption{display:none}
.slot.is-filled .slot__media{background:none}
.slot.is-filled .slot__media::after,.slot.is-filled figcaption{display:none}
.slot--dark .slot__media{background:linear-gradient(135deg,#3B2118,#2E1710)}
.slot--dark .slot__media::after{background:repeating-linear-gradient(-45deg,rgba(244,233,214,.05) 0 1px,transparent 1px 16px)}
.slot--dark figcaption{color:var(--cream)}
.slot--bare,.slot--bare .slot__media{background:transparent}
.slot--bare .slot__media::after,.slot--bare figcaption{display:none}

/* --------------------------------------------------------------------------
   HOME · Hero
   -------------------------------------------------------------------------- */
.hero{position:relative;height:280vh;background:var(--earth-deep)}
.hero__stage{position:sticky;top:0;height:100vh;overflow:hidden;background:var(--earth-deep)}
.hero__garden{position:absolute;inset:0;transform:scale(1.18);filter:blur(10px) brightness(.55);transform-origin:50% 70%;will-change:transform,filter}
.hero__sky{position:absolute;inset:0;transition:background 1.4s ease}
.hero__photo{position:absolute;inset:0}
.hero__vignette{position:absolute;inset:0;background:linear-gradient(to top,rgba(46,23,16,.82) 0%,rgba(46,23,16,.45) 32%,rgba(46,23,16,0) 62%),radial-gradient(120% 90% at 50% 100%,rgba(46,23,16,.55),rgba(46,23,16,0) 60%);pointer-events:none}
.hero__grass{position:absolute;inset:0;pointer-events:none}
.hero__motes{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.hero__half{position:absolute;top:0;bottom:0;width:50%;will-change:transform}
.hero__grass{transition:filter 1.4s ease}
.hero__blade{position:absolute;transform-origin:50% 100%}
.hero__blade>i{display:block;height:100%;transform-origin:50% 100%}
.hero__blade>i>img{display:block;height:100%;width:auto;max-width:none;transform-origin:50% 100%}
.hero__mote{position:absolute;border-radius:50%;background:var(--cream);filter:blur(.6px);opacity:0}
.hero__title{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;text-align:center;padding:0 20px;will-change:transform,opacity}
.hero__title .eyebrow{font-size:clamp(11px,1vw,13px);letter-spacing:.42em;color:var(--clay-light);margin-bottom:22px}
.hero__title h1{margin:0;font-family:var(--serif);font-weight:500;font-size:clamp(64px,13vw,220px);line-height:.9;letter-spacing:.02em;color:var(--cream);text-transform:uppercase}
.hero__tagline{position:absolute;left:0;right:0;top:calc(50% + clamp(70px,9vw,140px));text-align:center;pointer-events:none;font-family:var(--serif);font-style:italic;font-size:clamp(18px,1.6vw,26px);color:var(--cream);text-shadow:0 2px 30px rgba(46,23,16,.9)}
.hero__reveal{position:absolute;inset:0;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--gutter) clamp(48px,8vh,96px);opacity:0;transform:translateY(40px);will-change:transform,opacity;pointer-events:none}
.hero__reveal>div{max-width:880px}
.hero__reveal h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(40px,6vw,96px);line-height:1;color:var(--cream);text-wrap:balance}
.hero__reveal h2 em{font-style:italic;color:var(--clay-light)}
.hero__reveal p{margin:22px 0 0;max-width:520px;font-size:clamp(16px,1.25vw,19px);line-height:1.55;color:var(--cream);opacity:.9}
.hero__actions{display:flex;gap:14px;flex-wrap:wrap;margin-top:34px}
.hero__hint{position:absolute;left:var(--gutter);bottom:28px;display:flex;flex-direction:column;align-items:flex-start;gap:10px;color:var(--cream);font-size:11px;letter-spacing:.3em;text-transform:uppercase;opacity:.8;pointer-events:none}
.hero__hint i{display:block;width:1px;height:36px;background:linear-gradient(var(--cream),transparent);animation:bob 1.8s ease-in-out infinite}

/* --------------------------------------------------------------------------
   HOME · Intro + plant marquee
   -------------------------------------------------------------------------- */
.intro{padding:clamp(96px,14vh,180px) var(--gutter);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:start}
.intro>*{grid-column:1 / span 12}
.intro__kicker{display:flex;align-items:center;gap:16px;font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--clay)}
.intro__kicker::before{content:"";display:block;width:40px;height:1px;background:var(--clay)}
.intro__kicker em{font-style:italic;text-transform:none;letter-spacing:0;font-family:var(--serif);font-size:18px}
.intro__lede{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(32px,4.2vw,64px);line-height:1.12;text-wrap:pretty;max-width:1100px}
.intro__cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:32px;margin-top:40px;max-width:1100px}
.intro__cols p{margin:0;font-size:17px;line-height:1.6;color:var(--earth-mid)}

.marquee{overflow:hidden}
.marquee__track{display:flex;width:max-content;animation:drift 50s linear infinite}
.marquee--plants{background:var(--clay);color:var(--cream);padding:16px 0;font-family:var(--serif);font-style:italic;font-size:clamp(20px,2vw,30px)}
.marquee--plants .marquee__item{display:flex;align-items:center;gap:28px;padding:0 14px;white-space:nowrap}
.marquee--plants .marquee__item i{display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--cream);opacity:.7}

/* --------------------------------------------------------------------------
   HOME · Services teaser
   -------------------------------------------------------------------------- */
.svc{background:var(--earth);color:var(--cream);padding:var(--section) var(--gutter)}
.svc .section-head{margin-bottom:clamp(40px,6vh,72px)}
.svc .h-section{max-width:700px}
.maint{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,3vw,48px);align-items:start;padding:clamp(32px,4vh,48px) 0;border-top:1px solid rgba(244,233,214,.18);border-bottom:1px solid rgba(244,233,214,.18);margin-bottom:clamp(48px,8vh,96px)}
.maint__head{grid-column:1 / span 12;display:grid;gap:14px;align-content:start}
.maint__head .eyebrow{margin:0}
.maint__rate{display:flex;align-items:baseline;gap:10px}
.maint__rate b{font-family:var(--serif);font-weight:400;font-size:clamp(64px,7vw,120px);line-height:.85;color:var(--cream)}
.maint__rate span{font-size:13px;letter-spacing:.14em;text-transform:uppercase;opacity:.7}
.maint__head p{margin:6px 0 0;font-size:16px;line-height:1.6;opacity:.8;max-width:380px}
.maint__list{grid-column:1 / span 12;display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:14px 32px;align-content:start;margin:0;padding:0;list-style:none}
.maint__item{display:flex;align-items:baseline;gap:14px;padding:12px 0;border-bottom:1px solid rgba(244,233,214,.14);font-family:var(--serif);font-size:clamp(20px,1.6vw,24px);line-height:1.2}
.maint__item::before{content:"";display:block;width:6px;height:6px;border-radius:50%;background:var(--clay);flex:none;transform:translateY(-2px)}
.svc__skill{display:flex;justify-content:space-between;align-items:flex-end;flex-wrap:wrap;gap:16px;margin-bottom:clamp(28px,4vh,40px)}
.svc__skill .eyebrow{margin:0}
.svc__skill p{margin:0;font-size:15px;line-height:1.6;opacity:.75;max-width:520px}
.svc__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,3vw,48px);align-items:start}
.svc__stage{display:none;grid-column:1 / span 5;position:sticky;top:100px;height:calc(100vh - 140px);min-height:420px}
.svc__frame{position:relative;height:100%;border-radius:4px;overflow:hidden;background:var(--earth-deep)}
.svc__img{position:absolute;inset:0;opacity:0;transform:scale(1.06);transition:opacity .7s ease,transform 1.3s var(--ease-soft)}
.svc__img.is-on{opacity:1;transform:scale(1)}
.svc__shade{position:absolute;inset:auto 0 0 0;height:45%;background:linear-gradient(to top,rgba(46,23,16,.85),transparent);pointer-events:none}
.svc__caption{position:absolute;left:28px;right:28px;bottom:26px;display:flex;justify-content:space-between;align-items:flex-end;gap:16px;pointer-events:none}
.svc__cap{font-family:var(--serif);font-style:italic;font-size:clamp(22px,1.9vw,30px);line-height:1.2;color:var(--cream);max-width:70%;transition:opacity .4s}
.svc__num{font-family:var(--serif);font-size:clamp(56px,6vw,110px);line-height:.8;color:var(--clay-light)}
.svc__list{grid-column:1 / span 12;border-top:1px solid rgba(244,233,214,.18)}
.svc-row{border-bottom:1px solid rgba(244,233,214,.18);cursor:pointer;transition:opacity .5s;position:relative}
.svc-row__head{display:grid;grid-template-columns:44px minmax(0,1fr) 48px;align-items:center;gap:16px;padding:clamp(22px,3vh,34px) 0}
.svc-row__num{font-size:12px;letter-spacing:.2em;color:var(--clay-light)}
.svc-row h3{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(30px,3.4vw,58px);line-height:1;color:var(--cream);transition:transform .5s var(--ease-soft),color .4s}
.svc-row__arrow{width:48px;height:48px;border-radius:50%;border:1px solid rgba(244,233,214,.35);display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--cream);transition:background .4s,border-color .4s,transform .5s}
.svc-row__details{display:grid;grid-template-rows:0fr;transition:grid-template-rows .6s var(--ease-soft)}
.svc-row__details>div{overflow:hidden;min-height:0}
.svc-row__body{display:grid;grid-template-columns:44px minmax(0,1fr);gap:16px;padding-bottom:clamp(26px,3.6vh,40px)}
.svc-row__text{display:grid;gap:16px;max-width:520px}
.svc-row__text p{margin:0;font-size:16px;line-height:1.65;color:var(--cream);opacity:.8}
.svc-row__meta{display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;align-items:center}
.svc-row__meta span{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--clay-light)}
.svc-row__meta a{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--cream);border-bottom:1px solid var(--clay-light);padding-bottom:4px}
.svc-row__meta a:hover{color:var(--clay-light)}
.svc-row.is-on h3{transform:translateX(14px);color:var(--clay-light)}
.svc-row.is-on .svc-row__arrow{background:var(--clay);border-color:var(--clay);transform:rotate(-45deg)}
.svc-row.is-on .svc-row__details{grid-template-rows:1fr}
.svc__list.is-hover .svc-row:not(.is-on){opacity:.45}
@media (min-width:900px){
  .maint__head{grid-column:1 / span 4}
  .maint__list{grid-column:6 / span 7}
  .svc__stage{display:block}
  .svc__list{grid-column:7 / span 6}
}

/* --------------------------------------------------------------------------
   Project cards (home featured + projects page)
   -------------------------------------------------------------------------- */
.featured{padding:var(--section) var(--gutter)}
.featured .h-section{max-width:640px}
.cards{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(16px,2.4vw,32px);align-items:start}
.card{display:block;color:var(--earth);grid-column:var(--col,1 / span 12);margin-top:var(--offset,0)}
a.card:hover{color:var(--earth)}
.card__media{position:relative;aspect-ratio:var(--ratio,4/3);overflow:hidden;border-radius:4px;background:var(--sand)}
.card__head{display:flex;justify-content:space-between;align-items:baseline;gap:16px;margin-top:18px}
.card__head h2,.card__head h3{margin:0;font-family:var(--serif);font-weight:500;font-size:clamp(24px,2.2vw,32px);line-height:1.1}
.card__year{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--clay);white-space:nowrap}
.card__type{margin:8px 0 0;font-size:15px;color:var(--earth-mid);line-height:1.5}
.card__desc{margin:8px 0 0;font-size:15px;color:var(--earth-mid);line-height:1.55;max-width:460px}
.card__count{margin:12px 0 0;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--clay)}
article.card{cursor:pointer}
article.card:focus-visible{outline:2px solid var(--clay);outline-offset:6px}
@media (max-width:719px){
  .card{grid-column:1 / span 12;margin-top:0}
}

/* --------------------------------------------------------------------------
   HOME · Before / after
   -------------------------------------------------------------------------- */
.compare-section{padding:0 var(--gutter) var(--section)}
.compare-section .section-head{margin-bottom:32px}
.compare-section .h-section--sm{max-width:760px}
.compare-section .hint{font-size:13px;letter-spacing:.12em;text-transform:uppercase;color:var(--earth-mid)}
.compare{position:relative;aspect-ratio:16/9;overflow:hidden;border-radius:4px;background:var(--sand);touch-action:none}
.compare[data-reveal]{transform:translateY(40px);transition:opacity 1.4s var(--ease-out),transform 1.4s var(--ease-out)}
/* entrance: two cream veils part from the centre (nested clip-paths break painting in Chromium, so no clip-path here) */
.compare__veil{position:absolute;top:0;bottom:0;width:50%;background:var(--cream);z-index:4;pointer-events:none;transition:transform 1.6s var(--ease-out)}
.compare__veil--l{left:0;transform-origin:0 50%}
.compare__veil--r{right:0;transform-origin:100% 50%}
.compare.is-shown .compare__veil{transform:scaleX(0)}
.compare__layer{position:absolute;inset:0}
.compare__after{left:50%;overflow:hidden}
.compare__after .slot{position:absolute;top:0;right:0;bottom:0;width:200%}
.compare__tag{position:absolute;top:18px;padding:8px 14px;border-radius:999px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);pointer-events:none}
.compare__tag--before{left:18px;background:var(--moss)}
.compare__tag--after{right:18px;background:var(--clay)}
.compare__handle{all:unset;position:absolute;top:0;bottom:0;left:50%;width:56px;margin-left:-28px;cursor:ew-resize;display:flex;align-items:center;justify-content:center;touch-action:none;z-index:3}
.compare__line{position:absolute;top:0;bottom:0;left:50%;width:2px;margin-left:-1px;background:var(--cream)}
.compare__knob{position:relative;width:56px;height:56px;border-radius:50%;background:var(--clay);color:var(--cream);display:flex;align-items:center;justify-content:center;font-size:20px;box-shadow:0 12px 30px rgba(46,23,16,.4);transition:transform .3s}
.compare__handle:hover .compare__knob{transform:scale(1.08)}

/* --------------------------------------------------------------------------
   HOME · Story band, testimonials, FAQ, CTA
   -------------------------------------------------------------------------- */
.band{position:relative;padding:var(--section) var(--gutter);background:var(--sand)}
.band__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(20px,3vw,48px);align-items:center}
.band__img{grid-column:1 / span 12;position:relative;aspect-ratio:4/5;max-height:640px;border-radius:200px 200px 4px 4px;overflow:hidden;background:var(--sand-2)}
.band__text{grid-column:1 / span 12}
.band__text .h-section--sm{margin-bottom:24px}
.band__text .body{margin-bottom:16px}
.band__text .body:last-of-type{margin-bottom:32px}

.quotes{padding:var(--section) 0;overflow:hidden}
.quotes__head{padding:0 var(--gutter);margin-bottom:48px}
.quotes__track{display:flex;width:max-content;animation:drift 60s linear infinite}
.quotes__track:hover{animation-play-state:paused}
.quotes__track--empty{animation:none;width:auto;padding:0 var(--gutter)}
.quotes__soon{margin:0;font-family:var(--serif);font-style:italic;font-size:clamp(22px,2vw,32px);line-height:1.3;color:var(--earth-mid)}
.quote{margin:0;width:clamp(300px,34vw,520px);flex:none;padding:0 clamp(16px,2vw,32px);border-left:1px solid var(--sand-2)}
.quote blockquote{margin:0;font-family:var(--serif);font-size:clamp(22px,1.9vw,30px);line-height:1.3;text-wrap:pretty}
.quote figcaption{margin-top:22px;font-size:13px;letter-spacing:.14em;text-transform:uppercase;color:var(--clay)}
.quote figcaption span{color:var(--earth-mid);letter-spacing:0;text-transform:none;margin-left:8px}

.faq{padding:clamp(60px,10vh,120px) var(--gutter) var(--section)}
.faq__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px}
.faq__head{grid-column:1 / span 12}
.faq__list{grid-column:1 / span 12;border-top:1px solid var(--sand-2)}
.faq__item{border-bottom:1px solid var(--sand-2)}
.faq__q{all:unset;box-sizing:border-box;display:flex;width:100%;justify-content:space-between;align-items:center;gap:20px;padding:24px 0;cursor:pointer;font-family:var(--serif);font-size:clamp(22px,2vw,30px);line-height:1.2;color:var(--earth);transition:color .3s}
.faq__q:hover{color:var(--clay)}
.faq__q:focus-visible{outline:2px solid var(--clay);outline-offset:4px}
.faq__icon{font-family:var(--sans);font-size:24px;font-weight:300;color:var(--clay);transition:transform .4s}
.faq__a{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s var(--ease-soft)}
.faq__a p{overflow:hidden;margin:0;font-size:16px;line-height:1.65;color:var(--earth-mid);max-width:640px;padding-bottom:0;transition:padding .45s var(--ease-soft)}
.faq__item.is-open .faq__a{grid-template-rows:1fr}
.faq__item.is-open .faq__a p{padding-bottom:26px}
.faq__item.is-open .faq__icon{transform:rotate(45deg)}

.cta{background:var(--earth-deep);color:var(--cream);padding:clamp(80px,14vh,180px) var(--gutter);position:relative;overflow:hidden}
.cta__glow{position:absolute;inset:auto -10% -40% -10%;height:70%;background:radial-gradient(60% 100% at 50% 100%,rgba(212,83,42,.35),transparent 70%);pointer-events:none}
.cta__inner{position:relative;text-align:center;max-width:900px;margin:0 auto}
.cta__inner .eyebrow{margin-bottom:22px}
.cta h2{margin:0 0 32px;font-family:var(--serif);font-weight:400;font-size:clamp(40px,6vw,96px);line-height:.98;text-wrap:balance}
.cta h2 em{font-style:italic;color:var(--clay-light)}

@media (min-width:900px){
  .band__img{grid-column:1 / span 5}
  .band__text{grid-column:7 / span 6}
  .faq__head{grid-column:1 / span 4}
  .faq__list{grid-column:5 / span 8}
}

/* --------------------------------------------------------------------------
   SERVICES · horizontal story
   -------------------------------------------------------------------------- */
.story__runway{height:1300vh;position:relative}
.story__vp{position:sticky;top:0;height:100vh;overflow:hidden}
.story__track{display:flex;height:100%;width:max-content;will-change:transform;position:relative}
.story__branch{position:absolute;left:0;top:0;pointer-events:none;overflow:visible;z-index:0}
.story__branch--front{z-index:2}
.panel{flex:none;width:var(--pw,100vw);height:100%;display:flex;position:relative;z-index:1;padding:110px 6vw 26vh;transform:translateY(var(--yoff,0px))}
.panel--edge{--pw:100vw;flex-direction:column;justify-content:space-between;padding:120px 6vw 22vh}
.panel--maint{--pw:112vw;align-items:center;gap:6vw}
.panel--svc{flex-direction:var(--dir,row);align-items:center;justify-content:center;gap:6vw}
.panel .kicker{max-width:420px}
.panel__block{max-width:1100px}
.panel__block--outro{max-width:1000px}
.panel__h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(48px,7.6vw,150px);line-height:.96;text-wrap:balance;color:var(--earth)}
.panel__h1--outro{font-size:clamp(44px,6.4vw,120px)}
.panel__h1 em,.panel__h2 em{font-style:italic;color:var(--clay)}
.panel__lede{margin:28px 0 0;max-width:560px;font-family:var(--serif);font-style:italic;font-size:clamp(20px,1.7vw,24px);line-height:1.4;color:var(--earth-mid)}
.panel__lede--narrow{max-width:520px}
.panel__scroll{display:flex;align-items:center;gap:14px;font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--earth)}
.panel__scroll i{display:block;width:48px;height:1px;background:var(--earth)}
.panel__scroll b{font-weight:400;font-size:16px;line-height:0}
.panel__actions{display:flex;gap:14px;flex-wrap:wrap}
.panel__copy{max-width:520px;display:grid;gap:20px}
.panel--svc .panel__copy{max-width:540px;position:relative}
.panel__h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(40px,4.4vw,72px);line-height:1;text-wrap:balance;color:var(--earth)}
.panel__rate{display:flex;align-items:baseline;gap:10px}
.panel__rate b{font-family:var(--serif);font-weight:400;font-size:clamp(72px,8vw,140px);line-height:.85;color:var(--clay)}
.panel__rate span{font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--earth-mid)}
.panel__p{margin:0;font-size:15px;line-height:1.8;color:var(--earth-mid);max-width:440px}
.panel__maint{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 40px;min-width:min(560px,44vw);margin:0;padding:0;list-style:none}
.panel__maint .maint__item{padding:16px 0;border-bottom-color:var(--sand-2);font-size:clamp(20px,1.7vw,26px);color:var(--earth)}
.panel__img{flex:none;width:32vw;max-width:560px;height:var(--ih,62vh);position:relative;border-radius:4px;overflow:hidden;background:var(--sand);will-change:transform;filter:saturate(.9) contrast(1.04)}
.panel__numrow{display:flex;align-items:baseline;gap:18px}
.panel__bignum{font-family:var(--serif);font-size:clamp(48px,5vw,84px);line-height:.8;color:var(--clay);opacity:.35}
.panel__blurb{margin:0;font-family:var(--serif);font-style:italic;font-size:clamp(22px,1.8vw,30px);line-height:1.3;color:var(--earth)}
.panel__long{margin:0;font-size:15px;line-height:1.8;color:var(--earth-mid);max-width:480px}
.panel__meta{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--earth-mid);padding-top:16px;border-top:1px solid var(--sand-2)}
.panel__ask{justify-self:start;padding:12px 20px;font-size:12px;letter-spacing:.14em;gap:8px}
.story__chrome{position:absolute;top:94px;right:var(--gutter);display:flex;align-items:center;gap:12px;font-size:10px;font-weight:600;letter-spacing:.28em;text-transform:uppercase;color:var(--earth);z-index:2;pointer-events:none}
.story__chrome i{display:block;width:6px;height:6px;border-radius:50%;background:var(--clay);margin-right:12px}
.story__chrome [data-ch-num]{margin-right:6px}
.story__chrome .of{opacity:.5;margin-right:18px}
.story__chrome [data-ch-label]{min-width:170px;text-align:right}
.story__progress{position:absolute;left:0;right:0;bottom:0;height:2px;background:rgba(74,31,25,.1);z-index:2}
.story__bar{height:100%;width:0;background:var(--clay)}

/* flat fallback (narrow screens / reduced motion) */
.story--flat .story__runway{height:auto!important}
.story--flat .story__vp{position:static;height:auto;overflow:visible}
.story--flat .story__track{flex-direction:column;width:auto;height:auto;transform:none!important}
.story--flat .panel{width:auto;height:auto;transform:none;flex-direction:column;align-items:stretch;justify-content:flex-start;padding:72px 20px;border-top:1px solid var(--sand-2);gap:32px}
.story--flat .panel:first-child{border-top:0;padding-top:120px}
.story--flat .panel__img{width:100%;height:auto;aspect-ratio:16/10;transform:none!important;opacity:1!important}
.story--flat .panel__maint{min-width:0;grid-template-columns:1fr}
.story--flat [data-sreveal],.story--flat [data-ssplit]{opacity:1!important;transform:none!important}
.story--flat [data-sword]{transform:none!important}
.story--flat .story__branch,.story--flat .story__chrome,.story--flat .story__progress{display:none}
@media (min-width:640px){.story--flat .panel{padding-left:var(--gutter);padding-right:var(--gutter)} .story--flat .panel__maint{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* --------------------------------------------------------------------------
   PROJECTS / ABOUT / CONTACT pages
   -------------------------------------------------------------------------- */
.page{padding-top:120px}
.page-head{padding:clamp(40px,8vh,100px) var(--gutter)}
.page-head .h-page{max-width:1000px}
.page-head__intro{margin:22px 0 0;max-width:520px;font-size:17px;line-height:1.6;color:var(--earth-mid)}
.projects-grid{padding:0 var(--gutter) var(--section)}

.about-hero{padding:clamp(40px,8vh,100px) var(--gutter);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end}
.about-hero__head{grid-column:1 / span 12}
.about-hero__intro{grid-column:1 / span 12;margin:0;font-size:18px;line-height:1.6;color:var(--earth-mid);max-width:420px}
.about-wide{padding:0 var(--gutter)}
.about-wide__img{position:relative;aspect-ratio:16/8;border-radius:4px;overflow:hidden;background:var(--sand)}
.about-wide__img[data-reveal]{transform:none;transition:opacity 1.4s var(--ease-out),clip-path 1.6s var(--ease-out)}
.leap{padding:var(--section) var(--gutter);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(24px,3vw,48px);align-items:start}
.leap__quote{grid-column:1 / span 12}
.leap__year{display:flex;align-items:baseline;gap:16px;margin-bottom:22px}
.leap__year b{font-family:var(--serif);font-weight:400;font-size:clamp(64px,7vw,120px);line-height:.8;color:var(--clay)}
.leap__year span{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--earth-mid)}
.leap__pull{margin:0;font-family:var(--serif);font-style:italic;font-size:clamp(28px,3vw,44px);line-height:1.15;text-wrap:pretty;color:var(--earth)}
.leap__body{grid-column:1 / span 12;display:grid;gap:22px;font-size:17px;line-height:1.7;color:var(--earth-mid)}
.leap__body p{margin:0}
.leap__body p[data-reveal]{transform:translateY(20px)}
.leap__body h2{margin:18px 0 0;font-family:var(--serif);font-weight:400;font-size:clamp(28px,2.6vw,40px);line-height:1.1;color:var(--earth)}
.leap__body h2[data-reveal]{transform:translateY(20px)}
.leap__body em{font-style:italic;color:var(--earth)}
.focus{background:var(--earth);color:var(--cream);padding:var(--section) var(--gutter)}
.focus .section-head{margin-bottom:clamp(40px,6vh,64px)}
.focus .h-section{max-width:760px}
.focus__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:0 clamp(24px,3vw,48px)}
.focus__item{border-top:1px solid rgba(244,233,214,.22);padding:clamp(28px,3vw,40px) 0;display:grid;gap:16px;align-content:start}
.focus__num{font-size:12px;letter-spacing:.2em;color:var(--clay-light)}
.focus__item h3{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(26px,2.2vw,34px);line-height:1.1;text-wrap:balance}
.focus__item p{margin:0;font-size:15px;line-height:1.65;opacity:.78}
.place{padding:var(--section) var(--gutter);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(24px,3vw,48px);align-items:center}
.place__img{grid-column:1 / span 12;position:relative;aspect-ratio:4/5;max-width:520px;border-radius:200px 200px 4px 4px;overflow:hidden;background:var(--sand)}
.place__text{grid-column:1 / span 12;display:grid;gap:28px}
.place__text .h-section--sm{margin-bottom:20px}
.place__text .body{max-width:480px}
.chips{display:flex;flex-wrap:wrap;gap:10px}
.chip{padding:10px 16px;border:1px solid var(--earth);border-radius:999px;font-size:12px;letter-spacing:.14em;text-transform:uppercase}
.stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:24px;padding-top:28px;border-top:1px solid var(--sand-2)}
.stat b{display:block;font-family:var(--serif);font-weight:400;font-size:clamp(28px,2.6vw,40px);line-height:1;color:var(--earth)}
.stat span{display:block;margin-top:8px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--earth-mid)}
.place__text .btn{justify-self:start}

.contact{padding:clamp(40px,8vh,100px) var(--gutter) var(--section);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(24px,4vw,64px)}
.contact__intro{grid-column:1 / span 12}
.contact__intro .h-page{margin-bottom:28px;font-size:clamp(44px,6vw,100px)}
.contact__intro .body{margin-bottom:40px;max-width:460px}
.contact__details{display:grid;gap:14px;font-size:16px;line-height:1.5}
.contact__details a{border-bottom:1px solid var(--sand-2);padding-bottom:12px;display:block}
.contact__details span{color:var(--earth-mid)}
.contact__details .contact__note{font-family:var(--serif);font-style:italic;font-size:19px;color:var(--clay);margin-top:6px}
.contact__panel{grid-column:1 / span 12}
.form{background:var(--sand);padding:clamp(28px,4vw,56px);border-radius:4px;display:grid;gap:24px}
.form[data-reveal]{transform:translateY(50px);transition:opacity 1.3s var(--ease-out) .2s,transform 1.3s var(--ease-out) .2s}
.form__row{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:24px}
.field{display:grid;gap:8px;font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--earth-mid)}
.field input,.field textarea{border:0;border-bottom:1px solid var(--earth);background:transparent;padding:10px 0;font-size:17px;color:var(--earth);border-radius:0;width:100%}
.field textarea{resize:vertical;line-height:1.5}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--clay)}
.field input::placeholder,.field textarea::placeholder{color:rgba(107,58,49,.55)}
.interests{display:flex;flex-wrap:wrap;gap:10px}
.interest{all:unset;cursor:pointer;padding:10px 16px;border-radius:999px;border:1px solid var(--earth);font-size:13px;letter-spacing:.04em;text-transform:none;background:transparent;color:var(--earth);transition:background .3s,color .3s}
.interest:focus-visible{outline:2px solid var(--clay);outline-offset:3px}
.interest.is-on{background:var(--earth);color:var(--cream)}
.form .btn{justify-self:start}
.thanks{background:var(--earth);color:var(--cream);padding:clamp(32px,4vw,56px);border-radius:4px;display:flex;flex-direction:column;justify-content:center;gap:16px;min-height:400px}
.thanks .eyebrow{margin:0}
.thanks h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(32px,3.4vw,52px);line-height:1.05}
.thanks p{margin:0;opacity:.8;font-size:16px;line-height:1.6}
.thanks a{color:var(--clay-light);font-size:13px;letter-spacing:.12em;text-transform:uppercase;align-self:flex-start;border-bottom:1px solid var(--clay-light);padding-bottom:4px}

@media (min-width:900px){
  .about-hero__head{grid-column:1 / span 8}
  .about-hero__intro{grid-column:9 / span 4}
  .leap__quote{grid-column:1 / span 5}
  .leap__body{grid-column:7 / span 6}
  .place__img{grid-column:1 / span 5}
  .place__text{grid-column:7 / span 6}
  .contact__intro{grid-column:1 / span 5}
  .contact__panel{grid-column:6 / span 7}
}

/* --------------------------------------------------------------------------
   Footer
   -------------------------------------------------------------------------- */
.footer{background:var(--earth);color:var(--cream);padding:clamp(56px,8vh,96px) var(--gutter) 32px}
.footer__grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:40px;align-items:start;padding-bottom:48px;border-bottom:1px solid rgba(244,233,214,.18)}
.footer__brand{display:flex;flex-direction:column;gap:18px}
.footer__logo{width:96px;height:96px;object-fit:cover;object-position:50% 38%;border-radius:8px;mix-blend-mode:screen;opacity:.95}
.footer__tag{font-family:var(--serif);font-size:26px;line-height:1.1;max-width:260px}
.footer__links{display:grid;gap:12px;font-size:14px;letter-spacing:.1em;text-transform:uppercase}
.footer__links a{color:var(--cream);opacity:.8}
.footer__links a:hover{opacity:1;color:var(--clay-light)}
.footer__contact{display:grid;gap:12px;font-size:15px;line-height:1.5}
.footer__contact a{color:var(--cream)}
.footer__contact a:hover{color:var(--clay-light)}
.footer__contact span{opacity:.7}
.footer__contact .footer__note{opacity:1;font-family:var(--serif);font-style:italic;font-size:18px;color:var(--clay-light)}
.footer__big{overflow:hidden;margin:40px calc(-1 * var(--gutter)) -10px;padding:0 var(--gutter);font-family:var(--serif);font-weight:500;font-size:clamp(64px,13.5vw,250px);line-height:.82;letter-spacing:.02em;text-transform:uppercase;color:rgba(244,233,214,.08);white-space:nowrap;text-align:center}
.footer__big[data-reveal]{transform:translateY(40%);transition:opacity 1.2s ease,transform 1.2s var(--ease-soft)}
.footer__legal{display:flex;justify-content:space-between;flex-wrap:wrap;gap:12px;padding-top:24px;font-size:12px;letter-spacing:.08em;opacity:.6}
.footer__credit{margin-top:18px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;opacity:.4;transition:opacity .3s}
.footer__credit:hover{opacity:.8}
.footer__credit a{color:var(--cream);border-bottom:1px solid rgba(244,233,214,.4);padding-bottom:2px}
.footer__credit a:hover{color:var(--clay-light);border-color:var(--clay-light)}

/* --------------------------------------------------------------------------
   Project gallery (lightbox)
   -------------------------------------------------------------------------- */
.lightbox{position:fixed;inset:0;z-index:85;background:rgba(46,23,16,.97);color:var(--cream);display:grid;grid-template-rows:auto minmax(0,1fr) auto auto;opacity:0;transition:opacity .25s ease}
.lightbox.is-open{opacity:1}
.lightbox__close{all:unset;position:absolute;top:18px;right:clamp(20px,4vw,56px);z-index:2;cursor:pointer;width:44px;height:44px;border-radius:50%;border:1px solid rgba(244,233,214,.35);display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1;transition:background .3s,border-color .3s}
.lightbox__close:hover{background:var(--clay);border-color:var(--clay)}
.lightbox__close:focus-visible,.lightbox__nav:focus-visible,.lightbox__thumb:focus-visible{outline:2px solid var(--clay-light);outline-offset:3px}
.lightbox__head{padding:22px 100px 8px clamp(20px,4vw,56px);display:grid;gap:6px}
.lightbox__head .eyebrow{margin:0;color:var(--clay-light)}
.lightbox__head h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(26px,3vw,44px);line-height:1.05}
.lightbox__head p{margin:0;font-size:14px;line-height:1.5;opacity:.75;max-width:720px}
.lightbox__stage{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:stretch;gap:8px;padding:8px clamp(8px,2vw,24px);min-height:0}
.lightbox__media{min-height:0;display:flex;align-items:center;justify-content:center}
.lightbox__media img,.lightbox__media video{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:4px;background:#000}
.lightbox__media video{width:100%}
.lightbox__nav{all:unset;align-self:center;cursor:pointer;width:48px;height:48px;border-radius:50%;border:1px solid rgba(244,233,214,.35);display:flex;align-items:center;justify-content:center;font-size:18px;transition:background .3s,border-color .3s}
.lightbox__nav:hover{background:var(--clay);border-color:var(--clay)}
.lightbox__foot{display:flex;justify-content:space-between;gap:16px;padding:8px clamp(20px,4vw,56px);font-size:11px;letter-spacing:.22em;text-transform:uppercase;opacity:.7}
.lightbox__strip{display:flex;gap:6px;overflow-x:auto;padding:6px clamp(20px,4vw,56px) 18px;scrollbar-width:thin;scrollbar-color:rgba(244,233,214,.3) transparent}
.lightbox__thumb{all:unset;cursor:pointer;flex:none;width:96px;height:64px;border-radius:3px;overflow:hidden;opacity:.55;transition:opacity .3s;position:relative;outline:2px solid transparent;outline-offset:2px;background:#000}
.lightbox__thumb img{width:100%;height:100%;object-fit:cover;display:block}
.lightbox__thumb span{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--cream);font-size:18px;background:rgba(46,23,16,.4)}
.lightbox__thumb:hover,.lightbox__thumb.is-on{opacity:1}
.lightbox__thumb.is-on{outline-color:var(--clay)}
@media (max-width:720px){
  .lightbox__stage{grid-template-columns:minmax(0,1fr);padding:4px}
  .lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);z-index:2;background:rgba(46,23,16,.6)}
  .lightbox__nav--prev{left:12px}
  .lightbox__nav--next{right:12px}
  .lightbox__head{padding-right:76px}
  .lightbox__head p{display:none}
  .lightbox__thumb{width:72px;height:48px}
}

/* --------------------------------------------------------------------------
   Phone refinements
   -------------------------------------------------------------------------- */
@media (max-width:720px){
  .svc-row__head{grid-template-columns:30px minmax(0,1fr) 40px;gap:12px}
  .svc-row h3{font-size:clamp(24px,7.4vw,32px)}
  .svc-row__arrow{width:40px;height:40px;font-size:16px}
  .svc-row__body{grid-template-columns:30px minmax(0,1fr);gap:12px}
  .svc-row.is-on h3{transform:translateX(8px)}
  .compare{aspect-ratio:4/3}
  .compare__tag{top:12px;padding:6px 10px;font-size:10px}
  .compare__tag--before{left:12px}
  .compare__tag--after{right:12px}
  .compare__knob{width:48px;height:48px;font-size:18px}
  /* testimonials: swipeable cards instead of a marquee */
  .quotes__track{animation:none;width:auto;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 20px 8px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
  .quotes__track::-webkit-scrollbar{display:none}
  .quote{width:min(82vw,360px);scroll-snap-align:start;padding:0 20px 0 0;border-left:0;border-right:1px solid var(--sand-2);margin-right:20px}
  .quote--dup{display:none}
  .quotes__head{margin-bottom:32px}
  .quotes__hint{display:block;padding:0 20px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--earth-mid);margin-top:14px}
}
.quotes__hint{display:none}

/* --------------------------------------------------------------------------
   Project page
   -------------------------------------------------------------------------- */
.pp-hero{position:relative;height:min(82vh,900px);min-height:420px;background:var(--earth-deep);color:var(--cream);overflow:hidden}
.pp-hero__img{position:absolute;inset:0}
.pp-hero__img .slot,.pp-hero__img .slot__media{background:transparent}
.pp-hero__img .slot__media::after{display:none}
.pp-hero__img .slot figcaption{display:none}
.pp-hero__img .slot__media img{transform:none;filter:none;transition:opacity .6s ease}
.pp-hero__shade{position:absolute;inset:0;background:linear-gradient(to top,rgba(34,56,46,.9) 0%,rgba(46,23,16,.35) 40%,rgba(46,23,16,.1) 70%,rgba(46,23,16,.35) 100%);pointer-events:none}
.pp-hero__text{position:absolute;left:0;right:0;bottom:0;padding:0 var(--gutter) clamp(32px,6vh,72px);display:grid;gap:14px}
.pp-hero__text .eyebrow{margin:0;color:var(--clay-light)}
.pp-hero__text h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(44px,7vw,120px);line-height:.95;text-wrap:balance;max-width:14ch}
.pp-hero__meta{display:flex;flex-wrap:wrap;gap:10px 22px;font-size:12px;letter-spacing:.2em;text-transform:uppercase;opacity:.85}
.pp-back{position:absolute;top:96px;left:var(--gutter);z-index:2;display:inline-flex;align-items:center;gap:10px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--cream);opacity:.85;transition:opacity .3s}
.pp-back:hover{opacity:1;color:var(--cream)}
.pp-back i{display:block;width:32px;height:1px;background:currentColor}

.pp-brief{background:var(--moss);color:var(--cream);padding:var(--section) var(--gutter)}
.pp-brief__grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(24px,3vw,48px);align-items:start}
.pp-brief__text{grid-column:1 / span 12}
.pp-brief__text .eyebrow{color:var(--clay-light)}
.pp-brief__text p{margin:0;font-family:var(--serif);font-size:clamp(26px,2.6vw,40px);line-height:1.2;text-wrap:pretty;max-width:22ch}
.pp-facts{grid-column:1 / span 12;display:grid;gap:0;align-content:start;border-top:1px solid rgba(244,233,214,.2)}
.pp-facts div{display:flex;justify-content:space-between;gap:16px;padding:16px 0;border-bottom:1px solid rgba(244,233,214,.2);font-size:14px}
.pp-facts dt{font-size:11px;letter-spacing:.22em;text-transform:uppercase;opacity:.65;margin:0}
.pp-facts dd{margin:0;text-align:right;font-family:var(--serif);font-size:19px;line-height:1.2}
.pp-plants{margin:32px 0 0;padding:0;list-style:none;display:flex;flex-wrap:wrap;gap:8px}
.pp-plants li{padding:8px 14px;border:1px solid rgba(244,233,214,.35);border-radius:999px;font-family:var(--serif);font-style:italic;font-size:16px}

.pp-pair{padding:var(--section) var(--gutter) 0}
.pp-pair__grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,2vw,28px);margin-top:36px}
.pp-pair__item{position:relative;aspect-ratio:4/3;border-radius:4px;overflow:hidden;background:var(--sand)}
.pp-pair__tag{position:absolute;top:16px;left:16px;padding:8px 14px;border-radius:999px;font-size:11px;letter-spacing:.22em;text-transform:uppercase;color:var(--cream);background:var(--moss);z-index:2}
.pp-pair__item:last-child .pp-pair__tag{background:var(--clay)}
.pp-pair__date{position:absolute;right:16px;bottom:14px;z-index:2;font-family:var(--serif);font-style:italic;font-size:18px;color:var(--cream);text-shadow:0 1px 18px rgba(46,23,16,.8)}

.pp-grid{padding:var(--section) var(--gutter)}
.pp-grid .section-head{margin-bottom:40px}
.pp-grid__wall{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:clamp(10px,1.6vw,24px);align-items:start}
.pp-shot{all:unset;box-sizing:border-box;cursor:pointer;grid-column:span 4;position:relative;border-radius:4px;overflow:hidden;background:var(--sand);aspect-ratio:var(--ar,4/3)}
.pp-shot--wide{grid-column:span 8}
.pp-shot--tall{grid-column:span 4;aspect-ratio:3/4}
.pp-shot:focus-visible{outline:2px solid var(--clay);outline-offset:4px}
.pp-shot .slot{position:absolute;inset:0}
.pp-shot__date{position:absolute;left:14px;bottom:12px;z-index:2;font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--cream);opacity:0;transform:translateY(6px);transition:opacity .3s,transform .3s;text-shadow:0 1px 12px rgba(46,23,16,.9)}
.pp-shot:hover .pp-shot__date{opacity:.9;transform:none}

.pp-video{padding:0 var(--gutter) var(--section)}
.pp-video video{width:100%;border-radius:4px;background:#000;display:block;aspect-ratio:16/9}

/* the last 160vh of a project page is the "next up" zone: scroll through it and the curtain wipes to the next garden */
.pp-next{display:block;position:relative;height:160vh;background:var(--moss-deep);color:var(--cream)}
.pp-next:hover{color:var(--cream)}
.pp-next__sticky{position:sticky;top:0;height:100vh;overflow:hidden}
.pp-next__img{position:absolute;inset:0;opacity:.55;transition:opacity .8s ease,transform 1.6s var(--ease-out)}
.pp-next__img .slot,.pp-next__img .slot__media{background:transparent}
.pp-next__img .slot figcaption,.pp-next__img .slot__media::after{display:none}
.pp-next:hover .pp-next__img{opacity:.75;transform:scale(1.03)}
.pp-next__shade{position:absolute;inset:0;background:linear-gradient(to top,rgba(34,56,46,.88),rgba(34,56,46,.25))}
.pp-next__text{position:absolute;left:0;right:0;bottom:0;display:flex;flex-direction:column;justify-content:flex-end;padding:0 var(--gutter) clamp(40px,7vh,80px);gap:14px}
.pp-next__text .eyebrow{margin:0;color:var(--clay-light)}
.pp-next__text h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(40px,6.4vw,110px);line-height:.95;display:flex;align-items:baseline;gap:.3em;flex-wrap:wrap}
.pp-next__text h2 span{font-size:.4em;font-family:var(--sans);letter-spacing:.14em;text-transform:uppercase;transition:transform .5s var(--ease-out)}
.pp-next:hover h2 span{transform:translateX(10px)}
.pp-next__hint{display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;opacity:.75;margin-top:6px}
.pp-next__hint b{font-weight:400;font-variant-numeric:tabular-nums;font-family:var(--serif);font-size:22px;letter-spacing:0;opacity:1}
.pp-next__bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:rgba(244,233,214,.14)}
.pp-next__bar i{display:block;height:100%;width:0;background:var(--clay);transition:width .12s linear}

/* pull up at the very top of a project page to go back to the previous garden */
.prevbar{position:fixed;top:0;left:0;right:0;z-index:55;background:var(--moss);color:var(--cream);padding:14px var(--gutter) 12px;display:flex;justify-content:space-between;align-items:baseline;gap:16px;font-size:11px;letter-spacing:.24em;text-transform:uppercase;transform:translateY(-100%);pointer-events:none;will-change:transform}
.prevbar b{font-family:var(--serif);font-weight:400;font-size:20px;letter-spacing:0;text-transform:none}
.prevbar__fill{position:absolute;left:0;bottom:0;height:2px;width:0;background:var(--clay-light)}

@media (min-width:900px){
  .pp-brief__text{grid-column:1 / span 7}
  .pp-facts{grid-column:9 / span 4}
}
@media (max-width:720px){
  .pp-hero{height:min(72vh,640px)}
  .pp-pair__grid{grid-template-columns:1fr}
  .pp-shot,.pp-shot--wide,.pp-shot--tall{grid-column:span 6}
  .pp-shot--tall{aspect-ratio:4/3}
  .pp-back{top:84px}
}

/* shared-element clone used for card → project transitions */
.flip{position:fixed;z-index:70;border-radius:4px;overflow:hidden;background-size:cover;background-position:center;pointer-events:none;will-change:transform,width,height;transition:top .9s var(--ease-out),left .9s var(--ease-out),width .9s var(--ease-out),height .9s var(--ease-out),border-radius .9s var(--ease-out)}
.is-flipping main{transition:opacity .35s ease;opacity:0}

/* --------------------------------------------------------------------------
   404
   -------------------------------------------------------------------------- */
.nf{min-height:100vh;background:var(--moss);color:var(--cream);display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:24px;align-items:end;padding:160px var(--gutter) clamp(48px,8vh,96px);position:relative;overflow:hidden}
.nf__branch{position:absolute;right:-6vw;top:8vh;width:min(70vw,720px);opacity:.9;pointer-events:none}
.nf__text{grid-column:1 / span 12;position:relative;display:grid;gap:22px;max-width:760px}
.nf__text .eyebrow{margin:0;color:var(--clay-light)}
.nf__text h1{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(52px,9vw,150px);line-height:.92;text-wrap:balance}
.nf__text h1 em{font-style:italic;color:var(--clay-light)}
.nf__text p{margin:0;font-size:17px;line-height:1.6;opacity:.85;max-width:440px}
.nf__links{display:flex;flex-wrap:wrap;gap:12px;margin-top:8px}
.nf__links .btn--outline{border-color:rgba(244,233,214,.6);color:var(--cream)}
.nf__links .btn--outline:hover{background:var(--cream);color:var(--moss)}
.nf__code{grid-column:1 / span 12;font-family:var(--serif);font-size:clamp(120px,28vw,420px);line-height:.8;color:rgba(244,233,214,.07);position:absolute;left:var(--gutter);bottom:-.08em;pointer-events:none;letter-spacing:-.02em}

/* --------------------------------------------------------------------------
   Motion extras: leaf trail, magnetic buttons
   -------------------------------------------------------------------------- */
.leaf{position:fixed;left:0;top:0;width:10px;height:10px;pointer-events:none;z-index:79;will-change:transform,opacity}
.leaf svg{display:block;width:100%;height:100%}
.is-magnet{transition-property:transform;transition-duration:.15s;transition-timing-function:ease-out}
.is-magnet-out{transition:transform .6s var(--ease-out)}

/* --------------------------------------------------------------------------
   Season dial (hero): a still compass ring, labels outside, a marker that travels
   -------------------------------------------------------------------------- */
.dial{position:absolute;right:var(--gutter);top:92px;z-index:5;color:var(--cream);--r:58px;--ang:0deg;
  display:grid;grid-template-columns:auto auto auto;grid-template-rows:auto auto auto;align-items:center;justify-items:center;column-gap:10px;row-gap:6px}
.dial__face{grid-column:2;grid-row:2;position:relative;width:calc(var(--r) * 2);height:calc(var(--r) * 2);cursor:grab;touch-action:none;user-select:none}
.dial__face:active{cursor:grabbing}
.dial__svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.dial__svg circle{fill:rgba(46,23,16,.22);stroke:rgba(244,233,214,.42);stroke-width:1;vector-effect:non-scaling-stroke}
.dial__svg .tick{stroke:rgba(244,233,214,.55);stroke-width:1;vector-effect:non-scaling-stroke}
.dial__svg .minor{stroke:rgba(244,233,214,.22);stroke-width:1;vector-effect:non-scaling-stroke}
.dial__marker{position:absolute;left:50%;top:50%;width:9px;height:9px;margin:-4.5px 0 0 -4.5px;border-radius:50%;background:var(--clay);box-shadow:0 0 0 3px rgba(212,83,42,.25);transform:rotate(var(--ang)) translateY(calc(var(--r) * -1));transition:transform .9s var(--ease-out);pointer-events:none}
.dial__marker.is-dragging{transition:none}
.dial__centre{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;pointer-events:none;text-align:center}
.dial__centre em{font-family:var(--serif);font-style:italic;font-size:19px;line-height:1;color:var(--cream)}
.dial__centre span{font-size:8px;letter-spacing:.28em;text-transform:uppercase;opacity:.65;white-space:nowrap}
.dial__label{all:unset;cursor:pointer;font-size:9px;letter-spacing:.26em;text-transform:uppercase;line-height:1;padding:6px 4px;opacity:.6;transition:opacity .3s,color .3s;white-space:nowrap}
.dial__label:hover{opacity:1}
.dial__label.is-on{opacity:1;color:var(--clay-light)}
.dial__label:focus-visible{outline:1px solid var(--clay-light);outline-offset:2px;border-radius:2px}
.dial__label--n{grid-column:2;grid-row:1}
.dial__label--e{grid-column:3;grid-row:2}
.dial__label--s{grid-column:2;grid-row:3}
.dial__label--w{grid-column:1;grid-row:2}
@media (max-width:640px){
  .dial{right:16px;bottom:auto;top:78px;display:flex;flex-direction:column;align-items:flex-end;gap:8px}
  .dial__face{display:none}
  .dial__labels{display:flex;gap:2px;padding:4px 6px;border-radius:999px;background:rgba(46,23,16,.35);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);border:1px solid rgba(244,233,214,.22)}
  .dial__label{padding:7px 8px;font-size:8px;letter-spacing:.18em}
  .dial__label.is-on{background:rgba(212,83,42,.25);border-radius:999px;color:var(--cream)}
}
@media (min-width:641px){.dial__labels{display:contents}}

/* --------------------------------------------------------------------------
   Enquiry drawer + pinned tab
   -------------------------------------------------------------------------- */
.drawer{position:fixed;inset:0;z-index:86}
.drawer__backdrop{position:absolute;inset:0;background:rgba(46,23,16,.55);opacity:0;transition:opacity .4s ease}
.drawer__panel{position:absolute;top:0;right:0;bottom:0;width:min(540px,100%);background:var(--sand);color:var(--earth);transform:translateX(100%);transition:transform .7s var(--ease-out);overflow-y:auto;box-shadow:-30px 0 80px rgba(46,23,16,.25)}
.drawer.is-open .drawer__backdrop{opacity:1}
.drawer.is-open .drawer__panel{transform:none}
.drawer__close{all:unset;position:absolute;top:18px;right:18px;width:44px;height:44px;border-radius:50%;border:1px solid rgba(74,31,25,.35);display:flex;align-items:center;justify-content:center;font-size:22px;line-height:1;cursor:pointer;transition:background .3s,color .3s;z-index:2}
.drawer__close:hover{background:var(--earth);color:var(--cream)}
.drawer__body{padding:clamp(56px,9vh,84px) clamp(22px,4vw,44px) 40px;display:grid;gap:18px}
.drawer__body .eyebrow{margin:0}
.drawer__body h2{margin:0;font-family:var(--serif);font-weight:400;font-size:clamp(32px,3.4vw,46px);line-height:1.02;text-wrap:balance}
.drawer__note{margin:0;font-size:15px;line-height:1.6;color:var(--earth-mid)}
.form--drawer{background:transparent;padding:0;gap:20px;opacity:1;transform:none}
.form--drawer .field input,.form--drawer .field textarea{font-size:16px}
.thanks--drawer{min-height:0;padding:28px;border-radius:4px}
.drawer__alt{margin:8px 0 0;font-size:13px;line-height:1.7;color:var(--earth-mid)}
.drawer__alt a{border-bottom:1px solid var(--sand-2)}
.has-drawer{overflow:hidden}

.edgetab{all:unset;position:fixed;right:0;top:50%;z-index:52;transform:translateY(-50%);writing-mode:vertical-rl;padding:18px 11px 18px 12px;background:var(--clay);color:var(--cream);font-size:11px;letter-spacing:.26em;text-transform:uppercase;cursor:pointer;border-radius:4px 0 0 4px;transition:background .3s,transform .4s var(--ease-out),opacity .3s}
.edgetab span{display:block;transform:rotate(180deg)}
.edgetab:hover{background:var(--clay-dark);transform:translateY(-50%) translateX(-2px)}
.edgetab:focus-visible{outline:2px solid var(--cream);outline-offset:-4px}
html[data-page="contact"] .edgetab,.has-drawer .edgetab,.has-lightbox .edgetab{opacity:0;pointer-events:none}
@media (max-width:1099px){.edgetab{display:none}}

/* --------------------------------------------------------------------------
   Side rail (desktop)
   -------------------------------------------------------------------------- */
.rail{position:fixed;left:clamp(14px,2vw,28px);top:50%;transform:translateY(-50%);z-index:45;display:grid;justify-items:center;gap:14px;color:var(--earth);opacity:.85;transition:color .5s,opacity .3s;pointer-events:none}
.rail.is-dark{color:var(--cream)}
.rail__mark{width:16px;height:16px;opacity:.9}
.rail__track{position:relative;width:1px;height:34vh;background:currentColor;opacity:.3}
.rail__dot{position:absolute;left:50%;top:0;width:7px;height:7px;margin:-3px 0 0 -3.5px;border-radius:50%;background:var(--clay);opacity:1;transition:top .15s linear}
.rail__label{writing-mode:vertical-rl;transform:rotate(180deg);font-size:10px;letter-spacing:.3em;text-transform:uppercase;white-space:nowrap;transition:opacity .3s}
.rail.is-swapping .rail__label{opacity:0}
.has-drawer .rail,.has-lightbox .rail,.nav.is-open ~ .rail{opacity:0}
@media (max-width:1099px){.rail{display:none}}

/* --------------------------------------------------------------------------
   Foliage sprigs over section edges (home)
   -------------------------------------------------------------------------- */
.sprig{position:relative;display:block;pointer-events:none;z-index:3;overflow:visible;will-change:transform;filter:drop-shadow(0 18px 24px rgba(46,23,16,.18))}
.sprig use{transform-box:fill-box;transform-origin:50% 100%;animation:sprigsway 7s ease-in-out infinite alternate}
.sprig img{display:block;width:100%;height:100%;object-fit:contain;object-position:50% 100%;transform-origin:50% 100%;animation:sprigsway 7s ease-in-out infinite alternate}
.sprig--fern img{object-position:0 100%}
.sprig--acer img{object-position:100% 100%}
@keyframes sprigsway{from{transform:rotate(-1.4deg)}to{transform:rotate(1.6deg)}}
.sprig--acer{width:clamp(200px,30vw,400px);height:calc(clamp(180px,26vw,340px) * .75);margin:calc(clamp(180px,26vw,340px) * -.55) -24px 0 auto}
.sprig--fern{width:clamp(120px,15vw,200px);height:calc(clamp(120px,15vw,200px) * 1.36);margin:calc(clamp(120px,15vw,200px) * -.9) 0 0 -18px}
.sprig--grass{width:clamp(140px,18vw,220px);height:calc(clamp(140px,18vw,220px) * 1.3);margin:calc(clamp(140px,18vw,220px) * -1.1) 6vw 0 auto}
@media (max-width:720px){.sprig--fern{display:none}}

/* --------------------------------------------------------------------------
   Rates panel (services story)
   -------------------------------------------------------------------------- */
.panel--rates{--pw:104vw;align-items:center;justify-content:center;gap:6vw}
.panel__copy--rates{max-width:460px}
.rates{margin:0;min-width:min(620px,48vw);display:grid;border-top:1px solid var(--earth)}
.rates__row{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:22px 0;border-bottom:1px solid var(--sand-2)}
.rates__row dt{margin:0;font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--earth-mid)}
.rates__row dd{margin:0;display:flex;align-items:baseline;gap:12px}
.rates__row b{font-family:var(--serif);font-weight:400;font-size:clamp(40px,4.4vw,72px);line-height:.9;color:var(--earth);font-variant-numeric:tabular-nums}
.rates__row:first-child b{color:var(--clay)}
.rates__row span{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--earth-mid)}
.story--flat .rates{min-width:0}

/* --------------------------------------------------------------------------
   Project page: captions + index strip
   -------------------------------------------------------------------------- */
.pp-shot{all:unset;box-sizing:border-box;display:block;cursor:pointer;grid-column:span 4;margin:0}
.pp-shot--wide{grid-column:span 8}
.pp-shot--tall{grid-column:span 4}
.pp-shot__img{position:relative;border-radius:4px;overflow:hidden;background:var(--sand);aspect-ratio:var(--ar,4/3)}
.pp-shot--tall .pp-shot__img{aspect-ratio:3/4}
.pp-shot:focus-visible .pp-shot__img{outline:2px solid var(--clay);outline-offset:4px}
.pp-shot .slot{position:absolute;inset:0}
.pp-shot figcaption{display:flex;justify-content:space-between;gap:12px;margin-top:10px;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--earth-mid)}
.pp-shot figcaption em{font-family:var(--serif);font-style:italic;font-size:14px;letter-spacing:0;text-transform:none}
.pp-shot__date{display:none}
.pp-index{padding:0 0 var(--section)}
.pp-index .section-head{padding:0 var(--gutter);margin-bottom:28px}
.pp-index__strip{display:flex;gap:clamp(12px,1.6vw,22px);overflow-x:auto;padding:4px var(--gutter) 16px;scroll-padding:0 var(--gutter);scroll-snap-type:x proximity;scrollbar-width:thin;scrollbar-color:var(--sand-2) transparent}
.pp-index__item{flex:none;width:clamp(200px,20vw,260px);scroll-snap-align:start;color:var(--earth)}
.pp-index__item:hover{color:var(--earth)}
.pp-index__img{position:relative;aspect-ratio:4/3;border-radius:4px;overflow:hidden;background:var(--sand);margin-bottom:10px}
.pp-index__item h3{margin:0;font-family:var(--serif);font-weight:400;font-size:19px;line-height:1.1}
.pp-index__item span{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--clay)}
@media (max-width:720px){.pp-shot,.pp-shot--wide,.pp-shot--tall{grid-column:span 6}.pp-shot--tall .pp-shot__img{aspect-ratio:4/3}.pp-shot figcaption{font-size:10px}.pp-shot figcaption em{display:none}}

/* --------------------------------------------------------------------------
   Reduced motion
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .grain,.marquee__track,.quotes__track,.hero__hint i,.hero__blade>i,.hero__mote{animation:none!important}
  [data-reveal],[data-clip],[data-reveal][data-clip],.compare[data-reveal],.compare__veil,.form[data-reveal],.footer__big[data-reveal]{transition-duration:.01s;transition-delay:0s!important}
  .curtain,.svc__img,.svc-row__details,.faq__a{transition:none}
  .sprig use{animation:none!important}
  .drawer__panel,.dial__ring{transition:none}
}

/* --------------------------------------------------------------------------
   Shown state — kept last so it wins over every reveal variant above
   -------------------------------------------------------------------------- */
[data-reveal].is-shown{opacity:1;transform:none}
.is-shown[data-clip],.is-shown [data-clip]{clip-path:inset(0 0 0 0)}
