/* =========================================================
   THE RETREAT AT GREENTREE — SIGNATURE SITE
   19 Greentree Lane, Chester, NY 10918
   Brand: Dune / Stone / Mist / Shadow
   Type:  Cormorant Garamond (Light + Light Italic) + Courier Prime
   ========================================================= */

/* ---------- FONTS ---------- */
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('../fonts/CormorantGaramond-Light.ttf') format('truetype');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Cormorant Garamond';
  src: url('../fonts/CormorantGaramond-LightItalic.ttf') format('truetype');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'Courier Prime';
  src: url('../fonts/CourierPrime-Regular.ttf') format('truetype');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}

/* ---------- TOKENS ---------- */
:root {
  /* TYPOGRAPHY */
  --display: 'Cormorant Garamond', 'EB Garamond', Garamond, Georgia, serif;
  --body:    'Courier Prime', 'Courier New', ui-monospace, monospace;

  --type-h1: 88px;
  --type-h2: 60px;
  --type-h3: 44px;
  --type-h4: 32px;
  --type-h5: 22px;
  --type-sub: 22px;
  --type-body-l: 17px;
  --type-body-m: 15px;
  --type-body-s: 13px;
  --type-body-xs: 11px;

  --type-h1-mobile: 48px;
  --type-h2-mobile: 36px;
  --type-h3-mobile: 28px;
  --type-h4-mobile: 22px;

  /* Cormorant Garamond Italic has very generous built-in line-gap metrics,
     so an explicit 110% ratio renders visually closer to 130%. Compensate
     by setting the CSS line-height tight (0.95–1.0) to land on optical 110%. */
  --lh-display: 0.95;
  --lh-h5: 1.25;
  --lh-body: 1.4;
  --lh-tight: 1.0;

  /* COLOR — brand guide: Dune / Stone / Mist / Shadow */
  --shadow:     #322F29;
  --dune:       #9D8972;
  --stone:      #8A8274;
  --mist:       #D8D0C7;  /* Salted Sand — brand neutral (was off-brand #D6D4CC) */
  --paper:      #FBF9F5;  /* Pearl — brand warm paper (was off-brand #F2EFE7) */

  --bg-base:    var(--paper);
  --bg-soft:    var(--mist);
  --bg-accent:  var(--shadow);
  --ink:        var(--shadow);
  --ink-soft:   rgba(50, 47, 41, 0.78);
  --ink-muted:  rgba(50, 47, 41, 0.56);
  --on-accent:  var(--paper);
  --brand:      var(--dune);
  --accent:     var(--stone);
  --rule:       rgba(50, 47, 41, 0.18);
  --rule-soft:  rgba(50, 47, 41, 0.08);
  --rule-light: rgba(251, 249, 245, 0.28);

  /* LAYOUT */
  --container: 1480px;
  --margin-x-web: 64px;
  --margin-x-mobile: 24px;
  --section-y-web: 112px;
  --section-y-mobile: 48px;
  --breakpoint: 768px;
  --gutter: var(--margin-x-web);

  /* MEDIA RADIUS — sharp per designer */
  --media-radius: 0;

  /* MOTION */
  --ease:      cubic-bezier(0.4, 0, 0.18, 1);
  --ease-out:  cubic-bezier(0.16, 0.84, 0.36, 1);
  --duration-slow: 1200ms;
  --duration-med:  500ms;
  --duration-fast: 250ms;
}

@media (max-width: 767px) {
  :root {
    --gutter: var(--margin-x-mobile);
    --type-h1: var(--type-h1-mobile);
    --type-h2: var(--type-h2-mobile);
    --type-h3: var(--type-h3-mobile);
    --type-h4: var(--type-h4-mobile);
  }
}

/* ---------- RESET ---------- */
* { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  font-family: var(--body);
  color: var(--ink);
  background: var(--bg-base);
  font-size: var(--type-body-s);
  line-height: var(--lh-body);
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button { font-family: inherit; cursor: pointer; }

/* ---------- TYPE BASE ----------
   Per brand guide: HEADERS = Cormorant Garamond Light ITALIC, Title Case.
   SUB-HEADERS = Cormorant Garamond Light (non-italic), Sentence Case.
   BODY = Courier Prime, sentence case.
   CTAs/labels = Courier Prime, UPPER CASE.
*/
h1, h2, h3, h4 {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-synthesis: none;
  line-height: var(--lh-display);
  margin: 0;
  letter-spacing: -0.005em;
}
h5, h6, .subhead {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-synthesis: none;
  line-height: var(--lh-h5);
  margin: 0;
  letter-spacing: 0;
}
h1 { font-size: var(--type-h1); }
h2 { font-size: var(--type-h2); }
h3 { font-size: var(--type-h3); }
h4 { font-size: var(--type-h4); }
h5 { font-size: var(--type-h5); }

p {
  font-size: var(--type-body-s);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0 0 1em;
  text-wrap: pretty;
}

/* "Hairline" — uppercase Courier label */
.hairline {
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--ink-muted);
}

/* ---------- LAYOUT ---------- */
.container {
  max-width: var(--container);
  margin: 0 auto;
  padding-left: var(--gutter);
  padding-right: var(--gutter);
}
.section {
  padding-top: var(--section-y-web);
  padding-bottom: var(--section-y-web);
  position: relative;
}
@media (max-width: 767px) {
  .section {
    padding-top: var(--section-y-mobile);
    padding-bottom: var(--section-y-mobile);
  }
}
.section--inverted { background: var(--bg-accent); color: var(--on-accent); }
.section--inverted p { color: rgba(251, 249, 245, 0.78); }
.section--soft { background: var(--bg-soft); }

/* ---------- BUTTON ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  gap: 14px;
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.24em;
  text-transform: uppercase;
  padding: 16px 28px;
  border: 1px solid currentColor;
  background: transparent;
  color: var(--ink);
  cursor: pointer;
  transition: background var(--duration-med) var(--ease),
              color var(--duration-med) var(--ease);
}
.btn:hover, .btn:focus-visible {
  background: var(--ink);
  color: var(--bg-base);
  outline: none;
}
.btn--inverse {
  color: var(--bg-base);
}
.btn--inverse:hover, .btn--inverse:focus-visible {
  background: var(--bg-base);
  color: var(--ink);
}
.btn--solid {
  background: var(--ink);
  color: var(--bg-base);
}
.btn--solid:hover, .btn--solid:focus-visible {
  background: transparent;
  color: var(--ink);
  border-color: var(--ink);
}

/* =========================================================
   NAV — CENTER LOGO
   Overlay mode on the home hero; stacked mode on residence.
   ========================================================= */
.nav {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  padding: 24px var(--gutter);
  display: grid;
  grid-template-columns: 1fr auto 1fr;
  align-items: center;
  gap: 24px;
  border-bottom: 1px solid transparent;
  transition: padding 400ms var(--ease),
              background 400ms var(--ease),
              color 400ms var(--ease),
              border-color 400ms var(--ease);
}

/* OVERLAY MODE — sits transparent on top of hero photo, light text */
.nav--overlay {
  background: transparent;
  color: var(--paper);
}
.nav--overlay .nav__logo--light { display: block; }
.nav--overlay .nav__logo--dark  { display: none; }
/* Force pure white for the brand mark over the photo for max legibility. */
.nav--overlay .nav__logo--light {
  filter: brightness(0) invert(1);
}

/* STACKED MODE (default on inner pages) — transparent at top, cream on scroll */
.nav--stacked {
  background: transparent;
  color: var(--ink);
  border-bottom-color: transparent;
}
.nav--stacked.is-scrolled {
  background: rgba(251, 249, 245, 0.96);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  border-bottom-color: var(--rule-soft);
}
.nav--stacked .nav__logo--light { display: none; }
.nav--stacked .nav__logo--dark  { display: block; }

/* SCROLLED state on overlay nav — switches to opaque cream */
.nav--overlay.is-scrolled {
  background: rgba(251, 249, 245, 0.96);
  backdrop-filter: blur(20px);
  -webkit-backdrop-filter: blur(20px);
  color: var(--ink);
  border-bottom-color: var(--rule-soft);
  padding-top: 14px;
  padding-bottom: 14px;
}
.nav--overlay.is-scrolled .nav__logo--light { display: none; }
.nav--overlay.is-scrolled .nav__logo--dark  { display: block; }

.nav--stacked.is-scrolled { padding-top: 14px; padding-bottom: 14px; }

.nav__links {
  display: flex;
  gap: 36px;
  align-items: center;
}
.nav__links--left { justify-self: end; }
.nav__links--right {
  /* Lives inside .nav__right with the Inquire button — cluster against
     the logo on the left side of that cell. */
}
.nav__link {
  font-family: var(--body);
  font-size: 13px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: currentColor;
  opacity: 0.9;
  position: relative;
  padding: 8px 0;
  transition: opacity 300ms var(--ease);
}
.nav__link:hover, .nav__link.is-active { opacity: 1; }
.nav__link::after {
  content: '';
  position: absolute;
  left: 0; bottom: 2px;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 500ms var(--ease-out);
}
.nav__link:hover::after, .nav__link.is-active::after { transform: scaleX(1); }

.nav__brand { justify-self: center; }
.nav__brand img {
  height: 56px;
  width: auto;
  transition: height 400ms var(--ease);
}
.nav.is-scrolled .nav__brand img { height: 42px; }

.nav__right {
  justify-self: stretch;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 36px;
}
.nav__right .btn {
  color: currentColor;
  border-color: currentColor;
  background: transparent;
  font-size: 13px;
  flex: 0 0 auto;
}
.nav__right .btn:hover, .nav__right .btn:focus-visible {
  background: currentColor;
  color: var(--bg-base);
}
/* Overlay (page-load) state: button text is white, so on hover the pill
   fills white — force DARK label text so it stays legible. */
.nav--overlay:not(.is-scrolled) .nav__right .btn:hover,
.nav--overlay:not(.is-scrolled) .nav__right .btn:focus-visible {
  background: #fff;
  color: var(--ink);
  border-color: #fff;
}
.nav--overlay.is-scrolled .nav__right .btn:hover,
.nav--stacked .nav__right .btn:hover {
  background: var(--ink);
  color: var(--bg-base);
}

@media (max-width: 900px) {
  .nav {
    grid-template-columns: auto 1fr auto;
    /* Taller bar on mobile. Push content below the notch/camera via the
       device safe-area inset, with a comfortable floor so the centered logo
       clears the status bar / camera cutout. */
    padding: calc(40px + env(safe-area-inset-top, 0px)) var(--gutter) 22px;
  }
  /* Keep the taller offset when scrolled — otherwise the bar shrinks and the
     logo slides back up under the notch. */
  .nav.is-scrolled {
    padding-top: calc(34px + env(safe-area-inset-top, 0px)) !important;
    padding-bottom: 18px !important;
  }
  .nav__links { display: none; }
  .nav__brand { justify-self: start; }
  .nav__brand img { height: 44px; }
  .nav__right { justify-self: end; }
  .nav.is-scrolled .nav__brand img { height: 36px; }
}

/* =========================================================
   HERO — FULL-BLEED OVERLAY (detailed)
   ========================================================= */
.hero {
  position: relative;
  height: 100vh;
  min-height: 720px;
  overflow: hidden;
  background: var(--bg-accent);
  color: var(--paper);
}
@media (max-width: 767px) {
  .hero { min-height: 580px; height: 100svh; }
}

.hero__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.02);
  animation: heroKenBurns 18s ease-out forwards;
}
@keyframes heroKenBurns {
  to { transform: scale(1.12); }
}

.hero__overlay {
  position: absolute;
  inset: 0;
  /* Uniform scrim — keeps every element on the hero (nav, logo, lede) legible against the photo. */
  background: rgba(20, 18, 15, 0.5);
}

.hero__content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  /* Center within the space BELOW the fixed nav (top padding = nav height). */
  justify-content: center;
  align-items: center;
  padding: 104px var(--gutter) 32px;
  text-align: center;
}
@media (max-width: 767px) {
  .hero__content { padding: 88px var(--gutter) 24px; }
}

.hero__location {
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.42em;
  text-transform: uppercase;
  color: rgba(251, 249, 245, 0.78);
  margin-bottom: 28px;
  opacity: 0;
  transform: translateY(12px);
  animation: heroIn 1.4s var(--ease-out) 0.2s forwards;
}

.hero__logo {
  width: clamp(200px, 26vw, 360px);
  height: auto;
  filter: invert(1) brightness(1.05) drop-shadow(0 4px 24px rgba(0,0,0,0.35));
  opacity: 0;
  transform: translateY(20px);
  animation: heroIn 1.6s var(--ease-out) 0.4s forwards;
}

.hero__lede {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(18px, 1.6vw, 24px);
  line-height: 1.45;
  color: rgba(251, 249, 245, 0.94);
  max-width: 62ch;
  margin: 36px auto 0;
  text-wrap: balance;
  opacity: 0;
  transform: translateY(12px);
  animation: heroIn 1.4s var(--ease-out) 0.8s forwards;
}
@media (max-width: 767px) {
  .hero__lede { font-size: 16px; margin-top: 24px; }
}

@keyframes heroIn {
  to { opacity: 1; transform: translateY(0); }
}

/* hero scroll indicator removed per design feedback */

/* =========================================================
   DETAILS BAND — price + key stats
   ========================================================= */
.details {
  padding: 60px 0;
  border-bottom: 1px solid var(--rule);
}
.details__inner {
  display: flex;
  flex-wrap: wrap;
  /* Bottom-align everything so labels (Offered At / Bedrooms / Bathrooms /
     Interior SF / Acres) all sit on the same horizontal baseline regardless
     of how tall their value above is. */
  align-items: flex-end;
  justify-content: space-between;
  gap: 48px;
}
.details__price {
  display: flex;
  flex-direction: column;
  gap: 18px;
  flex: 0 0 auto;
}
.details__eyebrow {
  font-family: var(--body);
  font-size: 12px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: var(--ink-muted);
}
.details__price-value {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(44px, 5vw, 72px);
  line-height: var(--lh-display);
  color: var(--ink);
  margin: 0;
}
.details__stats {
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 40px 56px;
}
.details__stat {
  display: flex;
  flex-direction: column;
  gap: 18px;
  flex: 0 0 auto;
}
.details__stat-val {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(36px, 3.4vw, 48px);
  line-height: var(--lh-display);
  color: var(--ink);
}
.details__stat-val small {
  font-size: 0.46em;
  letter-spacing: 0.06em;
  margin-left: 6px;
  color: var(--ink-muted);
  font-family: var(--body);
}
.details__stat-label {
  font-family: var(--body);
  font-size: 12px;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-muted);
  white-space: nowrap;
}
@media (max-width: 900px) {
  .details__inner { flex-direction: column; gap: 40px; }
  .details__stats { gap: 28px 40px; }
}

/* =========================================================
   INTRO PROSE — copy + half-bleed image
   ========================================================= */
.intro-prose {
  display: grid;
  grid-template-columns: 1fr 1fr;
  align-items: stretch;
  background: var(--bg-base);
}
.intro-prose__copy {
  /* Align left padding to the container's left edge; right padding is internal gap. */
  padding-top: var(--section-y-web);
  padding-bottom: var(--section-y-web);
  padding-left: max(var(--gutter), calc((100vw - var(--container)) / 2 + var(--gutter)));
  padding-right: clamp(40px, 5vw, 80px);
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 24px;
  max-width: none;
}
.intro-prose__copy p {
  font-family: var(--body);
  font-size: var(--type-body-m);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0;
  max-width: 56ch;
}
.intro-prose__copy p:first-child {
  font-family: var(--display);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.1;
  color: var(--ink);
  letter-spacing: -0.005em;
}
.intro-prose__image {
  background-size: cover;
  background-position: center;
  background-color: var(--bg-soft);
  min-height: 100%;
}
@media (max-width: 900px) {
  .intro-prose { grid-template-columns: 1fr; }
  .intro-prose__copy {
    padding-top: var(--section-y-mobile);
    padding-bottom: var(--section-y-mobile);
    padding-left: var(--gutter);
    padding-right: var(--gutter);
  }
  .intro-prose__image { aspect-ratio: 4 / 3; min-height: 0; }
}

/* Legacy single-column variant — kept in case other pages reference it. */
.intro-prose__col {
  max-width: 64ch;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.intro-prose__col p {
  font-family: var(--body);
  font-size: var(--type-body-m);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0;
}
.intro-prose__col p:first-child {
  font-family: var(--display);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.1;
  color: var(--ink);
  letter-spacing: -0.005em;
}
  display: flex;
  flex-direction: column;
  gap: 24px;
}
.intro-prose__col p {
  font-family: var(--body);
  font-size: var(--type-body-m);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0;
}
.intro-prose__col p:first-child {
  font-family: var(--display);
  font-style: italic;
  font-weight: 300;
  font-size: clamp(22px, 2.4vw, 32px);
  line-height: 1.35;
  color: var(--ink);
  letter-spacing: -0.005em;
}

/* =========================================================
   EDITORIAL (two-column) — kept for legacy use
   ========================================================= */
.editorial {
  padding-top: var(--section-y-web);
  padding-bottom: var(--section-y-web);
}
@media (max-width: 767px) {
  .editorial {
    padding-top: var(--section-y-mobile);
    padding-bottom: var(--section-y-mobile);
  }
}
.editorial__grid {
  display: grid;
  grid-template-columns: minmax(260px, 440px) 1fr;
  gap: clamp(40px, 8vw, 120px);
  align-items: start;
}
.editorial__title {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(36px, 4.4vw, var(--type-h2));
  line-height: 0.95;
  letter-spacing: -0.01em;
  margin: 0;
  color: var(--ink);
  text-wrap: balance;
}
.editorial__copy {
  display: flex;
  flex-direction: column;
  gap: 22px;
  max-width: 56ch;
}
.editorial__copy p {
  font-family: var(--body);
  font-size: var(--type-body-m);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0;
}
.editorial__copy p:first-of-type {
  font-size: calc(var(--type-body-m) + 1px);
}
@media (max-width: 900px) {
  .editorial__grid { grid-template-columns: 1fr; gap: 28px; }
}

/* =========================================================
   FULL-BLEED PHOTO BREAK
   ========================================================= */
.fb-photo {
  width: 100%;
  aspect-ratio: 21 / 9;
  background-size: cover;
  background-position: center;
  background-color: var(--bg-accent);
}
@media (max-width: 767px) {
  .fb-photo { aspect-ratio: 3 / 2; }
}

/* =========================================================
   FEATURE — centered headline + body, full-width photo below
   Single-column rhythm; each section reads as one composed unit.
   ========================================================= */
.features {
  /* No outer container needed — each feature spans full width */
}
.feature {
  padding: clamp(48px, 6vw, 80px) 0 0;
}
.feature__head {
  max-width: 720px;
  margin: 0 auto clamp(48px, 6vw, 80px);
  padding: 0 var(--gutter);
  text-align: center;
  display: flex;
  flex-direction: column;
  gap: 20px;
  align-items: center;
}
.feature__title {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(36px, 4.4vw, 64px);
  line-height: 0.95;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin: 0;
  text-wrap: balance;
}
.feature__title em {
  font-style: italic;
}
.feature__copy {
  font-family: var(--body);
  font-size: var(--type-body-m);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  margin: 0;
  max-width: 58ch;
  text-wrap: pretty;
}
.feature__media {
  position: relative;
  width: 100vw;
  margin-left: calc(50% - 50vw);
  aspect-ratio: 16 / 9;
  background-size: cover;
  background-position: center;
  background-color: var(--bg-soft);
  cursor: zoom-in;
}
/* Carousel variant — each <div data-slide> crossfades on auto-rotate.
   Background-image lives on each slide; container background is neutral. */
.feature__media--carousel {
  background-image: none !important;
  overflow: hidden;
}
.feature__media--carousel .feature__slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transform: scale(1.02);
  /* Both opacity AND transform transition smoothly so when a slide loses
     .is-active its zoom unwinds gently instead of snapping back. */
  transition: opacity 1400ms cubic-bezier(0.4, 0, 0.2, 1),
              transform 1600ms cubic-bezier(0.4, 0, 0.2, 1);
}
.feature__media--carousel .feature__slide.is-active {
  opacity: 1;
  /* Subtle Ken Burns — small, slow, never theatrical. */
  animation: featureZoom 5200ms cubic-bezier(0.4, 0, 0.2, 1) forwards;
}
@keyframes featureZoom {
  from { transform: scale(1.02); }
  to   { transform: scale(1.05); }
}
.feature__media__counter {
  position: absolute;
  bottom: 16px;
  right: 16px;
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--paper);
  background: rgba(20, 18, 15, 0.55);
  padding: 6px 12px;
  font-variant-numeric: tabular-nums;
  pointer-events: none;
  z-index: 2;
}

/* Prev/next on feature carousels — embedded directly in the stage */
.feature__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: rgba(20, 18, 15, 0.36);
  color: var(--paper);
  cursor: pointer;
  transition: background 200ms var(--ease), opacity 200ms var(--ease);
  z-index: 3;
  opacity: 0;
}
.feature__media:hover .feature__nav,
.feature__nav:focus-visible {
  opacity: 1;
}
.feature__nav:hover {
  background: rgba(20, 18, 15, 0.7);
}
.feature__nav--prev { left: 16px; }
.feature__nav--next { right: 16px; }
.feature__nav svg { width: 16px; height: 16px; }
@media (max-width: 767px) {
  .feature__nav { opacity: 1; width: 40px; height: 40px; }
  .feature__nav--prev { left: 10px; }
  .feature__nav--next { right: 10px; }
}
@media (max-width: 767px) {
  .feature { padding-top: 48px; }
  .feature__head { margin-bottom: 48px; gap: 16px; }
  .feature__media { aspect-ratio: 3 / 2; }
}

/* =========================================================
   CTA LINK CARD — "Tour the residence" on home
   ========================================================= */
.cta-card {
  position: relative;
  overflow: hidden;
  min-height: 60vh;
  display: flex;
  align-items: flex-end;
  padding: 80px var(--gutter);
  color: var(--paper);
  text-align: left;
}
.cta-card__bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  transform: scale(1.02);
  transition: transform 1400ms var(--ease-out);
}
.cta-card:hover .cta-card__bg { transform: scale(1.06); }
.cta-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(20,18,15,0.10) 30%, rgba(20,18,15,0.78) 100%);
}
.cta-card__inner {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: 1fr auto;
  align-items: end;
  width: 100%;
  max-width: var(--container);
  margin: 0 auto;
  gap: 32px;
}
.cta-card__title {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(36px, 4.4vw, 64px);
  line-height: 0.95;
  margin: 0;
  text-wrap: balance;
}
.cta-card__sub {
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.32em;
  text-transform: uppercase;
  color: rgba(251, 249, 245, 0.78);
  margin: 0 0 12px;
}
@media (max-width: 900px) {
  .cta-card { min-height: 56vh; padding: 48px var(--gutter); }
  .cta-card__inner { grid-template-columns: 1fr; }
}

/* =========================================================
   MARQUEE STATS STRIP — secondary stats line under intro
   ========================================================= */
.kpi-strip {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.kpi {
  padding: 36px 24px;
  border-right: 1px solid var(--rule);
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.kpi:last-child { border-right: 0; }
.kpi__val {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: clamp(28px, 2.4vw, 36px);
  line-height: 1.0;
  color: var(--ink);
}
.kpi__label {
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-muted);
}
@media (max-width: 767px) {
  .kpi-strip { grid-template-columns: repeat(2, 1fr); }
  .kpi:nth-child(2n) { border-right: 0; }
  .kpi:nth-child(-n+2) { border-bottom: 1px solid var(--rule); }
}

/* =========================================================
   NEIGHBORHOOD MAP
   ========================================================= */
#neighborhood {
  background: var(--bg-soft);
}
.neighborhood__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  margin-bottom: 56px;
  align-items: end;
}
.neighborhood__head h2 {
  font-size: clamp(36px, 4.4vw, var(--type-h2));
  margin: 0;
}
.neighborhood__lede {
  max-width: 52ch;
  font-size: var(--type-body-m);
  color: var(--ink-soft);
  justify-self: end;
  margin: 0;
}
@media (max-width: 900px) {
  .neighborhood__head { grid-template-columns: 1fr; gap: 18px; margin-bottom: 40px; }
  .neighborhood__lede { justify-self: start; }
}

.neighborhood__grid {
  display: grid;
  grid-template-columns: minmax(280px, 380px) 1fr;
  gap: clamp(24px, 4vw, 56px);
  align-items: stretch;
}
@media (max-width: 900px) {
  .neighborhood__grid { grid-template-columns: 1fr; gap: 24px; }
}

/* Sidebar — accordion: each category contains its POI list inline */
.neighborhood__sidebar {
  display: flex;
  flex-direction: column;
  height: clamp(480px, 60vh, 640px);
  border-top: 1px solid var(--rule);
  overflow: hidden;
}
@media (max-width: 900px) {
  .neighborhood__sidebar { height: auto; }
}

.neighborhood__cat-group {
  flex: 0 0 auto;
  display: flex;
  flex-direction: column;
  border-bottom: 1px solid var(--rule);
  background: transparent;
  transition: background 240ms var(--ease), color 240ms var(--ease);
  min-height: 0;
}

.neighborhood__cat-group.is-active {
  flex: 1 1 auto;
}

/* Category button (the header row of each accordion item) */
.neighborhood__cat {
  display: grid;
  grid-template-columns: 22px 1fr auto;
  align-items: center;
  gap: 14px;
  padding: 18px 20px;
  background: transparent;
  border: 0;
  font-family: var(--body);
  font-size: var(--type-body-s);
  color: var(--ink-soft);
  cursor: pointer;
  text-align: left;
  text-transform: uppercase;
  letter-spacing: 0.18em;
  transition: color 240ms var(--ease);
  flex: 0 0 auto;
}
.neighborhood__cat:hover { color: var(--ink); }
.neighborhood__cat-group.is-active .neighborhood__cat {
  color: var(--ink);
}

.neighborhood__cat-icon {
  width: 22px; height: 22px;
  display: flex; align-items: center; justify-content: center;
  color: var(--ink-muted);
  transition: color 240ms var(--ease);
  /* Optically nudge to match the cap-height center of the uppercase
     Courier Prime label sitting beside it — geometric center reads low. */
  transform: translateY(-2px);
}
.neighborhood__cat-group.is-active .neighborhood__cat-icon { color: var(--brand); }
.neighborhood__cat-icon svg {
  width: 100%;
  height: 100%;
  display: block;
}

/* POI list — collapsed by default, expands inline under the active category */
.neighborhood__list {
  display: none;
  flex-direction: column;
  flex: 1 1 auto;
  min-height: 0;
  overflow-y: auto;
  padding: 0 20px 16px;
}
.neighborhood__cat-group.is-active .neighborhood__list { display: flex; }

.neighborhood__poi {
  display: grid;
  grid-template-columns: 36px 1fr;
  align-items: center;
  gap: 14px;
  padding: 12px 4px;
  background: transparent;
  border: 0;
  border-top: 1px solid var(--rule-soft);
  font-family: var(--body);
  font-size: var(--type-body-s);
  color: var(--ink-soft);
  cursor: pointer;
  text-align: left;
  letter-spacing: 0.02em;
  transition: background 200ms var(--ease), color 200ms var(--ease);
  flex: 0 0 auto;
}
.neighborhood__poi:first-child { border-top: 0; }
.neighborhood__poi:hover,
.neighborhood__poi.is-selected {
  background: var(--shadow);
  color: var(--paper);
}
.neighborhood__poi:hover .neighborhood__poi-num,
.neighborhood__poi.is-selected .neighborhood__poi-num { color: var(--dune); }
.neighborhood__poi-num {
  font-family: var(--display);
  font-style: italic;
  font-size: 16px;
  color: var(--ink-muted);
}
.neighborhood__poi-name {
  white-space: normal;
  overflow-wrap: anywhere;
  line-height: var(--lh-body);
}

/* Scrollbar styling for the active list */
.neighborhood__list {
  scrollbar-width: thin;
  scrollbar-color: var(--rule) transparent;
}
.neighborhood__list::-webkit-scrollbar {
  width: 6px;
}
.neighborhood__list::-webkit-scrollbar-thumb {
  background: var(--rule);
  border-radius: 3px;
}

/* =========================================================
   LEAFLET MAP — real geographic map of the area
   ========================================================= */
.neighborhood__map {
  position: relative;
  width: 100%;
  height: clamp(480px, 60vh, 640px);
  background: var(--bg-soft);
  border: 1px solid var(--rule);
  z-index: 0;
}
@media (max-width: 900px) {
  .neighborhood__map { height: 460px; }
}

/* Suppress Leaflet's default focus outlines on tile container */
.leaflet-container { outline: none; }
.leaflet-container { font-family: var(--body); }

/* Tone the map tiles slightly toward the brand neutral so they don't
   compete with the surrounding warm palette. */
.leaflet-tile-pane { filter: saturate(0.7) brightness(1.02) contrast(0.96); }

/* Attribution — keep, but understated */
.leaflet-control-attribution {
  font-size: 10px !important;
  font-family: var(--body) !important;
  color: var(--ink-muted) !important;
  background: rgba(251, 249, 245, 0.88) !important;
  padding: 2px 8px !important;
}
.leaflet-control-attribution a { color: var(--ink-soft); }

/* Zoom controls — restyle to match brand */
.leaflet-control-zoom {
  border: 1px solid var(--rule) !important;
  box-shadow: none !important;
}
.leaflet-control-zoom a {
  background: var(--paper) !important;
  color: var(--ink) !important;
  border-color: var(--rule) !important;
  font-family: var(--body) !important;
  font-size: 16px !important;
  width: 32px !important;
  height: 32px !important;
  line-height: 32px !important;
}
.leaflet-control-zoom a:hover {
  background: var(--shadow) !important;
  color: var(--paper) !important;
}

/* POI markers — custom HTML markers via L.divIcon */
.leaflet-marker-icon.poi-marker {
  width: 36px !important; height: 36px !important;
  display: flex; align-items: center; justify-content: center;
  background: var(--paper);
  color: var(--shadow);
  border: 1px solid var(--shadow);
  cursor: pointer;
  transition: transform 240ms var(--ease),
              background 240ms var(--ease),
              color 240ms var(--ease);
  z-index: 400 !important;
}
.leaflet-marker-icon.poi-marker:hover {
  background: var(--shadow);
  color: var(--paper);
}
.leaflet-marker-icon.poi-marker svg { width: 18px; height: 18px; }
.leaflet-marker-icon.poi-marker.is-selected {
  background: var(--shadow);
  color: var(--paper);
  z-index: 500 !important;
  box-shadow: 0 0 0 3px rgba(50, 47, 41, 0.18);
}

/* Tooltip on a POI marker (Leaflet tooltip restyled) */
.leaflet-tooltip.poi-tooltip {
  background: var(--shadow);
  color: var(--paper);
  border: 0;
  border-radius: 0;
  padding: 6px 10px;
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.04em;
  white-space: nowrap;
  box-shadow: none;
}
.leaflet-tooltip.poi-tooltip::before {
  border-top-color: var(--shadow);
  border-bottom-color: var(--shadow);
}

/* Property marker (the listing itself) — distinct from POIs */
.leaflet-marker-icon.property-marker-leaflet {
  width: 56px !important; height: 56px !important;
  display: flex;
  align-items: center;
  justify-content: center;
  background: transparent;
  pointer-events: none;
  z-index: 600 !important;
}
.property-marker-leaflet__pulse {
  position: absolute;
  inset: 0;
  border-radius: 50%;
  background: rgba(157, 137, 114, 0.20);
  animation: propertyPulse 3.5s ease-in-out infinite;
}
.property-marker-leaflet__dot {
  position: relative;
  width: 18px;
  height: 18px;
  background: var(--brand);
  border-radius: 50%;
  box-shadow: 0 0 0 3px var(--paper), 0 2px 8px rgba(0,0,0,0.25);
}
.property-marker-leaflet__label {
  position: absolute;
  top: calc(50% + 14px);
  left: 50%;
  transform: translateX(-50%);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--body);
  font-size: 10px;
  line-height: 1;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--shadow);
  white-space: nowrap;
  background: var(--paper);
  padding: 7px 8px 6px 11px;
  border: 1px solid var(--rule);
}
@keyframes propertyPulse {
  0%, 100% { transform: scale(1); opacity: 0.7; }
  50%      { transform: scale(1.5); opacity: 0; }
}

/* =========================================================
   SIGNATURE + AGENTS BLOCK
   ========================================================= */
.team {
  background: var(--bg-base);
}
.team__grid {
  display: flex;
  flex-direction: column;
  gap: clamp(48px, 6vw, 80px);
}
.team__head {
  max-width: 820px;
  margin: 0 auto;
  text-align: center;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 28px;
}
.team__head h2 {
  font-size: clamp(36px, 4.4vw, var(--type-h2));
  margin: 0;
}
.team__lockup {
  height: clamp(40px, 4vw, 56px);
  width: auto;
  margin: 0;
  filter: brightness(0.32) saturate(0.4);
}
.team__body {
  display: flex;
  flex-direction: column;
  gap: clamp(56px, 6vw, 80px);
  max-width: 1000px;
  margin: 0 auto;
}
.team__copy {
  column-count: 2;
  column-gap: clamp(40px, 5vw, 72px);
  column-rule: 1px solid var(--rule-soft);
}
.team__copy p {
  font-family: var(--body);
  font-size: var(--type-body-s);
  line-height: var(--lh-body);
  letter-spacing: 0.01em;
  color: var(--ink-soft);
  margin: 0 0 1em;
  break-inside: avoid;
  hyphens: auto;
}
.team__copy p:last-child { margin-bottom: 0; }
.team__agents {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(20px, 2.5vw, 32px);
}
@media (max-width: 767px) {
  .team__copy { column-count: 1; column-rule: 0; }
  .team__agents { grid-template-columns: 1fr; }
}

.agent-card {
  background: var(--bg-soft);
  padding: 16px;
  /* Square portrait left, contact body right. Card height is driven by
     the portrait (square at the column width); body content centers. */
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.4fr);
  gap: 20px;
  align-items: stretch;
}
.agent-card__portrait {
  width: 100%;
  height: auto;
  aspect-ratio: 1 / 1;
  background-size: cover;
  /* Crop to head-and-shoulders — not the full upper body. */
  background-position: center 18%;
  background-color: var(--bg-soft);
  filter: grayscale(0.1) contrast(1.02);
  margin: 0;
}
.agent-card__body {
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: 6px;
  padding: 0;
}
.agent-card__name {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: 24px;
  line-height: 1.1;
  color: var(--ink);
  margin: 0;
}
.agent-card__role {
  font-family: var(--body);
  font-size: 10.5px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin: 0;
}
.agent-card__contact {
  display: flex;
  flex-direction: column;
  gap: 2px;
  margin-top: 8px;
}
.agent-card__contact a {
  font-family: var(--body);
  font-size: 12px;
  letter-spacing: 0.02em;
  color: var(--ink-soft);
  padding: 2px 0;
  transition: color 200ms var(--ease);
  overflow-wrap: anywhere;
}
.agent-card__contact a:hover { color: var(--ink); }

/* =========================================================
   INQUIRE FORM — centered card on solid surface
   ========================================================= */
.inquire {
  background: var(--bg-soft);
  position: relative;
  overflow: hidden;
}

.inquire__inner {
  position: relative;
  z-index: 2;
  max-width: 880px;
  margin: 0 auto;
  padding: 0;
}

/* ---- Centered headline ---- */
.inquire__headline {
  text-align: center;
  margin-bottom: 56px;
  max-width: 640px;
  margin-left: auto;
  margin-right: auto;
  opacity: 0;
  filter: blur(12px);
  transform: translateY(8px);
  transition: opacity 700ms var(--ease-out), filter 700ms var(--ease-out), transform 700ms var(--ease-out);
}
.inquire__headline.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}
@media (max-width: 767px) { .inquire__headline { margin-bottom: 40px; } }

.inquire__eyebrow {
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--ink-muted);
  margin: 0 0 16px;
}
.inquire__title {
  font-family: var(--display);
  font-style: italic;
  font-size: clamp(36px, 4.4vw, var(--type-h2));
  line-height: 1.05;
  letter-spacing: -0.015em;
  color: var(--ink);
  margin: 0;
  text-wrap: balance;
}
.inquire__title em { font-style: italic; }

/* ---- Form card ---- */
.inquire__card {
  max-width: 680px;
  margin: 0 auto;
  background: var(--bg-base);
  border-radius: 0;
  padding: 40px;
  opacity: 0;
  filter: blur(12px);
  transform: translateY(8px);
  transition: opacity 700ms var(--ease-out) 150ms, filter 700ms var(--ease-out) 150ms, transform 700ms var(--ease-out) 150ms;
}
.inquire__card.is-visible {
  opacity: 1;
  filter: blur(0);
  transform: translateY(0);
}
@media (max-width: 767px) { .inquire__card { padding: 28px; } }

.inquire__card-head {
  margin-bottom: 32px;
}
.inquire__card-title {
  font-family: var(--display);
  font-style: italic;
  font-size: 28px;
  line-height: 1.2;
  letter-spacing: -0.005em;
  color: var(--ink);
  margin: 0 0 8px;
}
.inquire__card-title em { font-style: italic; }
.inquire__card-sub {
  font-family: var(--body);
  font-size: var(--type-body-s);
  line-height: var(--lh-body);
  letter-spacing: 0.02em;
  color: var(--ink-soft);
  margin: 0;
}

.iform {
  display: flex;
  flex-direction: column;
  gap: 20px;
}

.iform__field {
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.iform__row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 16px;
}
@media (max-width: 479px) {
  .iform__row { grid-template-columns: 1fr; gap: 20px; }
}

.iform__label {
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-muted);
  display: flex;
  align-items: center;
  gap: 6px;
}
.iform__label[data-optional]::after {
  content: 'Optional';
  font-size: 10px;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--ink-muted);
  opacity: 0.55;
  margin-left: auto;
}

.iform__input,
.iform__textarea {
  font-family: var(--body);
  font-size: var(--type-body-m);
  letter-spacing: 0.02em;
  color: var(--ink);
  background: var(--bg-soft);
  border: 1px solid transparent;
  border-radius: 0;
  padding: 14px 16px;
  width: 100%;
  outline: none;
  transition: background 180ms var(--ease-out), border-color 180ms var(--ease-out);
}
.iform__input::placeholder,
.iform__textarea::placeholder {
  color: var(--ink-muted);
  opacity: 0.7;
}
.iform__input:focus,
.iform__textarea:focus {
  border-color: var(--ink);
}
.iform__textarea {
  resize: vertical;
  min-height: 120px;
  line-height: var(--lh-body);
}

/* Segmented Y/N broker control */
.iform__choices {
  display: inline-flex;
  border-radius: 0;
  background: var(--bg-soft);
  padding: 4px;
  gap: 4px;
  width: fit-content;
  border: 0;
  margin-top: 0;
}
.iform__choice { position: relative; }
.iform__choice input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}
.iform__choice span {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--ink-soft);
  padding: 12px 28px;
  cursor: pointer;
  border-radius: 0;
  transition: background 180ms var(--ease-out), color 180ms var(--ease-out);
  user-select: none;
}
.iform__choice:hover span { color: var(--ink); }
.iform__choice input:checked + span {
  background: var(--ink);
  color: var(--bg-base);
}
.iform__choice input:focus-visible + span {
  outline: 2px solid var(--ink);
  outline-offset: 2px;
}

/* Pill submit button */
.iform__actions {
  display: flex;
  justify-content: stretch;
  align-items: center;
  margin-top: 8px;
}
.iform__submit {
  margin: 0;
  align-self: stretch;
  width: 100%;
  font-family: var(--body);
  font-size: var(--type-body-xs);
  letter-spacing: 0.22em;
  text-transform: uppercase;
  padding: 18px 28px;
  border: 1px solid var(--ink);
  background: var(--ink);
  color: var(--bg-base);
  border-radius: 0;
  cursor: pointer;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  transition: background 180ms var(--ease-out), color 180ms var(--ease-out), gap 180ms var(--ease-out);
}
.iform__submit:hover {
  background: transparent;
  color: var(--ink);
  gap: 16px;
}
.iform__submit svg { width: 14px; height: 14px; }
.iform__submit:disabled { opacity: 0.5; cursor: not-allowed; }

.iform__success {
  display: none;
  margin-top: 24px;
  padding: 24px;
  background: var(--bg-soft);
  border-radius: 0;
  text-align: center;
  font-family: var(--body);
  font-size: var(--type-body-s);
  line-height: var(--lh-body);
  color: var(--ink-soft);
  letter-spacing: 0.02em;
}
.iform__success.is-visible { display: block; }
.iform__success em {
  font-family: var(--display);
  font-style: italic;
  font-size: 24px;
  line-height: 1.1;
  color: var(--ink);
  display: block;
  margin-bottom: 8px;
}

/* =========================================================
   FOOTER
   ========================================================= */
.footer {
  background: var(--bg-accent);
  color: var(--on-accent);
  padding: 56px 0 32px;
  --footer-body: rgba(251, 249, 245, 0.78);
  --footer-eyebrow: rgba(251, 249, 245, 0.48);
  --footer-disc: rgba(251, 249, 245, 0.4);
}
.footer__top {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: clamp(32px, 5vw, 64px);
  padding-bottom: 24px;
  border-bottom: 1px solid var(--rule-light);
  align-items: center;
}
.footer__brand {
  align-items: flex-start;
}
.footer__col p.footer__brand-street {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -0.005em;
  color: var(--on-accent);
  margin: 0 0 16px;
  padding: 0;
}

.footer__col {
  display: flex;
  flex-direction: column;
  gap: 2px;
}
.footer__col a, .footer__col p {
  font-family: var(--body);
  font-size: 12px;
  letter-spacing: 0.04em;
  color: var(--footer-body);
  padding: 0;
  margin: 0;
  line-height: var(--lh-body);
  transition: color 200ms var(--ease), text-decoration-color 200ms var(--ease);
}
/* Underline on hover for clear link affordance. */
.footer__col a {
  text-decoration: underline;
  text-decoration-color: transparent;
  text-decoration-thickness: 1px;
  text-underline-offset: 4px;
}
.footer__col a:hover,
.footer__col a:focus-visible {
  color: var(--on-accent);
  text-decoration-color: currentColor;
  opacity: 1;
  outline: none;
}

/* Each agent column — name set in display italic, phone + email tucked beneath. */
.footer__col p.footer__agent-name {
  font-family: var(--display);
  font-weight: 300;
  font-style: italic;
  font-size: 28px;
  line-height: 1.1;
  letter-spacing: -0.005em;
  color: var(--on-accent);
  margin: 0 0 16px;
  padding: 0;
}

/* Sign-off lockup column */
.footer__signature-col { align-items: flex-start; }
.footer__signature {
  height: clamp(80px, 9vw, 128px);
  width: auto;
  margin: 0;
  filter: invert(1) brightness(1.05) saturate(0.4);
  opacity: 0.9;
}
.footer__bottom {
  padding-top: 20px;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.footer__legal {
  font-family: var(--body);
  font-size: 9px;
  line-height: var(--lh-body);
  letter-spacing: 0.04em;
  color: var(--footer-disc);
  margin: 0;
}
.footer__copyright {
  font-family: var(--body);
  font-size: 9px;
  letter-spacing: 0.2em;
  text-transform: uppercase;
  color: var(--footer-disc);
}
@media (max-width: 900px) {
  .footer__top { grid-template-columns: 1fr 1fr; gap: 40px; padding-bottom: 24px; }
}
@media (max-width: 600px) {
  .footer__top { grid-template-columns: 1fr; gap: 32px; }
}

/* =========================================================
   FLOORPLAN
   ========================================================= */
.floorplan {
  background: var(--bg-base);
}
.floorplan__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: end;
  margin-bottom: 56px;
}
.floorplan__head h2 { margin: 0; }
.floorplan__head p {
  margin: 0;
  font-family: var(--body);
  font-size: var(--type-body-m);
  color: var(--ink-soft);
  max-width: 50ch;
  justify-self: end;
}
@media (max-width: 900px) {
  .floorplan__head { grid-template-columns: 1fr; gap: 18px; margin-bottom: 32px; }
  .floorplan__head p { justify-self: start; }
}
.floorplan__viewer {
  position: relative;
  background: var(--paper);
  padding: 40px;
  cursor: zoom-in;
  border: 1px solid var(--rule);
}
.floorplan__viewer img { width: 100%; height: auto; display: block; }
.floorplan__zoom {
  position: absolute;
  bottom: 24px;
  right: 24px;
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: var(--ink-muted);
  background: var(--paper);
  padding: 10px 16px;
  border: 1px solid var(--rule);
  display: inline-flex;
  align-items: center;
  gap: 10px;
  pointer-events: none;
}
@media (max-width: 600px) {
  .floorplan__viewer { padding: 16px; }
}

/* =========================================================
   GALLERY CROSSFADE
   ========================================================= */
.gallery {
  background: var(--bg-base);
}
.gallery__head {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 56px;
  align-items: end;
  margin-bottom: 48px;
}
.gallery__head h2 { margin: 0; }
.gallery__head p {
  margin: 0;
  font-family: var(--body);
  font-size: var(--type-body-m);
  color: var(--ink-soft);
  max-width: 52ch;
  justify-self: end;
}
@media (max-width: 900px) {
  .gallery__head { grid-template-columns: 1fr; gap: 18px; margin-bottom: 32px; }
  .gallery__head p { justify-self: start; }
}
.gallery__stage {
  position: relative;
  width: 100%;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--bg-accent);
  cursor: zoom-in;
}
.gallery__slide {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  opacity: 0;
  transition: opacity 1200ms cubic-bezier(0.4, 0, 0.2, 1);
}
.gallery__slide.is-active { opacity: 1; }
.gallery__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 52px; height: 52px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: rgba(20, 18, 15, 0.4);
  color: var(--paper);
  cursor: pointer;
  transition: background 200ms var(--ease);
  z-index: 2;
}
.gallery__nav:hover { background: rgba(20, 18, 15, 0.7); }
.gallery__nav--prev { left: 20px; }
.gallery__nav--next { right: 20px; }
.gallery__nav svg { width: 18px; height: 18px; }

.gallery__caption {
  display: flex;
  align-items: center;
  gap: 24px;
  margin-top: 24px;
}
.gallery__counter {
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.24em;
  text-transform: uppercase;
  color: var(--ink-muted);
  font-variant-numeric: tabular-nums;
  flex: 0 0 auto;
}
.gallery__counter strong { color: var(--ink); font-weight: 400; }
.gallery__progress {
  flex: 1 1 auto;
  height: 1px;
  background: var(--rule);
  position: relative;
  overflow: hidden;
}
.gallery__progress-bar {
  position: absolute;
  inset: 0;
  background: var(--ink);
  transform-origin: left center;
  transform: scaleX(0);
}
.gallery__stage.is-playing + .gallery__caption .gallery__progress-bar {
  animation: galleryProgress 6000ms linear infinite;
}
@keyframes galleryProgress {
  from { transform: scaleX(0); }
  to   { transform: scaleX(1); }
}

/* =========================================================
   LIGHTBOX
   ========================================================= */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 300;
  background: rgba(20, 18, 15, 0.97);
  display: none;
  align-items: center;
  justify-content: center;
  padding: var(--gutter);
}
.lightbox.is-open { display: flex; }
.lightbox__img {
  max-width: 100%;
  max-height: calc(100vh - 120px);
  object-fit: contain;
}
.lightbox__close {
  position: absolute;
  top: 24px;
  right: 24px;
  width: 44px;
  height: 44px;
  background: rgba(255,255,255,0.08);
  border: 0;
  color: var(--paper);
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 3;
}
.lightbox__close:hover { background: rgba(255,255,255,0.18); }
.lightbox__nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 56px;
  height: 56px;
  display: flex;
  align-items: center;
  justify-content: center;
  border: 0;
  background: rgba(255, 255, 255, 0.08);
  color: var(--paper);
  cursor: pointer;
  transition: background 200ms var(--ease);
  z-index: 3;
}
.lightbox__nav:hover { background: rgba(255, 255, 255, 0.2); }
.lightbox__nav--prev { left: 24px; }
.lightbox__nav--next { right: 24px; }
.lightbox__nav svg { width: 22px; height: 22px; }
.lightbox__nav[hidden] { display: none; }
.lightbox__counter {
  position: absolute;
  top: 24px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--body);
  font-size: 11px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(251, 249, 245, 0.7);
  font-variant-numeric: tabular-nums;
  pointer-events: none;
}
.lightbox__counter[hidden] { display: none; }
.lightbox__hint {
  position: absolute;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  font-family: var(--body);
  font-size: 10px;
  letter-spacing: 0.28em;
  text-transform: uppercase;
  color: rgba(242,239,231,0.5);
}
.lightbox__close svg { width: 18px; height: 18px; }

/* =========================================================
   RESIDENCE PAGE HERO (text band + photo)
   ========================================================= */
.page-hero {
  padding: 160px 0 64px;
  border-bottom: 1px solid var(--rule);
}
.page-hero__inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 48px;
  align-items: end;
}
.page-hero h1 {
  font-size: clamp(48px, 6vw, 96px);
  margin: 0;
  text-wrap: balance;
}
.page-hero p {
  font-family: var(--body);
  font-size: var(--type-body-m);
  color: var(--ink-soft);
  max-width: 50ch;
  margin: 0;
  justify-self: end;
}
@media (max-width: 900px) {
  .page-hero { padding: 120px 0 40px; }
  .page-hero__inner { grid-template-columns: 1fr; gap: 24px; }
  .page-hero p { justify-self: start; }
}

/* utility */
.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;
}
