.wrap{max-width:var(--maxw);margin-inline:auto;padding-inline:var(--pad)}
/* 2026-06-13: Sitewide interior-page shrink (~50% on top-level padding,
   ~28-30% on headlines, ~25-30% on card padding). Matches the proportional
   cut already applied to the home page in pages.css. Home + chrome remain
   untouched. */
.section{padding-block:clamp(30px,4.2vw,54px)}
.section.alt{background:#fff;border-block:1px solid var(--line)}
.eyebrow{font-size:12px;letter-spacing:.22em;text-transform:uppercase;color:var(--label);margin-bottom:12px;padding-top:14px;position:relative}
.eyebrow::before{content:"";position:absolute;top:0;left:0;width:48px;border-top:1.5px solid var(--gold)}
.section h1,.section h2,.section h3{font-family:var(--serif);font-weight:400;color:var(--navy);line-height:1.15}
.section h2{font-size:clamp(22px,2.4vw,30px);letter-spacing:-.01em;margin-bottom:14px}
.lede{font-size:clamp(17px,1.6vw,20px);line-height:1.6;color:var(--ink);max-width:60ch;margin-bottom:16px}
.prose{font-size:16px;line-height:1.75;color:var(--mut);max-width:66ch}
.prose p+p{margin-top:16px}
.prose strong{color:var(--navy);font-weight:600}
.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:22px 0 0;padding:0;list-style:none}
.scard{background:var(--cream);padding:clamp(20px,2.2vw,28px);transition:background .3s var(--ease),box-shadow .3s var(--ease);position:relative}
.scard:hover{background:#fff}
.scard h3{font-size:19px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--line)}
.scard:hover h3{border-bottom-color:var(--gold)}
.scard p{font-size:14.5px;line-height:1.65;color:var(--mut)}
#services{counter-reset:svc}
#services .scard{counter-increment:svc}
#services .scard h3::before{content:counter(svc,decimal-leading-zero);display:block;font-family:var(--serif);font-size:13px;color:var(--gold);letter-spacing:.12em;margin-bottom:8px;font-weight:400}
.valuestmt{font-family:var(--serif);font-size:clamp(20px,2.2vw,26px);line-height:1.4;color:var(--navy);max-width:24ch;position:relative;padding-left:22px}
.valuestmt::before{content:"";position:absolute;left:0;top:8px;bottom:8px;width:2px;background:var(--gold)}
.twocol{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(22px,3.6vw,52px);align-items:start}
/* (.photoband removed 2026-06-14: the Services mid-page banner was dropped and
   About now uses the 3-up .aboutband defined in pages.css.) */
.callout{border-left:3px solid var(--gold);background:#fff;padding:clamp(18px,2.2vw,26px);margin-top:22px}
.callout h3{font-size:18px;margin-bottom:6px}
.callout p{font-size:14.5px;line-height:1.65;color:var(--mut);max-width:62ch}
.callout a{color:var(--navy);font-weight:600;border-bottom:1px solid var(--gold)}
.section.alt .callout{background:var(--cream)}
.inlink{color:var(--navy);font-weight:600;border-bottom:1px solid var(--gold)}
.grid3+.prose{margin-top:var(--s3)}
.team{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin:24px 0 0;padding:0;list-style:none}
.team-2{grid-template-columns:repeat(2,1fr)}
.teamcat{font-size:12px;letter-spacing:.18em;text-transform:uppercase;color:var(--label);margin:28px 0 14px;padding-top:12px;border-top:1px solid var(--line)}
.teamcat+.team{margin-top:0}
.member{background:#fff;border:1px solid var(--line);padding:20px}
.avatar{width:56px;height:56px;border-radius:50%;background:linear-gradient(150deg,var(--navy),var(--navy-d));
  color:var(--gold-l);font-family:var(--serif);font-size:20px;display:flex;align-items:center;justify-content:center;margin-bottom:12px}
.member h3{font-size:18px;margin-bottom:2px}
.member .role{font-size:12px;letter-spacing:.04em;color:var(--label);text-transform:uppercase;margin-bottom:9px}
.member p{font-size:14px;line-height:1.65;color:var(--mut)}
/* .ctaband: padding cut ~50% (Mike 2026-06-14) so the band is about half as
   tall, and this same band now appears on Services, About, Our People, and the
   News hub. Do NOT re-scope to a single page. */
.ctaband{background:linear-gradient(155deg,var(--navy-grad),var(--navy-d));color:#fff;text-align:center;padding:clamp(18px,2.4vw,28px) var(--pad)}
.ctaband h2{color:#fff;font-family:var(--serif);font-size:clamp(22px,2.4vw,30px);margin-bottom:8px}
.ctaband p{color:var(--on-navy);max-width:52ch;margin:0 auto 14px;line-height:1.6}
.crumbs{font-size:12.5px;color:var(--label);padding-block:12px}
.crumbs a{color:var(--label);text-decoration:none}.crumbs a:hover{color:var(--navy)}
.crumbs span{color:var(--navy)}
@media(max-width:880px){.grid3,.team,.team-2{grid-template-columns:1fr}.twocol{grid-template-columns:1fr}}

/* ── Calculator ─────────────────────────────────────────────────────────── */
.calc-grid{display:grid;grid-template-columns:1fr 1fr;border-top:3px solid var(--gold);border-bottom:1px solid var(--line);box-shadow:0 1px 0 var(--line),0 24px 48px -32px rgba(27,42,74,.18)}
.calc-form{padding:clamp(26px,3.5vw,42px)}
.calc-res{padding:clamp(26px,3.5vw,42px);background:var(--cream);border-left:1px solid var(--gold)}
.calc input[type=number],.calc select{width:100%;padding:10px 12px;border:1px solid var(--line);border-radius:6px;font:15px var(--sans);background:#fff;color:var(--ink)}
.calc input:focus,.calc select:focus{outline:2px solid var(--gold);outline-offset:1px}
.calc label{display:block;font-size:11.5px;font-weight:500;color:var(--label);letter-spacing:.14em;text-transform:uppercase;margin:14px 0 5px}
.calc-row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.calc-chk{display:flex;align-items:center;gap:9px;margin:9px 0;font-size:14px}
.calc-chk input{width:16px;height:16px;accent-color:var(--navy)}
.calc-chk label{margin:0;font-weight:500;font-size:14px;color:var(--ink);letter-spacing:normal;text-transform:none}
.calc-adv{margin-top:var(--s3);border-top:1px solid var(--line);padding-top:var(--s2)}
.calc-adv summary{cursor:pointer;font-size:13px;font-weight:600;color:var(--navy);list-style:none}
.calc-adv summary::before{content:"+ ";color:var(--gold);font-weight:700}
.calc-adv[open] summary::before{content:"\2013 "}
.calc-cond{display:none}
.calc-cond.on{display:block;margin:var(--s2) 0;padding:14px 16px;background:var(--cream);border-left:2px solid var(--gold)}
.calc-cond.on .small{margin-top:8px}
.calc-res h2{font-family:var(--serif);font-weight:400;font-size:clamp(22px,2.4vw,28px);letter-spacing:-.01em;color:var(--navy);margin-bottom:3px}
.calc-sub{font-size:12.5px;color:var(--mut);margin-bottom:16px}
.calc-line{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid var(--line);font-size:14px}
.calc-line .lbl{color:var(--ink)}
.calc-line .amt{font-variant-numeric:tabular-nums;color:var(--navy);font-weight:600}
.calc-line.muted .lbl,.calc-line.muted .amt{color:var(--mut-d);font-weight:500}
.calc-star{color:var(--gold);font-weight:700}
.calc-total{margin-top:var(--s2);padding-top:var(--s2);border-top:2px solid var(--navy);display:flex;justify-content:space-between;align-items:baseline}
.calc-total .lbl{font-family:var(--serif);font-size:19px;color:var(--navy)}
.calc-total .amt{font-family:var(--serif);font-size:clamp(26px,3vw,34px);letter-spacing:-.01em;color:var(--navy);font-variant-numeric:tabular-nums}
.calc-legend{margin-top:14px;font-size:12px;color:var(--mut);line-height:1.6}
.calc-disc{margin-top:var(--s3);background:#fff;border-left:3px solid var(--gold);padding:var(--s2) 18px;font-size:12px;color:var(--mut);line-height:1.65}
.calc-g-pol{border:0;padding:0;margin:24px 0 0;min-width:0}
.calc-g-pol legend{padding-top:18px;padding-right:0;padding-bottom:0;padding-left:0}
@media(max-width:820px){.calc-grid{grid-template-columns:1fr}.calc-form{border-right:0;border-bottom:1px solid var(--line)}.calc-row{grid-template-columns:1fr}}

/* -- Calculator page scoped rhythm (calcpg) - additive only, does not alter .section -- */
.calcpg{padding-block:clamp(22px,3vw,42px)}
/* restore global section top padding on the intro section only */
.calcpg-top{padding-top:clamp(30px,4.4vw,54px)}
.calcpg .calc-form{padding:clamp(18px,2.4vw,28px)}
.calcpg .calc-res{padding:clamp(18px,2.4vw,28px)}
.calcpg .lede{margin-bottom:12px}
.calcpg .prose p+p{margin-top:10px}
/* compact intro layout: text left, title-doc SVG accent right */
.calc-intro-row{display:flex;align-items:center;gap:clamp(24px,4vw,56px)}
.calc-intro-text{flex:1 1 0;min-width:0}
.calc-gfx{flex:0 0 clamp(80px,12vw,140px);opacity:.72}
.calc-gfx svg{width:100%;height:auto;display:block}
/* how-it-works section: prose left, house SVG accent right */
.calc-prose-row{display:flex;align-items:flex-start;gap:clamp(24px,4vw,56px)}
.calc-prose-text{flex:1 1 0;min-width:0}
.calc-prose-gfx{flex:0 0 clamp(64px,10vw,110px);opacity:.65;padding-top:8px}
.calc-prose-gfx svg{width:100%;height:auto;display:block}
/* FAQ section: prose left, skyline SVG accent right */
.calc-faq-row{display:flex;align-items:flex-start;gap:clamp(24px,4vw,56px)}
.calc-faq-gfx{flex:0 0 clamp(64px,10vw,110px);opacity:.55;padding-top:8px}
.calc-faq-gfx svg{width:100%;height:auto;display:block}
@media(max-width:640px){.calc-intro-row,.calc-prose-row,.calc-faq-row{flex-direction:column}.calc-gfx,.calc-prose-gfx,.calc-faq-gfx{display:none}}
/* ── Real Estate News ─── */
.news-byline{font-size:13px;color:var(--label-d);letter-spacing:.02em;margin:4px 0 16px;font-style:italic}
.news-article .prose h2{font-family:var(--serif);font-weight:400;color:var(--navy);font-size:clamp(19px,1.9vw,24px);margin:var(--s4) 0 var(--s2)}
.news-article .prose h2:first-child{margin-top:0}
.news-article .prose h3{font-family:var(--serif);font-weight:400;color:var(--navy);font-size:17px;margin:var(--s3) 0 var(--s1)}
.news-article .prose ul,.news-article .prose ol{margin:10px 0 10px 22px}
.news-article .prose li{margin:5px 0;color:var(--mut);line-height:1.65}
.news-article .prose blockquote{border-left:3px solid var(--gold);margin:14px 0;padding:5px 0 5px 16px;color:var(--mut)}
.news-cta{margin-top:24px;background:var(--cream);border-top:3px solid var(--gold);padding:clamp(14px,2.2vw,22px)}
.news-cta-h{font-family:var(--serif);font-weight:400;color:var(--navy);font-size:clamp(17px,1.8vw,20px);margin:0 0 5px}
.news-cta p{margin:0 0 10px;color:var(--mut);font-size:14.5px;line-height:1.55}
.news-cta p:last-child{margin-bottom:0}
.news-cta .btn.solid{margin-right:14px}
/* Two-button CTA layout (Mike 2026-06-13): centered, flex row,
   gap-separated. Replaces the old `<a class="btn solid">+inlink` pair
   which read as one button + a gold underline -- the underline link
   was easy to miss. Now both CTAs render as solid buttons side-by-side.
   max-width:none + margin:0 auto explicitly defeat .ctaband p's
   max-width:52ch + margin:0 auto -- without those overrides the flex
   container stays 52ch and pinned left because margin:0 wiped the
   auto centering. */
.news-cta .cta-actions,
.ctaband .cta-actions{
  display:flex;flex-wrap:wrap;justify-content:center;gap:14px;
  margin:0 auto;max-width:none;
}
.news-cta .cta-actions .btn,
.ctaband .cta-actions .btn{margin:0}
/* ── News index 2026-06-13 redesign: editorial list + slim featured ──
   Mike: "The Title 101 box is way too big. ... articles in more of a list,
   than the boxes. Make it look super nice please as a list." Featured
   block dropped the navy/watermark box in favor of a slim band with
   hairline top + bottom. Article rows are full-width with a topic chip,
   serif title + summary, and a "Read" arrow. Hairline dividers between
   rows; subtle tint on hover. */
.news-list{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;border-top:1px solid var(--line)}
.news-card{margin:0}
.news-row{display:grid;grid-template-columns:170px 1fr auto;column-gap:clamp(18px,2.4vw,32px);align-items:start;padding:clamp(18px,2.2vw,26px) 4px;border-bottom:1px solid var(--line);text-decoration:none;color:inherit;transition:background .25s var(--ease)}
.news-row:hover{background:rgba(193,154,77,.04)}
.news-row-topic{display:inline-block;align-self:start;font-size:10.5px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;color:#fff;background:var(--navy);border:1px solid var(--gold);border-radius:999px;padding:5px 12px;white-space:nowrap;justify-self:start;margin-top:4px}
.news-row-body{min-width:0;display:flex;flex-direction:column}
.news-row-title{font-family:var(--serif);font-weight:500;font-size:clamp(19px,2vw,24px);color:var(--navy);line-height:1.25;margin-bottom:6px;letter-spacing:-.005em}
.news-row-sum{font-size:14.5px;color:var(--mut);line-height:1.6;max-width:72ch}
.news-row-cue{align-self:center;justify-self:end;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--navy);white-space:nowrap;display:inline-flex;align-items:center;gap:8px}
.news-row-arrow{color:var(--gold);font-size:15px;transition:transform .25s var(--ease)}
.news-row:hover .news-row-title{color:var(--gold)}
.news-row:hover .news-row-arrow{transform:translateX(4px)}
.news-row:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.news-cta a:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
@media(max-width:760px){
  .news-row{grid-template-columns:1fr;row-gap:8px;padding:18px 2px}
  .news-row-cue{justify-self:start}
  .news-row-topic{margin-top:0}
}

/* ── News index intro + featured ──
   Mike removed the For Buyers / For Sellers / Refinancing bucket
   sections (too spread out, too long). The hub now leads with a
   featured article in a slim editorial band, then the list below. */
/* News hub intro centered (Mike 2026-06-14), matching About / Services. */
.news-intro{padding-bottom:clamp(18px,2.8vw,28px);text-align:center}
.news-intro h1{font-family:var(--serif);font-weight:400}
.news-intro .lede{margin-left:auto;margin-right:auto}
.news-featured{padding-top:0;padding-bottom:clamp(18px,2.8vw,28px)}
.news-feat{display:block;text-decoration:none;color:inherit;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:clamp(20px,2.6vw,30px) 0;position:relative;transition:background .25s var(--ease)}
.news-feat::before{content:"";position:absolute;left:0;top:-1px;height:2px;width:clamp(64px,8vw,96px);background:var(--gold)}
.news-feat:hover{background:rgba(193,154,77,.04)}
.news-feat-eyebrow{display:inline-block;font-size:11px;font-weight:600;letter-spacing:.22em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.news-feat-title{font-family:var(--serif);font-weight:500;font-size:clamp(22px,2.8vw,32px);color:var(--navy);line-height:1.2;letter-spacing:-.01em;margin:0 0 10px;max-width:28ch}
.news-feat-sum{font-size:15.5px;color:var(--mut);line-height:1.6;max-width:62ch;margin:0 0 14px}
.news-feat-cue{display:inline-flex;align-items:center;gap:8px;font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--navy)}
.news-feat-arrow{color:var(--gold);font-size:15px;transition:transform .25s var(--ease)}
.news-feat:hover .news-feat-title{color:var(--gold)}
.news-feat:hover .news-feat-arrow{transform:translateX(4px)}
.news-feat:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.news-gridzone{padding-top:0}
.news-gridzone .eyebrow{margin-bottom:8px}

/* Featured row: first <li> of the unified list. Mike asked for a
   blue border that distinguishes the featured article from the rows
   beneath without breaking the row rhythm. The frame sits on the
   <li>; the inner .news-row drops its hairline bottom and gets a
   subtle inset cream tint so the navy frame reads as a card. The
   "Featured" pill swaps from gold-on-cream to navy-fill so it
   carries the same accent as the frame. */
/* The unified news list carries a faint gold border-top to separate
   it from the eyebrow above. That hairline visually collides with
   the featured row's navy border (touches the top-left corner). Drop
   it on the --unified variant -- the eyebrow gives enough separation. */
.news-list--unified{border-top:none}
.news-card--featured{
  border:2px solid var(--navy);border-radius:10px;
  margin:6px 0 18px;background:#fff;
  box-shadow:0 1px 0 rgba(13,30,59,.06);
  position:relative;
}
/* 2026-06-14 (Mike): the featured article now matches the standard rows
   below it, just kept inside the navy-framed white card. It inherits the
   .news-row grid (navy "Featured" pill on the left, serif title + summary in
   the middle, "Read ->" cue on the right). We only drop the row hairline (the
   card border separates it) and give the row comfortable inset padding so the
   right-hand cue has room and doesn't crowd the frame. */
.news-card--featured .news-row{
  border-bottom:none;
  padding:clamp(18px,2.2vw,24px) clamp(16px,2vw,24px);
}
.news-card--featured .news-row:hover{background:rgba(13,30,59,.03)}
.news-card--featured .news-row-topic--feat{
  color:#fff;background:var(--navy);border-color:var(--gold);letter-spacing:.18em;
}
.news-card--featured .news-row-cue{color:var(--navy)}
@media(max-width:720px){
  .news-card--featured{margin:6px 2px 16px}
  .news-card--featured .news-row{padding:20px 16px;gap:16px}
}
/* ── About: Option A (firm at a glance) ─── */
.intro-grid{display:grid;grid-template-columns:1fr auto;gap:clamp(20px,3.6vw,44px);align-items:start}
.seal-accent{margin:0;width:clamp(84px,10vw,124px);align-self:start;opacity:.92}
.seal-accent svg{width:100%;height:auto;display:block}
.seal-cap{font-size:11px;letter-spacing:.16em;text-transform:uppercase;color:var(--label);text-align:center;margin-top:10px}
.glance{background:linear-gradient(155deg,var(--navy-grad),var(--navy-d));border-top:3px solid var(--gold);color:#fff}
.glance .wrap{padding-block:clamp(14px,2.2vw,24px)}
.glance .eyebrow{color:var(--gold-l);margin-bottom:12px}
.glance .eyebrow::before{border-color:var(--gold)}
/* 2026-06-13: round the chips. Old version was a 1px-gap grid with a
   white hairline border showing through as the divider -- reads as a
   tiled grid. New version has real gaps and rounded chip cards, each
   with a faint gold hairline for definition against the navy panel. */
.chips{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;background:transparent;border:none;padding:4px 0}
.chip{background:var(--navy-d);padding:clamp(14px,1.8vw,20px);border-radius:10px;border:1px solid rgba(193,154,77,.22)}
.chip .n{font-family:var(--serif);font-size:clamp(22px,2.4vw,30px);color:var(--gold-l);display:block;letter-spacing:-.01em}
.chip .t{font-size:11.5px;letter-spacing:.1em;text-transform:uppercase;color:var(--on-navy-d);margin-top:6px}
.scrollcue{display:flex;align-items:center;gap:10px;color:var(--label);font-size:12px;letter-spacing:.16em;text-transform:uppercase;margin-top:26px}
.scrollcue .ln{flex:0 0 44px;border-top:1.5px solid var(--gold)}
.scrollcue svg{width:14px;height:14px;animation:bob 1.8s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(4px)}}
@media (max-width:760px){.intro-grid{grid-template-columns:1fr}.seal-accent{display:none}}
/* QW-1 */
.section h1{font-size:clamp(26px,3vw,38px);letter-spacing:-.012em;margin-bottom:14px}
/* QW-2 */
a.scrollcue{text-decoration:none}
a.scrollcue:hover{color:var(--gold)}
a.scrollcue:hover .ln{border-color:var(--gold-l)}
a.scrollcue:focus-visible{outline:2px solid var(--gold);outline-offset:4px}
/* QW-3 */
.endcta{padding-block:clamp(22px,3.4vw,40px);text-align:center;border-top:1px solid var(--line)}
.endcta .prose{max-width:52ch;margin-inline:auto;font-size:16px}
.endcta .inlink{display:inline-block;margin-top:10px;font-family:var(--serif);font-size:clamp(17px,1.8vw,22px);border-bottom-width:2px;padding-bottom:2px}
/* QW-4 */
.section:has(+ .glance){padding-bottom:clamp(22px,3.4vw,40px)}
/* QW-5 */
.chip .t{color:var(--on-navy-line)}
/* -- Contact (Option A) --- */
.contact-grid{display:grid;grid-template-columns:1fr 340px;gap:clamp(20px,3.6vw,44px);align-items:start}
.contact-main{min-width:0}
.contact-form{margin:16px 0 0;max-width:560px}
.contact-form h2{font-family:var(--serif);font-weight:400;color:var(--navy);font-size:clamp(18px,2vw,22px);margin:0 0 12px}
.to-form{max-width:none}
.field{margin:0 0 12px;display:flex;flex-direction:column}
.field label{font-size:13px;letter-spacing:.04em;color:var(--label);text-transform:uppercase;margin-bottom:6px}
.field .opt{text-transform:none;letter-spacing:0;color:var(--mut)}
.field .req,.form-note .req{color:var(--gold);font-weight:600;letter-spacing:0;margin-left:1px}
.form-note{font-size:13px;color:var(--mut);margin:0 0 16px;letter-spacing:.01em}
.field input,.field select,.field textarea{font:inherit;font-size:15px;color:var(--ink);background:#fff;border:1px solid var(--line);border-radius:0;padding:11px 13px;width:100%}
.field textarea{resize:vertical;line-height:1.6}
.field input:focus,.field select:focus,.field textarea:focus{outline:2px solid var(--gold);outline-offset:1px;border-color:var(--gold)}
.contact-form .btn.solid{margin-top:6px}
.hp{position:absolute;left:-9999px}
.form-done{margin-top:18px;padding:16px 18px;border-left:3px solid var(--gold);background:#fff;color:var(--navy);font-size:15px;line-height:1.6}
/* Error message shown when the Netlify Function returns non-2xx (Brevo
   down, env vars missing, etc.). Same chassis as .form-done so it
   inherits the rest of the page rhythm, but the gold left rule swaps
   for a navy rule and the text colors lean toward the warning end. */
.form-fail{margin-top:18px;padding:16px 18px;border-left:3px solid var(--navy);background:#fff;color:var(--navy);font-size:15px;line-height:1.6}
.form-fail a{color:var(--gold);font-weight:600}
.form-fineprint{font-size:11px;color:var(--mut);margin:12px 0 0;line-height:1.55;letter-spacing:.01em}
.form-fineprint a{color:var(--mut);text-decoration:underline}
.grecaptcha-badge{visibility:hidden!important}
.contact-aside{background:linear-gradient(155deg,var(--navy-grad),var(--navy-d));color:#fff;border-top:3px solid var(--gold);padding:clamp(18px,2.2vw,26px);position:sticky;top:80px;overflow:hidden;isolation:isolate}
.contact-aside::before{content:"";position:absolute;top:0;left:0;width:200%;height:100%;pointer-events:none;z-index:0;background:linear-gradient(115deg,transparent 35%,rgba(217,188,125,.04) 44%,rgba(217,188,125,.13) 50%,rgba(217,188,125,.04) 56%,transparent 65%);transform:translateX(-55%);opacity:0;animation:heroSweep 10s ease-in-out infinite}
.contact-aside > *{position:relative;z-index:1}
@media(prefers-reduced-motion:reduce){.contact-aside::before{animation:none}}
.contact-aside h2{font-family:var(--serif);font-weight:400;color:#fff;font-size:19px;margin:0 0 10px}
.contact-aside p{margin:0 0 8px;font-size:14px;line-height:1.6;color:var(--on-navy)}
.contact-aside .ca-org{color:#fff;font-weight:600}
.contact-aside .ca-k{display:inline-block;min-width:54px;color:var(--on-navy-d);font-size:12px;letter-spacing:.08em;text-transform:uppercase}
.contact-aside .ca-es{color:var(--gold-l);font-style:italic}
.contact-aside a{color:#fff;border-bottom:1px solid var(--gold)}
.contact-aside a:hover{color:var(--gold-l)}
@media(max-width:880px){.contact-grid{grid-template-columns:1fr}.contact-aside{position:static}}

/* Underwriter strip (homepage) */
.uwstrip{background:var(--cream);border-top:1px solid var(--line);padding:clamp(20px,3vw,32px) 0}
.uwstrip-label{text-align:center;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--label);margin:0 0 12px}
.uwstrip-logos{list-style:none;margin:0;padding:0;display:flex;justify-content:center;align-items:center;gap:clamp(32px,7vw,72px);flex-wrap:wrap}
.uwstrip-logos li{margin:0;display:flex;align-items:center;justify-content:center}
.uwstrip-logos img{display:block;max-height:54px;max-width:200px;width:auto;height:auto;object-fit:contain;opacity:.85;transition:opacity .25s var(--ease)}
.uwstrip-logos img[src*="first-american"]{max-height:88px}
.uwstrip-logos img[src*="commonwealth-land-title"]{max-width:249px}
.uwstrip-logos img:hover{opacity:1}
@media(max-width:560px){.uwstrip-logos img{max-height:44px;max-width:150px}.uwstrip-logos img[src*="first-american"]{max-height:71px}.uwstrip-logos img[src*="commonwealth-land-title"]{max-width:187px}}

/* ── Homepage-scoped section overrides (do NOT apply sitewide) ─────────── */
/* What We Do: 40% shorter (x0.60) vs global .section padding */
.sect-home-what-we-do.section{padding-block:clamp(34px,4.8vw,62px)}
/* Value-statement band: 20% shorter (x0.80) */
.sect-home-valuestmt.section{padding-block:clamp(45px,6.4vw,83px)}

/* Footer social links */
.fsoc{display:flex;gap:14px;margin-top:14px}
.fsoc-a{display:inline-flex;align-items:center;justify-content:center;width:32px;height:32px;border-radius:6px;opacity:.92;transition:opacity .2s var(--ease),transform .2s var(--ease)}
.fsoc-a:hover{opacity:1;transform:translateY(-1px)}
.fsoc-a:focus-visible{outline:2px solid var(--gold);outline-offset:4px}

/* Footer quiet utility link */
.fdir{margin:10px 0 0;font-size:12px}
.fdir a{color:var(--on-navy);opacity:.7;transition:color .25s var(--ease),opacity .25s var(--ease)}
.fdir a:hover{color:var(--gold-l);opacity:1}

/* ── Area pages (Plan 7) ─── */
/* Navy banner frames the photo row; each photo carries a 3px gold border.
   Trick to avoid doubled inner borders: the inner grid has background:gold
   plus a 3px solid gold border, with 3px gaps between cells. The gap IS
   the shared border between adjacent photos, so where two photos meet
   the visible gold is a single 3px strip, not 6px. Outer photos get
   their outside edge from the grid's surrounding border. */
.news-article figure.area-banner{
  display:block;
  margin:18px 0 26px;
  padding:clamp(10px,1.4vw,16px);
  background:var(--navy-d);
  border:0
}
.news-article .area-banner-grid{
  display:grid;
  grid-template-columns:1.45fr 1.7fr 0.85fr;
  gap:3px;
  background:var(--gold);
  border:3px solid var(--gold)
}
.news-article .area-banner-cell{
  overflow:hidden;
  line-height:0;
  background:#000;
  min-width:0
}
.news-article .area-banner-cell img{
  display:block;
  width:100%;
  height:clamp(150px,18vw,210px);
  object-fit:cover;
  object-position:center;
  margin:0;
  border:0
}
/* Per-image object-position tuning. Each city has its own .ab-<slug> class
   on the figure so we can bias the crop where the subject sits off-center. */
.ab-coral-gables .area-banner-cell:nth-child(3) img{object-position:center 30%}
.ab-coconut-grove .area-banner-cell:nth-child(1) img{object-position:55% center}
.ab-key-biscayne .area-banner-cell:nth-child(3) img{object-position:60% center}
.ab-pinecrest .area-banner-cell:nth-child(3) img{object-position:55% center}
.ab-brickell .area-banner-cell:nth-child(2) img{object-position:70% center}

/* Center the prose and CTA blocks under the banner (text itself stays
   left-aligned; only the column shifts to the page's horizontal center). */
.news-article .area-banner~.prose,
.news-article .area-banner~.news-cta{margin-inline:auto}

/* ── Service Areas hub card grid ────────────────────────────────────────── */
/* Up to 3 cards per row, with the last row centered if it has only 1 or 2
   cards. Uses a 6-column track so partial rows can offset to col 3-4 (lone
   card) or cols 2-3 + 4-5 (pair). Pattern scales to any N: 1, 2, 4, 5, 7, 8
   all center cleanly; 3, 6, 9 are full rows. Cities are added alphabetically. */
.areas-cards{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border:1px solid var(--line);margin:26px auto;padding:0;list-style:none;max-width:none}
.areas-cards li{background:var(--cream);grid-column:span 2;transition:background .3s var(--ease)}
/* Lonely last item on its own row: center it */
.areas-cards li:nth-last-child(1):nth-child(3n+1){grid-column:3/span 2}
/* Last two items together on a row: center the pair */
.areas-cards li:nth-last-child(2):nth-child(3n+1){grid-column:2/span 2}
.areas-cards li:nth-last-child(1):nth-child(3n+2){grid-column:4/span 2}
.areas-cards li:hover{background:#fff}
.areas-cards a{display:block;padding:clamp(18px,2vw,24px);text-decoration:none;color:inherit}
.areas-cards h3{font-family:var(--serif);font-weight:400;color:var(--navy);font-size:19px;margin-bottom:10px;padding-bottom:9px;border-bottom:1px solid var(--line);transition:border-color .3s var(--ease),color .3s var(--ease)}
.areas-cards li:hover h3{border-bottom-color:var(--gold);color:var(--gold)}
.areas-cards p{font-size:14.5px;line-height:1.65;color:var(--mut);margin:0}
@media(max-width:880px){
  .areas-cards{grid-template-columns:1fr}
  .areas-cards li,.areas-cards li:nth-child(4),.areas-cards li:nth-child(5){grid-column:1}
}
@media(max-width:680px){
  .news-article .area-banner-grid{grid-template-columns:1fr;gap:3px}
  .news-article .area-banner-cell img{height:clamp(190px,42vw,230px)}
}

/* ── Footer Service Areas strip (Plan 7) ─── */
.foot-areas{grid-column:1/-1;border-top:1px solid rgba(255,255,255,.12);padding-top:18px;margin-top:8px;font-size:11.5px;color:var(--on-navy-d);display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 14px}
.foot-areas .fa-lbl{font-size:10px;letter-spacing:.18em;text-transform:uppercase;color:var(--on-navy-k);margin-right:var(--s3);flex-shrink:0}
.foot-areas a{color:var(--gold-l);text-decoration:none;border-bottom:1px solid rgba(193,154,77,.32);padding-bottom:1px;transition:border-color .2s var(--ease),color .2s var(--ease);margin-bottom:0}
.foot-areas a:hover{color:#fff;border-bottom-color:var(--gold);transform:none}
.foot-areas a::after{display:none}
/* Inconspicuous footer link to /credits/. Tiny, muted, right-aligned. */
.foot-meta{grid-column:1/-1;margin:14px 0 0;padding-top:10px;font-size:10.5px;color:var(--on-navy-k);opacity:.55;text-align:right;letter-spacing:.02em}
.foot-meta a{color:var(--on-navy-k);text-decoration:none;margin-bottom:0;border-bottom:1px solid transparent;transition:border-color .2s var(--ease),color .2s var(--ease)}
.foot-meta a:hover{color:var(--on-navy);border-bottom-color:var(--gold);transform:none}
.foot-meta a::after{display:none}

