/* ==========================================================================
   Southern Asset Solutions, LLC — design system
   Palette: "Heritage & Warm" — ivory ground, deep forest, brass detail.
   Type:    Cormorant Garamond (display) + Karla (UI/body)
   ========================================================================== */

/* ---------- tokens ---------- */
:root{
  --ink:        #1C1A16;
  --ink-soft:   #3A352C;
  --muted:      #6E6658;
  --muted-2:    #928A79;

  --forest:     #1E3B31;
  --forest-d:   #122720;
  --forest-l:   #33564A;
  --forest-t:   rgba(30,59,49,.08);

  --brass:      #A98436;
  --brass-l:    #C8A34A;
  --brass-ink:  #7A5F26;   /* text-safe brass — 5.58:1 on ivory, 6.01:1 on paper */
  --brass-t:    rgba(169,132,54,.12);

  --clay:       #8C4A3F;
  --sage:       #6B7C63;

  --ivory:      #FAF6EF;
  --paper:      #FFFFFF;
  --linen:      #F2EBE0;
  --linen-2:    #EBE2D4;
  --rule:       #E0D6C4;
  --rule-soft:  #EDE5D8;

  --ok:         #2E6A4F;
  --warn:       #9A6B1E;
  --err:        #9B3A2E;

  --shadow-sm:  0 1px 2px rgba(28,26,22,.05), 0 2px 8px rgba(28,26,22,.05);
  --shadow-md:  0 2px 6px rgba(28,26,22,.06), 0 12px 30px rgba(28,26,22,.09);
  --shadow-lg:  0 8px 20px rgba(28,26,22,.10), 0 30px 60px rgba(28,26,22,.14);

  --r-sm: 3px;  --r-md: 5px;  --r-lg: 8px;
  --wrap: 1240px;
  --hdr: 118px;

  --ff-display: "Cormorant Garamond", "Hoefler Text", Georgia, "Times New Roman", serif;
  --ff-body:    "Karla", "Helvetica Neue", Helvetica, Arial, sans-serif;

  --ease: cubic-bezier(.22,.61,.36,1);
}

/* ---------- reset ---------- */
*,*::before,*::after{ box-sizing:border-box }
html{ -webkit-text-size-adjust:100%; scroll-behavior:smooth }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto }
  *,*::before,*::after{ animation-duration:.01ms !important; transition-duration:.01ms !important }
}
body{
  margin:0; background:var(--ivory); color:var(--ink);
  font-family:var(--ff-body); font-size:16.5px; line-height:1.65;
  font-feature-settings:"kern" 1; -webkit-font-smoothing:antialiased;
}
img,svg{ max-width:100%; display:block }
a{ color:var(--forest); text-decoration-thickness:1px; text-underline-offset:3px }
@media (hover:hover){ a:hover{ color:var(--brass-ink) } }
button,input,select,textarea{ font:inherit; color:inherit }
h1,h2,h3,h4{ margin:0 0 .5em; font-family:var(--ff-display); font-weight:500; line-height:1.12; letter-spacing:-.005em }
h1{ font-size:clamp(2.4rem,5vw,3.9rem) }
h2{ font-size:clamp(1.9rem,3.4vw,2.9rem) }
h3{ font-size:clamp(1.35rem,2vw,1.7rem) }
h4{ font-size:1.16rem }
p{ margin:0 0 1.05em }
hr{ border:0; border-top:1px solid var(--rule); margin:2.5rem 0 }
:focus-visible{ outline:3px solid var(--brass); outline-offset:2px; border-radius:2px }
::selection{ background:var(--brass-t); color:var(--forest-d) }
.sr-only{ position:absolute!important; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0 }
.skip{ position:absolute; left:-9999px; top:0; z-index:200; background:var(--forest); color:#fff; padding:.8rem 1.2rem }
.skip:focus{ left:0 }

/* ---------- layout ---------- */
.wrap{ width:100%; max-width:var(--wrap); margin-inline:auto; padding-inline:26px }
.wrap-narrow{ max-width:840px }
.section{ padding:clamp(56px,7vw,96px) 0 }
.section--tight{ padding:clamp(38px,4.5vw,58px) 0 }
.section--linen{ background:var(--linen) }
.section--forest{ background:var(--forest); color:#F3EEE3 }
.section--forest h2,.section--forest h3{ color:#fff }
.section--forest a{ color:var(--brass-l) }
.grid{ display:grid; gap:26px }
.stack > * + *{ margin-top:1rem }

/* ---------- type helpers ---------- */
.eyebrow{
  font-family:var(--ff-body); font-size:.7rem; font-weight:700;
  letter-spacing:.22em; text-transform:uppercase; color:var(--brass-ink);
  margin:0 0 .85rem; display:flex; align-items:center; gap:.7rem;
}
.eyebrow::after{ content:""; height:1px; flex:1; background:var(--rule); max-width:70px }
.eyebrow--center{ justify-content:center }
.eyebrow--center::after,.eyebrow--center::before{ content:""; height:1px; width:44px; flex:none; background:var(--rule) }
.section--forest .eyebrow{ color:var(--brass-l) }
.section--forest .eyebrow::after,.section--forest .eyebrow::before{ background:rgba(255,255,255,.22) }
.lede{ font-size:1.15rem; color:var(--ink-soft); max-width:62ch }
.muted{ color:var(--muted) }
.small{ font-size:.86rem }
.mono-num{ font-variant-numeric:tabular-nums }
.display{ font-family:var(--ff-display) }
.rule-brass{ width:52px; height:2px; background:var(--brass); border:0; margin:1.2rem 0 }

/* ---------- buttons ---------- */
.btn{
  --bg:var(--forest); --fg:#fff; --bd:var(--forest); white-space:nowrap;
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  min-height:48px; padding:.72rem 1.5rem; border:1px solid var(--bd); background:var(--bg); color:var(--fg);
  font-family:var(--ff-body); font-size:.79rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  border-radius:var(--r-sm); cursor:pointer; text-decoration:none; text-align:center;
  transition:background .18s var(--ease), color .18s var(--ease), border-color .18s var(--ease), transform .18s var(--ease), box-shadow .18s var(--ease);
}
@media (hover:hover){ .btn:hover{ --bg:var(--forest-d); --bd:var(--forest-d); color:#fff; transform:translateY(-1px); box-shadow:var(--shadow-sm) } }
.btn:active{ transform:translateY(0) }
.btn[disabled],.btn.is-busy{ opacity:.55; pointer-events:none }
.btn--brass{ --bg:var(--brass); --bd:var(--brass); --fg:var(--forest-d) }
@media (hover:hover){ .btn--brass:hover{ --bg:var(--brass-l); --bd:var(--brass-l); color:var(--forest-d) } }
.btn--ghost{ --bg:transparent; --fg:var(--forest); --bd:var(--rule) }
@media (hover:hover){ .btn--ghost:hover{ --bg:var(--forest); --fg:#fff; --bd:var(--forest) } }
.btn--onforest{ --bg:transparent; --fg:#fff; --bd:rgba(255,255,255,.42) }
@media (hover:hover){ .btn--onforest:hover{ --bg:#fff; --fg:var(--forest-d); --bd:#fff } }
.btn--sm{ min-height:44px; padding:.55rem 1.05rem; font-size:.7rem }
.btn--block{ width:100%; white-space:normal; line-height:1.25 }
/* Labels that carry a phone number are built at runtime and can be far wider
   than the screen. Below the desktop breakpoint, wrapping beats overflowing. */
@media (max-width:900px){ .btn{ white-space:normal; line-height:1.25; max-width:100% } }
.btn--danger{ --bg:transparent; --fg:var(--err); --bd:rgba(155,58,46,.35) }
@media (hover:hover){ .btn--danger:hover{ --bg:var(--err); --fg:#fff; --bd:var(--err) } }
.linkish{
  background:none; border:0; color:var(--forest); text-decoration:underline; cursor:pointer; font-size:.9rem;
  display:inline-flex; align-items:center; min-height:44px; padding:.6rem .2rem; margin:-.6rem -.2rem;
}

/* ---------- header ---------- */
.topbar{ position:relative; z-index:1; background:var(--forest-d); color:#D8D2C4; font-size:.76rem; letter-spacing:.06em }
.topbar .wrap{ display:flex; gap:1.4rem; align-items:center; justify-content:space-between; min-height:38px; flex-wrap:wrap }
.topbar a{ color:#EDE6D8; text-decoration:none; display:inline-block; padding:.5rem 0 }
@media (hover:hover){ .topbar a:hover{ color:var(--brass-l) } }
.topbar__meta{ display:flex; gap:1.4rem; align-items:center; flex-wrap:wrap }
.topbar__tag{ text-transform:uppercase; letter-spacing:.2em; font-size:.66rem; color:#A9A192 }

.site-header{ position:sticky; top:0; z-index:60; background:var(--ivory); border-bottom:1px solid var(--rule) }
.site-header__inner{ display:flex; align-items:center; justify-content:space-between; gap:1.6rem; min-height:78px }
.brand > span{ min-width:0 }
.brand{ display:flex; align-items:center; gap:.85rem; text-decoration:none; color:var(--forest-d) }
.brand__mark{ width:46px; height:46px; flex:none }
.brand__name{ display:block; font-family:var(--ff-display); font-size:1.3rem; font-weight:600; line-height:1.08; letter-spacing:.005em; white-space:nowrap }
.brand__sub{ display:block; font-size:.545rem; letter-spacing:.26em; text-transform:uppercase; color:var(--brass-ink); font-weight:700; margin-top:3px; white-space:nowrap }

.nav{ display:flex; align-items:center; gap:1.55rem; flex-wrap:nowrap }
.nav a:not(.btn){
  font-size:.78rem; font-weight:600; letter-spacing:.15em; text-transform:uppercase;
  color:var(--ink-soft); text-decoration:none; padding:.4rem 0; position:relative; white-space:nowrap;
}
.nav a:not(.btn)::after{ content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--brass); transform:scaleX(0); transform-origin:left; transition:transform .22s var(--ease) }
.nav a:not(.btn)[aria-current="page"]{ color:var(--forest-d) }
.nav a[aria-current="page"]::after{ transform:scaleX(1) }
@media (hover:hover){ .nav a:hover{ color:var(--forest-d) } .nav a:hover::after{ transform:scaleX(1) } }
.nav-toggle{ display:none; background:none; border:1px solid var(--rule); border-radius:var(--r-sm); width:46px; height:46px; align-items:center; justify-content:center; cursor:pointer }
.nav-toggle span{ display:block; width:20px; height:1.5px; background:var(--forest-d); position:relative }
.nav-toggle span::before,.nav-toggle span::after{ content:""; position:absolute; left:0; width:20px; height:1.5px; background:var(--forest-d) }
.nav-toggle span::before{ top:-6px } .nav-toggle span::after{ top:6px }
.nav-toggle span,.nav-toggle span::before,.nav-toggle span::after{ transition:transform .25s var(--ease), background .2s var(--ease), top .25s var(--ease) }
.nav-toggle[aria-expanded="true"] span{ background:transparent }
.nav-toggle[aria-expanded="true"] span::before{ top:0; transform:rotate(45deg) }
.nav-toggle[aria-expanded="true"] span::after{ top:0; transform:rotate(-45deg) }

@media (max-width: 1080px){
  .nav-toggle{ display:inline-flex; position:relative; z-index:70 }
  .brand{ position:relative; z-index:70 }
  .nav{
    position:fixed; top:0; left:0; right:0; bottom:0; height:100vh; height:100dvh;
    background:var(--ivory); flex-direction:column; align-items:stretch; gap:0;
    padding:calc(var(--hdr) + 30px) 26px 44px; overflow-y:auto; z-index:55;
    border-bottom:1px solid var(--rule);
    transform:translateY(-100%); visibility:hidden;
    transition:transform .3s var(--ease), visibility 0s linear .3s;
  }
  .nav[data-open="true"]{ transform:translateY(0); visibility:visible; transition-delay:0s }
  .nav a:not(.btn){ padding:1.05rem 0; border-bottom:1px solid var(--rule-soft); font-size:.95rem }
  .nav .btn{ margin-top:1.4rem }
}
@media (max-width:760px){
  :root{ --hdr:106px }
  .site-header__inner{ min-height:62px }
  .topbar a{ padding:.72rem 0 }
}
@media (max-width:600px){ .topbar__meta a[href^="mailto:"]{ display:none } }
@media (max-width:520px){
  .brand{ gap:.55rem }
  .brand__mark{ width:36px; height:36px }
  .brand__name{ font-size:1.02rem }
  .brand__sub{ display:none }
}

/* ---------- hero ---------- */
.hero{ position:relative; background:var(--forest-d); color:#F5F1E7; overflow:hidden; isolation:isolate }
.hero__bg{ position:absolute; inset:0; z-index:-2 }
.hero__bg img{ width:100%; height:100%; object-fit:cover; object-position:55% 46% }
.hero__bg img:not([src]),.approach-note > img:not([src]){ display:none }
.hero::after{
  content:""; position:absolute; inset:0; z-index:-1;
  background:linear-gradient(90deg,rgba(9,25,18,.82),rgba(9,25,18,.44) 53%,rgba(9,25,18,.12)),linear-gradient(0deg,rgba(9,25,18,.45),transparent 55%);
}
.hero__inner{ position:relative; min-height:760px; min-height:min(880px,calc(100svh - 100px)); padding-block:clamp(80px,8.5vw,126px) 28px; max-width:var(--wrap); display:flex; flex-direction:column; justify-content:flex-end }
.hero__copy{ max-width:890px; padding-bottom:clamp(44px,5vw,72px) }
.hero h1{ color:#fff; font-size:clamp(4rem,7.8vw,7.3rem); font-weight:400; line-height:.91; letter-spacing:-.035em; margin-bottom:.3em; max-width:17ch; text-wrap:balance; text-shadow:0 2px 22px rgba(0,0,0,.12) }
.hero h1 em{ font-style:italic; color:#E7D6AD }
.hero p{ color:#F1EDE3; font-size:1.12rem; max-width:43ch }
.hero .hero__eyebrow{ font-size:.7rem; color:#E7D6AD; margin-bottom:1.8rem; letter-spacing:.23em; max-width:none }
.hero .hero__eyebrow::after{ background:rgba(224,204,157,.45) }
.hero .hero__intro{ line-height:1.65; margin-bottom:1rem }
.hero__portfolio{ display:inline-flex; align-items:center; gap:18px; min-height:44px; color:#F5EAD1; font-size:.85rem; text-decoration:none; border-bottom:1px solid rgba(231,214,173,.5) }
.hero__portfolio span{ font-size:1.2rem }
@media (hover:hover){ .hero__portfolio:hover{ color:#fff; border-color:#fff } }
.hero .hero__credit{ max-width:none; font-size:.64rem; color:#E6E2D8; margin:14px 0 0; letter-spacing:.015em }
.hero__search{
  background:var(--ivory); color:var(--ink); border:1px solid rgba(250,246,239,.55); border-radius:var(--r-sm); padding:24px 28px 28px;
  display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr) minmax(210px,.78fr); gap:20px; box-shadow:0 12px 40px rgba(0,0,0,.12); width:100%;
}
.hero__search > div{ min-width:0 }
.hero__search-top{ grid-column:1/-1; display:flex; justify-content:space-between; align-items:center; gap:20px; padding-bottom:18px; border-bottom:1px solid var(--rule) }
.hero__search-top h2{ font-size:clamp(1.7rem,2.8vw,2.15rem); line-height:1.1; margin:0; color:var(--forest-d) }
.hero__intent{ display:flex; flex-shrink:0; border:1px solid var(--rule); border-radius:3px; padding:3px; margin:0; min-width:0; gap:3px }
.hero__search .hero__intent label{ position:relative; margin:0; font-size:.8rem; letter-spacing:.04em; text-transform:none; font-weight:700; cursor:pointer }
.hero__intent input{ position:absolute; width:1px; height:1px; opacity:0; margin:0 }
.hero__intent span{ display:block; padding:9px 25px; min-height:42px; border-radius:2px; color:var(--forest) }
.hero__intent input:checked + span{ background:var(--forest); color:var(--ivory) }
.hero__intent input:focus-visible + span{ outline:3px solid var(--brass); outline-offset:2px }
.hero__search-submit{ display:flex; align-items:flex-end }
.hero__search .btn{ min-height:50px; padding-inline:16px; letter-spacing:.09em }
.hero__search label{ display:block; font-size:.62rem; letter-spacing:.19em; text-transform:uppercase; font-weight:700; color:var(--muted); margin-bottom:5px }
.hero__search select,.hero__search input[type="text"]{ min-height:50px; font-size:1rem; background-color:#FFFDFA }
@media (max-width:820px){
  .hero__inner{ min-height:0; padding-top:76px }
  .hero h1{ font-size:clamp(3.7rem,9.5vw,6rem) }
  .hero__copy{ padding-bottom:42px }
  .hero__search{ grid-template-columns:minmax(0,1fr) minmax(0,1fr); gap:16px; padding:22px }
  .hero__search-submit{ grid-column:1/-1 }
  .hero::after{ background:linear-gradient(90deg,rgba(9,25,18,.82),rgba(9,25,18,.3)),linear-gradient(0deg,rgba(9,25,18,.4),transparent) }
}
@media (max-width:520px){
  .hero__inner{ padding-top:60px; padding-bottom:22px; padding-inline:20px }
  .hero__bg img{ object-position:59% 45% }
  .hero h1{ font-size:clamp(3rem,11.7vw,3.8rem); line-height:.96; letter-spacing:-.035em }
  .hero .hero__eyebrow{ font-size:.59rem; letter-spacing:.16em; gap:.5rem; margin-bottom:1.4rem }
  .hero .hero__intro{ font-size:1rem }
  .hero__portfolio{ font-size:.8rem }
  .hero__copy{ padding-bottom:32px }
  .hero__search{ padding:18px; gap:14px; grid-template-columns:minmax(0,1fr) }
  .hero__search-top{ align-items:flex-start; flex-direction:column; gap:16px; padding-bottom:16px }
  .hero__search-top h2{ font-size:1.85rem; max-width:16ch }
  .hero__intent{ width:100% }
  .hero__intent label{ flex:1; text-align:center }
  .hero__intent span{ padding-inline:12px }
  .hero__search select{ padding-left:.75rem }
  .hero__search label{ font-size:.61rem; letter-spacing:.1em }
  .hero .hero__credit{ font-size:.6rem; line-height:1.6 }
}

/* ---------- stat bar ---------- */
.stats{ background:var(--linen); border-block:1px solid var(--rule) }
.stats__grid{ display:grid; grid-template-columns:repeat(var(--stats-count,4),minmax(0,1fr)) }
.stat{ padding:clamp(26px,3.4vw,42px) 22px; text-align:center; border-left:1px solid var(--rule) }
.stat:first-child{ border-left:0 }
.stat__n{ font-family:var(--ff-display); font-size:clamp(2.1rem,4vw,3rem); font-weight:500; color:var(--forest); line-height:1; font-variant-numeric:tabular-nums }
.stat__n span{ color:var(--brass-ink) }
.stat__l{ font-size:.68rem; letter-spacing:.19em; text-transform:uppercase; color:var(--muted); margin-top:.7rem; font-weight:600 }
@media (max-width:760px){
  .stats__grid{ grid-template-columns:repeat(2,1fr) }
  .stat:nth-child(3){ border-left:0 }
  .stat:nth-child(n+3){ border-top:1px solid var(--rule) }
}

/* ---------- listing card ---------- */
.cards{ display:grid; grid-template-columns:repeat(auto-fill,minmax(330px,1fr)); gap:30px; list-style:none; padding:0; margin:0 }
.cards--2{ grid-template-columns:repeat(auto-fill,minmax(420px,1fr)) }
@media (max-width:560px){ .cards,.cards--2{ grid-template-columns:1fr } }

.card{
  position:relative; background:var(--paper); border:1px solid var(--rule);
  border-radius:var(--r-md); overflow:hidden; display:flex; flex-direction:column;
  transition:transform .22s var(--ease), box-shadow .22s var(--ease), border-color .22s var(--ease);
}
@media (hover:hover){ .card:hover{ transform:translateY(-3px); box-shadow:var(--shadow-md); border-color:var(--brass) } }
.card:focus-within{ box-shadow:var(--shadow-md) }
.card__media{ position:relative; aspect-ratio:4/3; background:var(--linen-2); overflow:hidden }
.card__media img{ width:100%; height:100%; object-fit:cover; transition:transform .5s var(--ease) }
@media (hover:hover){ .card:hover .card__media img{ transform:scale(1.035) } }
.card__badges{ position:absolute; top:12px; left:12px; display:flex; gap:6px; flex-wrap:wrap; max-width:calc(100% - 24px) }
.card__count{
  position:absolute; right:12px; bottom:12px; background:rgba(18,39,32,.8); color:#fff;
  font-size:.7rem; font-weight:600; padding:4px 9px; border-radius:var(--r-sm); letter-spacing:.05em;
  display:flex; align-items:center; gap:5px;
}
.card__body{ padding:20px 22px 22px; display:flex; flex-direction:column; flex:1 }
.card__type{ font-size:.64rem; letter-spacing:.2em; text-transform:uppercase; color:var(--brass-ink); font-weight:700; margin-bottom:.5rem }
.card__title{ font-family:var(--ff-display); font-size:1.4rem; font-weight:600; line-height:1.2; margin:0 0 .3rem }
.card__title a{ color:var(--forest-d); text-decoration:none }
.card__title a::after{ content:""; position:absolute; inset:0; z-index:1 }
@media (hover:hover){ .card:hover .card__title a{ color:var(--forest) } }
.card__addr{ font-size:.88rem; color:var(--muted); margin-bottom:1rem }
.card__price{
  display:flex; align-items:baseline; justify-content:space-between; gap:1rem;
  padding-top:.9rem; margin-top:auto; border-top:1px solid var(--rule-soft);
}
.card__price b{ font-family:var(--ff-display); font-size:1.5rem; font-weight:600; color:var(--forest-d); font-variant-numeric:tabular-nums }
.card__price small{ font-size:.76rem; color:var(--muted); letter-spacing:.06em }
.card__facts{ font-size:.83rem; color:var(--ink-soft); margin-top:.7rem; line-height:1.7; white-space:nowrap; overflow:hidden; text-overflow:ellipsis }
.card__facts span{ white-space:nowrap }
.card__facts span + span::before{ content:"\00b7"; color:var(--muted-2); margin:0 .5rem }

/* A property without supplied photography gets a typographic cover. Badges
   stay in normal flow here, including when they wrap on a narrow screen. */
.card__media--unpictured{
  display:flex; flex-direction:column; min-height:230px; padding:20px 24px 26px;
  background:var(--forest); color:var(--ivory); border-bottom:1px solid var(--forest-d);
}
.card__media--unpictured .card__badges{
  position:static; order:-1; flex-shrink:0; max-width:none; margin-bottom:20px;
}
.card__media--unpictured .badge--land{ background:transparent; border:1px solid rgba(250,246,239,.4); color:var(--ivory) }
.card__land-summary{ display:flex; flex:1; flex-direction:column; justify-content:center; align-items:flex-start; gap:10px; min-width:0 }
.card__land-label{ color:#DAC38C; font-size:.64rem; font-weight:700; line-height:1.4; letter-spacing:.18em; text-transform:uppercase }
.card__acreage{
  display:flex; align-items:baseline; flex-wrap:wrap; gap:.12em .25em; max-width:100%;
  font-family:var(--ff-display); font-size:clamp(2.5rem,4vw,3.5rem); font-weight:500;
  line-height:1; letter-spacing:-.025em; font-variant-numeric:tabular-nums;
}
.card__acreage span{ font-family:var(--ff-body); font-size:.74rem; font-weight:400; letter-spacing:.06em; line-height:1.4 }
.card__county{ color:#E4DDCE; font-size:.88rem; line-height:1.45; max-width:28ch; overflow-wrap:break-word }
.card--sold .card__media--unpictured{
  aspect-ratio:auto; min-height:196px; padding:18px 22px 22px;
  background:var(--linen); color:var(--forest-d); border-bottom-color:var(--rule);
}
.card--sold .card__media--unpictured .card__badges{ margin-bottom:15px }
.card--sold .card__land-summary{ gap:8px }
.card--sold .card__land-label{ color:var(--brass-ink) }
.card--sold .card__acreage{ font-size:2.75rem }
.card--sold .card__county{ color:var(--muted); font-size:.82rem }
@media (max-width:520px){
  .card__media--unpictured{ padding:18px 22px 24px }
  .card__acreage{ font-size:2.9rem }
  .card--sold .card__acreage{ font-size:2.6rem }
}

/* ---------- home page sections ---------- */
.section-heading{ display:flex; justify-content:space-between; align-items:flex-end; gap:24px; margin-bottom:32px }
.section-heading h2{ margin-bottom:.28em; text-wrap:balance }
.section-heading__intro{ margin:0; max-width:48ch }
.section-heading--center{ display:block; text-align:center; margin-bottom:34px }
.section-heading--center .lede{ margin:0 auto }
.text-link{ display:inline-flex; align-items:center; min-height:44px; padding-block:.55rem; font-size:.8rem; font-weight:700; letter-spacing:.07em; text-decoration:none; white-space:nowrap }
.featured-cards--pair{ grid-template-columns:repeat(2,minmax(0,1fr)); gap:32px }
.featured-cards--pair .card__media{ aspect-ratio:16/10 }
.featured-cards--pair .card__body{ padding:25px 28px 27px }
.featured-cards--pair .card__title{ font-size:1.9rem }
.featured-cards .empty{ grid-column:1/-1 }
.portfolio-band{ padding:36px 0; border-block:1px solid var(--rule); background:var(--ivory) }
.portfolio-band__inner{ display:flex; align-items:center; justify-content:space-between; gap:30px }
.portfolio-band .eyebrow{ margin-bottom:.55rem }
.portfolio-band h2{ font-size:clamp(1.8rem,3vw,2.5rem); margin-bottom:.25rem }
.portfolio-band p:last-child{ margin:0; color:var(--muted) }
.approach-copy h2{ max-width:19ch; text-wrap:balance }
.approach-copy .btn{ margin-top:.8rem }
.approach-note{ position:relative; overflow:hidden; min-height:440px; background:var(--forest-d); color:var(--ivory); display:flex; align-items:center; border-radius:var(--r-sm) }
.approach-note > img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover }
.approach-note__inner{ position:relative; z-index:1; width:100%; padding:clamp(28px,4vw,48px) }
.approach-note .eyebrow{ color:#DAC38C }
.approach-note .eyebrow::after{ background:rgba(250,246,239,.25) }
.approach-note__title{ font-family:var(--ff-display); font-size:clamp(2rem,3.6vw,3rem); line-height:1.18; margin:1.15rem 0 2rem }
.approach-note__foot{ font-size:.7rem; letter-spacing:.08em; margin:0; padding-top:20px; border-top:1px solid rgba(250,246,239,.22); color:#E4DDCE }
.approach-note__foot span{ padding:0 .3rem; color:#DAC38C }
.approach-note__foot .photo-credit{ display:inline-block; padding:5px 0 0; color:#D5CFC0; font-size:.62rem; letter-spacing:.02em }
.approach-note > img[src] + .approach-note__inner{ align-self:flex-end; padding-top:80px; background:linear-gradient(transparent,rgba(18,39,32,.85)); }
.approach-note > img[src] + .approach-note__inner .eyebrow,
.approach-note > img[src] + .approach-note__inner .approach-note__title{ display:none }
.approach-note > img[src] + .approach-note__inner .approach-note__foot{ border-top:0; padding-top:0 }
.home-page .section--tight{ padding-top:0 }
.home-page .tile{ padding:30px }
.home-page .tile__n{ font-family:var(--ff-body); font-size:.68rem; color:var(--brass-ink); margin-bottom:20px }
.home-page .service-tiles{ grid-template-columns:repeat(4,minmax(0,1fr)) }
.owner-section{ border-top:1px solid var(--rule); background:var(--linen) }
.owner-section__inner{ display:grid; grid-template-columns:minmax(260px,.85fr) minmax(0,1.15fr); align-items:start; gap:clamp(40px,7vw,100px) }
.owner-portrait{ position:relative; margin:0; aspect-ratio:4/5; width:100%; max-width:440px; overflow:hidden; background:#E5DECF; border:1px solid #D6CBB7; border-radius:var(--r-sm) }
.owner-portrait > img{ width:100%; height:100%; object-fit:cover; object-position:center 30% }
.owner-portrait__placeholder{ position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:24px; color:var(--forest); background:radial-gradient(ellipse at 50% 34%,#F5F0E5,#E1D8C6) }
.owner-portrait__placeholder::before{ content:""; position:absolute; inset:20px; border:1px solid rgba(122,95,38,.22) }
.owner-portrait__initials{ display:grid; place-items:center; width:180px; height:180px; border:1px solid rgba(30,59,49,.2); border-radius:50%; font-family:var(--ff-display); font-size:6rem; font-weight:400; letter-spacing:-.03em }
.owner-portrait__label{ font-size:.66rem; text-transform:uppercase; letter-spacing:.18em; color:var(--muted) }
.owner-section__copy{ min-width:0 }
.owner-section__copy h2{ font-size:clamp(2.8rem,4.9vw,4.6rem); margin-bottom:.18em; color:var(--forest-d) }
.owner-section__role{ color:var(--muted); font-size:.85rem; margin-bottom:0 }
.owner-section__copy .lede{ margin-bottom:.8rem }
.owner-bio-details{ margin:-.4rem 0 1.25rem }
.owner-bio-details > summary{ display:flex; align-items:center; gap:10px; width:fit-content; max-width:100%; min-height:44px; padding:8px 0; color:var(--forest); font-size:.82rem; cursor:pointer; list-style:none; text-decoration:underline; text-decoration-color:rgba(30,59,49,.45); text-underline-offset:4px }
.owner-bio-details > summary::-webkit-details-marker{ display:none }
.owner-bio-details > summary::marker{ content:"" }
.owner-bio-details__less,.owner-bio-details[open] .owner-bio-details__more{ display:none }
.owner-bio-details[open] .owner-bio-details__less{ display:inline }
.owner-bio-details__chevron{ width:6px; height:6px; margin-left:2px; border-right:1px solid currentColor; border-bottom:1px solid currentColor; transform:rotate(45deg); transition:transform .18s var(--ease); flex-shrink:0 }
.owner-bio-details[open] .owner-bio-details__chevron{ transform:rotate(225deg) }
.owner-bio-more{ padding-top:.75rem; overflow-wrap:anywhere }
.owner-bio-more p:last-child{ margin-bottom:0 }
@media (hover:hover){ .owner-bio-details > summary:hover{ color:var(--brass-ink); text-decoration-color:currentColor } }
.owner-section__license{ color:var(--brass-ink); font-size:.75rem; margin-top:1.4rem }
.owner-section__contacts{ display:flex; flex-wrap:wrap; gap:6px 24px; margin:20px 0 26px }
.owner-section__contacts a{ min-height:36px; display:inline-flex; align-items:center; font-size:.91rem; overflow-wrap:anywhere; max-width:100% }
.cta-band .btn--brass{ color:var(--forest-d) }
@media (max-width:1000px){
  .home-page .service-tiles{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .owner-section__inner{ gap:38px }
}
@media (max-width:760px){
  .section-heading{ display:block; margin-bottom:24px }
  .section-heading .text-link{ margin-top:12px }
  .featured-cards--pair{ grid-template-columns:1fr; gap:24px }
  .featured-cards--pair .card__body{ padding:22px }
  .featured-cards--pair .card__title{ font-size:1.65rem }
  .portfolio-band__inner{ display:block }
  .portfolio-band .btn{ margin-top:22px }
  .approach-note{ min-height:350px }
  .approach-copy h2{ max-width:24ch }
  .owner-section__inner{ grid-template-columns:minmax(0,1fr); gap:34px }
  .owner-portrait{ max-width:360px; aspect-ratio:5/4 }
  .owner-portrait__initials{ width:130px; height:130px; font-size:4.5rem }
  .owner-section__contacts{ flex-direction:column; gap:2px }
}
@media (max-width:520px){ .home-page .service-tiles{ grid-template-columns:minmax(0,1fr) } }

/* ---------- badges ---------- */
.badge{
  display:inline-flex; align-items:center; gap:.3rem; font-size:.6rem; font-weight:700;
  letter-spacing:.15em; text-transform:uppercase; padding:.36rem .6rem; border-radius:2px;
  background:var(--forest); color:#fff; white-space:nowrap;
}
@media (max-width:760px){ .badge{ font-size:.72rem; letter-spacing:.12em; padding:.34rem .58rem } }
.badge--sale{ background:var(--forest) }
.badge--lease{ background:var(--brass-ink) }
.badge--new{ background:var(--clay) }
.badge--reduced{ background:var(--clay) }
.badge--pending{ background:#7A6A2E }
.badge--sold{ background:#5C5347 }
.badge--land{ background:var(--sage) }
.badge--draft{ background:#8A8272 }
.badge--soft{ background:var(--linen); color:var(--forest-d); border:1px solid var(--rule) }
.badge--ok{ background:var(--ok) }

/* ---------- filters ---------- */
.filters{ background:var(--paper); border:1px solid var(--rule); border-radius:var(--r-md); padding:18px; box-shadow:var(--shadow-sm) }
.filters__toggle{
  display:none; width:100%; align-items:center; justify-content:center; gap:.55rem;
  min-height:48px; padding:.72rem 1.2rem; border:1px solid var(--rule); background:var(--paper); color:var(--forest);
  font-family:var(--ff-body); font-size:.79rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  border-radius:var(--r-sm); cursor:pointer; text-align:center; margin-bottom:14px;
}
@media (hover:hover){ .filters__toggle:hover{ background:var(--forest); border-color:var(--forest); color:#fff } }
@media (max-width:640px){ .filters__toggle{ display:inline-flex } }
.filters__row{ display:grid; grid-template-columns:repeat(5,1fr); gap:14px }
@media (max-width:1000px){ .filters__row{ grid-template-columns:repeat(2,1fr) } }
@media (max-width:520px){ .filters__row{ grid-template-columns:1fr } }
.filters__foot{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin-top:14px; padding-top:14px; border-top:1px solid var(--rule-soft); flex-wrap:wrap }
.seg{ display:inline-flex; border:1px solid var(--rule); border-radius:var(--r-sm); overflow:hidden; background:var(--paper) }
.seg button{
  border:0; background:transparent; padding:.55rem 1rem; cursor:pointer; font-size:.72rem;
  font-weight:700; letter-spacing:.13em; text-transform:uppercase; color:var(--muted); min-height:44px;
}
.seg button + button{ border-left:1px solid var(--rule) }
.seg button[aria-pressed="true"]{ background:var(--forest); color:#fff }
.results-bar{ display:flex; align-items:center; justify-content:space-between; gap:1rem; margin:26px 0 22px; flex-wrap:wrap }
.results-bar__count{ font-family:var(--ff-display); font-size:1.4rem; color:var(--forest-d) }
.chiprow{ display:flex; gap:.5rem; flex-wrap:wrap; margin-top:14px }
.chip{
  display:inline-flex; align-items:center; gap:.45rem; background:var(--forest-t); color:var(--forest-d);
  border:1px solid rgba(30,59,49,.16); border-radius:100px; padding:.3rem .5rem .3rem .78rem; font-size:.76rem;
}
.chip button{
  display:inline-flex; align-items:center; justify-content:center; min-width:32px; min-height:32px;
  margin:-6px -3px -6px 0; border:0; background:none; cursor:pointer; color:var(--forest); font-size:1rem; line-height:1; padding:0 .2rem;
}
@media (max-width:760px){
  .chip{ min-height:44px }
  .chip button{ min-width:44px; min-height:44px; margin:-12px -8px -12px 0 }
}

/* ---------- forms ---------- */
.field{ display:block; margin-bottom:1.05rem }
.field > label,.label{
  display:block; font-size:.66rem; letter-spacing:.18em; text-transform:uppercase;
  font-weight:700; color:var(--muted); margin-bottom:.42rem;
}
@media (max-width:760px){ .field > label,.label{ font-size:.76rem; letter-spacing:.11em } }
.label .opt,.field > label .opt{ color:var(--muted); letter-spacing:.02em; text-transform:none; font-weight:500; font-size:.76rem }
.input,input[type=text],input[type=email],input[type=tel],input[type=url],input[type=number],input[type=password],input[type=date],select,textarea{
  width:100%; background:var(--paper); border:1px solid var(--rule); border-radius:var(--r-sm);
  padding:.68rem .85rem; min-height:46px; font-size:1rem; color:var(--ink);
  transition:border-color .16s var(--ease), box-shadow .16s var(--ease);
}
select{ appearance:none; background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='12' height='8'><path d='M1 1l5 5 5-5' stroke='%236E6658' stroke-width='1.6' fill='none' stroke-linecap='round'/></svg>"); background-repeat:no-repeat; background-position:right .85rem center; padding-right:2.3rem }
textarea{ min-height:130px; resize:vertical; line-height:1.6 }
.input:focus,input:focus,select:focus,textarea:focus{ outline:0; border-color:var(--forest); box-shadow:0 0 0 3px var(--forest-t) }
.field--err input,.field--err textarea,.field--err select{ border-color:var(--err); box-shadow:0 0 0 3px rgba(155,58,46,.1) }
.err-msg{ display:none; color:var(--err); font-size:.8rem; margin-top:.35rem }
.field--err .err-msg{ display:block }
.hint{ font-size:.8rem; color:var(--muted); margin-top:.35rem }
.form-grid{ display:grid; grid-template-columns:1fr 1fr; gap:0 1.1rem }
@media (max-width:640px){ .form-grid{ grid-template-columns:1fr } }
.form-grid .full{ grid-column:1/-1 }
.check{ display:flex; gap:.6rem; align-items:flex-start; font-size:.9rem; margin-bottom:.6rem; cursor:pointer }
.check input{ width:19px; height:19px; min-height:0; margin-top:2px; flex:none; accent-color:var(--forest) }
@media (max-width:760px){
  .check{ min-height:44px; align-items:center }
  .check input{ width:24px; height:24px; margin-top:0 }
}
.checkgrid{ display:grid; grid-template-columns:repeat(auto-fill,minmax(190px,1fr)); gap:.2rem .9rem }
.honey{ position:absolute; left:-9999px; opacity:0; height:0; width:0 }

.notice{ padding:1rem 1.15rem; border-radius:var(--r-sm); border-left:3px solid var(--forest); background:var(--linen); font-size:.92rem; margin-bottom:1.2rem }
.notice--ok{ border-color:var(--ok); background:rgba(46,106,79,.08) }
.notice--warn{ border-color:var(--warn); background:rgba(154,107,30,.08) }
.notice--err{ border-color:var(--err); background:rgba(155,58,46,.07) }

/* ---------- listing detail ---------- */
.crumbs{ font-size:.78rem; color:var(--muted); padding:1rem 0; letter-spacing:.03em }
.crumbs a{ color:var(--muted); text-decoration:none; display:inline-block; padding:.7rem .15rem; margin:-.7rem -.15rem }
@media (hover:hover){ .crumbs a:hover{ color:var(--brass-ink) } }
.crumbs span{ margin:0 .5rem; color:var(--rule) }

.detail{ display:grid; grid-template-columns:minmax(0,1fr) 356px; gap:52px; align-items:start; padding-bottom:70px }
@media (max-width:1040px){ .detail{ grid-template-columns:1fr; gap:36px } }

.gallery{ position:relative; border-radius:var(--r-md); overflow:hidden; background:var(--linen-2) }
.gallery__main{ position:relative; aspect-ratio:4/3; cursor:zoom-in }
.gallery__main img{ width:100%; height:100%; object-fit:cover }
.gallery__main[data-kind="map"]{ background:var(--ivory) }
.gallery__main[data-kind="map"] img{ object-fit:contain }
.thumbs button[data-kind="map"] img{ object-fit:contain; background:var(--ivory) }
.lightbox img[data-kind="map"]{ background:var(--ivory) }
.gallery__nav{
  position:absolute; top:50%; transform:translateY(-50%); width:46px; height:46px; border-radius:50%;
  background:rgba(250,246,239,.9); border:1px solid var(--rule); cursor:pointer; display:flex;
  align-items:center; justify-content:center; font-size:1.2rem; color:var(--forest-d); z-index:2;
}
@media (hover:hover){ .gallery__nav:hover{ background:#fff } }
.gallery__nav--prev{ left:14px } .gallery__nav--next{ right:14px }
.gallery__count{ position:absolute; right:14px; bottom:14px; background:rgba(18,39,32,.82); color:#fff; font-size:.76rem; padding:5px 11px; border-radius:var(--r-sm); z-index:2 }
.property-photo-note{ padding:18px 22px; margin:0 0 26px; border:1px solid var(--rule); border-left:3px solid var(--forest); background:var(--ivory); color:var(--muted); line-height:1.65 }
.property-photo-note a{ font-weight:600 }
.thumbs{ display:grid; grid-template-columns:repeat(auto-fill,minmax(96px,1fr)); gap:9px; margin-top:9px; list-style:none; padding:0 }
.thumbs button{ display:block; width:100%; aspect-ratio:4/3; border:1px solid var(--rule); border-radius:var(--r-sm); overflow:hidden; padding:0; cursor:pointer; background:var(--linen-2) }
.thumbs img{ width:100%; height:100%; object-fit:cover }
.thumbs button[aria-current="true"]{ border-color:var(--brass); box-shadow:0 0 0 2px var(--brass-t) }

.lightbox{ position:fixed; inset:0; background:rgba(15,13,10,.94); z-index:200; display:none; align-items:center; justify-content:center; padding:56px 20px }
.lightbox[data-open="true"]{ display:flex }
.lightbox img{ max-width:100%; max-height:82vh; object-fit:contain; border-radius:var(--r-sm) }
.lightbox__close{ position:absolute; top:18px; right:20px; background:none; border:1px solid rgba(255,255,255,.35); color:#fff; width:46px; height:46px; border-radius:50%; cursor:pointer; font-size:1.3rem }
.lightbox__nav{ position:absolute; top:50%; transform:translateY(-50%); background:none; border:1px solid rgba(255,255,255,.35); color:#fff; width:52px; height:52px; border-radius:50%; cursor:pointer; font-size:1.4rem }
.lightbox__nav--prev{ left:22px } .lightbox__nav--next{ right:22px }
.lightbox__cap{ position:absolute; bottom:20px; left:0; right:0; text-align:center; color:#D8D2C4; font-size:.85rem }

.metrics{ display:grid; grid-template-columns:repeat(auto-fit,minmax(150px,1fr)); border:1px solid var(--rule); border-radius:var(--r-md); overflow:hidden; background:var(--paper); margin:30px 0 }
.metric{ padding:20px 22px; border-left:1px solid var(--rule) }
.metric:first-child{ border-left:0 }
.metric__l{ font-size:.62rem; letter-spacing:.19em; text-transform:uppercase; color:var(--muted); font-weight:700 }
.metric__v{ font-family:var(--ff-display); font-size:1.52rem; font-weight:600; color:var(--forest-d); margin-top:.3rem; font-variant-numeric:tabular-nums; line-height:1.15 }
@media (max-width:620px){
  .metrics{ grid-template-columns:1fr }
  .metric{ border-left:0; border-top:1px solid var(--rule) }
  .metric:first-child{ border-top:0 }
}

.specs{ width:100%; border-collapse:collapse; font-size:.93rem }
.specs caption{
  text-align:left; font-family:var(--ff-body); font-size:.66rem; letter-spacing:.2em; text-transform:uppercase;
  font-weight:700; color:var(--brass-ink); padding:0 0 .7rem;
}
.specs tr{ border-bottom:1px solid var(--rule-soft) }
.specs tr:last-child{ border-bottom:0 }
.specs th{ text-align:left; font-weight:500; color:var(--muted); padding:.66rem 1.2rem .66rem 0; width:46%; vertical-align:top }
.specs td{ padding:.66rem 0; color:var(--ink); font-weight:500; font-variant-numeric:tabular-nums }
@media (max-width:560px){
  .specs th{ display:block; width:auto; padding:.72rem 0 .1rem; font-size:.78rem; letter-spacing:.05em }
  .specs td{ display:block; padding:0 0 .72rem }
}
.spec-cols{ display:grid; grid-template-columns:1fr 1fr; gap:12px 44px }
@media (max-width:720px){ .spec-cols{ grid-template-columns:1fr } }

.highlights{ list-style:none; padding:0; margin:0; display:grid; gap:.7rem }
.highlights li{ position:relative; padding-left:1.7rem; color:var(--ink-soft) }
.highlights li::before{ content:""; position:absolute; left:0; top:.62em; width:8px; height:8px; background:var(--brass); transform:rotate(45deg) }

.block{ padding:34px 0; border-top:1px solid var(--rule) }
.block:first-of-type{ border-top:0 }
.block > h2{ font-size:1.75rem; margin-bottom:1rem }
.block.location-summary{ padding:28px; margin-bottom:34px; border:1px solid var(--rule); border-radius:var(--r-md); background:var(--paper) }
.location-summary > h2{ font-size:1.45rem; margin-bottom:.7rem }
.location-summary > .lede{ font-family:var(--ff-display); font-size:1.85rem; line-height:1.2; color:var(--forest-d); margin-bottom:.65rem }
.location-summary > .muted{ max-width:58ch; margin-bottom:0 }
.location-summary .map-note{ margin-top:16px; margin-bottom:0 }
.location-note{ margin-top:14px; max-width:68ch }
.map-documents{ margin-top:22px; padding-top:20px; border-top:1px solid var(--rule) }
.map-documents ul{ display:flex; flex-wrap:wrap; gap:10px 24px; padding:0; margin:0; list-style:none }
.map-documents a{ display:inline-flex; align-items:center; flex-wrap:wrap; gap:.45rem; min-height:44px; font-weight:600; text-decoration-thickness:1px }
.map-documents .small{ color:var(--muted); font-weight:400 }
@media (max-width:520px){
  .block.location-summary{ padding:22px }
  .location-summary > .lede{ font-size:1.65rem }
}

.map{ height:420px; border:1px solid var(--rule); border-radius:var(--r-md); overflow:hidden; background:var(--linen-2); z-index:1 }
.map--tall{ height:560px }
.map--sm{ height:250px }
@media (max-width:760px){ .map{ height:300px } .map--tall{ height:380px } .map--sm{ height:280px } }
.leaflet-container{ font-family:var(--ff-body) }
.leaflet-touch .leaflet-bar a{ width:44px; height:44px; line-height:44px }
.map-note{ font-size:.82rem; color:var(--muted); margin-top:.6rem; display:flex; gap:1.4rem; flex-wrap:wrap; align-items:center }
.legend{ display:flex; gap:1.1rem; flex-wrap:wrap }
.legend span{ display:inline-flex; align-items:center; gap:.4rem; color:var(--ink-soft) }
/* Every map indicator uses the same red; county areas remain clearly approximate. */
.legend i{ width:12px; height:12px; border-radius:50%; display:block; background:#C83B32 }
.legend .legend__area{ background:transparent; border:2px solid #C83B32; width:15px; height:15px }
.pin, .pin--land, .pin--lease, .pin--residential, .pin--sold, .pin--red{ background:#C83B32; color:#fff; border:2px solid #fff; border-radius:50%; width:26px; height:26px; box-shadow:var(--shadow-sm); transform:none }
.pin span{ display:block; font-size:.62rem; font-weight:700; text-align:center; line-height:22px; transform:none }
.card__media--mapped{ background:#ECE9E0 }
.card__map{ position:absolute; inset:0 0 44px; isolation:isolate; z-index:0; pointer-events:none }
.card__map-fallback{ display:grid; place-items:center; height:100%; padding:45px 20px; color:var(--ink-soft); font-size:1.2rem; text-align:center }
.card__map-caption{ position:absolute; bottom:0; left:0; right:0; min-height:44px; z-index:2; display:flex; flex-direction:column; justify-content:center; gap:2px; padding:6px 12px; background:rgba(250,248,241,.97); color:var(--ink-soft); font-size:.74rem; line-height:1.2; pointer-events:none }
.card__map-source{ color:var(--muted); font-size:.61rem; align-self:flex-end; pointer-events:auto; text-decoration:underline }
.card__media--mapped .card__badges{ z-index:2; pointer-events:none }
.card__map .leaflet-tile{ object-fit:fill; transition:none; filter:none }
@media (hover:hover){ .card:hover .card__map img{ transform:none } }
.map-pop__note{ font-size:.78rem; line-height:1.35; margin:.45rem 0 }
.map-pop__list{ max-height:230px; overflow:auto; margin:.5rem 0 0; padding-left:1rem }
.map-pop__list li{ margin:.4rem 0; font-size:.83rem }
.card--sold .card__media img{ filter:grayscale(.45) }
.map-pop{ font-family:var(--ff-body); min-width:180px }
.map-pop b{ font-family:var(--ff-display); font-size:1.05rem; display:block; margin-bottom:2px }

/* ---------- broker rail ---------- */
.rail{ position:sticky; top:calc(var(--hdr) + 8px); display:grid; gap:16px }
@media (max-width:1040px){ .rail{ position:static } }
.broker{ background:var(--paper); border:1px solid var(--rule); border-radius:var(--r-md); padding:24px; box-shadow:var(--shadow-sm) }
.broker__hd{ display:flex; gap:14px; align-items:center; margin-bottom:16px }
.broker__ph{
  width:62px; height:62px; border-radius:50%; flex:none; background:var(--forest); color:var(--brass-l);
  display:flex; align-items:center; justify-content:center; font-family:var(--ff-display); font-size:1.35rem; font-weight:600;
}
.broker__nm{ font-family:var(--ff-display); font-size:1.24rem; font-weight:600; color:var(--forest-d); line-height:1.2 }
.broker__ti{ font-size:.76rem; color:var(--muted); letter-spacing:.05em }
.broker__rows{ font-size:.88rem; display:grid; gap:.4rem; margin-bottom:18px; padding-bottom:16px; border-bottom:1px solid var(--rule-soft) }
.broker__rows a{ text-decoration:none }
.broker__rows dt{ display:none }

/* ---------- contact ---------- */
.contact-section{ padding-top:28px }
.contact-heading{ margin-bottom:42px; max-width:720px }
.contact-heading h1{ margin-bottom:.3em; font-size:clamp(2.7rem,5.4vw,4.6rem) }
.contact-heading .lede{ margin-bottom:0 }
.contact-layout{ grid-template-columns:340px minmax(0,1fr); gap:46px; padding-bottom:0 }
.contact-form-column{ grid-column:2; grid-row:1; min-width:0 }
.contact-rail{ grid-column:1; grid-row:1; position:static }
.contact-form-panel{ padding:clamp(24px,3.3vw,40px); box-shadow:none; margin-bottom:0 }
.contact-form-panel > h2{ font-size:2rem }
.contact-form-panel .panel__sub{ margin-bottom:24px; max-width:51ch }
.contact-form-panel .hint{ margin:16px 0 0; max-width:58ch }
.contact-form-panel input,.contact-form-panel textarea,.contact-form-panel select{ background-color:#FDFBF7 }
.contact-form-panel textarea{ min-height:160px }
.contact-intent{ margin:0 0 25px; padding:15px 18px; border-left:2px solid var(--brass); background:var(--linen); font-size:.89rem; color:var(--forest) }
.contact-intent strong{ display:block; margin-bottom:3px; font-weight:700 }
.contact-intent p{ margin:0; overflow-wrap:anywhere }
.contact-office-map{ padding-bottom:0 }
.contact-rail .broker{ box-shadow:none; padding:27px }
.contact-rail .broker:first-child{ background:var(--forest-d); border-color:var(--forest-d); color:var(--ivory) }
.contact-rail .broker:first-child .label{ color:#DAC38C }
.contact-rail .broker:first-child .broker__nm{ color:var(--ivory); font-size:1.5rem }
.contact-rail .broker:first-child .broker__ti{ color:#D5CFC0 }
.contact-rail .broker:first-child .broker__ph{ background:rgba(250,246,239,.09); color:#DAC38C; border:1px solid rgba(250,246,239,.16) }
.contact-rail .broker:first-child .btn{ --bg:var(--ivory); --bd:var(--ivory); --fg:var(--forest-d) }
.contact-rail .broker:first-child .btn--ghost{ --bg:transparent; --bd:rgba(250,246,239,.35); --fg:var(--ivory) }
.contact-rail .broker:first-child #mgr-lic,.contact-rail .broker:first-child #mgr-lic a{ color:#D5CFC0; overflow-wrap:anywhere }
.contact-rail .text-link{ margin-top:10px }
.not-found-page main{ min-height:65vh }
.not-found-page .lede{ max-width:58ch }
@media (hover:hover){
  .contact-rail .broker:first-child .btn:hover{ --bg:#E7D6AD; --bd:#E7D6AD; color:var(--forest-d) }
  .contact-rail .broker:first-child .btn--ghost:hover{ --bg:var(--ivory); --bd:var(--ivory); color:var(--forest-d) }
}
@media (max-width:900px){
  .contact-layout{ grid-template-columns:minmax(0,1fr); gap:28px }
  .contact-form-column{ grid-column:auto; grid-row:2 }
  .contact-rail{ grid-column:auto; grid-row:1; grid-template-columns:repeat(2,minmax(0,1fr)); align-items:start }
  .contact-rail .broker:first-child{ grid-row:span 2 }
}
@media (max-width:640px){
  .contact-section{ padding-top:20px }
  .contact-heading{ margin-bottom:28px }
  .contact-rail{ grid-template-columns:minmax(0,1fr) }
  .contact-rail .broker:first-child{ grid-row:auto }
  .contact-rail .broker:last-child{ display:none }
  .contact-form-panel{ padding:24px 20px }
}

/* ---------- call bar (mobile) ---------- */
.callbar{
  position:fixed; left:0; right:0; bottom:0; z-index:80; display:none; gap:1px;
  background:var(--rule); padding-bottom:env(safe-area-inset-bottom);
  box-shadow:0 -4px 20px rgba(28,26,22,.14);
}
.callbar a{
  flex:1; display:flex; align-items:center; justify-content:center; gap:.5rem; min-height:58px;
  background:var(--forest); color:#fff; text-decoration:none; font-size:.78rem; font-weight:700;
  letter-spacing:.14em; text-transform:uppercase;
}
.callbar a + a{ background:var(--brass-ink) }
@media (max-width:820px){ .callbar{ display:flex } body{ padding-bottom:calc(68px + env(safe-area-inset-bottom)) } }
body.nav-open .callbar,
body.lightbox-open .callbar{ display:none }

/* ---------- footer ---------- */
.site-footer{ background:var(--forest-d); color:#C9C2B3; padding:64px 0 0; margin-top:0 }
.site-footer a{ color:#E4DDCE; text-decoration:none }
@media (hover:hover){ .site-footer a:hover{ color:var(--brass-l) } }
.footer__grid{ display:grid; grid-template-columns:1.5fr 1fr 1fr 1.2fr; gap:40px; padding-bottom:48px }
@media (max-width:880px){ .footer__grid{ grid-template-columns:1fr 1fr } }
@media (max-width:520px){ .footer__grid{ grid-template-columns:1fr } }
.footer__h{ font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; color:var(--brass-l); font-weight:700; margin-bottom:1.1rem }
.footer__list{ list-style:none; padding:0; margin:0; display:grid; gap:.6rem; font-size:.9rem }
.footer__brand .brand__name{ color:#fff; font-size:1.3rem }
.footer__legal{ border-top:1px solid rgba(255,255,255,.12); padding:22px 0 30px; font-size:.76rem; color:#9A9385; display:flex; justify-content:space-between; gap:1.4rem; flex-wrap:wrap }
.disclaimer{ font-size:.74rem; color:#9A9385; line-height:1.6; max-width:70ch }
@media (max-width:760px){ .footer__legal{ font-size:.84rem } .disclaimer{ font-size:.84rem } }

/* ---------- misc blocks ---------- */
.split{ display:grid; grid-template-columns:1fr 1fr; gap:clamp(30px,5vw,70px); align-items:center }
@media (max-width:860px){ .split{ grid-template-columns:1fr } }
.frame{ position:relative; border-radius:var(--r-md); overflow:hidden }
.frame::after{ content:""; position:absolute; inset:12px; border:1px solid rgba(250,246,239,.45); pointer-events:none; border-radius:2px }
.tiles{ display:grid; grid-template-columns:repeat(auto-fit,minmax(230px,1fr)); gap:1px; background:var(--rule); border:1px solid var(--rule); border-radius:var(--r-md); overflow:hidden }
.tile{ background:var(--ivory); padding:30px 26px }
.tile h3{ font-size:1.28rem; margin-bottom:.5rem }
.tile p{ font-size:.92rem; color:var(--muted); margin:0 }
.tile__n{ font-family:var(--ff-display); font-size:.95rem; color:var(--brass-ink); margin-bottom:.7rem; letter-spacing:.1em }
.empty{ text-align:center; padding:70px 26px; border:1px dashed var(--rule); border-radius:var(--r-md); background:var(--paper) }

/* ---------- admin ---------- */
.admin-shell{ display:grid; grid-template-columns:236px minmax(0,1fr); min-height:100vh; background:var(--linen) }
@media (max-width:900px){ .admin-shell{ grid-template-columns:minmax(0,1fr) } }
.admin-side{ background:var(--forest-d); color:#CFC8B9; padding:26px 20px; position:sticky; top:0; height:100vh; overflow:auto }
@media (max-width:900px){ .admin-side{ position:static; height:auto } }
.admin-side .brand__name{ color:#fff; font-size:1.1rem }
.admin-nav{ list-style:none; padding:0; margin:26px 0 0; display:grid; gap:2px }
.admin-nav button{
  width:100%; text-align:left; background:none; border:0; color:#CFC8B9; padding:.72rem .85rem;
  border-radius:var(--r-sm); cursor:pointer; font-size:.86rem; font-weight:600; letter-spacing:.04em; min-height:44px;
}
@media (hover:hover){ .admin-nav button:hover{ background:rgba(255,255,255,.07); color:#fff } }
@media (max-width:900px){
  .admin-side{ padding:18px 20px }
  .admin-nav{ display:flex; gap:6px; margin:16px -20px 0; padding:0 20px 6px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none }
  .admin-nav::-webkit-scrollbar{ display:none }
  .admin-nav > li{ flex:none }
  .admin-nav button{ width:auto; white-space:nowrap; padding:.6rem .95rem }
}
.admin-nav button[aria-current="true"]{ background:var(--brass); color:#1C1A16 }
.admin-split{ display:grid; grid-template-columns:minmax(0,240px) minmax(0,1fr); gap:22px; align-items:start }
@media (max-width:640px){ .admin-split{ grid-template-columns:minmax(0,1fr) } }
.stats-grid{ display:grid; grid-template-columns:1fr 1fr 2fr; gap:.9rem }
@media (max-width:640px){ .stats-grid{ grid-template-columns:minmax(0,1fr) } }
.admin-main{ padding:30px clamp(18px,3vw,38px) 90px }
.admin-hd{ display:flex; align-items:flex-end; justify-content:space-between; gap:1.2rem; flex-wrap:wrap; margin-bottom:24px }
.admin-hd h1{ font-size:2rem; margin:0 }
.panel{ background:var(--paper); border:1px solid var(--rule); border-radius:var(--r-md); padding:26px; box-shadow:var(--shadow-sm); margin-bottom:22px }
.panel > h2{ font-size:1.42rem; margin-bottom:.25rem }
.panel__sub{ font-size:.88rem; color:var(--muted); margin:-.1rem 0 1.4rem }
.fieldset{ border:0; padding:0; margin:0 0 2rem }
.fieldset > legend{
  font-size:.66rem; letter-spacing:.2em; text-transform:uppercase; font-weight:700; color:var(--brass-ink);
  padding:0 0 .9rem; border-bottom:1px solid var(--rule-soft); width:100%; margin-bottom:1.2rem;
}
.admin-table{ width:100%; border-collapse:collapse; font-size:.9rem }
.admin-table th{ text-align:left; font-size:.63rem; letter-spacing:.17em; text-transform:uppercase; color:var(--muted); padding:.6rem .8rem; border-bottom:1px solid var(--rule) }
.admin-table td{ padding:.75rem .8rem; border-bottom:1px solid var(--rule-soft); vertical-align:middle }
@media (hover:hover){ .admin-table tr:hover td{ background:var(--ivory) } }
.admin-table img{ width:74px; height:56px; object-fit:cover; border-radius:2px; border:1px solid var(--rule) }
.admin-table .acts{ display:flex; gap:.4rem; justify-content:flex-end; flex-wrap:wrap }
.tbl-wrap{ overflow-x:auto }

.drop{
  border:2px dashed var(--rule); border-radius:var(--r-md); background:var(--ivory); padding:34px 22px;
  text-align:center; transition:border-color .18s var(--ease), background .18s var(--ease);
}
.drop[data-over="true"]{ border-color:var(--brass); background:var(--brass-t) }
.drop p{ margin:.4rem 0 0; color:var(--muted); font-size:.88rem }
.photos{ display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:12px; margin-top:16px; list-style:none; padding:0 }
.photo{ position:relative; border:1px solid var(--rule); border-radius:var(--r-sm); overflow:hidden; background:var(--linen-2) }
.photo img{ width:100%; aspect-ratio:4/3; object-fit:cover }
.photo[data-cover="true"]{ border-color:var(--brass); box-shadow:0 0 0 2px var(--brass-t) }
.photo__tag{ position:absolute; top:7px; left:7px; background:var(--brass); color:#1C1A16; font-size:.56rem; font-weight:700; letter-spacing:.14em; padding:3px 6px; border-radius:2px }
.photo__acts{ display:flex; gap:4px; padding:7px; background:var(--paper); border-top:1px solid var(--rule-soft) }
.photo__acts button{
  flex:1; border:1px solid var(--rule); background:var(--paper); border-radius:2px; cursor:pointer;
  font-size:.66rem; padding:.3rem; min-height:44px; color:var(--muted);
}
@media (hover:hover){
  .photo__acts button:hover{ border-color:var(--forest); color:var(--forest) }
  .photo__acts button.x:hover{ border-color:var(--err); color:var(--err) }
}

.geo-results{ list-style:none; padding:0; margin:.8rem 0 0; display:grid; gap:.4rem }
.geo-results button{
  width:100%; text-align:left; border:1px solid var(--rule); background:var(--paper); border-radius:var(--r-sm);
  padding:.6rem .8rem; cursor:pointer; font-size:1rem; min-height:44px;
}
@media (hover:hover){ .geo-results button:hover{ border-color:var(--forest); background:var(--ivory) } }

.stickybar{
  position:sticky; bottom:0; background:var(--ivory);
  border-top:1px solid var(--rule); padding:14px 0; margin-top:26px; display:flex; gap:.7rem;
  align-items:center; flex-wrap:wrap; z-index:20;
}
/* On iPhones with viewport-fit=cover the save bar would otherwise sit under the home indicator. */
@media (max-width:900px){ .stickybar{ padding-bottom:calc(14px + env(safe-area-inset-bottom)) } }
.stickybar .spacer{ flex:1 }
.savepill{ font-size:.8rem; color:var(--muted) }

.toast{
  position:fixed; bottom:24px; left:50%; transform:translateX(-50%) translateY(16px); background:var(--forest-d);
  color:#fff; padding:.85rem 1.4rem; border-radius:var(--r-sm); box-shadow:var(--shadow-lg); z-index:300;
  opacity:0; pointer-events:none; transition:opacity .22s var(--ease), transform .22s var(--ease); font-size:.9rem;
}
.toast[data-show="true"]{ opacity:1; transform:translateX(-50%) translateY(0) }
@media (max-width:820px){ .toast{ bottom:calc(74px + env(safe-area-inset-bottom)) } }

.login{ min-height:100vh; display:grid; place-items:center; padding:40px 22px; background:var(--forest-d) }
.login__card{ background:var(--ivory); border-radius:var(--r-md); padding:40px; width:100%; max-width:430px; box-shadow:var(--shadow-lg) }

.tag-row{ display:flex; gap:.5rem; flex-wrap:wrap; align-items:center }
.kbd{ font-family:ui-monospace,SFMono-Regular,Menlo,monospace; font-size:.8rem; background:var(--linen); border:1px solid var(--rule); border-radius:3px; padding:.12rem .38rem }
[hidden]{ display:none !important }

/* Keep narrow screens comfortable without clipping content to conceal overflow. */
@media (max-width:520px){
  .wrap{ padding-inline:20px }
  .site-header__inner{ gap:12px }
  .site-header .brand__name{ font-size:clamp(.88rem,3.7vw,1.05rem) }
  .nav-toggle{ flex:none }
  .topbar .wrap{ gap:.5rem; flex-wrap:nowrap }
  .topbar__tag{ font-size:.59rem; letter-spacing:.12em }
  .topbar__meta{ font-size:.71rem }
  .card__price{ flex-wrap:wrap; gap:.2rem .7rem }
  .footer__grid{ gap:30px }
  .footer__grid a,.footer__legal{ overflow-wrap:anywhere }
}

@media print{
  .site-header,.topbar,.callbar,.site-footer,.rail,.gallery__nav,.btn{ display:none !important }
  body{ background:#fff }
}
