*,*::before,*::after{box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  margin:0;
  background:var(--fog);
  color:var(--text-body);
  font-family:var(--font-sans);
}
a{color:var(--link);text-decoration:none;transition:color var(--duration-fast) var(--ease-out);}
a:hover{color:var(--link-hover);}
/* Every <img> carries explicit width and height attributes so the browser can
   reserve the right space before the file arrives. Those attributes are literal
   pixel values, so an image whose width CSS constrains would render at its full
   attribute height and stretch. `height:auto` restores the aspect ratio while
   keeping the reserved-space benefit. Rules that deliberately set a height
   (object-fit covers, the logos) declare it themselves and still win. */
img{max-width:100%;height:auto;display:block;}

.wrap{max-width:1440px;margin:0 auto;background:var(--white);box-shadow:0 1px 24px rgba(0,0,0,0.08);}

/* browser surfaces — theme what we didn't draw */
::selection{background:var(--infinity-blue);color:var(--white);}
:focus-visible{outline:2px solid var(--accent-primary);outline-offset:3px;border-radius:2px;}
html{scrollbar-color:#c4c4bc var(--fog);scrollbar-width:thin;}
::-webkit-scrollbar{width:11px;height:11px;}
::-webkit-scrollbar-track{background:var(--fog);}
::-webkit-scrollbar-thumb{background:#c4c4bc;border-radius:8px;border:2px solid var(--fog);}
::-webkit-scrollbar-thumb:hover{background:#a9a99f;}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{
    animation-duration:0.01ms!important;
    animation-iteration-count:1!important;
    transition-duration:0.01ms!important;
    scroll-behavior:auto!important;
  }
}

.eyebrow{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:var(--tracking-label);
  text-transform:uppercase;
}

/* image placeholder — swap for a real <img> when photography is ready */
.img-placeholder{
  position:relative;
  width:100%;
  height:100%;
  background:repeating-linear-gradient(135deg,#e2e2dc,#e2e2dc 12px,#ececE7 12px,#ececE7 24px);
  display:flex;
  align-items:center;
  justify-content:center;
  color:var(--text-muted);
  font-family:var(--font-sans);
  font-size:13px;
  text-align:center;
  padding:24px;
}

/* nav */
.site-nav{
  display:flex;
  align-items:center;
  justify-content:space-between;
  padding:20px 32px;
  border-bottom:1px solid var(--border-default);
  background:var(--white);
  position:relative;
  z-index:20;
}
.logo-link{display:block;line-height:0;}
.logo-img{height:44px;width:auto;display:block;}
.nav-links{display:flex;gap:32px;align-items:center;}
.nav-link{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:0.08em;
  color:var(--ink);
  text-transform:uppercase;
  transition:color var(--duration-fast) var(--ease-out);
}
.nav-link:hover{color:var(--infinity-blue);}
.nav-link-active{color:var(--infinity-blue);border-bottom:1px solid var(--infinity-blue);padding-bottom:2px;}
.nav-toggle{display:none;background:none;border:none;cursor:pointer;padding:8px;}
.nav-toggle span{display:block;width:22px;height:2px;background:var(--black);margin:5px 0;transition:transform var(--duration-base) var(--ease-out-expo),opacity var(--duration-fast) var(--ease-out);}
.nav-toggle.is-open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-toggle.is-open span:nth-child(2){opacity:0;}
.nav-toggle.is-open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}

/* hero */
.hero{position:relative;width:100%;height:640px;overflow:hidden;}
.hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0.05) 0%,rgba(0,0,0,0.55) 100%);pointer-events:none;}
.hero-content{position:absolute;left:56px;bottom:56px;right:56px;color:var(--white);}
.hero-kicker{font-family:var(--font-mono);font-size:12px;letter-spacing:var(--tracking-label);text-transform:uppercase;margin-bottom:14px;opacity:0.9;}
.hero-title{font-family:var(--font-display);font-size:64px;line-height:var(--leading-tight);margin:0 0 28px;}
/* The tagline lives inside the h1 so the heading carries the location keywords
   rather than the bare brand word, while reading exactly as it did before. */
.hero-title-line{display:block;font-family:var(--font-serif);font-size:24px;font-style:italic;font-weight:400;line-height:var(--leading-heading);margin-top:10px;}
.hero-subtitle{font-family:var(--font-serif);font-size:24px;font-style:italic;margin:0 0 28px;}
.hero-actions{display:flex;gap:16px;flex-wrap:wrap;}
.hero-award{
  position:absolute;top:24px;right:24px;
  background:var(--infinity-blue);
  border-radius:8px;
  padding:12px 16px;
  box-shadow:0 4px 16px rgba(0,0,0,0.12);
}
.hero-award-label{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);color:var(--white);opacity:0.8;text-transform:uppercase;}
.hero-award-value{font-family:var(--font-display);font-size:22px;color:var(--white);}

/* focal entrance — the hero image settles from a slight zoom while the copy
   arrives in a short authored stagger. This is the site's one rehearsed
   sequence, so it repeats identically on every hero and page-hero. */
@keyframes heroSettle{from{transform:scale(1.07);}to{transform:scale(1);}}
@keyframes heroFadeUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}
@keyframes heroPopIn{from{opacity:0;transform:scale(0.92);}to{opacity:1;transform:scale(1);}}

.hero>img,.page-hero>img{animation:heroSettle 7s var(--ease-out-expo) both;}
.hero-kicker,.page-hero-kicker{animation:heroFadeUp 600ms var(--ease-out-expo) both;}
.hero-title,.page-hero-title{animation:heroFadeUp 700ms var(--ease-out-expo) 110ms both;}
.hero-title-line{animation:heroFadeUp 700ms var(--ease-out-expo) 110ms both;}
.hero-subtitle,.page-hero-subtitle{animation:heroFadeUp 700ms var(--ease-out-expo) 220ms both;}
.hero-actions{animation:heroFadeUp 700ms var(--ease-out-expo) 330ms both;}
.hero-award{animation:heroPopIn 500ms var(--ease-out-expo) 480ms both;}

/* intro */
.intro{display:grid;grid-template-columns:1fr 1fr;gap:64px;padding:88px 56px;align-items:center;}
.intro-eyebrow{color:var(--infinity-blue);margin-bottom:16px;}
.intro-lead{font-family:var(--font-serif);font-size:22px;line-height:var(--leading-heading);color:var(--text-heading);margin:0 0 24px;}
.intro-body{font-family:var(--font-sans);font-size:16px;line-height:var(--leading-body);color:var(--text-body);margin:0 0 28px;}
.intro-link{color:var(--infinity-blue);font-family:var(--font-mono);font-size:12px;letter-spacing:0.08em;text-transform:uppercase;}
.intro-photo{width:100%;height:420px;border-radius:8px;overflow:hidden;}

/* pillars */
.pillars-wrap{padding:0 56px 88px;}
.pillars{display:grid;grid-template-columns:repeat(5,1fr);gap:1px;background:var(--border-default);border:1px solid var(--border-default);}
.pillar{display:block;position:relative;background:var(--white);padding:28px 20px;transition:transform var(--duration-base) var(--ease-out-expo),box-shadow var(--duration-base) var(--ease-out-expo);}
.pillar:hover{transform:translateY(-4px);box-shadow:var(--shadow-raised);z-index:1;}
.pillar:hover .pillar-title{color:var(--accent-primary-hover);}
.pillar-title{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);color:var(--infinity-blue);text-transform:uppercase;margin-bottom:8px;}
.pillar-body{font-family:var(--font-sans);font-size:14px;color:var(--text-body);}

/* testimonials */
.testimonials{background:var(--ink);padding:88px 56px;}
.testimonials-heading{font-family:var(--font-mono);font-size:12px;letter-spacing:var(--tracking-label);color:var(--white);opacity:0.7;text-transform:uppercase;margin-bottom:36px;text-align:center;}
.testimonial-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;}
.testimonial{border-left:2px solid var(--chimichurri-green);padding-left:20px;}
/* Star row above each quote, added in Phase 1. Sits tight to the quote so the
   two read as one unit, and slightly brighter than the attribution below it
   because it is the first thing scanned. */
.testimonial .star-rating{margin-bottom:12px;}
.testimonial-quote{font-family:var(--font-serif);font-size:17px;font-style:italic;color:var(--white);line-height:1.5;margin:0 0 16px;}
.testimonial-name{font-family:var(--font-mono);font-size:11px;letter-spacing:0.08em;color:var(--white);opacity:0.6;text-transform:uppercase;}

/* generic slider */
.slider{position:relative;}
.slider-slide{
  position:absolute;
  inset:0;
  opacity:0;
  pointer-events:none;
  transition:opacity var(--duration-deliberate) var(--ease-out);
}
.slider-slide.is-active{position:relative;opacity:1;pointer-events:auto;}
.slider-arrow{position:absolute;top:50%;transform:translateY(-50%);width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:16px;line-height:1;z-index:5;background:var(--white);border:1px solid var(--border-default);color:var(--black);padding:0;transition:background-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);}
.slider-arrow:hover{background:var(--fog);transform:translateY(-50%) scale(1.08);}
.slider-arrow:active{transform:translateY(-50%) scale(0.96);}
.slider-arrow-prev{left:-4px;}
.slider-arrow-next{right:-4px;}
.slider-dots{display:flex;gap:8px;justify-content:center;margin-top:24px;}
.slider-dot{width:8px;height:8px;border-radius:50%;border:none;padding:0;cursor:pointer;background:var(--border-subtle);transition:background-color var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out-expo);}
.slider-dot.is-active{background:var(--infinity-blue);transform:scale(1.25);}

/* testimonial slider (dark theme) */
/* min-height reserves room for the tallest slide, so the band does not jump
   height as the carousel advances. Raised from 170px in Phase 1: every card
   gained a star row above the quote, and at 170px a long quote overflowed the
   reserved space and bled through the crossfade. */
.testimonial-track{position:relative;max-width:720px;margin:0 auto;min-height:210px;}
.testimonials .slider-arrow{background:rgba(255,255,255,0.08);border-color:rgba(255,255,255,0.25);color:var(--white);}
.testimonials .slider-arrow:hover{background:rgba(255,255,255,0.18);}
.testimonials .slider-arrow-prev{left:-48px;}
.testimonials .slider-arrow-next{right:-48px;}
.testimonials .slider-dot{background:rgba(255,255,255,0.25);}
.testimonials .slider-dot.is-active{background:var(--white);}

/* neighborhoods / resources */
.feature-tiles{display:grid;grid-template-columns:1fr 1fr;}
.feature-tile{display:block;position:relative;height:320px;overflow:hidden;}
.feature-tile img{transition:transform var(--duration-deliberate) var(--ease-out-expo);}
.feature-tile:hover img{transform:scale(1.05);}
.feature-tile-overlay{position:absolute;inset:0;pointer-events:none;}
.feature-tile-overlay.dark{background:rgba(0,0,0,0.45);}
.feature-tile-overlay.blue{background:rgba(27,44,74,0.55);}
.feature-tile-content{position:absolute;left:40px;bottom:36px;right:40px;color:var(--white);}
.feature-tile-title{font-family:var(--font-display);font-size:26px;margin-bottom:8px;}
.feature-tile-body{font-family:var(--font-sans);font-size:14px;opacity:0.9;}

/* neighborhoods: single-row horizontal scroller */
.neighborhoods-heading{padding:56px 56px 0;text-align:center;}
.scroller-wrap{position:relative;padding:24px 56px 56px;}
.scroller{
  display:flex;
  gap:16px;
  overflow-x:auto;
  scroll-snap-type:x mandatory;
  scrollbar-width:none;
  -ms-overflow-style:none;
  padding:4px 0 4px;
}
.scroller::-webkit-scrollbar{display:none;}
/* The track is focusable so it can be scrolled with the arrow keys. Give it a
   visible ring when it is focused by keyboard, offset inward so the outline is
   not clipped by the overflow container. Cards keep their own default ring. */
.scroller:focus-visible{outline:2px solid var(--accent-primary);outline-offset:-2px;border-radius:4px;}
/* A card focused by keyboard is scrolled into view by the browser. Without a
   scroll margin it lands flush against the edge and reads as cut off. */
.scroller-card{scroll-margin-inline:16px;}
.scroller-card{
  position:relative;
  display:block;
  flex:0 0 auto;
  width:320px;
  height:240px;
  border-radius:var(--radius-md);
  overflow:hidden;
  scroll-snap-align:start;
  text-decoration:none;
  box-shadow:var(--shadow-card);
  transition:box-shadow var(--duration-base) var(--ease-out-expo);
}
.scroller-card:hover{box-shadow:var(--shadow-raised);}
.scroller-card img{width:100%;height:100%;object-fit:cover;position:absolute;inset:0;transition:transform var(--duration-deliberate) var(--ease-out-expo);}
.scroller-card:hover img{transform:scale(1.06);}
.scroller-card-overlay{position:absolute;inset:0;pointer-events:none;}
.scroller-card-overlay.dark{background:rgba(0,0,0,0.42);}
.scroller-card-overlay.blue{background:rgba(27,44,74,0.5);}
.scroller-card-content{position:absolute;left:20px;bottom:18px;right:20px;color:var(--white);}
.scroller-card-title{font-family:var(--font-display);font-size:20px;margin-bottom:4px;}
.scroller-card-body{font-family:var(--font-sans);font-size:13px;line-height:1.4;opacity:0.9;}
.scroller-arrow{
  position:absolute;top:50%;transform:translateY(-50%);
  width:44px;height:44px;border-radius:50%;
  background:var(--white);border:1px solid var(--border-default);
  display:flex;align-items:center;justify-content:center;
  cursor:pointer;font-size:16px;color:var(--black);z-index:5;padding:0;
  transition:background-color var(--duration-fast) var(--ease-out),transform var(--duration-fast) var(--ease-out);
}
.scroller-arrow:hover{background:var(--fog);transform:translateY(-50%) scale(1.08);}
.scroller-arrow:active{transform:translateY(-50%) scale(0.96);}
.scroller-arrow-prev{left:16px;}
.scroller-arrow-next{right:16px;}

/* statewide / markets served, kept deliberately quiet */
.markets-strip{padding:24px 56px;text-align:center;background:var(--fog);border-top:1px solid var(--border-default);}
.markets-strip p{font-family:var(--font-sans);font-size:13px;color:var(--text-muted);margin:0;}
.markets-strip a{color:var(--infinity-blue);}

/* place directory grid (neighborhoods.html, austin-areas.html, communities.html, market lists) */
.place-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;}
.place-card{display:block;text-decoration:none;}
.place-card-photo{position:relative;aspect-ratio:4/3;border-radius:var(--radius-md);overflow:hidden;background:var(--fog);margin-bottom:10px;}
.place-card-photo img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-deliberate) var(--ease-out-expo);}
.place-card:hover .place-card-photo img{transform:scale(1.06);}
.place-card-name{font-family:var(--font-serif);font-weight:600;font-size:15px;color:var(--black);transition:color var(--duration-fast) var(--ease-out);}
.place-card-tag{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);margin-top:2px;}
.place-card:hover .place-card-name{color:var(--infinity-blue);}
.place-group-title{font-family:var(--font-serif);font-weight:600;font-size:20px;color:var(--black);margin:48px 0 20px;}
.place-group-title:first-child{margin-top:0;}

/* schools / quick facts list on place pages */
.facts-list{list-style:none;padding:0;margin:0;font-family:var(--font-sans);font-size:14px;line-height:1.9;color:var(--text-body);}
.facts-list li{padding-left:18px;position:relative;}
.facts-list li::before{content:"";position:absolute;left:0;top:10px;width:6px;height:6px;border-radius:50%;background:var(--accent-primary);}

/* footer */
.site-footer{background:var(--black);color:var(--white);padding:64px 56px 32px;}
.footer-grid{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr 1fr;gap:36px;margin-bottom:48px;}
.footer-logo{height:40px;width:auto;}
.footer-heading{font-family:var(--font-serif);font-size:20px;margin-bottom:16px;}
.footer-label{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;margin-bottom:14px;opacity:0.6;}
.footer-text{font-family:var(--font-sans);font-size:13px;line-height:1.8;opacity:0.85;}
.footer-legal{border-top:1px solid rgba(255,255,255,0.15);padding-top:20px;font-family:var(--font-sans);font-size:11px;line-height:1.7;opacity:0.55;}

/* interior page hero (shorter than home hero, used on Buy/Sell/Team/Relocate/Waterfront/Ranch/Contact) */
.page-hero{position:relative;width:100%;height:360px;overflow:hidden;}
.page-hero-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(0,0,0,0.15) 0%,rgba(0,0,0,0.6) 100%);pointer-events:none;}
.page-hero-content{position:absolute;left:56px;bottom:40px;right:56px;color:var(--white);}
.page-hero-kicker{font-family:var(--font-mono);font-size:12px;letter-spacing:var(--tracking-label);text-transform:uppercase;margin-bottom:12px;opacity:0.9;}
.page-hero-title{font-family:var(--font-display);font-size:44px;line-height:var(--leading-tight);margin:0;}
.page-hero-subtitle{font-family:var(--font-serif);font-size:19px;font-style:italic;margin:10px 0 0;max-width:640px;}

/* generic section wrapper */
.section{padding:72px 56px;}
.section-narrow{max-width:800px;margin:0 auto;}
.section-title{font-family:var(--font-display);font-size:32px;color:var(--text-heading);margin:0 0 20px;}
.section-eyebrow{color:var(--infinity-blue);margin-bottom:14px;}
.section-body{font-family:var(--font-sans);font-size:16px;line-height:var(--leading-body);color:var(--text-body);}
.section-body p{margin:0 0 18px;}
.section-body p:last-child{margin-bottom:0;}

/* numbered step list (buyer/seller journey) */
.steps{display:flex;flex-direction:column;gap:0;max-width:880px;margin:0 auto;}
.step{display:grid;grid-template-columns:64px 1fr;gap:24px;padding:28px 0;border-bottom:1px solid var(--border-default);}
.step:last-child{border-bottom:none;}
.step-num{font-family:var(--font-display);font-size:28px;color:var(--border-subtle);}
.step-title{font-family:var(--font-serif);font-weight:600;font-size:18px;color:var(--black);margin:0 0 8px;}
.step-body{font-family:var(--font-sans);font-size:15px;line-height:1.65;color:var(--text-body);margin:0;}

/* team roster grid (meet the team) */
.team-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:32px;}
.team-card{text-align:center;}
.team-card-photo{aspect-ratio:1/1;border-radius:var(--radius-md);overflow:hidden;background:var(--fog);margin-bottom:14px;}
.team-card-photo img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-deliberate) var(--ease-out-expo);}
.team-card a:hover .team-card-photo img{transform:scale(1.06);}
.team-card-photo-placeholder{
  width:100%;height:100%;
  display:flex;align-items:center;justify-content:center;
  background:var(--fog);
  font-family:var(--font-display);
  font-size:28px;
  color:var(--text-muted);
}
.agent-bio-photo-placeholder{
  aspect-ratio:1/1;
  display:flex;align-items:center;justify-content:center;
  background:var(--fog);
  border-radius:var(--radius-md);
  font-family:var(--font-display);
  font-size:56px;
  color:var(--text-muted);
}
.bio-coming-soon{
  font-family:var(--font-mono);
  font-size:12px;
  letter-spacing:var(--tracking-label);
  text-transform:uppercase;
  color:var(--text-muted);
  border:1px dashed var(--border-subtle);
  border-radius:var(--radius-sm);
  padding:12px 16px;
  display:inline-block;
}
.team-card-name{font-family:var(--font-serif);font-weight:600;font-size:16px;color:var(--black);transition:color var(--duration-fast) var(--ease-out);}
.team-card-title{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary);margin-top:4px;}
.team-card a{display:block;}
.team-card a:hover .team-card-name{color:var(--infinity-blue);}

/* individual agent bio page */
.agent-bio{display:grid;grid-template-columns:320px 1fr;gap:56px;padding:72px 56px;align-items:start;}
.agent-bio-photo{border-radius:var(--radius-md);overflow:hidden;background:var(--fog);}
.agent-bio-photo img{width:100%;display:block;}
.agent-bio-name{font-family:var(--font-display);font-size:34px;margin:0 0 4px;}
.agent-bio-title{font-family:var(--font-mono);font-size:12px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary);margin-bottom:20px;}
.agent-bio-contact{font-family:var(--font-sans);font-size:14px;line-height:1.9;color:var(--text-body);margin-bottom:24px;padding-bottom:24px;border-bottom:1px solid var(--border-default);}
.agent-bio-contact a{color:var(--text-body);}
.agent-bio-contact a:hover{color:var(--infinity-blue);}

/* simple link list (waterfront lakes, ranch resources) */
.link-list{display:flex;flex-wrap:wrap;gap:10px 28px;list-style:none;padding:0;margin:0;}
.link-list a{font-family:var(--font-mono);font-size:12px;letter-spacing:0.06em;text-transform:uppercase;color:var(--text-body);}
.link-list a:hover{color:var(--infinity-blue);}

/* flat-color CTA banner (replaces photo banners the brand system deliberately avoids) */
.cta-banner{background:var(--ink);color:var(--white);padding:40px 56px;text-align:center;}
.cta-banner p{font-family:var(--font-serif);font-size:19px;font-style:italic;margin:0 0 20px;}

/* simple record cards (recently sold, etc.) */
.record-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;}
.record-card{border:1px solid var(--border-default);border-radius:var(--radius-md);padding:20px 24px;}
.record-card-title{font-family:var(--font-serif);font-weight:600;font-size:16px;color:var(--black);margin-bottom:4px;}
.record-card-meta{font-family:var(--font-sans);font-size:13px;color:var(--text-muted);}

/* lead form */
.lead-form{max-width:560px;}
.lead-form .field{margin-bottom:18px;}
.lead-form textarea.field-input{min-height:120px;resize:vertical;font-family:var(--font-sans);}
.form-honeypot{position:absolute;left:-9999px;}

/* 3-phased marketing strategy (sell page) */
.phase-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;}
.phase-card{border:1px solid var(--border-default);border-radius:var(--radius-md);padding:24px;background:var(--white);}
.phase-num{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary);margin-bottom:8px;}
.phase-title{font-family:var(--font-serif);font-weight:600;font-size:18px;margin-bottom:10px;color:var(--black);}
.phase-body{font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--text-body);}

.stat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;text-align:center;}
.stat-value{font-family:var(--font-display);font-size:40px;color:var(--infinity-blue);}
.stat-label{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);margin-top:6px;}
.stat-source{font-family:var(--font-sans);font-size:12px;color:var(--text-muted);text-align:center;margin-top:20px;}

.placeholder-note{
  background:var(--fog);
  border:1px dashed var(--border-subtle);
  border-radius:var(--radius-md);
  padding:20px 24px;
  font-family:var(--font-sans);
  font-size:13px;
  color:var(--text-muted);
  margin-top:16px;
}

/* stagger-reveal — applied by assets/motion.js to genuine repeated-item grids
   (team, place, pillars, phase, stat, record) the first time they scroll into
   view. Elements stay fully visible if JS never runs. */
.stagger-item{opacity:0;transform:translateY(14px);transition:opacity var(--duration-slow) var(--ease-out-expo),transform var(--duration-slow) var(--ease-out-expo);}
.stagger-item.is-visible{opacity:1;transform:translateY(0);}

/* ===========================================================================
   HOMEPAGE SECTIONS
   Added for the expanded homepage. Everything below reuses the existing tokens,
   type families, and spacing scale; no new fonts, colours, or primitives.
   =========================================================================== */

/* stat strip — sits directly under the hero, one row on desktop */
/* Stat strip.
   Five stats since Phase 1, one of which (the rating) is three lines tall. At
   that count a value-beside-label row runs out of width and the labels start
   breaking mid-phrase, so each cell stacks instead: value on top, label under
   it, centred. A grid rather than flex, so every column is exactly equal and
   the cells cannot end up different widths depending on label length.

   The column count steps down 5 -> 3 -> 2 -> 1 rather than letting items wrap
   wherever they land. Explicit steps are what stop a 5-item bar from becoming
   a 4-and-a-lonely-1 at a middling width. */
.statstrip{background:var(--infinity-blue);padding:26px 56px;}
.statstrip-inner{
  max-width:1080px;margin:0 auto;
  display:grid;grid-template-columns:repeat(4,1fr);
  gap:var(--space-5) var(--space-4);
  align-items:start;
}
.statstrip-item{
  display:flex;flex-direction:column;align-items:center;gap:6px;
  min-width:0;text-align:center;
}
.statstrip-value{font-family:var(--font-display);font-size:32px;line-height:1;color:var(--white);}
.statstrip-label{
  font-family:var(--font-sans);font-size:12px;line-height:1.35;
  color:var(--white);opacity:0.78;max-width:190px;
}
/* The stars sit between the value and the platform list. Slightly tightened
   margins so the three lines read as one cell rather than three stacked ones. */
.statstrip-stars{display:flex;justify-content:center;margin:-1px 0 1px;}

/* Separators between cells, drawn rather than added as elements. Dropped as
   soon as the grid rewraps, because a rule between two stacked rows is noise. */
@media (min-width:1025px){
  .statstrip-item + .statstrip-item{
    border-left:1px solid rgba(255,255,255,0.16);
  }
}

/* "where are you starting" router cards */
.choice-section{padding-bottom:0;}
.choice-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px;margin-top:8px;}
.choice-card{
  display:flex;flex-direction:column;
  background:var(--white);
  border:1px solid var(--border-default);
  border-radius:var(--radius-md);
  padding:32px 28px;
  text-decoration:none;
  transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out-expo),transform var(--duration-base) var(--ease-out-expo);
}
.choice-card:hover{border-color:var(--accent-primary);box-shadow:var(--shadow-raised);transform:translateY(-4px);}
.choice-card-title{font-family:var(--font-display);font-size:26px;color:var(--black);margin-bottom:12px;}
.choice-card-body{font-family:var(--font-sans);font-size:14px;line-height:var(--leading-body);color:var(--text-body);margin:0 0 20px;flex:1;}
.choice-card-cta{
  font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--accent-primary);
}

/* "what we do" — two feature tiles then four compact cards.
   UNUSED as of Phase 1. The homepage section that carried these was removed and
   nothing else on the site uses .service-grid or .service-card. Kept rather than
   deleted in case a later phase wants the pattern back; if nothing has claimed
   it by the end of the build, delete this block. */
.service-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:20px;margin-top:8px;}
.service-card{
  position:relative;display:flex;flex-direction:column;justify-content:flex-end;
  background:var(--fog);
  border:1px solid var(--border-default);
  border-radius:var(--radius-md);
  padding:26px 24px;overflow:hidden;text-decoration:none;
  transition:box-shadow var(--duration-base) var(--ease-out-expo),transform var(--duration-base) var(--ease-out-expo);
}
.service-card:hover{box-shadow:var(--shadow-raised);transform:translateY(-4px);}
.service-card-title{font-family:var(--font-display);font-size:22px;color:var(--black);margin-bottom:8px;}
.service-card-body{font-family:var(--font-sans);font-size:13px;line-height:1.55;color:var(--text-body);margin:0;}

/* the two growth categories get double width, a photo, and more room to talk */
.service-card-feature{grid-column:span 2;min-height:320px;padding:0;border:none;}
.service-card-feature img{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;
  transition:transform var(--duration-deliberate) var(--ease-out-expo);
}
.service-card-feature:hover img{transform:scale(1.05);}
.service-card-overlay{position:absolute;inset:0;background:linear-gradient(180deg,rgba(27,44,74,0.25) 0%,rgba(27,44,74,0.86) 100%);pointer-events:none;}
.service-card-content{position:relative;padding:28px;color:var(--white);}
.service-card-eyebrow{
  font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--white);opacity:0.85;margin-bottom:8px;
}
.service-card-feature .service-card-title{color:var(--white);font-size:28px;}
.service-card-feature .service-card-body{color:var(--white);opacity:0.92;font-size:14px;}

/* focus-area spotlights */
.spotlight{display:grid;grid-template-columns:1fr 1fr;gap:56px;padding:88px 56px;align-items:center;}
.spotlight-central{background:var(--fog);}
.spotlight-water{background:var(--white);}
.spotlight-reverse .spotlight-media{order:2;}
.spotlight-media{border-radius:var(--radius-md);overflow:hidden;aspect-ratio:5/4;background:var(--fog);}
.spotlight-media img{width:100%;height:100%;object-fit:cover;}
.spotlight-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:22px;}
.spotlight-actions{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px;}

/* "how we work" — the agent autonomy model */
.howwework{background:var(--ink);}
.howwework .section-title,.howwework .section-body{color:var(--white);}
.howwework .section-eyebrow{color:var(--white);opacity:0.7;}
.howwework-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;max-width:1080px;margin:44px auto 0;}
.howwework-item{border-top:2px solid var(--chimichurri-green);padding-top:20px;}
.howwework-num{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);color:var(--accent-spot-on-dark);margin-bottom:10px;}
.howwework-title{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--white);margin:0 0 10px;}
.howwework-body{font-family:var(--font-sans);font-size:14px;line-height:var(--leading-body);color:var(--white);opacity:0.82;margin:0;}
.experience-band{
  max-width:820px;margin:52px auto 0;padding-top:32px;
  border-top:1px solid rgba(255,255,255,0.18);
  text-align:center;
}
.experience-band p{font-family:var(--font-serif);font-size:19px;line-height:1.5;color:var(--white);margin:0 0 20px;}
.experience-band strong{color:var(--white);}
.experience-band .btn-outline{border-color:rgba(255,255,255,0.6);color:var(--white);}
.experience-band .btn-outline:hover{background:var(--white);color:var(--ink);}

/* homepage team strip */
.teamstrip-section{background:var(--fog);}
.teamstrip{
  display:grid;grid-template-columns:repeat(7,1fr);gap:20px;
  max-width:1180px;margin:40px auto 0;
}
.teamstrip-card{display:block;text-align:center;text-decoration:none;}
.teamstrip-photo{aspect-ratio:1/1;border-radius:50%;overflow:hidden;background:var(--white);margin-bottom:10px;}
.teamstrip-photo img{width:100%;height:100%;object-fit:cover;transition:transform var(--duration-deliberate) var(--ease-out-expo);}
.teamstrip-card:hover .teamstrip-photo img{transform:scale(1.07);}
.teamstrip-name{font-family:var(--font-sans);font-size:12px;line-height:1.35;color:var(--text-body);transition:color var(--duration-fast) var(--ease-out);}
.teamstrip-card:hover .teamstrip-name{color:var(--accent-primary);}

/* free tools */
.tools-section{background:var(--white);}
.tools-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;margin-top:8px;}
.tool-card{
  display:block;background:var(--fog);border-radius:var(--radius-md);
  padding:26px 24px;text-decoration:none;
  border-left:3px solid var(--accent-primary);
  transition:transform var(--duration-base) var(--ease-out-expo),box-shadow var(--duration-base) var(--ease-out-expo);
}
.tool-card:hover{transform:translateY(-3px);box-shadow:var(--shadow-card);}
.tool-card-title{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--black);margin-bottom:8px;}
.tool-card-body{font-family:var(--font-sans);font-size:13px;line-height:1.55;color:var(--text-body);margin:0;}

/* markets served, as readable prose rather than a wall of links */
.coverage-section{background:var(--fog);}
.coverage-block{margin-top:28px;}
.coverage-label{
  font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--accent-primary);margin-bottom:8px;
}
.coverage-text{font-family:var(--font-sans);font-size:16px;line-height:1.75;color:var(--text-body);margin:0;}

/* ===========================================================================
   SHARED CONTACT FORM
   =========================================================================== */
.form-section{background:var(--fog);}
.form-shell{
  display:grid;grid-template-columns:0.85fr 1.15fr;gap:56px;
  max-width:1040px;margin:0 auto;align-items:start;
}
.form-intro .section-title{margin-bottom:16px;}
.form-direct{margin-top:20px;font-size:15px;line-height:1.8;}
.form-body{position:relative;}
.form-body .lead-form{max-width:none;}
.form-row{display:grid;grid-template-columns:1fr 1fr;gap:18px;}
.form-row .field{margin-bottom:18px;}
.field-required{
  font-weight:400;letter-spacing:0.04em;color:var(--accent-primary);
  text-transform:none;font-size:10px;margin-left:4px;
}
.lead-form textarea.field-input{min-height:120px;resize:vertical;}
.form-consent{
  font-family:var(--font-sans);font-size:12px;line-height:1.6;
  color:var(--text-muted);margin:16px 0 0;max-width:520px;
}
.form-success,.form-error{
  background:var(--white);border:1px solid var(--border-default);
  border-left:3px solid var(--chimichurri-green);
  border-radius:var(--radius-md);padding:28px 32px;
}
.form-error{border-left-color:#8A2E2E;}
.form-success-title{font-family:var(--font-display);font-size:24px;color:var(--black);margin:0 0 10px;}
.form-success[hidden],.form-error[hidden]{display:none;}

/* compact CTA band — the floor every page meets */
.cta-band{background:var(--infinity-blue);padding:64px 56px;}
.cta-band-title{font-family:var(--font-display);font-size:30px;color:var(--white);margin:0 0 14px;}
.cta-band-body{font-family:var(--font-sans);font-size:16px;line-height:var(--leading-body);color:var(--white);opacity:0.88;margin:0 0 26px;}
.cta-band-actions{display:flex;gap:14px;justify-content:center;flex-wrap:wrap;}
.cta-band-outline{border-color:rgba(255,255,255,0.65);color:var(--white);}
.cta-band-outline:hover{background:var(--white);color:var(--infinity-blue);}

/* ===========================================================================
   AGENT PROFILE ADDITIONS
   =========================================================================== */
.agent-vcard-btn{display:block;text-align:center;margin-top:18px;}
.agent-qr{
  margin-top:22px;padding:18px;text-align:center;
  background:var(--fog);border-radius:var(--radius-md);
}
.agent-qr svg{margin:0 auto;max-width:150px;height:auto;}
.agent-qr-caption{
  font-family:var(--font-sans);font-size:11px;line-height:1.5;
  color:var(--text-muted);margin-top:10px;
}
.agent-meta{margin-top:20px;padding-top:16px;border-top:1px solid var(--border-default);}
.agent-meta-label{
  font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);
  text-transform:uppercase;color:var(--text-muted);margin-bottom:6px;
}
.agent-meta-value{font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--text-body);}
.agent-meta-gap{color:var(--text-muted);font-size:13px;}
.agent-links{margin-top:26px;}

/* testimonial grids of one and two, so a single quote does not sit in a
   third-width column with two empty ones beside it */
.testimonial-grid-1{grid-template-columns:minmax(0,720px);justify-content:center;}
.testimonial-grid-2{grid-template-columns:repeat(2,1fr);}

/* ===========================================================================
   TILE GRID — /resources
   =========================================================================== */
.tile-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;}
.tile{
  display:flex;flex-direction:column;
  background:var(--white);border:1px solid var(--border-default);
  border-radius:var(--radius-md);padding:28px 26px;text-decoration:none;
  transition:border-color var(--duration-base) var(--ease-out),box-shadow var(--duration-base) var(--ease-out-expo),transform var(--duration-base) var(--ease-out-expo);
}
.tile:hover{border-color:var(--accent-primary);box-shadow:var(--shadow-raised);transform:translateY(-3px);}
.tile-title{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--black);margin-bottom:10px;}
.tile-body{font-family:var(--font-sans);font-size:13px;line-height:1.6;color:var(--text-body);margin:0 0 16px;flex:1;}
.tile-cta{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary);}
.tile-highlight{background:var(--fog);border-color:var(--accent-primary);}

/* ===========================================================================
   MORTGAGE CALCULATOR
   =========================================================================== */
.calc{display:grid;grid-template-columns:0.9fr 1.1fr;gap:48px;max-width:1040px;margin:0 auto;align-items:start;}
.calc-inputs .field{margin-bottom:16px;}
.calc-row{display:grid;grid-template-columns:1fr 1fr;gap:16px;}
.calc-hint{font-family:var(--font-sans);font-size:11px;color:var(--text-muted);margin-top:4px;line-height:1.5;}
.calc-results{background:var(--fog);border-radius:var(--radius-md);padding:32px;position:sticky;top:24px;}
.calc-total-label{font-family:var(--font-mono);font-size:11px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--text-muted);}
.calc-total{font-family:var(--font-display);font-size:44px;line-height:1.1;color:var(--infinity-blue);margin:6px 0 4px;}
.calc-total-note{font-family:var(--font-sans);font-size:12px;color:var(--text-muted);margin-bottom:24px;}
.calc-breakdown{list-style:none;padding:0;margin:0;border-top:1px solid var(--border-default);}
.calc-breakdown li{
  display:flex;justify-content:space-between;gap:16px;align-items:baseline;
  padding:12px 0;border-bottom:1px solid var(--border-default);
  font-family:var(--font-sans);font-size:14px;color:var(--text-body);
}
.calc-breakdown .calc-amount{font-weight:600;color:var(--black);font-variant-numeric:tabular-nums;}
.calc-breakdown li[hidden]{display:none;}
.calc-summary{margin-top:24px;padding-top:20px;border-top:1px solid var(--border-default);}
.calc-summary-row{
  display:flex;justify-content:space-between;gap:16px;
  font-family:var(--font-sans);font-size:13px;color:var(--text-muted);padding:5px 0;
}
.calc-summary-row span:last-child{color:var(--black);font-weight:600;font-variant-numeric:tabular-nums;}
.calc-disclaimer{
  background:var(--white);border:1px dashed var(--border-subtle);border-radius:var(--radius-md);
  padding:18px 20px;margin-top:24px;
  font-family:var(--font-sans);font-size:12px;line-height:1.65;color:var(--text-muted);
}

/* ===========================================================================
   SCHOOL DISTRICTS
   =========================================================================== */
.district-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;max-width:1000px;margin:0 auto;}
.district-card{background:var(--white);border:1px solid var(--border-default);border-radius:var(--radius-md);padding:24px 26px;}
.district-name{font-family:var(--font-serif);font-weight:600;font-size:17px;color:var(--black);margin:0 0 4px;}
.district-areas{font-family:var(--font-mono);font-size:10px;letter-spacing:var(--tracking-label);text-transform:uppercase;color:var(--accent-primary);margin-bottom:12px;}
.district-body{font-family:var(--font-sans);font-size:14px;line-height:1.6;color:var(--text-body);margin:0;}
.notice-box{
  background:var(--fog);border-left:3px solid var(--accent-primary);
  border-radius:var(--radius-sm);padding:20px 24px;margin:28px auto 0;max-width:800px;
  font-family:var(--font-sans);font-size:14px;line-height:1.65;color:var(--text-body);
}
.notice-box strong{color:var(--black);}
.notice-box p{margin:0 0 10px;}
.notice-box p:last-child{margin-bottom:0;}

/* ===========================================================================
   FOOTER LEGAL
   =========================================================================== */
.footer-legal p{margin:0 0 12px;}
.footer-legal p:last-child{margin-bottom:0;}
.footer-legal a{color:var(--white);opacity:0.9;text-decoration:underline;}
.footer-legal a:hover{color:var(--white);opacity:1;}
.footer-legal-links{display:flex;flex-wrap:wrap;gap:8px 12px;align-items:center;}
.footer-legal-licenses{opacity:0.85;}
.footer-eho{font-size:14px;margin-right:2px;}

/* contact page two-column block. A class rather than an inline grid, so the
   responsive rules below can actually collapse it. */
.contact-cols{display:grid;grid-template-columns:1fr 1fr;gap:48px;}

/* directory placeholder tiles for places without photography yet */
.place-card-photo .img-placeholder{position:absolute;inset:0;font-size:12px;}

/* responsive */
@media (max-width:1280px){
  /* Nine nav items since Phase 1. Tighten the gap well before the row wraps. */
  .nav-links{gap:18px;}
  .teamstrip{grid-template-columns:repeat(5,1fr);}
}

@media (max-width:1024px){
  /* Nine nav items still sit on one row between 768px and 1024px, where the
     hamburger has not taken over yet. Tighten again so the row cannot overflow
     into the logo at the narrow end of that range. */
  .nav-links{gap:13px;}
  .nav-link{font-size:11px;letter-spacing:0.06em;}
  .site-nav{padding:20px 24px;}

  .statstrip{padding:24px 40px;}
  /* Two by two. Four across at this width would squeeze the labels narrower
     than the words in them, and 2x2 divides evenly where 3 across would leave
     the fourth cell orphaned on its own row. */
  .statstrip-inner{grid-template-columns:repeat(2,1fr);gap:var(--space-5) var(--space-4);}
  .choice-grid{grid-template-columns:1fr;}
  .service-grid{grid-template-columns:repeat(2,1fr);}
  .service-card-feature{grid-column:span 2;}
  .spotlight{grid-template-columns:1fr;gap:36px;padding:64px 40px;}
  .spotlight-reverse .spotlight-media{order:0;}
  .howwework-grid{grid-template-columns:1fr;gap:24px;}
  .teamstrip{grid-template-columns:repeat(4,1fr);}
  .tools-strip{grid-template-columns:1fr;}
  .form-shell{grid-template-columns:1fr;gap:36px;}
  .calc{grid-template-columns:1fr;gap:32px;}
  .calc-results{position:static;}
  .tile-grid{grid-template-columns:repeat(2,1fr);}
  .district-grid{grid-template-columns:1fr;}
  .footer-grid{grid-template-columns:1fr 1fr;gap:32px;}
}

@media (max-width:1024px){
  .intro{grid-template-columns:1fr;gap:40px;padding:64px 40px;}
  .pillars{grid-template-columns:repeat(2,1fr);}
  .testimonial-grid{grid-template-columns:1fr;gap:28px;}
  .footer-grid{grid-template-columns:1fr 1fr;gap:32px;}
  .hero{height:560px;}
  .hero-title{font-size:48px;}
  .team-grid{grid-template-columns:repeat(3,1fr);}
  .agent-bio{grid-template-columns:240px 1fr;gap:40px;padding:56px 40px;}
  .record-grid{grid-template-columns:1fr;}
  .place-grid{grid-template-columns:repeat(3,1fr);}
}

@media (max-width:768px){
  .site-nav{padding:16px 20px;}
  .nav-links{
    display:flex;
    position:absolute;
    top:100%;left:0;right:0;
    flex-direction:column;
    align-items:flex-start;
    gap:0;
    background:var(--white);
    border-bottom:1px solid var(--border-default);
    padding:8px 20px 20px;
    opacity:0;
    transform:translateY(-6px);
    visibility:hidden;
    pointer-events:none;
    transition:opacity var(--duration-base) var(--ease-out),transform var(--duration-base) var(--ease-out-expo),visibility var(--duration-base);
  }
  .nav-links.open{opacity:1;transform:translateY(0);visibility:visible;pointer-events:auto;}
  .nav-links .nav-link{padding:12px 0;width:100%;}
  .nav-links .btn{margin-top:12px;}
  .nav-toggle{display:block;}

  .hero{height:520px;}
  .hero-content{left:20px;right:20px;bottom:32px;}
  .hero-title{font-size:36px;}
  .hero-title-line{font-size:18px;}
  .hero-subtitle{font-size:18px;}
  .hero-award{top:16px;right:16px;padding:8px 12px;}
  .hero-award-value{font-size:16px;}

  .intro{padding:48px 20px;}
  .intro-lead{font-size:19px;}

  .pillars-wrap{padding:0 20px 48px;}
  .pillars{grid-template-columns:1fr;}

  .testimonials{padding:56px 20px;}

  .feature-tiles{grid-template-columns:1fr;}

  .statewide{padding:48px 20px;}
  .statewide p{font-size:17px;}

  .site-footer{padding:48px 20px 24px;}
  .footer-grid{grid-template-columns:1fr;gap:28px;}

  .page-hero{height:280px;}
  .page-hero-content{left:20px;right:20px;bottom:24px;}
  .page-hero-title{font-size:30px;}

  .section{padding:48px 20px;}
  .team-grid{grid-template-columns:repeat(2,1fr);gap:20px;}
  .agent-bio{grid-template-columns:1fr;padding:40px 20px;gap:28px;}
  .agent-bio-photo{max-width:280px;}
  .cta-banner{padding:32px 20px;}

  .phase-grid{grid-template-columns:1fr;}
  .stat-grid{grid-template-columns:1fr;gap:20px;}
  .stat-value{font-size:32px;}

  .testimonials .slider-arrow{display:none;}
  .neighborhoods-heading{padding:40px 20px 0;}
  .scroller-wrap{padding:20px 20px 40px;}
  .scroller-card{width:240px;height:190px;}
  .scroller-arrow{display:none;}
  .markets-strip{padding:20px;}

  .place-grid{grid-template-columns:repeat(2,1fr);gap:16px;}
  .place-group-title{margin:32px 0 16px;}

  /* homepage and shared components at phone width */
  .statstrip{padding:22px 20px;}
  .statstrip-inner{grid-template-columns:repeat(2,1fr);gap:20px 16px;}
  /* Four items fill two columns exactly, so the rating no longer needs to span
     the row to avoid being orphaned. Spanning it now would break the 2x2. */
  .statstrip-value{font-size:26px;}
  .statstrip-label{font-size:11px;max-width:none;}

  .choice-card{padding:26px 22px;}
  .choice-card-title{font-size:22px;}

  .service-grid{grid-template-columns:1fr;}
  .service-card-feature{grid-column:span 1;min-height:260px;}
  .service-card-feature .service-card-title{font-size:24px;}
  .service-card-content{padding:22px;}

  .spotlight{padding:48px 20px;gap:28px;}
  .howwework-grid{margin-top:32px;}
  .experience-band p{font-size:17px;}

  .teamstrip{grid-template-columns:repeat(3,1fr);gap:14px;}
  .teamstrip-name{font-size:11px;}

  .tools-strip{gap:14px;}
  .coverage-text{font-size:15px;}

  .contact-cols{grid-template-columns:1fr;gap:32px;}
  .form-row{grid-template-columns:1fr;gap:0;}
  .form-success,.form-error{padding:22px 20px;}
  .form-success-title{font-size:20px;}

  .cta-band{padding:48px 20px;}
  .cta-band-title{font-size:24px;}

  .agent-qr svg{max-width:132px;}

  .testimonial-grid-2{grid-template-columns:1fr;}
  .tile-grid{grid-template-columns:1fr;}

  .calc-row{grid-template-columns:1fr;gap:0;}
  .calc-results{padding:24px 20px;}
  .calc-total{font-size:34px;}

  .footer-legal-links{gap:6px 10px;}
}

/* 320px is the narrowest viewport we support. Nothing may overflow it. */
@media (max-width:380px){
  /* One per row at 380px. Two columns of a 32px display figure plus a
     two-line label does not fit, and half-legible is worse than tall. */
  .statstrip-inner{grid-template-columns:1fr;gap:18px;}
  .teamstrip{grid-template-columns:repeat(2,1fr);}
  .hero-title{font-size:30px;}
  .section-title{font-size:24px;}
  .calc-total{font-size:30px;}
}
