/* ==========================================================================
   Home Match Realty — site.css
   Source of truth: .claude/DESIGN.md (tokens, type, components, blueprints).
   Hand-written, mobile-first, light mode only. No frameworks, no remote imports.
   Breakpoints: sm 640px · md 900px · lg 1200px
   ========================================================================== */

/* --------------------------------------------------------------------------
   0. Fonts (self-hosted, latin subset, variable)
   -------------------------------------------------------------------------- */
@font-face{font-family:"Fraunces";src:url("../fonts/fraunces-variable.woff2?v=cors2") format("woff2-variations"),url("../fonts/fraunces-variable.woff2?v=cors2") format("woff2");font-weight:100 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Fraunces";src:url("../fonts/fraunces-italic-variable.woff2?v=cors2") format("woff2-variations"),url("../fonts/fraunces-italic-variable.woff2?v=cors2") format("woff2");font-weight:100 900;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-variable.woff2?v=cors2") format("woff2-variations"),url("../fonts/figtree-variable.woff2?v=cors2") format("woff2");font-weight:300 900;font-style:normal;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Figtree";src:url("../fonts/figtree-italic-variable.woff2?v=cors2") format("woff2-variations"),url("../fonts/figtree-italic-variable.woff2?v=cors2") format("woff2");font-weight:300 900;font-style:italic;font-display:swap;unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}

/* --------------------------------------------------------------------------
   1. Tokens
   -------------------------------------------------------------------------- */
:root{
  /* 1.1 colour */
  --red:#C8102E;
  --red-deep:#9B0C22;
  --red-tint:rgba(200,16,46,.10);
  --navy:#0E1B2B;
  --navy-soft:#16273B;
  --ink:#171717;
  --muted:#5B6370;
  --paper:#F8F5EF;
  --cream:#EFE9DE;
  --line:#DCD4C6;
  --brass:#B6955A;
  --brass-ink:#7F6430;
  --white:#FFFFFF;
  --on-navy:#E9E4DA;
  --on-navy-muted:#AEB6C2;
  --ok:#1F6F43;
  --err:#B42318;

  /* 1.2 type scale (fluid) */
  --fs-1:0.875rem;
  --fs-2:1rem;
  --fs-3:clamp(1.0625rem,1rem + .3vw,1.125rem);
  --fs-4:clamp(1.25rem,1.15rem + .45vw,1.375rem);
  --fs-5:clamp(1.5rem,1.3rem + .9vw,1.75rem);
  --fs-6:clamp(1.75rem,1.4rem + 1.6vw,2.25rem);
  --fs-7:clamp(2.125rem,1.6rem + 2.4vw,3rem);
  --fs-8:clamp(2.5rem,1.7rem + 3.6vw,4rem);
  --fs-stat:clamp(2.25rem,1.6rem + 3vw,3.5rem);
  --fs-eyebrow:0.75rem;

  /* 1.3 spacing */
  --s-1:0.25rem;
  --s-2:0.5rem;
  --s-3:0.75rem;
  --s-4:1rem;
  --s-5:1.5rem;
  --s-6:2rem;
  --s-7:3rem;
  --s-8:4rem;
  --s-9:6rem;
  --s-10:8rem;
  --band:clamp(3rem,8vw,6rem);
  --band-tight:clamp(2rem,5vw,3rem);
  --gutter:1rem;

  /* 1.4 radii, borders, shadows */
  --r-sm:4px;
  --r-md:6px;
  --r-pill:999px;
  --hair:1px solid var(--line);
  --hair-brass:1px solid var(--brass);
  --sh-card:0 10px 30px -12px rgba(14,27,43,.18),0 2px 6px -2px rgba(14,27,43,.08);
  --sh-bar:0 -6px 24px -12px rgba(14,27,43,.25);
  --sh-header:0 1px 0 var(--line);
  --sh-header-scrolled:0 8px 24px -16px rgba(14,27,43,.35);

  /* 1.5 containers */
  --max:1200px;
  --max-prose:44rem;
  --max-narrow:36rem;

  /* 1.6 z-index */
  --z-base:0;
  --z-raised:10;
  --z-sticky:20;
  --z-actionbar:40;
  --z-header:50;
  --z-nav:60;
  --z-skip:100;

  /* 1.7 motion */
  --t-fast:120ms;
  --t-base:200ms;
  --t-slow:400ms;
  --ease:cubic-bezier(.2,.7,.2,1);
  --count-ms:900;

  /* 2.1 font stacks */
  --font-display:"Fraunces",Georgia,"Times New Roman",serif;
  --font-body:"Figtree",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
}
@media (min-width:900px){:root{--gutter:1.5rem}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;scroll-behavior:auto !important}
}

/* --------------------------------------------------------------------------
   2. Base and typography
   -------------------------------------------------------------------------- */
*,*::before,*::after{box-sizing:border-box}
/* No overflow-x on html or body: either one turns body into the scroll
   container and the position:sticky header scrolls away (GROWTH-BACKLOG 2;
   check.py 'css' rule). Anything that overflows gets overflow on its own
   wrapper instead. scroll-behavior:smooth only for people who allow motion. */
html{font-size:100%;-webkit-text-size-adjust:100%;color-scheme:light;background:var(--paper)}
@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}
body{margin:0;background:var(--paper);color:var(--ink);font:400 var(--fs-2)/1.6 var(--font-body);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;min-height:100vh;padding-bottom:calc(4.25rem + env(safe-area-inset-bottom))}
[hidden]{display:none!important}
main{display:block}
img,svg,video,picture{max-width:100%}
img,video{height:auto}
button,input,select,textarea{font:inherit;color:inherit;margin:0}
button{background:none;border:0;padding:0}
ul,ol{margin:0}
address{font-style:normal}
figure{margin:0}
::selection{background:var(--red-tint);color:var(--ink)}

h1,h2,h3,h4{font-family:var(--font-display);color:var(--navy);margin:0;font-optical-sizing:auto;text-wrap:balance}
h1{font-size:var(--fs-7);font-weight:400;line-height:1.05;letter-spacing:-.02em;font-variation-settings:"opsz" 144,"SOFT" 30,"WONK" 0}
h2{font-size:var(--fs-6);font-weight:400;line-height:1.1;letter-spacing:-.015em;font-variation-settings:"opsz" 96,"SOFT" 30,"WONK" 0}
h3{font-size:var(--fs-5);font-weight:500;line-height:1.2;letter-spacing:-.01em;font-variation-settings:"opsz" 72,"SOFT" 30,"WONK" 0}
h4{font-size:var(--fs-4);font-weight:500;line-height:1.3;letter-spacing:0;font-variation-settings:"opsz" 48,"SOFT" 30,"WONK" 0}
h1 em,h2 em,h3 em{font-style:italic;font-weight:inherit}
p{margin:0}
p+p{margin-top:var(--s-4)}
a{color:var(--red);text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.15em}
a:hover{color:var(--red-deep)}
strong{font-weight:600}
hr{border:0;border-top:var(--hair);margin:var(--s-6) 0}

/* 2.4 eyebrow, lede, small print */
.eyebrow{display:block;font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--brass-ink);margin-bottom:var(--s-3)}
.eyebrow--on-dark{color:var(--brass)}
.eyebrow--rule::before{content:"";display:inline-block;width:1.5rem;height:1px;background:currentColor;vertical-align:middle;margin-right:var(--s-3)}
.lede{font-size:var(--fs-3);line-height:1.55;color:var(--muted);max-width:60ch}
.band--navy .lede,.band--photo .lede,.hero-home .lede{color:var(--on-navy)}
h1+.lede,h2+.lede{margin-top:var(--s-4)}
.small{font-size:var(--fs-1);color:var(--muted)}
.meta{font:500 var(--fs-1)/1.4 var(--font-body);color:var(--muted);letter-spacing:.01em}
.meta a{color:inherit}

/* 2.5 prose (md.py output) */
.prose{max-width:var(--max-prose)}
.prose>*+*{margin-top:var(--s-5)}
.prose h2{margin-top:var(--s-8)}
.prose h3{margin-top:var(--s-7)}
.prose h2+*,.prose h3+*{margin-top:var(--s-4)}
.prose h4{margin-top:var(--s-6)}
.prose h4+*{margin-top:var(--s-3)}
.prose ul,.prose ol{padding-left:1.25rem}
.prose li+li{margin-top:var(--s-2)}
.prose li>ul,.prose li>ol{margin-top:var(--s-2)}
.prose blockquote{margin:0;padding:var(--s-4) var(--s-5);border-left:2px solid var(--brass);font-family:var(--font-display);font-size:var(--fs-3);color:var(--navy);font-variation-settings:"opsz" 18}
.prose blockquote p+p{margin-top:var(--s-3)}
.prose hr{border:0;border-top:var(--hair-brass);margin-block:var(--s-7);width:4rem}
.prose img{width:100%;height:auto;border-radius:var(--r-md)}
.prose table{width:100%}
.prose .lead{margin-top:var(--s-7)}
.prose .table-wrap{margin-top:var(--s-5)}

/* --------------------------------------------------------------------------
   3. Layout primitives
   -------------------------------------------------------------------------- */
.wrap{width:min(100% - 2*var(--gutter),var(--max));margin-inline:auto}
.wrap--prose{max-width:var(--max-prose)}
.wrap--narrow{max-width:var(--max-narrow)}
.grid{display:grid;gap:var(--s-5)}
.grid--2,.grid--3,.grid--4{grid-template-columns:1fr}
@media (min-width:640px){.grid--2,.grid--3,.grid--4{grid-template-columns:repeat(2,1fr)}}
@media (min-width:900px){.grid--3{grid-template-columns:repeat(3,1fr)}.grid--4{grid-template-columns:repeat(4,1fr)}}
.grid--sidebar{grid-template-columns:1fr}
@media (min-width:900px){.grid--sidebar{grid-template-columns:minmax(0,1fr) 18rem;gap:var(--s-8)}.grid--sidebar--reverse{grid-template-columns:18rem minmax(0,1fr)}}
.grid--split{grid-template-columns:1fr;align-items:start}
.grid--split.grid--middle{align-items:center}
@media (min-width:900px){.grid--split{grid-template-columns:1fr 1fr;gap:var(--s-8)}}
.grid>*{min-width:0}
.cluster{display:flex;flex-wrap:wrap;gap:var(--s-3)}
.stack>*+*{margin-top:var(--s-4)}

/* 3.1 section rhythm */
.band{padding-block:var(--band);background:var(--paper)}
.band--cream{background:var(--cream)}
.band--navy{background:var(--navy);color:var(--on-navy)}
.band--navy h2,.band--navy h3,.band--navy h4{color:var(--white)}
.band--navy a{color:var(--white)}
.band--navy .eyebrow{color:var(--brass)}
.band--navy .muted,.band--navy .meta,.band--navy .small{color:var(--on-navy-muted)}
.band--tight{padding-block:var(--band-tight)}
.band--rule{border-top:var(--hair)}
.band--photo{position:relative;background:var(--navy) center/cover no-repeat;color:var(--on-navy)}
.band--photo::before{content:"";position:absolute;inset:0;background:rgba(14,27,43,.72)}
.band--photo>.wrap{position:relative}
.band--photo h2,.band--photo h3{color:var(--white)}
.section-head{max-width:var(--max-prose);margin-bottom:var(--s-7)}
.section-head--center{margin-inline:auto;text-align:center}
.section-head--center .lede{margin-inline:auto}
.section-head .lede{margin-top:var(--s-4)}
.section-head--row{max-width:none;display:flex;flex-wrap:wrap;align-items:end;justify-content:space-between;gap:var(--s-4)}
.section-head--row>div{max-width:var(--max-prose)}
.section-head--row .actions{margin-top:0}
.section-head--sub{margin:var(--s-7) 0 var(--s-4);max-width:none}
.section-head--sub h3{margin:0}
.prose+h3,.grid+h3,.town-grid+h3,.lake-grid+h3{margin-top:var(--s-7)}
h3+.grid,h3+.town-grid{margin-top:var(--s-4)}
.aside{min-width:0}
@media (min-width:900px){.grid--split>.aside{position:sticky;top:5rem}}

/* --------------------------------------------------------------------------
   4. Components
   -------------------------------------------------------------------------- */

/* 4.1 buttons */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:2.75rem;padding:.7rem 1.25rem;border-radius:var(--r-sm);border:1px solid transparent;font:600 var(--fs-2)/1 var(--font-body);letter-spacing:.01em;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background var(--t-fast) var(--ease),color var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),transform var(--t-base) var(--ease)}
.btn svg{width:1.125rem;height:1.125rem;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.btn:active{transform:translateY(1px)}
.btn--primary{background:var(--red);color:var(--white);border-color:var(--red)}
.btn--primary:hover{background:var(--red-deep);border-color:var(--red-deep);color:var(--white)}
.btn--secondary{background:var(--navy);color:var(--white);border-color:var(--navy)}
.btn--secondary:hover{background:#1B2F48;border-color:#1B2F48;color:var(--white)}
.btn--ghost{background:transparent;color:var(--navy);border-color:var(--navy)}
.btn--ghost:hover{background:var(--navy);color:var(--white)}
.band--navy .btn--ghost,.hero-home .btn--ghost,.cta-band .btn--ghost,.footer .btn--ghost,.band--photo .btn--ghost,.hero-page--navy .btn--ghost{color:var(--white);border-color:rgba(255,255,255,.6)}
.band--navy .btn--ghost:hover,.hero-home .btn--ghost:hover,.cta-band .btn--ghost:hover,.footer .btn--ghost:hover,.band--photo .btn--ghost:hover,.hero-page--navy .btn--ghost:hover{background:var(--white);color:var(--navy);border-color:var(--white)}
.cta-band--red .btn--primary{background:var(--white);color:var(--red);border-color:var(--white)}
.cta-band--red .btn--primary:hover{background:var(--paper);color:var(--red-deep)}
.btn--lg{min-height:3.25rem;padding:.95rem 1.75rem;font-size:var(--fs-3)}
.btn--block{display:flex;width:100%}
.btn[disabled],.btn:disabled{opacity:.55;cursor:progress}
.actions{display:flex;flex-wrap:wrap;gap:var(--s-3);margin-top:var(--s-6)}
.actions--center{justify-content:center}
@media (max-width:399px){.btn{white-space:normal;text-align:center}}

/* 4.2 badge / pill */
.badge{display:inline-flex;align-items:center;min-height:1.5rem;padding:.2rem .55rem;border-radius:var(--r-sm);font:600 var(--fs-1)/1 var(--font-body);letter-spacing:.02em;white-space:nowrap}
.badge--red{background:var(--red);color:var(--white)}
.badge--navy{background:var(--navy);color:var(--white)}
.badge--brass{background:transparent;color:var(--brass-ink);border:var(--hair-brass)}
.badge--cream{background:var(--cream);color:var(--ink);border:var(--hair)}
.badge--pending{background:var(--red);color:var(--white);text-transform:uppercase;letter-spacing:.08em}
.listing-card--pending .listing-card__img{filter:saturate(.55) brightness(.8)}
.listing-card--pending .listing-card__media::after{content:"Pending";position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-10deg);z-index:var(--z-raised);padding:.45rem 1.4rem;border:3px solid var(--white);border-radius:var(--r-md);background:rgba(200,16,46,.94);color:var(--white);font:800 clamp(1.25rem,2.6vw,1.75rem)/1 var(--font-body);letter-spacing:.16em;text-transform:uppercase;box-shadow:0 8px 24px rgba(0,0,0,.35);pointer-events:none}
.listing-card--pending .listing-card__price::after{content:" · Pending";font:600 var(--fs-1)/1 var(--font-body);color:var(--red);letter-spacing:.04em;vertical-align:middle}
.pill{display:inline-flex;align-items:center;min-height:2.25rem;padding:.4rem .9rem;border-radius:var(--r-pill);border:var(--hair);background:var(--white);color:var(--ink);font:500 var(--fs-1)/1 var(--font-body);text-decoration:none;cursor:pointer;transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.pill:hover{border-color:var(--navy);color:var(--navy)}
.pill.is-active,.pill[aria-current="page"],.pill[aria-current="true"],.pill[aria-pressed="true"]{background:var(--navy);border-color:var(--navy);color:var(--white)}
button.pill{appearance:none;-webkit-appearance:none}
.pill:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.search-note{margin:var(--s-3) 0 0;font-weight:600;color:var(--navy)}
.search-note[hidden]{display:none}
.search-links{list-style:none;margin:var(--s-3) 0 0;padding:0}
.band--cream .pill{background:var(--paper)}
.band--cream .pill.is-active{background:var(--navy)}
.band--navy .pill{background:transparent;border-color:rgba(255,255,255,.35);color:var(--on-navy)}
.band--navy .pill:hover{border-color:var(--white);color:var(--white)}
.band--navy .pill.is-active{background:var(--white);border-color:var(--white);color:var(--navy)}

/* 4.3 notice */
.notice{padding:var(--s-4) var(--s-5);border:var(--hair);border-left:3px solid var(--brass);border-radius:var(--r-md);background:var(--white);font-size:var(--fs-1);color:var(--muted)}
.notice--info{border-left-color:var(--navy);color:var(--ink)}
.notice--warn{border-left-color:var(--red)}
.notice--mls{border-left-color:var(--line);background:transparent;padding-inline:0;border-top:0;border-right:0;border-bottom:0;border-radius:0}
.band--cream .notice{background:var(--paper)}
.band--cream .notice--mls{background:transparent}
.notice p+p{margin-top:var(--s-2)}

/* 4.4 table */
.table-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch;border:var(--hair);border-radius:var(--r-md);background:var(--white);max-width:100%}
.band--cream .table-wrap{background:var(--paper)}
.table{width:100%;border-collapse:collapse;font-size:var(--fs-1)}
.table__caption{text-align:left;padding:var(--s-4);font:500 var(--fs-2)/1.3 var(--font-display);color:var(--navy);caption-side:top}
p.table__caption{padding:0;margin:0 0 var(--s-3);max-width:var(--max-prose)}
.table-wrap{position:relative}
.table-wrap:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.table-wrap::after{content:"";position:absolute;top:0;right:0;bottom:0;width:2.5rem;pointer-events:none;background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.9));border-radius:0 var(--r-md) var(--r-md) 0;opacity:0}
@media (max-width:639px){.table-wrap::after{opacity:1}.band--cream .table-wrap::after{background:linear-gradient(90deg,rgba(248,245,239,0),rgba(248,245,239,.95))}}
@media (max-width:640px){
  .table--stack thead{display:none}
  .table--stack tr{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-1) var(--s-3);padding:var(--s-3) var(--s-4);border-top:var(--hair)}
  .table--stack tr:first-child{border-top:0}
  .table--stack td{display:block;border-top:0;padding:0;white-space:normal}
  .table--stack td::before{content:attr(data-label);display:block;font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--brass-ink)}
  .table--stack td:first-child{grid-column:1/-1;font-weight:600;color:var(--navy)}
  .table--stack .td--n{white-space:normal}
  .table-wrap:has(.table--stack)::after{display:none}
  .table--qa tr{grid-template-columns:1fr}
}
.table th,.table td{text-align:left;padding:.7rem var(--s-4);border-top:var(--hair);vertical-align:top}
.table thead th{border-top:0;background:var(--cream);font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.table tbody th{font-weight:600;color:var(--navy)}
.table .td--n{font-variant-numeric:tabular-nums;white-space:nowrap}
.table tr.is-active td{background:var(--red-tint)}
.table tr.is-sold td{color:var(--muted)}
.table a{color:var(--navy)}
.table a:hover{color:var(--red)}

/* 4.5 image treatments */
.img{display:block;width:100%;height:auto;object-fit:cover;border-radius:var(--r-md);background:var(--cream)}
.img--4x3{aspect-ratio:4/3}
.img--3x2{aspect-ratio:3/2}
.img--16x9{aspect-ratio:16/9}
.img--square{aspect-ratio:1}
.img--portrait{aspect-ratio:4/5}
.img--wide{aspect-ratio:21/9}
.frame{position:relative;padding:.375rem;border:var(--hair-brass);border-radius:calc(var(--r-md) + .375rem);background:transparent}
.frame .img{border-radius:var(--r-md)}
.frame--offset{isolation:isolate}
.frame--offset::after{content:"";position:absolute;inset:.75rem -.75rem -.75rem .75rem;border:var(--hair-brass);border-radius:var(--r-md);z-index:-1}
@media (max-width:639px){.frame--offset{margin-right:.75rem}}

/* 4.6 site header */
.skip{position:absolute;left:var(--s-4);top:-100%;z-index:var(--z-skip);padding:.6rem 1rem;background:var(--navy);color:var(--white);border-radius:var(--r-sm);font-weight:600;text-decoration:none}
.skip:focus{top:var(--s-4)}
.header{position:sticky;top:0;z-index:var(--z-header);background:var(--paper);box-shadow:var(--sh-header);transition:box-shadow var(--t-base) var(--ease)}
.header.is-scrolled{box-shadow:var(--sh-header),var(--sh-header-scrolled)}
.header__bar{display:flex;align-items:center;gap:var(--s-4);min-height:4rem}
.header__logo{display:block;margin-right:auto;flex:0 0 auto}
.header__logo picture,.footer__logo picture{display:block}
.header__logo img{display:block;height:2.75rem;width:auto}
.header__actions{display:flex;align-items:center;gap:var(--s-3)}
.header__phone{display:none;font:600 var(--fs-1)/1 var(--font-body);color:var(--navy);text-decoration:none;white-space:nowrap}
.header__phone:hover{color:var(--red)}
.header__cta{min-height:2.5rem;padding:.55rem .9rem;font-size:var(--fs-1)}
.header__cta-label{display:none}
.header__toggle{display:inline-grid;place-items:center;width:2.75rem;height:2.75rem;border:var(--hair);border-radius:var(--r-sm);background:var(--white);cursor:pointer}
.header__burger,.header__burger::before,.header__burger::after{display:block;width:1.25rem;height:2px;background:var(--navy);border-radius:1px;transition:transform var(--t-base) var(--ease),opacity var(--t-fast),background var(--t-fast)}
.header__burger{position:relative}
.header__burger::before,.header__burger::after{content:"";position:absolute;left:0}
.header__burger::before{top:-6px}
.header__burger::after{top:6px}
.header.is-open .header__burger{background:transparent}
.header.is-open .header__burger::before{transform:translateY(6px) rotate(45deg)}
.header.is-open .header__burger::after{transform:translateY(-6px) rotate(-45deg)}

/* nav: off-canvas panel below md, inline row at md+ */
.nav{position:fixed;inset:4rem 0 0 0;z-index:var(--z-nav);background:var(--paper);padding:var(--s-5) var(--gutter) calc(var(--s-6) + 4.5rem);overflow-y:auto;transform:translateX(100%);visibility:hidden;transition:transform var(--t-slow) var(--ease),visibility 0s linear var(--t-slow)}
.header.is-open .nav{transform:none;visibility:visible;transition:transform var(--t-slow) var(--ease)}
.nav__list{list-style:none;margin:0;padding:0}
.nav__item+.nav__item{border-top:var(--hair)}
.nav__link{display:block;padding:.9rem 0;font:500 var(--fs-4)/1.2 var(--font-body);color:var(--navy);text-decoration:none}
.nav__link:hover{color:var(--red)}
.nav__link[aria-current="page"]{color:var(--red)}
.nav__foot{margin-top:var(--s-6);display:grid;gap:var(--s-3)}
.nav__nap{font-size:var(--fs-1);color:var(--muted)}
@media (min-width:900px){
  .nav{position:static;inset:auto;transform:none;visibility:visible;background:transparent;padding:0;overflow:visible;transition:none}
  .nav__list{display:flex;gap:var(--s-5)}
  .nav__item+.nav__item{border-top:0}
  .nav__link{padding:.5rem 0;font-size:var(--fs-1);font-weight:500;position:relative}
  .nav__link:hover{color:var(--navy)}
  .nav__link::after{content:"";position:absolute;left:0;right:0;bottom:0;height:2px;background:var(--red);transform:scaleX(0);transform-origin:left;transition:transform var(--t-base) var(--ease)}
  .nav__link:hover::after,.nav__link[aria-current="page"]::after{transform:scaleX(1)}
  .nav__link[aria-current="page"]{color:var(--navy)}
  .nav__foot{display:none}
  .header__toggle{display:none}
  .header__cta-label{display:inline}
}
@media (min-width:1200px){
  .nav__list{gap:var(--s-6)}
  .header__phone{display:inline}
}
body.nav-open{overflow:hidden}

/* 4.7 footer */
.footer{background:var(--navy);color:var(--on-navy);padding:var(--s-8) 0 calc(var(--s-6) + 4.5rem);font-size:var(--fs-1);border-top:3px solid var(--brass)}
.footer a{color:var(--on-navy);text-decoration:none}
.footer a:hover{color:var(--white);text-decoration:underline}
.footer__grid{display:grid;grid-template-columns:1fr;gap:var(--s-6)}
@media (min-width:640px){.footer__grid{grid-template-columns:1fr 1fr}.footer__brand{grid-column:1/-1}}
@media (min-width:900px){.footer__grid{grid-template-columns:1.6fr 1fr 1fr 1fr 1fr;gap:var(--s-6)}.footer__brand{grid-column:auto}}
.footer__logo{display:inline-block}
.footer__logo img{display:block;height:2.25rem;width:auto;filter:brightness(0) invert(1)}
.footer__tagline{margin-top:var(--s-3);font:500 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--brass)}
.nap{font-style:normal;margin-top:var(--s-4);line-height:1.7}
.nap__name{color:var(--white);font-weight:600}
.nap__phone{color:var(--white) !important;font-weight:600}
.socials{list-style:none;margin:var(--s-4) 0 0;padding:0;display:flex;gap:var(--s-2)}
.socials__link{display:inline-grid;place-items:center;width:2.5rem;height:2.5rem;border:1px solid rgba(255,255,255,.25);border-radius:50%;color:var(--white);transition:background var(--t-fast),border-color var(--t-fast)}
.socials__link svg{width:1.125rem;height:1.125rem;fill:currentColor}
.socials__link:hover{background:var(--red);border-color:var(--red);text-decoration:none}
.footer__heading{font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--brass);margin:0 0 var(--s-3)}
.footer__list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-2)}
.footer__list a{display:inline-block;padding-block:.35rem}
.footer__list--2col{grid-template-columns:1fr 1fr}
@media (max-width:639px){.footer__col--towns .footer__list{grid-template-columns:1fr 1fr;column-gap:var(--s-4)}}
.footer__marks{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4) var(--s-5);margin-top:var(--s-7);padding-top:var(--s-5);border-top:1px solid rgba(255,255,255,.12)}
.footer__marks img{height:2.25rem;width:auto;filter:brightness(0) invert(1);opacity:.85}
.footer__license{color:var(--on-navy-muted);margin-left:auto}
.footer__disclaimer{margin-top:var(--s-4);color:var(--on-navy-muted);font-size:.8125rem;max-width:80ch}
.footer__base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:var(--s-2) var(--s-4);margin-top:var(--s-5);padding-top:var(--s-4);border-top:1px solid rgba(255,255,255,.12);color:var(--on-navy-muted);font-size:.8125rem}
.footer__credit{color:var(--brass) !important;font-weight:600}
@media (min-width:900px){.footer{padding-bottom:var(--s-6)}}

/* 4.8 hero (home) */
.hero-home{position:relative;display:grid;align-items:end;min-height:34rem;background:var(--navy);color:var(--on-navy);overflow:hidden;isolation:isolate}
@media (min-width:900px){.hero-home{min-height:min(88vh,52rem);align-items:center}}
.hero-home__media,.hero-home__overlay{position:absolute;inset:0}
.hero-home__media{z-index:-2}
.hero-home__media picture{display:block;width:100%;height:100%}
.hero-home__video,.hero-home__img{width:100%;height:100%;object-fit:cover;object-position:center;display:block}
.hero-home__caption{position:absolute;right:var(--s-4);bottom:var(--s-4);z-index:1;font:500 var(--fs-1)/1.2 var(--font-body);letter-spacing:.04em;color:rgba(255,255,255,.78);text-decoration:none;padding:.4rem .7rem;border:1px solid rgba(255,255,255,.3);border-radius:999px;background:rgba(14,27,43,.35);transition:color var(--t-base) var(--ease),border-color var(--t-base) var(--ease)}
.hero-home__caption:hover,.hero-home__caption:focus-visible{color:#fff;border-color:rgba(255,255,255,.7)}
@media (max-width:639px){.hero-home__caption{display:none}}
.hero-home__overlay{z-index:-1;background:linear-gradient(180deg,rgba(14,27,43,.35) 0%,rgba(14,27,43,.55) 55%,rgba(14,27,43,.88) 100%)}
@media (min-width:900px){.hero-home__overlay{background:linear-gradient(90deg,rgba(14,27,43,.82) 0%,rgba(14,27,43,.55) 55%,rgba(155,12,34,.25) 100%)}}
.hero-home__content{position:relative;padding-block:var(--s-8) var(--s-7)}
@media (min-width:900px){.hero-home__content{padding-block:var(--s-9)}}
.hero-home__title{font-size:var(--fs-8);color:var(--white);max-width:16ch}
.hero-home__lede{margin-top:var(--s-4);max-width:52ch}
@media (max-width:639px){.hero-home__title{max-width:14ch}.hero-home__lede{max-width:38ch;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}.hero-home__content{padding-block:var(--s-6) var(--s-6)}}
.hero-home .qsearch{margin-top:var(--s-6)}
.hero-home__proof{margin-top:var(--s-4);font:500 var(--fs-1)/1.5 var(--font-body);color:var(--on-navy-muted)}
.hero-home__proof a{color:var(--white)}
.hero-home .actions{margin-top:var(--s-6)}
/* Phones: the quick search's filter group ships open (visitors without JS see every field) and
   js/site.js folds it once it runs, which can be after the first paint and shifted the hero.
   Where scripts run, hide it from the first paint until site.js marks it. */
@media (max-width:639px) and (scripting:enabled){
  .hero-home .qsearch__more:not(.qsearch__more--js) .qsearch__more-fields{display:none}
  .hero-home .qsearch__more:not(.qsearch__more--js) .qsearch__more-toggle::after{content:" +"}
}

/* 4.9 hero (page) */
.hero-page{background:var(--cream);padding-block:var(--s-5) var(--s-7);border-bottom:var(--hair)}
@media (min-width:900px){.hero-page{padding-block:var(--s-5) var(--s-8)}}
.hero-page__grid{display:grid;gap:var(--s-6);margin-top:var(--s-5)}
@media (min-width:900px){.hero-page--media .hero-page__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:var(--s-8)}}
.hero-page__text .lede{margin-top:var(--s-4)}
.hero-page__text .actions{margin-top:var(--s-5)}
.hero-page__text .qsearch{margin-top:var(--s-5);max-width:none}
.hero-page__media{min-width:0}
.hero-page__media .frame{max-width:22rem}
.hero-page__map{display:none}
@media (min-width:900px){.hero-page__map{display:block}.hero-page--map .hero-page__grid{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:var(--s-8)}}
.hero-page__map .areamap{max-height:none;width:100%;border:var(--hair-brass);border-radius:var(--r-md);background:var(--paper);padding:var(--s-3)}
.hero-page--navy .hero-page__map .areamap{background:var(--navy-soft);border-color:rgba(255,255,255,.2)}
.hero-page--navy{background:var(--navy);color:var(--on-navy);border-bottom:0}
.hero-page--navy h1{color:var(--white)}
.hero-page--navy .lede{color:var(--on-navy)}
.hero-page--navy .eyebrow{color:var(--brass)}
.hero-page--navy .crumbs a,.hero-page--navy .crumbs{color:var(--on-navy-muted)}
.hero-page--navy .crumbs [aria-current="page"]{color:var(--white)}
.hero-page--navy .crumbs a:hover{color:var(--white)}
.hero-page--navy .meta,.hero-page--navy .article__meta{color:var(--on-navy-muted)}

/* 4.10 quick-search form */
.qsearch{display:grid;gap:var(--s-2);padding:var(--s-3);background:var(--white);border:var(--hair);border-radius:var(--r-md);max-width:64rem}
.hero-home .qsearch{background:rgba(248,245,239,.96)}
.band--cream .qsearch{background:var(--white)}
.qsearch__field{display:grid;gap:.2rem;min-width:0}
.qsearch__label{font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);padding-left:.75rem}
.qsearch__input,.qsearch__select{width:100%;min-height:2.75rem;padding:.55rem .75rem;border:1px solid transparent;border-radius:var(--r-sm);background:var(--cream);color:var(--ink);font:500 var(--fs-2)/1.2 var(--font-body)}
.qsearch__select{appearance:none;-webkit-appearance:none;padding-right:2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E1B2B' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .6rem center;background-size:1rem}
.qsearch__input::-webkit-search-decoration,.qsearch__input::-webkit-search-cancel-button{-webkit-appearance:none}
.qsearch__input:focus,.qsearch__select:focus{outline:none;border-color:var(--navy);background-color:var(--white)}
.qsearch__submit{min-height:2.75rem;align-self:end}
.qsearch__more{display:contents}
.qsearch__more-fields{display:contents}
.qsearch__more-toggle{display:none;list-style:none;cursor:pointer;font:600 var(--fs-1)/1.2 var(--font-body);color:var(--navy);padding:.6rem .75rem;border-radius:var(--r-sm);background:var(--cream)}
.qsearch__more-toggle::-webkit-details-marker{display:none}
.qsearch__more-toggle::after{content:" +";color:var(--brass-ink)}
.qsearch__more[open] .qsearch__more-toggle::after{content:" \2212"}
.qsearch__note{grid-column:1/-1;margin:0;padding-left:.75rem;color:var(--muted)}
@media (max-width:639px){
  .qsearch__more{display:block}
  .qsearch__more-toggle{display:block}
  .qsearch__more-fields{display:grid;gap:var(--s-2);margin-top:var(--s-2)}
}
@media (min-width:640px){.qsearch{grid-template-columns:1fr 1fr}.qsearch__field--grow{grid-column:1/-1}.qsearch__submit{grid-column:1/-1}}
@media (min-width:640px) and (max-width:899px){.qsearch__more{display:block;grid-column:1/-1}.qsearch__more-fields{display:grid;grid-template-columns:1fr 1fr;gap:var(--s-2)}}
@media (min-width:900px){.qsearch{grid-template-columns:minmax(12rem,1.6fr) minmax(0,3.4fr) auto;align-items:end;gap:var(--s-2)}.qsearch__field--grow,.qsearch__submit{grid-column:auto}.qsearch__more{display:block;min-width:0}.qsearch__more-toggle{display:none}.qsearch__more-fields{display:grid;grid-template-columns:1fr 1fr .8fr .8fr;gap:var(--s-2);align-items:end;margin-top:0}}

/* 4.11 lead form (all variants) */
.lead{display:grid;gap:var(--s-4);padding:var(--s-5);background:var(--white);border:var(--hair);border-top:3px solid var(--red);border-radius:var(--r-md)}
@media (min-width:640px){.lead{padding:var(--s-6)}}
.band--cream .lead{background:var(--paper)}
.band--navy .lead{background:var(--paper);color:var(--ink)}
.band--navy .lead h3{color:var(--navy)}
.band--navy .lead a{color:var(--red)}
.band--navy .lead .eyebrow{color:var(--brass-ink)}
.lead__head{display:grid;gap:var(--s-2)}
.lead__head .eyebrow{margin-bottom:0}
.lead__title{font-size:var(--fs-5)}
.lead__promise{font:500 var(--fs-1)/1.5 var(--font-body);color:var(--brass-ink)}
.lead__row{display:grid;gap:var(--s-4)}
@media (min-width:640px){.lead__row--2{grid-template-columns:1fr 1fr}}
.field{display:grid;gap:.3rem;min-width:0;align-content:start}   /* a field beside a taller one (phone + SMS line) keeps its input at input height */
.field__label{font:600 var(--fs-1)/1.3 var(--font-body);color:var(--navy)}
.field__opt{font-weight:400;color:var(--muted)}
.field__input{width:100%;min-height:2.75rem;padding:.6rem .8rem;border:1px solid var(--line);border-radius:var(--r-sm);background:var(--white);color:var(--ink);font:400 var(--fs-2)/1.4 var(--font-body)}
select.field__input{appearance:none;-webkit-appearance:none;padding-right:2.2rem;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230E1B2B' stroke-width='1.75' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .7rem center;background-size:1rem}
.band--cream .field__input,.band--navy .field__input{background-color:var(--white)}
.field__input:focus{outline:2px solid var(--navy);outline-offset:1px;border-color:var(--navy)}
.field__input[aria-invalid="true"]{border-color:var(--err);outline-color:var(--err)}
.field__error{font:500 .8125rem/1.3 var(--font-body);color:var(--err)}
textarea.field__input{min-height:6rem;resize:vertical}
form.lead{position:relative}
.hp{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.fmsg{display:none;margin:0;font:600 var(--fs-1)/1.4 var(--font-body)}
.fmsg.ok{display:block;color:var(--ok)}
.fmsg.err{display:block;color:var(--err)}
.fmsg.info{display:block;color:var(--muted)}
.fmsg a{color:inherit}
.lead__fine{font-size:var(--fs-1);color:var(--muted)}
.lead--inline{gap:var(--s-3);padding:var(--s-4) var(--s-5);border-top-width:2px}
.lead--inline .lead__title{font-size:var(--fs-4)}
.lead__row--inline{align-items:end}
@media (min-width:640px){.lead__row--inline{grid-template-columns:1fr 1fr auto}}
.lead__row--inline .btn{min-height:2.75rem}
/* guide bar (item 13.1): name + email + optional mobile + button */
@media (min-width:640px){.lead__row--guide{grid-template-columns:1fr 1fr}.lead__row--guide .btn{grid-column:1/-1;justify-self:start}}
@media (min-width:900px){.lead__row--guide{grid-template-columns:1fr 1fr 1fr auto}.lead__row--guide .btn{grid-column:auto;justify-self:auto}}
.lead--inline .lead__done .actions{margin:0}
.lead__step{border:0;padding:0;margin:0;min-width:0;display:grid;gap:var(--s-4)}
.lead__step[hidden]{display:none}
.lead__legend{padding:0;font:500 var(--fs-4)/1.3 var(--font-display);color:var(--navy);margin-bottom:var(--s-2)}
.lead__nav{display:flex;gap:var(--s-3);justify-content:flex-end;flex-wrap:wrap}
.steps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-2);counter-reset:none}
.steps__item{display:flex;align-items:center;gap:var(--s-2);font:500 var(--fs-1)/1.2 var(--font-body);color:var(--muted)}
.steps__num{display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;border-radius:50%;border:1px solid var(--line);background:var(--cream);font-weight:600;font-size:.8125rem;flex:0 0 auto}
.steps__item.is-current{color:var(--navy)}
.steps__item.is-current .steps__num{background:var(--red);border-color:var(--red);color:var(--white)}
.steps__item.is-done .steps__num{background:var(--navy);border-color:var(--navy);color:var(--white)}
.steps__bar{height:3px;background:var(--line);border-radius:2px;overflow:hidden}
.steps__fill{display:block;height:100%;width:33.333%;background:var(--red);transition:width var(--t-slow) var(--ease)}
@media (max-width:399px){.steps__name{font-size:.8125rem}}
.steps--2{grid-template-columns:repeat(2,1fr)}
.steps--2 .steps__fill{width:50%}
.steps--4{grid-template-columns:repeat(4,1fr)}
.steps--4 .steps__fill{width:25%}
@media (max-width:479px){.steps--4 .steps__name{display:none}.steps--4{grid-template-columns:repeat(4,auto);justify-content:start}}
/* progressive enhancement: js/lead.js adds html.js; without it the funnel is one long form with one submit */
.js-only{display:none}
html.js .js-only{display:initial}
html.js .steps.js-only{display:grid}
html.js .steps__bar.js-only{display:block}
html.js .btn.js-only{display:inline-flex}
.lead__nav .btn{min-height:2.75rem}
.lead__optional{margin:0;font:600 .75rem/1.3 var(--font-body);letter-spacing:.1em;text-transform:uppercase;color:var(--brass-ink)}
.lead__micro{margin:0;font-size:.8125rem;line-height:1.45;color:var(--muted)}
.lead__reveal{margin:0}
.field__hint{margin:0;font-size:.8125rem;line-height:1.45;color:var(--muted)}
.field[hidden],.chips[hidden],.lead__reveal[hidden],.lead__done[hidden]{display:none}
.field__error{margin:0}
.lead__done{display:grid;gap:var(--s-3);padding:var(--s-4) 0}
.lead__done-title{margin:0;font:500 var(--fs-4)/1.3 var(--font-display);color:var(--ok)}
/* 4.11a SMS consent (item 5a) and the separate marketing box */
.sms-consent{margin:.35rem 0 0;font-size:.8125rem;line-height:1.45;color:var(--muted)}
.sms-consent a{color:var(--navy)}
.consent{display:grid;grid-template-columns:auto 1fr;gap:var(--s-3);align-items:start;font-size:var(--fs-1);line-height:1.45;color:var(--ink)}
.consent__box{width:1.25rem;height:1.25rem;margin:.1rem 0 0;accent-color:var(--navy);flex:none}
.consent__text a{color:var(--navy)}
/* 4.11b chip groups: a fieldset/legend around chip-styled radios or checkboxes (44px targets) */
.chips{border:0;padding:0;margin:0;min-width:0;display:grid;gap:var(--s-2)}
.chips__legend{padding:0;font:600 var(--fs-1)/1.3 var(--font-body);color:var(--navy);margin-bottom:.1rem}
.chips__list{display:flex;flex-wrap:wrap;gap:var(--s-2)}
.chip{position:relative;display:inline-flex}
.chip__input{position:absolute;width:1px;height:1px;margin:-1px;padding:0;border:0;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.chip__label{display:inline-flex;align-items:center;min-height:2.75rem;padding:.55rem .95rem;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--white);color:var(--ink);font:500 var(--fs-1)/1.2 var(--font-body);cursor:pointer;user-select:none;-webkit-user-select:none;transition:background var(--t-fast) var(--ease),border-color var(--t-fast) var(--ease),color var(--t-fast) var(--ease)}
.chip__label:hover{border-color:var(--navy);color:var(--navy)}
.chip__input:checked+.chip__label{background:var(--navy);border-color:var(--navy);color:var(--white)}
.chip__input:focus-visible+.chip__label{outline:2px solid var(--navy);outline-offset:2px}
.band--cream .chip__label{background:var(--paper)}
.band--cream .chip__input:checked+.chip__label{background:var(--navy)}
.chips--alert{padding:var(--s-4);border:var(--hair);border-radius:var(--r-md);background:var(--cream)}
.chips--alert>.chips__legend{font-size:var(--fs-2);float:left;width:100%;margin-bottom:var(--s-3)}
.chips--sub{margin-top:var(--s-3)}
/* 4.11c showing dialog (item 10): modal, 16px inputs so iOS does not zoom */
.showing-dialog{border:0;padding:0;margin:auto;width:min(34rem,calc(100vw - 2rem));max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);background:transparent;color:var(--ink);overflow:visible}
.showing-dialog::backdrop{background:rgba(14,27,43,.62)}
.showing-dialog .lead{max-height:calc(100vh - 2rem);max-height:calc(100dvh - 2rem);overflow:auto;padding-top:var(--s-6)}
.showing-dialog .field__input{font-size:1rem}
.dialog__close{position:absolute;top:var(--s-2);right:var(--s-2);display:inline-grid;place-items:center;width:2.75rem;height:2.75rem;border:0;border-radius:50%;background:transparent;color:var(--navy);font:400 1.75rem/1 var(--font-body);cursor:pointer}
.dialog__close:hover{background:var(--cream)}
.dialog__close:focus-visible{outline:2px solid var(--navy);outline-offset:2px}
.listing-chip{display:inline-flex;align-items:center;gap:.5rem;margin:0;padding:.45rem .8rem;border:1px solid var(--line);border-radius:var(--r-pill);background:var(--cream);font:500 .8125rem/1.3 var(--font-body);color:var(--navy)}
.listing-chip:empty{display:none}
body.dialog-open{overflow:hidden}
@media (max-width:639px){.showing-dialog{width:100vw;max-width:100vw;max-height:100vh;max-height:100dvh;margin:0;height:100vh;height:100dvh}.showing-dialog .lead{max-height:100vh;max-height:100dvh;border-radius:0;min-height:100vh;min-height:100dvh}}

/* 4.12 stat counters */
.stats{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr 1fr;gap:var(--s-6) var(--s-5)}
@media (min-width:900px){.stats{grid-template-columns:repeat(4,1fr)}}
.stat{text-align:center;padding-block:var(--s-2);border-top:var(--hair-brass)}
.stat__value{display:inline-flex;align-items:baseline;gap:.15em;font:500 var(--fs-stat)/1 var(--font-display);color:var(--white);letter-spacing:-.02em;font-variant-numeric:tabular-nums;font-variation-settings:"opsz" 144,"SOFT" 30,"WONK" 0}
.stat__icon{width:.55em;height:.55em;fill:var(--brass);align-self:center}
.stat__label{display:block;margin-top:var(--s-2);font:500 var(--fs-1)/1.4 var(--font-body);color:var(--on-navy-muted)}
.stat__label a{color:var(--on-navy)}
.stats__source{margin-top:var(--s-6);text-align:center;color:var(--on-navy-muted)}
.stats__source a{color:var(--on-navy)}
.stats--on-light .stat__value{color:var(--navy)}
.stats--on-light .stat__label{color:var(--muted)}
.stats--on-light .stat__label a{color:var(--navy)}
.stats--on-light+.stats__source{color:var(--muted)}
/* Seller results (sell, home value, sold): listing-side record from data/facts.py, a panel
   beside the value form (two figures per row) or one row of four on /sold.html */
.results{display:grid;gap:var(--s-4);min-width:0;padding:var(--s-5);background:var(--white);border:var(--hair);border-top:3px solid var(--brass);border-radius:var(--r-md)}
.band--cream .results{background:var(--paper)}
.results>*{margin:0}
.results h2{font-size:var(--fs-5)}
.results .stats{gap:var(--s-5) var(--s-4)}
.results .stat{text-align:left;min-width:0}
.results .stat__value{font-size:clamp(1.5rem,1.2rem + 1.4vw,2.25rem)}
@media (min-width:900px){.stats--pair{grid-template-columns:1fr 1fr}}
.results .sold-disclaimer{margin-top:0}
.seller-start{align-items:start}
.seller-start .section-head{margin-bottom:0}
.onlake .section-head{margin-bottom:var(--s-5)}
@media (min-width:900px){.onlake .sold-card{flex-direction:row}.onlake .sold-card__media{flex:0 0 55%;aspect-ratio:auto;min-height:15rem}.onlake .sold-card__body{align-content:center}}

/* 4.13 listing card · 4.14 sold card (identical rules) */
.listing-card,.sold-card{display:flex;flex-direction:column;background:var(--white);border:var(--hair);border-radius:var(--r-md);overflow:hidden;transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease)}
.band--cream .listing-card,.band--cream .sold-card{background:var(--paper)}
.listing-card:hover,.listing-card:focus-within,.sold-card:hover,.sold-card:focus-within{box-shadow:var(--sh-card);transform:translateY(-2px)}
.listing-card__media,.sold-card__media{position:relative;display:block;aspect-ratio:4/3;background:var(--cream);overflow:hidden}
.listing-card__img,.sold-card__img{width:100%;height:100%;object-fit:cover;display:block}
.listing-card__badges{position:absolute;left:var(--s-3);top:var(--s-3);display:flex;flex-wrap:wrap;gap:var(--s-2);z-index:var(--z-raised)}
.listing-card__body,.sold-card__body{display:grid;gap:var(--s-1);padding:var(--s-4) var(--s-5) var(--s-5);align-content:start}
.listing-card__price,.sold-card__price{font:500 var(--fs-4)/1.2 var(--font-display);color:var(--navy);letter-spacing:-.01em}
.listing-card__title,.sold-card__title{font-size:var(--fs-3);font-family:var(--font-body);font-weight:600;letter-spacing:0;line-height:1.3;font-variation-settings:normal}
.listing-card__title a{color:var(--navy);text-decoration:none}
.listing-card__title a:hover{color:var(--red)}
.listing-card__place,.sold-card__place{color:var(--muted);font-size:var(--fs-1)}
.listing-card__facts,.sold-card__facts{list-style:none;margin:var(--s-2) 0 0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s-2) var(--s-3);font:500 var(--fs-1)/1.2 var(--font-body);color:var(--ink)}
.listing-card__facts li+li::before,.sold-card__facts li+li::before{content:"·";margin-right:var(--s-3);color:var(--brass)}
.listing-card__meta,.sold-card__meta{margin-top:var(--s-2);font-size:.8125rem;color:var(--muted)}
.listing-card__actions{display:flex;gap:var(--s-2);margin-top:var(--s-3);flex-wrap:wrap}
.listing-card__actions .btn{flex:1 1 auto;min-height:2.5rem;padding:.5rem .75rem;font-size:var(--fs-1)}
.sold-card__img{filter:saturate(.85)}
.sold-card__ribbon{position:absolute;left:0;top:var(--s-3);padding:.3rem .8rem .3rem var(--s-4);background:var(--navy);color:var(--white);font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;border-radius:0 var(--r-sm) var(--r-sm) 0;z-index:var(--z-raised)}
.sold-card--text{border-left:3px solid var(--brass)}
.sold-card--group{border-left-color:var(--navy)}
.sold-disclaimer{display:flex;gap:var(--s-4);align-items:flex-start;margin-top:var(--s-5);font-size:.8125rem;line-height:1.5}
.sold-disclaimer__logo{flex:none;width:50px;height:40px;margin-top:2px}
.sold-disclaimer p{margin:0}
.article img[src*="mark-broker-reciprocity"]{width:50px;height:auto;display:inline-block;vertical-align:middle;margin-right:var(--s-3)}
.listing-card[hidden],.lake-card[hidden]{display:none}

/* 4.15 town, lake and county cards (+ intent, step, contact cards share county-card rules) */
.town-card,.county-card,.intent-card,.step-card,.contact-card{display:grid;gap:var(--s-1);padding:var(--s-4) var(--s-5);background:var(--white);border:var(--hair);border-radius:var(--r-md);color:var(--ink);text-decoration:none;transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease),border-color var(--t-fast)}
.band--cream .town-card,.band--cream .county-card,.band--cream .lake-card,.band--cream .intent-card,.band--cream .step-card,.band--cream .contact-card{background:var(--paper)}
.town-card:hover,.county-card:hover,.lake-card:hover{box-shadow:var(--sh-card);transform:translateY(-2px);border-color:var(--brass);color:var(--ink);text-decoration:none}
.town-card__name,.county-card__name,.lake-card__name{font:500 var(--fs-4)/1.2 var(--font-display);color:var(--navy)}
.town-card__meta,.county-card__meta,.lake-card__meta{font-size:var(--fs-1);color:var(--muted)}
.town-card__pop{font:500 .8125rem/1.2 var(--font-body);color:var(--brass-ink)}
.county-card,.intent-card,.step-card,.contact-card{padding:var(--s-5);border-top:3px solid var(--navy);align-content:start}
.county-card__go{margin-top:var(--s-3);font:600 var(--fs-1)/1.2 var(--font-body);color:var(--red)}
.county-card__go::after{content:" \2192"}
.county-card:hover .county-card__go{color:var(--red-deep)}
.lake-card{display:flex;flex-direction:column;background:var(--white);border:var(--hair);border-radius:var(--r-md);overflow:hidden;color:var(--ink);text-decoration:none;transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease),border-color var(--t-fast)}
.lake-card__img{width:100%;aspect-ratio:16/10;object-fit:cover;display:block;background:var(--cream)}
.lake-card__body{display:grid;gap:var(--s-1);padding:var(--s-4) var(--s-5)}
.lake-card--text{border-left:3px solid var(--brass)}
.town-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(13rem,1fr));gap:var(--s-3)}
.town-grid+h3,.town-grid+.town-grid__heading{margin-top:var(--s-7)}
/* intent card (home: Buy / Sell split) */
.intent-card{gap:var(--s-3);padding:var(--s-6)}
.intent-card--buy{border-top-color:var(--navy)}
.intent-card--sell{border-top-color:var(--red)}
.intent-card .eyebrow{margin-bottom:0}
.intent-card h2,.intent-card h3{font-size:var(--fs-5)}
.intent-card p{color:var(--muted)}
.intent-card .actions{margin-top:var(--s-2)}
/* step card (numbered process) */
.step-card{gap:var(--s-2);counter-increment:step}
.step-card__num{display:inline-grid;place-items:center;width:2.25rem;height:2.25rem;border-radius:50%;background:var(--cream);border:var(--hair-brass);font:500 var(--fs-3)/1 var(--font-display);color:var(--navy);margin-bottom:var(--s-2)}
.step-card h3{font-size:var(--fs-4)}
.step-card p{color:var(--muted);font-size:var(--fs-1)}
.step-card--red{border-top-color:var(--red)}
.steps-grid{counter-reset:step}
/* contact card (contact page sidebar) */
.contact-card{gap:var(--s-3);border-top-color:var(--red)}
.contact-card .nap{margin-top:0;color:var(--ink)}
.contact-card .nap__name,.contact-card .nap__phone{color:var(--navy) !important}
.contact-card .socials__link{border-color:var(--line);color:var(--navy)}
.contact-card .socials__link:hover{color:var(--white)}
.contact-card__hours{font-size:var(--fs-1);color:var(--muted)}
.contact-card .actions{margin-top:var(--s-2)}

/* 4.16 testimonial card */
.testimonial{margin:0;display:flex;flex-direction:column;gap:var(--s-4);padding:var(--s-5);background:var(--white);border:var(--hair);border-radius:var(--r-md);position:relative}
.band--cream .testimonial{background:var(--paper)}
.band--navy .testimonial{background:var(--paper);color:var(--ink)}
.testimonial::before{content:"\201C";position:absolute;top:.25rem;left:var(--s-4);font:300 4rem/1 var(--font-display);color:var(--brass);opacity:.6;pointer-events:none}
.testimonial__quote{margin:0;padding-top:var(--s-4);font:300 italic var(--fs-3)/1.55 var(--font-display);color:var(--navy);font-variation-settings:"opsz" 18}
.testimonial__quote p+p{margin-top:var(--s-3)}
.testimonial__by{display:flex;flex-direction:column;gap:.1rem;margin-top:auto;padding-top:var(--s-3);border-top:var(--hair-brass)}
.testimonial__name{font:600 var(--fs-1)/1.3 var(--font-body);color:var(--ink)}
.testimonial__source{font-size:.8125rem;color:var(--muted)}
@media (min-width:900px){.grid--feature .testimonial--long{grid-column:span 2}}
.testimonial__note{margin-top:var(--s-2);font-style:normal;color:var(--muted)}
.testimonial__more{font:300 italic var(--fs-3)/1.55 var(--font-display);color:var(--navy)}
.testimonial__more summary{cursor:pointer;color:var(--red);font:600 var(--fs-1)/1.3 var(--font-body);list-style:none;margin-top:var(--s-2);font-style:normal}
.testimonial__more summary::-webkit-details-marker{display:none}
.testimonial__more[open] summary{display:none}
.testimonial__more p{margin-top:var(--s-3)}

/* 4.17 breadcrumb */
.crumbs{font:500 var(--fs-1)/1.3 var(--font-body);color:var(--muted)}
.crumbs__list{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s-1) var(--s-2)}
.crumbs__item+.crumbs__item::before{content:"/";margin-right:var(--s-2);color:var(--brass)}
.crumbs a{color:var(--muted);text-decoration:none}
.crumbs a:hover{color:var(--navy);text-decoration:underline}
.crumbs [aria-current="page"]{color:var(--navy)}

/* 4.18 sticky mobile action bar */
.actionbar{position:fixed;left:0;right:0;bottom:0;z-index:var(--z-actionbar);display:grid;grid-template-columns:1fr 1fr 1.3fr;gap:var(--s-2);padding:var(--s-2) var(--s-3) calc(var(--s-2) + env(safe-area-inset-bottom));background:var(--paper);border-top:var(--hair);box-shadow:var(--sh-bar)}
.actionbar__btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--s-2);min-height:2.75rem;border-radius:var(--r-pill);background:var(--navy);color:var(--white);font:600 var(--fs-1)/1 var(--font-body);text-decoration:none;white-space:nowrap}
.actionbar__btn svg{width:1.125rem;height:1.125rem;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round;flex:0 0 auto}
.actionbar__btn:hover{color:var(--white);background:#1B2F48}
.actionbar__btn--accent{background:var(--red)}
.actionbar__btn--accent:hover{background:var(--red-deep)}
@media (min-width:900px){.actionbar{display:none}body{padding-bottom:0}}

/* 4.19 area map (12 counties) — supports both the DESIGN.md class names
   (.areamap__shape / .areamap__label) and the countymap.py output
   (path / text inside .areamap__county, plus context and town layers). */
.areamap-wrap{display:grid;gap:var(--s-5)}
.areamap-wrap>*{min-width:0}   /* a wide sold table scrolls inside its .table-wrap instead of widening the page */
@media (min-width:900px){.areamap-wrap{grid-template-columns:minmax(0,3fr) minmax(0,2fr);align-items:center;gap:var(--s-8)}}
.areamap-wrap--stack{grid-template-columns:1fr}
.areamap{width:100%;height:auto;display:block;max-height:34rem;overflow:hidden;font-family:var(--font-body)}  /* hidden: countymap.py context counties run off-canvas on purpose */
.areamap__county{cursor:pointer;outline:none}
.areamap__shape,.areamap__county path{fill:var(--cream);stroke:var(--brass);stroke-width:1.25;stroke-linejoin:round;transition:fill var(--t-fast) var(--ease),stroke var(--t-fast) var(--ease)}
.areamap__label,.areamap__county text{font:600 15px/1 var(--font-body);fill:var(--navy);text-anchor:middle;pointer-events:none;letter-spacing:.04em;text-transform:uppercase}
.areamap--crop .areamap__county text{font-size:13px;letter-spacing:.04em;font-weight:600}
.areamap--crop .areamap__county{cursor:default}
.areamap__marker circle{fill:var(--red);stroke:var(--white);stroke-width:2}
.areamap__marker .areamap__marker-ring{fill:none;stroke:var(--red);stroke-width:1.5;opacity:.45}
.areamap__marker text{font:600 14px/1 var(--font-body);fill:var(--navy);letter-spacing:.02em}
.hero-page--navy .areamap__marker text{fill:var(--white)}
@media (max-width:640px){.areamap__ctxlabel,.areamap__town text{display:none}}
.areamap__county:hover .areamap__shape,.areamap__county:hover path,.areamap__county:focus-visible .areamap__shape,.areamap__county:focus-visible path,.areamap__county.is-hover .areamap__shape,.areamap__county.is-hover path{fill:var(--red-tint);stroke:var(--red);stroke-width:2}
.areamap__county.is-active .areamap__shape,.areamap__county.is-active path{fill:var(--navy);stroke:var(--navy)}
.areamap__county.is-active .areamap__label,.areamap__county.is-active text{fill:var(--white)}
.areamap__county:focus-visible .areamap__shape,.areamap__county:focus-visible path{stroke:var(--navy);stroke-width:3}
.areamap__ctx{fill:var(--paper);stroke:var(--line);stroke-width:1;stroke-linejoin:round}
.areamap__ctxlabel{font:500 10px/1 var(--font-body);fill:#9AA0A8;letter-spacing:.02em;pointer-events:none;text-transform:uppercase}
.areamap__town{pointer-events:none}
.areamap__town circle{fill:var(--navy);stroke:var(--white);stroke-width:1.2}
.areamap__town text{font:500 10px/1 var(--font-body);fill:var(--muted)}
.areamap__office path{fill:var(--red);stroke:var(--white);stroke-width:1.2;stroke-linejoin:round}
.areamap__office text{font:600 11px/1 var(--font-body);fill:var(--navy)}
.areamap__office-ring{fill:none;stroke:var(--red);stroke-width:1.5;opacity:.5}
.areamap__office-dot{fill:var(--red);stroke:var(--white);stroke-width:2}
.band--navy .areamap__shape,.band--navy .areamap__county path{fill:var(--navy-soft);stroke:var(--brass)}
.band--navy .areamap__label,.band--navy .areamap__county text{fill:var(--on-navy)}
.band--navy .areamap__county:hover .areamap__shape,.band--navy .areamap__county:hover path{fill:rgba(200,16,46,.35)}
.band--navy .areamap__ctx{fill:transparent;stroke:rgba(255,255,255,.15)}
.band--navy .areamap__town text,.band--navy .areamap__office text{fill:var(--on-navy)}
.areamap__index{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:var(--s-2)}
.areamap__pin circle{fill:var(--red);stroke:var(--white);stroke-width:1.5}
.areamap__pin text{font:600 10px/1 var(--font-body);fill:var(--white);text-anchor:middle;pointer-events:none}
.areamap--pins .areamap__county{cursor:default}
.areamap--pins .areamap__county:hover path,.areamap--pins .areamap__county:hover .areamap__shape{fill:var(--cream);stroke:var(--brass);stroke-width:1.25}

/* 4.20 CTA bands */
.cta-band{padding-block:var(--band);color:var(--on-navy);position:relative;isolation:isolate}
.cta-band--navy{background:var(--navy)}
.cta-band--red{background:var(--red)}
.cta-band--red .lede{color:rgba(255,255,255,.88)}
.cta-band--photo{background:var(--navy) var(--cta-photo) center/cover no-repeat}
.cta-band--photo::before{content:"";position:absolute;inset:0;background:rgba(14,27,43,.78);z-index:-1}
.cta-band h2{color:var(--white)}
.cta-band .eyebrow{color:var(--brass)}
.cta-band--red .eyebrow{color:var(--white)}
.cta-band .lede{margin-top:var(--s-3);color:var(--on-navy)}
.cta-band a:not(.btn){color:var(--white)}
.cta-band__grid{display:grid;gap:var(--s-5)}
@media (min-width:900px){.cta-band__grid{grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:var(--s-8)}.cta-band .actions{margin-top:0;justify-content:flex-end}}

/* 4.21 FAQ */
.faq{border-top:var(--hair)}
.faq__item{border-bottom:var(--hair)}
.faq__q{display:flex;justify-content:space-between;align-items:center;gap:var(--s-4);padding:var(--s-4) 0;cursor:pointer;list-style:none;font:600 var(--fs-3)/1.35 var(--font-body);color:var(--navy)}
.faq__q::-webkit-details-marker{display:none}
.faq__q::after{content:"+";flex:0 0 auto;display:inline-grid;place-items:center;width:1.75rem;height:1.75rem;border:var(--hair-brass);border-radius:50%;font:400 1.25rem/1 var(--font-display);color:var(--brass-ink);transition:transform var(--t-base) var(--ease)}
.faq__item[open] .faq__q::after{content:"\2212";transform:rotate(180deg)}
.faq__q:hover{color:var(--red)}
.faq__a{padding:0 0 var(--s-5);color:var(--ink);max-width:var(--max-prose)}
.faq__a p+p{margin-top:var(--s-3)}
.faq__a ul,.faq__a ol{padding-left:1.25rem;margin-top:var(--s-3)}
.faq--on-navy{border-color:rgba(255,255,255,.15)}
.faq--on-navy .faq__item{border-color:rgba(255,255,255,.15)}
.faq--on-navy .faq__q,.faq--on-navy .faq__a{color:var(--on-navy)}
.faq--on-navy .faq__q::after{color:var(--brass)}

/* 4.22 guide / blog article layout */
.article__layout{display:grid;gap:var(--s-7);padding-block:var(--s-7) var(--s-8)}
@media (min-width:900px){.article__layout{grid-template-columns:16rem minmax(0,1fr);gap:var(--s-9);align-items:start}}
.article__aside{display:grid;gap:var(--s-5);min-width:0}
@media (min-width:900px){.article__aside{position:sticky;top:5rem;z-index:var(--z-sticky)}}
.article__body{min-width:0}
.article__actions{margin-top:var(--s-4)}
.article__meta{margin-top:var(--s-4);display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-2)}
.article__author{display:inline-flex;align-items:center;gap:var(--s-2);color:var(--navy);font-weight:600;text-decoration:none}
.article__author:hover{color:var(--red)}
.article__avatar{width:2rem;height:2rem;border-radius:50%;object-fit:cover}
.toc{border:var(--hair);border-radius:var(--r-md);padding:var(--s-4);background:var(--white)}
.toc__title{cursor:pointer;list-style:none;font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink);display:flex;justify-content:space-between;align-items:center}
.toc__title::-webkit-details-marker{display:none}
.toc__title::after{content:"+";font:400 1rem/1 var(--font-display);color:var(--brass-ink)}
.toc[open] .toc__title::after{content:"\2212"}
@media (min-width:900px){.toc__title{cursor:default}.toc__title::after{display:none}}
.toc__list,.toc__sub{list-style:none;margin:var(--s-3) 0 0;padding:0;display:grid;gap:var(--s-2)}
.toc__sub{margin:var(--s-2) 0 0 var(--s-4);font-size:.8125rem}
.toc__link{color:var(--ink);text-decoration:none;font-size:var(--fs-1);line-height:1.4;display:inline-block;padding-block:.15rem}
.toc__link:hover,.toc__link.is-current{color:var(--red)}
.toc__link.is-current{font-weight:600}
.share{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}
.share__title{width:100%;font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink)}
.share__btn{display:inline-flex;align-items:center;min-height:2.25rem;padding:.4rem .8rem;border:var(--hair);border-radius:var(--r-pill);background:var(--white);color:var(--navy);font:500 var(--fs-1)/1 var(--font-body);text-decoration:none;cursor:pointer;transition:border-color var(--t-fast)}
.share__btn:hover{border-color:var(--navy);color:var(--navy)}
.aside-cta{padding:var(--s-5);background:var(--cream);border-radius:var(--r-md);border-top:3px solid var(--red)}
.aside-cta .eyebrow{margin-bottom:var(--s-2)}
.aside-cta__text{margin-bottom:var(--s-4);font-size:var(--fs-1)}
.article__faq{margin-top:var(--s-8)}
.article__faq h2{margin-bottom:var(--s-5)}
.article__foot{margin-top:var(--s-8);padding-top:var(--s-5);border-top:var(--hair-brass)}
.article__body .lead{margin-top:var(--s-7);max-width:var(--max-narrow)}
.tags{display:flex;flex-wrap:wrap;gap:var(--s-2);margin-top:var(--s-4)}

/* 4.23 blog / guide card */
.post-card{display:flex;flex-direction:column;background:var(--white);border:var(--hair);border-radius:var(--r-md);overflow:hidden;transition:box-shadow var(--t-base) var(--ease),transform var(--t-base) var(--ease)}
.band--cream .post-card{background:var(--paper)}
.post-card:hover,.post-card:focus-within{box-shadow:var(--sh-card);transform:translateY(-2px)}
.post-card__media{display:block;aspect-ratio:16/10;background:var(--cream);overflow:hidden}
.post-card__img{width:100%;height:100%;object-fit:cover;display:block}
.post-card__body{display:grid;gap:var(--s-2);padding:var(--s-5);align-content:start}
.post-card__body .eyebrow{margin-bottom:0}
.post-card__title{font-size:var(--fs-4)}
.post-card__title a{color:var(--navy);text-decoration:none}
.post-card__title a:hover{color:var(--red)}
.post-card__excerpt{color:var(--muted);font-size:var(--fs-1);display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.post-card--text{border-left:3px solid var(--brass)}
.post-card--guide .badge{justify-self:start}
.post-card--featured{grid-column:1/-1}
@media (min-width:900px){.post-card--featured{flex-direction:row}.post-card--featured .post-card__media{flex:0 0 55%;aspect-ratio:auto}.post-card--featured .post-card__body{padding:var(--s-7);justify-content:center}.post-card--featured .post-card__title{font-size:var(--fs-5)}.post-card--featured .post-card__excerpt{-webkit-line-clamp:4;font-size:var(--fs-2)}}

/* Article library: native topic disclosure and progressively enhanced search. */
.article-browser{max-width:var(--max-prose)}
.article-browser__controls{display:grid;gap:var(--s-3);padding:var(--s-4);background:var(--cream);border:var(--hair);border-radius:var(--r-md);margin-block:var(--s-4)}
@media (min-width:900px){.article-browser__controls{grid-template-columns:minmax(12rem,2fr) minmax(10rem,1fr) auto;align-items:end}}
.article-browser__controls[hidden],.article-browser__group[hidden],[data-article-row][hidden]{display:none}
.article-browser__group{border-top:var(--hair);scroll-margin-top:6rem}
.article-browser__group:last-child{border-bottom:var(--hair)}
.article-browser__group summary{padding-block:var(--s-4);color:var(--navy);font:600 var(--fs-3)/1.35 var(--font-body);cursor:pointer}
.article-browser__count{display:inline-block;font:400 var(--fs-1)/1.4 var(--font-body);color:var(--muted);margin-left:var(--s-3)}
.article-browser__list{list-style:none;margin:0;padding:0 0 var(--s-4)}
.article-browser__list li{display:grid;gap:var(--s-1);padding:var(--s-3);border-bottom:var(--hair)}
.article-browser__list li:last-child{border-bottom:0}
.article-browser__list a{font-weight:600;text-underline-offset:.18em}
.article-browser__meta{font-size:var(--fs-1);color:var(--muted)}
.article-browser__group summary:focus-visible{outline:2px solid var(--navy);outline-offset:3px}
#browse,#showing,#lead-buy,#lead-showing,#alert,.listing-card[id]{scroll-margin-top:5rem}

/* 4.24 pagination */
.pager{display:flex;align-items:center;justify-content:center;gap:var(--s-3);margin-top:var(--s-7);flex-wrap:wrap}
.pager__list{list-style:none;margin:0;padding:0;display:flex;gap:var(--s-2);flex-wrap:wrap}
.pager__link{display:inline-grid;place-items:center;min-width:2.75rem;min-height:2.75rem;padding:0 var(--s-3);border:var(--hair);border-radius:var(--r-sm);background:var(--white);color:var(--navy);font:600 var(--fs-1)/1 var(--font-body);text-decoration:none;transition:border-color var(--t-fast)}
.pager__link:hover{border-color:var(--navy);color:var(--navy)}
.pager__link.is-current{background:var(--navy);border-color:var(--navy);color:var(--white)}
.pager__gap{display:inline-grid;place-items:center;min-width:2rem;min-height:2.75rem;color:var(--muted)}

/* lake finder controls (lakes hub, §5.18) */
.finder{display:grid;gap:var(--s-3);padding:var(--s-3);background:var(--white);border:var(--hair);border-radius:var(--r-md)}
.band--cream .finder{background:var(--paper)}
@media (min-width:640px){.finder{grid-template-columns:1fr 1fr}.finder .field--grow{grid-column:1/-1}}
@media (min-width:900px){.finder{grid-template-columns:minmax(12rem,2fr) 1fr 1fr;align-items:end}.finder .field--grow{grid-column:auto}}
.finder .field__input{background-color:var(--cream);border-color:transparent}
.finder .field__input:focus{background-color:var(--white)}
.finder__empty{margin-top:var(--s-5);padding:var(--s-5);border:var(--hair);border-radius:var(--r-md);text-align:center;color:var(--muted)}
.finder__empty[hidden]{display:none}
.finder__count{font:500 var(--fs-1)/1.4 var(--font-body);color:var(--muted);margin-top:var(--s-3)}

/* filter rows (listings page pills with data-filter) */
.filters{display:flex;flex-wrap:wrap;gap:var(--s-2);align-items:center}
.filters__label{font:600 var(--fs-eyebrow)/1.2 var(--font-body);letter-spacing:.12em;text-transform:uppercase;color:var(--brass-ink);margin-right:var(--s-2)}

/* credentials (about page) */
.cred-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(14rem,1fr));gap:var(--s-5);margin-bottom:var(--s-6)}
.cred-grid__item{border-top:var(--hair-brass);padding-top:var(--s-3)}
.cred-grid__item .eyebrow{margin-bottom:var(--s-2)}
.cred-grid__item p:not(.eyebrow){font-size:var(--fs-2);color:var(--ink)}

/* proof bar (buy.html hero): Janet's buyer-side record from data/facts.py */
.proof-bar{margin-top:var(--s-6);padding-top:var(--s-4);border-top:var(--hair-brass)}
.proof-bar__list{list-style:none;margin:0;padding:0;display:grid;gap:var(--s-3) var(--s-5)}
@media (min-width:640px){.proof-bar__list{grid-template-columns:1fr 1fr}}
.proof-bar__item{min-width:0;font-size:var(--fs-1);line-height:1.45;color:var(--ink);overflow-wrap:break-word}
.proof-bar__value{display:block;font:500 1.375rem/1.15 var(--font-display);color:var(--navy);letter-spacing:-.01em}
.proof-bar__note{margin-top:var(--s-3);color:var(--muted)}
/* sold disclaimer under the navy record band (about.html) */
.band--navy .sold-disclaimer{max-width:46rem;margin-inline:auto;color:var(--on-navy-muted);border-left-color:rgba(255,255,255,.25)}

/* "as seen on" / designation rows */
.marks{display:flex;flex-wrap:wrap;align-items:center;gap:var(--s-4) var(--s-6)}
.marks img{height:2.5rem;width:auto}
.marks__item{display:grid;gap:var(--s-2);max-width:18rem}
.marks__item p{font-size:var(--fs-1);color:var(--muted)}

/* review page */
.review-card{text-align:center;padding:var(--s-7) var(--s-5);background:var(--white);border:var(--hair);border-top:3px solid var(--red);border-radius:var(--r-md)}
.review-card .lede{margin-inline:auto}
.review-card .actions{justify-content:center}

/* 4.25 utilities (the only ones allowed) */
.visually-hidden{position:absolute !important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.muted{color:var(--muted)}
.center{text-align:center}
.mt-0{margin-top:0}.mt-4{margin-top:var(--s-4)}.mt-6{margin-top:var(--s-6)}.mt-8{margin-top:var(--s-8)}
.rule{border:0;border-top:var(--hair-brass);width:4rem;margin:var(--s-6) 0}
.rule--center{margin-inline:auto}

/* --------------------------------------------------------------------------
   6. Accessibility: focus rings
   -------------------------------------------------------------------------- */
:focus-visible{outline:3px solid var(--red);outline-offset:3px;border-radius:var(--r-sm)}
.band--navy :focus-visible,.hero-home :focus-visible,.cta-band :focus-visible,.footer :focus-visible,.actionbar :focus-visible,.hero-page--navy :focus-visible,.band--photo :focus-visible{outline-color:var(--white)}
.cta-band--red :focus-visible{outline-color:var(--navy)}
.band--navy .lead :focus-visible{outline-color:var(--red)}
.field__input:focus-visible{outline:2px solid var(--navy);outline-offset:1px}
.field__input[aria-invalid="true"]:focus-visible{outline-color:var(--err)}
.qsearch__input:focus-visible,.qsearch__select:focus-visible{outline:none}
.areamap__county:focus-visible{outline:none}
.pill:focus-visible,.share__btn:focus-visible,.actionbar__btn:focus-visible,.socials__link:focus-visible{border-radius:var(--r-pill)}
.socials__link:focus-visible{border-radius:50%}
.faq__q:focus-visible,.toc__title:focus-visible{outline-offset:-3px}
.town-card:focus-visible,.county-card:focus-visible,.lake-card:focus-visible{outline-offset:2px}

/* --------------------------------------------------------------------------
   7. Print (guides, blog posts, listing pages)
   -------------------------------------------------------------------------- */
@media print{
  @page{margin:1.6cm}
  html,body{background:#fff !important;color:#000;padding:0}
  .header,.footer,.actionbar,.article__aside,.cta-band,.band--cream,.skip,.qsearch,.lead,.pager,.hero-page__media,.crumbs,video{display:none !important}
  .hero-page{background:none;border-bottom:1px solid #000;padding:0 0 1rem}
  .hero-home{min-height:0;background:none;color:#000}
  .hero-home__media,.hero-home__overlay{display:none}
  .hero-home__title,h1,h2,h3,h4{color:#000}
  .band{padding-block:1.2rem;background:none}
  .band--navy{background:none;color:#000}
  .band--navy h2,.band--navy h3{color:#000}
  .stat__value{color:#000}
  .stat__label{color:#333}
  .wrap{width:100%;max-width:none}
  .article__layout{display:block;padding:0}
  .article__body,.prose{max-width:none}
  .prose a[href^="http"]::after{content:" (" attr(href) ")";font-size:.85em;color:#555;word-break:break-all}
  .faq__item{break-inside:avoid}
  .faq__item[open] .faq__q::after,.faq__q::after{display:none}
  details.faq__item:not([open])>.faq__a{display:block}
  .faq__a{display:block !important;color:#000}
  .table-wrap{overflow:visible;border:0}
  .table th,.table td{border-top:1px solid #999}
  .listing-card,.sold-card,.testimonial,.post-card,.notice{break-inside:avoid;box-shadow:none;border:1px solid #999}
  img{max-width:100%;page-break-inside:avoid}
  a{color:#000;text-decoration:none}
}

/* Keep the responsive still visible until a video frame is ready. */
.hero-home__video{position:absolute;inset:0;opacity:0}
.hero-home__video.is-playing{opacity:1}

/* --------------------------------------------------------------------------
   IDX Broker dynamic wrapper (/idx-wrapper.html, served by IDX on
   search.homematch320.com with its search pages between the two marker divs)
   -------------------------------------------------------------------------- */
.page-idx-wrapper{padding-bottom:0}/* no .actionbar on this page; IDX's own fixed mobile menu owns the bottom edge */
.idx-intro__row{display:grid;gap:var(--s-2)}
.idx-intro__text{max-width:62ch;color:var(--muted)}
.idx-main{min-height:40vh}
.page-idx-wrapper .header{z-index:1001}/* above IDX's leaflet map panes (z-index up to 1000) */

/* /listings.html live feed (agent D, 2026-10-07): hero system links, the
   "Updated" line js/idx-live.js rewrites, the two IDX widget containers
   (height reserved so the bands below do not jump when Vue mounts; the
   loader inserts its custom element inside the container, before its own
   script tag) and the class the live refresh uses to retire a sold card
   (site.js toggles [hidden] for the filter pills, so a class keeps it gone). */
.hero-page__fastlinks{margin-top:var(--s-4)}
.listing-live{margin:var(--s-4) 0 0}
.listing-live[data-live-state="live"]::before,.listing-live[data-live-state="stale"]::before{content:"";display:inline-block;width:.5rem;height:.5rem;border-radius:50%;background:var(--brass);margin-right:.45rem;vertical-align:middle}
.listing-live[data-live-state="stale"]::before{background:var(--red)}
.listing-grids__title{margin-top:var(--s-6)}
.listing-grids__title+.grid{margin-top:var(--s-4)}
.listing-live__empty{margin-top:var(--s-3)}
.listing-card.is-removed{display:none}
.idx-widget{position:relative;min-height:24rem;margin-top:var(--s-5);padding:var(--s-3);border:var(--hair);border-radius:var(--r-md);background:var(--white)}
.idx-widget--carousel{min-height:16rem}
@media (min-width:900px){.idx-widget--showcase{min-height:36rem}}
.idx-widget idx-listings-showcase,.idx-widget idx-listings-carousel{display:block;min-width:0}
.idx-widget__fallback{margin:0;padding:var(--s-4) var(--s-2)}
/* Until the IDX custom element exists (loader still running, blocked, or the
   search host's certificate not yet issued) the box says what it is for. */
.idx-widget:not(:has(idx-listings-showcase,idx-listings-carousel))::before{content:"Loading the latest listings from the MLS\2026";display:block;padding:var(--s-4) var(--s-2);font-size:var(--fs-1);color:var(--muted)}
.idx-widget__title{margin-top:var(--s-7)}
/* Home showcase (2026-10-14): one feature sold card across two columns with a photo strip; Build page video */
.sold-card__media--feature{aspect-ratio:16/10}
.sold-card__media--feature picture,.sold-card__media--feature img{width:100%;height:100%;display:block;object-fit:cover}
.sold-card__blurb{margin:var(--s-2) 0 0;color:var(--muted);font-size:var(--fs-1)}
.sold-card__strip{list-style:none;margin:var(--s-3) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:var(--s-2)}
.sold-card__strip picture,.sold-card__strip img{display:block;width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-sm)}
@media (min-width:900px){.sold-card--feature{grid-column:span 2}}
.video-figure{margin:var(--s-6) 0 0}
.video{display:block;width:100%;height:auto;border-radius:var(--r-md);background:var(--navy)}
@media (min-width:900px){.nav__link{white-space:nowrap}}
@media (min-width:900px) and (max-width:1199px){.nav__list{gap:var(--s-3)}}
/* Home hero slideshow (2026-10-14): stacked slides crossfade; controls appear once js/site.js is ready */
.hero-home--slides{touch-action:pan-y}
.hero-home__track{list-style:none;margin:0;padding:0;position:absolute;inset:0}
.hero-home__slide{position:absolute;inset:0;opacity:0;transition:opacity .7s var(--ease)}
.hero-home__slide.is-active{opacity:1}
@media (prefers-reduced-motion:reduce){.hero-home__slide{transition:none}}
.hero-home__slide picture,.hero-home__slide img{width:100%;height:100%;object-fit:cover;display:block}
.hero-home__controls{position:absolute;right:var(--s-4);bottom:var(--s-4);z-index:1;display:none;align-items:center;gap:var(--s-2)}
.hero-home--slides.is-ready .hero-home__controls{display:flex}
.hero-home__arrow{width:2.5rem;height:2.5rem;border-radius:50%;border:1px solid rgba(255,255,255,.45);background:rgba(14,27,43,.5);color:#fff;font:400 1.4rem/1 var(--font-body);display:grid;place-items:center;cursor:pointer;padding:0}
.hero-home__arrow:hover,.hero-home__arrow:focus-visible{border-color:#fff;background:rgba(14,27,43,.75)}
.hero-home__dots{display:flex;gap:.15rem;margin:0 var(--s-1)}
.hero-home__dot{position:relative;width:1.5rem;height:1.5rem;padding:0;border:0;background:transparent;cursor:pointer}
.hero-home__dot::before{content:"";position:absolute;inset:.45rem;border-radius:50%;border:1px solid rgba(255,255,255,.85)}
.hero-home__dot[aria-current="true"]::before{background:#fff}
.hero-home__dot:focus-visible{outline:2px solid #fff;outline-offset:2px;border-radius:50%}
.hero-home--slides .hero-home__caption{bottom:calc(var(--s-4) + 3.25rem)}
.hero-home--slides .hero-home__content{padding-bottom:calc(var(--s-7) + 3rem)}
/* Phones: six dots fill the right of the bottom row (about 10.25rem), so the caption sits on its own row
   above them instead of running under the first dots. It wraps to at most two lines (one line cut off the
   "sold by Janet for $X" proof at every phone width), set a little tighter so two lines fit the room one line
   had. Keep the content padding as it is: a taller hero reaches the full viewport area in Lighthouse's
   412x823 phone, and Chrome then ignores the first photo as an LCP candidate (a later slide becomes the LCP). */
@media (max-width:639px){.hero-home__arrow{display:none}.hero-home--slides .hero-home__caption{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2;overflow:hidden;white-space:normal;line-height:1.15;padding:.3rem .6rem;border-radius:var(--r-md);left:var(--s-4);right:auto;bottom:calc(var(--s-4) + 1.75rem);max-width:calc(100% - 2 * var(--s-4))}.hero-home--slides .hero-home__content{padding-bottom:calc(var(--s-6) + 4.5rem)}}
@media (min-width:900px){.hero-home--slides .hero-home__content{padding-bottom:var(--s-9)}}
/* Sold-home pages (2026-10-14): photo gallery, linked sold-card titles */
.sold-card__title a{color:inherit;text-decoration:underline;text-decoration-color:rgba(14,27,43,.25);text-underline-offset:.15em}
.sold-card__title a:hover,.sold-card__title a:focus-visible{color:var(--red);text-decoration:underline}
.gallery{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:var(--s-3)}
@media (min-width:900px){.gallery{grid-template-columns:repeat(3,1fr);gap:var(--s-4)}}
.gallery picture,.gallery img{display:block;width:100%;height:100%;aspect-ratio:4/3;object-fit:cover;border-radius:var(--r-md)}
.page-sold-home .grid--split .prose{max-width:none}
/* Home page live listings (2026-10-14): cards past the cap and an empty Longview panel are hidden by class, never by the hidden attribute (component display rules would win) */
.listing-card.is-overflow,.intent-card.is-removed{display:none}
/* /review.html (2026-10-15): one card per review site */
.review-site{display:grid;gap:var(--s-3);grid-template-rows:auto auto auto 1fr auto;padding:var(--s-6);background:var(--white);border:var(--hair);border-top:4px solid var(--brass);border-radius:var(--r-md)}
.review-site--google{border-top-color:var(--red)}
.review-site svg{width:2rem;height:2rem;fill:var(--navy)}
.review-site h3{margin:0}
.review-site .actions{margin-top:auto}
/* Every home for sale (2026-10-15): live counts (js/idx-counts.js) and the big map buttons. The HTML holds number-free fallback text; .is-live marks a filled count */
.btn--xl{min-height:4rem;padding:1.1rem 2rem;font-size:var(--fs-4);gap:var(--s-3)}
.btn--xl svg{width:1.5rem;height:1.5rem}
.idx-hub{margin-top:var(--s-6)}
.idx-cta{min-height:4.5rem;font-size:var(--fs-5);box-shadow:0 18px 40px -18px rgba(200,16,46,.65)}
@media (min-width:900px){.idx-cta{min-height:5.25rem;font-size:var(--fs-6)}}
.idx-hub__agent{margin-top:var(--s-4);font:500 var(--fs-3)/1.45 var(--font-body);color:var(--white)}
.hero-page--navy .idx-hub+.qsearch{margin-top:var(--s-6)}
.idx-count__asof{display:inline-block;font-size:var(--fs-1);color:var(--muted);white-space:nowrap}
.idx-count__asof[hidden]{display:none}
.idx-count__note{margin-top:var(--s-2)}
.band--count{padding-block:var(--s-5) var(--s-2)}
.idx-counts{display:grid;gap:var(--s-4);padding:var(--s-4);background:var(--white);border:var(--hair);border-left:4px solid var(--red);border-radius:var(--r-md);box-shadow:var(--sh-card)}
.idx-counts .idx-count{display:grid;gap:var(--s-3);align-items:center}
.idx-counts .idx-count__line{margin:0;font:500 var(--fs-5)/1.25 var(--font-display);color:var(--navy)}
.idx-counts .idx-count--sub{padding-top:var(--s-4);border-top:var(--hair)}
.idx-counts .idx-count--sub .idx-count__line{font:500 var(--fs-3)/1.35 var(--font-body)}
.idx-counts .idx-count--sub .btn{background:var(--navy);border-color:var(--navy)}
.idx-counts .idx-count--sub .btn:hover{background:#1B2F48;border-color:#1B2F48}
.idx-counts__foot{margin:0}
.idx-count__map{display:inline-flex;align-items:center;gap:var(--s-2);font:600 var(--fs-1)/1.2 var(--font-body);color:var(--navy);text-decoration:underline;text-underline-offset:.2em}
.idx-count__map:hover{color:var(--red)}
.idx-count__map svg{width:1rem;height:1rem;flex:0 0 auto;fill:none;stroke:currentColor;stroke-width:1.75;stroke-linecap:round;stroke-linejoin:round}
.idx-count__asof{font-family:var(--font-body)}
@media (min-width:640px){.idx-counts .idx-count{grid-template-columns:minmax(0,1fr) auto;column-gap:var(--s-6)}.idx-counts .idx-count .btn{grid-column:2;grid-row:1}.idx-counts .idx-count__note{grid-column:1;grid-row:2}.idx-counts .idx-count__map{grid-column:2;grid-row:2;justify-self:center}}
.allhomes{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--s-7)}
.allhomes>*{min-width:0}
.idx-count--region .btn{white-space:normal;text-align:center}
@media (min-width:900px){.allhomes{grid-template-columns:minmax(0,7fr) minmax(0,5fr);align-items:center;gap:var(--s-8)}}
.allhomes .section-head{margin-bottom:var(--s-5)}
.band--allhomes-band .section-head h2{font-size:var(--fs-7)}
.idx-count--region .idx-count__line{margin:0 0 var(--s-5);font:500 var(--fs-4)/1.4 var(--font-body);color:var(--white)}
.idx-count--region.is-live .idx-count__line [data-idx-count-text]{font:500 var(--fs-5)/1.3 var(--font-display)}
.idx-count--region .idx-count__asof{color:var(--on-navy-muted)}
.idx-count--region .btn{width:100%;box-shadow:0 18px 40px -18px rgba(200,16,46,.75)}
@media (min-width:640px){.idx-count--region .btn{width:auto}}
.allhomes__agent{margin-top:var(--s-4);font:500 var(--fs-3)/1.45 var(--font-body);color:var(--on-navy)}
.allhomes__towns{padding:var(--s-4);border:1px solid rgba(255,255,255,.18);border-radius:var(--r-md);background:var(--navy-soft)}
.allhomes__towns .cluster{gap:var(--s-2)}
.allhomes__more{margin-top:var(--s-4);color:var(--on-navy-muted)}
.allhomes__more a{color:var(--white)}
.pill--count{gap:var(--s-2);min-height:2.75rem;font-size:var(--fs-2)}
.band--navy .pill--count{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.35);color:var(--white)}
.band--navy .pill--count:hover{background:var(--white);border-color:var(--white);color:var(--navy)}
.pill__n{min-width:1.75rem;padding:.2rem .45rem;border-radius:var(--r-pill);background:var(--brass);color:var(--navy);font:700 var(--fs-1)/1 var(--font-body);text-align:center}
.pill__n:empty{display:none}
@media (min-width:640px){.idx-counts,.allhomes__towns{padding:var(--s-5)}}
