:root {
  --bg:#f6f6f6; --surface:#fbfbfb; --text:#1a1a1a; --muted:#666666; --line:#d9d9d9;
  --brand:#28355d; --brand-2:#febd59; --accent:#febd59; --shadow:0 14px 34px rgba(0,0,0,.10);
  --radius:18px; --wrap:min(1140px, calc(100vw - 2rem)); --brand-logo-size:90px; --brand-logo-size-mobile:90px; --header-offset:80px;
  --brand-logo-scale:1; --brand-logo-scale-mobile:1;
  --footer-logo-size:50px; --footer-logo-size-mobile:44px; --footer-logo-scale:4.5; --footer-logo-scale-mobile:3.3;
  --mobile-hero-height:100svh;
  --hero-light-fade:linear-gradient(90deg, #efefef 0%, #f2f2f2 62%, #f7f7f7 100%);
  --hero-lawn-background:
    linear-gradient(135deg, rgba(0,0,0,.48), rgba(0,0,0,.32)),
    url("../images/gallery/hero.webp") center 60%/cover no-repeat;
}
* { box-sizing:border-box; }
.hidden-field { display:none; }
.form-submit-sent { background:#16a34a !important; border-color:#16a34a !important; color:#f2f2f2 !important; cursor:default; }
html { scroll-behavior:smooth; }
body {
  margin:0; font:16px/1.65 "Montserrat", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; color:var(--text); background:var(--bg);
}
#main-content { position:relative; overflow:hidden; }
#main-content::before {
  content:""; position:absolute; inset:0; z-index:1; pointer-events:none;
  background:url("../images/branding/greghallamlogo2.png") center / 320px auto repeat;
  opacity:.018;
}
#main-content > * { position:relative; z-index:2; }
a { color:inherit; text-decoration:none; }
img { display:block; max-width:100%; }
button, input, select, textarea { font:inherit; }
.skip-link {
  position:fixed; left:1rem; top:0; transform:translateY(calc(-100% - 1rem));
  padding:.75rem 1rem; background:var(--brand); color:#f2f2f2; border-radius:999px; z-index:1000;
}
.skip-link:focus { top:1rem; transform:none; }
.wrap { width:var(--wrap); margin:0 auto; }
.section { padding:5.5rem 0; }
.surface { background:transparent; }
.eyebrow { margin:0 0 .75rem; color:var(--brand-2); font-weight:700; letter-spacing:.08em; text-transform:uppercase; font-size:.82rem; }
h1, h2, h3 { font-family:"Montserrat", "Segoe UI", Tahoma, Geneva, Verdana, sans-serif; font-weight:800; letter-spacing:-.025em; line-height:1.02; margin:0 0 1rem; }
h1 { font-size:clamp(2.7rem, 4vw, 4.8rem); }
h2 { font-size:clamp(2rem, 3vw, 3rem); }
h3 { font-size:1.35rem; }
p { margin:0 0 1rem; color:var(--muted); }

.site-header {
  position:sticky; top:0; z-index:100; color:#f2f2f2;
  background:rgba(15,45,82,.96); backdrop-filter:blur(10px);
  border-bottom:1px solid rgba(242,242,242,.08); box-shadow:0 8px 20px rgba(0,0,0,.18);
}
.header-row, .hero-grid, .split-grid, .contact-grid { display:grid; gap:1.5rem; }
.header-row { grid-template-columns:auto 1fr auto; align-items:center; padding:0; }
.brand { display:flex; align-items:center; gap:.7rem; }
.brand img {
  width:auto; height:var(--brand-logo-size); flex:0 0 auto; object-fit:contain; padding:0; background:transparent; border-radius:0;
}
.brand > span { display:flex; flex-direction:column; justify-content:space-between; height:var(--brand-logo-size); padding:0; white-space:nowrap; }
.brand strong {
  display:block; margin:0; color:#f5f7f8; font-family:"Montserrat", "Arial Black", "Segoe UI", sans-serif; font-size:clamp(2rem, 2.95vw, 2.8rem);
  font-weight:900; line-height:.8; letter-spacing:.01em; text-transform:uppercase; text-shadow:0 2px 4px rgba(0,0,0,.22);
}
.brand small {
  display:block; margin:0; color:rgba(242,242,242,.92); font-family:"Montserrat", "Arial Black", "Segoe UI", sans-serif; font-size:clamp(.92rem, 1.12vw, 1.16rem);
  font-weight:800; line-height:.9; letter-spacing:.02em; text-transform:uppercase; text-shadow:0 2px 4px rgba(0,0,0,.18);
}
.site-nav { display:flex; align-items:center; justify-content:flex-end; justify-self:end; gap:1.55rem; font-size:1.06rem; font-weight:700; }
.site-nav a { color:rgba(242,242,242,.9); }
.site-nav a:hover, .site-nav a:focus-visible, .footer-links a:hover, .footer-links a:focus-visible { color:#f2f2f2; }
.site-nav .nav-contact {
  display:inline-flex; align-items:center; justify-content:center; min-height:36px; padding:.48rem 1rem; border-radius:999px;
  background:var(--accent); border:1px solid rgba(0,0,0,.18); color:#0f2d52; font-weight:800; box-shadow:none; outline:none;
}
.site-nav .nav-contact:hover, .site-nav .nav-contact:focus-visible {
  color:#0f2d52; background:#dbb200; transform:translateY(-1px); box-shadow:none; outline:2px solid rgba(244,196,0,.35); outline-offset:2px;
}
.nav-toggle { display:none; }
.nav-toggle-icon,
.nav-toggle-icon::before,
.nav-toggle-icon::after {
  display:block; width:20px; height:2.5px; border-radius:999px; background:currentColor;
  transition:transform .2s ease, opacity .2s ease, background-color .2s ease;
}
.nav-toggle-icon { position:relative; }
.nav-toggle-icon::before,
.nav-toggle-icon::after { content:""; position:absolute; left:0; }
.nav-toggle-icon::before { top:-6px; }
.nav-toggle-icon::after { top:6px; }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon { background:transparent; }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon::before { transform:translateY(6px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] .nav-toggle-icon::after { transform:translateY(-6px) rotate(-45deg); }

.hero {
  padding:5rem 0 4rem;
  background:var(--hero-lawn-background);
  background-attachment:fixed;
  background-position:center;
}
.hero-grid { display:grid; grid-template-columns:1fr; justify-items:center; align-items:center; gap:1.5rem; }
.hero-copy { width:min(100%, 42rem); text-align:center; }
.hero-eyebrow {
  margin:0 0 .6rem; color:var(--accent); font-weight:700; font-size:clamp(.88rem, 1.1vw, 1.05rem);
  letter-spacing:.04em; text-transform:uppercase;
}
.hero-vote-date {
  margin:0; color:rgba(242,242,242,.88); font-weight:700; font-size:clamp(1rem, 1.3vw, 1.15rem);
  letter-spacing:.02em;
}
.split-grid, .contact-grid { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); align-items:start; gap:1.5rem; }
.hero .eyebrow, .hero h1, .hero p, .hero li { color:#f2f2f2; }
.hero .eyebrow { color:var(--accent); }
.hero h1 {
  margin-bottom:1rem; color:#f2f2f2; font-size:clamp(2.35rem, 3.35vw, 4.1rem);
}
.lead { font-size:1.06rem; max-width:62ch; color:rgba(242,242,242,.84) !important; }
.actions, .check-list, .schedule, .area-list, .footer-links { display:grid; gap:1rem; }
.actions { grid-template-columns:repeat(2, max-content); margin:1.35rem 0; }
.hero-copy .actions { margin-top:2rem; justify-content:center; }
.hero .actions .button { border-radius:999px; }
.button {
  display:inline-flex; align-items:center; justify-content:center; min-height:48px; padding:.8rem 1.25rem;
  border-radius:10px; border:1px solid var(--brand); font-weight:700; transition:.2s ease; cursor:pointer;
}
.button:hover, .button:focus-visible { transform:translateY(-1px); }
.button-primary { background:linear-gradient(135deg, var(--brand), #163d6e); color:#f2f2f2; box-shadow:var(--shadow); }
.button-secondary { background:transparent; color:#f2f2f2; border-color:rgba(242,242,242,.4); }
.button-light { background:#f2f2f2; color:var(--brand); border-color:#f2f2f2; }
.button-outline-light { background:transparent; color:#f2f2f2; border-color:rgba(242,242,242,.78); }
.call-cta-label-mobile { display:none; }
.contact-form .button-primary { background:var(--accent); border-color:var(--accent); color:#0f2d52; font-weight:800; }
.contact-form .button-primary:hover, .contact-form .button-primary:focus-visible { background:#dbb200; border-color:#dbb200; }
.hero-card, .info-card, .service-card, .contact-form, .map-card {
  background:var(--surface); border:1px solid var(--line); border-radius:var(--radius); box-shadow:var(--shadow);
}
.hero-card { padding:1.3rem; }
.hero-form-card {
  max-width:430px; justify-self:end; width:100%; padding:1.15rem 1.15rem 1rem;
  background:#f7f7f7;
}
#quote-form { scroll-margin-top:calc(var(--header-offset) + 1px); }
.hero-form-card h2 { font-size:clamp(1.75rem, 2.2vw, 2.15rem); margin-bottom:1rem; color:#0a0a0a; }
.hero-form-intro { margin-bottom:.7rem; font-size:.96rem; }
.hero-card p { color:var(--muted); }
.hero-card .eyebrow { color:var(--brand-2); }
.hero-card .contact-form { padding:0; gap:.72rem; border:0; box-shadow:none; background:transparent; }
.hero-card .button { width:100%; }
.form-row { display:grid; grid-template-columns:repeat(2, minmax(0,1fr)); gap:.75rem; }

/* ── Section backgrounds (alternating shades) ── */
#contact { background:#f5f6f8; scroll-margin-top:var(--header-offset); }
#about { background:#f5f6f8; }
#vision { background:#ffffff; }
#faq { background:#f5f6f8 !important; }
#area { background:#ffffff; }

.section-heading { max-width:48rem; margin:0 auto 2.75rem; text-align:center; }
.section-heading h2 { font-size:clamp(1.9rem, 2.5vw, 2.45rem); margin-bottom:.6rem; color:var(--brand); }
.section-heading p:last-child { max-width:42rem; margin:0 auto; font-size:1rem; color:var(--muted); }
.section-heading-with-social { display:grid; justify-items:center; gap:1rem; }
.section-heading-with-social .social-icon-links { gap:2rem; }
.section-heading-with-social h2,
.section-heading-with-social p { margin-bottom:0; }
.section-heading-with-social p { max-width:42rem; font-size:1rem; color:var(--muted); }
.social-icon-links {
  display:flex; align-items:center; justify-content:center; gap:1rem; flex-wrap:wrap;
}
.social-icon-links .social-icon-link {
  width:56px; height:56px; display:inline-flex; align-items:center; justify-content:center; border-radius:999px;
  background:var(--brand); color:#f2f2f2; border:1px solid rgba(255,255,255,.08); box-shadow:0 10px 24px rgba(0,0,0,.18);
  transition:.2s ease;
}
.social-icon-link svg { width:24px; height:24px; display:block; }
.social-icon-link:hover,
.social-icon-link:focus-visible { background:var(--accent); color:#f2f2f2; transform:translateY(-1px); }
.service-grid, .gallery-grid { display:grid; gap:1rem; }
.service-grid { grid-template-columns:repeat(3, minmax(0,1fr)); align-items:stretch; }
.service-card {
  padding:1.3rem; background:linear-gradient(180deg, #fbfbfb, #f3f3f3);
  display:flex; flex-direction:column; justify-content:space-between; gap:1rem;
}
.service-card-head { display:block; }
.service-card h3 { margin-bottom:.4rem; color:var(--brand); }
.service-card-head p { margin:0; font-size:.96rem; }
.service-list { list-style:none; padding:0; margin:0; display:grid; gap:.7rem; }
.service-list li {
  display:flex; align-items:flex-start; gap:.7rem; padding-top:.7rem; border-top:1px solid #e2e2e2; color:var(--text); font-weight:600;
}
.service-list li::before {
  content:""; width:.55rem; height:.55rem; margin-top:.38rem; border-radius:999px; background:var(--accent); flex:0 0 .55rem;
}
.schedule, .check-list, .area-list { list-style:none; padding:0; margin:1rem 0 0; }
.schedule li, .check-list li, .area-list li { display:flex; justify-content:space-between; gap:1rem; padding:.8rem 0; border-top:1px solid var(--line); color:var(--text); }
.schedule li span { max-width:18rem; color:var(--muted); text-align:right; }
.info-card { padding:1.35rem; }
.hours-panel {
  padding:1.65rem; background:linear-gradient(180deg, #fbfbfb, #f3f3f3); border:1px solid rgba(10,10,10,.1);
  border-radius:calc(var(--radius) + 2px); box-shadow:0 18px 36px rgba(0,0,0,.08);
}
.hours-panel-top {
  display:block;
}
.hours-panel-copy { margin:0; max-width:none; white-space:nowrap; }
.hours-schedule { display:grid; gap:.8rem; margin-top:1.35rem; }
.hours-schedule li {
  align-items:center; padding:1rem 1.1rem; border:1px solid #e2e2e2; border-radius:16px; background:#fafafa;
  box-shadow:0 8px 18px rgba(0,0,0,.05);
}
.hours-schedule strong {
  display:inline-flex; align-items:center; gap:.7rem; color:var(--brand); font-size:1rem;
}
.hours-schedule strong::before {
  content:""; width:.55rem; height:.55rem; border-radius:999px; background:var(--brand-2); flex:0 0 .55rem;
}
.hours-schedule span {
  display:inline-flex; align-items:center; justify-content:center; width:11.25rem; min-width:11.25rem; max-width:11.25rem; padding:.5rem .9rem; border-radius:999px;
  background:var(--accent); border:1px solid var(--accent); color:#f2f2f2; text-align:center; font-weight:800; white-space:nowrap; line-height:1;
}
#hours .hours-schedule .is-open span { color:#f2f2f2 !important; }
.hours-schedule .is-closed span {
  width:11.25rem; min-width:11.25rem; max-width:11.25rem; background:#e7e7e7; border-color:#d4d4d4; color:#585858;
}
.hours-schedule .is-closed strong::before { background:#b8b8b8; }
.hours-footnote {
  margin:1rem 0 0; font-size:.95rem; color:var(--muted);
}
.accent-card { background:#f1f1f1; }
.fine-print { margin-top:.8rem; font-size:.92rem; }

.area-overview { max-width:68rem; margin:0 auto 1.75rem; }
.area-list-inline { grid-template-columns:repeat(3, minmax(0,1fr)); gap:1rem; }
.area-list-inline li {
  display:block; padding:1rem 1rem 0; background:rgba(242,242,242,.72);
  border:1px solid var(--line); border-radius:14px;
}
.map-banner {
  position:relative; width:100%; overflow:hidden;
  min-height:clamp(240px, 31vw, 345px);
  border-top:1px solid #dcdcdc; border-bottom:0; box-shadow:none;
}
.map-embed {
  position:absolute; inset:0; display:block; width:100%; height:100%; border:0;
  pointer-events:none;
}

.map-overlay {
  position:absolute; inset:0; z-index:1; display:flex; align-items:center; justify-content:center; padding:1rem;
  background:linear-gradient(180deg, rgba(0,0,0,.18), rgba(0,0,0,.36));
  transition:opacity .25s ease, visibility .25s ease;
}

.map-enable {
  position:static;
  min-height:48px; padding:.85rem 1.25rem; border-radius:999px; border:0;
  background:rgba(10,10,10,.9); color:#f2f2f2; font-weight:700; box-shadow:0 14px 28px rgba(0,0,0,.24); cursor:pointer;
}

.map-enable-label-mobile { display:none; }

.map-enable:hover, .map-enable:focus-visible { background:var(--accent); transform:translateY(-1px); }

.map-banner.map-active .map-embed { pointer-events:auto; }

.map-banner.map-active .map-overlay { opacity:0; visibility:hidden; pointer-events:none; }

.gallery-grid { grid-template-columns:repeat(3, minmax(0,1fr)); }
.gallery-card {
  margin:0; aspect-ratio:4 / 3; border-radius:18px; overflow:hidden; box-shadow:var(--shadow);
  background:#e3e3e3;
}
.gallery-trigger {
  display:block; width:100%; height:100%; padding:0; border:0; background:transparent; cursor:zoom-in;
}
.gallery-trigger:focus-visible { outline:3px solid rgba(244,196,0,.4); outline-offset:-3px; }
.gallery-card img {
  width:100%; height:100%; display:block; object-fit:cover; transition:transform .35s ease;
}
.gallery-trigger:hover img, .gallery-trigger:focus-visible img { transform:scale(1.03); }
.gallery-lightbox[hidden] { display:none; }
.gallery-lightbox {
  position:fixed; inset:0; z-index:250; display:grid; place-items:center; padding:1.25rem;
  background:rgba(12,18,13,.84); backdrop-filter:blur(8px);
}
.gallery-lightbox-content { position:relative; width:min(96vw, 1240px); padding:0 4.75rem; box-sizing:border-box; }
.gallery-lightbox-frame {
  display:flex; justify-content:center; align-items:center;
}
.gallery-lightbox-frame img {
  display:block; width:auto; max-width:100%; max-height:82vh; height:auto; border-radius:22px; box-shadow:0 28px 60px rgba(0,0,0,.24);
}
.gallery-lightbox-close,
.gallery-lightbox-control {
  position:absolute; border:0; border-radius:999px; background:rgba(242,242,242,.14); color:#f2f2f2;
  backdrop-filter:blur(6px); cursor:pointer; transition:.2s ease;
}
.gallery-lightbox-close:hover,
.gallery-lightbox-close:focus-visible,
.gallery-lightbox-control:hover,
.gallery-lightbox-control:focus-visible { background:rgba(242,242,242,.22); }
.gallery-lightbox-close {
  top:1rem; right:1rem; z-index:2; width:2.75rem; height:2.75rem; font-size:1.8rem; line-height:1;
}
.gallery-lightbox-control {
  top:50%; z-index:2; width:3.2rem; height:3.2rem; font-size:2rem; line-height:1; transform:translateY(-50%);
}
.gallery-lightbox-control:hover,
.gallery-lightbox-control:focus-visible { transform:translateY(-50%); }
.gallery-lightbox-prev { left:.35rem; }
.gallery-lightbox-next { right:.35rem; }
.gallery-lightbox-count {
  position:absolute; top:calc(100% + .85rem); left:0; right:0; margin:0;
  text-align:center; color:rgba(242,242,242,.88); font-weight:700; letter-spacing:.04em;
}
body.gallery-lightbox-open { overflow:hidden; }

.contact-form { padding:1.25rem; display:grid; gap:.85rem; }
.contact-form .field { display:grid; }
.contact-form input, .contact-form select, .contact-form textarea {
  width:100%; padding:.7rem .9rem; border-radius:12px; border:1px solid #cfcfcf; background:#fafafa; color:var(--text);
  transition:border-color .2s ease, box-shadow .2s ease, background-color .2s ease;
}
.contact-form input, .contact-form select { min-height:56px; }
.contact-form input:focus, .contact-form select:focus, .contact-form textarea:focus { outline:2px solid rgba(244,196,0,.3); border-color:var(--brand-2); }
.contact-form input.quote-field-highlight {
  border-color:var(--accent);
  background:#fdf8e1;
  box-shadow:0 0 0 4px rgba(244,196,0,.25);
}
.contact-form input::placeholder, .contact-form textarea::placeholder { color:#858181; opacity:1; }
.contact-form select.is-placeholder { color:#858181; }
.contact-form option { color:var(--text); }
.contact-form textarea { min-height:128px; resize:vertical; }
.sr-only {
  position:absolute; width:1px; height:1px; padding:0; margin:-1px; overflow:hidden;
  clip:rect(0, 0, 0, 0); white-space:nowrap; border:0;
}
.form-status { min-height:1.5rem; margin:0; }

.cta-banner {
  padding:5.5rem 0;
  background:var(--brand);
}
.cta-banner-panel {
  display:grid; grid-template-columns:1fr auto; gap:.75rem 3rem; align-items:center;
  max-width:960px; margin:0 auto;
}
.cta-banner h2 { margin:0; color:#f2f2f2; font-size:clamp(1.8rem, 2.4vw, 2.3rem); grid-column:1; }
.cta-banner-body { grid-column:1; margin:0; }
.cta-actions {
  grid-column:2; grid-row:1 / 3; display:flex; flex-direction:column; gap:.85rem; align-items:stretch;
  min-width:180px;
}
.cta-actions .button { border-radius:999px; padding:.85rem 1.6rem; white-space:nowrap; justify-content:center; }
.cta-banner .button-outline-light { background:transparent; color:#f2f2f2; border-color:rgba(242,242,242,.5); }
.cta-banner .button-outline-light:hover, .cta-banner .button-outline-light:focus-visible { background:rgba(242,242,242,.1); color:#f2f2f2; border-color:#f2f2f2; }

.site-footer {
  padding:3rem 0 1.6rem;
  background:linear-gradient(180deg, #0b2240, #091b33);
  color:#ececec;
}
.footer-grid { display:grid; gap:2rem; padding-bottom:2rem; }
.footer-column { display:grid; gap:1.5rem; align-content:start; min-width:0; }
.footer-brand { max-width:24rem; }
.footer-column h3 { margin:0; color:#f2f2f2; font-family:inherit; font-size:1.2rem; line-height:1.2; }
.footer-brand-lockup { display:flex; align-items:center; gap:.8rem; width:max-content; max-width:100%; }
.footer-brand-lockup img {
  width:var(--footer-logo-size); height:var(--footer-logo-size); flex:0 0 var(--footer-logo-size); object-fit:contain;
  transform:scale(var(--footer-logo-scale)); transform-origin:left center;
}
.footer-brand-lockup > span { display:flex; flex-direction:column; justify-content:center; gap:.06rem; height:auto; white-space:nowrap; }
.footer-brand-lockup strong {
  display:block; margin:0; color:#ececec; font-family:"Montserrat", "Arial Black", "Segoe UI", sans-serif; font-size:2.15rem;
  font-weight:900; line-height:.8; letter-spacing:.01em; text-transform:uppercase;
}
.footer-brand-lockup small {
  display:block; margin:0; color:rgba(236,236,236,.92); font-family:"Montserrat", "Arial Black", "Segoe UI", sans-serif; font-size:.86rem;
  font-weight:800; line-height:.92; letter-spacing:.02em; text-transform:uppercase;
}
  .footer-brand p, .footer-links a, .footer-bottom p { color:rgba(236,236,236,.82); }
  .footer-brand p { max-width:22rem; line-height:1.55; }
  .footer-copy-break { display:block; }
  .footer-copyright-break { display:none; }
.footer-links { gap:.55rem; }
.footer-links a { width:fit-content; }
.footer-contact-links { gap:.55rem; }
.footer-social-links { justify-content:flex-start; gap:1rem; margin-top:.35rem; }
.footer-bottom {
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding-top:1.5rem; border-top:1px solid rgba(236,236,236,.1);
  font-size:.88rem;
}
  .footer-credit {
    display:inline-flex; align-items:center; justify-content:center; gap:.45rem; color:rgba(236,236,236,.82); font:inherit; line-height:0; white-space:nowrap;
  }
  .footer-credit-logo { display:block; width:auto; height:43px; max-width:min(100%, 153px); object-fit:contain; }
  .footer-credit-prefix { display:inline; }
  .footer-bottom p { margin:0; }
  .footer-credit:hover, .footer-credit:focus-visible { opacity:.9; }

.scroll-top {
  position:fixed; right:1.25rem; bottom:1.25rem; z-index:120; width:52px; height:52px;
  display:inline-flex; align-items:center; justify-content:center; border-radius:999px;
  background:var(--accent); color:#0f2d52; border:1px solid rgba(0,0,0,.18);
  box-shadow:none; opacity:0; visibility:hidden; pointer-events:none;
  transform:translateY(.5rem); transition:opacity .2s ease, transform .2s ease, visibility .2s ease;
}
.scroll-top.is-visible { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0); }
.scroll-top:hover, .scroll-top:focus-visible { background:#dbb200; color:#0f2d52; }
.scroll-top-icon {
  width:18px; height:18px; display:block;
}
.scroll-top-icon path {
  fill:none; stroke:currentColor; stroke-width:2.75; stroke-linecap:round; stroke-linejoin:round;
}

/* ── Biography ── */
.bio-spread {
  display:grid; grid-template-columns:170px 1fr 170px; grid-template-rows:auto auto;
  gap:1rem 2.25rem; align-items:center;
}
.bio-img-left  { grid-column:1; grid-row:1 / 3; }
.bio-text-1    { grid-column:2; grid-row:1; }
.bio-img-right { grid-column:3; grid-row:1 / 3; }
.bio-text-2    { grid-column:2; grid-row:2; }
.bio-image { border-radius:var(--radius); overflow:hidden; box-shadow:var(--shadow); }
.bio-image img { width:100%; height:auto; display:block; object-fit:cover; }
.bio-text p { font-size:1.05rem; line-height:1.75; color:var(--text); }
.bio-text p:last-child { margin-bottom:0; }

/* ── Vision ── */
.vision-grid {
  display:grid; grid-template-columns:repeat(2, 1fr); gap:1.5rem;
}
.vision-card {
  padding:1.5rem; border-radius:var(--radius); background:linear-gradient(180deg, #fbfbfb, #f3f3f3);
  border:1px solid var(--line); box-shadow:0 8px 20px rgba(0,0,0,.06);
  display:grid; grid-template-columns:44px 1fr; grid-template-rows:auto 1fr; gap:.35rem .9rem;
  align-items:start; transition:transform .2s ease, box-shadow .2s ease;
  width:100%;
}
.vision-card:hover { transform:translateY(-3px); box-shadow:0 14px 32px rgba(0,0,0,.10); }
.vision-icon {
  width:44px; height:44px; display:flex; align-items:center; justify-content:center;
  border-radius:12px; background:var(--brand); color:var(--accent);
  grid-row:1 / 3;
}
.vision-icon svg { width:22px; height:22px; display:block; }
.vision-card h3 { margin:0; color:var(--brand); font-size:1.15rem; align-self:end; }
.vision-card p { margin:0; font-size:.96rem; color:var(--muted); align-self:start; }

/* ── Vote Steps ── */
.vote-grid {
  display:grid; grid-template-columns:repeat(5, 1fr); gap:1.25rem;
}
.vote-card {
  display:grid; grid-template-rows:auto auto 1fr; justify-items:center; text-align:center;
  gap:.6rem; padding:1.35rem 1rem; border-radius:var(--radius);
  background:linear-gradient(180deg, #fbfbfb, #f3f3f3);
  border:1px solid var(--line); box-shadow:0 8px 20px rgba(0,0,0,.05);
}
.vote-step-number {
  width:42px; height:42px;
  display:flex; align-items:center; justify-content:center;
  border-radius:999px; background:var(--brand); color:var(--accent);
  font-weight:900; font-size:1.1rem; line-height:1;
}
.vote-card strong { display:block; color:var(--brand); font-size:1rem; line-height:1.25; }
.vote-card p { margin:0; font-size:.9rem; color:var(--muted); line-height:1.55; align-self:start; }
.vote-card a { color:var(--brand); font-weight:700; text-decoration:underline; text-underline-offset:2px; }
.vote-card a:hover { color:var(--accent); }
.vote-info-link {
  text-align:center; margin-top:1.75rem;
}
.vote-info-link p { margin:0; font-size:1rem; color:var(--muted); }
.vote-info-link a { color:var(--brand); font-weight:700; text-decoration:underline; text-underline-offset:2px; }
.vote-info-link a:hover { color:var(--accent); }

/* ── FAQ ── */
.faq-grid {
  display:grid; grid-template-columns:repeat(2, 1fr); gap:1.5rem;
}
.faq-column {
  display:grid; gap:.85rem; align-content:start;
}
.faq-item {
  border-radius:var(--radius); background:linear-gradient(180deg, #fbfbfb, #f5f5f5);
  border:1px solid var(--line); box-shadow:0 6px 16px rgba(0,0,0,.04);
  overflow:hidden; transition:box-shadow .2s ease;
}
.faq-item[open] { box-shadow:0 10px 24px rgba(0,0,0,.08); }
.faq-question {
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.15rem 1.5rem; cursor:pointer; font-weight:700; font-size:1.05rem;
  color:var(--brand); list-style:none; user-select:none;
}
.faq-question::-webkit-details-marker { display:none; }
.faq-question::after {
  content:"+"; flex:0 0 auto; width:28px; height:28px;
  display:flex; align-items:center; justify-content:center;
  border-radius:999px; background:var(--brand); color:var(--accent);
  font-size:1.2rem; font-weight:800; line-height:1;
  transition:transform .2s ease;
}
.faq-item[open] .faq-question::after { content:"−"; transform:rotate(180deg); }
.faq-question:hover { color:#163d6e; }
.faq-answer {
  padding:0 1.5rem 1.25rem;
}
.faq-answer p { margin:0 0 .85rem; font-size:.98rem; line-height:1.72; color:var(--muted); }
.faq-answer p:last-child { margin-bottom:0; }
.faq-vote-button {
  margin-top:.75rem; display:inline-flex; border-radius:999px;
  padding:.6rem 1.2rem; min-height:40px; font-size:.92rem;
}

/* ── Contact section ── */
.contact-layout {
  display:grid; grid-template-columns:auto minmax(0, 430px); gap:8rem; align-items:center;
  justify-content:center;
}
.contact-copy {
  padding:0; max-width:22rem;
}
.contact-copy h2 { font-size:clamp(1.9rem, 2.5vw, 2.45rem); margin-bottom:.6rem; color:var(--brand); }
.contact-copy > p { font-size:1.05rem; line-height:1.75; color:var(--muted); margin-bottom:0; }
.contact-details {
  display:grid; gap:.5rem; margin-top:1.5rem;
}
.contact-details a {
  color:var(--brand); font-weight:700; font-size:1rem;
  text-decoration:underline; text-underline-offset:3px;
}
.contact-details a:hover { color:var(--accent); }
.contact-layout .hero-form-card {
  max-width:none; justify-self:stretch;
  background:linear-gradient(180deg, #fbfbfb, #f3f3f3);
  border:1px solid var(--line); border-radius:var(--radius);
  box-shadow:0 12px 28px rgba(0,0,0,.07);
  padding:1.5rem;
}
.contact-layout .form-row { grid-template-columns:repeat(2, minmax(0,1fr)); }

/* ── CTA banner ── */
.cta-banner-body {
  font-size:1.06rem; line-height:1.75; color:rgba(242,242,242,.78);
  max-width:none; margin:0;
}
.button-accent {
  background:var(--accent); color:var(--brand); border-color:var(--accent); font-weight:800;
}
.button-accent:hover, .button-accent:focus-visible {
  background:#dbb200; border-color:#dbb200;
}

@media (min-width: 921px) {
  .hero {
    min-height:calc(100svh - var(--header-offset) + 2px);
    display:grid;
    align-items:center;
  }
  .footer-bottom {
    flex-direction:row;
    align-items:center;
    justify-content:space-between;
    gap:1rem;
    text-align:left;
  }
  .footer-credit { display:inline-flex; }
  .footer-grid {
    display:flex;
    align-items:flex-start;
    justify-content:space-between;
    gap:0;
  }
  .footer-column { flex:0 0 auto; }
  .footer-company { display:grid; }
}

@media (max-width: 1020px) and (min-width: 921px) {
  .vision-grid { grid-template-columns:repeat(2, 1fr); }
  .vision-grid .vision-card:nth-child(n) { grid-column:auto; }
  .vote-grid { grid-template-columns:repeat(3, 1fr); }
}

@media (max-width: 920px) {
  html { background:#0f2d52; }
  body { background:#091b33; }
  #main-content { background:var(--bg); }
  .header-row, .hero-grid, .split-grid, .contact-grid, .service-grid, .gallery-grid, .footer-grid { grid-template-columns:1fr; }
  .header-row { grid-template-columns:auto auto; position:relative; }
  .site-header { background:#0b2240; backdrop-filter:none; box-shadow:none; border-bottom:0; }
  .header-row { padding:0; gap:.75rem; height:var(--brand-logo-size-mobile); }
  .brand, .brand img { height:100%; }
  .brand img { width:auto; object-fit:contain; }
  .footer-brand-lockup img {
    width:var(--footer-logo-size-mobile); height:var(--footer-logo-size-mobile); flex-basis:var(--footer-logo-size-mobile);
    transform:scale(var(--footer-logo-scale-mobile)); transform-origin:left center;
  }
  .footer-brand-lockup > span { gap:.04rem; }
  .footer-brand-lockup strong { font-size:1.8rem; }
  .footer-brand-lockup small { font-size:.72rem; }
  .footer-company { display:none; }
  .hero, .cta-banner { background-attachment:scroll; }
  .hero {
    position:relative; padding:0 0 3rem; background:linear-gradient(180deg, #0f2d52, #163d6e);
  }
  .hero::before {
    content:""; position:absolute; inset:0 0 auto; z-index:0;
    height:var(--mobile-hero-background-height, calc(var(--mobile-hero-height, 100vh) - var(--header-offset) + 2px));
    background:var(--hero-lawn-background);
  }
  .site-nav {
    position:fixed; top:calc(var(--header-offset) - 2px); left:0; right:0; width:100vw; max-width:none;
    display:flex; flex-direction:column; align-items:center; gap:.35rem; margin-top:0; padding:calc(.35rem + 2px) 1rem .9rem; overflow:hidden;
    border-top:0; border-bottom:1px solid rgba(242,242,242,.08); border-left:0; border-right:0; border-radius:0 0 18px 18px;
    background:#0b2240; box-shadow:0 16px 32px rgba(0,0,0,.32);
    backdrop-filter:none; text-align:center; opacity:0; visibility:hidden; pointer-events:none;
    transform:translateY(-.75rem) scaleY(.96); transform-origin:top center; transition:opacity .22s ease, transform .28s ease, visibility .22s ease;
  }
  .site-nav::before {
    content:""; position:absolute; top:0; left:0; right:0; height:2px;
    background:#091b33; pointer-events:none;
  }
  .site-nav a { display:flex; align-items:center; justify-content:center; width:min(100%, 13.5rem); min-height:44px; text-align:center; border-radius:12px; }
  .site-nav .nav-contact { width:min(100%, 13.5rem); }
  .site-nav.open { opacity:1; visibility:visible; pointer-events:auto; transform:translateY(0) scaleY(1); }
  .nav-toggle {
    display:inline-flex; justify-self:end; align-items:center; justify-content:center; width:48px; min-height:48px; padding:0;
    border:0; border-radius:0; background:transparent; color:#f2f2f2; box-shadow:none; cursor:pointer;
  }
  .nav-toggle:hover, .nav-toggle:focus-visible { background:transparent; }
  .brand img {
    width:auto; height:var(--brand-logo-size-mobile); flex:0 0 auto;
  }
  .site-header .brand img { clip-path:none; }
  .brand > span { height:var(--brand-logo-size-mobile); }
  .brand strong { font-size:1.62rem; }
  .brand small { font-size:.79rem; letter-spacing:.015em; }
  .hero-grid { position:relative; z-index:1; gap:2.2rem; align-items:stretch; }
  .hero-copy {
    width:min(100%, 34rem);
    min-height:calc(var(--mobile-hero-height, 100vh) - var(--header-offset));
    margin:0 auto; padding:2.85rem 0; box-sizing:border-box; display:flex; flex-direction:column; justify-content:center; justify-self:center; text-align:center;
  }
  .hero-copy .actions { margin-top:2.65rem; }
  .actions { grid-template-columns:1fr; justify-items:center; }
  .actions .button,
  .cta-actions .button { width:min(100%, 13.5rem); }
  .call-cta-label-desktop { display:none; }
  .call-cta-label-mobile { display:inline; }
  .map-enable-label-desktop { display:none; }
  .map-enable-label-mobile { display:inline; }
  .actions .button { justify-self:center; }
  .cta-actions { flex-direction:column; align-items:center; }
  .site-nav .nav-contact {
    width:auto; min-width:0; min-height:36px; padding:.38rem .95rem; border-radius:999px;
  }
  .map-banner { min-height:420px; }
  .hero-form-card {
    justify-self:stretch; max-width:none; margin-top:0; padding:1.25rem 1.15rem 1.05rem;
    background:linear-gradient(180deg, #fbfbfb, #f3f3f3); border:1px solid rgba(10,10,10,.1);
    border-radius:24px; box-shadow:0 18px 36px rgba(0,0,0,.10);
  }
  .hero-form-card h2 { margin-bottom:.9rem; text-align:center; }
  .form-row { grid-template-columns:1fr; }
  .area-list-inline { grid-template-columns:1fr; }
  .hours-panel { padding:1.35rem; }
  .hours-panel-copy { white-space:normal; }
  .schedule li { flex-direction:column; }
  .schedule li span { max-width:none; text-align:left; }
  .site-footer {
    position:relative;
    padding-bottom:calc(1.6rem + env(safe-area-inset-bottom, 0px));
  }
  .site-footer::after {
    content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px;
    background:#091b33; pointer-events:none;
  }
  .footer-bottom {
    flex-direction:column; align-items:flex-start; justify-content:flex-start;
    gap:.35rem;
  }
  .footer-credit {
    display:inline-flex;
    max-width:100%;
    white-space:nowrap;
    line-height:1.45;
  }
  .footer-brand { max-width:100%; }
  
  .footer-brand p { max-width:20rem; }
  .footer-copyright-break { display:block; }
  .bio-spread {
    grid-template-columns:1fr; grid-template-rows:auto; gap:1.5rem;
    justify-items:center; text-align:center;
  }
  .bio-img-left  { grid-column:auto; grid-row:auto; order:1; }
  .bio-text-1    { grid-column:auto; grid-row:auto; order:2; }
  .bio-img-right { grid-column:auto; grid-row:auto; order:3; }
  .bio-text-2    { grid-column:auto; grid-row:auto; order:4; }
  .bio-image { max-width:160px; }
  .contact-layout { grid-template-columns:1fr; gap:1.5rem; }
  .contact-layout .hero-form-card { max-width:none; }
  .contact-copy { text-align:center; }
  .contact-details { justify-items:center; }
  .vision-grid { grid-template-columns:1fr; }
  .vision-grid .vision-card:nth-child(n) { grid-column:auto; }
  .vote-grid { grid-template-columns:1fr 1fr; }
  .vote-grid .vote-card:nth-child(5) { grid-column:1 / -1; justify-self:center; max-width:calc(50% - .625rem); }
  .faq-grid { grid-template-columns:1fr; }
  .faq-question { padding:1rem 1.15rem; font-size:1rem; }
  .faq-answer { padding:0 1.15rem 1.15rem; }
  .cta-banner-panel { grid-template-columns:1fr; text-align:center; gap:1.25rem; }
  .cta-banner h2 { grid-column:1; }
  .cta-banner-body { grid-column:1; }
  .cta-actions { grid-column:1; grid-row:auto; flex-direction:column; align-items:center; min-width:0; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior:auto; }
  * { transition:none !important; }
}

