/* ==========================================================================
   OLAM by Plasseril — smooth-scroll editorial narrative
   Baseline rule: EVERYTHING in this stylesheet is visible by default.
   No element is ever left at opacity:0 waiting for a script. Motion start
   states are set from JS inside gsap.matchMedia(), which reverts them.
   ========================================================================== */

/* ---------- tokens ---------- */
:root{
  --gold-dark:#9E7D45;
  --gold:#BCA36D;
  --gold-light:#DAC28A;
  --teak:#6A4B25;
  --teak-deep:#4C2E1A;
  --cream:#F3EEE4;
  --cream-deep:#EAE3D5;
  --sand:#B5A188;
  --sage:#A29369;
  --green-deep:#454736;
  --green-darker:#33352A;
  --ink:#1A1712;

  --fg:var(--ink);          /* body text on cream — 15:1 */
  --fg-soft:var(--teak-deep); /* 10.6:1 on cream */
  --fg-quiet:var(--teak);     /* 6.9:1 on cream */
  --bg:var(--cream);
  --line:rgba(106,75,37,.18);
  --focus:var(--ink);

  --serif:'Cormorant Garamond','Iowan Old Style','Palatino Linotype',Georgia,serif;
  --sans:'Jost','Avenir Next','Segoe UI','Helvetica Neue',Arial,sans-serif;

  --nav-h:64px;
  --gutter:clamp(1.25rem,5vw,5.5rem);
  --maxw:1500px;
  --ease-out:cubic-bezier(.16,.68,.28,1);
}

/* dark chapters flip the token set, statically — never script-dependent */
.is-dark{
  --fg:var(--cream);
  --fg-soft:#DFD8CA;
  --fg-quiet:var(--gold-light);
  --bg:var(--green-deep);
  --line:rgba(218,194,138,.24);
  --focus:var(--cream);
  background-color:var(--green-deep);
  color:var(--fg);
}

/* ---------- Lenis (required stylesheet, inlined) ---------- */
html.lenis,html.lenis body{height:auto;}
.lenis.lenis-smooth{scroll-behavior:auto !important;}
.lenis.lenis-smooth [data-lenis-prevent]{overscroll-behavior:contain;}
.lenis.lenis-stopped{overflow:hidden;}
.lenis.lenis-smooth iframe{pointer-events:none;}

/* ---------- reset ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
body{
  margin:0;
  background:var(--cream);
  color:var(--ink);
  font-family:var(--sans);
  font-weight:400;
  font-size:clamp(1rem,.94rem + .28vw,1.0625rem);
  line-height:1.72;
  letter-spacing:.005em;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}
img{max-width:100%;height:auto;display:block;}
h1,h2,h3,p,ul,ol,figure,address,blockquote{margin:0;}
ul,ol{padding:0;list-style:none;}
address{font-style:normal;}
a{color:inherit;}
button{font:inherit;}
[id]{scroll-margin-top:calc(var(--nav-h) + 2rem);}

/* ---------- focus ---------- */
:focus{outline:none;}
:focus-visible{
  outline:2px solid var(--focus);
  outline-offset:3px;
  border-radius:2px;
}
.is-dark :focus-visible{outline-color:var(--cream);}

.skip-link{
  position:fixed;top:.5rem;left:.5rem;z-index:200;
  transform:translateY(-200%);
  background:var(--ink);color:var(--cream);
  padding:.7rem 1.1rem;border-radius:2px;
  font-size:.85rem;letter-spacing:.12em;text-transform:uppercase;text-decoration:none;
}
.skip-link:focus-visible{transform:translateY(0);outline-color:var(--gold-light);}

/* ---------- layout ---------- */
.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gutter);}
.section{position:relative;padding-block:clamp(5rem,11vw,10.5rem);}
.section__head{max-width:none;}

/* ---------- type ---------- */
.eyebrow{
  font-family:var(--sans);
  font-weight:400;
  font-size:.72rem;
  letter-spacing:.3em;
  text-transform:uppercase;
  color:var(--fg-quiet);
  margin-bottom:1.4rem;
}
.display{
  font-family:var(--serif);
  font-weight:300;
  line-height:1.06;
  letter-spacing:-.005em;
  font-size:clamp(2rem,1.3rem + 3.1vw,3.9rem);
  color:var(--fg);
  text-wrap:balance;
  max-width:15em;
}
.display--lg{font-size:clamp(2.3rem,1.35rem + 4.1vw,4.9rem);max-width:12em;}
.display em{font-style:italic;}

.rule{
  display:block;height:1px;width:min(220px,40%);
  background:var(--gold);
  transform-origin:left center;
  margin-block:clamp(1.75rem,3.5vw,2.75rem);
}
.rule--light{background:var(--gold-light);}

.prose{max-width:37em;color:var(--fg-soft);}
.prose>p+p{margin-top:1.35em;}
.prose__lead{
  font-family:var(--serif);
  font-weight:300;
  font-size:clamp(1.3rem,1.05rem + 1.05vw,1.85rem);
  line-height:1.42;
  color:var(--fg);
  letter-spacing:.002em;
}
.prose--light{color:var(--fg-soft);}

.ch,.wd{display:inline-block;will-change:auto;}

/* ---------- buttons ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.55rem;
  font-family:var(--sans);font-weight:400;
  font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
  text-decoration:none;line-height:1;
  padding:.75rem 1.15rem;border-radius:999px;
  border:1px solid transparent;
  cursor:pointer;
  transition:background-color .35s var(--ease-out),color .35s var(--ease-out),border-color .35s var(--ease-out),transform .35s var(--ease-out);
}
.btn--lg{padding:1rem 1.6rem;font-size:.82rem;}
.btn--full{width:100%;}
.btn--wa{background:var(--ink);color:var(--cream);}
.btn--wa:hover{background:var(--teak-deep);transform:translateY(-1px);}
.is-dark .btn--wa,.footer .btn--wa{background:var(--cream);color:var(--ink);}
.btn--ghost{background:transparent;color:var(--fg);border-color:var(--line);}
.btn--ghost:hover{border-color:var(--gold-dark);background:rgba(188,163,109,.12);}
.ico{width:1.05em;height:1.05em;fill:currentColor;flex:none;}

/* ---------- scroll progress (ripple motif) ---------- */
.progress{
  position:fixed;top:0;left:0;right:0;height:2px;z-index:120;
  background:rgba(106,75,37,.12);
  pointer-events:none;
}
.progress__bar{
  display:block;height:100%;width:100%;
  transform:scaleX(0);transform-origin:left center;
  background:linear-gradient(90deg,var(--gold-dark),var(--gold),var(--gold-light));
}

/* ---------- nav ---------- */
.nav{
  position:fixed;top:0;left:0;right:0;z-index:110;
  height:var(--nav-h);
  display:flex;align-items:center;gap:clamp(.75rem,2vw,2.5rem);
  padding-inline:clamp(1rem,4vw,3rem);
  background:rgba(243,238,228,.94);
  backdrop-filter:blur(14px) saturate(120%);
  -webkit-backdrop-filter:blur(14px) saturate(120%);
  border-bottom:1px solid rgba(158,125,69,.22);
}
.nav__brand{
  display:flex;align-items:center;gap:.65rem;
  text-decoration:none;color:var(--teak-deep);
  margin-right:auto;
}
.nav__mark{width:30px;height:30px;flex:none;}
.nav__name{
  display:flex;flex-direction:column;line-height:1;
  font-size:1.02rem;letter-spacing:.28em;text-transform:uppercase;font-weight:400;
}
.nav__name-sub{
  font-size:.5rem;letter-spacing:.24em;color:var(--teak);
  margin-top:.34rem;
}
.nav__links{display:flex;gap:clamp(1rem,2vw,2.1rem);}
.nav__links a{
  position:relative;text-decoration:none;
  font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;
  color:var(--teak-deep);
  padding-block:.4rem;
}
.nav__links a::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;
  background:var(--gold-dark);
  transform:scaleX(0);transform-origin:right center;
  transition:transform .45s var(--ease-out);
}
.nav__links a:hover::after,.nav__links a:focus-visible::after{transform:scaleX(1);transform-origin:left center;}
.nav__cta{flex:none;}

@media (max-width:900px){
  .nav__links{display:none;}
  .nav__cta span{display:none;}
  .nav__cta{padding:.7rem;}
  .ico{width:1.15rem;height:1.15rem;}
}

/* ---------- hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  min-height:100svh;
  display:flex;align-items:flex-end;
  overflow:hidden;
  background:var(--ink);
}
.hero__frame{
  position:absolute;inset:0;
  clip-path:inset(0% 0% 0% 0%);
  overflow:hidden;
}
.hero__figure{position:absolute;inset:0;}
.hero__figure img{width:100%;height:100%;object-fit:cover;object-position:50% 52%;}
.hero__scrim{
  position:absolute;inset:0;
  background:
    linear-gradient(to top,rgba(18,16,11,.90) 0%,rgba(18,16,11,.80) 20%,rgba(18,16,11,.60) 38%,rgba(18,16,11,.30) 56%,rgba(18,16,11,.06) 76%,transparent 90%),
    linear-gradient(to right,rgba(18,16,11,.72) 0%,rgba(18,16,11,.55) 34%,rgba(18,16,11,.34) 56%,rgba(18,16,11,.12) 76%,transparent 88%),
    linear-gradient(to bottom,rgba(18,16,11,.34) 0%,transparent 20%);
}
.hero__copy{
  position:relative;z-index:2;
  padding:0 var(--gutter) clamp(4.5rem,10vw,7.5rem);
  width:100%;max-width:var(--maxw);margin-inline:auto;
}
.hero__wordmark{
  margin:0 0 1.6rem;
  position:relative;
}
/* The facade behind "BY PLASSERIL" is near-white, and gold on white is
   unreadable. A soft elliptical pool of shade keeps the lockup legible
   without flattening the photograph. */
.hero__wordmark::before{
  content:"";
  position:absolute;
  left:-6%;right:-6%;top:-38%;bottom:-46%;
  background:radial-gradient(60% 130% at 24% 50%,rgba(18,16,11,.62) 0%,rgba(18,16,11,.42) 42%,rgba(18,16,11,.16) 68%,transparent 82%);
  pointer-events:none;
  z-index:-1;
}
.hero__wordmark img{
  width:clamp(220px,34vw,460px);height:auto;
}
.hero__tagline{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(1.25rem,1rem + 1.1vw,1.85rem);
  line-height:1.46;
  color:#F6F2EA;
  max-width:30ch;
  text-shadow:0 1px 24px rgba(12,10,7,.7);
}
.hero__meta{
  display:flex;flex-wrap:wrap;gap:.7rem;
  margin-top:clamp(1.5rem,3vw,2.4rem);
  font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;
  color:#E4DCCB;
}
.hero__cue{
  position:absolute;right:var(--gutter);bottom:clamp(4.5rem,10vw,7.5rem);z-index:2;
  display:flex;align-items:center;gap:.7rem;
  font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:#E4DCCB;
}
.hero__cue-line{
  display:block;width:56px;height:1px;background:var(--gold-light);
  transform-origin:right center;
}
@media (max-width:700px){
  .hero__cue{display:none;}
  .hero__scrim{
    background:
      linear-gradient(to top,rgba(18,16,11,.93) 0%,rgba(18,16,11,.88) 24%,rgba(18,16,11,.74) 44%,rgba(18,16,11,.46) 60%,rgba(18,16,11,.14) 80%,transparent 93%),
      linear-gradient(to bottom,rgba(18,16,11,.34) 0%,transparent 22%);
  }
  .hero__wordmark img{width:min(200px,62vw);}
}

/* ---------- welcome ---------- */
.section--welcome{padding-top:clamp(4.5rem,9vw,8rem);}
.aside{
  display:flex;align-items:flex-start;gap:1.1rem;
  margin-top:clamp(2.5rem,5vw,4rem);
  padding-top:1.6rem;
  border-top:1px solid var(--line);
  max-width:52ch;
  color:var(--fg-quiet);
  font-size:.94rem;
}
.aside__mark{width:34px;height:34px;flex:none;opacity:.9;margin-top:.15rem;}
.aside em{font-family:var(--serif);font-style:italic;font-size:1.15em;color:var(--teak-deep);}

.welcome__plate{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(1.25rem,3vw,2.5rem);
  margin-top:clamp(3.5rem,8vw,7rem);
}
@media (min-width:900px){
  .welcome__plate{grid-template-columns:1.28fr 1fr;align-items:start;}
}
.plate{overflow:hidden;background:var(--cream-deep);border-radius:1px;}
.plate img{width:100%;height:100%;object-fit:cover;}
.plate{aspect-ratio:4/3;}
.plate--offset{aspect-ratio:3/4;}
@media (min-width:900px){.plate--offset{margin-top:clamp(3rem,8vw,7rem);}}

/* parallax layers get a viewport-taller inner image so travel never shows edges */
.js-depth img{will-change:auto;}

/* ---------- rooms: sticky media column ---------- */
.section--rooms{background:var(--cream);}
.rooms{margin-top:clamp(2.5rem,5vw,4.5rem);}
.rooms__frame{
  position:relative;
  aspect-ratio:4/3;
  overflow:hidden;
  background:var(--cream-deep);
}
.room-shot{margin:0;}
.room-shot img{width:100%;height:100%;object-fit:cover;}
.rooms__counter{
  display:none;
  margin-top:1rem;
  align-items:center;gap:.7rem;
  font-size:.7rem;letter-spacing:.24em;color:var(--teak);
  font-variant-numeric:tabular-nums;
}
.rooms__counter-sep{display:block;width:34px;height:1px;background:var(--line);}

.room-note{
  padding-block:clamp(1.5rem,3vw,2.25rem);
  border-top:1px solid var(--line);
  max-width:46ch;
}
.room-note:first-child{border-top:0;padding-top:0;}
.room-note h3{
  font-family:var(--serif);font-weight:400;
  font-size:clamp(1.4rem,1.1rem + 1vw,1.9rem);
  line-height:1.2;
  color:var(--teak-deep);
  margin-bottom:.7rem;
}
.room-note p{color:var(--fg-soft);}

/* Default (and reduced-motion) layout: one flat interleaved stack —
   photo, its paragraph, photo, its paragraph. Nothing hidden, nothing sticky. */
.rooms{display:grid;grid-template-columns:1fr;max-width:900px;}
.rooms__media,.rooms__sticky,.rooms__frame,.rooms__text{display:contents;}
.rooms__frame{aspect-ratio:auto;overflow:visible;background:none;}
.room-shot{
  aspect-ratio:4/3;overflow:hidden;background:var(--cream-deep);
  margin-bottom:clamp(1rem,3vw,1.75rem);
}
.room-shot[data-shot="0"]{order:1}  .room-note[data-note="0"]{order:2}
.room-shot[data-shot="1"]{order:3}  .room-note[data-note="1"]{order:4}
.room-shot[data-shot="2"]{order:5}  .room-note[data-note="2"]{order:6}
.room-shot[data-shot="3"]{order:7}  .room-note[data-note="3"]{order:8}
.room-shot[data-shot="4"]{order:9}  .room-note[data-note="4"]{order:10}
.room-note{margin-bottom:clamp(1.5rem,4vw,2.5rem);}

@media (min-width:1000px) and (prefers-reduced-motion:no-preference){
  .rooms{
    max-width:none;
    grid-template-columns:minmax(0,1.16fr) minmax(0,.84fr);
    gap:clamp(2.5rem,5vw,6rem);
    align-items:stretch;   /* the media column must be able to stretch to the
                              row height, or position:sticky has nowhere to go */
  }
  .rooms__media{display:block;}
  .rooms__sticky{
    display:block;
    position:sticky;
    top:calc(var(--nav-h) + clamp(1.5rem,5vh,4rem));
  }
  .rooms__frame{display:block;position:relative;aspect-ratio:4/3;overflow:hidden;background:var(--cream-deep);}
  .rooms__text{display:block;padding-block:clamp(2rem,8vh,5rem) 0;}
  .rooms__counter{display:flex;}
  /* stacked crossfade — the first shot carries .is-active in the markup, so a
     page whose scripts never arrive still shows one complete photograph */
  .rooms .room-shot{
    position:absolute;inset:0;margin:0;order:0;
    aspect-ratio:auto;
    opacity:0;visibility:hidden;
  }
  .rooms .room-shot.is-active{opacity:1;visibility:visible;}
  .room-note{
    min-height:62vh;order:0;margin-bottom:0;
    display:flex;flex-direction:column;justify-content:center;
    padding-block:2rem;
  }
  .room-note:first-child{padding-top:2rem;border-top:1px solid var(--line);}
  .room-note:last-child{min-height:42vh;}
}

/* ---------- common spaces ---------- */
.section__head--split{display:grid;gap:clamp(1.25rem,3vw,3rem);}
@media (min-width:900px){
  .section__head--split{grid-template-columns:1.35fr 1fr;align-items:end;}
}
.section__head-note{color:var(--fg-soft);max-width:42ch;}

.spaces{
  display:grid;
  grid-template-columns:1fr;
  gap:clamp(1.5rem,4vw,3.5rem);
  margin-top:clamp(2rem,5vw,4rem);
}
@media (min-width:900px){
  .spaces{grid-template-columns:repeat(12,1fr);gap:clamp(1.5rem,3vw,3rem) clamp(1.5rem,3vw,3rem);}
  .space--tall{grid-column:1/8;}
  .space--small{grid-column:9/13;align-self:end;}
  .space--wide{grid-column:4/13;}
  .space--push{grid-column:1/5;align-self:start;margin-top:clamp(1rem,4vw,4rem);}
  .space--portrait{grid-column:5/9;}
  .space--landing{grid-column:9/13;align-self:end;}
}
.space{margin:0;position:relative;}
.space__frame{
  display:block;overflow:hidden;
  background:var(--cream-deep);
  aspect-ratio:4/3;
}
.space--portrait .space__frame{aspect-ratio:3/4;}
.space img{width:100%;height:100%;object-fit:cover;}
.space figcaption{
  margin-top:.85rem;
  font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;
  color:var(--teak);
}

/* ---------- facilities ---------- */
.section--facilities{padding-bottom:clamp(7rem,14vw,12rem);}
.section--facilities>.wrap{position:relative;z-index:2;}
.facilities{position:relative;margin-top:clamp(2.5rem,5vw,4rem);padding-left:clamp(1.25rem,3vw,2.75rem);}
.facilities__spine{
  position:absolute;left:0;top:.4rem;bottom:.4rem;width:1px;
  background:var(--gold);
  transform:scaleY(1);transform-origin:top center;
}
.facilities__list{
  display:grid;grid-template-columns:1fr;
  gap:0;
}
@media (min-width:820px){
  .facilities__list{grid-template-columns:1fr 1fr;column-gap:clamp(2rem,5vw,5rem);}
}
.fac{
  display:grid;
  grid-template-columns:2.4rem 1fr;
  align-items:baseline;gap:.75rem;
  padding-block:clamp(.85rem,1.6vw,1.15rem);
  border-bottom:1px solid var(--line);
}
.fac__n{
  font-size:.7rem;letter-spacing:.16em;color:var(--gold-dark);
  font-variant-numeric:tabular-nums;
}
.fac__t{
  font-family:var(--serif);
  font-size:clamp(1.1rem,.98rem + .5vw,1.4rem);
  font-weight:400;line-height:1.32;
  color:var(--teak-deep);
}

/* ---------- colour wash bands (cream <-> green transition) ---------- */
.wash{
  position:absolute;left:0;right:0;
  height:clamp(64px,12vh,150px);
  transform:scaleY(0);
  pointer-events:none;
}
.wash--green{bottom:0;transform-origin:bottom center;background:var(--green-deep);}
.wash--cream{bottom:0;transform-origin:bottom center;background:var(--cream);}

/* ---------- Munroe Island (dark) ---------- */
.section--island{overflow:hidden;}
.section--island .wrap{position:relative;z-index:2;}
.ripple{
  position:absolute;
  top:clamp(-140px,-8vw,-40px);right:-14vw;
  width:min(58vw,720px);aspect-ratio:1;
  z-index:1;pointer-events:none;
}
.ripple span{
  position:absolute;inset:0;margin:auto;
  border:1px solid rgba(218,194,138,.22);
  border-radius:50%;
}
.ripple span:nth-child(1){width:100%;height:100%;}
.ripple span:nth-child(2){width:68%;height:68%;}
.ripple span:nth-child(3){width:40%;height:40%;}

.island__grid{
  display:grid;grid-template-columns:1fr;
  gap:clamp(2.5rem,5vw,4.5rem);
  margin-top:clamp(3rem,6vw,5.5rem);
  position:relative;z-index:2;
}
@media (min-width:960px){
  .island__grid{grid-template-columns:1.1fr .9fr;align-items:start;}
}
.island__list li{
  display:grid;gap:.5rem;
  padding-block:clamp(1.25rem,2.5vw,1.75rem);
  border-top:1px solid var(--line);
}
.island__k{
  font-size:.72rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold-light);
}
.island__v{color:#DFD8CA;max-width:52ch;}

.photo-gap{
  border:1px dashed rgba(218,194,138,.42);
  padding:clamp(1.75rem,4vw,3rem);
  display:flex;flex-direction:column;align-items:flex-start;gap:.9rem;
  aspect-ratio:auto;
  background:rgba(26,23,18,.16);
}
@media (min-width:960px){.photo-gap{min-height:22rem;justify-content:center;}}
.photo-gap__mark{width:52px;height:52px;opacity:.85;}
.photo-gap__label{
  font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--gold-light);
}
.photo-gap__body{color:#DFD8CA;max-width:36ch;font-size:.95rem;}

/* ---------- getting here ---------- */
.journey{position:relative;margin-top:clamp(2.5rem,5vw,4rem);padding-left:clamp(1.4rem,3vw,2.5rem);}
.journey__line{
  position:absolute;left:0;top:.9rem;bottom:.9rem;width:1px;
  background:var(--gold);
  transform:scaleY(1);transform-origin:top center;
}
.leg{
  position:relative;
  display:grid;
  grid-template-columns:1fr;
  gap:.35rem;
  padding-block:clamp(1.5rem,3vw,2.25rem);
  border-bottom:1px solid var(--line);
}
@media (min-width:760px){
  .leg{grid-template-columns:9rem minmax(0,26ch) 1fr;align-items:baseline;gap:.35rem clamp(1.5rem,3vw,3rem);}
}
.leg__dot{
  position:absolute;left:calc(-1 * clamp(1.4rem,3vw,2.5rem) - 3px);
  top:calc(clamp(1.5rem,3vw,2.25rem) + .55em);
  width:7px;height:7px;border-radius:50%;
  background:var(--gold-dark);
}
.leg__dist{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(1.6rem,1.2rem + 1.6vw,2.5rem);
  line-height:1;color:var(--teak-deep);
  font-variant-numeric:tabular-nums;
}
.leg__place{color:var(--fg);font-size:1.02rem;}
.leg__note{color:var(--fg-quiet);font-size:.94rem;}
.journey__addr{
  margin-top:clamp(2rem,4vw,3rem);
  color:var(--fg-quiet);font-size:.94rem;max-width:70ch;
}
.journey__addr a{color:var(--teak-deep);text-underline-offset:.28em;text-decoration-color:var(--gold);}

/* ---------- enquiry ---------- */
.section--enquire{background:var(--cream-deep);}
.enquire{display:grid;grid-template-columns:1fr;gap:clamp(2.5rem,6vw,5.5rem);}
@media (min-width:960px){.enquire{grid-template-columns:1fr 1fr;align-items:start;}}
.enquire__intro .prose__lead{margin-top:1.4rem;}
.enquire__actions{
  display:flex;flex-wrap:wrap;gap:.75rem;
  margin-top:clamp(1.75rem,4vw,2.75rem);
}
.form{
  background:var(--cream);
  padding:clamp(1.5rem,3.5vw,2.5rem);
  border:1px solid var(--line);
  display:grid;gap:1.1rem;
}
.form__title{
  font-family:var(--serif);font-size:1.35rem;font-weight:400;color:var(--teak-deep);
  margin-bottom:.25rem;
}
.form__row{display:grid;grid-template-columns:1fr;gap:1.1rem;}
@media (min-width:520px){.form__row{grid-template-columns:1fr 1fr;}}
.field{display:grid;gap:.4rem;}
.field label{
  font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;color:var(--teak);
}
.field input,.field textarea{
  font:inherit;font-size:.98rem;
  color:var(--ink);
  background:var(--cream);
  border:1px solid rgba(106,75,37,.34);
  border-radius:2px;
  padding:.7rem .8rem;
  width:100%;
  transition:border-color .3s var(--ease-out);
}
.field textarea{resize:vertical;min-height:5.5rem;}
.field input:hover,.field textarea:hover{border-color:var(--gold-dark);}
.field input::placeholder,.field textarea::placeholder{color:#8A7658;opacity:1;}
.form__note{font-size:.82rem;color:var(--teak);line-height:1.6;}

/* ---------- footer ---------- */
.footer{background:var(--green-darker);padding-block:clamp(3.5rem,8vw,6rem) 2rem;}
.footer.is-dark{--bg:var(--green-darker);background-color:var(--green-darker);}
.footer__grid{
  display:grid;grid-template-columns:1fr;
  gap:clamp(2rem,4vw,3rem);
}
@media (min-width:700px){.footer__grid{grid-template-columns:1fr 1fr;}}
@media (min-width:1100px){.footer__grid{grid-template-columns:1.2fr 1fr 1fr 1fr;}}
.footer__brand img{width:clamp(120px,13vw,168px);height:auto;}
.footer__signoff{
  margin-top:1.1rem;
  font-family:var(--serif);font-size:1.2rem;color:var(--gold-light);
}
.footer__h{
  font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;
  color:var(--gold-light);font-weight:400;
  margin-bottom:1rem;
}
.footer__col p{margin-bottom:.45rem;color:#DFD8CA;font-size:.95rem;}
.footer__col address{color:#DFD8CA;font-size:.95rem;line-height:1.75;margin-bottom:.7rem;}
.footer__small{color:#C6BEAE !important;font-size:.85rem !important;line-height:1.7;}
.footer a{color:#F0EADD;text-decoration-color:rgba(218,194,138,.55);text-underline-offset:.25em;}
.footer a:hover{text-decoration-color:var(--gold-light);}
.badge{
  display:inline-flex;align-items:center;gap:.5rem;
  border:1px solid rgba(218,194,138,.4);
  border-radius:999px;
  padding:.35rem .8rem .35rem .6rem;
  font-size:.78rem;letter-spacing:.08em;
  color:#F0EADD !important;
}
.badge__dot{width:6px;height:6px;border-radius:50%;background:var(--gold-light);flex:none;}
.footer__base{
  display:flex;flex-wrap:wrap;gap:1rem;justify-content:space-between;
  margin-top:clamp(2.5rem,6vw,4.5rem);
  padding-top:1.5rem;
  border-top:1px solid rgba(218,194,138,.2);
  font-size:.8rem;color:#C6BEAE;
}

/* ==========================================================================
   REDUCED MOTION — the page must be complete and readable with zero script.
   Lenis is never constructed and no ScrollTrigger is created (see script.js);
   here we make sure no layout depends on a class a script would have added.
   ========================================================================== */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
    scroll-behavior:auto !important;
  }
  /* the sticky crossfade column never engages (its media query requires
     no-preference), so the interleaved stack above is what renders. */
  .wash{display:none;}
  .progress{display:none;}
  .hero__frame{clip-path:none;}
}
