/* On Point Realty. Cinematic Editorial. Mobile first, min-width queries only.
   Forest ground, ivory breathing sections, copper hairlines. Every hidden state for motion is set in JS. */

:root {
  --forest: #0F1F1A;        /* page ground */
  --moss: #172A24;          /* panels */
  --ivory: #F3EFE6;         /* text on dark, light section ground */
  --mist: #AEBDB5;          /* muted text on dark */
  --stone: #5E6A64;         /* muted text on ivory */
  --copper: #B6603A;        /* hairlines, cursor, big price marks */
  --copper-dark: #8E4728;   /* buttons and copper text on ivory */
  --copper-light: #D98B5F;  /* small copper text on dark (deltas, status) */
  --line: #263A33;          /* rules on dark */
  --line-ivory: #D9D3C5;    /* rules on ivory */
  --ui-dark: #7F8E87;       /* form borders on dark, 4.9:1 on forest */
  --error: #F2A58A;         /* error text on dark */
  --error-ivory: #9A2F1F;   /* error text on ivory */

  --display: "DM Serif Display", "Iowan Old Style", Georgia, serif;
  --sans: "DM Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
  --mono: "DM Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;

  --fs-hero: clamp(2.6rem, 8vw, 7rem);
  --fs-h1: clamp(2.4rem, 6.4vw, 5.6rem);
  --fs-h2: clamp(1.9rem, 4.4vw, 3.6rem);
  --fs-h3: clamp(1.35rem, 2.2vw, 1.9rem);
  --fs-body: 1.03rem;
  --fs-small: .92rem;
  --fs-mono: .74rem;

  --gut: clamp(1rem, 4vw, 3.5rem);
  --sec: clamp(4.5rem, 11vw, 10rem);
  --head: 66px;
  --ease: cubic-bezier(.22, 1, .36, 1);
}
@media (min-width: 1000px) { :root { --head: 84px; } }

/* ---------- Reset and base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-stopped { overflow: clip; }
html, body { overflow-x: clip; }
body {
  margin: 0;
  background: var(--forest);
  color: var(--ivory);
  font-family: var(--sans);
  font-size: var(--fs-body);
  line-height: 1.65;
  -webkit-font-smoothing: antialiased;
}
img { display: block; max-width: 100%; height: auto; background: var(--moss); }
a { color: inherit; text-decoration-thickness: 1px; text-underline-offset: .2em; }
p { margin: 0 0 1.1em; }
h1, h2, h3, h4 { margin: 0; font-weight: 400; }
ul, ol { margin: 0; padding: 0; }
address { font-style: italic; font-family: var(--display); }
button, input, select, textarea { font: inherit; color: inherit; }
main { display: block; outline: none; }
[hidden] { display: none !important; }
::selection { background: var(--copper); color: var(--ivory); }
figure { margin: 0; }

:focus-visible { outline: 2px solid var(--copper); outline-offset: 2px; }

.skip-link {
  position: fixed; left: 1rem; top: 1rem; z-index: 300;
  padding: .8rem 1.1rem; background: var(--ivory); color: var(--forest);
  font-family: var(--mono); font-size: var(--fs-mono); text-transform: uppercase; letter-spacing: .12em;
  transform: translateY(-160%); text-decoration: none;
}
.skip-link:focus { transform: none; outline-color: var(--forest); }

.visually-hidden {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}

/* ---------- Type ---------- */
.mono, .eyebrow, .label {
  font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .13em;
  text-transform: uppercase; font-weight: 400; line-height: 1.6;
}
.eyebrow, .label { display: flex; align-items: center; gap: .7rem; color: var(--mist); margin: 0 0 1.3rem; }
.eyebrow::before, .label::before { content: ""; width: 1.5rem; height: 1px; background: var(--copper); flex: none; }
.section--ivory .eyebrow, .section--ivory .label { color: var(--stone); }
.serif { font-family: var(--display); }
.display-1 { font-family: var(--display); font-size: var(--fs-h1); line-height: 1; letter-spacing: -.02em; }
.display-2 { font-family: var(--display); font-size: var(--fs-h2); line-height: 1.05; letter-spacing: -.015em; }
.display-3 { font-family: var(--display); font-size: var(--fs-h3); line-height: 1.15; }
.display-1 em, .display-2 em, .display-3 em, .hero__title em, .page-hero__title em, .statement em { font-style: italic; }
.lede { font-size: clamp(1.1rem, 1.5vw, 1.3rem); line-height: 1.55; color: var(--mist); max-width: 40ch; }
.section--ivory .lede { color: var(--stone); }
.muted { color: var(--mist); }
.section--ivory .muted { color: var(--stone); }
.copper { color: var(--copper-light); }
.section--ivory .copper { color: var(--copper-dark); }
.prose { max-width: 64ch; }
.prose h2 { font-family: var(--display); font-size: var(--fs-h3); line-height: 1.15; margin: 2.2em 0 .6em; }
.prose h3 { font-family: var(--sans); font-weight: 600; font-size: 1.05rem; margin: 1.6em 0 .5em; }
.prose ul, .prose ol { padding-left: 1.2rem; margin: 0 0 1.2em; }
.prose li { margin-bottom: .45em; }
.line { padding-bottom: .05em; }
.statement { font-family: var(--display); font-size: clamp(1.6rem, 3.6vw, 3.2rem); line-height: 1.14; letter-spacing: -.01em; max-width: 26ch; margin: 0; }
.num { font-variant-numeric: tabular-nums; }

/* ---------- Layout ---------- */
.wrap { width: 100%; max-width: 1480px; margin-inline: auto; padding-inline: var(--gut); }
.section { padding-block: var(--sec); position: relative; }
.section--tight { padding-block: clamp(3rem, 8vw, 6.5rem); }
.section--ivory { background: var(--ivory); color: var(--forest); }
.section--moss { background: var(--moss); }
.rule { border: 0; border-top: 1px solid var(--line); margin: 0 0 clamp(2rem, 5vw, 3.5rem); transform-origin: left center; }
.section--ivory .rule { border-top-color: var(--line-ivory); }
.split { display: grid; gap: 1.5rem 3rem; }
.grid-2 { display: grid; gap: 2.5rem 3rem; }
.grid-3 { display: grid; gap: 2rem; }
@media (min-width: 700px) { .grid-3 { grid-template-columns: repeat(3, 1fr); } }
@media (min-width: 1000px) {
  .split { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); }
  .split--even { grid-template-columns: 1fr 1fr; align-items: center; }
  .grid-2 { grid-template-columns: 1fr 1fr; }
  .grid-2--top { align-items: start; }
}
.mt-1 { margin-top: 1rem; }
.mt-2 { margin-top: 2rem; }
.mt-4 { margin-top: clamp(2.5rem, 5vw, 4rem); }
.mb-0 { margin-bottom: 0; }
.flow > * + * { margin-top: 1rem; }
.ratio-45 { aspect-ratio: 4 / 5; }
.ratio-169 { aspect-ratio: 16 / 9; }
.ratio-11 { aspect-ratio: 1 / 1; }
.ratio-43 { aspect-ratio: 4 / 3; }

/* ---------- Buttons and links ---------- */
.btn {
  display: inline-flex; align-items: center; justify-content: center; gap: .7rem;
  min-height: 48px; padding: .85rem 1.5rem;
  font-family: var(--mono); font-size: .76rem; letter-spacing: .12em; text-transform: uppercase;
  text-decoration: none; border: 1px solid var(--ivory); cursor: pointer; background: transparent; color: var(--ivory);
  transition: background-color .35s var(--ease), color .35s var(--ease), border-color .35s var(--ease);
  will-change: transform;
}
.btn-primary { background: var(--ivory); color: var(--forest); }
.btn-primary:hover { background: var(--copper); color: var(--ivory); border-color: var(--copper); }
.btn-ghost:hover { border-color: var(--copper); color: var(--ivory); }
.section--ivory .btn, .section--ivory .btn-ghost { border-color: var(--forest); color: var(--forest); }
.section--ivory .btn-primary { background: var(--copper-dark); color: var(--ivory); border-color: var(--copper-dark); }
.section--ivory .btn-primary:hover { background: var(--forest); border-color: var(--forest); }
.section--ivory .btn-ghost:hover { border-color: var(--copper-dark); color: var(--copper-dark); }
.btn-sm { min-height: 44px; padding: .6rem 1.1rem; }
.cta-row { display: flex; flex-wrap: wrap; gap: .8rem; margin-top: 1.8rem; }
.link-arrow {
  display: inline-flex; align-items: center; gap: .6rem; min-height: 44px;
  font-family: var(--mono); font-size: .76rem; letter-spacing: .12em; text-transform: uppercase;
  text-decoration: none; border-bottom: 1px solid var(--copper); padding-top: .4rem;
}
.link-arrow::after { content: "\2192"; transition: transform .4s var(--ease); }
.link-arrow:hover::after { transform: translateX(4px); }
.tel { text-decoration: none; }
.tel:hover { text-decoration: underline; text-decoration-color: var(--copper); }

/* ---------- Preloader (home only, once per session) ---------- */
.preloader { display: none; }
.js body.page-index .preloader {
  position: fixed; inset: 0; z-index: 250; background: var(--forest); color: var(--ivory);
  display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 1.2rem;
  padding: var(--gut); clip-path: inset(0 0 0 0);
  animation: preloaderFailsafe .01s linear 4s forwards;
}
.intro-seen .preloader, .reduce .preloader { display: none !important; }
@keyframes preloaderFailsafe { to { visibility: hidden; opacity: 0; } }
.preloader__mark { width: 44px; height: 44px; }
.preloader__mark path { stroke: var(--copper); stroke-width: 2.2; fill: none; stroke-linecap: square; }
.preloader__word { margin: 0; font-family: var(--display); font-style: italic; font-size: clamp(1.6rem, 4vw, 2.6rem); line-height: 1; }
.preloader__line { position: relative; width: min(60vw, 260px); height: 1px; background: var(--line); }
.preloader__line i { position: absolute; inset: 0; background: var(--copper); transform-origin: left; transform: scaleX(0); }

/* ---------- Custom cursor (additive, fine pointers only) ---------- */
.cursor { display: none; }
@media (hover: hover) and (pointer: fine) {
  .js .cursor { display: block; position: fixed; left: 0; top: 0; z-index: 240; pointer-events: none; width: 0; height: 0; opacity: 0; transition: opacity .3s; }
  .js .cursor.is-on { opacity: 1; }
  .cursor__ring { position: absolute; width: 14px; height: 14px; margin: -7px 0 0 -7px; border: 1.5px solid var(--copper); border-radius: 50%; transition: transform .35s var(--ease), opacity .25s; }
  .cursor__disc {
    position: absolute; width: 68px; height: 68px; margin: -34px 0 0 -34px; border-radius: 50%;
    border: 1.5px solid var(--copper); background: rgba(15, 31, 26, .72); color: var(--ivory); display: grid; place-items: center;
    transform: scale(.2); opacity: 0; transition: transform .45s var(--ease), opacity .3s;
  }
  .cursor__label { font-family: var(--mono); font-size: .66rem; letter-spacing: .12em; text-transform: uppercase; }
  .cursor.is-label .cursor__disc { transform: scale(1); opacity: 1; }
  .cursor.is-label .cursor__ring { opacity: 0; transform: scale(2); }
  .cursor.is-down .cursor__ring { transform: scale(.6); }
}

/* ---------- Header ---------- */
.site-header {
  position: fixed; inset: 0 0 auto 0; z-index: 100; height: var(--head);
  display: flex; align-items: center; padding-inline: var(--gut);
  color: var(--ivory); background: transparent;
  transition: transform .5s var(--ease), background-color .4s;
}
.site-header.is-solid { background: var(--forest); border-bottom: 1px solid var(--line); }
.site-header.is-hidden { transform: translateY(-100%); }
.header-inner { display: flex; align-items: center; gap: 1rem; width: 100%; max-width: 1480px; margin-inline: auto; }
.brand { display: inline-flex; align-items: center; min-height: 44px; color: var(--ivory); text-decoration: none; margin-right: auto; }
.brand__svg { width: 126px; height: auto; overflow: visible; }
.brand__name { font-family: var(--display); font-size: 27px; fill: currentColor; letter-spacing: -.3px; }
.brand__sub { font-family: var(--mono); font-size: 8.4px; letter-spacing: 3.4px; fill: var(--mist); }
.brand__roof { stroke: var(--copper); stroke-width: 1.8; fill: none; stroke-linecap: square; }
@media (min-width: 700px) { .brand__svg { width: 142px; } }
.site-nav { display: none; }
.nav-list { list-style: none; display: flex; gap: clamp(1rem, 1.8vw, 1.8rem); }
.nav-list a {
  display: inline-flex; align-items: center; min-height: 44px; text-decoration: none;
  font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase;
  border-bottom: 1px solid transparent; transition: border-color .3s;
}
.nav-list a:hover, .nav-list a[aria-current="page"] { border-bottom-color: var(--copper); }
.header-actions { display: flex; align-items: center; gap: .8rem; }
.header-tel { display: none; font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .08em; min-height: 44px; align-items: center; text-decoration: none; }
.header-tel:hover { text-decoration: underline; text-decoration-color: var(--copper); }
.header-cta { display: none; }
@media (min-width: 700px) { .header-cta { display: inline-flex; } }
@media (min-width: 1000px) { .site-nav { display: block; } .header-tel { display: inline-flex; } .menu-toggle { display: none; } .header-actions { margin-left: clamp(1rem, 2vw, 2rem); } }
.menu-toggle {
  display: inline-flex; align-items: center; gap: .7rem; min-height: 44px; min-width: 44px;
  padding: 0 .3rem 0 .6rem; background: none; border: 0; cursor: pointer; color: inherit;
  font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase;
}
.menu-toggle-bars { position: relative; width: 24px; height: 10px; display: block; }
.menu-toggle-bars span { position: absolute; left: 0; right: 0; height: 1px; background: currentColor; transition: transform .45s var(--ease); }
.menu-toggle-bars span:first-child { top: 0; }
.menu-toggle-bars span:last-child { bottom: 0; }
.menu-toggle[aria-expanded="true"] .menu-toggle-bars span:first-child { transform: translateY(4.5px) rotate(45deg); }
.menu-toggle[aria-expanded="true"] .menu-toggle-bars span:last-child { transform: translateY(-4.5px) rotate(-45deg); }
.no-js .menu-toggle { display: none; }
@media (min-width: 1000px) { .menu-toggle { display: none; } }

/* ---------- Mobile menu ---------- */
.site-menu { background: var(--forest); color: var(--ivory); }
.no-js .site-menu { padding: calc(var(--head) + 1rem) var(--gut) 2rem; border-bottom: 1px solid var(--line); }
.js .site-menu { position: fixed; inset: var(--head) 0 0 0; z-index: 95; overflow-y: auto; padding: 1.5rem var(--gut) 2.5rem; border-top: 1px solid var(--line); }
html.menu-open { overflow: hidden; }
.menu-list { list-style: none; border-top: 1px solid var(--line); }
.menu-list li { border-bottom: 1px solid var(--line); }
.menu-list a {
  display: flex; align-items: baseline; gap: 1rem; padding: .7rem 0; min-height: 56px; text-decoration: none;
  font-family: var(--display); font-size: clamp(1.9rem, 7vw, 3.6rem); line-height: 1.05; letter-spacing: -.01em;
}
.menu-list a[aria-current="page"] { font-style: italic; }
.menu-num { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; color: var(--mist); min-width: 2.2em; }
.menu-list a[aria-current="page"] .menu-num { color: var(--copper-light); }
.menu-foot { display: grid; gap: 1rem; margin-top: 2rem; color: var(--mist); }
.menu-foot .btn { justify-self: start; }
.menu-foot address { color: var(--ivory); font-size: 1.15rem; }

/* ---------- Home hero: slideshow ---------- */
.hero { position: relative; height: 100svh; min-height: 600px; max-height: 1080px; overflow: hidden; color: var(--ivory); background: var(--forest); }
.hero__slides { position: absolute; inset: 0; }
.hero__slide { position: absolute; inset: 0; margin: 0; opacity: 0; }
.hero__slide.is-active { opacity: 1; z-index: 1; }
.no-js .hero__slide:first-child { opacity: 1; }
.hero__slide img { width: 100%; height: 100%; object-fit: cover; object-position: 50% 55%; transform-origin: 50% 50%; }
.hero__scrim { position: absolute; inset: 0; z-index: 2; background: linear-gradient(180deg, rgba(15, 31, 26, .5) 0%, rgba(15, 31, 26, .18) 30%, rgba(15, 31, 26, .62) 60%, rgba(15, 31, 26, .95) 100%); }
.hero__content { position: absolute; z-index: 3; left: 0; right: 0; bottom: 0; padding: 0 var(--gut) clamp(1.4rem, 4vw, 3rem); display: grid; gap: 1.1rem; max-width: 1480px; margin-inline: auto; }
.hero__eyebrow { margin: 0; color: var(--ivory); text-shadow: 0 1px 12px rgba(15, 31, 26, .8); }
.hero__title { font-family: var(--display); font-style: italic; font-size: var(--fs-hero); line-height: .96; letter-spacing: -.02em; max-width: 12ch; }
.hero__foot { display: grid; gap: 1.2rem; }
.hero__lede { max-width: 36ch; margin: 0; color: var(--ivory); }
.hero__ctas { display: flex; flex-wrap: wrap; gap: .8rem; }
.hero__strip { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .8rem 1.5rem; border-top: 1px solid rgba(243, 239, 230, .25); padding-top: 1rem; }
.hero__cap { margin: 0; color: var(--ivory); display: flex; flex-wrap: wrap; gap: .3rem 1rem; }
.hero__cap strong { font-weight: 500; color: var(--copper-light); }
.hero__controls { display: flex; align-items: center; gap: 1rem; }
.hero__count { color: var(--mist); }
.hero__toggle {
  display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding: 0 1rem; background: rgba(15, 31, 26, .6); border: 1px solid var(--ui-dark); color: var(--ivory); cursor: pointer;
  font-family: var(--mono); font-size: .68rem; letter-spacing: .12em; text-transform: uppercase;
}
.hero__toggle:hover { border-color: var(--ivory); }
.no-js .hero__toggle, .reduce .hero__toggle { display: none; }
@media (min-width: 1000px) {
  .hero__foot { grid-template-columns: 1fr auto; align-items: end; }
  .hero__content { gap: 1.6rem; }
}

/* ---------- Page hero (interior) ---------- */
.page-hero { padding: calc(var(--head) + clamp(2.5rem, 8vw, 7rem)) 0 clamp(2.5rem, 6vw, 5rem); position: relative; }
.page-hero-grid { display: grid; gap: 2.5rem 3rem; align-items: end; }
.page-hero__title, .page-hero h1 { font-family: var(--display); font-size: var(--fs-h1); line-height: 1; letter-spacing: -.02em; max-width: 14ch; margin: 0 0 clamp(1.2rem, 3vw, 2rem); }
.page-hero .lede { margin-bottom: 0; }
.page-hero-media { aspect-ratio: 16 / 9; overflow: hidden; background: var(--moss); }
.page-hero-media img { width: 100%; height: 100%; object-fit: cover; }
@media (min-width: 1000px) {
  .page-hero-grid { grid-template-columns: 7fr 5fr; }
  .page-hero-media { aspect-ratio: 4 / 5; max-height: 70vh; }
  .page-hero .lede { font-size: 1.25rem; }
}
.crumbs ol { list-style: none; display: flex; flex-wrap: wrap; gap: .3rem .6rem; color: var(--mist); margin-bottom: 1.4rem; font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .1em; text-transform: uppercase; }
.crumbs li + li::before { content: "/"; margin-right: .6rem; color: var(--copper); }
.crumbs a { text-decoration: none; display: inline-flex; min-height: 24px; align-items: center; padding-block: .25rem; }
.crumbs a:hover { text-decoration: underline; }
.crumbs [aria-current] { color: var(--ivory); }

/* ---------- Image reveal (clip wipe) ---------- */
.reveal { overflow: hidden; background: var(--moss); }
.reveal img { width: 100%; height: 100%; object-fit: cover; }
.section--ivory .reveal { background: var(--line-ivory); }
figcaption { margin-top: .8rem; color: var(--mist); font-size: var(--fs-small); }
.section--ivory figcaption { color: var(--stone); }

/* ---------- Counters ---------- */
.counters { list-style: none; display: grid; gap: 2rem 1.5rem; border-top: 1px solid var(--line); padding-top: 2rem; }
.counter { display: grid; gap: .3rem; }
.counter__num { font-family: var(--display); font-size: clamp(2.8rem, 7vw, 5.6rem); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.counter__num b { font-weight: 400; color: var(--copper); }
.counter__label { color: var(--mist); }
.counters-note { color: var(--mist); font-size: var(--fs-small); margin: 1.6rem 0 0; }
@media (min-width: 700px) { .counters { grid-template-columns: repeat(3, 1fr); } }

/* ---------- Listing cards (Flip) ---------- */
.listings { list-style: none; display: grid; gap: 1.25rem; }
@media (min-width: 700px) { .listings { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .listings { grid-template-columns: repeat(3, 1fr); gap: 1.5rem; } }
.listing { position: relative; display: grid; align-content: start; background: var(--moss); border: 1px solid var(--line); overflow: hidden; }
.listing.is-open { grid-column: 1 / -1; }
.listing__open {
  display: grid; width: 100%; text-align: left; background: none; border: 0; padding: 0; color: inherit; cursor: pointer;
}
.listing__open:focus-visible { outline-offset: -3px; }
.listing__media { aspect-ratio: 4 / 3; overflow: hidden; background: var(--forest); }
.listing__media img { width: 100%; height: 100%; object-fit: cover; transition: transform 1.2s var(--ease); }
.listing__open:hover .listing__media img { transform: scale(1.04); }
.listing.is-open .listing__media { aspect-ratio: 16 / 9; }
@media (min-width: 700px) { .listing.is-open .listing__media { aspect-ratio: 21 / 9; } }
.listing__body { padding: 1.1rem 1.2rem 1.3rem; display: grid; gap: .35rem; }
.listing__status { color: var(--copper-light); }
.listing__addr { font-family: var(--display); font-style: italic; font-size: clamp(1.45rem, 2.2vw, 1.9rem); line-height: 1.1; }
.listing.is-open .listing__addr { font-size: clamp(1.8rem, 3.6vw, 3rem); }
.listing__price { font-family: var(--mono); font-size: 1.05rem; letter-spacing: .04em; margin-top: .2rem; }
.listing__facts { color: var(--mist); display: flex; flex-wrap: wrap; gap: .2rem 1rem; margin: 0; }
.listing__hint { color: var(--mist); font-size: .68rem; margin-top: .5rem; }
.listing__detail { display: grid; grid-template-rows: 0fr; }
.no-js .listing__detail, .listing.is-open .listing__detail { grid-template-rows: 1fr; }
.listing__detail > div { min-height: 0; overflow: hidden; }
.listing__inner { display: grid; gap: 1.5rem; padding: 0 1.2rem 1.4rem; }
.listing__gallery { list-style: none; display: grid; grid-template-columns: repeat(3, 1fr); gap: .5rem; }
.listing__gallery li { aspect-ratio: 4 / 3; overflow: hidden; }
.listing__gallery img { width: 100%; height: 100%; object-fit: cover; }
.listing__rows { display: grid; margin: 0; border-top: 1px solid var(--line); }
.listing__rows div { display: flex; justify-content: space-between; gap: 1rem; padding: .6rem 0; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: .8rem; letter-spacing: .04em; }
.listing__rows dt { color: var(--mist); }
.listing__rows dd { margin: 0; text-align: right; }
.listing__blurb { color: var(--mist); margin: 0; max-width: 56ch; }
.listing__actions { display: flex; flex-wrap: wrap; gap: .8rem; align-items: center; }
.listing__close { min-height: 44px; }
@media (min-width: 1000px) {
  .listing__inner { grid-template-columns: 7fr 5fr; gap: 1.5rem 3rem; padding-inline: 1.6rem; }
  .listing__gallery { grid-column: 1; }
  .listing__side { grid-column: 2; grid-row: 1 / span 2; display: grid; gap: 1.2rem; align-content: start; }
  .listing__blurb { grid-column: 1; }
}

/* ---------- Neighborhoods ---------- */
.nabes { position: relative; }
.nabes__head { margin-bottom: clamp(2rem, 5vw, 3.5rem); }
.nabes__index { display: none; list-style: none; }
.nabes__list { list-style: none; display: grid; gap: 3rem; }
.nabe { display: grid; gap: 1rem; }
.nabe__media { aspect-ratio: 16 / 10; overflow: hidden; background: var(--line-ivory); }
.nabe__media img { width: 100%; height: 100%; object-fit: cover; }
.nabe__name { font-family: var(--display); font-size: clamp(1.8rem, 4vw, 3rem); line-height: 1; }
.nabe__band { display: flex; flex-wrap: wrap; justify-content: space-between; gap: .3rem 1rem; margin: 0; padding: .8rem 0; border-top: 1px solid var(--line-ivory); border-bottom: 1px solid var(--line-ivory); }
.nabe__band span { color: var(--stone); }
.nabe__band strong { font-weight: 500; color: var(--copper-dark); }
.nabe__line { margin: 0; color: var(--stone); max-width: 48ch; }
@media (min-width: 1000px) {
  .nabes.is-pinned { height: 100svh; display: flex; flex-direction: column; padding-top: calc(var(--head) + 1.5rem); padding-bottom: 2rem; overflow: hidden; }
  .nabes.is-pinned .nabes__head { margin-bottom: 1.5rem; }
  .nabes.is-pinned .nabes__grid { display: grid; grid-template-columns: 4fr 8fr; gap: 3rem; flex: 1; min-height: 0; }
  .nabes.is-pinned .nabes__index { display: grid; align-content: center; border-top: 1px solid var(--line-ivory); }
  .nabes__idx {
    display: flex; align-items: center; justify-content: space-between; gap: 1rem; width: 100%; min-height: 56px; padding: .4rem 0;
    background: none; border: 0; border-bottom: 1px solid var(--line-ivory); color: var(--stone); text-align: left; cursor: pointer;
    font-family: var(--display); font-size: clamp(1.6rem, 2.4vw, 2.4rem); line-height: 1; transition: color .3s, transform .4s var(--ease);
  }
  .nabes__idx .mono { font-size: .68rem; color: var(--stone); }
  .nabes__idx.is-active { color: var(--forest); transform: translateX(1rem); }
  .nabes__idx.is-active .mono { color: var(--copper-dark); }
  .nabes.is-pinned .nabes__list { position: relative; display: block; min-height: 0; }
  .nabes.is-pinned .nabe { position: absolute; inset: 0; grid-template-rows: 1fr auto auto; opacity: 0; visibility: hidden; transition: opacity .5s var(--ease), visibility 0s linear .5s; }
  .nabes.is-pinned .nabe.is-active { opacity: 1; visibility: visible; z-index: 1; transition: opacity .5s var(--ease), visibility 0s; }
  .nabes.is-pinned .nabe__media { aspect-ratio: auto; min-height: 0; }
  .nabes.is-pinned .nabe__name { position: absolute; left: 1.5rem; bottom: 1.5rem; color: var(--ivory); font-style: italic; font-size: clamp(2.4rem, 4vw, 4rem); text-shadow: 0 2px 24px rgba(15, 31, 26, .8); }
  .nabes.is-pinned .nabe__media { position: relative; }
  .nabes.is-pinned .nabe__mediawrap { position: relative; min-height: 0; display: grid; }
}

/* ---------- Sold rail ---------- */
.rail { position: relative; }
.rail__head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: end; gap: 1.5rem; margin-bottom: clamp(1.5rem, 4vw, 3rem); padding-inline: var(--gut); max-width: 1480px; margin-inline: auto; }
.rail__count { color: var(--mist); display: none; }
.rail__viewport { overflow-x: auto; overscroll-behavior-x: contain; scroll-snap-type: x mandatory; scroll-padding-inline: var(--gut); padding: 0 var(--gut) 1rem; scrollbar-width: thin; scrollbar-color: var(--line) transparent; }
.rail__track { list-style: none; display: flex; gap: 1rem; width: max-content; }
.rail__card {
  width: min(78vw, 340px); scroll-snap-align: start; background: var(--moss); border: 1px solid var(--line);
  padding: 1.2rem; display: grid; gap: .8rem; align-content: start;
}
.rail__idx { color: var(--mist); display: flex; justify-content: space-between; }
.rail__addr { font-family: var(--display); font-style: italic; font-size: clamp(1.35rem, 1.8vw, 1.7rem); line-height: 1.1; }
.rail__rows { display: grid; margin: 0; border-top: 1px solid var(--line); }
.rail__rows div { display: flex; justify-content: space-between; gap: 1rem; padding: .5rem 0; border-bottom: 1px solid var(--line); font-family: var(--mono); font-size: .8rem; letter-spacing: .04em; }
.rail__rows dt { color: var(--mist); }
.rail__rows dd { margin: 0; }
.rail__delta { font-family: var(--mono); font-size: 1.5rem; letter-spacing: 0; color: var(--copper); font-variant-numeric: tabular-nums; }
.rail__delta small { display: block; font-size: .68rem; letter-spacing: .12em; text-transform: uppercase; color: var(--mist); margin-top: .2rem; }
.rail__hint { color: var(--mist); font-size: var(--fs-small); padding-inline: var(--gut); max-width: 1480px; margin: 1rem auto 0; }
@media (min-width: 1000px) {
  .rail__card { width: 360px; }
  .rail.is-pinned { height: 100svh; display: flex; flex-direction: column; justify-content: center; overflow: hidden; padding-block: calc(var(--head) + 1rem) 2rem; }
  .rail.is-pinned .rail__count { display: block; }
  .rail.is-pinned .rail__head, .rail.is-pinned .rail__viewport { width: 100%; }
  .rail.is-pinned .rail__viewport { overflow: visible; scroll-snap-type: none; padding-bottom: 0; }
  .rail.is-pinned .rail__hint { display: none; }
  .no-js .rail__hint, .reduce .rail__hint { display: block; }
}

/* ---------- Reviews ---------- */
.reviews { list-style: none; display: grid; gap: 1.5rem 2rem; }
.review { border-top: 1px solid var(--line-ivory); padding-top: 1.2rem; display: grid; gap: .8rem; align-content: start; }
.review__stars { color: var(--copper-dark); letter-spacing: .15em; font-size: .9rem; }
.review__text { font-family: var(--display); font-size: clamp(1.15rem, 1.6vw, 1.4rem); line-height: 1.3; margin: 0; }
.review__by { color: var(--stone); margin: 0; }
@media (min-width: 700px) { .reviews { grid-template-columns: repeat(2, 1fr); } }
@media (min-width: 1000px) { .reviews { grid-template-columns: repeat(3, 1fr); } }
.rating { display: flex; flex-wrap: wrap; align-items: baseline; gap: .5rem 1.2rem; margin-bottom: 2rem; }
.rating__num { font-family: var(--display); font-size: clamp(3rem, 7vw, 5.5rem); line-height: 1; }

/* ---------- Mortgage calculator ---------- */
.calc { background: var(--moss); color: var(--ivory); border: 1px solid var(--line); padding: clamp(1.25rem, 3vw, 2.5rem); display: grid; gap: 2rem; }
.calc__inputs { display: grid; gap: 1.4rem; }
.calc__field { display: grid; gap: .5rem; }
.calc__top { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.calc__top label { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mist); }
.calc__top output { font-family: var(--mono); font-size: 1rem; font-variant-numeric: tabular-nums; }
.calc input[type="range"] { width: 100%; height: 44px; margin: 0; background: transparent; accent-color: var(--copper); cursor: pointer; }
.calc input[type="range"]::-webkit-slider-runnable-track { height: 2px; background: var(--ui-dark); }
.calc input[type="range"]::-moz-range-track { height: 2px; background: var(--ui-dark); }
.calc input[type="range"]::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 22px; height: 22px; margin-top: -10px; border-radius: 50%; background: var(--copper); border: 2px solid var(--ivory); }
.calc input[type="range"]::-moz-range-thumb { width: 22px; height: 22px; border-radius: 50%; background: var(--copper); border: 2px solid var(--ivory); }
.calc__terms { border: 0; padding: 0; margin: 0; display: grid; gap: .5rem; }
.calc__terms legend { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mist); padding: 0; margin-bottom: .5rem; }
.calc__radios { display: flex; gap: .6rem; }
.calc__radios label { display: inline-flex; align-items: center; gap: .5rem; min-height: 44px; padding: 0 1rem; border: 1px solid var(--ui-dark); cursor: pointer; font-family: var(--mono); font-size: .8rem; letter-spacing: .08em; }
.calc__radios label:has(input:checked) { border-color: var(--ivory); background: var(--forest); }
.calc__radios input { accent-color: var(--copper); width: 18px; height: 18px; margin: 0; }
.calc__result { display: grid; gap: .5rem; align-content: center; border-top: 1px solid var(--line); padding-top: 1.5rem; }
.calc__big { font-family: var(--display); font-size: clamp(3rem, 8vw, 5.5rem); line-height: 1; letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.calc__unit { color: var(--mist); }
.calc__line { font-family: var(--mono); font-size: .8rem; letter-spacing: .05em; color: var(--mist); line-height: 1.8; font-variant-numeric: tabular-nums; }
.calc__line b { font-weight: 500; color: var(--ivory); }
.calc__note { color: var(--mist); font-size: .85rem; margin: .4rem 0 0; }
@media (min-width: 1000px) {
  .calc { grid-template-columns: 7fr 5fr; gap: 3rem; align-items: start; }
  .calc__result { border-top: 0; border-left: 1px solid var(--line); padding: 0 0 0 3rem; align-self: stretch; }
}

/* ---------- Forms ---------- */
.lead-form { display: grid; gap: 1.4rem; }
.lead-panel { background: var(--moss); border: 1px solid var(--line); padding: clamp(1.25rem, 3vw, 2.5rem); }
.section--ivory .lead-panel { background: var(--ivory); border-color: var(--line-ivory); }
.field { display: grid; gap: .45rem; }
.field label, .field legend, .field__label { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mist); }
.section--ivory .field label, .section--ivory .field legend { color: var(--stone); }
.field .optional { text-transform: none; letter-spacing: 0; }
.field input, .field select, .field textarea {
  width: 100%; min-height: 48px; padding: .7rem .9rem; background: var(--forest); color: var(--ivory);
  border: 1px solid var(--ui-dark); border-radius: 0; font-size: 1.02rem;
}
.section--ivory .field input, .section--ivory .field select, .section--ivory .field textarea { background: #FFFFFF; color: var(--forest); border-color: var(--stone); }
.field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--mist) 50%), linear-gradient(135deg, var(--mist) 50%, transparent 50%); background-position: calc(100% - 20px) 50%, calc(100% - 14px) 50%; background-size: 6px 6px; background-repeat: no-repeat; padding-right: 2.6rem; cursor: pointer; }
.section--ivory .field select { background-image: linear-gradient(45deg, transparent 50%, var(--stone) 50%), linear-gradient(135deg, var(--stone) 50%, transparent 50%); }
.field textarea { min-height: 120px; resize: vertical; }
.field input:focus-visible, .field select:focus-visible, .field textarea:focus-visible { outline-offset: 3px; }
.field-row { display: grid; gap: 1.4rem; }
@media (min-width: 700px) { .field-row { grid-template-columns: 1fr 1fr; } }
.field-hint { color: var(--mist); font-size: .85rem; margin: -.6rem 0 0; }
.section--ivory .field-hint { color: var(--stone); }
.field-error { color: var(--error); margin: 0; font-size: .92rem; }
.section--ivory .field-error { color: var(--error-ivory); }
.has-error input, .has-error select, .has-error textarea { border-color: var(--error); }
.section--ivory .has-error input, .section--ivory .has-error select { border-color: var(--error-ivory); }
.honeypot { position: absolute !important; left: -9999px !important; width: 1px; height: 1px; overflow: hidden; }
.form-foot { display: flex; flex-wrap: wrap; gap: 1rem 2rem; align-items: center; }
.form-note { color: var(--mist); font-size: .85rem; margin: 0; max-width: 38ch; }
.section--ivory .form-note { color: var(--stone); }
.lead-success { border-top: 1px solid var(--copper); padding-top: 1.4rem; }
.lead-success:focus { outline: none; }
.lead-success-h { font-family: var(--display); font-size: var(--fs-h3); margin-bottom: .6rem; }
.lead-success p { color: var(--mist); }
.section--ivory .lead-success p { color: var(--stone); }
.lead-success strong { color: var(--copper-light); font-family: var(--mono); font-weight: 500; letter-spacing: .06em; }
.section--ivory .lead-success strong { color: var(--copper-dark); }

/* stepper */
.step-progress { height: 2px; background: var(--line); margin-bottom: 1.6rem; position: relative; }
.section--ivory .step-progress { background: var(--line-ivory); }
.step-bar { display: block; height: 100%; width: 33.333%; background: var(--copper); }
.step-label { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mist); margin-bottom: 1rem; }
.section--ivory .step-label { color: var(--stone); }
fieldset[data-step] { border: 0; padding: 0; margin: 0; display: grid; gap: 1.4rem; min-width: 0; }
fieldset[data-step] > legend { font-family: var(--display); font-size: var(--fs-h3); line-height: 1.15; margin-bottom: 1rem; padding: 0; }
.step-nav { display: flex; flex-wrap: wrap; gap: .8rem; }
.radios { display: grid; gap: .5rem; }
.radios label { display: flex; align-items: center; gap: .8rem; min-height: 48px; padding: .4rem 1rem; border: 1px solid var(--ui-dark); cursor: pointer; font-family: var(--sans); font-size: 1rem; text-transform: none; letter-spacing: 0; color: var(--ivory); }
.section--ivory .radios label { border-color: var(--stone); color: var(--forest); }
.radios label:has(input:checked) { border-color: var(--copper); }
.radios input { accent-color: var(--copper); width: 18px; height: 18px; margin: 0; flex: none; }
@media (min-width: 700px) { .radios { grid-template-columns: 1fr 1fr; } }

/* ---------- Service rows and cards ---------- */
.rows { list-style: none; border-top: 1px solid var(--line); }
.rows > li { border-bottom: 1px solid var(--line); }
.section--ivory .rows, .section--ivory .rows > li { border-color: var(--line-ivory); }
.row { display: grid; gap: .4rem 2rem; padding: 1.5rem 0; text-decoration: none; align-items: baseline; }
.row__name { font-family: var(--display); font-size: clamp(1.7rem, 3.8vw, 3.2rem); line-height: 1; letter-spacing: -.01em; }
.row__desc { color: var(--mist); max-width: 48ch; margin: 0; }
.section--ivory .row__desc { color: var(--stone); }
.row__tag { color: var(--mist); }
.section--ivory .row__tag { color: var(--stone); }
a.row:hover .row__name { font-style: italic; }
@media (min-width: 1000px) { .row { grid-template-columns: 5fr 5fr 2fr; } .row__tag { text-align: right; } }

.cards { list-style: none; display: grid; gap: 2.5rem 2rem; }
.card { display: grid; gap: 1rem; text-decoration: none; }
.card .reveal { aspect-ratio: 4 / 3; }
.card__title { font-family: var(--display); font-size: clamp(1.7rem, 3vw, 2.5rem); line-height: 1; }
a.card:hover .card__title { font-style: italic; }
.card__meta { display: flex; justify-content: space-between; gap: 1rem; border-top: 1px solid var(--line); padding-top: .8rem; color: var(--mist); }
.section--ivory .card__meta { border-top-color: var(--line-ivory); color: var(--stone); }
@media (min-width: 700px) { .cards { grid-template-columns: 1fr 1fr; } }
@media (min-width: 1000px) { .cards--3 { grid-template-columns: repeat(3, 1fr); } .cards li:nth-child(even) { margin-top: 4rem; } .cards--3 li:nth-child(even) { margin-top: 0; } }

/* ---------- Steps and timelines ---------- */
.steps { list-style: none; display: grid; border-top: 1px solid var(--line); counter-reset: step; }
.section--ivory .steps { border-top-color: var(--line-ivory); }
.steps li { display: grid; grid-template-columns: 3rem 1fr; gap: .4rem 1rem; padding: 1.4rem 0; border-bottom: 1px solid var(--line); }
.section--ivory .steps li { border-bottom-color: var(--line-ivory); }
.steps__num { color: var(--copper-light); grid-row: 1 / span 2; padding-top: .35rem; }
.section--ivory .steps__num { color: var(--copper-dark); }
.steps__name { font-family: var(--display); font-size: clamp(1.5rem, 2.6vw, 2.2rem); line-height: 1.05; }
.steps p { margin: 0; color: var(--mist); max-width: 56ch; }
.section--ivory .steps p { color: var(--stone); }
@media (min-width: 1000px) { .steps li { grid-template-columns: 3rem 4fr 7fr; } .steps__num { grid-row: auto; } }

/* ---------- Data tables ---------- */
.data-table { width: 100%; border-collapse: collapse; margin: 1.5rem 0 1rem; font-family: var(--mono); font-size: .8rem; letter-spacing: .03em; font-variant-numeric: tabular-nums; }
.data-table caption { text-align: left; font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; color: var(--mist); padding-bottom: .8rem; }
.section--ivory .data-table caption { color: var(--stone); }
.data-table th, .data-table td { text-align: left; padding: .75rem .6rem .75rem 0; border-bottom: 1px solid var(--line); vertical-align: top; }
.section--ivory .data-table th, .section--ivory .data-table td { border-bottom-color: var(--line-ivory); }
.data-table th { font-weight: 500; color: var(--mist); }
.section--ivory .data-table th { color: var(--stone); }
.data-table td.r, .data-table th.r { text-align: right; white-space: nowrap; }
.data-table .up { color: var(--copper-light); }
.section--ivory .data-table .up { color: var(--copper-dark); }
.table-scroll { overflow-x: auto; }
.data-table.addr td:first-child { font-family: var(--display); font-style: italic; font-size: 1.05rem; letter-spacing: 0; }

/* ---------- Facts, definition lists ---------- */
.facts { display: grid; grid-template-columns: repeat(2, 1fr); gap: 1.5rem; margin: clamp(2rem, 5vw, 3.5rem) 0 0; border-top: 1px solid var(--line); padding-top: 1.5rem; }
.facts div { display: grid; gap: .3rem; }
.facts dt { order: 2; color: var(--mist); }
.facts dd { margin: 0; font-family: var(--display); font-size: clamp(1.8rem, 3.6vw, 3rem); line-height: 1; }
.section--ivory .facts { border-top-color: var(--line-ivory); }
.section--ivory .facts dt { color: var(--stone); }
@media (min-width: 700px) { .facts { grid-template-columns: repeat(4, 1fr); } }
.kv { display: grid; margin: 0; border-top: 1px solid var(--line); }
.kv div { display: grid; gap: .25rem; padding: .9rem 0; border-bottom: 1px solid var(--line); }
.kv dt { color: var(--mist); }
.kv dd { margin: 0; }
.section--ivory .kv, .section--ivory .kv div { border-color: var(--line-ivory); }
.section--ivory .kv dt { color: var(--stone); }
@media (min-width: 700px) { .kv div { grid-template-columns: 12rem 1fr; gap: 1rem; } }
.checks { list-style: none; display: grid; gap: 0 3rem; border-top: 1px solid var(--line); }
.checks li { padding: .85rem 0 .85rem 1.6rem; border-bottom: 1px solid var(--line); position: relative; }
.checks li::before { content: ""; position: absolute; left: 0; top: 1.45rem; width: .7rem; height: 1px; background: var(--copper); }
.section--ivory .checks, .section--ivory .checks li { border-color: var(--line-ivory); }
@media (min-width: 700px) { .checks { grid-template-columns: 1fr 1fr; } }

/* ---------- Team ---------- */
.team { list-style: none; display: grid; gap: 2rem 2.5rem; }
.person { border-top: 1px solid var(--line-ivory); padding-top: 1.2rem; display: grid; gap: .5rem; align-content: start; }
.person__name { font-family: var(--display); font-size: clamp(1.7rem, 2.8vw, 2.4rem); line-height: 1.05; }
.person__role { color: var(--copper-dark); }
.person__dre { color: var(--stone); }
.person p { margin: .4rem 0 0; color: var(--stone); }
@media (min-width: 700px) { .team { grid-template-columns: 1fr 1fr; } }

/* ---------- FAQ ---------- */
.faq { border-top: 1px solid var(--line); }
.section--ivory .faq { border-top-color: var(--line-ivory); }
.faq-item { border-bottom: 1px solid var(--line); }
.section--ivory .faq-item { border-bottom-color: var(--line-ivory); }
.faq-item summary { cursor: pointer; list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem; padding: 1.1rem 0; min-height: 56px; font-family: var(--display); font-size: clamp(1.2rem, 2vw, 1.6rem); line-height: 1.2; }
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary::after { content: ""; flex: none; width: 14px; height: 14px; background: linear-gradient(var(--copper), var(--copper)) center / 14px 1px no-repeat, linear-gradient(var(--copper), var(--copper)) center / 1px 14px no-repeat; transition: transform .4s var(--ease); }
.faq-item[open] summary::after { transform: rotate(45deg); }
.faq-answer { padding: 0 0 1.4rem; color: var(--mist); max-width: 64ch; }
.section--ivory .faq-answer { color: var(--stone); }
.faq-answer p:last-child { margin-bottom: 0; }

/* ---------- CTA band ---------- */
.cta-band { position: relative; overflow: hidden; min-height: 72svh; display: flex; align-items: flex-end; color: var(--ivory); }
.cta-band__media { position: absolute; inset: 0; }
.cta-band__media img { width: 100%; height: 100%; object-fit: cover; }
.cta-band__media::after { content: ""; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(15, 31, 26, .25), rgba(15, 31, 26, .9)); }
.cta-band__content { position: relative; padding-block: var(--sec) clamp(2.5rem, 6vw, 5rem); display: grid; gap: 1.2rem; justify-items: start; }
.cta-band__content p { max-width: 42ch; margin: 0; }

/* ---------- Contact ---------- */
.contact-grid { display: grid; gap: 3rem; }
@media (min-width: 1000px) { .contact-grid { grid-template-columns: 7fr 5fr; gap: 5rem; } }
.office { display: grid; gap: 1.5rem; align-content: start; }
.office address { font-size: clamp(1.4rem, 2.4vw, 2rem); line-height: 1.2; }
.hours { display: grid; margin: 0; }
.hours div { display: flex; justify-content: space-between; gap: 1rem; padding: .7rem 0; border-bottom: 1px solid var(--line-ivory); }
.hours dt { color: var(--stone); }
.hours dd { margin: 0; }
.map-block { position: relative; aspect-ratio: 4 / 3; background: var(--moss); border: 1px solid var(--line); color: var(--ivory); display: flex; flex-direction: column; justify-content: space-between; padding: 1.2rem; overflow: hidden; }
.map-block svg { position: absolute; inset: 0; width: 100%; height: 100%; }
.map-block line, .map-block path { stroke: var(--line); stroke-width: 1; fill: none; }
.map-block .road { stroke: var(--ui-dark); stroke-width: 5; }
.map-block .pin { position: absolute; left: 56%; top: 48%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border: 1.5px solid var(--copper); border-radius: 50%; }
.map-block .pin::after { content: ""; position: absolute; inset: 5px; background: var(--copper); border-radius: 50%; }
.map-block p { position: relative; margin: 0; }

/* ---------- Footer ---------- */
.site-footer { background: var(--forest); color: var(--ivory); border-top: 1px solid var(--line); padding-top: clamp(4rem, 10vw, 8rem); }
.footer-cta { display: grid; gap: 1.4rem; justify-items: start; padding-bottom: clamp(3rem, 8vw, 6rem); }
.footer-big { font-family: var(--display); font-style: italic; font-size: clamp(2.8rem, 9vw, 8rem); line-height: .95; letter-spacing: -.02em; margin: 0; max-width: 12ch; }
.footer-sub { color: var(--mist); max-width: 44ch; margin: 0; }
.footer-grid { display: grid; gap: 2.5rem; border-top: 1px solid var(--line); padding-block: 2.5rem; }
.footer-h { font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .13em; text-transform: uppercase; color: var(--mist); margin: 0 0 1rem; display: flex; align-items: center; gap: .7rem; }
.footer-h::before { content: ""; width: 1.5rem; height: 1px; background: var(--copper); }
.footer-brand address { font-size: 1.25rem; line-height: 1.3; margin-bottom: .8rem; }
.footer-brand p { margin: 0 0 .4rem; color: var(--mist); font-size: var(--fs-small); }
.footer-brand a { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; color: var(--ivory); }
.footer-brand a:hover { text-decoration: underline; text-decoration-color: var(--copper); }
.footer-nav { display: grid; grid-template-columns: repeat(2, 1fr); gap: 2rem; }
.footer-nav ul { list-style: none; }
.footer-nav li { font-size: var(--fs-small); }
.footer-nav a { display: inline-flex; align-items: center; min-height: 40px; text-decoration: none; color: var(--ivory); }
.footer-nav a:hover { text-decoration: underline; text-decoration-color: var(--copper); }
.footer-base { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 1rem 2rem; border-top: 1px solid var(--line); padding-block: 1.5rem 2rem; color: var(--mist); font-size: .82rem; }
.footer-base p { margin: 0; }
.footer-top { display: inline-flex; align-items: center; min-height: 44px; text-decoration: none; color: var(--ivory); font-family: var(--mono); font-size: var(--fs-mono); letter-spacing: .12em; text-transform: uppercase; border-bottom: 1px solid var(--copper); }
@media (min-width: 1000px) {
  .footer-grid { grid-template-columns: 4fr 6fr 2fr; }
  .footer-nav { grid-template-columns: repeat(3, 1fr); }
  .footer-cta { grid-template-columns: 1fr auto; align-items: end; }
  .footer-big { grid-column: 1 / -1; }
}

/* ---------- 404 ---------- */
.nf { min-height: 100svh; display: grid; align-content: center; padding-block: calc(var(--head) + 3rem) 4rem; }
.nf h1 { font-family: var(--display); font-style: italic; font-size: var(--fs-h1); line-height: 1; max-width: 14ch; margin-bottom: 1.5rem; }
.nf__code { color: var(--mist); }

/* ---------- Cross-page transitions ---------- */
@media (prefers-reduced-motion: no-preference) {
  @view-transition { navigation: auto; }
  ::view-transition-old(root), ::view-transition-new(root) { animation-duration: .3s; animation-timing-function: ease; }
}

/* ---------- Reduced motion ---------- */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { transition-duration: .01ms !important; animation-duration: .01ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; }
  .hero__slide { opacity: 0; }
  .hero__slide:first-child, .hero__slide.is-active { opacity: 1; }
}
