:root {
  --paper: #FFFFFF;
  --paper-deep: #EEF3F8;          /* cool light wash (was warm cream) */
  --ink: #06283F;                 /* deep navy (was near-black) */
  --ink-muted: #4E6A7C;
  --ink-soft: #88A0B0;
  --brass: #1E6CA8;               /* accent: refined blue (was brass) */
  --brass-bright: #3B86C2;
  --rule: rgba(6, 40, 63, 0.16);
  --rule-soft: rgba(6, 40, 63, 0.08);
}

* { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  overflow-x: hidden;
  -webkit-text-size-adjust: 100%;
}

body {
  margin: 0;
  background: var(--paper);
  color: var(--ink);
  font-family: 'Manrope', system-ui, sans-serif;
  font-weight: 400;
  font-size: 16px;
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  overflow-x: hidden;
}

img, video, iframe { max-width: 100%; }

/* Typography ----------------------------------------- */

.display {
  font-family: 'Fraunces', 'Times New Roman', serif;
  font-variation-settings: "opsz" 144, "SOFT" 30, "WONK" 0;
  font-weight: 400;
  letter-spacing: -0.025em;
  line-height: 0.92;
  color: var(--ink);
}

.display-italic {
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 80, "WONK" 1;
}

.serif {
  font-family: 'Fraunces', 'Times New Roman', serif;
  font-variation-settings: "opsz" 36, "SOFT" 30;
}

.serif-italic {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 36, "SOFT" 70;
}

.tag {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-weight: 400;
  font-size: 0.95rem;
  color: var(--ink-muted);
  letter-spacing: 0.005em;
}

.muted { color: var(--ink-muted); }
.soft { color: var(--ink-soft); }
.brass { color: var(--brass); }

.numeral {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 144, "SOFT" 0;
  font-weight: 300;
  letter-spacing: -0.04em;
  font-feature-settings: "lnum";
  color: var(--ink);
}

/* Layout ----------------------------------------- */

.wrap {
  width: 100%;
  max-width: 1320px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

.wrap-narrow {
  width: 100%;
  max-width: 880px;
  margin: 0 auto;
  padding: 0 clamp(1.25rem, 4vw, 3rem);
}

.rule { border: 0; border-top: 1px solid var(--rule); margin: 0; }
.rule-soft { border: 0; border-top: 1px solid var(--rule-soft); margin: 0; }

/* Top strip ----------------------------------------- */

.topstrip {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 1.25rem 0;
  border-bottom: 1px solid var(--rule);
  font-size: 0.8125rem;
  letter-spacing: 0.01em;
}

.topstrip a { color: var(--ink); text-decoration: none; }
.topstrip a:hover { color: var(--brass); }

.topstrip .name {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 500;
  font-size: 1.0625rem;
  letter-spacing: -0.01em;
}

.lang-toggle {
  background: transparent;
  display: inline-block;
  text-decoration: none;
  border: 1px solid var(--rule);
  color: var(--ink);
  font-family: 'Manrope', sans-serif;
  font-size: 0.7rem;
  font-weight: 500;
  letter-spacing: 0.12em;
  padding: 0.4rem 0.7rem;
  cursor: pointer;
  text-transform: uppercase;
  transition: border-color 220ms ease, color 220ms ease, background 220ms ease;
  border-radius: 0;
  line-height: 1;
}

.lang-toggle:hover {
  border-color: var(--brass);
  color: var(--brass);
  background: rgba(30, 108, 168, 0.06);
}

.lang-toggle:focus-visible {
  outline: 2px solid var(--brass);
  outline-offset: 2px;
}

/* Translation visibility - toggled by html[lang] attribute */
html[lang="en"] [data-lang="es"] { display: none; }
html[lang="es"] [data-lang="en"] { display: none; }

.topstrip .meta {
  display: flex;
  gap: 1.75rem;
  color: var(--ink-muted);
}

@media (max-width: 640px) {
  .topstrip .meta { gap: 1rem; }
  .topstrip .meta .hide-sm { display: none; }
}

/* Buttons ----------------------------------------- */

.btn {
  display: inline-flex;
  align-items: baseline;
  gap: 0.6em;
  padding: 0.95rem 1.5rem;
  background: var(--ink);
  color: var(--paper);
  font-family: 'Manrope', sans-serif;
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: 0.005em;
  border: 1px solid var(--ink);
  border-radius: 0;
  cursor: pointer;
  text-decoration: none;
  transition: background 220ms ease, color 220ms ease, transform 220ms ease;
  position: relative;
}

.btn::after {
  content: '→';
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24;
  font-style: italic;
  font-size: 1.1em;
  transition: transform 220ms cubic-bezier(0.22, 1, 0.36, 1);
}

.btn:hover {
  background: var(--brass);
  color: var(--paper);
  border-color: var(--brass);
}

.btn:hover::after { transform: translateX(4px); }

.btn:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }

.btn-link {
  display: inline-flex;
  align-items: baseline;
  gap: 0.5em;
  color: var(--ink);
  text-decoration: none;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 28, "SOFT" 70;
  font-size: 1.0625rem;
  position: relative;
  padding-bottom: 0.15em;
}

.btn-link::after {
  content: '';
  position: absolute;
  left: 0;
  right: 0;
  bottom: 0;
  height: 1px;
  background: var(--ink);
  transform-origin: left;
  transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1), background 220ms ease;
}

.btn-link:hover { color: var(--brass); }
.btn-link:hover::after { background: var(--brass); transform: scaleX(1.04); }

/* Full-bleed photo hero (landing page) ----------------- */
/* Shell: promo bar + hero fill the first screen exactly (no white peeking) */
.hero-shell {
  min-height: 100vh;
  min-height: 100svh;
  display: flex;
  flex-direction: column;
}
.hero-shell .hero-full { flex: 1 1 auto; }

.hero-full {
  position: relative;
  width: 100%;
  min-height: 560px;
  display: flex;
  overflow: hidden;
  background: #182024;
}
.hero-full-bg {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 42%;
}
.hero-full-scrim {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(6,18,24,0.88) 0%, rgba(6,18,24,0.6) 38%, rgba(6,18,24,0.08) 66%, rgba(6,18,24,0) 100%),
    linear-gradient(0deg, rgba(6,18,24,0.62) 0%, rgba(6,18,24,0) 40%);
}
.hero-full-sticker {
  position: absolute;
  top: 13%;
  right: 5%;
  width: clamp(118px, 12.5vw, 184px);
  height: auto;
  transform: rotate(8deg);
  filter: drop-shadow(0 14px 26px rgba(0,0,0,0.42));
  z-index: 3;
}
.hero-full-content {
  position: relative;
  z-index: 2;
  align-self: flex-end;
  margin: 0 0 clamp(2.5rem, 7vw, 5.5rem) clamp(1.25rem, 6vw, 5rem);
  max-width: 600px;
  padding-right: 1.25rem;
}
.hero-full-eyebrow {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin: 0 0 1.25rem;
  font-family: 'Manrope', sans-serif;
  font-size: 0.78rem;
  font-weight: 600;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: #CFE3E7;
}
.hero-full-eyebrow .dot {
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: var(--brass-bright);
  flex-shrink: 0;
}
.hero-full-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 144, "SOFT" 0;
  font-weight: 400;
  font-size: clamp(2.6rem, 6vw, 4.5rem);
  line-height: 1.02;
  letter-spacing: -0.02em;
  color: #fff;
  margin: 0 0 1.1rem;
}
.hero-full-title .display-italic {
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 80, "WONK" 1;
}
.hero-full-sub {
  font-family: 'Manrope', sans-serif;
  font-size: clamp(1rem, 1.3vw, 1.15rem);
  line-height: 1.6;
  color: #DBE2E3;
  margin: 0 0 2rem;
  max-width: 30rem;
}
.hero-full-ctas {
  display: flex;
  align-items: center;
  gap: 1.25rem;
  flex-wrap: wrap;
}
.hero-full .btn {
  background: var(--brass);
  border-color: var(--brass);
  border-radius: 9px;
  padding: 1rem 1.6rem;
  font-size: 0.95rem;
  box-shadow: 0 14px 30px -12px rgba(30,108,168,0.9);
}
.hero-full .btn:hover {
  background: var(--brass-bright);
  border-color: var(--brass-bright);
}
.hero-full-link {
  color: #fff;
  font-family: 'Manrope', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
  text-decoration: none;
  border-bottom: 1.5px solid rgba(255,255,255,0.45);
  padding-bottom: 2px;
  transition: border-color 200ms ease;
}
.hero-full-link:hover { border-bottom-color: #fff; }
.hero-full-note {
  margin: 1.15rem 0 0;
  font-family: 'Manrope', sans-serif;
  font-size: 0.82rem;
  line-height: 1.4;
  color: #ffffff !important;
  max-width: 25rem;
}
.hero-full-note span { color: #ffffff !important; }

/* Transparent nav overlaid on the photo hero (replaces the white bar) */
.hero-full .hero-nav { position: absolute; top: 0; left: 0; right: 0; z-index: 6; }
.hero-full .topstrip { border-bottom-color: rgba(0,0,0,0.28); text-shadow: 0 0 10px rgba(255,255,255,0.65), 0 1px 2px rgba(255,255,255,0.8); }
.hero-full .topstrip a,
.hero-full .topstrip .name { color: #0c1922; }
.hero-full .topstrip a:hover { color: var(--brass); }
.hero-full .topstrip .meta { color: #0c1922; }
.hero-full .lang-toggle { color: #0c1922; border-color: rgba(0,0,0,0.45); }
.hero-full .lang-toggle:hover { background: rgba(0,0,0,0.08); border-color: #0c1922; color: #0c1922; }

@media (max-width: 600px) {
  .hero-full { min-height: 76vh; }
  .hero-full-sticker { width: 104px; top: 10%; right: 4%; }
}

/* Hero ----------------------------------------- */

.hero {
  padding: clamp(2.5rem, 5vw, 4.5rem) 0 clamp(2.5rem, 5vw, 4rem);
}

.hero-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: center;
}

@media (min-width: 900px) {
  .hero-grid {
    grid-template-columns: 1.05fr 1fr;
    gap: clamp(2.5rem, 4vw, 4rem);
  }
}

.hero-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  min-width: 0;
}

.hero-eyebrow {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.95rem;
  color: var(--ink-muted);
  margin: 0 0 1.5rem;
  letter-spacing: 0.005em;
}

.hero-title {
  margin: 0 0 1.5rem;
  font-size: clamp(4rem, 11vw, 9.5rem);
  line-height: 0.9;
  letter-spacing: -0.04em;
}

.hero-tagline {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1.0625rem, 1.4vw, 1.25rem);
  line-height: 1.5;
  margin: 0 0 2.25rem;
  max-width: 32rem;
  color: var(--ink);
  letter-spacing: -0.005em;
}

.hero-tagline strong { font-weight: 500; }

.hero-ctas {
  display: flex;
  gap: 2rem;
  align-items: baseline;
  flex-wrap: wrap;
}

.hero-presented {
  display: block;
  margin-top: clamp(2rem, 3.5vw, 2.75rem);
  padding-top: clamp(1.5rem, 2.5vw, 2rem);
  border-top: 1px solid var(--rule);
  text-decoration: none;
  color: inherit;
  max-width: 460px;
}

.hero-presented .label {
  display: block;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.85rem;
  color: var(--ink-muted);
  margin-bottom: 0.85rem;
  letter-spacing: 0.005em;
}

.hero-presented img {
  display: block;
  width: 100%;
  height: auto;
  transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

.hero-presented:hover img {
  transform: translateY(-2px);
}

.hero-photo {
  position: relative;
  margin: 0;
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--paper-deep);
  max-height: 70vh;
}

.hero-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
}

.hero-card-banner {
  display: block;
  width: 100%;
  text-decoration: none;
  overflow: hidden;
  transition: transform 320ms cubic-bezier(0.22, 1, 0.36, 1);
}

.hero-card-banner img {
  width: 100%;
  height: auto;
  display: block;
}

.hero-card-banner:hover {
  transform: translateY(-2px);
}

/* Facts strip - horizontal stat row below hero ----------------- */

.facts-strip {
  border-top: 1px solid var(--ink);
  border-bottom: 1px solid var(--rule);
  padding: clamp(1.25rem, 2vw, 1.75rem) 0;
}

.facts-grid {
  display: grid;
  grid-template-columns: repeat(5, 1fr);
  gap: clamp(1.25rem, 2vw, 2.5rem);
  align-items: baseline;
}

@media (max-width: 900px) {
  .facts-grid { grid-template-columns: repeat(3, 1fr); gap: 1.25rem; }
}

@media (max-width: 540px) {
  .facts-grid { grid-template-columns: repeat(2, 1fr); }
}

.facts-grid > div {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  border-left: 1px solid var(--rule);
  padding-left: 1rem;
}

.facts-grid > div:first-child { border-left: 0; padding-left: 0; }

@media (max-width: 540px) {
  .facts-grid > div:nth-child(odd) { border-left: 0; padding-left: 0; }
}

.facts-grid .label {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.8125rem;
  color: var(--ink-muted);
}

.facts-grid .value {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 36, "SOFT" 30;
  font-size: clamp(1rem, 1.4vw, 1.1875rem);
  font-feature-settings: "lnum";
  letter-spacing: -0.005em;
}

/* Plans index ----------------------------------------- */

.section-plans {
  padding: clamp(4rem, 9vw, 8rem) 0 clamp(3rem, 7vw, 6rem);
}

.section-eyeline {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 2rem;
  padding-bottom: 1.5rem;
  border-bottom: 1px solid var(--ink);
  margin-bottom: clamp(2.5rem, 5vw, 4rem);
}

.section-eyeline .label {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 70;
  font-weight: 400;
  font-size: 0.9375rem;
  color: var(--ink-muted);
}

.section-eyeline .count {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 18;
  font-weight: 300;
  font-size: 0.875rem;
  color: var(--ink-muted);
  font-feature-settings: "lnum";
  letter-spacing: 0.04em;
}

.plan-row {
  display: grid;
  grid-template-columns: 4rem 1fr;
  align-items: stretch;
  border-top: 1px solid var(--rule);
  text-decoration: none;
  color: inherit;
  transition: background 280ms ease;
  position: relative;
}

.plan-row:last-of-type { border-bottom: 1px solid var(--rule); }

.plan-row:hover { background: var(--paper-deep); }

.plan-row:hover .plan-row-image { transform: translateY(-2px); }
.plan-row:hover .plan-row-go { color: var(--brass); transform: translateX(4px); }

.plan-row-num {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 36, "SOFT" 0;
  font-weight: 300;
  font-size: 1rem;
  color: var(--ink-muted);
  padding: 1.6rem 0;
  font-feature-settings: "lnum";
  letter-spacing: 0.02em;
}

.plan-row-body {
  display: grid;
  grid-template-columns: 1fr;
  gap: 1.25rem;
  padding: 1.6rem 0;
}

@media (min-width: 720px) {
  .plan-row-body {
    grid-template-columns: 1.2fr 0.8fr 0.8fr 5rem;
    align-items: center;
    gap: 2rem;
  }
}

.plan-row-name {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(2rem, 4vw, 2.75rem);
  letter-spacing: -0.025em;
  line-height: 1;
}

.plan-row-name em {
  font-style: italic;
  font-variation-settings: "opsz" 60, "SOFT" 80, "WONK" 1;
  color: var(--brass);
  font-weight: 400;
}

.plan-row-spec {
  font-size: 0.9375rem;
  color: var(--ink-muted);
}

.plan-row-spec span { white-space: nowrap; }
.plan-row-spec .sep { padding: 0 0.4em; opacity: 0.4; }

.plan-row-price {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 36;
  font-size: 1.25rem;
  font-feature-settings: "lnum";
  color: var(--ink);
}

.plan-row-go {
  display: none;
  text-align: right;
  color: var(--ink-muted);
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 36, "SOFT" 70;
  transition: color 220ms ease, transform 220ms ease;
}

@media (min-width: 720px) {
  .plan-row-go { display: block; }
}

/* Plans grid (image-forward cards on index) ----------------------- */

.plans-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: clamp(2rem, 4vw, 3.5rem) clamp(1.5rem, 3vw, 2.5rem);
}

@media (max-width: 700px) {
  .plans-grid { grid-template-columns: 1fr; }
}

.plan-tile {
  display: block;
  text-decoration: none;
  color: inherit;
}

.plan-tile.wide { grid-column: 1 / -1; }

.plan-tile figure {
  margin: 0;
  position: relative;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--paper-deep);
}

.plan-tile.wide figure { aspect-ratio: 21 / 9; }

@media (max-width: 700px) {
  .plan-tile.wide figure { aspect-ratio: 4 / 3; }
}

.plan-tile figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.plan-tile:hover figure img { transform: scale(1.025); }

.plan-tile-meta {
  display: grid;
  grid-template-columns: 1fr max-content;
  align-items: baseline;
  gap: 1.5rem;
  padding: 1rem 0 0.4rem;
  margin-top: 0.85rem;
  border-top: 1px solid var(--rule);
}

.plan-tile-name {
  margin: 0;
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(1.625rem, 2.6vw, 2.25rem);
  letter-spacing: -0.025em;
  line-height: 1;
  color: var(--ink);
}

.plan-tile-name em {
  font-style: italic;
  font-variation-settings: "opsz" 60, "SOFT" 80, "WONK" 1;
  color: var(--brass);
  font-weight: 400;
}

.plan-tile-price {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 36;
  font-size: 1.0625rem;
  font-feature-settings: "lnum";
  color: var(--ink);
}

.plan-tile-spec {
  font-size: 0.875rem;
  color: var(--ink-muted);
  letter-spacing: 0.005em;
}

.plan-tile-spec span { white-space: nowrap; }
.plan-tile-spec .sep { padding: 0 0.4em; opacity: 0.4; }

.plan-tile:hover .plan-tile-name em { color: var(--brass-bright); }

.plan-tile-about {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: 0.5rem 0;
}

.plan-tile-about-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(1.875rem, 3vw, 2.5rem);
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0 0 1.25rem;
  color: var(--ink);
}

.plan-tile-about-title em {
  font-style: italic;
  font-variation-settings: "opsz" 60, "SOFT" 80, "WONK" 1;
  color: var(--brass);
}

.plan-tile-about-body p {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 18, "SOFT" 30;
  font-weight: 300;
  font-size: 0.9375rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 0 0 0.85rem;
}

.plan-tile-about-body p:last-child { margin-bottom: 0; }

/* Plan hero - slideshow + text side by side --------------------- */

.plan-hero {
  padding: clamp(1.75rem, 3.5vw, 3rem) 0 clamp(3rem, 6vw, 5rem);
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 2.75rem);
  align-items: start;
}

@media (min-width: 900px) {
  .plan-hero {
    grid-template-columns: 1.25fr 1fr;
    gap: clamp(2.5rem, 4vw, 4rem);
  }
}

.plan-hero .slideshow {
  margin: 0;
  max-width: none;
  aspect-ratio: 4 / 3;
}

.plan-hero-photos { min-width: 0; }
.plan-hero-photos .slideshow { margin: 0; }

@media (min-width: 900px) {
  .plan-hero > .slideshow,
  .plan-hero > .plan-hero-photos {
    position: sticky;
    top: 1.5rem;
  }
  .plan-hero > .slideshow {
    aspect-ratio: 4 / 3;
  }
}

.slideshow-note {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 60;
  font-size: 0.9rem;
  color: var(--ink-muted);
  margin: 0.85rem 0 0;
  letter-spacing: 0.005em;
}

.plan-hero-content { min-width: 0; }

.plan-hero-content .plan-detail-num {
  margin: 0 0 1rem;
}

.plan-hero-content .plan-detail-name {
  margin: 0 0 1.25rem;
  font-size: clamp(3rem, 7vw, 5.25rem);
  line-height: 0.95;
}

.plan-hero-content .plan-detail-spec {
  font-size: clamp(1rem, 1.3vw, 1.1875rem);
  line-height: 1.5;
  margin: 0 0 1.5rem;
}

.plan-hero-content .plan-hero-cta-wrap {
  margin: 0 0 1.75rem;
  padding-bottom: 1.75rem;
  border-bottom: 1px solid var(--rule);
}

.plan-hero-content .plan-overview {
  margin: 0 0 1.75rem;
}

.plan-hero-content .plan-overview p {
  font-size: 1rem;
  line-height: 1.6;
  margin-bottom: 1em;
}

.plan-hero-content .plan-overview p:last-child { margin-bottom: 0; }

.plan-hero-content .plan-meta-strip {
  margin: 1.75rem 0 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--rule);
}

.plan-hero-content .plan-features-title { margin-top: 1.5rem; }

.plan-hero-content .plan-features {
  grid-template-columns: 1fr 1fr;
  font-size: 0.875rem;
}

@media (max-width: 480px) {
  .plan-hero-content .plan-features { grid-template-columns: 1fr; }
}

/* Plan detail page ----------------------------------------- */

.plan-detail-hero {
  padding: clamp(2rem, 5vw, 4rem) 0 clamp(2rem, 4vw, 3rem);
}

.plan-detail-num {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 24, "SOFT" 70;
  font-weight: 400;
  font-size: 1rem;
  color: var(--ink-muted);
  margin-bottom: 1.5rem;
}

.plan-detail-name {
  margin: 0 0 1.5rem;
  font-size: clamp(3.5rem, 11vw, 9rem);
}

.plan-detail-spec {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1.25rem, 2.4vw, 1.875rem);
  color: var(--ink);
  line-height: 1.35;
  max-width: 50rem;
  margin: 0;
  letter-spacing: -0.015em;
}

.plan-detail-spec em {
  font-style: italic;
  font-variation-settings: "opsz" 60, "SOFT" 80, "WONK" 1;
  color: var(--brass);
}

.plan-detail-photo {
  margin-top: clamp(2rem, 4vw, 3.5rem);
  aspect-ratio: 16 / 9;
  overflow: hidden;
  background: var(--paper-deep);
}

.plan-detail-photo img { width: 100%; height: 100%; object-fit: cover; display: block; }

/* Plan body - description, features, community ------------------- */

.plan-body {
  padding: clamp(3rem, 6vw, 5rem) 0 clamp(2rem, 4vw, 3rem);
}

.plan-body-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2.5rem, 4vw, 3.5rem);
}

@media (min-width: 880px) {
  .plan-body-grid { grid-template-columns: 1.5fr 1fr; gap: clamp(3rem, 5vw, 5rem); }
}

.plan-overview p {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1.0625rem, 1.4vw, 1.25rem);
  line-height: 1.55;
  color: var(--ink);
  margin: 0 0 1.25em;
  letter-spacing: -0.005em;
}

.plan-overview p:last-child { margin-bottom: 0; }

.plan-features-title {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 70;
  font-size: 0.9375rem;
  color: var(--ink-muted);
  margin: 0 0 1rem;
}

.plan-features {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.65rem 1.5rem;
  font-family: 'Manrope', sans-serif;
  font-size: 0.9375rem;
  color: var(--ink);
}

.plan-features li {
  border-top: 1px solid var(--rule);
  padding: 0.55rem 0;
}

.plan-meta-strip {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.45rem 1.5rem;
  font-family: 'Manrope', sans-serif;
  font-size: 0.875rem;
  color: var(--ink-muted);
  margin-bottom: 2rem;
}

.plan-meta-strip dt {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
}

.plan-meta-strip dd { margin: 0; color: var(--ink); }

/* Community block ------------------------------------------------- */

.community {
  padding: clamp(3rem, 6vw, 5rem) 0;
  border-top: 1px solid var(--rule);
}

.community-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

@media (min-width: 800px) {
  .community-grid { grid-template-columns: 0.7fr 1fr; }
}

.community-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(2rem, 3.5vw, 2.75rem);
  letter-spacing: -0.025em;
  line-height: 1.05;
  margin: 0;
}

.community-title em {
  font-style: italic;
  font-variation-settings: "opsz" 60, "SOFT" 80, "WONK" 1;
  color: var(--brass);
}

.community-body p {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 18, "SOFT" 30;
  font-weight: 300;
  font-size: 1rem;
  line-height: 1.6;
  color: var(--ink);
  margin: 0 0 1em;
}

.community-body p:last-child { margin-bottom: 0; }

/* Slideshow - one photo at a time with prev/next + counter ------- */

.slideshow {
  position: relative;
  width: 100%;
  max-width: 1400px;
  margin: 1.5rem auto 0;
  aspect-ratio: 16 / 9;
  background: var(--paper-deep);
  overflow: hidden;
  outline: none;
}

.slide {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: contain;
  display: block;
  opacity: 0;
  transition: opacity 360ms cubic-bezier(0.22, 1, 0.36, 1);
  pointer-events: none;
}

.slide.active {
  opacity: 1;
  pointer-events: auto;
}

.slideshow-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 48px;
  height: 48px;
  background: rgba(255, 255, 255, 0.92);
  border: 1px solid var(--rule);
  color: var(--ink);
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 36, "SOFT" 70;
  font-size: 1.5rem;
  line-height: 1;
  padding: 0;
  transition: background 220ms ease, color 220ms ease;
  z-index: 2;
}

.slideshow-nav:hover {
  background: var(--paper);
  color: var(--brass);
}

.slideshow-nav:focus-visible {
  outline: 2px solid var(--brass);
  outline-offset: 2px;
}

.slideshow-prev { left: 1rem; }
.slideshow-next { right: 1rem; }

.slideshow-counter {
  position: absolute;
  bottom: 1rem;
  right: 1rem;
  background: rgba(14, 13, 11, 0.78);
  color: var(--paper);
  padding: 0.4rem 0.85rem;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 60;
  font-size: 0.875rem;
  font-feature-settings: "lnum";
  letter-spacing: 0.04em;
  z-index: 2;
}

.slideshow.single-photo .slideshow-nav,
.slideshow.single-photo .slideshow-counter { display: none; }

@media (max-width: 600px) {
  .slideshow-prev { left: 0.5rem; }
  .slideshow-next { right: 0.5rem; }
  .slideshow-nav { width: 44px; height: 44px; font-size: 1.375rem; }
  .slideshow-counter { bottom: 0.6rem; right: 0.6rem; font-size: 0.8125rem; padding: 0.3rem 0.65rem; }
}

/* Hero collage / hero pair (full-bleed photo strip) -------------- */

.hero-collage,
.hero-pair {
  width: 100%;
  margin-top: 1.5rem;
  background: var(--paper-deep);
}

.hero-collage figure,
.hero-pair figure {
  margin: 0;
  overflow: hidden;
  background: var(--paper-deep);
  cursor: zoom-in;
  position: relative;
}

.hero-collage figure img,
.hero-pair figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}

.hero-collage figure:hover img,
.hero-pair figure:hover img { transform: scale(1.03); }

.hero-collage {
  display: grid;
  grid-template-columns: 0.85fr 2.4fr 1fr 1fr;
  grid-template-rows: 1fr 1fr;
  gap: 6px;
  height: clamp(420px, 58vh, 620px);
}

.hero-collage > figure:nth-child(1) { grid-row: 1 / 3; }
.hero-collage > figure:nth-child(2) { grid-row: 1 / 3; }

@media (max-width: 720px) {
  .hero-collage {
    grid-template-columns: 1fr 1fr;
    grid-template-rows: auto;
    height: auto;
  }
  .hero-collage > figure { grid-row: auto !important; aspect-ratio: 4 / 3; }
  .hero-collage > figure:nth-child(2) { grid-column: 1 / -1; aspect-ratio: 16 / 9; }
}

.hero-pair {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 6px;
  height: clamp(360px, 50vh, 540px);
}

@media (max-width: 720px) {
  .hero-pair { grid-template-columns: 1fr; height: auto; }
  .hero-pair figure { aspect-ratio: 4 / 3; }
}

/* Neighborhood + map embed --------------------------------------- */

.neighborhood,
.amenities {
  padding: clamp(3rem, 6vw, 4.5rem) 0;
  border-top: 1px solid var(--rule);
}

.neighborhood-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(1.5rem, 3vw, 2.5rem);
}

@media (min-width: 880px) {
  .neighborhood-grid { grid-template-columns: 0.8fr 1.2fr; gap: clamp(2rem, 4vw, 3rem); }
}

.neighborhood-info h3 {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 36, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(1.25rem, 2vw, 1.5rem);
  line-height: 1.3;
  margin: 0 0 1.25rem;
  letter-spacing: -0.015em;
  color: var(--ink);
}

.neighborhood-info dl {
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.55rem 1.5rem;
  margin: 0 0 1.5rem;
  font-size: 0.9375rem;
  color: var(--ink);
}

.neighborhood-info dt {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  color: var(--ink-muted);
  font-weight: 400;
}

.neighborhood-info dd { margin: 0; }

.neighborhood-info a {
  color: var(--ink);
  text-decoration: none;
  border-bottom: 1px solid var(--rule);
  padding-bottom: 1px;
}

.neighborhood-info a:hover {
  color: var(--brass);
  border-bottom-color: var(--brass);
}

.neighborhood-map {
  position: relative;
  aspect-ratio: 4 / 3;
  background: var(--paper-deep);
  overflow: hidden;
  border: 1px solid var(--rule);
}

.neighborhood-map iframe {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  border: 0;
  filter: saturate(0.82) contrast(1.04);
}

/* Amenities ------------------------------------------------------ */

.amenities-group { margin-top: 2.25rem; }
.amenities-group:first-of-type { margin-top: 1.5rem; }

.amenities-group-title {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 24, "SOFT" 60;
  font-weight: 400;
  font-size: 1.125rem;
  color: var(--ink);
  margin: 0 0 0.85rem;
  letter-spacing: -0.005em;
}

.amenities-list {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
  margin: 0;
  border-top: 1px solid var(--ink);
}

@media (max-width: 700px) {
  .amenities-list { grid-template-columns: 1fr; }
}

.amenity {
  display: flex;
  flex-direction: column;
  gap: 0.2rem;
  padding: 1rem 0;
  border-bottom: 1px solid var(--rule);
}

@media (min-width: 701px) {
  .amenity:nth-child(odd) { padding-right: 2rem; }
  .amenity:nth-child(even) {
    padding-left: 2rem;
    border-left: 1px solid var(--rule);
  }
}

.amenity-label {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.875rem;
  color: var(--ink-muted);
}

.amenity-value {
  font-family: 'Manrope', sans-serif;
  font-size: 1rem;
  color: var(--ink);
}

/* Editorial gallery ----------------------------------------- */

.gallery {
  padding: clamp(2rem, 4vw, 4rem) 0 clamp(3rem, 6vw, 5rem);
}

.gallery-mosaic {
  display: grid;
  grid-template-columns: repeat(6, 1fr);
  gap: clamp(0.5rem, 1.2vw, 1rem);
}

.gallery-mosaic figure {
  margin: 0;
  position: relative;
  background: var(--paper-deep);
  cursor: zoom-in;
  overflow: hidden;
}

.gallery-mosaic figure img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 600ms cubic-bezier(0.22, 1, 0.36, 1);
}

.gallery-mosaic figure:hover img { transform: scale(1.04); }

.gallery-mosaic figure figcaption {
  position: absolute;
  bottom: 0.6rem;
  left: 0.6rem;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.75rem;
  color: var(--paper);
  background: rgba(14, 13, 11, 0.75);
  padding: 0.2em 0.55em;
  letter-spacing: 0.01em;
  opacity: 0;
  transition: opacity 220ms ease;
  font-feature-settings: "lnum";
}

.gallery-mosaic figure:hover figcaption { opacity: 1; }

/* Mosaic spans - varied sizes for editorial feel */
.span-2 { grid-column: span 2; aspect-ratio: 4/3; }
.span-3 { grid-column: span 3; aspect-ratio: 4/3; }
.span-4 { grid-column: span 4; aspect-ratio: 16/10; }
.span-6 { grid-column: span 6; aspect-ratio: 16/8; }
.span-tall { grid-column: span 2; aspect-ratio: 3/4; }

@media (max-width: 720px) {
  .gallery-mosaic { grid-template-columns: repeat(2, 1fr); }
  .span-2, .span-3, .span-4, .span-6, .span-tall { grid-column: span 2; aspect-ratio: 4/3; }
}

/* About ----------------------------------------- */

.about {
  padding: clamp(4rem, 8vw, 7rem) 0;
  border-top: 1px solid var(--rule);
}

.about-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: start;
}

@media (min-width: 800px) {
  .about-grid { grid-template-columns: 0.85fr 1.15fr; }
}

.about-portrait {
  position: relative;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  background: var(--paper-deep);
  max-width: 24rem;
}

.about-portrait img { width: 100%; height: 100%; object-fit: cover; display: block; }

.about-body {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1.25rem, 1.8vw, 1.5rem);
  line-height: 1.45;
  letter-spacing: -0.005em;
  color: var(--ink);
  max-width: 36rem;
}

.about-body p { margin: 0 0 1.25em; }

.about-body em {
  font-style: italic;
  font-variation-settings: "opsz" 24, "SOFT" 70;
  color: var(--brass);
}

.about-detail {
  margin-top: 2rem;
  display: grid;
  grid-template-columns: max-content 1fr;
  gap: 0.55rem 1.75rem;
  font-family: 'Manrope', sans-serif;
  font-size: 0.875rem;
  color: var(--ink-muted);
}

.about-detail dt {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
}

.about-detail dd { margin: 0; color: var(--ink); }

.about-detail a { color: var(--ink); text-decoration: none; border-bottom: 1px solid var(--rule); padding-bottom: 1px; }
.about-detail a:hover { color: var(--brass); border-bottom-color: var(--brass); }

/* Bottom CTA - integrated, not a separate "luxury" box ------------ */

.endbar {
  padding: clamp(4rem, 8vw, 7rem) 0 clamp(3rem, 5vw, 4rem);
  border-top: 1px solid var(--ink);
  background: var(--ink);
  color: var(--paper);
}

.endbar .display { color: var(--paper); }

.endbar-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 4vw, 3rem);
  align-items: end;
}

@media (min-width: 800px) {
  .endbar-grid { grid-template-columns: 1.4fr 1fr; }
}

.endbar h2 {
  margin: 0;
  font-size: clamp(2.5rem, 6vw, 5rem);
  line-height: 0.96;
  max-width: 18ch;
}

.endbar h2 em {
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 80, "WONK" 1;
  color: var(--brass-bright);
}

.endbar-aside {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.55;
  color: rgba(255, 255, 255, 0.72);
  max-width: 28rem;
}

.endbar-aside p { margin: 0 0 1.5rem; }

.endbar .btn {
  background: var(--brass-bright);
  color: var(--ink);
  border-color: var(--brass-bright);
}

.endbar .btn:hover {
  background: var(--paper);
  color: var(--ink);
  border-color: var(--paper);
}

/* Footer ----------------------------------------- */

.foot {
  background: var(--ink);
  color: rgba(255, 255, 255, 0.62);
  padding: 2rem 0;
  font-size: 0.8125rem;
}

.foot-grid {
  display: flex;
  flex-wrap: wrap;
  gap: 1.25rem 2.5rem;
  align-items: baseline;
  justify-content: space-between;
}

.foot a { color: rgba(255, 255, 255, 0.86); text-decoration: none; }
.foot a:hover { color: var(--brass-bright); }

/* Back link ----------------------------------------- */

.back {
  display: inline-flex;
  align-items: baseline;
  gap: 0.5rem;
  color: var(--ink-muted);
  text-decoration: none;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 60;
  font-size: 1rem;
  margin: 1.5rem 0 0;
}

.back::before { content: '←'; transition: transform 220ms ease; }
.back:hover { color: var(--brass); }
.back:hover::before { transform: translateX(-3px); }

/* Reveal ----------------------------------------- */

[data-reveal] {
  opacity: 0;
  transform: translateY(8px);
  transition: opacity 800ms cubic-bezier(0.22, 1, 0.36, 1), transform 800ms cubic-bezier(0.22, 1, 0.36, 1);
}

[data-reveal].in { opacity: 1; transform: translateY(0); }

a:focus-visible { outline: 2px solid var(--brass); outline-offset: 3px; }

/* Lightbox (kept dark for image viewing) ---------- */

.lightbox {
  position: fixed;
  inset: 0;
  background: rgba(14, 13, 11, 0.96);
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 1.5rem;
  cursor: zoom-out;
}

.lightbox.open { display: flex; animation: fade 220ms ease; }
.lightbox .lb-fig { margin: 0; max-width: 100%; max-height: 100%; display: flex; align-items: center; justify-content: center; }
.lightbox img { max-width: 100%; max-height: 90vh; object-fit: contain; cursor: default; }

/* Navigable gallery controls */
.lb-close, .lb-nav {
  position: absolute;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.28);
  color: #fff;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: background 160ms ease, border-color 160ms ease;
  z-index: 2;
}
.lb-close:hover, .lb-nav:hover { background: rgba(255, 255, 255, 0.18); border-color: #fff; }
.lb-close {
  top: 1.25rem; right: 1.25rem;
  width: 40px; height: 40px; border-radius: 50%;
  font-size: 1.1rem; line-height: 1;
}
.lb-nav {
  top: 50%; transform: translateY(-50%);
  width: 52px; height: 52px; border-radius: 50%;
  font-family: 'Fraunces', serif; font-size: 2rem; line-height: 1; padding-bottom: 4px;
}
.lb-prev { left: 1.5rem; }
.lb-next { right: 1.5rem; }
.lb-count {
  position: absolute; bottom: 1.25rem; left: 50%; transform: translateX(-50%);
  color: #fff; font-family: 'Manrope', sans-serif; font-size: 0.85rem;
  font-feature-settings: "lnum"; letter-spacing: 0.03em;
  background: rgba(0, 0, 0, 0.4); padding: 0.3rem 0.85rem; border-radius: 999px;
}
@media (max-width: 640px) {
  .lb-nav { width: 42px; height: 42px; font-size: 1.6rem; }
  .lb-prev { left: 0.6rem; }
  .lb-next { right: 0.6rem; }
  .lb-close { top: 0.75rem; right: 0.75rem; }
}

.lightbox-close {
  position: absolute;
  top: 1.25rem;
  right: 1.25rem;
  background: transparent;
  border: 1px solid rgba(255, 255, 255, 0.3);
  color: var(--paper);
  width: 38px;
  height: 38px;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  font-family: 'Fraunces', serif;
  font-size: 1.25rem;
  line-height: 1;
}

.lightbox-close:hover { border-color: var(--brass-bright); color: var(--brass-bright); }

@keyframes fade { from { opacity: 0 } to { opacity: 1 } }

/* Mobile polish ---------------------------------------------------- */

@media (max-width: 600px) {
  /* Smaller type so headings don't bust the viewport */
  .hero-title { font-size: clamp(2.75rem, 13vw, 5rem); line-height: 0.95; }
  .plan-detail-name { font-size: clamp(2.75rem, 13vw, 5rem); line-height: 0.95; }
  .plan-hero-content .plan-detail-name { font-size: clamp(2.5rem, 12vw, 4.25rem); line-height: 0.95; }
  .endbar h2 { font-size: clamp(2rem, 9vw, 3.25rem); line-height: 0.95; }
  .community-title { font-size: clamp(1.875rem, 6vw, 2.5rem); }
  .plan-tile-about-title { font-size: clamp(1.75rem, 5.5vw, 2.25rem); }
  .display { line-height: 0.95; }

  /* Body text */
  .hero-tagline { font-size: 0.95rem; }
  .plan-overview p { font-size: 0.95rem; line-height: 1.6; }
  .community-body p,
  .plan-tile-about-body p { font-size: 0.9375rem; line-height: 1.6; }
  .about-body { font-size: 1.0625rem; }
  .endbar-aside { font-size: 0.95rem; }
  .plan-detail-num { font-size: 0.78rem; }

  /* Sections - keep generous spacing between them */
  .hero { padding: 2rem 0 2.5rem; gap: 2rem; }
  .plan-hero { padding: 1.75rem 0 3rem; gap: 2rem; }
  .section-plans { padding: 3rem 0 2.5rem; }
  .about { padding: 3rem 0; }
  .community { padding: 2.5rem 0; }
  .neighborhood, .amenities { padding: 2.5rem 0; }
  .endbar { padding: 3rem 0 2.5rem; }
  .plan-body { padding: 2.5rem 0 1.5rem; }
  .plans-grid { gap: 2.5rem; }

  /* Layout chrome */
  .topstrip { padding: 0.85rem 0; font-size: 0.75rem; }
  .topstrip .name { font-size: 0.95rem; }
  .topstrip .meta { gap: 0.85rem; }
  .section-eyeline { flex-wrap: wrap; gap: 0.4rem 1rem; margin-bottom: 1.75rem; }
  .hero-eyebrow { margin-bottom: 0.85rem; font-size: 0.85rem; }

  /* Plan tile compact */
  .plan-tile-name { font-size: 1.5rem; }
  .plan-tile-price { font-size: 0.95rem; }
  .plan-tile-spec { font-size: 0.8125rem; }

  /* Slideshow gets a clear bottom break before content */
  .plan-hero-photos { margin-bottom: 0.5rem; }
  .slideshow-note { font-size: 0.85rem; margin-top: 0.85rem; }

  /* CTAs full-width on phones */
  .hero-ctas { gap: 1rem; width: 100%; }
  .hero-ctas .btn { width: 100%; justify-content: center; }
  .endbar .btn { width: 100%; justify-content: center; }

  /* Detail lists tighten up */
  .neighborhood-info dl,
  .plan-meta-strip { gap: 0.45rem 1rem; font-size: 0.8125rem; }
  .neighborhood-info h3 { font-size: 1.125rem; margin-bottom: 0.85rem; }
  .plan-features { font-size: 0.8125rem; }

  /* Footer */
  .foot-grid { gap: 0.6rem 1.25rem; }
  .foot { font-size: 0.72rem; padding: 1.5rem 0; }

  .lightbox-close { top: 0.75rem; right: 0.75rem; }
  .wrap { padding: 0 1.4rem; }
}

/* Prevent long URLs/emails from forcing horizontal overflow */
.about-detail dd,
.neighborhood-info dd,
.foot a {
  word-break: break-word;
  overflow-wrap: anywhere;
}

/* Tap target floor - every clickable interaction at least 44×44 */
@media (max-width: 600px) {
  .btn, .btn-link, .sticky-cta, .slideshow-nav {
    min-height: 44px;
  }
}

/* Prevent images & figures from forcing horizontal overflow */
figure, .plan-tile figure, .hero-photo, .hero-card-banner, .slideshow {
  max-width: 100%;
}

/* Mobile sticky CTA - minimal, only when needed ---- */

.sticky-cta {
  position: fixed;
  bottom: 1rem;
  left: 1rem;
  right: 1rem;
  z-index: 50;
  text-align: center;
  background: var(--ink);
  color: var(--paper);
  padding: 0.95rem 1.25rem;
  font-family: 'Manrope', sans-serif;
  font-weight: 500;
  font-size: 0.875rem;
  text-decoration: none;
  border: 1px solid var(--ink);
  transition: opacity 220ms ease, transform 220ms ease;
}

.sticky-cta::after {
  content: ' →';
  font-family: 'Fraunces', serif;
  font-style: italic;
}

.sticky-cta.hidden {
  opacity: 0;
  transform: translateY(120%);
  pointer-events: none;
}

@media (max-width: 767px) {
  body { padding-bottom: 5rem; }
}

@media (min-width: 768px) {
  .sticky-cta { display: none; }
}

/* =====================================================================
   Pre-qualify form - editorial styling
   ===================================================================== */

.reserve {
  padding: clamp(4rem, 8vw, 7rem) 0;
  border-top: 1px solid var(--rule);
  background: var(--paper-deep);
}

.reserve-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2.5rem, 5vw, 4rem);
  align-items: start;
}

@media (min-width: 900px) {
  .reserve-grid { grid-template-columns: 0.9fr 1.1fr; gap: clamp(3rem, 5vw, 5rem); }
}

.reserve-copy h2 { margin: 1.25rem 0 1.5rem; font-size: clamp(2.25rem, 5vw, 3.75rem); line-height: 0.98; }
.reserve-copy h2 em {
  font-style: italic;
  font-variation-settings: "opsz" 144, "SOFT" 80, "WONK" 1;
  color: var(--brass);
}

.reserve-aside {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: 1.0625rem;
  line-height: 1.6;
  color: var(--ink-muted);
  max-width: 30rem;
  margin: 0 0 1.75rem;
}

.reserve-points { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0; }
.reserve-points li {
  font-family: 'Manrope', sans-serif;
  font-size: 0.95rem;
  color: var(--ink);
  padding: 0.85rem 0;
  border-top: 1px solid var(--rule);
  display: flex;
  align-items: baseline;
  gap: 0.7rem;
}
.reserve-points li:last-child { border-bottom: 1px solid var(--rule); }
.reserve-points li::before {
  content: '';
  width: 6px; height: 6px; flex: none;
  background: var(--brass);
  transform: rotate(45deg);
  position: relative; top: -0.1em;
}

/* Form card */
.form-card {
  background: var(--paper);
  border: 1px solid var(--rule);
  padding: clamp(1.75rem, 3.5vw, 2.75rem);
}

.form-card .form-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 30;
  font-weight: 400;
  font-size: clamp(1.5rem, 2.5vw, 1.9rem);
  letter-spacing: -0.02em;
  line-height: 1.05;
  margin: 0 0 0.5rem;
  color: var(--ink);
}
.form-card .form-sub {
  font-family: 'Fraunces', serif; font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.9rem; color: var(--ink-muted); margin: 0 0 1.75rem;
}

.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1.25rem; }
@media (max-width: 480px) { .form-row { grid-template-columns: 1fr; } }

.field { display: flex; flex-direction: column; gap: 0.45rem; margin-bottom: 1.25rem; }
.field label {
  font-family: 'Manrope', sans-serif;
  font-size: 0.72rem; font-weight: 500;
  letter-spacing: 0.12em; text-transform: uppercase;
  color: var(--ink-muted);
}
.field label .req { color: var(--brass); }
.field input, .field select {
  font-family: 'Manrope', sans-serif;
  font-size: 1rem; color: var(--ink);
  padding: 0.7rem 0; border: 0; border-bottom: 1px solid var(--rule);
  background: transparent; width: 100%; border-radius: 0;
  transition: border-color 200ms ease;
}
.field select { padding: 0.7rem 0; }
.field input:focus, .field select:focus { outline: none; border-bottom-color: var(--brass); }
.field input::placeholder { color: var(--ink-soft); }
.field.invalid input, .field.invalid select { border-bottom-color: #b3402f; }
.field .error-msg { display: none; color: #b3402f; font-size: 0.72rem; }
.field.invalid .error-msg { display: block; }

.form-card .btn { width: 100%; justify-content: center; margin-top: 0.75rem; }

.form-consent { font-family: 'Manrope', sans-serif; font-size: 0.72rem; color: var(--ink-soft); line-height: 1.55; margin: 1rem 0 0; }
.form-consent a { color: var(--ink-muted); }
.form-status { font-family: 'Manrope', sans-serif; font-size: 0.85rem; font-weight: 500; margin-top: 0.9rem; display: none; }
.form-status.show { display: block; }
.form-status.error { color: #b3402f; }
/* Failure fallback: make the phone/email obvious and easy to tap */
.form-status.error a {
  color: #b3402f; font-weight: 700; text-decoration: underline;
  text-underline-offset: 2px; white-space: nowrap;
}
.form-status.error a:hover { color: var(--ink); }
.form-status.success { color: #1f7a4d; }
.form-card.is-submitting { opacity: 0.65; pointer-events: none; }

/* =====================================================================
   $25K buyer-credit promo — top bar + hero callout
   ===================================================================== */
.promo-bar {
  background: var(--brass);
  color: #fff;
}
.promo-bar p {
  margin: 0 auto;
  max-width: 1240px;
  padding: 0.65rem 1.5rem;
  text-align: center;
  font-family: 'Manrope', sans-serif;
  font-size: 0.84rem;
  letter-spacing: 0.01em;
  line-height: 1.4;
}
.promo-bar strong { font-weight: 600; }
@media (max-width: 600px) {
  .promo-bar p { font-size: 0.73rem; padding: 0.55rem 1rem; }
}

/* $25K starburst sticker on the hero render */
.hero-photo { position: relative; overflow: visible; }
.hero-photo img.hero-sticker {
  position: absolute;
  top: -36px;
  right: -26px;
  width: clamp(116px, 13vw, 176px);
  max-width: 50%;
  height: auto;
  transform: rotate(7deg);
  filter: drop-shadow(0 6px 16px rgba(6, 40, 63, 0.28));
  z-index: 4;
  pointer-events: none;
}
@media (max-width: 700px) {
  .hero-photo img.hero-sticker { width: 104px; top: -22px; right: -6px; }
}

.hero-credit {
  display: inline-flex;
  align-items: center;
  gap: 0.85rem;
  margin: 0 0 1.9rem;
  padding: 0.75rem 1.15rem;
  border: 1px solid var(--brass);
  background: rgba(30, 108, 168, 0.06);
}
.hero-credit-amt {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 144, "SOFT" 0;
  font-weight: 600;
  font-size: 2rem;
  color: var(--brass);
  line-height: 1;
}
.hero-credit-txt {
  font-family: 'Manrope', sans-serif;
  font-size: 0.85rem;
  font-weight: 500;
  color: var(--ink-muted);
  max-width: 15rem;
  line-height: 1.3;
}
@media (max-width: 600px) {
  .hero-credit-amt { font-size: 1.6rem; }
  .hero-credit-txt { font-size: 0.78rem; }
}

/* Checkbox / multi-select choice group */
.field input[type="checkbox"], .field input[type="radio"] {
  width: auto; border: 0; border-bottom: 0; padding: 0;
  accent-color: var(--brass);
}
.choice-group { display: grid; gap: 0.7rem; margin-top: 0.35rem; }
.field .choice {
  display: flex; align-items: center; gap: 0.6rem;
  text-transform: none; letter-spacing: 0; font-weight: 400;
  font-size: 0.95rem; color: var(--ink); cursor: pointer;
}
.field .choice input[type="checkbox"] { width: 1.05rem; height: 1.05rem; flex-shrink: 0; }

/* Plan tile spec/price tweaks for "inquire" pricing */
.plan-tile-price.inquire { font-style: italic; font-variation-settings: "opsz" 28, "SOFT" 70; color: var(--brass); font-size: 0.95rem; }

/* Reuse amenities list look for included features grid heading spacing */
.amenities .section-eyeline { margin-bottom: clamp(1.5rem, 3vw, 2.5rem); }

/* Plan tiles showing floor plans (just the plan, no backing panel) */
.plan-tile figure.fp { background: transparent; aspect-ratio: auto; overflow: visible; }
.plan-tile figure.fp img { width: 100%; height: auto; object-fit: contain; padding: 0; }
.plan-tile:hover figure.fp img { transform: none; }

/* Landing page: the three plans in one clean row; About spans full width */
#plans .plans-grid { grid-template-columns: repeat(3, 1fr); align-items: start; }
#plans .plan-tile-about { grid-column: 1 / -1; }
@media (max-width: 760px) { #plans .plans-grid { grid-template-columns: 1fr; } }

/* Landing page: center each plan's title/specs under the photo */
#plans .plan-tile-meta { grid-template-columns: 1fr; justify-items: center; text-align: center; gap: 0.25rem; }
#plans .plan-tile-spec { text-align: center; }

/* Allow an image inside the neighborhood map frame */
.neighborhood-map.has-img { aspect-ratio: auto; overflow: visible; cursor: zoom-in; max-width: 480px; margin: 0 0 0 auto; }
.neighborhood-map.has-img img { position: static; inset: auto; width: 100%; height: auto; object-fit: contain; filter: none; }
.neighborhood-map img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; filter: none; }

/* Floor-plan figure on the homes page */
.floorplan-fig {
  margin: 1.5rem 0 0; border: 1px solid var(--rule); overflow: hidden;
  background: var(--paper-deep); cursor: zoom-in; position: relative; max-width: 360px;
}
.floorplan-fig img { width: 100%; display: block; }
.floorplan-fig figcaption {
  position: absolute; bottom: 0; left: 0; right: 0; padding: 0.55rem 0.85rem;
  background: linear-gradient(transparent, rgba(6,40,63,0.85)); color: var(--paper);
  font-family: 'Fraunces', serif; font-style: italic; font-size: 0.8rem;
  display: flex; align-items: center; gap: 0.5rem;
}
.floorplan-fig figcaption::after { content: '⤢'; margin-left: auto; font-style: normal; }

/* Site plan figure */
.siteplan-fig { margin: 0 auto; border: 1px solid var(--rule); overflow: hidden; background: var(--paper); cursor: zoom-in; max-width: 760px; }
.siteplan-fig img { width: 100%; display: block; }

/* =====================================================================
   Footer legal bar - disclosures, licensing, Equal Housing
   ===================================================================== */
.foot-legal {
  display: flex;
  gap: 1.25rem;
  align-items: flex-start;
  margin-top: 1.75rem;
  padding-top: 1.5rem;
  border-top: 1px solid rgba(255, 255, 255, 0.14);
}
.eho-logo {
  width: 44px;
  height: auto;
  flex-shrink: 0;
  opacity: 0.92;
  margin-top: 0.1rem;
}
.foot-disclosure {
  margin: 0 0 0.6rem;
  font-size: 0.72rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.5);
}
.foot-links {
  margin: 0;
  font-size: 0.72rem;
  line-height: 1.6;
  color: rgba(255, 255, 255, 0.5);
}
.foot-links a { color: rgba(255, 255, 255, 0.82); }

@media (max-width: 600px) {
  .foot-legal { gap: 0.9rem; margin-top: 1.25rem; padding-top: 1.1rem; }
  .eho-logo { width: 36px; }
  .foot-disclosure, .foot-links { font-size: 0.68rem; }
}

/* Legal article pages (privacy / terms / disclosures) */
.legal-body h2 { font-size: 1.5rem; margin: 2rem 0 0.75rem; }
.legal-body h3 { font-size: 1.15rem; margin: 1.5rem 0 0.5rem; }
.legal-body p, .legal-body li { color: var(--ink-muted); }
.legal-body ul { margin: 0 0 1rem; padding-left: 1.25rem; }
.legal-body li { margin-bottom: 0.4rem; }

/* =====================================================================
   SEO content + FAQ (Merced new construction)
   ===================================================================== */
.seo-merced { padding: clamp(3.5rem, 7vw, 6rem) 0; border-top: 1px solid var(--rule); }
.seo-grid { display: grid; grid-template-columns: 1fr; gap: clamp(2.5rem, 5vw, 3.5rem); }
@media (min-width: 940px) {
  .seo-grid { grid-template-columns: 1fr 1fr; gap: clamp(3rem, 5vw, 5rem); align-items: start; }
}
.seo-copy h2 { font-size: clamp(2rem, 4vw, 3.25rem); line-height: 1.02; margin: 1.25rem 0 1.5rem; }
.seo-copy p {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300; font-size: 1.0625rem; line-height: 1.6;
  color: var(--ink); margin: 0 0 1.1rem; max-width: 34rem;
}
.seo-copy p:last-child { margin-bottom: 0; }
.seo-copy strong { font-weight: 500; }

.faq-item { border-top: 1px solid var(--rule); }
.faq-item:last-child { border-bottom: 1px solid var(--rule); }
.faq-item summary {
  list-style: none; cursor: pointer; position: relative;
  padding: 1.15rem 2rem 1.15rem 0;
  font-family: 'Manrope', sans-serif; font-weight: 500; font-size: 1rem; color: var(--ink);
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after {
  content: '+'; position: absolute; right: 0; top: 50%; transform: translateY(-50%);
  font-family: 'Fraunces', serif; font-size: 1.5rem; line-height: 1; color: var(--brass);
}
.faq-item[open] summary::after { content: '\2013'; }
.faq-item summary:hover { color: var(--brass); }
.faq-a { padding: 0 0 1.25rem; }
.faq-a p { font-size: 0.95rem; line-height: 1.6; color: var(--ink-muted); margin: 0; max-width: 34rem; }

/* ===== FGC communities: card badge + note ===== */
.comm-badge {
  position: absolute;
  top: 0.85rem;
  left: 0.85rem;
  z-index: 2;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 14, "SOFT" 60;
  font-size: 0.75rem;
  letter-spacing: 0.01em;
  color: #fff;
  background: rgba(6, 40, 63, 0.82);
  padding: 0.3rem 0.75rem;
  border-radius: 999px;
  backdrop-filter: blur(2px);
}
.plan-tile-spec span[data-lang] { white-space: normal; }
.comm-note {
  margin: clamp(2rem, 4vw, 3rem) 0 0;
  font-size: 0.8125rem;
  line-height: 1.55;
  color: var(--ink-muted);
  max-width: 60rem;
}

/* ===== About the builder (FGC) ===== */
.builder {
  padding: clamp(4rem, 8vw, 7rem) 0;
  border-top: 1px solid var(--rule);
  background: var(--paper-deep);
}
.builder-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: clamp(2rem, 5vw, 4rem);
  align-items: center;
}
@media (min-width: 860px) {
  .builder-grid { grid-template-columns: 1.15fr 0.85fr; }
}
.builder-copy .tag { margin: 0 0 1.25rem; }
.builder-copy .display { margin: 0 0 1.5rem; }
.builder-body {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1.05rem, 1.5vw, 1.2rem);
  line-height: 1.6;
  color: var(--ink);
}
.builder-body p { margin: 0 0 1rem; }
.builder-body p:last-child { margin-bottom: 0; }
.builder-link {
  margin: 1.5rem 0 0;
  font-family: 'Manrope', sans-serif;
  font-weight: 600;
  font-size: 0.95rem;
}
.builder-link a { color: var(--brass); text-decoration: none; }
.builder-link a:hover { text-decoration: underline; }

.builder-panel {
  background: var(--ink);
  color: var(--paper);
  border-radius: 14px;
  padding: clamp(1.75rem, 3vw, 2.5rem);
  box-shadow: 0 18px 44px rgba(6, 40, 63, 0.18);
}
.builder-logo {
  display: block;
  width: clamp(120px, 40%, 165px);
  height: auto;
  margin: 0 0 1.25rem;
}
.builder-slogan {
  margin: 0 0 1.5rem;
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-size: clamp(1.15rem, 2vw, 1.4rem);
  line-height: 1.3;
  color: #fff;
}
.builder-stats {
  margin: 0;
  display: grid;
  gap: 1.1rem;
  border-top: 1px solid rgba(255, 255, 255, 0.16);
  padding-top: 1.4rem;
}
.builder-stats > div { display: block; }
.builder-stats dt {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 28;
  font-size: 1.35rem;
  line-height: 1.1;
  color: #fff;
  margin: 0 0 0.15rem;
}
.builder-stats dd {
  margin: 0;
  font-size: 0.85rem;
  line-height: 1.4;
  color: rgba(255, 255, 255, 0.78);
}

/* ===== Inside the homes gallery ===== */
.inside { padding: clamp(2rem, 5vw, 4rem) 0 clamp(3rem, 7vw, 6rem); }
.inside-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(0.75rem, 1.5vw, 1.25rem);
  margin-top: clamp(1.5rem, 3vw, 2.5rem);
}
@media (max-width: 700px) {
  .inside-grid { grid-template-columns: 1fr 1fr; }
  .inside-grid figure:first-child { grid-column: 1 / -1; }
}
.inside-grid figure {
  margin: 0;
  aspect-ratio: 4 / 3;
  overflow: hidden;
  background: var(--paper-deep);
  border-radius: 3px;
}
.inside-grid img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 700ms cubic-bezier(0.22, 1, 0.36, 1);
}
.inside-grid figure:hover img { transform: scale(1.03); }
.inside-copy {
  margin: clamp(1.5rem, 3vw, 2.25rem) 0 0;
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 18, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1rem, 1.5vw, 1.1875rem);
  line-height: 1.55;
  color: var(--ink);
  max-width: 44rem;
}

/* ===== Community checkbox sub-label ===== */
.choice-sub {
  display: inline;
  color: var(--ink-muted);
  font-size: 0.8em;
  margin-left: 0.35em;
  white-space: nowrap;
}

/* ===================================================================
   Communities map explorer (NewHomeSource-style split view)
   =================================================================== */
.section-communities {
  padding: 0;
}
/* Full-bleed toolbar above the split view */
.explorer-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  padding: 0.95rem clamp(1.1rem, 3vw, 2rem);
  border-bottom: 1px solid var(--rule);
}
.explorer-count {
  margin: 0;
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24;
  font-weight: 400;
  font-size: clamp(0.95rem, 1.6vw, 1.15rem);
  color: var(--ink-muted);
}
.explorer-count strong { color: var(--ink); font-weight: 400; }

/* Full-width split: sticky map panel + listings, aligned tops */
.community-explorer {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: clamp(1rem, 2vw, 1.75rem);
  align-items: start;
  margin-top: 0;
  padding: clamp(1rem, 2vw, 1.5rem) clamp(1.1rem, 3vw, 2rem);
}
.community-map-wrap {
  position: sticky;
  top: clamp(1rem, 2vw, 1.5rem);
  height: calc(100vh - 2 * clamp(1rem, 2vw, 1.5rem));
  min-height: 480px;
  margin: 0;
}
.community-map {
  height: 100%;
  border-radius: 10px;
  overflow: hidden;
  background: var(--paper-deep);
  border: 1px solid var(--rule);
  position: relative;
  z-index: 0;
}
.community-map-fallback {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--ink-muted);
  font-size: 0.9rem;
}
/* Default caption (community detail pages): normal flow under the map */
.map-note {
  margin: 0.6rem 0 0;
  font-size: 0.72rem;
  color: var(--ink-muted);
}
/* Homepage explorer only: overlay the caption on the sticky map */
.community-map-wrap .map-note {
  position: absolute;
  left: 12px;
  bottom: 12px;
  margin: 0;
  background: rgba(255, 255, 255, 0.9);
  padding: 0.3rem 0.65rem;
  border-radius: 6px;
  z-index: 500;
  box-shadow: 0 1px 4px rgba(0, 0, 0, 0.12);
}

/* Right-side scrolling listing column */
.community-list {
  display: flex;
  flex-direction: column;
  gap: clamp(0.85rem, 1.5vw, 1.15rem);
  padding: 0;
}
.community-item {
  border: 1px solid var(--rule);
  border-radius: 10px;
  background: #fff;
  overflow: hidden;
  transition: border-color 200ms ease, box-shadow 200ms ease, transform 200ms ease;
}
.community-item:hover {
  box-shadow: 0 10px 28px rgba(6, 40, 63, 0.10);
  transform: translateY(-2px);
}
.community-item.active {
  border-color: var(--brass);
  box-shadow: 0 10px 30px rgba(6, 40, 63, 0.13);
}
.community-head {
  display: grid;
  grid-template-columns: 168px 1fr auto;
  align-items: center;
  gap: 1.25rem;
  width: 100%;
  padding: 1rem;
  background: none;
  border: 0;
  text-align: left;
  cursor: pointer;
  font: inherit;
  color: inherit;
}
.community-thumb {
  width: 168px;
  height: 116px;
  object-fit: cover;
  border-radius: 6px;
  display: block;
}
.community-head-text { gap: 0.28rem; }
.community-price { font-size: 1.05rem; margin-top: 0.1rem; }
.community-head-text { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; }
.community-name {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 40, "SOFT" 30;
  font-size: clamp(1.15rem, 1.8vw, 1.4rem);
  letter-spacing: -0.015em;
  line-height: 1.1;
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}
.community-flag {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 12, "SOFT" 60;
  font-size: 0.6875rem;
  letter-spacing: 0.02em;
  color: #fff;
  background: var(--brass);
  padding: 0.12rem 0.5rem;
  border-radius: 999px;
}
.community-loc { font-size: 0.8125rem; color: var(--ink-muted); }
.community-price {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24;
  font-feature-settings: "lnum";
  font-size: 0.95rem;
  color: var(--ink);
}
.community-chevron {
  width: 22px; height: 22px;
  position: relative;
  flex-shrink: 0;
  justify-self: end;
}
.community-chevron::before,
.community-chevron::after {
  content: "";
  position: absolute;
  top: 10px; left: 4px;
  width: 8px; height: 2px;
  background: var(--ink-muted);
  transition: transform 220ms ease;
}
.community-chevron::before { transform: rotate(45deg); left: 4px; }
.community-chevron::after { transform: rotate(-45deg); left: 9px; }
.community-head[aria-expanded="true"] .community-chevron::before { transform: rotate(-45deg); }
.community-head[aria-expanded="true"] .community-chevron::after { transform: rotate(45deg); }

.community-detail {
  padding: 0 0.85rem 1rem;
  border-top: 1px solid var(--rule);
  margin: 0 0.75rem;
}
.community-detail[hidden] { display: none; }
.community-desc {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 16, "SOFT" 30;
  font-weight: 300;
  font-size: 0.95rem;
  line-height: 1.55;
  color: var(--ink);
  margin: 1rem 0;
}
.community-facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem 1.5rem;
  margin: 0 0 1.25rem;
}
.community-facts div { display: flex; flex-direction: column; gap: 0.1rem; }
.community-facts dt {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 12, "SOFT" 60;
  font-size: 0.7rem;
  color: var(--ink-muted);
}
.community-facts dd { margin: 0; font-size: 0.875rem; color: var(--ink); }
.community-cta { width: 100%; text-align: center; }

/* Leaflet pin (custom divIcon) */
.map-pin {
  width: 28px; height: 28px;
  background: var(--ink);
  border: 2px solid #fff;
  border-radius: 50% 50% 50% 0;
  transform: rotate(-45deg);
  box-shadow: 0 2px 6px rgba(0,0,0,0.35);
  display: flex; align-items: center; justify-content: center;
  cursor: pointer;
  transition: background 180ms ease, transform 180ms ease;
}
.map-pin span {
  transform: rotate(45deg);
  color: #fff;
  font-family: 'Manrope', sans-serif;
  font-weight: 600;
  font-size: 0.8rem;
  line-height: 1;
}
.map-pin.active, .map-pin:hover {
  background: var(--brass);
  transform: rotate(-45deg) scale(1.18);
}
.leaflet-popup-content-wrapper { border-radius: 6px; }
.leaflet-popup-content { margin: 0.7rem 0.9rem; font-family: 'Manrope', sans-serif; }
.map-pop-name { font-family: 'Fraunces', serif; font-size: 1.05rem; letter-spacing: -0.01em; }
.map-pop-price { font-feature-settings: "lnum"; color: var(--brass); font-weight: 600; margin-top: 0.15rem; }

@media (max-width: 900px) {
  .community-explorer { grid-template-columns: 1fr; }
  .community-map-wrap { position: static; height: auto; }
  .community-map { height: 55vh; border-right: 0; border-bottom: 1px solid var(--rule); }
}
@media (max-width: 460px) {
  .community-head { grid-template-columns: 96px 1fr auto; gap: 0.7rem; padding: 0.6rem; }
  .community-thumb { width: 96px; height: 66px; }
  .community-facts { grid-template-columns: 1fr; }
}

/* ===== Slim site header (map-first homepage) ===== */
.site-header {
  background: #fff;
  border-bottom: 1px solid var(--rule);
}
.site-header .topstrip { padding: 1rem 0; }
.section-communities { padding-top: 0; }

/* Screen-reader-only (keeps an H1 for SEO without showing a banner) */
.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;
}

/* ===================================================================
   Community detail pages (cp-*) + photo gallery
   =================================================================== */
.back-link {
  display: inline-block;
  margin: clamp(1.25rem, 3vw, 2rem) 0 0;
  font-size: 0.9rem;
  color: var(--ink-muted);
  text-decoration: none;
  transition: color 160ms ease;
}
.back-link:hover { color: var(--brass); }

.cp-hero {
  display: grid;
  grid-template-columns: 1.15fr 1fr;
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: center;
  padding: clamp(1.25rem, 3vw, 2rem) 0 clamp(2.5rem, 6vw, 4.5rem);
}
@media (max-width: 820px) { .cp-hero { grid-template-columns: 1fr; } }
.cp-hero-media {
  margin: 0;
  aspect-ratio: 3 / 2;
  overflow: hidden;
  border-radius: 6px;
  background: var(--paper-deep);
}
.cp-hero-media img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cp-title { font-size: clamp(2.5rem, 6vw, 4rem); line-height: 0.98; margin: 0.5rem 0 0.75rem; }
.cp-price {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 40;
  font-feature-settings: "lnum";
  font-size: clamp(1.5rem, 3vw, 2rem);
  color: var(--brass);
  margin: 0 0 1.5rem;
}
.cp-price-label {
  font-style: italic;
  font-size: 0.55em;
  color: var(--ink-muted);
  margin-left: 0.3em;
}
.cp-facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem 1.5rem;
  margin: 0 0 1.75rem;
  padding: 1.5rem 0;
  border-top: 1px solid var(--rule);
  border-bottom: 1px solid var(--rule);
}
.cp-facts div { display: flex; flex-direction: column; gap: 0.2rem; }
.cp-facts dt {
  font-family: 'Fraunces', serif;
  font-style: italic;
  font-variation-settings: "opsz" 12, "SOFT" 60;
  font-size: 0.72rem;
  color: var(--ink-muted);
}
.cp-facts dd { margin: 0; font-size: 0.9375rem; color: var(--ink); }
.cp-desc {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 18, "SOFT" 30;
  font-weight: 300;
  font-size: clamp(1rem, 1.5vw, 1.125rem);
  line-height: 1.6;
  color: var(--ink);
  margin: 0 0 1.75rem;
}

.cp-gallery { padding-bottom: clamp(3rem, 7vw, 6rem); }
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: clamp(0.5rem, 1.2vw, 1rem);
  margin-top: clamp(1.5rem, 3vw, 2.5rem);
}
@media (max-width: 760px) { .gallery-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 460px) { .gallery-grid { grid-template-columns: 1fr; } }
.gallery-cell {
  padding: 0;
  border: 0;
  margin: 0;
  background: var(--paper-deep);
  aspect-ratio: 4 / 3;
  overflow: hidden;
  border-radius: 3px;
  cursor: zoom-in;
  display: block;
}
.gallery-cell img {
  width: 100%; height: 100%;
  object-fit: cover;
  display: block;
  transition: transform 600ms cubic-bezier(0.22, 1, 0.36, 1);
}
.gallery-cell:hover img { transform: scale(1.04); }

/* Community card actions on the homepage (link to page + prequalify) */
.community-actions { display: flex; flex-direction: column; gap: 0.6rem; }
.community-prequal {
  text-align: center;
  font-size: 0.9rem;
  color: var(--ink-muted);
  text-decoration: none;
  padding: 0.3rem;
}
.community-prequal:hover { color: var(--brass); }

/* ===================================================================
   Community detail pages, NewHomeSource-style layout (nhs-*)
   =================================================================== */
.nhs-crumbs {
  display: flex; align-items: center; flex-wrap: wrap; gap: 0.5rem;
  margin: clamp(1rem, 2.5vw, 1.75rem) 0 0;
  font-size: 0.85rem; color: var(--ink-muted);
}
.nhs-crumbs a { color: var(--brass); text-decoration: none; }
.nhs-crumbs a:hover { text-decoration: underline; }
.nhs-crumbs .sep { opacity: 0.4; }
.nhs-crumbs .cur { color: var(--ink); }

/* Photo mosaic */
.nhs-gallery {
  display: grid;
  grid-template-columns: 2fr 1fr 1fr;
  grid-auto-rows: 1fr;
  gap: 8px;
  height: clamp(320px, 42vw, 500px);
  margin-top: clamp(0.85rem, 2vw, 1.25rem);
}
.nhs-gallery .g-cell {
  position: relative; padding: 0; margin: 0; border: 0;
  overflow: hidden; border-radius: 5px; cursor: zoom-in;
  background: var(--paper-deep); display: block;
}
.nhs-gallery .g-main { grid-row: 1 / 3; grid-column: 1; }
.nhs-gallery img { width: 100%; height: 100%; object-fit: cover; display: block; transition: transform 600ms cubic-bezier(0.22,1,0.36,1); }
.nhs-gallery .g-cell:hover img { transform: scale(1.04); }
.g-more {
  position: absolute; inset: 0; display: flex; align-items: center; justify-content: center;
  background: rgba(6,40,63,0.55); color: #fff;
  font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 0.9rem; letter-spacing: 0.01em;
}
/* Mini-hero: looping exterior video in the big mosaic cell */
.nhs-gallery .g-video { cursor: default; }
.nhs-gallery .g-video video { width: 100%; height: 100%; object-fit: cover; display: block; }
/* Tall 9:16 tour tile inside the mosaic */
.nhs-gallery .g-tall { grid-row: 1 / 3; grid-column: 2; }
.nhs-gallery .g-video-tour { cursor: default; background: #000; }
.nhs-gallery .g-video-tour video { width: 100%; height: 100%; object-fit: cover; display: block; background: #000; }
.nhs-gallery .g-photo { cursor: default; }
@media (max-width: 760px) {
  .nhs-gallery-video .g-main { grid-column: 1 / -1; grid-row: span 2; }
  .nhs-gallery-video .g-tall { grid-column: 1 / -1; grid-row: span 4; }
}
/* Mobile: move the tall 9:16 tour out of the mosaic to its own block below */
.nhs-tour-mobile { display: none; }
.hero-tour-cta { display: none; }
@media (max-width: 760px) {
  .nhs-gallery-video .g-tall { display: none; }
  .nhs-tour-mobile { display: block; scroll-margin-top: 1rem; }
  /* "Watch the tour" pill over the exterior video, jumps to the tour below */
  .hero-tour-cta {
    display: inline-flex; align-items: center; gap: 0.4rem;
    position: absolute; left: 12px; bottom: 12px; z-index: 3;
    background: rgba(6, 40, 63, 0.82); color: #fff; text-decoration: none;
    padding: 0.5rem 0.9rem; border-radius: 999px;
    font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 0.8rem;
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    box-shadow: 0 4px 14px rgba(0, 0, 0, 0.32);
  }
  .hero-tour-cta svg { flex-shrink: 0; }
  .hero-tour-cta:active { transform: scale(0.97); }
}
@media (max-width: 760px) {
  .nhs-gallery { grid-template-columns: 1fr 1fr; grid-auto-rows: 110px; height: auto; }
  .nhs-gallery .g-main { grid-column: 1 / -1; grid-row: span 2; }
}

/* Title row */
.nhs-head {
  display: flex; justify-content: space-between; align-items: flex-end; gap: 1.5rem;
  padding-top: clamp(1.25rem, 3vw, 1.75rem);
  padding-bottom: 1.25rem;
  border-bottom: 1px solid var(--rule);
}
.nhs-name {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 60, "SOFT" 20;
  font-weight: 400; letter-spacing: -0.02em; line-height: 1;
  font-size: clamp(2rem, 4.5vw, 3rem); margin: 0;
  display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap;
}
.nhs-flag {
  font-family: 'Fraunces', serif; font-style: italic; font-variation-settings: "opsz" 12, "SOFT" 60;
  font-size: 0.7rem; color: #fff; background: var(--brass); padding: 0.18rem 0.6rem; border-radius: 999px;
}
.nhs-builder { margin: 0.6rem 0 0.35rem; font-size: 0.95rem; color: var(--ink); }
.nhs-loc { margin: 0; font-size: 0.9rem; color: var(--ink-muted); display: flex; align-items: center; gap: 0.35rem; }
.nhs-loc svg { color: var(--brass); flex-shrink: 0; }
.nhs-price-wrap { text-align: right; display: flex; flex-direction: column; align-items: flex-end; flex-shrink: 0; }
.nhs-price-label { font-family: 'Fraunces', serif; font-style: italic; font-size: 0.8rem; color: var(--ink-muted); }
.nhs-price {
  font-family: 'Fraunces', serif; font-variation-settings: "opsz" 60; font-feature-settings: "lnum";
  font-size: clamp(1.75rem, 3.5vw, 2.5rem); color: var(--brass); line-height: 1;
}
@media (max-width: 620px) {
  .nhs-head { flex-direction: column; align-items: flex-start; gap: 0.75rem; }
  .nhs-price-wrap { text-align: left; align-items: flex-start; }
}

/* Stats bar */
.nhs-stats {
  display: flex; flex-wrap: wrap;
  border: 1px solid var(--rule); border-radius: 8px;
  margin-top: 1.5rem; overflow: hidden;
}
.nhs-stats > div {
  flex: 1; min-width: 140px;
  display: flex; flex-direction: column; gap: 0.25rem;
  padding: 1rem 1.25rem; border-left: 1px solid var(--rule);
}
.nhs-stats > div:first-child { border-left: 0; }
.nhs-stats .s-lab { font-family: 'Fraunces', serif; font-style: italic; font-variation-settings: "opsz" 12, "SOFT" 60; font-size: 0.72rem; color: var(--ink-muted); }
.nhs-stats .s-val { font-family: 'Fraunces', serif; font-variation-settings: "opsz" 24; font-size: 0.95rem; color: var(--ink); font-feature-settings: "lnum"; }
.nhs-stats .s-selling { color: #1a7f4b; }
@media (max-width: 640px) {
  .nhs-stats > div { flex: 1 1 45%; }
  .nhs-stats > div:nth-child(odd) { border-left: 0; }
}
/* Hide the stats bar on phones - the Community details list repeats it */
@media (max-width: 680px) {
  .nhs-stats { display: none; }
}

/* Body: main + aside */
.nhs-body {
  display: grid; grid-template-columns: minmax(0,1fr) 360px;
  gap: clamp(1.5rem, 4vw, 3rem);
  align-items: start;
  padding-top: clamp(2rem, 5vw, 3.5rem);
  padding-bottom: clamp(3rem, 7vw, 6rem);
}
@media (max-width: 900px) { .nhs-body { grid-template-columns: 1fr; } }
.nhs-block { margin-bottom: clamp(2rem, 4vw, 3rem); }
.nhs-block:last-child { margin-bottom: 0; }
.nhs-h2 {
  font-family: 'Fraunces', serif; font-variation-settings: "opsz" 40, "SOFT" 20;
  font-weight: 400; font-size: clamp(1.375rem, 2.4vw, 1.75rem); letter-spacing: -0.015em;
  margin: 0 0 1rem; padding-bottom: 0.6rem; border-bottom: 1px solid var(--rule);
  display: flex; align-items: baseline; gap: 0.6rem;
}
.nhs-count { font-size: 0.85rem; color: var(--ink-muted); font-feature-settings: "lnum"; }
.nhs-overview {
  font-family: 'Fraunces', serif; font-variation-settings: "opsz" 18, "SOFT" 30; font-weight: 300;
  font-size: clamp(1rem, 1.5vw, 1.125rem); line-height: 1.65; color: var(--ink); margin: 0; max-width: 46rem;
}
.nhs-details { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem 1.5rem; margin: 0; }
.nhs-details div { display: flex; flex-direction: column; gap: 0.2rem; }
.nhs-details dt { font-family: 'Fraunces', serif; font-style: italic; font-variation-settings: "opsz" 12, "SOFT" 60; font-size: 0.72rem; color: var(--ink-muted); }
.nhs-details dd { margin: 0; font-size: 0.9375rem; color: var(--ink); }
@media (max-width: 460px) { .nhs-details { grid-template-columns: 1fr; } }

.cp-map { height: 300px; border-radius: 8px; overflow: hidden; border: 1px solid var(--rule); background: var(--paper-deep); position: relative; z-index: 0; }

/* Request info card */
.nhs-aside { position: sticky; top: 1rem; }
@media (max-width: 900px) { .nhs-aside { position: static; } }
.nhs-request {
  background: #fff; border: 1px solid var(--rule); border-radius: 10px;
  padding: clamp(1.25rem, 2vw, 1.6rem);
  box-shadow: 0 8px 28px rgba(6,40,63,0.08);
}
.nhs-req-title { font-family: 'Fraunces', serif; font-variation-settings: "opsz" 40, "SOFT" 20; font-weight: 400; font-size: 1.375rem; margin: 0 0 0.4rem; }
.nhs-req-sub { margin: 0 0 1.25rem; font-size: 0.875rem; color: var(--ink-muted); line-height: 1.5; }

/* Community page: multiple home designs (builds) */
.nhs-design { margin-bottom: clamp(1.5rem, 3vw, 2.25rem); }
.nhs-design:last-child { margin-bottom: 0; }
.nhs-design-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 30, "SOFT" 30;
  font-weight: 400; font-size: 1.125rem; letter-spacing: -0.01em;
  margin: 0 0 0.85rem;
  display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap;
}
.nhs-design-num {
  display: inline-flex; align-items: center; justify-content: center;
  width: 1.5rem; height: 1.5rem; border-radius: 50%;
  background: var(--ink); color: #fff;
  font-family: 'Manrope', sans-serif; font-weight: 600; font-size: 0.8rem;
}
.nhs-design-sub {
  font-family: 'Manrope', sans-serif; font-weight: 400;
  font-size: 0.8125rem; color: var(--ink-muted); letter-spacing: 0.005em;
}

/* Mosaic paging arrows (outside the grid) */
.nhs-gallery { position: relative; }
.mosaic-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 46px; height: 46px;
  border-radius: 50%;
  background: #fff;
  border: 1px solid var(--rule);
  box-shadow: 0 4px 16px rgba(6,40,63,0.18);
  color: var(--ink);
  font-family: 'Fraunces', serif;
  font-size: 1.9rem; line-height: 1; padding-bottom: 4px;
  display: flex; align-items: center; justify-content: center;
  cursor: pointer; z-index: 4;
  transition: background 160ms ease, color 160ms ease, box-shadow 160ms ease;
}
.mosaic-nav:hover { background: var(--ink); color: #fff; box-shadow: 0 6px 20px rgba(6,40,63,0.28); }
.mosaic-prev { left: -23px; }
.mosaic-next { right: -23px; }
@media (max-width: 1120px) {
  .mosaic-prev { left: 10px; }
  .mosaic-next { right: 10px; }
}
@media (max-width: 640px) {
  .mosaic-nav { width: 38px; height: 38px; font-size: 1.5rem; }
  .mosaic-prev { left: 6px; }
  .mosaic-next { right: 6px; }
}

/* Header "Home" link on community pages */
.topstrip .meta .nav-link {
  color: var(--ink);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 500;
  transition: color 160ms ease;
}
.topstrip .meta .nav-link:hover { color: var(--brass); }

/* Listing card "Now selling" status */
.community-status {
  display: flex;
  align-items: center;
  gap: 0.4rem;
  font-family: 'Manrope', sans-serif;
  font-size: 0.68rem;
  font-weight: 600;
  letter-spacing: 0.05em;
  text-transform: uppercase;
  color: #1a7f4b;
}
.dot-live {
  width: 7px; height: 7px;
  border-radius: 50%;
  background: #1f9d55;
  box-shadow: 0 0 0 3px rgba(31, 157, 85, 0.15);
}

/* ===== Homepage hero banner (Aspenwood) ===== */
.home-hero {
  position: relative;
  min-height: clamp(440px, 64vh, 660px);
  display: flex;
  align-items: center;
  overflow: hidden;
}
.home-hero-bg { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.home-hero-scrim {
  position: absolute; inset: 0;
  background: linear-gradient(90deg, rgba(6,40,63,0.80), rgba(6,40,63,0.48) 55%, rgba(6,40,63,0.14));
}
.home-hero-content { position: relative; z-index: 2; color: #fff; padding: clamp(1.25rem, 3vw, 2.25rem) 0 clamp(2.5rem, 6vw, 4.5rem); }
.home-hero-eyebrow {
  display: flex; align-items: center; gap: 0.55rem;
  font-family: 'Fraunces', serif; font-style: italic;
  font-size: 0.9rem; letter-spacing: 0.02em; margin: 0 0 1rem; color: #fff;
}
.home-hero-eyebrow .dot {
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--brass-bright); box-shadow: 0 0 0 4px rgba(59,134,194,0.28);
}
.home-hero-title {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 144, "SOFT" 0;
  font-weight: 400; letter-spacing: -0.025em; line-height: 0.98;
  font-size: clamp(2.6rem, 6vw, 4.5rem); margin: 0 0 1.25rem; color: #fff;
}
.home-hero-title .display-italic { font-style: italic; }
.home-hero-sub {
  max-width: 40rem;
  font-size: clamp(1rem, 1.6vw, 1.2rem); line-height: 1.55;
  color: rgba(255,255,255,0.92); margin: 0 0 2rem;
}
.home-hero-ctas { display: flex; align-items: center; gap: 1.5rem; flex-wrap: wrap; }
.home-hero .btn { background: #fff; color: var(--ink); }
.home-hero .btn:hover { background: var(--paper-deep); }
.home-hero-link {
  color: #fff; text-decoration: none; font-weight: 500; font-size: 0.95rem;
  border-bottom: 1px solid rgba(255,255,255,0.5); padding-bottom: 2px;
  transition: border-color 160ms ease;
}
.home-hero-link:hover { border-color: #fff; }
@media (max-width: 640px) {
  .home-hero { min-height: clamp(300px, 48vh, 390px); }
  .home-hero-content { padding: clamp(0.75rem, 2vw, 1.15rem) 0 clamp(1.1rem, 3vw, 1.9rem); }
  .home-hero-title { margin-bottom: 0.75rem; }
  .home-hero-lockup { margin-bottom: 1.1rem; gap: 0.7rem; }
  .home-hero-logo img { width: clamp(74px, 18vw, 96px); }
  .home-hero-scrim { background: linear-gradient(180deg, rgba(6,40,63,0.45), rgba(6,40,63,0.78)); }
}

/* Hero: preferred-lender lockup with Fortis logo */
.home-hero-lockup {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: clamp(1.25rem, 2.5vw, 1.75rem);
  margin-bottom: 2rem;
}
.home-hero-lockup .home-hero-eyebrow { margin: 0 0 0.6rem; }
.home-hero-lockup .home-hero-title {
  margin: 0;
  font-size: clamp(2.2rem, 4.8vw, 3.75rem);
}
.home-hero-logo {
  position: absolute;
  top: clamp(-1rem, -0.8vh, -0.25rem);
  left: 48%;
  transform: translateX(-50%);
  z-index: 1;
}
.home-hero-logo img {
  display: block;
  width: clamp(84px, 7.5vw, 118px);
  height: auto;
  filter: drop-shadow(0 2px 10px rgba(0, 0, 0, 0.45)) drop-shadow(0 0 2px rgba(0, 0, 0, 0.3));
}
@media (max-width: 680px) {
  .home-hero-logo { position: static; transform: none; margin: 0.5rem auto 0; }
}
@media (max-width: 640px) {
  .home-hero-lockup { flex-direction: column; align-items: flex-start; gap: 1.1rem; }
}

/* Hero: two-column with About FGC card on the right */
.home-hero-content { display: flex; align-items: center; justify-content: space-between; gap: clamp(1.5rem, 4vw, 3.5rem); }
.home-hero-main { flex: 1 1 auto; max-width: 660px; min-width: 0; }
.home-hero-about {
  flex: 0 0 clamp(280px, 26vw, 350px);
  align-self: center;
  background: rgba(6, 40, 63, 0.5);
  backdrop-filter: blur(7px);
  -webkit-backdrop-filter: blur(7px);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 12px;
  padding: clamp(1.25rem, 2vw, 1.75rem);
  color: #fff;
}
.home-hero-about-eyebrow {
  font-family: 'Fraunces', serif; font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 60;
  font-size: 0.8rem; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--brass-bright); margin: 0 0 0.6rem;
}
.home-hero-about-body {
  font-size: 0.875rem; line-height: 1.6;
  color: rgba(255, 255, 255, 0.92); margin: 0;
}
@media (max-width: 900px) {
  .home-hero-content { flex-direction: column; align-items: flex-start; gap: 1.5rem; }
  .home-hero-about { flex-basis: auto; max-width: 100%; align-self: stretch; }
}

/* ===== Reorganized footer (columns + legal strip) ===== */
.foot-top {
  display: grid;
  grid-template-columns: 2.2fr 1fr 1fr;
  gap: clamp(1.5rem, 4vw, 3.5rem);
  align-items: start;
}
@media (max-width: 720px) {
  .foot-top { grid-template-columns: 1fr 1fr; gap: 1.5rem 1.25rem; }
  .foot-col-brand { grid-column: 1 / -1; }
}
.foot-brand {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 32, "SOFT" 20;
  font-size: 1.05rem; color: #fff; margin: 0 0 0.6rem; letter-spacing: -0.01em;
}
.foot-desc {
  font-size: 0.8rem; line-height: 1.55;
  color: rgba(255, 255, 255, 0.55);
  margin: 0 0 0.9rem; max-width: 32rem;
}
.foot-email { font-size: 0.85rem; }
.foot-col { display: flex; flex-direction: column; gap: 0.5rem; align-items: flex-start; }
.foot-h {
  font-family: 'Fraunces', serif; font-style: italic;
  font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase;
  color: rgba(255, 255, 255, 0.42); margin: 0 0 0.25rem;
}
.foot-col a { font-size: 0.85rem; }
.foot-copy {
  margin: 0.9rem 0 0;
  font-size: 0.72rem;
  color: rgba(255, 255, 255, 0.45);
}

/* NextGen Home Loans logo as the top-bar brand (left) */
.topstrip .name { display: inline-flex; align-items: center; line-height: 0; }
.nextgen-logo {
  height: clamp(26px, 2.8vw, 34px);
  width: auto;
  display: block;
}

/* About FGC band (below the hero, on a light strip) */
.home-about { background: var(--paper-deep); border-bottom: 1px solid var(--rule); }
.home-about-inner {
  display: flex;
  align-items: baseline;
  gap: clamp(1rem, 3vw, 2.5rem);
  padding: clamp(1.5rem, 3.5vw, 2.5rem) 0;
}
.home-about-eyebrow {
  flex: 0 0 auto; margin: 0;
  font-family: 'Fraunces', serif; font-style: italic;
  font-size: 0.8rem; letter-spacing: 0.06em; text-transform: uppercase;
  color: var(--brass);
}
.home-about-body {
  margin: 0; max-width: 62rem;
  font-size: clamp(0.9rem, 1.4vw, 1rem); line-height: 1.6; color: var(--ink);
}
@media (max-width: 640px) {
  .home-about-inner { flex-direction: column; gap: 0.5rem; }
}

/* Center the hero content on small screens */
@media (max-width: 680px) {
  .home-hero-content { display: block; text-align: center; }
  .home-hero-main { max-width: 100%; }
  .home-hero-lockup { align-items: center; }
  .home-hero-title { text-align: center; }
  .home-hero-eyebrow { justify-content: center; }
  .home-hero-ctas { justify-content: center; }
}

/* Top-bar phone number */
.topbar-phone {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  color: var(--ink);
  text-decoration: none;
  font-size: 0.9rem;
  font-weight: 500;
  font-feature-settings: "lnum";
  transition: color 160ms ease;
}
.topbar-phone svg { color: var(--brass); flex-shrink: 0; }
.topbar-phone:hover { color: var(--brass); }

/* Team Prosper hero cutout (Alex) in the open space under the title */
.hero-person {
  position: absolute;
  left: 17%;
  transform: translateX(-50%);
  bottom: 0;
  height: clamp(195px, 52%, 300px);
  width: auto;
  z-index: 3;
  pointer-events: none;
  filter: drop-shadow(0 6px 24px rgba(0, 0, 0, 0.25));
}
@media (max-width: 900px) {
  .hero-person { left: 26%; height: clamp(135px, 32%, 195px); opacity: 0.95; }
}
@media (max-width: 680px) {
  /* Keep Alex as a small cutout anchored to the bottom-right corner */
  .hero-person {
    display: block;
    position: absolute;
    left: auto;
    right: -4%;
    bottom: 0;
    transform: none;
    height: clamp(150px, 34vh, 220px);
    width: auto;
    opacity: 1;
    z-index: 3;
  }
}

/* Hero agent line (replaces the See communities link) */
.home-hero-agent { margin: 0; color: #fff; line-height: 1.35; }
.agent-name {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 28, "SOFT" 20;
  font-size: 1.05rem; letter-spacing: -0.005em;
}
.agent-role {
  display: inline-block;
  font-size: 0.72rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 0.11em;
  color: rgba(255, 255, 255, 0.9);
  margin: 0.12rem 0 0.28rem;
}
.agent-lic {
  font-size: 0.75rem;
  color: rgba(255, 255, 255, 0.82);
  font-feature-settings: "lnum";
  letter-spacing: 0.01em;
}
.agent-phone {
  display: inline-block;
  margin-top: 0.28rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: #fff;
  text-decoration: none;
  font-feature-settings: "lnum";
  letter-spacing: 0.01em;
}
.agent-phone:hover { text-decoration: underline; }

/* =====================================================================
   Animations & motion (adapted from the "animate" skill, CSS-only)
   Principles: animate transform/opacity only, ease-out on enter,
   200-600ms range, and always respect prefers-reduced-motion.
   ===================================================================== */
:root {
  --ease-out-quint: cubic-bezier(.23, 1, .32, 1);
  --ease-out-cubic: cubic-bezier(.33, 1, .68, 1);
  --ease-in-out-cubic: cubic-bezier(.645, .045, .355, 1);
}

/* Scroll reveal: .reveal is added by JS (so no-JS users see everything).
   The hidden state lives inside no-preference, so reduced-motion users
   are never left with invisible content. */
@media (prefers-reduced-motion: no-preference) {
  .reveal {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 600ms var(--ease-out-quint),
                transform 600ms var(--ease-out-quint);
    will-change: opacity, transform;
  }
  .reveal.is-visible {
    opacity: 1;
    transform: none;
  }

  /* Hero entrance (above the fold, plays on load) */
  .home-hero-eyebrow { animation: heroRise 600ms var(--ease-out-quint) both; }
  .home-hero-title   { animation: heroRise 700ms var(--ease-out-quint) 80ms both; }
  .home-hero-ctas    { animation: heroRise 600ms var(--ease-out-quint) 240ms both; }
  .home-hero-logo    { animation: heroFade 900ms var(--ease-out-quint) 320ms both; }
  .hero-person       { animation: heroFade 1000ms var(--ease-out-quint) 360ms both; }
}

@keyframes heroRise {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: none; }
}
/* heroFade animates opacity only, so base transforms (logo/Alex centering)
   are preserved. */
@keyframes heroFade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Hover polish: subtle thumbnail zoom inside listing cards */
.community-thumb {
  transition: transform 400ms var(--ease-out-quint);
}
.community-item:hover .community-thumb { transform: scale(1.045); }

/* Builder brand panel: gentle lift on hover */
.builder-panel {
  transition: transform 300ms var(--ease-out-quint),
              box-shadow 300ms var(--ease-out-quint);
}
.builder-panel:hover {
  transform: translateY(-3px);
  box-shadow: 0 24px 52px rgba(6, 40, 63, 0.24);
}

/* Button press micro-interaction (exits are quick) */
.btn:active { transform: scale(0.98); }
.community-cta:active, .community-prequal:active { transform: scale(0.985); }

/* Listing card accordion: animate the detail panel's height */
.community-detail { overflow: hidden; box-sizing: border-box; }
@media (prefers-reduced-motion: no-preference) {
  .community-detail { transition: height 340ms var(--ease-out-quint); }
}

/* Map pins: staggered drop-in (JS sets the hidden start state) + bounce
   link. The .pin-drop wrapper is animated so the pin's own rotate(-45deg)
   teardrop transform is never disturbed. */
.pin-drop { will-change: transform, opacity; }
@keyframes pinBounce {
  0%, 100% { transform: translateY(0); }
  30%  { transform: translateY(-9px); }
  62%  { transform: translateY(-3px); }
}
@media (prefers-reduced-motion: no-preference) {
  .pin-drop { transition: transform 480ms var(--ease-out-quint), opacity 480ms var(--ease-out-quint); }
  .pin-drop.bounce { animation: pinBounce 520ms var(--ease-out-quint); }
}
/* Listing card highlighted while its map pin is hovered */
.community-item.pin-linked {
  border-color: var(--brass);
  box-shadow: 0 10px 28px rgba(6, 40, 63, 0.13);
}

/* Community page: What's included + Schedule a tour */
.nhs-feat-intro { margin: 0 0 1.25rem; font-size: 0.95rem; line-height: 1.6; color: var(--ink-muted); max-width: 46rem; }
.nhs-feat-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 1.5rem 2.5rem; }
@media (max-width: 620px) { .nhs-feat-grid { grid-template-columns: 1fr; } }
.nhs-feat-h {
  font-family: 'Fraunces', serif; font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 40;
  font-size: 0.95rem; color: var(--brass); margin: 0 0 0.6rem; font-weight: 400;
}
.nhs-feat-list { list-style: none; margin: 0; padding: 0; }
.nhs-feat-list li {
  position: relative; padding-left: 1.4rem; margin-bottom: 0.5rem;
  font-size: 0.9rem; line-height: 1.45; color: var(--ink);
}
.nhs-feat-list li::before {
  content: ''; position: absolute; left: 0; top: 0.5em;
  width: 7px; height: 7px; border-radius: 50%;
  background: var(--brass-bright);
}
.nhs-feat-note { margin: 1.25rem 0 0; font-size: 0.75rem; color: var(--ink-soft); line-height: 1.5; }

/* Community page: The neighborhood */
.nhs-nb-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 1.5rem 2rem; }
@media (max-width: 720px) { .nhs-nb-grid { grid-template-columns: 1fr; gap: 1.25rem; } }
.nhs-nb-h {
  font-family: 'Fraunces', serif; font-style: italic;
  font-variation-settings: "opsz" 18, "SOFT" 40;
  font-size: 0.95rem; color: var(--brass); margin: 0 0 0.5rem; font-weight: 400;
}
.nhs-nb-col p { margin: 0; font-size: 0.9rem; line-height: 1.55; color: var(--ink); }

/* Community page: Video tour */
.nhs-video-grid { display: flex; flex-wrap: wrap; gap: 1.5rem; align-items: flex-start; }
.nhs-video { margin: 0; }
.nhs-video video {
  display: block; border-radius: 10px; background: #000;
  box-shadow: 0 8px 28px rgba(6, 40, 63, 0.12);
}
.nhs-video-portrait { flex: 0 0 auto; }
.nhs-video-portrait video { height: min(560px, 72vh); width: auto; max-width: 100%; aspect-ratio: 9 / 16; }
.nhs-video-landscape { flex: 1 1 400px; min-width: 260px; }
.nhs-video-landscape video { width: 100%; height: auto; aspect-ratio: 16 / 9; }
.nhs-video figcaption {
  margin-top: 0.55rem; font-family: 'Fraunces', serif; font-style: italic;
  font-size: 0.85rem; color: var(--ink-muted);
}
@media (max-width: 620px) {
  .nhs-video-portrait, .nhs-video-landscape { flex: 1 1 100%; text-align: center; }
  .nhs-video-portrait video { height: auto; width: 100%; max-width: 300px; margin: 0 auto; }
  .nhs-video-landscape video { max-width: 100%; }
}

.nhs-visit {
  background: var(--paper-deep);
  border: 1px solid var(--rule);
  border-radius: 12px;
  padding: clamp(1.25rem, 3vw, 1.75rem);
}
.nhs-visit .nhs-h2 { margin-top: 0; }
.nhs-visit-copy { margin: 0 0 1.25rem; font-size: 0.95rem; line-height: 1.6; color: var(--ink); max-width: 44rem; }
.nhs-visit-actions { display: flex; align-items: center; gap: 1.25rem; flex-wrap: wrap; }
.nhs-visit-call {
  display: inline-flex; align-items: center; gap: 0.4rem;
  color: var(--ink); text-decoration: none; font-weight: 600;
  font-size: 0.95rem; font-feature-settings: "lnum";
  transition: color 160ms ease;
}
.nhs-visit-call svg { color: var(--brass); }
.nhs-visit-call:hover { color: var(--brass); }

/* Google reviews card (under Alex's portrait) */
.about-media { display: flex; flex-direction: column; gap: 0; max-width: 24rem; }
.gr-card {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  margin-top: 0.9rem;
  padding: 0.7rem 0.9rem;
  background: #fff;
  border: 1px solid var(--rule);
  border-radius: 12px;
  box-shadow: 0 6px 18px rgba(6, 40, 63, 0.07);
  text-decoration: none;
  color: var(--ink);
  transition: transform 220ms var(--ease-out-quint), box-shadow 220ms var(--ease-out-quint);
}
.gr-card:hover {
  transform: translateY(-2px);
  box-shadow: 0 12px 28px rgba(6, 40, 63, 0.13);
}
.gr-g { flex: 0 0 auto; display: inline-flex; }
.gr-main { display: flex; flex-direction: column; gap: 0.1rem; line-height: 1.2; flex: 1 1 auto; min-width: 0; }
.gr-line1 { display: flex; align-items: center; gap: 0.4rem; }
.gr-rating {
  font-family: 'Fraunces', serif;
  font-variation-settings: "opsz" 24;
  font-size: 1.15rem; font-weight: 500; color: var(--ink);
}
.gr-stars { color: #f5b301; font-size: 0.95rem; letter-spacing: 0.04em; }
.gr-line2 { font-size: 0.78rem; color: var(--ink-muted); }
.gr-arrow {
  flex: 0 0 auto; color: var(--brass); font-family: 'Fraunces', serif;
  font-size: 1.05rem; transition: transform 220ms var(--ease-out-quint);
}
.gr-card:hover .gr-arrow { transform: translateX(3px); }

/* Global safety net: honor reduced-motion everywhere */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
