/* ============================================================
   MERIDIAN PROPERTY GROUP — Architectural Monograph / Quiet Luxury
   "We sell architecture, not square footage."
   Display: Libre Caslon Display · Body: Inter · Tabular figures for prices.
   Palette: --forest #14201C · --sage #3C5A4E · --brass #B7A98C · --plaster #EFEDE6
   Signature: self-drawing brass line-art · a vertical hairline spine that walks
   ============================================================ */

:root{
  --forest:#14201C;
  --sage:#3C5A4E;
  --brass:#B7A98C;
  --plaster:#EFEDE6;

  --forest-2:#1B2A24;
  --plaster-2:#E5E2D8;
  --plaster-3:#DAD6C8;
  --ink:#11180F;            /* near-black text on plaster */
  --muted:#5C6A60;          /* muted on plaster */
  --muted-2:#7C8779;
  --line:#C9C5B6;           /* hairline on plaster */
  --line-forest:rgba(239,237,230,.16);  /* hairline on forest */
  --plaster-on-forest:rgba(239,237,230,.62);
  --plaster-on-forest-strong:rgba(239,237,230,.86);  /* small body copy on forest — AA */
  --brass-line:#B7A98C;
  --brass-soft:rgba(183,169,140,.14);

  --ff:'Inter',system-ui,-apple-system,sans-serif;
  --display:'Libre Caslon Display','Times New Roman',serif;

  --ease:cubic-bezier(.22,.61,.36,1);
  --ease-slow:cubic-bezier(.4,0,.1,1);
  --gutter:26px;
  --maxw:1280px;
  --hdr-h:80px;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth}
html,body{overflow-x:hidden}
body{
  margin:0;
  background:var(--plaster);
  color:var(--ink);
  font-family:var(--ff);
  font-size:17px;
  line-height:1.66;
  letter-spacing:-.003em;
  font-feature-settings:"tnum" 0;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
a{color:inherit;text-decoration:none}
button{font-family:inherit}
img,svg{display:block;max-width:100%}
h1,h2,h3,h4{margin:0;font-weight:400;line-height:1.02;overflow-wrap:normal;word-break:normal;hyphens:none;font-family:var(--display)}
p{margin:0}
::selection{background:var(--sage);color:var(--plaster)}

/* tabular figures for ALL prices / numerics */
.tnum{font-feature-settings:"tnum" 1;font-variant-numeric:tabular-nums;letter-spacing:.01em}

a:focus-visible,button:focus-visible,summary:focus-visible,
input:focus-visible,textarea:focus-visible,select:focus-visible,
[tabindex]:focus-visible{
  outline:2px solid var(--sage);
  outline-offset:3px;
}

/* ---------- Layout shell ---------- */
.shell{width:min(var(--maxw),calc(100% - (var(--gutter)*2)));margin-inline:auto}

/* The label voice — small caps tracking, the monograph caption */
.cap{
  font-family:var(--ff);
  font-weight:500;
  text-transform:uppercase;
  letter-spacing:.26em;
  font-size:11px;
  line-height:1.5;
  color:var(--muted);
}
.cap-brass{color:var(--brass);}
.cap-plaster{color:var(--plaster-on-forest);}
.num-tag{
  font-family:var(--ff);font-weight:500;font-size:11px;letter-spacing:.22em;
  font-variant-numeric:tabular-nums;color:var(--muted-2);
}

/* ===========================================================
   HEADER — condensing sticky, hairline-bottomed
   =========================================================== */
.site-header{
  position:sticky;top:0;z-index:60;
  background:rgba(239,237,230,.82);
  -webkit-backdrop-filter:saturate(140%) blur(10px);
  backdrop-filter:saturate(140%) blur(10px);
  border-bottom:1px solid var(--line);
  transition:background .4s var(--ease), border-color .4s var(--ease);
}
.site-header.condensed{background:rgba(239,237,230,.94);}
.nav{
  height:var(--hdr-h);
  display:flex;align-items:center;justify-content:space-between;
  gap:18px;transition:height .4s var(--ease);
}
.site-header.condensed .nav{height:64px;}
.brand{display:flex;align-items:baseline;gap:11px;min-width:0;}
.brand-mark{
  font-family:var(--display);font-size:22px;line-height:1;color:var(--ink);
  white-space:nowrap;letter-spacing:.01em;
}
.brand-sub{
  font-family:var(--ff);font-weight:500;text-transform:uppercase;
  letter-spacing:.22em;font-size:9.5px;color:var(--muted-2);white-space:nowrap;
}
.nav-links{display:flex;align-items:center;gap:30px;list-style:none;margin:0;padding:0;}
.nav-links a{
  font-size:13px;font-weight:500;letter-spacing:.02em;color:var(--ink);
  position:relative;padding:6px 0;
}
.nav-links a::after{
  content:"";position:absolute;left:0;right:100%;bottom:0;height:1px;
  background:var(--brass);transition:right .42s var(--ease);
}
.nav-links a:hover::after,.nav-links a[aria-current="page"]::after{right:0;}
.nav-links a[aria-current="page"]{color:var(--sage);}
.nav-cta{
  font-size:12.5px;font-weight:600;letter-spacing:.04em;
  padding:11px 20px;border:1px solid var(--forest);color:var(--forest);
  border-radius:1px;transition:background .3s var(--ease),color .3s var(--ease);
  white-space:nowrap;
}
.nav-cta:hover{background:var(--forest);color:var(--plaster);}

.hamburger{
  display:none;width:44px;height:44px;border:1px solid var(--line);background:transparent;
  border-radius:1px;cursor:pointer;align-items:center;justify-content:center;flex-direction:column;gap:5px;
}
.hamburger span{display:block;width:20px;height:1.4px;background:var(--ink);transition:transform .3s var(--ease),opacity .3s var(--ease);}
.hamburger[aria-expanded="true"] span:nth-child(1){transform:translateY(6.4px) rotate(45deg);}
.hamburger[aria-expanded="true"] span:nth-child(2){opacity:0;}
.hamburger[aria-expanded="true"] span:nth-child(3){transform:translateY(-6.4px) rotate(-45deg);}

.mobile-menu{
  display:none;position:fixed;inset:var(--hdr-h) 0 0 0;z-index:55;
  background:var(--forest);padding:40px var(--gutter) 60px;
  flex-direction:column;gap:4px;
  transform:translateY(-12px);opacity:0;pointer-events:none;
  transition:opacity .34s var(--ease),transform .34s var(--ease);
}
.mobile-menu.open{transform:translateY(0);opacity:1;pointer-events:auto;}
.mobile-menu a{
  font-family:var(--display);font-size:clamp(26px,8vw,40px);color:var(--plaster);
  padding:14px 0;border-bottom:1px solid var(--line-forest);display:flex;align-items:baseline;gap:16px;
}
.mobile-menu a .mm-num{font-family:var(--ff);font-size:12px;letter-spacing:.2em;color:var(--brass);font-variant-numeric:tabular-nums;}
.mobile-menu .mm-foot{margin-top:auto;padding-top:30px;color:var(--plaster-on-forest);font-size:13px;line-height:1.7;}
.mobile-menu .mm-foot a{font-family:var(--ff);font-size:14px;border:none;padding:2px 0;display:inline;color:var(--brass);}

/* ===========================================================
   THE SPINE — a vertical hairline that walks down the page
   =========================================================== */
.spine{position:relative;}
.spine::before{
  content:"";position:absolute;top:0;bottom:0;width:1px;
  background:var(--line);left:var(--spine,50%);
  pointer-events:none;
}
.spine.on-forest::before{background:var(--line-forest);}
/* a brass cross-tick where the spine enters each section — makes the
   walking-spine second-read LAND: the eye registers "the line moved." */
.spine::after{
  content:"";position:absolute;top:0;left:var(--spine,50%);
  width:13px;height:13px;
  transform:translate(-50%,-50%) rotate(45deg);
  border:1px solid var(--brass);background:transparent;
  pointer-events:none;z-index:1;
}
.spine.on-forest::after{border-color:var(--brass);opacity:.9;}

/* ===========================================================
   HERO — split-screen diptych, vertical hairline divider
   =========================================================== */
.hero{position:relative;background:var(--plaster);}
.hero-diptych{
  display:grid;grid-template-columns:1fr 1fr;
  min-height:min(86vh,760px);
  position:relative;
}
/* the load-bearing vertical rule */
.hero-diptych::after{
  content:"";position:absolute;top:0;bottom:0;left:50%;width:1px;
  background:linear-gradient(var(--brass),var(--brass));
  transform:translateX(-.5px);z-index:3;
}
.hero-left{
  background:var(--forest);color:var(--plaster);
  display:flex;flex-direction:column;justify-content:space-between;
  padding:clamp(28px,5vw,64px);
  /* the statement abuts the divider — keep the right edge tight to the rule */
  padding-right:clamp(14px,2.2vw,30px);
  position:relative;overflow:hidden;
}
/* faint engraved contour in the forest field (second-read) */
.hero-left .field-grain{
  position:absolute;inset:0;opacity:.5;pointer-events:none;mix-blend-mode:screen;
}
.hero-eyebrow{display:flex;align-items:center;gap:14px;position:relative;z-index:2;}
.hero-eyebrow .rule{height:1px;width:46px;background:var(--brass);}
.hero-statement{
  font-family:var(--display);
  font-size:clamp(40px,7.4vw,94px);
  line-height:1.0;
  letter-spacing:-.018em;
  color:var(--plaster);
  position:relative;z-index:2;
  max-width:13ch;
  hyphens:none;overflow-wrap:normal;word-break:keep-all;
  /* type edge kisses the brass rule — ragged edge to the LEFT, flush to the divider */
  text-align:right;
  margin-left:auto;
  align-self:flex-end;
  padding-bottom:6px;
}
.hero-statement em{font-style:italic;color:var(--brass);}
.hero-foot{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;position:relative;z-index:2;flex-wrap:wrap;}
.hero-foot .est{font-family:var(--display);font-size:15px;color:var(--plaster-on-forest);}
.hero-foot .est b{color:var(--brass);font-weight:400;font-variant-numeric:tabular-nums;}

.hero-right{
  background:var(--plaster);
  position:relative;overflow:hidden;
  display:flex;align-items:stretch;justify-content:stretch;
}
.hero-plan{position:absolute;inset:0;width:100%;height:100%;}
.hero-plan .draw{
  fill:none;stroke:var(--brass);stroke-width:1.1;
  stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:var(--len,2000);
  stroke-dashoffset:var(--len,2000);
}
.hero-plan.drawn .draw{
  animation:planDraw 3.4s var(--ease-slow) forwards;
}
.hero-plan .draw.d2{animation-delay:.5s;}
.hero-plan .draw.d3{animation-delay:1s;}
.hero-plan .draw.d4{animation-delay:1.5s;}
.hero-plan .draw.d5{animation-delay:2s;}
.hero-plan .thin{stroke-width:.7;opacity:.55;}
.hero-plan .dot{fill:var(--brass);opacity:0;}
.hero-plan.drawn .dot{animation:dotIn .6s var(--ease) forwards 2.6s;}
@keyframes planDraw{to{stroke-dashoffset:0;}}
@keyframes dotIn{to{opacity:1;}}

.hero-right .plan-caption{
  position:absolute;left:clamp(20px,3vw,40px);bottom:clamp(20px,3vw,40px);
  z-index:2;max-width:min(60%,260px);
}

/* ===========================================================
   SECTION SCAFFOLD
   =========================================================== */
.section{padding:clamp(60px,9vw,120px) 0;position:relative;}
.section.forest{background:var(--forest);color:var(--plaster);}
.section.forest .cap{color:var(--plaster-on-forest);}
.section-head{display:grid;grid-template-columns:1fr;gap:18px;margin-bottom:clamp(40px,6vw,72px);}
.section-head>*{min-width:0;}
.sec-title{
  font-size:clamp(28px,4.6vw,52px);line-height:1.04;letter-spacing:-.01em;max-width:18ch;
}
.section.forest .sec-title{color:var(--plaster);}
.sec-title em{font-style:italic;color:var(--sage);}
.section.forest .sec-title em{color:var(--brass);}
.sec-lede{font-size:clamp(16px,1.7vw,19px);color:var(--muted);max-width:54ch;}
.section.forest .sec-lede{color:var(--plaster-on-forest);}

/* a reusable hairline divider w/ caption */
.hairline{height:1px;background:var(--line);border:0;margin:0;}
.section.forest .hairline{background:var(--line-forest);}
.rule-row{display:flex;align-items:center;gap:16px;}
.rule-row .line{height:1px;background:var(--line);flex:1;}
.section.forest .rule-row .line{background:var(--line-forest);}

/* ===========================================================
   ETHOS / STAT STRIP
   =========================================================== */
.ethos{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(30px,6vw,90px);align-items:start;}
.ethos>*{min-width:0;}
.ethos-body p{margin-bottom:18px;color:var(--muted);font-size:clamp(16px,1.7vw,18px);}
.ethos-body p:first-of-type{font-family:var(--display);font-size:clamp(20px,2.6vw,27px);line-height:1.34;color:var(--ink);}
.stats{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);}
.stats>*{min-width:0;}
.stat{padding:24px 22px 24px 0;border-bottom:1px solid var(--line);}
.stat:nth-child(odd){padding-right:22px;border-right:1px solid var(--line);}
.stat:nth-child(even){padding-left:22px;}
.stat .n{font-family:var(--display);font-size:clamp(30px,4vw,46px);line-height:1;color:var(--sage);font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
.stat .l{display:block;margin-top:10px;color:var(--muted);font-size:13px;line-height:1.5;}

/* ===========================================================
   LISTINGS — featured cards + grid + filters
   =========================================================== */
.feature-rail{display:grid;grid-template-columns:repeat(3,1fr);gap:0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.feature-rail>*{min-width:0;}
.frail-item{padding:30px 26px;border-left:1px solid var(--line);}
.frail-item:first-child{border-left:0;padding-left:0;}
.frail-item .frail-price{font-family:var(--display);font-size:clamp(24px,3vw,34px);color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;}
.frail-item .frail-addr{margin-top:8px;font-size:14px;color:var(--muted);line-height:1.5;}
.frail-item .frail-meta{margin-top:14px;font-size:12px;letter-spacing:.04em;color:var(--sage);font-variant-numeric:tabular-nums;overflow-wrap:break-word;}

/* Filter bar */
.filters{
  display:flex;flex-wrap:wrap;gap:10px 28px;align-items:flex-end;
  padding:22px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);
  margin-bottom:38px;
}
.filter-group{display:flex;flex-direction:column;gap:8px;min-width:0;}
.filter-group>.cap{margin-bottom:2px;}
.chips{display:flex;flex-wrap:wrap;gap:7px;}
.chip{
  font-family:var(--ff);font-size:12.5px;font-weight:500;letter-spacing:.02em;
  padding:8px 15px;border:1px solid var(--line);background:transparent;color:var(--muted);
  border-radius:1px;cursor:pointer;transition:border-color .25s var(--ease),color .25s var(--ease),background .25s var(--ease);
  font-variant-numeric:tabular-nums;white-space:nowrap;
}
.chip:hover{border-color:var(--sage);color:var(--ink);}
.chip[aria-pressed="true"]{background:var(--forest);border-color:var(--forest);color:var(--plaster);}
.filter-count{margin-left:auto;align-self:flex-end;}
.filter-count .num{font-family:var(--display);font-size:26px;color:var(--sage);font-variant-numeric:tabular-nums;}
.filter-count .lbl{font-size:11px;letter-spacing:.2em;text-transform:uppercase;color:var(--muted-2);margin-left:6px;}

/* Listings grid */
.listings{display:grid;grid-template-columns:repeat(2,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.listings>*{min-width:0;}
.lcard{
  background:var(--plaster);padding:0;cursor:pointer;text-align:left;border:0;
  display:flex;flex-direction:column;width:100%;
  transition:background .3s var(--ease);position:relative;
}
.lcard:hover{background:var(--plaster-2);}
.lcard:hover .lcard-plan .lp{stroke-dashoffset:0;}
.lcard-figure{
  position:relative;aspect-ratio:16/10;background:var(--forest);overflow:hidden;
}
.lcard-plan{position:absolute;inset:0;width:100%;height:100%;}
.lcard-plan .lp{
  fill:none;stroke:var(--brass);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;
  stroke-dasharray:var(--lp,900);stroke-dashoffset:var(--lp,900);
  transition:stroke-dashoffset 1.6s var(--ease-slow);
}
.lcard-plan .lp.thin{stroke-width:.6;opacity:.5;}
.lcard-status{
  position:absolute;top:14px;left:14px;z-index:2;
  font-family:var(--ff);font-size:9.5px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;
  color:var(--forest);background:var(--brass);padding:5px 9px;border-radius:1px;
}
.lcard-status.sold{background:var(--sage);color:var(--plaster);}
.lcard-status.pending{background:var(--plaster);color:var(--forest);}
.lcard-body{padding:22px 22px 24px;display:flex;flex-direction:column;gap:0;}
.lcard-top{display:flex;align-items:baseline;justify-content:space-between;gap:14px;}
.lcard-price{font-family:var(--display);font-size:clamp(22px,2.6vw,30px);color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1;}
.lcard-type{font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;color:var(--sage);white-space:nowrap;}
.lcard-addr{margin-top:12px;font-family:var(--display);font-size:18px;line-height:1.28;color:var(--ink);}
.lcard-hood{margin-top:4px;font-size:13px;color:var(--muted);}
.lcard-specs{
  margin-top:18px;padding-top:16px;border-top:1px solid var(--line);
  display:flex;gap:0;font-variant-numeric:tabular-nums;
}
.lcard-specs .sp{flex:1;min-width:0;}
.lcard-specs .sp+.sp{border-left:1px solid var(--line);padding-left:14px;}
.lcard-specs .sp .v{font-size:15px;color:var(--ink);font-weight:500;}
.lcard-specs .sp .k{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);margin-top:3px;}
.lcard-view{
  margin-top:18px;font-size:12px;font-weight:600;letter-spacing:.06em;color:var(--sage);
  display:inline-flex;align-items:center;gap:8px;
}
.lcard-view .arr{width:20px;height:1px;background:var(--sage);display:inline-block;transition:width .3s var(--ease);}
.lcard:hover .lcard-view .arr{width:32px;}
.dir-empty{grid-column:1/-1;background:var(--plaster);padding:60px 30px;text-align:center;color:var(--muted);}
.dir-empty .cap{margin-bottom:10px;}

/* ===========================================================
   LISTING MODAL
   =========================================================== */
.modal-overlay{
  position:fixed;inset:0;z-index:80;display:none;
  background:rgba(20,32,28,.62);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);
  padding:clamp(16px,4vw,48px);align-items:center;justify-content:center;
}
.modal-overlay.open{display:flex;}
.modal{
  background:var(--plaster);max-width:760px;width:100%;max-height:90vh;overflow:auto;
  border:1px solid var(--line);position:relative;
  display:grid;grid-template-columns:1fr;
}
.modal-figure{position:relative;aspect-ratio:16/8;background:var(--forest);overflow:hidden;}
.modal-figure svg{position:absolute;inset:0;width:100%;height:100%;}
.modal-figure .lp{fill:none;stroke:var(--brass);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;}
.modal-figure .lp.thin{stroke-width:.6;opacity:.5;}
.modal-close{
  position:absolute;top:14px;right:14px;z-index:3;width:42px;height:42px;border-radius:1px;
  border:1px solid var(--line-forest);background:rgba(20,32,28,.4);color:var(--plaster);cursor:pointer;
  font-size:20px;line-height:1;display:flex;align-items:center;justify-content:center;
}
.modal-close:hover{background:var(--forest);}
.modal-body{padding:clamp(24px,4vw,40px);}
.modal-ey{display:flex;align-items:center;gap:14px;margin-bottom:18px;}
.modal-ey .ref{font-variant-numeric:tabular-nums;}
.modal-price{font-family:var(--display);font-size:clamp(30px,5vw,46px);color:var(--ink);font-variant-numeric:tabular-nums;letter-spacing:-.01em;line-height:1;}
.modal-addr{font-family:var(--display);font-size:clamp(20px,3vw,26px);margin-top:14px;color:var(--ink);line-height:1.2;}
.modal-hood{margin-top:6px;color:var(--muted);font-size:14px;}
.modal-desc{margin-top:22px;color:var(--muted);font-size:16px;line-height:1.7;max-width:54ch;}
.modal-specs{display:grid;grid-template-columns:repeat(4,1fr);margin-top:28px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);}
.modal-specs>*{min-width:0;}
.modal-specs .ms{padding:18px 16px 18px 0;border-bottom:0;font-variant-numeric:tabular-nums;}
.modal-specs .ms+.ms{border-left:1px solid var(--line);padding-left:16px;}
.modal-specs .ms .v{font-family:var(--display);font-size:22px;color:var(--ink);}
.modal-specs .ms .k{display:block;font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);margin-top:4px;}
.modal-cta{margin-top:28px;display:flex;flex-wrap:wrap;gap:12px;}

/* ===========================================================
   MORTGAGE ESTIMATOR
   =========================================================== */
.estimator{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(30px,6vw,80px);align-items:center;}
.estimator>*{min-width:0;}
.est-controls{display:flex;flex-direction:column;gap:26px;}
.est-field label{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:12px;}
.est-field .lab{font-size:12px;letter-spacing:.2em;text-transform:uppercase;color:var(--plaster-on-forest);}
.est-field .val{font-family:var(--display);font-size:22px;color:var(--brass);font-variant-numeric:tabular-nums;}
input[type="range"]{
  -webkit-appearance:none;appearance:none;width:100%;height:1px;background:var(--line-forest);
  outline-offset:8px;cursor:pointer;
}
input[type="range"]::-webkit-slider-thumb{
  -webkit-appearance:none;appearance:none;width:16px;height:16px;border-radius:50%;
  background:var(--brass);border:none;cursor:pointer;margin-top:0;
  box-shadow:0 0 0 5px rgba(183,169,140,.16);transition:box-shadow .25s var(--ease);
}
input[type="range"]::-webkit-slider-thumb:hover{box-shadow:0 0 0 8px rgba(183,169,140,.22);}
input[type="range"]::-moz-range-thumb{width:16px;height:16px;border-radius:50%;background:var(--brass);border:none;cursor:pointer;box-shadow:0 0 0 5px rgba(183,169,140,.16);}
input[type="range"]::-moz-range-track{height:1px;background:var(--line-forest);}
.est-scale{display:flex;justify-content:space-between;margin-top:9px;font-size:10.5px;letter-spacing:.08em;color:var(--plaster-on-forest-strong);font-variant-numeric:tabular-nums;}
.est-readout{
  border:1px solid var(--line-forest);padding:clamp(26px,4vw,44px);text-align:center;
  background:var(--forest-2);position:relative;
}
.est-readout .cap{margin-bottom:14px;}
.est-monthly{font-family:var(--display);font-size:clamp(44px,8vw,78px);line-height:1;color:var(--plaster);font-variant-numeric:tabular-nums;letter-spacing:-.02em;}
.est-monthly .cur{color:var(--brass);font-size:.5em;vertical-align:.45em;}
.est-sub{margin-top:14px;color:var(--plaster-on-forest);font-size:13px;}
.est-break{margin-top:26px;display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line-forest);border:1px solid var(--line-forest);}
.est-break>*{min-width:0;}
.est-break .eb{background:var(--forest-2);padding:14px 16px;font-variant-numeric:tabular-nums;}
.est-break .eb .v{font-size:17px;color:var(--brass);}
.est-break .eb .k{display:block;font-size:10px;letter-spacing:.16em;text-transform:uppercase;color:var(--plaster-on-forest);margin-top:5px;}
.est-disclaimer{margin-top:18px;font-size:11.5px;color:var(--plaster-on-forest-strong);line-height:1.6;max-width:46ch;}

/* ===========================================================
   SERVICES — index list
   =========================================================== */
.svc-list{border-top:1px solid var(--line);}
.svc-row{
  display:grid;grid-template-columns:auto 1fr auto;gap:clamp(16px,4vw,52px);
  align-items:baseline;padding:clamp(26px,4vw,40px) 0;border-bottom:1px solid var(--line);
  transition:padding-left .4s var(--ease);
}
.svc-row>*{min-width:0;}
.svc-row:hover{padding-left:14px;}
.svc-num{font-variant-numeric:tabular-nums;}
.svc-main .svc-name{font-family:var(--display);font-size:clamp(24px,3.4vw,38px);line-height:1.1;color:var(--ink);}
.svc-main .svc-desc{margin-top:14px;color:var(--muted);font-size:16px;line-height:1.7;max-width:56ch;}
.svc-main .svc-incl{margin-top:18px;display:flex;flex-wrap:wrap;gap:8px;}
.svc-incl .tag{font-size:11px;letter-spacing:.06em;color:var(--sage);border:1px solid var(--line);padding:5px 11px;border-radius:1px;}
.svc-price{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}
.svc-price .p{font-family:var(--display);font-size:clamp(20px,2.4vw,28px);color:var(--ink);}
.svc-price .u{display:block;font-size:11px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted-2);margin-top:6px;}

/* process steps */
.steps{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--line);}
.steps>*{min-width:0;}
.step{padding:28px 22px 30px 0;border-bottom:1px solid var(--line);}
.step+.step{border-left:1px solid var(--line);padding-left:22px;}
.step .step-n{font-family:var(--display);font-size:30px;color:var(--brass);font-variant-numeric:tabular-nums;}
.step .step-t{font-family:var(--display);font-size:19px;margin-top:14px;color:var(--ink);}
.step .step-d{margin-top:10px;font-size:14px;color:var(--muted);line-height:1.6;}

/* ===========================================================
   AGENTS / TEAM
   =========================================================== */
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);}
.team>*{min-width:0;}
.agent{background:var(--plaster);padding:0;}
.agent-figure{aspect-ratio:4/5;background:var(--forest);position:relative;overflow:hidden;}
.agent-figure svg{position:absolute;inset:0;width:100%;height:100%;}
.agent-figure .pp{fill:none;stroke:var(--brass);stroke-width:1;stroke-linecap:round;stroke-linejoin:round;}
.agent-figure .pp.thin{stroke-width:.6;opacity:.5;}
.agent-figure .initials{font-family:var(--display);fill:var(--plaster-on-forest);font-size:46px;}
.agent-body{padding:24px 24px 28px;}
.agent-name{font-family:var(--display);font-size:24px;color:var(--ink);line-height:1.1;}
.agent-role{margin-top:6px;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--sage);}
.agent-bio{margin-top:16px;font-size:14.5px;color:var(--muted);line-height:1.66;}
.agent-meta{margin-top:18px;padding-top:16px;border-top:1px solid var(--line);display:flex;flex-direction:column;gap:7px;font-size:13px;color:var(--muted);}
.agent-meta .am{display:flex;gap:10px;}
.agent-meta .am .k{color:var(--muted-2);min-width:74px;font-size:11px;letter-spacing:.1em;text-transform:uppercase;}

/* ===========================================================
   TESTIMONIAL CAROUSEL
   =========================================================== */
.carousel{position:relative;}
.carousel-track{position:relative;}
.quote{
  position:absolute;inset:0;opacity:0;pointer-events:none;
  transition:opacity .7s var(--ease);
  display:flex;flex-direction:column;gap:24px;
}
.quote.active{position:relative;opacity:1;pointer-events:auto;}
.quote blockquote{
  font-family:var(--display);font-size:clamp(22px,3.4vw,38px);line-height:1.34;
  color:var(--plaster);margin:0;max-width:24ch;letter-spacing:-.005em;
}
.section:not(.forest) .quote blockquote{color:var(--ink);}
.quote .qmark{font-family:var(--display);font-size:64px;line-height:.4;color:var(--brass);height:34px;}
.quote-by{display:flex;align-items:center;gap:14px;}
.quote-by .nm{font-size:14px;font-weight:600;letter-spacing:.04em;color:var(--brass);}
.quote-by .ln{height:1px;width:34px;background:var(--brass);}
.quote-by .meta{font-size:13px;color:var(--plaster-on-forest);}
.section:not(.forest) .quote-by .meta{color:var(--muted);}
.carousel-nav{display:flex;align-items:center;gap:18px;margin-top:40px;}
.carousel-dots{display:flex;gap:9px;}
.cdot{width:9px;height:9px;border-radius:50%;border:1px solid var(--brass);background:transparent;cursor:pointer;padding:0;transition:background .3s var(--ease);}
.cdot[aria-selected="true"]{background:var(--brass);}
.carousel-btns{display:flex;gap:8px;margin-left:auto;}
.cbtn{
  width:46px;height:46px;border:1px solid var(--line-forest);background:transparent;color:var(--plaster);
  border-radius:1px;cursor:pointer;display:flex;align-items:center;justify-content:center;
  transition:border-color .25s var(--ease),background .25s var(--ease);
}
.section:not(.forest) .cbtn{border-color:var(--line);color:var(--ink);}
.cbtn:hover{border-color:var(--brass);background:var(--brass-soft);}

/* ===========================================================
   FAQ
   =========================================================== */
.faq{border-top:1px solid var(--line);}
.section.forest .faq{border-top:1px solid var(--line-forest);}
.faq details{border-bottom:1px solid var(--line);}
.section.forest .faq details{border-bottom:1px solid var(--line-forest);}
.faq summary{
  list-style:none;cursor:pointer;padding:24px 0;display:flex;align-items:baseline;gap:18px;
  font-family:var(--display);font-size:clamp(18px,2.4vw,24px);color:var(--ink);
}
.section.forest .faq summary{color:var(--plaster);}
.faq summary::-webkit-details-marker{display:none;}
.faq summary .qn{font-family:var(--ff);font-size:12px;letter-spacing:.16em;color:var(--brass);font-variant-numeric:tabular-nums;flex-shrink:0;padding-top:4px;}
.faq summary .qx{margin-left:auto;font-family:var(--ff);font-size:24px;color:var(--sage);transition:transform .3s var(--ease);flex-shrink:0;line-height:1;}
.faq details[open] summary .qx{transform:rotate(45deg);}
.faq .faq-a{padding:0 0 26px 46px;color:var(--muted);font-size:15.5px;line-height:1.74;max-width:62ch;}
.section.forest .faq .faq-a{color:var(--plaster-on-forest);}

/* ===========================================================
   CONTACT FORM
   =========================================================== */
.contact-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,6vw,80px);align-items:start;}
.contact-grid>*{min-width:0;}
.field{margin-bottom:22px;}
.field label{display:block;font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted);margin-bottom:9px;}
.field input,.field select,.field textarea{
  width:100%;padding:14px 0;background:transparent;border:0;border-bottom:1px solid var(--line);
  color:var(--ink);font-family:var(--ff);font-size:16px;border-radius:0;transition:border-color .25s var(--ease);
}
.field input::placeholder,.field textarea::placeholder{color:var(--muted-2);}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-bottom-color:var(--sage);}
.field textarea{resize:vertical;min-height:108px;}
.field select{cursor:pointer;}
.field .err{display:none;margin-top:8px;font-size:12px;color:#9a4a3a;letter-spacing:.02em;}
.field.invalid input,.field.invalid select,.field.invalid textarea{border-bottom-color:#9a4a3a;}
.field.invalid .err{display:block;}
.field-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.field-row>*{min-width:0;}
.btn{
  display:inline-flex;align-items:center;gap:12px;
  font-family:var(--ff);font-size:13px;font-weight:600;letter-spacing:.06em;
  padding:15px 26px;border-radius:1px;cursor:pointer;border:1px solid var(--forest);
  background:var(--forest);color:var(--plaster);transition:background .3s var(--ease),color .3s var(--ease);
}
.btn:hover{background:var(--sage);border-color:var(--sage);}
.btn.ghost{background:transparent;color:var(--forest);}
.btn.ghost:hover{background:var(--forest);color:var(--plaster);}
.btn.on-forest{border-color:var(--brass);background:var(--brass);color:var(--forest);}
.btn.on-forest:hover{background:var(--plaster);border-color:var(--plaster);}
.btn .arr{width:22px;height:1px;background:currentColor;display:inline-block;}
.form-success{
  display:none;border:1px solid var(--sage);padding:clamp(26px,4vw,40px);background:var(--plaster-2);
}
.form-success.show{display:block;}
.form-success .cap{margin-bottom:14px;}
.form-success h3{font-family:var(--display);font-size:clamp(24px,3vw,32px);color:var(--ink);margin-bottom:14px;}
.form-success p{color:var(--muted);font-size:15px;line-height:1.7;}
.form-success .ref-out{margin-top:18px;font-variant-numeric:tabular-nums;font-size:13px;letter-spacing:.06em;color:var(--sage);}

/* contact details list */
.contact-info{display:flex;flex-direction:column;}
.ci-block{padding:24px 0;border-top:1px solid var(--line);}
.ci-block:first-child{border-top:0;padding-top:0;}
.ci-block .cap{margin-bottom:12px;}
.ci-block .big{font-family:var(--display);font-size:clamp(20px,2.4vw,26px);color:var(--ink);line-height:1.3;}
.ci-block .small{font-size:14px;color:var(--muted);line-height:1.7;margin-top:6px;}
.ci-block a:hover{color:var(--sage);}
.hours-row{display:flex;justify-content:space-between;gap:18px;padding:7px 0;font-size:14px;border-bottom:1px solid var(--line);}
.hours-row:last-child{border-bottom:0;}
.hours-row .d{color:var(--muted);}
.hours-row .h{color:var(--ink);font-variant-numeric:tabular-nums;}

/* map */
.map-wrap{margin-top:0;border:1px solid var(--line);position:relative;background:var(--forest);}
.map-wrap iframe{display:block;width:100%;height:clamp(280px,40vw,420px);border:0;filter:grayscale(1) contrast(.92) brightness(.92) sepia(.12);}
.map-cap{display:flex;align-items:center;gap:14px;padding:16px 18px;border-top:1px solid var(--line);background:var(--plaster);}

/* neighborhoods chips */
.hoods{display:flex;flex-wrap:wrap;gap:8px;margin-top:18px;}
.hoods .h{font-size:12px;letter-spacing:.04em;color:var(--muted);border:1px solid var(--line);padding:7px 13px;border-radius:1px;}

/* ===========================================================
   CTA BANNER
   =========================================================== */
.cta-banner{background:var(--forest);color:var(--plaster);text-align:center;padding:clamp(56px,9vw,110px) 0;position:relative;overflow:hidden;}
.cta-banner .cta-line{position:absolute;inset:0;opacity:.4;pointer-events:none;}
.cta-banner .cap{color:var(--brass);position:relative;z-index:2;}
.cta-banner h2{font-family:var(--display);font-size:clamp(30px,5.4vw,62px);line-height:1.05;margin:20px auto 28px;max-width:16ch;color:var(--plaster);position:relative;z-index:2;}
.cta-banner h2 em{font-style:italic;color:var(--brass);}
.cta-banner .cta-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;position:relative;z-index:2;}

/* ===========================================================
   FOOTER
   =========================================================== */
.site-footer{background:var(--forest);color:var(--plaster);border-top:1px solid var(--line-forest);padding:clamp(54px,7vw,84px) 0 36px;}
.footer-top{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:clamp(28px,5vw,64px);padding-bottom:48px;border-bottom:1px solid var(--line-forest);}
.footer-top>*{min-width:0;}
.f-brand .brand-mark{color:var(--plaster);font-size:26px;}
.f-tag{margin-top:16px;color:var(--plaster-on-forest);font-size:14px;line-height:1.7;max-width:34ch;}
.f-col h4{font-family:var(--ff);font-weight:500;text-transform:uppercase;letter-spacing:.2em;font-size:11px;color:var(--brass);margin-bottom:18px;}
.f-col ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:11px;}
.f-col a,.f-col span{font-size:14px;color:var(--plaster-on-forest);transition:color .25s var(--ease);}
.f-col a:hover{color:var(--brass);}
.footer-bottom{display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap;padding-top:30px;}
.footer-bottom .copy{font-size:12.5px;color:var(--plaster-on-forest);font-variant-numeric:tabular-nums;}
.made-with{font-size:12.5px;color:var(--plaster-on-forest);}
.made-with a{color:var(--brass);border-bottom:1px solid transparent;transition:border-color .25s var(--ease);}
.made-with a:hover{border-bottom-color:var(--brass);}

/* ===========================================================
   REVEAL
   =========================================================== */
.reveal{opacity:0;transform:translateY(20px);transition:opacity .8s var(--ease),transform .8s var(--ease);}
.reveal.in{opacity:1;transform:none;}
.reveal.d1{transition-delay:.08s;}
.reveal.d2{transition-delay:.16s;}
.reveal.d3{transition-delay:.24s;}

/* ===========================================================
   RESPONSIVE
   =========================================================== */
@media (max-width:1000px){
  .ethos,.estimator,.contact-grid{grid-template-columns:1fr;}
  .team,.feature-rail,.steps,.modal-specs{grid-template-columns:repeat(2,1fr);}
  .modal-specs .ms:nth-child(3){border-left:0;padding-left:0;}
  .step:nth-child(3){border-left:0;padding-left:0;}
  .estimator .est-readout{order:-1;}
}
@media (max-width:880px){
  .nav-links,.nav-cta{display:none;}
  .hamburger{display:flex;}
  .mobile-menu{display:flex;}
  .hero-diptych{grid-template-columns:1fr;min-height:0;position:relative;}
  /* keep the load-bearing brass spine on mobile: a vertical hairline down the
     left edge of the stacked diptych, so the signature survives ≤880px */
  .hero-diptych::after{
    left:0;right:auto;width:1px;
    background:linear-gradient(var(--brass),var(--brass));
    transform:none;opacity:.9;
  }
  .hero-left{
    min-height:60vh;border-bottom:1px solid var(--brass);
    padding-left:clamp(34px,8vw,56px);padding-right:clamp(28px,7vw,52px);
  }
  .hero-right{min-height:46vh;}
  /* statement stays flush-right to mirror the desktop divider tension */
  .hero-statement{max-width:14ch;margin-left:auto;text-align:right;align-self:flex-end;}
  .svc-row{grid-template-columns:auto 1fr;}
  .svc-price{grid-column:2;text-align:left;margin-top:6px;}
}
@media (max-width:640px){
  .listings,.team{grid-template-columns:1fr;}
  .feature-rail,.steps{grid-template-columns:1fr;}
  .frail-item{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-right:0;}
  .frail-item:first-child{border-top:0;}
  .step+.step{border-left:0;padding-left:0;}
  .stats{grid-template-columns:1fr;}
  .stat:nth-child(odd){border-right:0;padding-right:0;}
  .stat:nth-child(even){padding-left:0;}
  .est-break{grid-template-columns:1fr;}
  .modal-specs{grid-template-columns:1fr 1fr;}
  .field-row{grid-template-columns:1fr;}
  .footer-top{grid-template-columns:1fr;}
  .modal-specs .ms{padding-right:8px;}
}
@media (prefers-reduced-motion: reduce){
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important;}
  .hero-plan .draw{stroke-dashoffset:0!important;}
  .hero-plan .dot{opacity:1!important;}
  .lcard-plan .lp{stroke-dashoffset:0!important;}
  .reveal{opacity:1!important;transform:none!important;}
}
