/* ===================================================================
   GRHA — Spaces, Composed
   Palette: ink #1E1C1A · travertine #E4DCCF · taupe #B8AB99
            bronze #8C6E4F · slate #4A4F50
   Fonts: Marcellus (display) · Manrope (body)
=================================================================== */

:root{
  --ink:#1E1C1A;
  --travertine:#E4DCCF;
  --taupe:#B8AB99;
  --bronze:#8C6E4F;
  --slate:#4A4F50;

  --ink-90:rgba(30,28,26,.9);
  --ink-70:rgba(30,28,26,.7);
  --trav-70:rgba(228,220,207,.7);
  --trav-40:rgba(228,220,207,.4);
  --hair:rgba(140,110,79,.45);     /* bronze hairline */

  --ff-display:'Marcellus', Georgia, serif;
  --ff-body:'Manrope', system-ui, sans-serif;

  --ease-out:cubic-bezier(.22,1,.36,1);
  --ease-in-out:cubic-bezier(.65,0,.35,1);
  --ease-expo:cubic-bezier(.16,1,.3,1);
  --t-micro:.15s; --t-base:.32s; --t-reveal:.8s; --t-curtain:1.2s;

  --pad:clamp(1.25rem,5vw,6rem);
  --maxw:1400px;
}

*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%;}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto;}}

body{
  margin:0;
  background:var(--ink);
  color:var(--travertine);
  font-family:var(--ff-body);
  font-weight:300;
  line-height:1.6;
  letter-spacing:.01em;
  overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
img,svg,video{display:block;max-width:100%;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;}
h1,h2,h3,h4{font-family:var(--ff-display);font-weight:400;margin:0;letter-spacing:.01em;line-height:1.05;}
::selection{background:var(--bronze);color:var(--travertine);}

:focus-visible{outline:2px solid var(--bronze);outline-offset:3px;border-radius:2px;}

.skip-link{
  position:fixed;top:-60px;left:1rem;z-index:9999;
  background:var(--bronze);color:var(--ink);padding:.6rem 1rem;border-radius:4px;
  transition:top var(--t-base) var(--ease-out);
}
.skip-link:focus{top:1rem;}

/* ---------- film grain ---------- */
.grain{
  position:fixed;inset:0;z-index:9000;pointer-events:none;opacity:.05;
  mix-blend-mode:overlay;
  /* drop assets/grain.png to override: */
  background-image:url("assets/grain.png");
  background-size:180px 180px;
}
.grain::after{ /* procedural fallback grain if png absent */
  content:"";position:absolute;inset:0;opacity:.6;
  background-image:
    radial-gradient(rgba(255,255,255,.18) .5px,transparent .5px),
    radial-gradient(rgba(0,0,0,.18) .5px,transparent .5px);
  background-size:3px 3px,4px 4px;
  background-position:0 0,1px 2px;
  animation:grainShift 1.2s steps(3) infinite;
}
@keyframes grainShift{
  0%{transform:translate(0,0)}33%{transform:translate(-2%,1%)}66%{transform:translate(1%,-2%)}100%{transform:translate(0,0)}
}
@media (prefers-reduced-motion:reduce){.grain::after{animation:none;}}

/* ---------- custom cursor ---------- */
.cursor{position:fixed;top:0;left:0;z-index:9500;pointer-events:none;mix-blend-mode:difference;
  opacity:0;transition:opacity var(--t-base);}
.cursor.is-active{opacity:1;}
.cursor__ring{position:absolute;width:38px;height:38px;border:1px solid var(--travertine);
  border-radius:50%;transform:translate(-50%,-50%);
  transition:width var(--t-base) var(--ease-out),height var(--t-base) var(--ease-out),
    background var(--t-base),border-color var(--t-base);}
.cursor__dot{position:absolute;width:4px;height:4px;background:var(--travertine);border-radius:50%;
  transform:translate(-50%,-50%);}
.cursor.is-hover .cursor__ring{width:60px;height:60px;background:rgba(228,220,207,.08);}
@media (hover:none),(pointer:coarse){.cursor{display:none!important;}}

/* ---------- preloader ---------- */
.preloader{position:fixed;inset:0;z-index:10000;background:var(--ink);
  display:grid;place-items:center;}
.preloader.is-done{pointer-events:none;}
.preloader__inner{text-align:center;}
.preloader__mark{width:min(60vw,340px);height:auto;overflow:visible;}
.preloader__text{font-family:var(--ff-display);font-size:64px;letter-spacing:.18em;
  fill:transparent;stroke:var(--travertine);stroke-width:.6;
  stroke-dasharray:1;stroke-dashoffset:1;
  paint-order:stroke;
  animation:draw 1.1s var(--ease-out) forwards, fillIn .5s var(--ease-out) .9s forwards;
}
@keyframes draw{to{stroke-dashoffset:0;}}
@keyframes fillIn{to{fill:var(--travertine);}}
.preloader__line{width:min(60vw,340px);height:1px;background:var(--hair);margin:1.4rem auto 0;overflow:hidden;}
.preloader__line span{display:block;height:100%;width:100%;background:var(--bronze);
  transform:scaleX(0);transform-origin:left;animation:loadLine 1.1s var(--ease-out) forwards;}
@keyframes loadLine{to{transform:scaleX(1);}}
.preloader__curtain{position:absolute;inset:0;background:var(--ink);transform:translateY(0);}
.preloader.is-leaving .preloader__curtain{
  animation:curtain var(--t-curtain) var(--ease-expo) forwards;}
.preloader.is-leaving .preloader__inner{opacity:0;transition:opacity .4s var(--ease-out);}
@keyframes curtain{to{transform:translateY(-100%);}}
@media (prefers-reduced-motion:reduce){
  .preloader__text{animation:none;fill:var(--travertine);stroke:none;}
  .preloader__line span{animation:none;transform:scaleX(1);}
}

/* ---------- header ---------- */
.header{position:fixed;top:0;left:0;right:0;z-index:5000;
  transition:transform var(--t-base) var(--ease-out),background var(--t-base);}
.header.is-hidden{transform:translateY(-110%);}
.header.is-scrolled{background:linear-gradient(var(--ink),rgba(30,28,26,0));
  backdrop-filter:blur(6px);}
.header__inner{max-width:var(--maxw);margin:0 auto;padding:1.3rem var(--pad);
  display:flex;align-items:center;justify-content:space-between;gap:2rem;}
.brand__mark{font-family:var(--ff-display);font-size:1.5rem;letter-spacing:.32em;
  padding-left:.32em;}
.nav{display:flex;gap:clamp(1rem,2.5vw,2.6rem);align-items:center;font-size:.82rem;
  text-transform:uppercase;letter-spacing:.16em;font-weight:400;}
.nav a{position:relative;padding:.4rem 0;color:var(--trav-70);transition:color var(--t-base);}
.nav a::after{content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--bronze);transform:scaleX(0);transform-origin:right;
  transition:transform var(--t-base) var(--ease-out);}
.nav a:hover{color:var(--travertine);}
.nav a:hover::after{transform:scaleX(1);transform-origin:left;}
.nav__cta{color:var(--travertine)!important;border:1px solid var(--hair);
  border-radius:40px;padding:.5rem 1.1rem!important;}
.nav__cta::after{display:none;}
.nav__cta:hover{background:var(--bronze);border-color:var(--bronze);color:var(--ink)!important;}

.nav-toggle{display:none;background:none;border:0;width:44px;height:44px;
  flex-direction:column;justify-content:center;gap:6px;padding:0;}
.nav-toggle span{display:block;height:1px;width:26px;background:var(--travertine);margin:0 auto;
  transition:transform var(--t-base) var(--ease-out),opacity var(--t-base);}
.nav-toggle[aria-expanded="true"] span:first-child{transform:translateY(3.5px) rotate(45deg);}
.nav-toggle[aria-expanded="true"] span:last-child{transform:translateY(-3.5px) rotate(-45deg);}

/* ---------- drawer ---------- */
.drawer{position:fixed;inset:0;z-index:4900;background:var(--ink);
  transform:translateX(100%);transition:transform var(--t-base) var(--ease-expo);
  display:flex;flex-direction:column;justify-content:center;padding:var(--pad);
  visibility:hidden;}
.drawer.is-open{transform:translateX(0);visibility:visible;}
.drawer__nav{display:flex;flex-direction:column;gap:.4rem;}
.drawer__nav a{font-family:var(--ff-display);font-size:clamp(2rem,9vw,3rem);
  padding:.4rem 0;color:var(--trav-70);transition:color var(--t-base),padding-left var(--t-base);}
.drawer__nav a:hover{color:var(--travertine);padding-left:.6rem;}
.drawer__cta{color:var(--bronze)!important;}
.drawer__foot{margin-top:auto;padding-top:2rem;border-top:1px solid var(--hair);
  display:flex;justify-content:space-between;flex-wrap:wrap;gap:1rem;color:var(--trav-70);
  font-size:.85rem;letter-spacing:.1em;}

/* ---------- media (video/placeholder) ---------- */
.media{position:absolute;inset:0;overflow:hidden;background:var(--ink);}
.media__video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;}
.media__placeholder{position:absolute;inset:0;background-size:200% 200%;}
.media__caption{position:absolute;left:1rem;bottom:1rem;z-index:3;
  font-size:.6rem;letter-spacing:.14em;text-transform:uppercase;color:var(--trav-40);
  background:var(--ink-70);padding:.25rem .5rem;border-radius:3px;pointer-events:none;}

/* animated gradient "videos" */
.media__placeholder--hero{
  background-image:linear-gradient(115deg,#1E1C1A,#3a352e,#8C6E4F,#4A4F50,#1E1C1A);
  animation:sweep 22s var(--ease-in-out) infinite;}
.media__placeholder--ridge{
  background-image:linear-gradient(120deg,#1E1C1A,#4A4F50,#8C6E4F,#2a2622);
  animation:sweep 26s var(--ease-in-out) infinite;}
.media__placeholder--garden{
  background-image:linear-gradient(125deg,#23241f,#4A4F50,#5d6b4a,#B8AB99,#23241f);
  animation:sweep 28s var(--ease-in-out) infinite;}
.media__placeholder--tower{
  background-image:linear-gradient(160deg,#1E1C1A,#34302b,#8C6E4F,#4A4F50,#15140f);
  animation:sweep 24s var(--ease-in-out) infinite;}
.media__placeholder--retreat{
  background-image:linear-gradient(135deg,#181a18,#2f3a39,#4A4F50,#8C6E4F,#181a18);
  animation:sweep 30s var(--ease-in-out) infinite;}
@keyframes sweep{
  0%{background-position:0% 50%}50%{background-position:100% 50%}100%{background-position:0% 50%}
}
@media (prefers-reduced-motion:reduce){.media__placeholder{animation:none!important;background-position:50% 50%!important;}}

/* ---------- hero ---------- */
.hero{position:relative;min-height:100dvh;display:flex;flex-direction:column;
  justify-content:flex-end;padding:0 var(--pad) clamp(4rem,12vh,9rem);overflow:hidden;}
.hero__scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(30,28,26,.55) 0%,rgba(30,28,26,.15) 35%,rgba(30,28,26,.8) 100%);}
.hero__content{position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;width:100%;}
.hero__eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.34em;color:var(--bronze);
  margin:0 0 1.4rem;}
.hero__title{font-size:clamp(2.6rem,8vw,7rem);line-height:1.02;max-width:14ch;}
.hero__sub{margin:1.8rem 0 0;max-width:46ch;font-size:clamp(1rem,1.6vw,1.2rem);color:var(--trav-70);}
.hero__title .line{display:block;overflow:hidden;padding-bottom:.06em;}
.hero__title .line__inner{display:block;transform:translateY(110%);}
.is-ready .hero__title .line:nth-child(1) .line__inner{animation:lineUp .9s var(--ease-expo) .15s forwards;}
.is-ready .hero__title .line:nth-child(2) .line__inner{animation:lineUp .9s var(--ease-expo) .3s forwards;}
@keyframes lineUp{to{transform:translateY(0);}}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:.6rem;font-size:.8rem;text-transform:uppercase;
  letter-spacing:.18em;padding:.95rem 1.8rem;border-radius:40px;transition:all var(--t-base) var(--ease-out);
  border:1px solid transparent;will-change:transform;}
.btn--ghost{margin-top:2.4rem;border-color:var(--hair);color:var(--travertine);}
.btn--ghost:hover{background:var(--travertine);color:var(--ink);border-color:var(--travertine);}
.btn--solid{background:var(--bronze);color:var(--ink);border-color:var(--bronze);}
.btn--solid:hover{background:var(--travertine);border-color:var(--travertine);}

/* scroll cue */
.scroll-cue{position:absolute;left:50%;bottom:2rem;transform:translateX(-50%);z-index:3;
  display:flex;flex-direction:column;align-items:center;gap:.7rem;color:var(--trav-70);
  font-size:.62rem;letter-spacing:.28em;text-transform:uppercase;}
.scroll-cue__line{width:1px;height:48px;background:linear-gradient(var(--bronze),transparent);
  position:relative;overflow:hidden;}
.scroll-cue__line::after{content:"";position:absolute;top:0;left:0;width:100%;height:40%;
  background:var(--travertine);animation:cueDrop 2.1s var(--ease-in-out) infinite;}
@keyframes cueDrop{0%{transform:translateY(-100%)}60%,100%{transform:translateY(250%)}}
@media (prefers-reduced-motion:reduce){.scroll-cue__line::after{animation:none;}}

/* ---------- reveal system ---------- */
[data-reveal]{opacity:0;transform:translateY(28px);
  transition:opacity var(--t-reveal) var(--ease-expo),transform var(--t-reveal) var(--ease-expo);}
[data-reveal][data-delay="1"]{transition-delay:.09s;}
[data-reveal][data-delay="2"]{transition-delay:.18s;}
[data-reveal][data-delay="3"]{transition-delay:.27s;}
[data-reveal][data-delay="4"]{transition-delay:.36s;}
[data-reveal].is-in{opacity:1;transform:none;}
@media (prefers-reduced-motion:reduce){
  [data-reveal]{opacity:1!important;transform:none!important;transition:none!important;}
  .line__inner{transform:none!important;animation:none!important;}
}

/* ---------- promise ---------- */
.promise{padding:clamp(6rem,16vh,12rem) var(--pad);max-width:var(--maxw);margin:0 auto;}
.promise__inner{max-width:60ch;margin:0 auto;text-align:center;}
.promise__eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.34em;color:var(--bronze);margin:0 0 1.4rem;}
.promise__title{font-size:clamp(2.4rem,6vw,4.6rem);}
.promise__title .word{display:inline-block;}
.promise__body{margin:2rem auto 0;color:var(--trav-70);font-size:clamp(1rem,1.5vw,1.18rem);}
.stats{display:flex;align-items:center;justify-content:center;gap:clamp(1.4rem,4vw,3.4rem);
  margin-top:3.4rem;flex-wrap:wrap;}
.stat{display:flex;flex-direction:column;gap:.4rem;}
.stat__num{font-family:var(--ff-display);font-size:clamp(2.2rem,5vw,3.4rem);color:var(--travertine);line-height:1;}
.stat__label{font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;color:var(--taupe);}
.stat__div{width:1px;height:40px;background:var(--hair);}

/* ---------- pillars ---------- */
.pillar{position:relative;min-height:100dvh;display:flex;flex-direction:column;
  justify-content:center;padding:clamp(5rem,12vh,8rem) var(--pad);overflow:hidden;
  border-top:1px solid var(--hair);}
.pillar__scrim{position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg,rgba(30,28,26,.7),rgba(30,28,26,.35) 40%,rgba(30,28,26,.85));}
.pillar__head{position:relative;z-index:2;max-width:var(--maxw);margin:0 auto;width:100%;}
.pillar__index{font-size:.78rem;text-transform:uppercase;letter-spacing:.3em;color:var(--bronze);margin:0 0 1rem;}
.pillar__title{font-size:clamp(2.6rem,8vw,6rem);}
.pillar__title .line{display:block;overflow:hidden;padding-bottom:.05em;}
.pillar__title .line__inner{display:block;transform:translateY(110%);
  transition:transform 1s var(--ease-expo);}
.pillar.is-in .pillar__title .line__inner{transform:translateY(0);}
@media (prefers-reduced-motion:reduce){.pillar__title .line__inner{transform:none;}}
.pillar__copy{margin:1.4rem 0 0;max-width:48ch;color:var(--trav-70);font-size:clamp(1rem,1.5vw,1.15rem);}

/* curation rail */
.rail{position:relative;z-index:2;max-width:var(--maxw);margin:3rem auto 0;width:100%;
  display:flex;gap:1.5rem;overflow-x:auto;scroll-snap-type:x mandatory;
  padding-bottom:1.2rem;-webkit-overflow-scrolling:touch;scrollbar-width:thin;
  scrollbar-color:var(--bronze) transparent;}
.rail::-webkit-scrollbar{height:4px;}
.rail::-webkit-scrollbar-thumb{background:var(--bronze);border-radius:4px;}
.rail::-webkit-scrollbar-track{background:rgba(228,220,207,.1);}
.card{position:relative;flex:0 0 clamp(260px,30vw,340px);scroll-snap-align:start;
  background:rgba(30,28,26,.5);border:1px solid var(--hair);border-radius:6px;overflow:hidden;
  text-align:left;color:inherit;display:flex;flex-direction:column;
  transition:transform var(--t-base) var(--ease-out),box-shadow var(--t-base);
  box-shadow:0 8px 30px rgba(0,0,0,.25);}
.card:hover{transform:translateY(-6px);box-shadow:0 22px 50px rgba(0,0,0,.45);}
.card__media{position:relative;aspect-ratio:4/3;overflow:hidden;}
.card__img{position:absolute;inset:0;background-size:cover;background-position:center;
  transition:transform .9s var(--ease-out);}
.card:hover .card__img{transform:scale(1.05);}
.card__lightsweep{position:absolute;inset:0;
  background:linear-gradient(105deg,transparent 30%,rgba(228,220,207,.25) 50%,transparent 70%);
  transform:translateX(-120%);}
.card.is-in .card__lightsweep{animation:lightsweep 1.4s var(--ease-expo) .2s forwards;}
@keyframes lightsweep{to{transform:translateX(120%);}}
@media (prefers-reduced-motion:reduce){.card__lightsweep{display:none;}}
.card__body{padding:1.2rem 1.3rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;}
.card__name{font-family:var(--ff-display);font-size:1.25rem;color:var(--travertine);}
.card__meta{display:flex;justify-content:space-between;gap:1rem;font-size:.75rem;
  color:var(--taupe);text-transform:uppercase;letter-spacing:.1em;}
.card__price{margin-top:.3rem;font-size:.9rem;color:var(--bronze);letter-spacing:.05em;}
.card__cta{margin-top:.6rem;font-size:.7rem;text-transform:uppercase;letter-spacing:.2em;
  color:var(--trav-70);display:inline-flex;align-items:center;gap:.5rem;}
.card__cta svg{width:14px;height:14px;transition:transform var(--t-base);}
.card:hover .card__cta svg{transform:translateX(4px);}
.card:hover .card__cta{color:var(--travertine);}

/* ---------- develop / siteplan ---------- */
.develop{padding:clamp(6rem,14vh,11rem) var(--pad);max-width:var(--maxw);margin:0 auto;}
.develop__head{text-align:center;max-width:60ch;margin:0 auto 3.5rem;}
.develop__eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.34em;color:var(--bronze);margin:0 0 1.2rem;}
.develop__title{font-size:clamp(2.2rem,5.5vw,4rem);}
.develop__sub{margin:1.2rem 0 0;color:var(--trav-70);}
.siteplan{display:grid;grid-template-columns:1.5fr 1fr;gap:1.5rem;align-items:stretch;}
.siteplan__map{position:relative;aspect-ratio:16/10;border:1px solid var(--hair);border-radius:8px;
  overflow:hidden;background:var(--ink);}
.siteplan__terrain{position:absolute;inset:0;
  background:
    radial-gradient(120% 90% at 30% 100%,#2a2723,transparent 60%),
    radial-gradient(100% 80% at 80% 0%,#3a352d,transparent 55%),
    linear-gradient(160deg,#23211d,#181613);}
.siteplan__contours{position:absolute;inset:0;width:100%;height:100%;}
.siteplan__contours path{fill:none;stroke:rgba(140,110,79,.3);stroke-width:.2;}
.siteplan__pin{position:absolute;width:44px;height:44px;transform:translate(-50%,-50%);
  background:none;border:0;display:grid;place-items:center;z-index:3;}
.siteplan__pin::before{content:"";width:14px;height:14px;border-radius:50%;
  background:var(--bronze);box-shadow:0 0 0 0 rgba(140,110,79,.6);
  transition:transform var(--t-base) var(--ease-out);
  animation:pinPulse 2.4s var(--ease-in-out) infinite;}
.siteplan__pin::after{content:attr(data-label);position:absolute;bottom:100%;left:50%;
  transform:translateX(-50%) translateY(-2px);white-space:nowrap;
  font-size:.62rem;text-transform:uppercase;letter-spacing:.16em;color:var(--travertine);
  background:var(--ink-90);padding:.25rem .55rem;border-radius:3px;border:1px solid var(--hair);
  opacity:0;pointer-events:none;transition:opacity var(--t-base);}
.siteplan__pin:hover::before,.siteplan__pin.is-active::before{transform:scale(1.4);background:var(--travertine);}
.siteplan__pin:hover::after,.siteplan__pin:focus-visible::after{opacity:1;}
@keyframes pinPulse{0%{box-shadow:0 0 0 0 rgba(140,110,79,.55)}70%{box-shadow:0 0 0 16px rgba(140,110,79,0)}100%{box-shadow:0 0 0 0 rgba(140,110,79,0)}}
@media (prefers-reduced-motion:reduce){.siteplan__pin::before{animation:none;}}

.siteplan__panel{border:1px solid var(--hair);border-radius:8px;padding:1.8rem;
  background:rgba(36,33,29,.5);min-height:100%;display:flex;flex-direction:column;}
.siteplan__empty{margin:auto;text-align:center;color:var(--taupe);}
.siteplan__hint{font-size:.9rem;max-width:24ch;}
.sp-detail{display:flex;flex-direction:column;gap:1rem;animation:fadeUp .5s var(--ease-out);}
@keyframes fadeUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.sp-detail__img{aspect-ratio:16/10;border-radius:6px;background-size:cover;background-position:center;}
.sp-detail__name{font-family:var(--ff-display);font-size:1.7rem;color:var(--travertine);}
.sp-detail__loc{font-size:.72rem;text-transform:uppercase;letter-spacing:.18em;color:var(--bronze);}
.sp-detail__specs{display:grid;grid-template-columns:repeat(3,1fr);gap:.8rem;
  border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:1rem 0;}
.sp-spec__num{font-family:var(--ff-display);font-size:1.5rem;color:var(--travertine);line-height:1;}
.sp-spec__label{font-size:.62rem;text-transform:uppercase;letter-spacing:.14em;color:var(--taupe);margin-top:.3rem;}
.sp-detail__plan{aspect-ratio:3/2;border:1px dashed var(--hair);border-radius:6px;
  display:grid;place-items:center;color:var(--taupe);font-size:.68rem;letter-spacing:.16em;
  text-transform:uppercase;
  background:repeating-linear-gradient(45deg,rgba(140,110,79,.06) 0 10px,transparent 10px 20px);}

/* ---------- viewing form ---------- */
.viewing{padding:clamp(6rem,14vh,11rem) var(--pad);border-top:1px solid var(--hair);}
.viewing__inner{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(2.5rem,6vw,6rem);align-items:start;}
.viewing__eyebrow{font-size:.8rem;text-transform:uppercase;letter-spacing:.34em;color:var(--bronze);margin:0 0 1.2rem;}
.viewing__title{font-size:clamp(2rem,4.5vw,3.4rem);}
.viewing__body{margin:1.4rem 0 0;color:var(--trav-70);max-width:42ch;}
.viewing__list{margin:1.8rem 0 0;padding:0;list-style:none;display:flex;flex-direction:column;gap:.8rem;}
.viewing__list li{position:relative;padding-left:1.6rem;color:var(--taupe);font-size:.95rem;}
.viewing__list li::before{content:"";position:absolute;left:0;top:.6em;width:8px;height:1px;background:var(--bronze);}

.form{position:relative;display:flex;flex-direction:column;gap:1.4rem;}
.field{display:flex;flex-direction:column;gap:.5rem;}
.field label{font-size:.72rem;text-transform:uppercase;letter-spacing:.18em;color:var(--taupe);}
.field input,.field select{background:transparent;border:0;border-bottom:1px solid var(--hair);
  color:var(--travertine);font-family:inherit;font-size:1rem;padding:.7rem 0;
  transition:border-color var(--t-base);min-height:44px;}
.field input:focus,.field select:focus{outline:none;border-color:var(--bronze);}
.field select option{background:var(--ink);color:var(--travertine);}
.field input::-webkit-calendar-picker-indicator{filter:invert(.7) sepia(1) hue-rotate(5deg);}
.field.is-error input,.field.is-error select{border-color:#b5563f;}
.field__err{font-size:.7rem;color:#d08a72;min-height:0;}
.form__success{position:absolute;inset:0;background:var(--ink);display:flex;flex-direction:column;
  align-items:center;justify-content:center;text-align:center;gap:1rem;padding:2rem;
  animation:fadeUp .5s var(--ease-out);}
.form__success h3{font-size:1.8rem;}
.form__success p{color:var(--trav-70);max-width:34ch;}
.form__check{width:64px;height:64px;}
.form__check circle{fill:none;stroke:var(--bronze);stroke-width:1.5;
  stroke-dasharray:140;stroke-dashoffset:140;animation:draw2 .7s var(--ease-out) forwards;}
.form__check path{fill:none;stroke:var(--travertine);stroke-width:2;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:40;stroke-dashoffset:40;animation:draw2 .5s var(--ease-out) .5s forwards;}
@keyframes draw2{to{stroke-dashoffset:0;}}
@media (prefers-reduced-motion:reduce){.form__check circle,.form__check path{animation:none;stroke-dashoffset:0;}}

/* ---------- press ---------- */
.press{padding:clamp(4rem,9vh,7rem) var(--pad);text-align:center;border-top:1px solid var(--hair);}
.press__eyebrow{font-size:.72rem;text-transform:uppercase;letter-spacing:.3em;color:var(--bronze);margin:0 0 2rem;}
.press__row{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;
  gap:clamp(1.5rem,5vw,4rem);}
.press__name{font-family:var(--ff-display);font-size:clamp(.9rem,1.6vw,1.3rem);
  letter-spacing:.16em;color:var(--taupe);opacity:.7;transition:opacity var(--t-base),color var(--t-base);}
.press__name:hover{opacity:1;color:var(--travertine);}

/* ---------- footer ---------- */
.footer{border-top:1px solid var(--hair);padding:clamp(4rem,9vh,6rem) var(--pad) 2rem;}
.footer__inner{max-width:var(--maxw);margin:0 auto;display:grid;grid-template-columns:1fr 2fr;
  gap:3rem;align-items:start;}
.footer__mark{font-family:var(--ff-display);font-size:2rem;letter-spacing:.3em;}
.footer__promise{margin:1rem 0 0;color:var(--taupe);font-size:1.1rem;font-family:var(--ff-display);}
.footer__cols{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;}
.footer__col h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.2em;color:var(--bronze);
  margin:0 0 1.2rem;font-family:var(--ff-body);font-weight:500;}
.footer__col a,.footer__col p{display:block;color:var(--trav-70);font-size:.92rem;margin-bottom:.6rem;
  transition:color var(--t-base);}
.footer__col a:hover{color:var(--travertine);}
.footer__social{display:flex;gap:1rem;margin-top:1rem;}
.footer__social a{border:1px solid var(--hair);border-radius:50%;width:38px;height:38px;
  display:grid;place-items:center;font-size:.7rem;letter-spacing:.05em;margin:0;}
.footer__social a:hover{background:var(--bronze);color:var(--ink);border-color:var(--bronze);}
.footer__base{max-width:var(--maxw);margin:3rem auto 0;padding-top:1.6rem;border-top:1px solid var(--hair);
  display:flex;justify-content:space-between;align-items:center;color:var(--taupe);font-size:.78rem;}
.footer__egg{background:none;border:0;color:var(--bronze);font-size:1.1rem;
  transition:transform .6s var(--ease-out),color var(--t-base);}
.footer__egg:hover{color:var(--travertine);transform:rotate(180deg) scale(1.2);}
.footer__egg.is-lit{animation:eggGlow 1.2s var(--ease-out);}
@keyframes eggGlow{0%{color:var(--bronze)}50%{color:#ffd9a0;text-shadow:0 0 18px #ffd9a0}100%{color:var(--bronze)}}

/* easter egg: daylight mode */
body.daylight{background:var(--travertine);color:var(--ink);transition:background .8s var(--ease-out),color .8s var(--ease-out);}
body.daylight .hero__scrim,body.daylight .pillar__scrim{background:linear-gradient(180deg,rgba(228,220,207,.4),rgba(228,220,207,.7));}
body.daylight .grain{mix-blend-mode:multiply;opacity:.04;}

/* ---------- modal ---------- */
.modal{position:fixed;inset:0;z-index:6000;display:none;}
.modal.is-open{display:block;}
.modal__backdrop{position:absolute;inset:0;background:rgba(15,14,12,.8);
  backdrop-filter:blur(4px);animation:fade .4s var(--ease-out);}
@keyframes fade{from{opacity:0}to{opacity:1}}
.modal__panel{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);
  width:min(900px,92vw);max-height:90dvh;overflow-y:auto;background:var(--ink);
  border:1px solid var(--hair);border-radius:8px;padding:clamp(1.5rem,4vw,3rem);
  animation:modalIn .5s var(--ease-expo);box-shadow:0 40px 100px rgba(0,0,0,.6);}
@keyframes modalIn{from{opacity:0;transform:translate(-50%,-46%)}to{opacity:1;transform:translate(-50%,-50%)}}
.modal__close{position:absolute;top:1rem;right:1.2rem;background:none;border:0;
  color:var(--travertine);font-size:1.8rem;line-height:1;width:44px;height:44px;}
.modal__close:hover{color:var(--bronze);}
.modal__gallery{display:grid;grid-template-columns:2fr 1fr;gap:.8rem;margin-bottom:1.6rem;}
.modal__gallery div{border-radius:6px;background-size:cover;background-position:center;aspect-ratio:4/3;}
.modal__gallery div:first-child{grid-row:span 2;aspect-ratio:auto;}
.modal__name{font-size:clamp(1.8rem,4vw,2.6rem);margin-bottom:.4rem;}
.modal__loc{font-size:.74rem;text-transform:uppercase;letter-spacing:.2em;color:var(--bronze);margin-bottom:1.4rem;}
.modal__story{color:var(--trav-70);max-width:60ch;margin-bottom:1.6rem;}
.modal__specs{display:flex;gap:clamp(1.4rem,4vw,3rem);flex-wrap:wrap;
  border-top:1px solid var(--hair);border-bottom:1px solid var(--hair);padding:1.4rem 0;margin-bottom:1.6rem;}
.modal__spec .n{font-family:var(--ff-display);font-size:1.8rem;color:var(--travertine);}
.modal__spec .l{font-size:.66rem;text-transform:uppercase;letter-spacing:.14em;color:var(--taupe);margin-top:.3rem;}
.modal__actions{display:flex;gap:1rem;flex-wrap:wrap;align-items:center;}
.modal__price{color:var(--bronze);font-size:1.1rem;}

/* =================================================================
   RESPONSIVE
================================================================= */
@media (max-width:1024px){
  .siteplan{grid-template-columns:1fr;}
  .siteplan__panel{min-height:auto;}
  .footer__inner{grid-template-columns:1fr;}
}
@media (max-width:768px){
  .nav{display:none;}
  .nav-toggle{display:flex;}
  .viewing__inner{grid-template-columns:1fr;}
  .modal__gallery{grid-template-columns:1fr;}
  .modal__gallery div:first-child{grid-row:auto;}
  .stat__div{display:none;}
  .stats{gap:2rem;}
  /* mobile: posters/static gradients only (no motion sweep on heavy panels handled in JS too) */
}
@media (max-width:480px){
  .footer__cols{grid-template-columns:1fr;}
  .footer__base{flex-direction:column;gap:1rem;}
  .card{flex:0 0 78vw;}
  .sp-detail__specs{grid-template-columns:repeat(3,1fr);}
}

/* hide placeholder asset filename captions */
.media__caption { display: none !important; }
