/* Edmonton City Homes – main.css
   Custom component and page styles.
   All values reference tokens from assets/css/tokens.css — no hardcoded colours,
   font sizes, or spacing allowed here. */


/* ============================================================
   SKIP LINK
   Invisible until focused via keyboard; required for WCAG 2.4.1.
   ============================================================ */

.skip-link {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
}

.skip-link:focus {
  position: fixed;
  top: var(--space-3);
  left: var(--space-3);
  z-index: 9999;
  width: auto;
  height: auto;
  overflow: visible;
  padding: var(--space-2) var(--space-3);
  background: var(--color-surface);
  color: var(--color-accent);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  border: 2px solid var(--color-accent);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-md);
  text-decoration: none;
}


/* ============================================================
   STICKY-HEADER FIX
   GeneratePress sets overflow-x: hidden on body (and sometimes
   #page / .site) to suppress horizontal scrollbars. Any
   overflow: hidden on an ancestor silently kills position: sticky
   on descendants — the sticky element can never "reach" the viewport
   edge it needs to stick to.

   Fix: override with overflow-x: clip, which has the same visual
   result (overflowing content is clipped, no horizontal scrollbar)
   but does NOT create a new block formatting context, so sticky
   positioning on child elements works correctly.

   clip vs hidden — the key difference:
     hidden  → creates a BFC, scroll container for sticky purposes
     clip    → purely visual clipping, no scroll container created
   ============================================================ */

body,
#page,
.site {
  overflow-x: clip;
}


/* ============================================================
   HEADER
   Sticky bar at the top. Gains a frosted-glass blur once the
   user scrolls past 20px (the .is-scrolled class is toggled by main.js).

   Specificity note — why the selector is `body .site-header`:
   GeneratePress's Customizer outputs a late <style> block via wp_head
   containing `.site-header { position: relative; }`. Because that block
   is injected AFTER our enqueued stylesheet, same-specificity rules in
   our file lose to it on source order. Adding `body` in front gives our
   selector a specificity of (0,1,1) vs GP's (0,1,0), so we win regardless
   of where in the <head> GP's block lands — no !important needed.
   ============================================================ */

body .site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);

  /* Smooth transition so the background and blur fade in on scroll, not snap. */
  transition:
    background var(--duration-base) var(--ease-smooth),
    backdrop-filter var(--duration-base) var(--ease-smooth),
    -webkit-backdrop-filter var(--duration-base) var(--ease-smooth),
    box-shadow var(--duration-base) var(--ease-smooth);
}

/* Frosted-glass effect added after the user scrolls 20px. */
body .site-header.is-scrolled {
  background: rgba(255, 255, 255, 0.88);
  -webkit-backdrop-filter: blur(14px) saturate(160%);
  backdrop-filter: blur(14px) saturate(160%);
  box-shadow: var(--shadow-sm);
}

/* Inner container: logo | [nav] | actions
   Mobile: flex row, space-between (nav hidden, toggle shown).
   Desktop: three-column grid so nav is always geometrically centered,
   regardless of whether the logo or actions column is wider. */
.site-header__inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: var(--space-4) var(--space-5);
  max-width: var(--container-wide);
  margin: 0 auto;
}


/* ============================================================
   LOGO
   The Homes & Gardens Real Estate image is the sole brand mark
   in the header. It's a horizontal logo, so we constrain height
   and let width scale automatically with the aspect ratio.
   Mobile: 63px tall. Desktop (≥900px): 78px tall.
   ============================================================ */

.logo-link {
  display: inline-flex;
  align-items: center;
  text-decoration: none;
  /* Constrain so the link doesn't stretch across its grid column. */
  width: fit-content;
}

.logo-img {
  display: block;
  height: 63px;   /* Mobile size — scales proportionally from desktop */
  width: auto;    /* Width follows the image's natural aspect ratio */
  border: none;   /* Prevent any inherited img border styles */
}

.logo-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}


/* ============================================================
   NAVIGATION — base (mobile overlay state)
   On mobile this element IS the full-screen menu overlay.
   The desktop layout is added at the 900px breakpoint below.
   ============================================================ */

.site-header__nav {
  /* Hide nav off-screen and invisible; reveal when .site-header--open is set. */
  position: fixed;
  inset: 0;
  z-index: 50;                         /* Below header (z-index:100) so toggle stays clickable */
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: var(--space-5);
  padding: var(--space-7) var(--space-5);
  background: var(--color-surface);
  overflow-y: auto;

  /* Hidden by default; JS adds .site-header--open to toggle visibility. */
  opacity: 0;
  pointer-events: none;
  transform: translateY(-8px);
  transition:
    opacity var(--duration-slow) var(--ease-smooth),
    transform var(--duration-slow) var(--ease-smooth);
}

/* Overlay visible state — triggered by JS adding class to the <header>. */
.site-header--open .site-header__nav {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0);
}

/* Nav fallback message for admins when no menu is assigned yet. */
.nav-fallback {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  text-align: center;
}

.nav-fallback a {
  color: var(--color-accent);
  text-decoration: underline;
}


/* ============================================================
   NAV MENU ITEMS — mobile styles
   Large, tap-friendly links in the full-screen overlay.
   ============================================================ */

/* Reset browser list defaults that GeneratePress may inject. */
.nav-menu,
.nav-menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

/* Mobile: stack items vertically, centered */
.nav-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-2);
  width: 100%;
}

/* Top-level links — larger on mobile for easy tapping */
.nav-menu > li > a {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
  text-decoration: none;
  padding: var(--space-2) var(--space-3);
  text-align: center;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.nav-menu > li > a:hover {
  color: var(--color-accent);
}

.nav-menu > li > a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
  color: var(--color-accent);
}

/* Sub-menus: always visible on mobile (expanded by default in the overlay) */
.nav-menu .sub-menu {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0;
  padding: var(--space-1) 0;
}

.nav-menu .sub-menu li a {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-regular);
  color: var(--color-ink-soft);
  text-decoration: none;
  padding: var(--space-1) var(--space-3);
  text-align: center;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.nav-menu .sub-menu li a:hover {
  color: var(--color-accent);
}

.nav-menu .sub-menu li a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
  color: var(--color-accent);
}


/* ============================================================
   MOBILE MENU ACTIONS
   Phone + CTA shown inside the overlay on mobile.
   Hidden on desktop (the .site-header__actions version shows there).
   ============================================================ */

.nav-mobile-actions {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  padding-top: var(--space-4);
  border-top: 1px solid var(--color-border);
  width: 100%;
  max-width: 280px;
}


/* ============================================================
   HEADER ACTIONS (desktop right column)
   Hidden on mobile via display:none; shown at 900px+.
   ============================================================ */

.site-header__actions {
  display: none;                        /* Hidden on mobile */
}


/* ============================================================
   PHONE NUMBER LINK
   Subtle click-to-call — reads as text, not a button.
   ============================================================ */

.header-phone {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  text-decoration: none;
  letter-spacing: 0.01em;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.header-phone:hover {
  color: var(--color-ink);
}

.header-phone:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}


/* ============================================================
   CTA BUTTON
   Teal accent — the only place this colour appears in the header.
   Used for Home Valuation CTA and also the mobile overlay version.
   ============================================================ */

.btn-cta {
  display: inline-block;
  padding: 0.625rem var(--space-4);     /* 10px top/bottom, 24px sides */
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  text-decoration: none;
  border-radius: var(--radius-md);     /* Rounded rectangle (8px) */
  letter-spacing: 0.01em;
  white-space: nowrap;
  transition:
    background var(--duration-fast) var(--ease-snappy),
    box-shadow var(--duration-fast) var(--ease-snappy);
}

.btn-cta:hover {
  background: var(--color-accent-hover);
  box-shadow: var(--shadow-sm);
}

.btn-cta:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus), var(--shadow-sm);
}

.btn-cta:active {
  background: var(--color-accent);
  box-shadow: none;
  transform: translateY(1px);
}


/* ============================================================
   HAMBURGER / CLOSE TOGGLE
   Three bars; animates to × when menu is open.
   ============================================================ */

.nav-toggle {
  /* Remove all browser button chrome */
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  gap: 5px;
  padding: var(--space-2);
  background: none;
  border: none;
  cursor: pointer;
  border-radius: var(--radius-sm);

  /* Keep toggle above the overlay (overlay is z-index:50; header is z-index:100) */
  position: relative;
  z-index: 101;
}

.nav-toggle:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

.nav-toggle__bar {
  display: block;
  width: 22px;
  height: 2px;
  background: var(--color-ink);
  border-radius: 2px;
  transform-origin: center;
  transition:
    transform var(--duration-base) var(--ease-smooth),
    opacity var(--duration-base) var(--ease-smooth),
    background var(--duration-fast) var(--ease-snappy);
}

/* Animate bars → × when menu is open */
.site-header--open .nav-toggle__bar:nth-child(1) {
  transform: translateY(7px) rotate(45deg);
}
.site-header--open .nav-toggle__bar:nth-child(2) {
  opacity: 0;
  transform: scaleX(0);
}
.site-header--open .nav-toggle__bar:nth-child(3) {
  transform: translateY(-7px) rotate(-45deg);
}

/* Prevent body scroll when overlay is open (body.menu-open set by JS) */
body.menu-open {
  overflow: hidden;
}


/* ============================================================
   DESKTOP LAYOUT — 900px and above
   Switches the header inner from flex-row to a three-column grid
   so the nav is always geometrically centred regardless of
   how wide the logo or actions columns happen to be.
   ============================================================ */

@media (min-width: 900px) {

  /* Three equal-flex columns: [logo] [nav] [actions]
     1fr on each side ensures the nav column is truly centered. */
  .site-header__inner {
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    grid-template-areas: "logo nav actions";
    gap: var(--space-4);
  }

  .site-header__logo    { grid-area: logo;    justify-self: start; }
  .site-header__nav     { grid-area: nav;     justify-self: center; }
  .site-header__actions { grid-area: actions; justify-self: end; }

  /* Scale logo up for desktop — 78px gives the H&G horizontal logo good presence. */
  .logo-img {
    height: 78px;
  }

  /* ── Nav resets to inline flow on desktop ── */
  .site-header__nav {
    /* Override all mobile overlay positioning */
    position: static;
    inset: auto;
    z-index: auto;
    opacity: 1;
    pointer-events: auto;
    transform: none;
    transition: none;

    /* Horizontal flex row */
    flex-direction: row;
    align-items: center;
    justify-content: center;
    gap: 0;
    padding: 0;
    background: transparent;
    overflow: visible;
  }

  /* Mobile overlay actions hidden on desktop */
  .nav-mobile-actions {
    display: none;
  }

  /* Desktop actions shown */
  .site-header__actions {
    display: flex;
    align-items: center;
    gap: var(--space-3);
  }

  /* Remove aria-hidden on the actions so it's interactive on desktop.
     (aria-hidden="true" is set in PHP; JS removes it at breakpoint — see main.js) */

  /* Hide hamburger on desktop */
  .nav-toggle {
    display: none;
  }

  /* ── Nav menu: horizontal row ── */
  .nav-menu {
    flex-direction: row;
    align-items: center;
    gap: 0;
  }

  /* Top-level links — bumped from --text-sm (15px) to 17px for visual
     balance against the logo. Between --text-sm and --text-base. */
  .nav-menu > li > a {
    font-size: 1.0625rem;
    padding: var(--space-2) var(--space-3);
    text-align: left;
  }

  /* ── Dropdown sub-menus ── */
  /* Items with children get relative positioning as the dropdown anchor. */
  .nav-menu .menu-item-has-children {
    position: relative;
  }

  /* Chevron indicator after parent link text */
  .nav-menu .menu-item-has-children > a::after {
    content: "";
    display: inline-block;
    width: 0;
    height: 0;
    margin-left: 5px;
    /* CSS triangle pointing down */
    border-left: 4px solid transparent;
    border-right: 4px solid transparent;
    border-top: 4px solid currentColor;
    opacity: 0.55;
    transition: transform var(--duration-fast) var(--ease-snappy);
    vertical-align: middle;
    position: relative;
    top: -1px;
  }

  /* Rotate chevron when dropdown is open (hover or focus-within) */
  .nav-menu .menu-item-has-children:hover > a::after,
  .nav-menu .menu-item-has-children:focus-within > a::after {
    transform: rotate(180deg);
    opacity: 0.8;
  }

  /* Sub-menu panel */
  .nav-menu .sub-menu {
    position: absolute;
    top: calc(100% + 8px);             /* 8px visual gap below the parent link */
    left: 50%;
    transform: translateX(-50%) translateY(-6px);

    display: flex;
    flex-direction: column;
    align-items: stretch;
    gap: 0;

    min-width: 200px;
    background: var(--color-surface);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-md);
    box-shadow: var(--shadow-md);
    padding: var(--space-2) 0;

    /* Hidden until hover / focus-within */
    opacity: 0;
    pointer-events: none;

    /* EXIT transition: the 160ms delay means the panel doesn't begin
       hiding until the cursor has been outside the <li> for 160ms.
       This is the fallback for any cursor path the ::before bridge
       below doesn't catch. Delay only applies on close — the open
       state overrides it to 0ms so the dropdown appears immediately. */
    transition:
      opacity  var(--duration-fast) var(--ease-snappy) 160ms,
      transform var(--duration-fast) var(--ease-snappy) 160ms;
  }

  /* ── Dropdown gap bridge ──────────────────────────────────────────
     The dropdown sits 8px below the parent link (top: calc(100% + 8px)).
     Without this pseudo-element, the cursor briefly hovers over empty
     space while travelling from the link text down into the panel.
     In that gap, :hover is false on both parent and child, so the
     dropdown snaps shut before the user can reach it.

     Fix: an invisible ::before element fills the gap. It's a child of
     .sub-menu, so its hover extends the <li>'s :hover zone continuously
     from the link text to the top of the panel. Height must be >= the
     gap value above (8px gap → 10px bridge for a small safety margin).
  ────────────────────────────────────────────────────────────────── */
  .nav-menu .sub-menu::before {
    content: '';
    position: absolute;
    bottom: 100%;   /* anchors the bridge to the top edge of the panel */
    left: 0;
    right: 0;
    height: 10px;   /* ≥ the gap in top: calc(100% + 8px) */
  }

  /* Reveal on hover or keyboard focus-within.
     Override transition to 0ms delay so the panel opens instantly
     (delay only on close, never on open). */
  .nav-menu .menu-item-has-children:hover > .sub-menu,
  .nav-menu .menu-item-has-children:focus-within > .sub-menu {
    opacity: 1;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
    transition:
      opacity  var(--duration-fast) var(--ease-snappy) 0ms,
      transform var(--duration-fast) var(--ease-snappy) 0ms;
  }

  /* Sub-menu link styles on desktop */
  .nav-menu .sub-menu li a {
    font-size: var(--text-sm);
    color: var(--color-ink-soft);
    text-align: left;
    padding: var(--space-2) var(--space-4);
    border-radius: 0;
    white-space: nowrap;
    transition: color var(--duration-fast) var(--ease-snappy), background var(--duration-fast) var(--ease-snappy);
  }

  .nav-menu .sub-menu li a:hover {
    color: var(--color-ink);
    background: var(--color-surface-elevated);
  }

}
/* end @media (min-width: 900px) */


/* ============================================================
   FOOTER
   Dark-background section at the bottom of every page.
   Background: --color-surface-inverse (#0a1628 — deep navy).
   Text hierarchy runs from --color-ink-inverse (white) down
   through --color-ink-faint for secondary / label copy.
   Accent teal (--color-accent) is reserved for link hovers
   and social icon hovers only.
   ============================================================ */

.site-footer {
  background: var(--color-surface-inverse);
  border-top: 1px solid var(--color-border-strong);
  color: var(--color-ink-inverse);
}


/* ============================================================
   FOOTER — INNER GRID
   Mobile: single column, each section stacked.
   Desktop (≥900px): five-column grid — Brand (wider) | Brokerage
   & Agents | Contact | Nav | Social.
   ============================================================ */

.site-footer__inner {
  display: grid;
  grid-template-columns: 1fr;          /* Single column — mobile default */
  gap: var(--space-5);
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-7) var(--space-5);
}


/* ============================================================
   FOOTER — SHARED TYPOGRAPHY UTILITIES
   Reused across all footer columns.
   ============================================================ */

/* Column heading — e.g. "Brokerage", "Contact", "Explore" */
.footer-col-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-ink-faint);
  margin: 0 0 var(--space-3) 0;
}

/* General footer link */
.footer-link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  text-decoration: none;
  opacity: 0.85;
  transition: color var(--duration-fast) var(--ease-snappy),
              opacity var(--duration-fast) var(--ease-snappy);
}

.footer-link:hover {
  color: var(--color-accent-hover);
  opacity: 1;
}

.footer-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
  opacity: 1;
}


/* ============================================================
   FOOTER BRAND
   The wordmark is Fraunces (display serif) — the one place on
   the site Edmonton City Homes gets its own visual identity,
   distinct from the H&G brokerage logo used in the header.
   ============================================================ */

.footer-brand {
  /* On desktop this column is wider; see grid override at 900px. */
}

.footer-wordmark {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-2) 0;
  letter-spacing: -0.01em;
}

.footer-tagline {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-style: italic;
  font-weight: var(--weight-regular);
  color: var(--color-ink-faint);
  line-height: var(--leading-snug);
  margin: 0;
}


/* ============================================================
   FOOTER BROKERAGE
   RECA compliance: brokerage name, logo, address, and disclosure
   must all appear. Agent names are in the sibling .footer-agents
   block, stacked below in the same column.
   ============================================================ */

.footer-brokerage-col {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

/* Brokerage logo — rendered on dark background.
   The filter inverts the logo to white so it reads on navy.
   Remove this filter if a dedicated light-on-dark logo is available. */
.footer-brokerage__logo {
  display: block;
  height: 48px;
  width: auto;
  margin-bottom: var(--space-3);
  filter: brightness(0) invert(1);
  opacity: 0.9;
}

/* <address> resets browser italic default; renders as a block. */
.footer-address {
  font-style: normal;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
  margin: 0 0 var(--space-3) 0;
}

.footer-address__name {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-inverse);
}

.footer-address__street,
.footer-address__city {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.75;
}

.footer-disclosure {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  margin: 0;
  line-height: var(--leading-relaxed);
}


/* ============================================================
   FOOTER AGENTS
   RECA requirement: both licensed agents must be named.
   List resets default list styling.
   ============================================================ */

.footer-agent-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-agent-list__item {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.85;
}

.footer-agent-list__item sup {
  font-size: 0.65em;
  vertical-align: super;
  opacity: 1; /* Prevent double-opacity accumulation */
}


/* ============================================================
   FOOTER CONTACT
   Click-to-call phone + mailto links for both agents.
   ============================================================ */

.footer-contact-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-link--phone {
  font-weight: var(--weight-medium);
  letter-spacing: 0.01em;
}


/* ============================================================
   FOOTER NAVIGATION
   Flat single-level menu — no dropdowns in the footer.
   Class is .footer-nav-menu (distinct from header's .nav-menu)
   to prevent any inherited header navigation styles.
   ============================================================ */

/* Admin-only fallback when no menu is assigned */
.footer-nav-fallback {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-faint);
}

.footer-nav-fallback a {
  color: var(--color-accent);
  text-decoration: underline;
}

.footer-nav-menu,
.footer-nav-menu ul {
  list-style: none;
  margin: 0;
  padding: 0;
}

.footer-nav-menu {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-nav-menu > li > a {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-regular);
  color: var(--color-ink-inverse);
  text-decoration: none;
  opacity: 0.85;
  transition: color var(--duration-fast) var(--ease-snappy),
              opacity var(--duration-fast) var(--ease-snappy);
}

.footer-nav-menu > li > a:hover {
  color: var(--color-accent-hover);
  opacity: 1;
}

.footer-nav-menu > li > a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
  opacity: 1;
  color: var(--color-accent-hover);
}


/* ============================================================
   FOOTER SOCIAL
   Inline SVG icons — no icon font, no external image requests.
   Icon size: 22px × 22px (set on the <svg> element itself).
   Hover state shifts to --color-accent (teal).

   Extending pattern — to add LinkedIn, YouTube, Facebook etc.:
     1. Copy an <a class="footer-social__link"> block in footer.php
     2. Update href, aria-label, and SVG <path d="…"> for the platform
     No CSS changes needed — .footer-social__link handles all platforms.
   ============================================================ */

.footer-social__links {
  display: flex;
  flex-direction: row;
  gap: var(--space-3);
  flex-wrap: wrap;
}

.footer-social__link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--color-ink-inverse);
  opacity: 0.7;
  border-radius: var(--radius-sm);
  padding: var(--space-1);
  transition: color var(--duration-fast) var(--ease-snappy),
              opacity var(--duration-fast) var(--ease-snappy);
}

.footer-social__link:hover {
  color: var(--color-accent-hover);
  opacity: 1;
}

.footer-social__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  opacity: 1;
  color: var(--color-accent-hover);
}

.footer-social__icon {
  display: block;            /* Remove baseline gap below inline SVG */
  flex-shrink: 0;            /* Prevent icon from squishing in flex containers */
}


/* ============================================================
   FOOTER LEGAL
   Bottom bar spanning the full footer width.
   Separated from the column grid by a subtle top border.
   ============================================================ */

.footer-legal {
  border-top: 1px solid rgba(255, 255, 255, 0.08);  /* Very subtle rule on dark bg */
}

.footer-legal__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-4) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.footer-legal__copy,
.footer-legal__mls {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  margin: 0;
  line-height: var(--leading-relaxed);
}

.footer-legal__mls sup {
  font-size: 0.65em;
  vertical-align: super;
}


/* ============================================================
   FOOTER — DESKTOP LAYOUT  (≥ 900px)
   Five-column grid: Brand (2fr) | Brokerage+Agents (1.5fr) |
   Contact (1fr) | Navigation (1fr) | Social (0.75fr)
   ============================================================ */

@media (min-width: 900px) {

  .site-footer__inner {
    grid-template-columns: 2fr 1.5fr 1fr 1fr 0.75fr;
    grid-template-areas: "brand brokerage contact nav social";
    gap: var(--space-6);
    padding: var(--space-8) var(--space-6);
    align-items: start;
  }

  .footer-brand         { grid-area: brand;     }
  .footer-brokerage-col { grid-area: brokerage; }
  .footer-contact       { grid-area: contact;   }
  .footer-nav           { grid-area: nav;        }
  .footer-social        { grid-area: social;     }

  .footer-legal__inner {
    padding: var(--space-4) var(--space-6);
    flex-direction: row;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-4);
  }

}
/* end @media (min-width: 900px) — footer */


/* ================================================================
   HOMEPAGE — front-page.php sections
   All classes are prefixed "home-" to scope them to the homepage.
   All values use design tokens from tokens.css — no hardcoded colours.
   Organised in section order matching front-page.php.
   ================================================================ */


/* ── Shared utilities used across multiple homepage sections ──── */

/*
 * .visually-hidden — accessible but off-screen.
 * Used for screen-reader-only testimonials (the aria-hidden marquee
 * has a parallel visually-hidden list for AT users).
 */
.visually-hidden {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Section intro block — shared by Services and About sections */
.home-section-intro {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.home-section-intro h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.home-section-intro p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Arrow CTA link — "Learn more about us →" */
.home-link-arrow {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-decoration: none;
  display: inline-flex;
  align-items: center;
  gap: var(--space-2);
  transition: color var(--duration-fast) var(--ease-snappy),
              gap var(--duration-fast) var(--ease-snappy);
}

.home-link-arrow:hover {
  color: var(--color-accent-hover);
  gap: var(--space-3);
}

.home-link-arrow:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}


/* ── Buttons ─────────────────────────────────────────────────── */

.home-btn {
  display: inline-block;
  padding: 0.75rem var(--space-5);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.01em;
  text-decoration: none;
  white-space: nowrap;
  border-radius: var(--radius-md);
  cursor: pointer;
  border: 2px solid transparent;
  transition:
    background var(--duration-fast) var(--ease-snappy),
    color var(--duration-fast) var(--ease-snappy),
    border-color var(--duration-fast) var(--ease-snappy),
    box-shadow var(--duration-fast) var(--ease-snappy),
    transform var(--duration-fast) var(--ease-snappy);
}

.home-btn:active {
  transform: translateY(1px);
}

/* Primary — teal fill */
.home-btn--primary {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  border-color: var(--color-accent);
}

.home-btn--primary:hover {
  background: var(--color-accent-hover);
  border-color: var(--color-accent-hover);
  box-shadow: var(--shadow-sm);
}

.home-btn--primary:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus), var(--shadow-sm);
}

/* Ghost — transparent, dark border (for use on light or image backgrounds) */
.home-btn--ghost {
  background: transparent;
  color: var(--color-ink-inverse);
  border-color: rgba(255, 255, 255, 0.6);
}

.home-btn--ghost:hover {
  border-color: var(--color-ink-inverse);
  background: rgba(255, 255, 255, 0.08);
}

.home-btn--ghost:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
}

/* Ghost light variant — same ghost style; alias for semantic clarity on dark sections */
.home-btn--ghost-light {
  background: transparent;
  color: var(--color-ink-inverse);
  border-color: rgba(255, 255, 255, 0.6);
}

.home-btn--ghost-light:hover {
  border-color: var(--color-ink-inverse);
  background: rgba(255, 255, 255, 0.08);
}

.home-btn--ghost-light:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
}


/* ── Form elements — shared by Newsletter and Contact ─────────── */

.home-form-honeypot {
  position: absolute;
  left: -9999px;
  top: auto;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  tabindex: -1;
}

.home-form-label {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
  margin-bottom: var(--space-1);
}

.home-form-required {
  color: var(--color-accent);
  margin-left: 2px;
}

.home-form-optional {
  font-weight: var(--weight-regular);
  color: var(--color-ink-soft);
  font-size: var(--text-xs);
}

.home-form-input {
  display: block;
  width: 100%;
  padding: 0.625rem var(--space-3);
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  transition:
    border-color var(--duration-fast) var(--ease-snappy),
    box-shadow var(--duration-fast) var(--ease-snappy);
  appearance: none;
  box-sizing: border-box;
}

.home-form-input::placeholder {
  color: var(--color-ink-faint);
}

.home-form-input:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: var(--shadow-focus);
}

.home-form-textarea {
  resize: vertical;
  min-height: 120px;
}

.home-form-field {
  display: flex;
  flex-direction: column;
}

.home-form-row {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

.home-form-error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #b91c1c;   /* Red — status colour, intentionally not a token */
  padding: var(--space-2) var(--space-3);
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: var(--radius-md);
  margin-top: var(--space-2);
}

@media (min-width: 680px) {
  .home-form-row--two {
    grid-template-columns: 1fr 1fr;
  }
}


/* ================================================================
   SECTION 1 — HERO
   ================================================================ */

.home-hero {
  position: relative;
  min-height: 92svh;   /* svh = small viewport height — accounts for mobile chrome */
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  overflow: hidden;
}

/* Dark gradient overlay — ensures text legibility over any photo */
.home-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to right,
    rgba(10, 22, 40, 0.78) 0%,
    rgba(10, 22, 40, 0.50) 60%,
    rgba(10, 22, 40, 0.25) 100%
  );
}

.home-hero__inner {
  position: relative;  /* above overlay */
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
}

.home-hero__content {
  max-width: 640px;
}

/* Wordmark — "edmontoncityhomes.com" in Fraunces */
.home-hero__wordmark {
  font-family: var(--font-display);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-warning);       /* Amber — the one accent that reads on dark overlay */
  margin: 0 0 var(--space-3);
  opacity: 0.9;
}

/* H1 — one per page, lives in the hero */
.home-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  /* No italic — Fraunces should sit upright */
}

.home-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 0 var(--space-2);
}

.home-hero__agents {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  margin: 0 0 var(--space-6);
  line-height: var(--leading-normal);
}

.home-hero__agents-sep {
  margin: 0 var(--space-2);
  opacity: 0.5;
}

.home-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  align-items: center;
}


/* ================================================================
   SECTION 2 — TRUST BAR
   ================================================================ */

.home-trust {
  background: var(--color-surface);
  border-bottom: 1px solid var(--color-border);
}

.home-trust__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-6) var(--space-5);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-5);
}

.home-trust__divider {
  display: none;  /* Hidden on mobile; revealed on desktop */
}

.home-trust__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  gap: var(--space-1);
}

.home-trust__number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  line-height: 1;
}

.home-trust__badge {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-ink);
  background: var(--color-surface-sunken);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  border: 1px solid var(--color-border);
}

.home-trust__label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
}

@media (min-width: 680px) {
  .home-trust__inner {
    flex-direction: row;
    align-items: stretch;
    justify-content: center;
    gap: 0;
    padding: var(--space-7) var(--space-5);
  }

  .home-trust__stat {
    flex: 1;
    padding: 0 var(--space-5);
    max-width: 240px;
  }

  .home-trust__divider {
    display: block;
    width: 1px;
    background: var(--color-border);
    align-self: stretch;
    flex-shrink: 0;
  }
}


/* ================================================================
   SECTION 3 — SERVICES
   ================================================================ */

.home-services {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
}

.home-services__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.home-services__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

/* Service card */
.home-service-card {
  position: relative;
  min-height: 340px;
  display: flex;
  align-items: flex-end;
  border-radius: var(--radius-xl);
  overflow: hidden;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  box-shadow: var(--shadow-sm);
  transition: transform var(--duration-base) var(--ease-smooth),
              box-shadow var(--duration-base) var(--ease-smooth);
}

.home-service-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}

/* Dark gradient so text is always legible */
.home-service-card__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to top,
    rgba(10, 22, 40, 0.88) 0%,
    rgba(10, 22, 40, 0.40) 50%,
    rgba(10, 22, 40, 0.15) 100%
  );
  transition: background var(--duration-base) var(--ease-smooth);
}

.home-service-card:hover .home-service-card__overlay {
  background: linear-gradient(
    to top,
    rgba(10, 22, 40, 0.92) 0%,
    rgba(10, 22, 40, 0.55) 55%,
    rgba(10, 22, 40, 0.20) 100%
  );
}

.home-service-card__content {
  position: relative;  /* above overlay */
  z-index: 1;
  padding: var(--space-5) var(--space-5) var(--space-5);
}

.home-service-card__title {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-2);
}

.home-service-card__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-3);
}

.home-service-card__link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-inverse);
  text-decoration: none;
  opacity: 0.7;
  display: inline-flex;
  align-items: center;
  gap: var(--space-1);
  transition: opacity var(--duration-fast) var(--ease-snappy),
              gap var(--duration-fast) var(--ease-snappy);
}

.home-service-card:hover .home-service-card__link,
.home-service-card__link:hover {
  opacity: 1;
  gap: var(--space-2);
}

.home-service-card__link:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
  opacity: 1;
}

@media (min-width: 680px) {
  .home-services__grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 1024px) {
  .home-services__grid {
    grid-template-columns: repeat(4, 1fr);
  }

  .home-service-card {
    min-height: 420px;
  }
}


/* ================================================================
   SECTION 4 — PHILOSOPHY / OUR APPROACH
   ================================================================ */

.home-philosophy {
  background: var(--color-surface);
  padding: var(--space-8) 0;
}

.home-philosophy__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.home-philosophy__header {
  max-width: 700px;
  margin: 0 0 var(--space-7);
}

.home-philosophy__eyebrow {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-ink-soft);
  margin-bottom: var(--space-3);
}

.home-philosophy__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.home-philosophy__lead {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.home-philosophy__body {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
}

/* Pull quote — the only place accent teal appears as a decorative accent */
.home-philosophy__pull-quote {
  padding: var(--space-5) var(--space-6);
  border-left: 4px solid var(--color-accent);
  background: var(--color-surface-elevated);
  border-radius: 0 var(--radius-lg) var(--radius-lg) 0;
}

.home-philosophy__pull-quote p {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-regular);
  line-height: var(--leading-snug);
  color: var(--color-ink);
  margin: 0;
}

.home-philosophy__steps {
  display: flex;
  flex-direction: column;
  gap: var(--space-6);
}

.home-philosophy__step {
  display: grid;
  grid-template-columns: 3rem 1fr;
  gap: var(--space-4);
  align-items: start;
}

.home-philosophy__step-num {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-border-strong);
  line-height: 1;
  padding-top: 4px;
}

.home-philosophy__step-body h3 {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.home-philosophy__step-body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 900px) {
  .home-philosophy__body {
    grid-template-columns: 1fr 1fr;
    align-items: start;
  }
}


/* ================================================================
   SECTION 5 — ABOUT
   ================================================================ */

.home-about {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
}

.home-about__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.home-about__cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
  margin-bottom: var(--space-7);
}

/* Agent card */
.home-agent-card {
  background: var(--color-surface);
  border-radius: var(--radius-xl);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--duration-base) var(--ease-smooth);
}

.home-agent-card:hover {
  box-shadow: var(--shadow-md);
}

.home-agent-card__photo {
  aspect-ratio: 4 / 5;
  width: 100%;
  overflow: hidden;
  background: var(--color-surface-sunken);
}

.home-agent-card__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 20%;
  display: block;
  transition: transform var(--duration-slow) var(--ease-smooth);
}

.home-agent-card:hover .home-agent-card__photo img {
  transform: scale(1.03);
}

.home-agent-card__body {
  padding: var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.home-agent-card__name {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

/* Agent title — ink-soft (not teal), per design audit */
.home-agent-card__title {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  margin: 0;
}

.home-agent-card__bio {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.home-about__cta {
  text-align: center;
}

@media (min-width: 680px) {
  .home-about__cards {
    grid-template-columns: 1fr 1fr;
  }
}


/* ================================================================
   SECTION 6 — SERVING EDMONTON & SURROUNDING AREAS
   ================================================================ */

.home-serving {
  position: relative;
  padding: var(--space-9) 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
  background-attachment: fixed;  /* Subtle parallax on desktop */
}

.home-serving__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.72) 0%,
    rgba(10, 22, 40, 0.60) 100%
  );
}

.home-serving__inner {
  position: relative;
  z-index: 1;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.home-serving__content {
  text-align: center;
  max-width: 680px;
}

.home-serving__content h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.home-serving__content p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-6);
}

/* Disable parallax on devices that can't handle it cleanly */
@media (max-width: 900px) {
  .home-serving {
    background-attachment: scroll;
  }
}


/* ================================================================
   SECTION 7 — NEWSLETTER
   ================================================================ */

.home-newsletter {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.home-newsletter__inner {
  max-width: 740px;
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.home-newsletter__content {
  margin-bottom: var(--space-6);
}

.home-newsletter__content h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.home-newsletter__content p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.home-newsletter__form-wrap {
  text-align: left;
}

.home-newsletter__form {
  position: relative;  /* stacking context for honeypot */
}

.home-newsletter__fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.home-newsletter__submit {
  width: 100%;
  text-align: center;
  justify-content: center;
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}

/* The HTML hidden attribute is overridden by any explicit display value.
   This selector ensures hidden works so JS can toggle visibility. */
.home-newsletter__success[hidden] {
  display: none;
}

/* Success state */
.home-newsletter__success {
  text-align: center;
  padding: var(--space-7) var(--space-5);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
}

.home-newsletter__success svg {
  color: var(--color-accent);
  flex-shrink: 0;
}

.home-newsletter__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

.home-newsletter__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0;
  max-width: 380px;
}

.home-newsletter__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  text-align: center;
  margin: var(--space-4) 0 0;
}

@media (min-width: 680px) {
  .home-newsletter__fields {
    flex-direction: row;
    align-items: flex-end;
    flex-wrap: nowrap;
  }

  .home-newsletter__fields .home-form-field {
    flex: 1;
  }

  .home-newsletter__submit {
    width: auto;
    flex-shrink: 0;
  }
}


/* ================================================================
   SECTION 8 — TESTIMONIALS (CSS marquee)
   ================================================================ */

.home-testimonials {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  overflow: hidden;
  border-top: 1px solid var(--color-border);
}

.home-testimonials__header {
  text-align: center;
  margin-bottom: var(--space-6);
  padding: 0 var(--space-5);
}

.home-testimonials__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

/*
 * Marquee — the track contains testimonials three times (PHP renders 3 passes).
 * The animation translates from 0 → -33.333% of the track's total width,
 * which equals exactly one pass worth of cards, creating a seamless loop.
 */
.home-testimonials__marquee {
  overflow: hidden;
  cursor: default;
  user-select: none;
}

.home-testimonials__marquee:hover .home-testimonials__track {
  animation-play-state: paused;
}

.home-testimonials__track {
  display: flex;
  gap: var(--space-4);
  animation: home-marquee-scroll 50s linear infinite;
  width: max-content;
}

@keyframes home-marquee-scroll {
  from { transform: translateX(0); }
  to   { transform: translateX(-33.333%); }
}

@media (prefers-reduced-motion: reduce) {
  .home-testimonials__track {
    animation-play-state: paused;
  }
}

.home-testimonials__card {
  flex-shrink: 0;
  width: 340px;
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);    /* Neutral border — not teal, per design audit */
  border-radius: var(--radius-xl);
  padding: var(--space-5);
  box-shadow: var(--shadow-xs);
}

.home-testimonials__quote {
  margin: 0;
  padding: 0;
}

.home-testimonials__quote p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.home-testimonials__cite {
  display: flex;
  flex-direction: column;
  gap: 2px;
}

.home-testimonials__cite cite {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-style: normal;
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
}

.home-testimonials__area {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-soft);
}


/* ================================================================
   SECTION 9 — CTA SECTION
   ================================================================ */

.home-cta {
  position: relative;
  padding: var(--space-9) 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.home-cta__overlay {
  position: absolute;
  inset: 0;
  background: rgba(10, 22, 40, 0.82);
}

.home-cta__inner {
  position: relative;
  z-index: 1;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.home-cta__content {
  text-align: center;
  max-width: 680px;
}

.home-cta__content h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.home-cta__content > p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

/* Prominent phone display */
.home-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.home-cta__phone:hover {
  opacity: 0.85;
}

.home-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.home-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.home-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);   /* Amber — high visibility on dark bg */
  letter-spacing: 0.02em;
}

.home-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}


/* ================================================================
   SECTION 10 — CONTACT FORM
   ================================================================ */

.home-contact {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
}

.home-contact__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-7);
}

.home-contact__content h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.home-contact__content > p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

.home-contact__details {
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.home-contact__details p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0;
}

.home-contact__details strong {
  color: var(--color-ink);
  font-weight: var(--weight-semibold);
}

.home-contact__detail-link {
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.home-contact__detail-link:hover {
  color: var(--color-accent-hover);
}

.home-contact__detail-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Form wrapper */
.home-contact__form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  position: relative;  /* stacking context for honeypot */
}

/* Hidden-attribute overrides for form and success state.
   Same pattern as newsletter and contact page forms. */
.home-contact__form[hidden],
.home-contact__success[hidden] {
  display: none;
}

/* Success state */
.home-contact__success {
  text-align: center;
  padding: var(--space-7) var(--space-5);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
}

.home-contact__success svg {
  color: var(--color-accent);
  flex-shrink: 0;
}

.home-contact__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

.home-contact__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0;
}

.home-contact__noscript {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  padding: var(--space-4);
  background: var(--color-surface-elevated);
  border-radius: var(--radius-md);
  margin-top: var(--space-3);
}

.home-contact__noscript a {
  color: var(--color-accent);
}

@media (min-width: 900px) {
  .home-contact__inner {
    grid-template-columns: 1fr 1.5fr;
    gap: var(--space-8);
    align-items: start;
  }
}

@media (min-width: 680px) {
  .home-contact__form {
    background: var(--color-surface-elevated);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-xl);
    padding: var(--space-6);
    box-shadow: var(--shadow-xs);
  }
}
/* end HOMEPAGE styles */


/* ================================================================
   ABOUT PAGE — page-about.php sections
   All classes are prefixed "about-" to scope them to this page.
   All values use design tokens from tokens.css — no hardcoded colours.
   Organised in section order matching page-about.php.
   ================================================================ */


/* ================================================================
   ABOUT — HERO
   ================================================================ */

.about-hero {
  position: relative;
  min-height: 70svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 30%;   /* Favour the street/sky portion */
  background-repeat: no-repeat;
  overflow: hidden;
}

/* Lighter, warmer overlay than the homepage hero.
   Centred gradient — content sits in the middle, not left-pinned. */
.about-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.45) 0%,
    rgba(10, 22, 40, 0.55) 50%,
    rgba(10, 22, 40, 0.38) 100%
  );
}

.about-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.about-hero__content {
  text-align: center;
  max-width: 780px;
}

/* Small eyebrow badge */
.about-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem); /* ~16px mobile → ~20px desktop */
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);     /* was --color-warning; white on hero bg */
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);  /* subtle underline makes it intentional */
}

/* H1 — single per page, lives in the hero */
.about-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.about-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0;
  line-height: var(--leading-relaxed);
}


/* ================================================================
   ABOUT — OPENING NARRATIVE
   ================================================================ */

.about-narrative {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.about-narrative__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.about-narrative__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-6);
}

.about-narrative__body {
  text-align: left;
}

.about-narrative__body p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.about-narrative__body p:last-child {
  margin-bottom: 0;
}

/* Closing line — slightly more emphasis */
.about-narrative__closer {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-regular);
  color: var(--color-ink-strong);
  font-style: italic;
  text-align: center;
  margin-top: var(--space-5);
}


/* ================================================================
   ABOUT — AGENT PROFILES (shared base styles)
   Two-column desktop layout: photo + content.
   Stacks on mobile with photo on top.
   ================================================================ */

.about-agent {
  padding: var(--space-8) 0;
}

/* Alternating background — Bev on white, Rory on elevated */
.about-agent--bev {
  background: var(--color-surface);
}

.about-agent--rory {
  background: var(--color-surface-elevated);
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

/* Grid: single column on mobile, two-column on desktop */
.about-agent__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

/* PHOTO — portrait aspect ratio, generous size */
.about-agent__photo {
  aspect-ratio: 4 / 5;
  overflow: hidden;
  border-radius: var(--radius-xl);
  background: var(--color-surface-sunken);
  box-shadow: var(--shadow-md);

  /* On mobile: constrain so the photo doesn't become enormous */
  max-width: 420px;
  width: 100%;
  justify-self: center;
}

.about-agent__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 15%;
  display: block;
}

/* CONTENT — name, title, bio, credentials, contact */
.about-agent__content {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  justify-content: center;
}

.about-agent__name {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.about-agent__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  margin: 0;
}

.about-agent__bio {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.about-agent__bio p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* CREDENTIALS — designations + awards rows */
.about-agent__credentials {
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}

.about-agent__cred-group {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.about-agent__cred-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-ink-faint);
  margin: 0;
}

.about-agent__cred-logos {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-4);
  align-items: flex-start;
}

/* Individual credential logo + caption pair */
.about-cred-item {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
}

.about-cred-item__logo {
  display: block;
  height: 70px;
  width: auto;
  object-fit: contain;
  filter: grayscale(20%);
  opacity: 0.85;
  transition:
    opacity var(--duration-fast) var(--ease-snappy),
    filter var(--duration-fast) var(--ease-snappy),
    transform var(--duration-fast) var(--ease-snappy);
  cursor: default;
}

.about-cred-item:hover .about-cred-item__logo {
  opacity: 1;
  filter: grayscale(0%);
  transform: translateY(-2px);
}

/* Tooltip — visible below the logo on hover */
.about-cred-item__caption {
  position: absolute;
  bottom: calc(100% + var(--space-2));
  left: 50%;
  transform: translateX(-50%);
  white-space: nowrap;
  background: var(--color-surface-inverse);
  color: var(--color-ink-inverse);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  box-shadow: var(--shadow-md);
  pointer-events: none;
  opacity: 0;
  transition: opacity var(--duration-fast) var(--ease-snappy);
  z-index: 10;
}

/* Small triangle arrow pointing down */
.about-cred-item__caption::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 5px solid transparent;
  border-top-color: var(--color-surface-inverse);
}

.about-cred-item:hover .about-cred-item__caption {
  opacity: 1;
}

/* CONTACT — phone + email, minimal text-link style */
.about-agent__contact {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  padding-top: var(--space-3);
  border-top: 1px solid var(--color-border);
}

.about-agent__contact-link {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.about-agent__contact-link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.about-agent__contact-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

/* DESKTOP — two-column layout for both agent sections */
@media (min-width: 900px) {

  .about-agent__inner {
    grid-template-columns: 1fr 1.2fr;
    gap: var(--space-8);
    align-items: start;
  }

  .about-agent__photo {
    max-width: none;
    justify-self: stretch;
    /* Lock to a fixed width so both photos feel consistent */
    width: 100%;
    max-width: 440px;
  }

  /* Rory: photo right, content left.
     DOM order is photo, content — so swap visually with order. */
  .about-agent--rory .about-agent__inner {
    grid-template-columns: 1.2fr 1fr;
  }

  .about-agent--rory .about-agent__photo {
    order: 2;
    justify-self: end;
  }

  .about-agent--rory .about-agent__content {
    order: 1;
  }

}
/* end @media (min-width: 900px) — agent profiles */


/* ================================================================
   ABOUT — PRINCIPLE CARDS
   ================================================================ */

.about-principles {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.about-principles__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.about-principles__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.about-principles__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.about-principles__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Cards grid */
.about-principles__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.about-principle-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-xl);
  padding: var(--space-5) var(--space-5);
  box-shadow: var(--shadow-xs);
  transition:
    box-shadow var(--duration-base) var(--ease-smooth),
    transform var(--duration-base) var(--ease-smooth);
}

.about-principle-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}

.about-principle-card__heading {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.about-principle-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 680px) {
  .about-principles__grid {
    grid-template-columns: 1fr 1fr;
  }
}

@media (min-width: 1024px) {
  .about-principles__grid {
    grid-template-columns: repeat(4, 1fr);
  }
}


/* ================================================================
   ABOUT — BROKERAGE BAR
   ================================================================ */

.about-brokerage {
  background: var(--color-surface);
  padding: var(--space-6) 0;
  border-bottom: 1px solid var(--color-border);
}

.about-brokerage__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-4);
  text-align: center;
}

.about-brokerage__logo {
  display: block;
  height: 52px;
  width: auto;
  opacity: 0.6;
  filter: grayscale(30%);
}

.about-brokerage__text {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 680px) {
  .about-brokerage__inner {
    flex-direction: row;
    text-align: left;
    gap: var(--space-5);
  }

  .about-brokerage__logo {
    flex-shrink: 0;
  }
}


/* ================================================================
   ABOUT — CTA SECTION
   Matches homepage CTA visual style: dark overlay on photo.
   ================================================================ */

.about-cta {
  position: relative;
  padding: var(--space-9) 0;
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.about-cta__overlay {
  position: absolute;
  inset: 0;
  background: rgba(10, 22, 40, 0.82);
}

.about-cta__inner {
  position: relative;
  z-index: 1;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.about-cta__content {
  text-align: center;
  max-width: 680px;
}

.about-cta__content h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.about-cta__content > p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

/* Prominent phone display — matches homepage CTA pattern */
.about-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.about-cta__phone:hover {
  opacity: 0.85;
}

.about-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.about-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.about-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.about-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}
/* end ABOUT PAGE styles */


/* ================================================================
   === Seniors Page ===
   Scoped to .seniors-* to prevent collisions with .home-* or .about-*
   Mobile-first. All values use design tokens only.
   ================================================================ */


/* ================================================================
   SENIORS — HERO
   Background: senior-couple-walking-arm-in-arm-park-path.jpg
   Active, warm, natural light. Gradient overlay for legibility.
   ================================================================ */

.seniors-hero {
  position: relative;
  min-height: 70svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 35%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.seniors-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.58) 50%,
    rgba(10, 22, 40, 0.40) 100%
  );
}

.seniors-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.seniors-hero__content {
  text-align: center;
  max-width: 780px;
}

/* Eyebrow badge — matches About page treatment */
.seniors-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

/* H1 — one per page, lives here */
.seniors-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.seniors-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0;
  line-height: var(--leading-relaxed);
}


/* ================================================================
   SENIORS — OPENING NARRATIVE
   Centred prose at container-narrow width.
   ================================================================ */

.seniors-narrative {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.seniors-narrative__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.seniors-narrative__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-6);
}

.seniors-narrative__body p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.seniors-narrative__body p:last-child {
  margin-bottom: 0;
}


/* ================================================================
   SENIORS — IMAGE BREAKS
   Full-width visual rhythm breaks placed between content sections.
   --full: tall atmospheric break (senior couple), pull-quote overlay.
   --band: tall interior image break (fireplace living room), no text.

   Parallax: background-attachment: fixed on desktop ≥900px.
   Mobile <900px: falls back to scroll (iOS Safari compatibility).
   ================================================================ */

.seniors-image-break {
  position: relative;
  background-size: cover;
  background-repeat: no-repeat;
}

.seniors-image-break--full {
  min-height: clamp(360px, 45vw, 560px);
  background-position: center 30%; /* favour upper portion — couple's faces */
}

.seniors-image-break--band {
  min-height: clamp(320px, 40vw, 480px);
  background-position: center;
}

/* Parallax: desktop and tablet only */
@media (min-width: 900px) {
  .seniors-image-break {
    background-attachment: fixed;
  }
}

/* Mobile: scroll attachment for iOS Safari compatibility */
@media (max-width: 899px) {
  .seniors-image-break {
    background-attachment: scroll;
  }

  .seniors-image-break--full {
    min-height: 360px;
  }

  .seniors-image-break--band {
    min-height: 320px;
  }
}

.seniors-image-break__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.08) 0%, rgba(0, 0, 0, 0.55) 100%);
  display: flex;
  align-items: flex-end;
  padding: var(--space-8) var(--space-6);
}

.seniors-image-break__quote {
  font-family: var(--font-display);
  font-size: clamp(1.1rem, 2.5vw, 1.6rem);
  font-style: italic;
  color: var(--color-ink-inverse);
  max-width: 680px;
  margin: 0 auto;
  line-height: var(--leading-relaxed);
  text-align: center;
  width: 100%;
}

@media (max-width: 899px) {
  .seniors-image-break__overlay {
    padding: var(--space-5) var(--space-5);
  }
}


/* ================================================================
   SENIORS — SITUATIONS WE HELP WITH
   6-card grid: 1 col mobile, 2 col mid, 3 col desktop.
   Clean white cards, no background images.
   ================================================================ */

.seniors-situations {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.seniors-situations__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.seniors-situations__header {
  text-align: center;
  margin-bottom: var(--space-7);
}

.seniors-situations__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.seniors-situations__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.seniors-situation-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.seniors-situation-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.seniors-situation-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.seniors-situation-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .seniors-situations__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .seniors-situations__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* ================================================================
   SENIORS — UNDERSTANDING WHAT THIS MOVE MEANS
   Centred editorial prose, slightly tinted background.
   ================================================================ */

.seniors-decision {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.seniors-decision__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.seniors-decision__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-6);
}

.seniors-decision__body p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
  text-align: left;
}

.seniors-decision__body p:last-child {
  margin-bottom: 0;
}

@media (min-width: 680px) {
  .seniors-decision__body p {
    text-align: center;
  }
}


/* ================================================================
   SENIORS — BEV'S APPROACH
   Two-column on desktop: text left, credential right.
   Stacks (text then cred) on mobile.
   ================================================================ */

.seniors-approach {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.seniors-approach__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-7);
  align-items: flex-start;
}

.seniors-approach__text {
  flex: 1;
}

.seniors-approach__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-5);
}

.seniors-approach__bio p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.seniors-approach__bio p:last-child {
  margin-bottom: 0;
}

.seniors-approach__link {
  display: inline-block;
  margin-top: var(--space-5);
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.seniors-approach__link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.seniors-approach__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

/* Credential badge */
.seniors-approach__cred {
  width: 100%;
  display: flex;
  justify-content: center;
}

.seniors-cred-badge {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
}

/* Tooltip wrapper: positions the tooltip relative to the logo */
.seniors-cred-badge__tooltip-wrap {
  position: relative;
  display: inline-flex;
  flex-direction: column;
  align-items: center;
  cursor: default;
}

.seniors-cred-badge__logo {
  display: block;
  width: 180px;
  height: auto;
  border-radius: var(--radius-md);
}

/* CSS tooltip — appears on hover/focus */
.seniors-cred-badge__tooltip {
  position: absolute;
  bottom: calc(100% + var(--space-2));
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-surface-inverse);
  color: var(--color-ink-inverse);
  font-family: var(--font-body);
  font-size: var(--text-xs);
  line-height: var(--leading-relaxed);
  padding: var(--space-2) var(--space-3);
  border-radius: var(--radius-md);
  width: 240px;
  text-align: center;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--duration-base) var(--ease-snappy);
  z-index: 10;
  white-space: normal;
  box-shadow: var(--shadow-md);
}

/* Tooltip arrow */
.seniors-cred-badge__tooltip::after {
  content: '';
  position: absolute;
  top: 100%;
  left: 50%;
  transform: translateX(-50%);
  border: 6px solid transparent;
  border-top-color: var(--color-surface-inverse);
}

.seniors-cred-badge__tooltip-wrap:hover .seniors-cred-badge__tooltip,
.seniors-cred-badge__tooltip-wrap:focus-within .seniors-cred-badge__tooltip {
  opacity: 1;
}

.seniors-cred-badge__caption {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  margin: 0;
  text-align: center;
}

@media (min-width: 900px) {
  .seniors-approach__inner {
    flex-direction: row;
    align-items: center;
    gap: var(--space-8);
  }

  .seniors-approach__cred {
    width: auto;
    flex-shrink: 0;
  }
}


/* ================================================================
   SENIORS — OUR NETWORK
   Brief, credibility-building. Sunken background.
   ================================================================ */

.seniors-network {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.seniors-network__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.seniors-network__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-5);
}

.seniors-network__body p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-3);
}

.seniors-network__body p:last-child {
  margin-bottom: 0;
}


/* ================================================================
   SENIORS — NEWSLETTER SIGNUP
   Seniors News & Views. Matches home-newsletter layout pattern.
   ================================================================ */

.seniors-newsletter {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-top: 1px solid var(--color-border);
  border-bottom: 1px solid var(--color-border);
}

.seniors-newsletter__inner {
  max-width: 740px;
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.seniors-newsletter__content {
  margin-bottom: var(--space-6);
}

.seniors-newsletter__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.seniors-newsletter__sub {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-4);
}

.seniors-newsletter__desc {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Honeypot: visually hidden but not display:none (bots detect that) */
.seniors-newsletter__honeypot {
  position: absolute;
  left: -9999px;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  tab-index: -1;
}

.seniors-newsletter__form {
  position: relative;
  text-align: left;
}

.seniors-newsletter__fields {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.seniors-newsletter__submit {
  width: 100%;
  text-align: center;
  justify-content: center;
  padding-top: 0.875rem;
  padding-bottom: 0.875rem;
}

.seniors-newsletter__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #dc2626;
  margin: var(--space-3) 0 0;
  text-align: center;
}

.seniors-newsletter__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  text-align: center;
  margin: var(--space-4) 0 0;
}

/* Hidden-attribute override so JS can toggle visibility. */
.seniors-newsletter__success[hidden] {
  display: none;
}

/* Success state */
.seniors-newsletter__success {
  text-align: center;
  padding: var(--space-7) var(--space-5);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
}

.seniors-newsletter__success svg {
  color: var(--color-accent);
  flex-shrink: 0;
}

.seniors-newsletter__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

.seniors-newsletter__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0;
  max-width: 380px;
}

@media (min-width: 680px) {
  .seniors-newsletter__fields {
    flex-direction: row;
    align-items: flex-end;
    flex-wrap: nowrap;
  }

  .seniors-newsletter__fields .home-form-field {
    flex: 1;
  }

  .seniors-newsletter__submit {
    width: auto;
    flex-shrink: 0;
  }
}


/* ================================================================
   SENIORS — CTA
   Solid dark background (--color-surface-inverse).
   Amber phone number for high contrast. Two action buttons.
   ================================================================ */

.seniors-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.seniors-cta__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.seniors-cta__content {
  text-align: center;
  max-width: 680px;
}

.seniors-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.seniors-cta__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

.seniors-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.seniors-cta__phone:hover {
  opacity: 0.85;
}

.seniors-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.seniors-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.seniors-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.seniors-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}


/* ================================================================
   === Contact Page ===
   Scoped to .contact-* classes. Mobile-first responsive layout.
   Sections:
     1. Hero        — compact, background-image, badge + h1 + sub
     2. Contact Grid — two-column form + direct info
     3. Meet the Team — two agent mini-cards
   ================================================================ */


/* ----------------------------------------------------------------
   CONTACT — HERO
   Compact: 55svh minimum (vs 70svh for About/Seniors).
   Same badge, overlay, and typography treatment for consistency.
   ---------------------------------------------------------------- */

.contact-hero {
  position: relative;
  min-height: 55svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 40%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.contact-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.42) 0%,
    rgba(10, 22, 40, 0.58) 50%,
    rgba(10, 22, 40, 0.38) 100%
  );
}

.contact-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.contact-hero__content {
  text-align: center;
  max-width: 680px;
}

/* Eyebrow badge — matches About / Seniors treatment */
.contact-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

/* H1 — one per page */
.contact-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.contact-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0;
  line-height: var(--leading-relaxed);
}


/* ----------------------------------------------------------------
   CONTACT — SECTION HEADING
   Shared h2 style for "Send a message" and "Reach us directly".
   ---------------------------------------------------------------- */

.contact-section-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-5);
}


/* ----------------------------------------------------------------
   CONTACT — GRID
   Mobile: single column.
   Desktop (>=900px): 55/45 split (form is slightly wider).
   ---------------------------------------------------------------- */

.contact-grid {
  background: var(--color-surface);
  padding: var(--space-8) 0;
}

.contact-grid__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-8);
}

@media (min-width: 900px) {
  .contact-grid__inner {
    grid-template-columns: 55fr 45fr;
    gap: var(--space-9);
    align-items: start;
  }
}


/* ----------------------------------------------------------------
   CONTACT — FORM
   Reuses .home-form-field, .home-form-label, .home-form-input,
   .home-btn, .home-btn--primary from shared form styles.
   New classes: select wrapper, textarea height, success/error.
   ---------------------------------------------------------------- */

.contact-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

/* The HTML hidden attribute is overridden by any explicit display value.
   These selectors ensure hidden works on the form and success elements
   so JS can toggle visibility via setAttribute/removeAttribute. */
.contact-form[hidden],
.contact-form__success[hidden] {
  display: none;
}

/* Honeypot: out of flow, invisible to humans */
.contact-form__honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  opacity: 0;
  pointer-events: none;
  left: -9999px;
}

/* Select wrapper positions the custom chevron */
.contact-form__select-wrap {
  position: relative;
}

/* Select inherits .home-form-input; extra padding for chevron */
.contact-form__select {
  cursor: pointer;
  padding-right: var(--space-6);
}

/* Chevron SVG: sits on top of select, clicks pass through */
.contact-form__select-chevron {
  position: absolute;
  right: var(--space-3);
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-ink-soft);
  pointer-events: none;
  display: flex;
  align-items: center;
}

/* Textarea: taller than single-line inputs */
.contact-form__textarea {
  resize: vertical;
  min-height: 130px;
}

/* Full-width submit on mobile; auto-width at 480px+ */
.contact-form__submit {
  width: 100%;
}

@media (min-width: 480px) {
  .contact-form__submit {
    width: auto;
    min-width: 160px;
  }
}

/* Error message */
.contact-form__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #b91c1c;
  padding: var(--space-2) var(--space-3);
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: var(--radius-md);
  margin: 0;
}

/* Success state — replaces the form after submit */
.contact-form__success {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: var(--space-3);
  padding: var(--space-6);
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  color: var(--color-accent);
}

.contact-form__success-msg {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ----------------------------------------------------------------
   CONTACT — INFO COLUMN
   Phone (large), email addresses, brokerage address.
   Each block separated by a bottom border.
   ---------------------------------------------------------------- */

.contact-info-block {
  padding-bottom: var(--space-5);
  margin-bottom: var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.contact-info-block:last-child {
  padding-bottom: 0;
  margin-bottom: 0;
  border-bottom: none;
}

/* Phone number — large, prominent, click-to-call */
.contact-info__phone-link {
  display: block;
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  text-decoration: none;
  line-height: var(--leading-tight);
  margin-bottom: var(--space-3);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.contact-info__phone-link:hover {
  color: var(--color-accent);
}

.contact-info__phone-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}

.contact-info__phone-sub {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Small uppercase label above email list and office */
.contact-info__label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.10em;
  text-transform: uppercase;
  color: var(--color-ink-faint);
  margin: 0 0 var(--space-3);
}

/* Email list */
.contact-info__email-list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.contact-info__email-list li {
  display: flex;
  align-items: baseline;
  gap: var(--space-3);
  flex-wrap: wrap;
}

.contact-info__person {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
  min-width: 2.5rem;
  flex-shrink: 0;
}

.contact-info__email-link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
  word-break: break-word;
}

.contact-info__email-link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.contact-info__email-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* Brokerage address */
.contact-info__address {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  font-style: normal;
  margin: 0 0 var(--space-3);
}

.contact-info__appt-note {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  font-style: italic;
  margin: 0;
}


/* ----------------------------------------------------------------
   CONTACT — MEET THE TEAM
   Sunken background. Two mini-cards side-by-side on tablet+.
   Restrained design: credibility, not a primary CTA.
   ---------------------------------------------------------------- */

.contact-team {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
}

.contact-team__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.contact-team__header {
  text-align: center;
  max-width: 620px;
  margin: 0 auto var(--space-7);
}

.contact-team__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.contact-team__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Cards grid: 1 column mobile, 2 columns at 600px+ */
.contact-team__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

@media (min-width: 600px) {
  .contact-team__grid {
    grid-template-columns: 1fr 1fr;
    gap: var(--space-6);
  }
}

/* Agent mini-card: photo top, content below */
.contact-agent-card {
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: box-shadow var(--duration-base) var(--ease-smooth);
}

.contact-agent-card:hover {
  box-shadow: var(--shadow-md);
}

/* Photo container: compact portrait, centred in card */
.contact-agent-card__photo {
  width: 200px;
  aspect-ratio: 4 / 5;
  overflow: hidden;
  flex-shrink: 0;
  margin: var(--space-5) auto 0;
  border-radius: var(--radius-md);
}

.contact-agent-card__photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 20%;
  display: block;
}

/* Card body */
.contact-agent-card__body {
  padding: var(--space-4) var(--space-5) var(--space-5);
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
  flex: 1;
}

.contact-agent-card__name {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0;
}

.contact-agent-card__title {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-normal);
  margin: 0;
}

/* Contact links list */
.contact-agent-card__contact {
  list-style: none;
  margin: var(--space-1) 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-1);
}

.contact-agent-card__contact-link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-accent);
  text-decoration: none;
  word-break: break-word;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.contact-agent-card__contact-link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.contact-agent-card__contact-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* "Read more" link at bottom of card */
.contact-agent-card__more {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  text-decoration: none;
  margin-top: auto;
  padding-top: var(--space-3);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.contact-agent-card__more:hover {
  color: var(--color-accent);
}

.contact-agent-card__more:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

/* end SENIORS PAGE styles */


/* ================================================================
   ================================================================
   === Buyers Page ===
   Scoped to .buyers-* to prevent collisions with other pages.
   Mobile-first. All values use design tokens only.
   10 sections: Hero, Difference, Market, Process, Money, City,
   Local Rules, Checklist, FAQ, CTA.
   ================================================================
   ================================================================ */


/* ================================================================
   BUYERS — SHARED: Section label (01 / The Difference, etc.)
   ================================================================ */

.buyers-section-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}


/* ================================================================
   BUYERS — 1. HERO
   Background: couple-walking-alley-autumn-blue-house.jpg
   background-position: center 70% keeps couple in frame.
   ================================================================ */

.buyers-hero {
  position: relative;
  min-height: 80svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 70%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.buyers-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.62) 50%,
    rgba(10, 22, 40, 0.45) 100%
  );
}

.buyers-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.buyers-hero__content {
  text-align: center;
  max-width: 820px;
}

/* Eyebrow badge */
.buyers-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.buyers-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.buyers-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 0 var(--space-6);
  line-height: var(--leading-relaxed);
}

.buyers-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-6);
}

/* Stats badges row */
.buyers-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  max-width: 640px;
  margin: 0 auto;
}

.buyers-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(8px);
}

.buyers-hero__stat-value {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
}

.buyers-hero__stat-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-align: center;
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .buyers-hero__stats {
    grid-template-columns: repeat(4, 1fr);
  }
}


/* ================================================================
   BUYERS — 2. THE DIFFERENCE (4-point positioning)
   ================================================================ */

.buyers-difference {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-difference__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-difference__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-7);
  max-width: var(--container-narrow);
}

.buyers-difference__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.buyers-difference-card {
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.buyers-difference-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.buyers-difference-card__num {
  display: inline-block;
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}

.buyers-difference-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-difference-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .buyers-difference__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}


/* ================================================================
   BUYERS — 3. THE MARKET (stats + commentary)
   ================================================================ */

.buyers-market {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-market__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-market__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-market__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.buyers-market__intro {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Stats row */
.buyers-market__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  margin-bottom: var(--space-7);
}

.buyers-market-stat {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-4);
  text-align: center;
  box-shadow: var(--shadow-sm);
}

.buyers-market-stat__value {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  line-height: var(--leading-tight);
  margin-bottom: var(--space-2);
}

.buyers-market-stat__caption {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-soft);
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .buyers-market__stats {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (min-width: 900px) {
  .buyers-market__stats {
    grid-template-columns: repeat(5, 1fr);
  }
}

/* Commentary */
.buyers-market__commentary {
  max-width: var(--container-narrow);
  margin: 0 auto;
  text-align: center;
}

.buyers-market__commentary p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.buyers-market__commentary p:last-child {
  margin-bottom: 0;
}

.buyers-market__cta-link {
  font-weight: var(--weight-medium);
  margin-top: var(--space-4);
}

.buyers-market__cta-link a {
  color: var(--color-accent);
  text-decoration: none;
  font-weight: var(--weight-semibold);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.buyers-market__cta-link a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   BUYERS — 4. THE PROCESS (7-step timeline)
   ================================================================ */

.buyers-process {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-process__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-process__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-process__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-process__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.buyers-process__timeline {
  max-width: 820px;
  margin: 0 auto;
  position: relative;
}

.buyers-process__timeline::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 28px;
  width: 2px;
  background: var(--color-border);
}

.buyers-step {
  display: flex;
  gap: var(--space-5);
  padding-bottom: var(--space-6);
  position: relative;
}

.buyers-step:last-child {
  padding-bottom: 0;
}

.buyers-step__number {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-full);
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 1;
  box-shadow: var(--shadow-sm);
}

.buyers-step__body {
  flex: 1;
  padding-top: var(--space-2);
}

.buyers-step__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.buyers-step__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (max-width: 639px) {
  .buyers-process__timeline::before {
    left: 20px;
  }

  .buyers-step__number {
    width: 40px;
    height: 40px;
    font-size: var(--text-sm);
  }

  .buyers-step {
    gap: var(--space-3);
  }
}


/* ================================================================
   BUYERS — 5. THE MONEY (costs + Alberta Advantage)
   Two-column layout on desktop. Right column highlighted.
   ================================================================ */

.buyers-money {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-money__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-money__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-money__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-money__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.buyers-money__columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

.buyers-money__col {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.buyers-money__col-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

/* Cost items (left column) */
.buyers-cost-item {
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.buyers-cost-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.buyers-cost-item__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-1);
}

.buyers-cost-item__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Alberta Advantage (right column) — highlighted */
.buyers-money__col--advantage {
  background: var(--color-accent);
  border-radius: var(--radius-xl);
  padding: var(--space-6) var(--space-5);
  color: var(--color-ink-inverse);
}

.buyers-money__col--advantage .buyers-money__col-heading {
  color: var(--color-ink-inverse);
  border-bottom-color: rgba(255, 255, 255, 0.3);
}

.buyers-advantage-item {
  padding-bottom: var(--space-3);
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.buyers-advantage-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.buyers-advantage-item__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-1);
}

.buyers-advantage-item__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 900px) {
  .buyers-money__columns {
    grid-template-columns: 1.1fr 0.9fr;
    gap: var(--space-7);
    align-items: start;
  }
}


/* ================================================================
   BUYERS — 6. THE CITY (neighbourhood zones)
   3x2 grid on desktop, stacked on mobile.
   ================================================================ */

.buyers-city {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-city__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-city__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-city__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-city__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-2);
}

.buyers-city__framing {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
  font-style: italic;
}

.buyers-city__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.buyers-zone-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy),
    transform var(--duration-base) var(--ease-snappy);
}

.buyers-zone-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
  transform: translateY(-2px);
}

.buyers-zone-card__label {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}

.buyers-zone-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.buyers-zone-card__hoods {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-faint);
  margin: 0 0 var(--space-3);
  line-height: var(--leading-normal);
}

.buyers-zone-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .buyers-city__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .buyers-city__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* ================================================================
   BUYERS — 7. LOCAL RULES (Alberta specifics)
   Roman numeral items with left-aligned numeral.
   ================================================================ */

.buyers-rules {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-rules__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-rules__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-rules__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-rules__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.buyers-rules__list {
  max-width: var(--container-narrow);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.buyers-rule {
  display: flex;
  gap: var(--space-4);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.buyers-rule:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.buyers-rule__numeral {
  flex-shrink: 0;
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  min-width: 2.5rem;
  text-align: right;
  padding-top: 0.1em;
}

.buyers-rule__body {
  flex: 1;
}

.buyers-rule__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.buyers-rule__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (max-width: 639px) {
  .buyers-rule__numeral {
    min-width: 2rem;
    font-size: var(--text-lg);
  }
}


/* ================================================================
   BUYERS — 8. THE CHECKLIST
   7 grouped sections with checkbox bullets.
   ================================================================ */

.buyers-checklist {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-checklist__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-checklist__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.buyers-checklist__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.buyers-checklist__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.buyers-checklist__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.buyers-checklist-group {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}

.buyers-checklist-group__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.buyers-checklist-group__list {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-2);
}

.buyers-checklist-group__list li {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  padding-left: var(--space-5);
  position: relative;
}

.buyers-checklist-group__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.45em;
  width: 18px;
  height: 18px;
  border: 2px solid var(--color-border-strong);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
}

@media (min-width: 640px) {
  .buyers-checklist__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .buyers-checklist-group:last-child:nth-child(odd) {
    grid-column: 1 / -1;
    max-width: 50%;
    justify-self: center;
  }
}


/* ================================================================
   BUYERS — 9. FAQ (accordion)
   ================================================================ */

.buyers-faq {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.buyers-faq__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.buyers-faq__header {
  text-align: center;
  margin-bottom: var(--space-7);
}

.buyers-faq__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.buyers-faq__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

/*
 * FAQ item container.
 * The expanded visual state (background, left accent, shadow) is applied
 * via the trigger's [aria-expanded] attribute rather than :has(), which
 * can fail to re-evaluate on dynamic attribute changes in some browsers.
 * The trigger and panel are direct children, so we style the "expanded
 * wrapper feel" by giving the trigger and panel their own background /
 * border treatments that visually merge into one card.
 */
.buyers-faq-item {
  border-bottom: 1px solid var(--color-border);
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
  background: transparent;
  transition:
    background var(--duration-base) var(--ease-snappy),
    border-left-color var(--duration-base) var(--ease-snappy),
    box-shadow var(--duration-base) var(--ease-snappy);
}

.buyers-faq-item:first-child {
  border-top: 1px solid var(--color-border);
}

.buyers-faq-item__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  padding: var(--space-4) var(--space-3);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  line-height: var(--leading-snug);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.buyers-faq-item__trigger:hover {
  color: var(--color-accent);
}

.buyers-faq-item__trigger:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
  border-radius: var(--radius-sm);
}

.buyers-faq-item__icon {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  color: var(--color-ink-faint);
  transition:
    transform var(--duration-base) var(--ease-snappy),
    color var(--duration-base) var(--ease-snappy);
}

/*
 * Expanded state — all driven from [aria-expanded="true"] on the
 * trigger, which JS toggles reliably. No :has() needed.
 */

/* Trigger text turns teal */
.buyers-faq-item__trigger[aria-expanded="true"] {
  color: var(--color-accent);
}

/* Icon rotates to × and turns teal */
.buyers-faq-item__trigger[aria-expanded="true"] .buyers-faq-item__icon {
  transform: rotate(45deg);
  color: var(--color-accent);
}

/*
 * "Expanded wrapper" look: we use the general sibling combinator (~) from
 * the trigger to the panel. But the item container also needs styling.
 * Since the trigger is a direct child and aria-expanded is toggled on
 * click, we use a JS-free approach: the FAQ item wrapper gets its
 * expanded look via the adjacent technique below.
 *
 * How it works:
 *   .buyers-faq-item__trigger[aria-expanded="true"]  →  styles the trigger
 *   .buyers-faq-item__panel:not([hidden])             →  styles the panel
 *   Together they create the visual "card" effect within the item.
 *
 * The parent .buyers-faq-item gets its teal border + bg via the
 * panel's :not([hidden]) state, which is always in sync with
 * aria-expanded (both toggled by the same JS click handler).
 */

/* Panel: base transitions */
.buyers-faq-item__panel {
  overflow: hidden;
  transition: max-height var(--duration-slow) var(--ease-smooth);
}

.buyers-faq-item__panel[hidden] {
  display: block;
  max-height: 0;
  visibility: hidden;
}

.buyers-faq-item__panel:not([hidden]) {
  max-height: 500px;
  visibility: visible;
}

.buyers-faq-item__panel p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
  padding: 0 var(--space-3) var(--space-4);
}

/*
 * Expanded wrapper styling: when the panel is visible, the parent item
 * needs background + left accent + shadow. Since we can't select a parent
 * without :has(), we add a tiny JS-free workaround: style the item via
 * :focus-within when the trigger has focus, AND more importantly, use
 * :has() as progressive enhancement with a bulletproof fallback.
 *
 * Fallback: the trigger and panel individually look correct (teal text,
 * readable answer) even without the wrapper highlight. The wrapper
 * highlight is visual polish, not functional.
 *
 * Primary approach: we keep :has() but ALSO add the visual cues directly
 * to the trigger and panel so the experience is correct regardless.
 */

/* Wrapper highlight via :has() — progressive enhancement */
.buyers-faq-item:has(> .buyers-faq-item__panel:not([hidden])) {
  background: var(--color-surface);
  border-left-color: var(--color-accent);
  box-shadow: var(--shadow-sm);
}

/* Fallback for browsers / reflow situations where :has() doesn't fire:
   give the trigger itself a left-border teal bar when expanded */
.buyers-faq-item__trigger[aria-expanded="true"] {
  border-left: 0 none;
  background: var(--color-surface);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

/* Panel also gets surface bg so the whole item looks like one card */
.buyers-faq-item__panel:not([hidden]) {
  background: var(--color-surface);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}


/* ================================================================
   BUYERS — 10. CTA
   Solid dark background. Amber phone number. Two buttons + emails.
   ================================================================ */

.buyers-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.buyers-cta__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.buyers-cta__content {
  text-align: center;
  max-width: 680px;
}

.buyers-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.buyers-cta__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

.buyers-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.buyers-cta__phone:hover {
  opacity: 0.85;
}

.buyers-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.buyers-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.buyers-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.buyers-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-5);
}

.buyers-cta__emails {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  justify-content: center;
}

.buyers-cta__emails a {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-decoration: none;
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.buyers-cta__emails a:hover {
  opacity: 1;
  text-decoration: underline;
}

.buyers-cta__emails a:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}


/* end BUYERS PAGE styles */


/* ================================================================
   ================================================================
   === First-Time Buyers Page ===
   Scoped to .ftb-* to prevent collisions with other pages.
   Mobile-first. All values use design tokens only.
   10 sections: Hero, Narrative, Programs, Newsletter, Affordability,
   Hidden Costs, Process, Neighbourhoods, Mistakes, CTA.
   ================================================================
   ================================================================ */


/* ================================================================
   FTB — SHARED: Section label (01 / Savings Programs, etc.)
   ================================================================ */

.ftb-section-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}


/* ================================================================
   FTB — SHARED: Image breaks
   Full-width atmospheric bands between content sections.
   Parallax on desktop, standard scroll on mobile (iOS safe).
   ================================================================ */

.ftb-image-break {
  position: relative;
  min-height: clamp(320px, 40vw, 480px);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* Subtle darkening overlay so images don't overwhelm */
.ftb-image-break::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.06) 0%,
    rgba(10, 22, 40, 0.15) 100%
  );
  pointer-events: none;
}

/* Parallax: desktop and tablet only */
@media (min-width: 900px) {
  .ftb-image-break {
    background-attachment: fixed;
  }
}

/* Mobile: standard scroll for iOS Safari compatibility */
@media (max-width: 899px) {
  .ftb-image-break {
    background-attachment: scroll;
    min-height: 240px;
  }
}


/* ================================================================
   FTB — 1. HERO
   ================================================================ */

.ftb-hero {
  position: relative;
  min-height: 80svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 50%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.ftb-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.62) 50%,
    rgba(10, 22, 40, 0.45) 100%
  );
}

.ftb-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.ftb-hero__content {
  text-align: center;
  max-width: 820px;
}

.ftb-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.ftb-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.ftb-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 0 var(--space-6);
  line-height: var(--leading-relaxed);
}

.ftb-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-6);
}

.ftb-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  max-width: 640px;
  margin: 0 auto;
}

.ftb-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(8px);
}

.ftb-hero__stat-value {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
}

.ftb-hero__stat-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-align: center;
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .ftb-hero__stats {
    grid-template-columns: repeat(4, 1fr);
  }
}


/* ================================================================
   FTB — 2. OPENING NARRATIVE
   ================================================================ */

.ftb-narrative {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-narrative__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.ftb-narrative__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-6);
}

.ftb-narrative__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.ftb-narrative__body p:last-child {
  margin-bottom: 0;
}


/* ================================================================
   FTB — 3. PROGRAMS
   ================================================================ */

.ftb-programs {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-programs__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-programs__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-programs__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.ftb-programs__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Subsection headings (Federal / Alberta) */
.ftb-programs__subsection {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: var(--space-7) 0 var(--space-5);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

/* Program cards grid */
.ftb-programs__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-4);
}

@media (min-width: 640px) {
  .ftb-programs__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .ftb-programs__grid {
    grid-template-columns: repeat(3, 1fr);
  }
  .ftb-programs__grid--ab {
    grid-template-columns: repeat(2, 1fr);
  }
}

/* Individual program card */
.ftb-program-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  display: flex;
  flex-direction: column;
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy),
    transform var(--duration-base) var(--ease-snappy);
}

.ftb-program-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
  transform: translateY(-2px);
}

/* "NEW 2026" highlight */
.ftb-program-card--new {
  border-color: var(--color-accent);
  border-width: 2px;
  position: relative;
}

.ftb-program-card__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  background: var(--color-accent);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  margin-bottom: var(--space-2);
  align-self: flex-start;
}

.ftb-program-card--new .ftb-program-card__badge {
  background: var(--color-warning);
  color: var(--color-ink-strong);
}

.ftb-program-card__num {
  font-family: var(--font-display);
  font-size: var(--text-sm);
  font-weight: var(--weight-bold);
  color: var(--color-ink-faint);
  margin-bottom: var(--space-2);
}

.ftb-program-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-program-card__body {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
  flex: 1;
}

.ftb-program-card__stat {
  display: flex;
  align-items: baseline;
  gap: var(--space-2);
  margin-bottom: var(--space-3);
  padding: var(--space-3);
  background: var(--color-surface-sunken);
  border-radius: var(--radius-md);
}

.ftb-program-card__stat-value {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3vw, 2rem);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  line-height: 1;
}

.ftb-program-card__stat-caption {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
}

.ftb-program-card__link {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.ftb-program-card__link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   FTB — SHARED: Callout boxes
   Used for pro tip, stacking example, Alberta Advantage.
   ================================================================ */

.ftb-callout {
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-5);
  margin: var(--space-5) 0;
}

.ftb-callout__label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-bold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  margin: 0 0 var(--space-2);
}

.ftb-callout__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  margin: 0 0 var(--space-3);
}

.ftb-callout__sub {
  font-family: var(--font-body);
  font-size: var(--text-base);
  margin: 0 0 var(--space-4);
  opacity: 0.85;
}

.ftb-callout p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Pro tip: teal accent */
.ftb-callout--tip {
  background: rgba(14, 116, 144, 0.08);
  border-left: 4px solid var(--color-accent);
}

.ftb-callout--tip .ftb-callout__label {
  color: var(--color-accent);
}

.ftb-callout--tip p {
  color: var(--color-ink);
}

/* Real example stacking: highlighted teal background */
.ftb-callout--example {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
}

.ftb-callout--example .ftb-callout__heading {
  color: var(--color-ink-inverse);
}

.ftb-callout--example .ftb-callout__sub {
  color: var(--color-ink-inverse);
}

.ftb-callout--example p {
  color: var(--color-ink-inverse);
}

.ftb-callout__list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-4);
}

.ftb-callout__list li {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-inverse);
  line-height: var(--leading-relaxed);
  padding: var(--space-2) 0;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}

.ftb-callout__list li:last-child {
  border-bottom: none;
}

.ftb-callout__total {
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
}

.ftb-callout__note {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Alberta Advantage callout: highlighted sidebar */
.ftb-callout--advantage {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  margin-bottom: var(--space-6);
}

.ftb-callout--advantage .ftb-callout__heading {
  color: var(--color-ink-inverse);
}

.ftb-callout--advantage p {
  color: var(--color-ink-inverse);
}


/* ================================================================
   FTB — 4. NEWSLETTER SIGNUP
   Dark treatment: --color-surface-inverse background.
   High-value visual moment between Programs and Affordability.
   ================================================================ */

.ftb-newsletter {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.ftb-newsletter__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.ftb-newsletter__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-2);
}

.ftb-newsletter__sub {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent-hover);
  margin: 0 0 var(--space-4);
}

.ftb-newsletter__desc {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-6);
}

/* Section label override for dark bg */
.ftb-newsletter .ftb-section-label {
  color: var(--color-accent-hover);
}

/* Form */
.ftb-newsletter__form {
  text-align: left;
}

.ftb-newsletter__form[hidden],
.ftb-newsletter__success[hidden] {
  display: none;
}

.ftb-newsletter__honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.ftb-newsletter__fields {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

@media (min-width: 640px) {
  .ftb-newsletter__fields {
    grid-template-columns: 1fr 1fr auto;
    align-items: end;
  }
}

/* Labels on dark background */
.ftb-newsletter .home-form-label {
  color: var(--color-ink-inverse);
  opacity: 0.85;
}

/* Inputs: white bg, dark text for contrast */
.ftb-newsletter .home-form-input {
  background: var(--color-surface);
  color: var(--color-ink);
  border-color: rgba(255, 255, 255, 0.2);
}

.ftb-newsletter .home-form-input::placeholder {
  color: var(--color-ink-faint);
}

.ftb-newsletter .home-form-input:focus {
  border-color: var(--color-accent-hover);
  box-shadow: var(--shadow-focus);
}

.ftb-newsletter__submit {
  white-space: nowrap;
}

.ftb-newsletter__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #fca5a5;
  margin: var(--space-3) 0 0;
}

.ftb-newsletter__error[hidden] {
  display: none;
}

.ftb-newsletter__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.5;
  margin: var(--space-3) 0 0;
  text-align: center;
}

/* Success state: white card on dark */
.ftb-newsletter__success {
  text-align: center;
  padding: var(--space-6);
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.ftb-newsletter__success svg {
  color: var(--color-accent);
  margin-bottom: var(--space-3);
}

.ftb-newsletter__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.ftb-newsletter__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   FTB — 5. AFFORDABILITY
   ================================================================ */

.ftb-affordability {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-affordability__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-affordability__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-affordability__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-affordability__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.ftb-affordability__columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-6);
}

@media (min-width: 640px) {
  .ftb-affordability__columns {
    grid-template-columns: repeat(2, 1fr);
  }
}

.ftb-affordability__col-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

.ftb-affordability__col p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Down payment rules */
.ftb-affordability__rules {
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.ftb-dp-rule {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: var(--space-3);
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.ftb-dp-rule:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.ftb-dp-rule__range {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
}

.ftb-dp-rule__pct {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  text-align: right;
}

/* CTA box */
.ftb-affordability__cta-box {
  max-width: var(--container-narrow);
  margin: 0 auto;
  background: var(--color-surface-sunken);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  text-align: center;
}

.ftb-affordability__cta-box p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.ftb-affordability__contact {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  justify-content: center;
}

.ftb-affordability__phone,
.ftb-affordability__email {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.ftb-affordability__phone:hover,
.ftb-affordability__email:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   FTB — 6. HIDDEN COSTS
   ================================================================ */

.ftb-costs {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-costs__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-costs__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-6);
}

.ftb-costs__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-costs__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Cost cards grid */
.ftb-costs__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
  margin-bottom: var(--space-5);
}

@media (min-width: 640px) {
  .ftb-costs__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .ftb-costs__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.ftb-cost-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  text-align: center;
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.ftb-cost-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.ftb-cost-card__amount {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  line-height: var(--leading-tight);
  margin-bottom: var(--space-2);
}

.ftb-cost-card__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink);
  margin: 0 0 var(--space-1);
}

.ftb-cost-card__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Cost notes */
.ftb-costs__note {
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-4);
  background: var(--color-surface-sunken);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-4);
}

.ftb-costs__note:last-child {
  margin-bottom: 0;
}

.ftb-costs__note p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   FTB — 7. THE BUYING PROCESS (9-step timeline)
   Reuses buyers-process pattern with ftb- prefix.
   ================================================================ */

.ftb-process {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-process__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-process__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-process__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-process__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.ftb-process__timeline {
  max-width: 820px;
  margin: 0 auto;
  position: relative;
}

.ftb-process__timeline::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 28px;
  width: 2px;
  background: var(--color-border);
}

.ftb-step {
  display: flex;
  gap: var(--space-5);
  padding-bottom: var(--space-6);
  position: relative;
}

.ftb-step:last-child {
  padding-bottom: 0;
}

.ftb-step__number {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-full);
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 1;
  box-shadow: var(--shadow-sm);
}

.ftb-step__body {
  flex: 1;
  padding-top: var(--space-2);
}

.ftb-step__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.ftb-step__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (max-width: 639px) {
  .ftb-process__timeline::before {
    left: 20px;
  }

  .ftb-step__number {
    width: 40px;
    height: 40px;
    font-size: var(--text-sm);
  }

  .ftb-step {
    gap: var(--space-3);
  }
}

/* Timeline note */
.ftb-process__timeline-note {
  max-width: 820px;
  margin: var(--space-6) auto 0;
  text-align: center;
}

.ftb-process__timeline-note p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-weight: var(--weight-medium);
  color: var(--color-accent);
  margin: 0;
}


/* ================================================================
   FTB — 8. NEIGHBOURHOODS
   6-card grid, matching buyers-zone pattern.
   ================================================================ */

.ftb-neighbourhoods {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-neighbourhoods__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-neighbourhoods__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-neighbourhoods__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-neighbourhoods__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-2);
}

.ftb-neighbourhoods__framing {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
  font-style: italic;
}

.ftb-neighbourhoods__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 640px) {
  .ftb-neighbourhoods__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .ftb-neighbourhoods__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

.ftb-zone-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy),
    transform var(--duration-base) var(--ease-snappy);
}

.ftb-zone-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
  transform: translateY(-2px);
}

.ftb-zone-card__label {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}

.ftb-zone-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.ftb-zone-card__price {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-ink);
  margin: 0 0 var(--space-3);
  line-height: var(--leading-normal);
}

.ftb-zone-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Neighbourhood advice box */
.ftb-neighbourhoods__advice {
  max-width: var(--container-narrow);
  margin: var(--space-6) auto 0;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
}

.ftb-neighbourhoods__advice h4 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.ftb-neighbourhoods__advice ul {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-4);
}

.ftb-neighbourhoods__advice li {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  padding: var(--space-2) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-neighbourhoods__advice li:last-child {
  border-bottom: none;
}

.ftb-neighbourhoods__advice > p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0;
}

.ftb-neighbourhoods__advice a {
  color: var(--color-accent);
  font-weight: var(--weight-semibold);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.ftb-neighbourhoods__advice a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   FTB — 9. COMMON MISTAKES
   Numbered items with left numeral, matching buyers-rule pattern.
   ================================================================ */

.ftb-mistakes {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-mistakes__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-mistakes__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-mistakes__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-mistakes__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.ftb-mistakes__list {
  max-width: var(--container-narrow);
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: var(--space-5);
}

.ftb-mistake {
  display: flex;
  gap: var(--space-4);
  padding-bottom: var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.ftb-mistake:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.ftb-mistake__num {
  flex-shrink: 0;
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  min-width: 2.5rem;
  text-align: right;
  padding-top: 0.1em;
}

.ftb-mistake__body {
  flex: 1;
}

.ftb-mistake__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.ftb-mistake__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (max-width: 639px) {
  .ftb-mistake__num {
    min-width: 2rem;
    font-size: var(--text-lg);
  }
}


/* ================================================================
   FTB — 10. FINAL CTA
   Two parts: light section with cards + signature,
   then dark CTA footer section.
   ================================================================ */

.ftb-final {
  background: var(--color-surface-elevated);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.ftb-final__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-final__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.ftb-final__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.ftb-final__header p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Conversation cards (3-up) */
.ftb-final__cards {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
  margin-bottom: var(--space-7);
}

@media (min-width: 640px) {
  .ftb-final__cards {
    grid-template-columns: repeat(3, 1fr);
  }
}

.ftb-convo-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  text-align: center;
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.ftb-convo-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
}

.ftb-convo-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.ftb-convo-card p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Signature block */
.ftb-final__signature {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto;
}

.ftb-final__sig-name {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-1);
}

.ftb-final__sig-brokerage {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  margin: 0 0 var(--space-3);
}

.ftb-final__sig-contact {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
  justify-content: center;
  margin: 0 0 var(--space-4);
}

.ftb-final__sig-contact a {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.ftb-final__sig-contact a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

.ftb-final__sig-bev {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-faint);
  margin: 0;
}

/* Dark CTA section */
.ftb-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.ftb-cta__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.ftb-cta__content {
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
}

.ftb-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-6);
}

.ftb-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.ftb-cta__phone:hover {
  opacity: 0.85;
}

.ftb-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.ftb-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.ftb-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.ftb-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}


/* end FIRST-TIME BUYERS PAGE styles */


/* ================================================================
   =================================================================
   HOME VALUATION PAGE
   =================================================================
   Scoped to body.page-home-valuation where possible. Follows the
   same design-system tokens, spacing scale, and component patterns
   as the First-Time Buyers, Seniors, and Contact pages.
   ================================================================ */


/* ── Shared: section label ──────────────────────────────────────── */

.hv-section-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}

.hv-section-label--on-dark {
  color: var(--color-accent-hover);
}


/* ================================================================
   HV — 1. HERO
   ================================================================ */

.hv-hero {
  position: relative;
  min-height: 80svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 55%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.hv-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.62) 50%,
    rgba(10, 22, 40, 0.45) 100%
  );
}

.hv-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.hv-hero__content {
  text-align: center;
  max-width: 820px;
}

.hv-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.hv-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.hv-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 auto var(--space-6);
  line-height: var(--leading-relaxed);
  max-width: 640px;
}

.hv-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}


/* ================================================================
   HV — 2. WHAT A REAL VALUATION IS
   White background, centred narrow prose.
   ================================================================ */

.hv-valuation {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.hv-valuation__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.hv-valuation__header {
  text-align: center;
  margin-bottom: var(--space-6);
}

.hv-valuation__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.hv-valuation__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.hv-valuation__body p:last-child {
  margin-bottom: 0;
}


/* ================================================================
   HV — 3. THE PROCESS (four step cards)
   Sunken background. 2x2 desktop, stacked mobile.
   ================================================================ */

.hv-process {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.hv-process__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.hv-process__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.hv-process__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.hv-process__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 640px) {
  .hv-process__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.hv-step-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.hv-step-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
}

.hv-step-card__num {
  display: block;
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}

.hv-step-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.hv-step-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   HV — 4. IMAGE BREAK (with pull-quote overlay)
   Full-width, parallax on desktop. Quote overlaid at bottom.
   ================================================================ */

.hv-image-break {
  position: relative;
  min-height: clamp(320px, 40vw, 480px);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

/* Parallax: desktop and tablet only */
@media (min-width: 900px) {
  .hv-image-break {
    background-attachment: fixed;
  }
}

/* Mobile: standard scroll for iOS Safari compatibility */
@media (max-width: 899px) {
  .hv-image-break {
    background-attachment: scroll;
    min-height: 240px;
  }
}

.hv-image-break__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(to bottom, rgba(0, 0, 0, 0.08) 0%, rgba(0, 0, 0, 0.55) 100%);
  display: flex;
  align-items: flex-end;
  padding: var(--space-8) var(--space-6);
}

@media (max-width: 899px) {
  .hv-image-break__overlay {
    padding: var(--space-5) var(--space-5);
  }
}

.hv-image-break__quote-wrap {
  max-width: 680px;
  margin: 0 auto;
  text-align: center;
  width: 100%;
}

.hv-image-break__quote p {
  font-family: var(--font-display);
  font-size: clamp(1.1rem, 2.5vw, 1.6rem);
  font-style: italic;
  color: var(--color-ink-inverse);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-2);
}

.hv-image-break__attribution {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  margin: 0;
}


/* ================================================================
   HV — 5. WHAT WE LOOK AT (seven value factors)
   White background. Two-column grid on desktop.
   ================================================================ */

.hv-factors {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.hv-factors__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.hv-factors__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.hv-factors__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.hv-factors__intro {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.hv-factors__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

@media (min-width: 640px) {
  .hv-factors__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

.hv-factor {
  padding: var(--space-4);
  border-left: 3px solid var(--color-accent);
  background: var(--color-surface-elevated);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}

.hv-factor__label {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.hv-factor__desc {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   HV — 6. VALUATION REQUEST FORM
   Elevated card on a subtle sunken background.
   ================================================================ */

.hv-form-section {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.hv-form-section__inner {
  max-width: 640px;
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.hv-form-section__header {
  text-align: center;
  margin-bottom: var(--space-6);
}

.hv-form-section__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.hv-form-section__intro {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.hv-form {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-6);
  box-shadow: var(--shadow-sm);
}

.hv-form[hidden],
.hv-form__success[hidden] {
  display: none;
}

.hv-form__honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.hv-form__textarea {
  resize: vertical;
  min-height: 80px;
}

.hv-form__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #b91c1c;
  padding: var(--space-2) var(--space-3);
  background: #fef2f2;
  border: 1px solid #fecaca;
  border-radius: var(--radius-md);
  margin: 0;
}

.hv-form__error[hidden] {
  display: none;
}

.hv-form__submit {
  width: 100%;
}

@media (min-width: 480px) {
  .hv-form__submit {
    width: auto;
    min-width: 200px;
  }
}

.hv-form__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  margin: 0;
  text-align: center;
}

/* Success state — replaces the form */
.hv-form__success {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-3);
  text-align: center;
  padding: var(--space-6);
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-sm);
  color: var(--color-accent);
}

.hv-form__success-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0;
}

.hv-form__success-msg {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.hv-form__success-msg a {
  color: var(--color-accent);
  font-weight: var(--weight-semibold);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.hv-form__success-msg a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   HV — 7. NEWSLETTER SIGNUP
   Dark treatment: --color-surface-inverse background.
   Mirrors FTB newsletter pattern exactly.
   ================================================================ */

.hv-newsletter {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.hv-newsletter__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.hv-newsletter__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.hv-newsletter__desc {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-6);
}

/* Form */
.hv-newsletter__form {
  text-align: left;
}

.hv-newsletter__form[hidden],
.hv-newsletter__success[hidden] {
  display: none;
}

.hv-newsletter__honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.hv-newsletter__fields {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

@media (min-width: 640px) {
  .hv-newsletter__fields {
    grid-template-columns: 1fr 1fr auto;
    align-items: end;
  }
}

/* Labels on dark background */
.hv-newsletter .home-form-label {
  color: var(--color-ink-inverse);
  opacity: 0.85;
}

/* Inputs: white bg, dark text for contrast */
.hv-newsletter .home-form-input {
  background: var(--color-surface);
  color: var(--color-ink);
  border-color: rgba(255, 255, 255, 0.2);
}

.hv-newsletter .home-form-input::placeholder {
  color: var(--color-ink-faint);
}

.hv-newsletter .home-form-input:focus {
  border-color: var(--color-accent-hover);
  box-shadow: var(--shadow-focus);
}

.hv-newsletter__submit {
  white-space: nowrap;
}

.hv-newsletter__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #fca5a5;
  margin: var(--space-3) 0 0;
}

.hv-newsletter__error[hidden] {
  display: none;
}

.hv-newsletter__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.5;
  margin: var(--space-3) 0 0;
  text-align: center;
}

/* Success state: white card on dark */
.hv-newsletter__success {
  text-align: center;
  padding: var(--space-6);
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.hv-newsletter__success svg {
  color: var(--color-accent);
  margin-bottom: var(--space-3);
}

.hv-newsletter__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.hv-newsletter__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   HV — 8. FINAL CTA
   Dark section (surface-inverse). Phone prominent.
   ================================================================ */

.hv-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.hv-cta__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.hv-cta__content {
  text-align: center;
  max-width: 720px;
  margin: 0 auto;
}

.hv-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.hv-cta__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-6);
}

.hv-cta__phone {
  display: block;
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.hv-cta__phone:hover {
  opacity: 0.85;
}

.hv-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.hv-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.hv-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
}


/* end HOME VALUATION PAGE styles */


/* ================================================================
   ================================================================
   === Sellers Page ===
   Scoped to .sellers-* to prevent collisions with other pages.
   Mobile-first. All values use design tokens only.
   10 sections: Hero, Difference, Market, Process, Preparing,
   Image Break, Marketing, Money, FAQ, CTA.
   ================================================================
   ================================================================ */


/* ================================================================
   SELLERS — SHARED: Section label (01 / The Difference, etc.)
   ================================================================ */

.sellers-section-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}


/* ================================================================
   SELLERS — 1. HERO
   Background: home-for-sale-sign-single-story-house.jpg
   background-position: center 60% to keep sign + house in frame.
   ================================================================ */

.sellers-hero {
  position: relative;
  min-height: 80svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 60%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.sellers-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.62) 50%,
    rgba(10, 22, 40, 0.45) 100%
  );
}

.sellers-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.sellers-hero__content {
  text-align: center;
  max-width: 820px;
}

.sellers-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.sellers-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.sellers-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 0 var(--space-6);
  line-height: var(--leading-relaxed);
}

.sellers-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-6);
}

.sellers-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  max-width: 640px;
  margin: 0 auto;
}

.sellers-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(8px);
}

.sellers-hero__stat-value {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
}

.sellers-hero__stat-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-align: center;
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .sellers-hero__stats {
    grid-template-columns: repeat(4, 1fr);
  }
}


/* ================================================================
   SELLERS — 2. THE DIFFERENCE (4-point positioning)
   ================================================================ */

.sellers-difference {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-difference__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-difference__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-7);
  max-width: var(--container-narrow);
}

.sellers-difference__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.sellers-difference-card {
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.sellers-difference-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.sellers-difference-card__num {
  display: inline-block;
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-accent);
  margin-bottom: var(--space-2);
}

.sellers-difference-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-difference-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .sellers-difference__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}


/* ================================================================
   SELLERS — 3. THE MARKET (stats + commentary)
   ================================================================ */

.sellers-market {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-market__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-market__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.sellers-market__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.sellers-market__intro {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.sellers-market__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  margin-bottom: var(--space-7);
}

.sellers-market-stat {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5) var(--space-4);
  text-align: center;
  box-shadow: var(--shadow-sm);
}

.sellers-market-stat__value {
  display: block;
  font-family: var(--font-display);
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  line-height: var(--leading-tight);
  margin-bottom: var(--space-2);
}

.sellers-market-stat__caption {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-soft);
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .sellers-market__stats {
    grid-template-columns: repeat(3, 1fr);
  }
}

@media (min-width: 900px) {
  .sellers-market__stats {
    grid-template-columns: repeat(5, 1fr);
  }
}

.sellers-market__commentary {
  max-width: var(--container-narrow);
  margin: 0 auto;
  text-align: center;
}

.sellers-market__commentary p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.sellers-market__commentary p:last-child {
  margin-bottom: 0;
}

.sellers-market__cta-link {
  font-weight: var(--weight-medium);
  margin-top: var(--space-4);
}

.sellers-market__cta-link a {
  color: var(--color-accent);
  text-decoration: none;
  font-weight: var(--weight-semibold);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.sellers-market__cta-link a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}


/* ================================================================
   SELLERS — 4. THE PROCESS (8-step timeline)
   ================================================================ */

.sellers-process {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-process__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-process__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.sellers-process__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-process__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.sellers-process__timeline {
  max-width: 820px;
  margin: 0 auto;
  position: relative;
}

.sellers-process__timeline::before {
  content: '';
  position: absolute;
  top: 0;
  bottom: 0;
  left: 28px;
  width: 2px;
  background: var(--color-border);
}

.sellers-step {
  display: flex;
  gap: var(--space-5);
  padding-bottom: var(--space-6);
  position: relative;
}

.sellers-step:last-child {
  padding-bottom: 0;
}

.sellers-step__number {
  flex-shrink: 0;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-full);
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  display: flex;
  align-items: center;
  justify-content: center;
  position: relative;
  z-index: 1;
  box-shadow: var(--shadow-sm);
}

.sellers-step__body {
  flex: 1;
  padding-top: var(--space-2);
}

.sellers-step__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.sellers-step__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (max-width: 639px) {
  .sellers-process__timeline::before {
    left: 20px;
  }

  .sellers-step__number {
    width: 40px;
    height: 40px;
    font-size: var(--text-sm);
  }

  .sellers-step {
    gap: var(--space-3);
  }
}


/* ================================================================
   SELLERS — 5. PREPARING YOUR HOME (two-column)
   Mirrors .buyers-money__columns pattern. Left = worth doing,
   Right = not worth doing (highlighted).
   ================================================================ */

.sellers-prep {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-prep__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-prep__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.sellers-prep__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-prep__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.sellers-prep__columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

.sellers-prep__col {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.sellers-prep__col-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

.sellers-prep-item {
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.sellers-prep-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.sellers-prep-item__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-1);
}

.sellers-prep-item__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

/* Right column (skip) — highlighted with accent background */
.sellers-prep__col--skip {
  background: var(--color-accent);
  border-radius: var(--radius-xl);
  padding: var(--space-6) var(--space-5);
  color: var(--color-ink-inverse);
}

.sellers-prep__col--skip .sellers-prep__col-heading {
  color: var(--color-ink-inverse);
  border-bottom-color: rgba(255, 255, 255, 0.3);
}

.sellers-prep__col--skip .sellers-prep-item {
  border-bottom-color: rgba(255, 255, 255, 0.15);
}

.sellers-prep__col--skip .sellers-prep-item__title {
  color: var(--color-ink-inverse);
}

.sellers-prep__col--skip .sellers-prep-item__desc {
  color: var(--color-ink-inverse);
  opacity: 0.85;
}

@media (min-width: 900px) {
  .sellers-prep__columns {
    grid-template-columns: 1.1fr 0.9fr;
    gap: var(--space-7);
    align-items: start;
  }
}


/* ================================================================
   SELLERS — 6. IMAGE BREAK
   Full-width parallax photo with pull quote overlay.
   ================================================================ */

.sellers-image-break {
  position: relative;
  min-height: clamp(320px, 40vw, 480px);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.sellers-image-break__overlay {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.35) 0%,
    rgba(10, 22, 40, 0.55) 100%
  );
  padding: var(--space-5);
}

.sellers-image-break__quote {
  max-width: var(--container-narrow);
  text-align: center;
  margin: 0;
}

.sellers-image-break__quote p {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 3vw, 1.75rem);
  font-weight: var(--weight-semibold);
  font-style: italic;
  color: var(--color-ink-inverse);
  line-height: var(--leading-snug);
  margin: 0 0 var(--space-3);
}

.sellers-image-break__quote cite {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-style: normal;
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.75;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

/* Parallax: desktop and tablet only */
@media (min-width: 900px) {
  .sellers-image-break {
    background-attachment: fixed;
  }
}

/* Mobile: standard scroll for iOS Safari compatibility */
@media (max-width: 899px) {
  .sellers-image-break {
    background-attachment: scroll;
    min-height: 240px;
  }
}


/* ================================================================
   SELLERS — 7. MARKETING YOUR HOME (6-card grid)
   ================================================================ */

.sellers-marketing {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-marketing__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-marketing__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.sellers-marketing__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-marketing__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.sellers-marketing__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.sellers-marketing-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy),
    transform var(--duration-base) var(--ease-snappy);
}

.sellers-marketing-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-accent);
  transform: translateY(-2px);
}

.sellers-marketing-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-marketing-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .sellers-marketing__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 1024px) {
  .sellers-marketing__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* ================================================================
   SELLERS — 8. THE MONEY (commissions + closing costs)
   Two-column layout on desktop.
   ================================================================ */

.sellers-money {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-money__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-money__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.sellers-money__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.sellers-money__header p {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.sellers-money__columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

.sellers-money__col {
  display: flex;
  flex-direction: column;
  gap: var(--space-4);
}

.sellers-money__col-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

.sellers-cost-item {
  padding-bottom: var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.sellers-cost-item:last-child {
  border-bottom: none;
  padding-bottom: 0;
}

.sellers-cost-item__title {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-1);
}

.sellers-cost-item__desc {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 900px) {
  .sellers-money__columns {
    grid-template-columns: 0.8fr 1.2fr;
    gap: var(--space-7);
    align-items: start;
  }
}


/* ================================================================
   SELLERS — 9. FAQ (accordion)
   Mirrors .buyers-faq pattern exactly with .sellers-faq-* classes.
   ================================================================ */

.sellers-faq {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.sellers-faq__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.sellers-faq__header {
  text-align: center;
  margin-bottom: var(--space-7);
}

.sellers-faq__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.sellers-faq__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.sellers-faq-item {
  border-bottom: 1px solid var(--color-border);
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
  background: transparent;
  transition:
    background var(--duration-base) var(--ease-snappy),
    border-left-color var(--duration-base) var(--ease-snappy),
    box-shadow var(--duration-base) var(--ease-snappy);
}

.sellers-faq-item:first-child {
  border-top: 1px solid var(--color-border);
}

.sellers-faq-item__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  padding: var(--space-4) var(--space-3);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  line-height: var(--leading-snug);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.sellers-faq-item__trigger:hover {
  color: var(--color-accent);
}

.sellers-faq-item__trigger:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
  border-radius: var(--radius-sm);
}

.sellers-faq-item__icon {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  color: var(--color-ink-faint);
  transition:
    transform var(--duration-base) var(--ease-snappy),
    color var(--duration-base) var(--ease-snappy);
}

/* Expanded state */
.sellers-faq-item__trigger[aria-expanded="true"] {
  color: var(--color-accent);
}

.sellers-faq-item__trigger[aria-expanded="true"] .sellers-faq-item__icon {
  transform: rotate(45deg);
  color: var(--color-accent);
}

/* Panel transitions */
.sellers-faq-item__panel {
  overflow: hidden;
  transition: max-height var(--duration-slow) var(--ease-smooth);
}

.sellers-faq-item__panel[hidden] {
  display: block;
  max-height: 0;
  visibility: hidden;
}

.sellers-faq-item__panel:not([hidden]) {
  max-height: 500px;
  visibility: visible;
}

.sellers-faq-item__panel p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
  padding: 0 var(--space-3) var(--space-4);
}

/* Wrapper highlight via :has() — progressive enhancement */
.sellers-faq-item:has(> .sellers-faq-item__panel:not([hidden])) {
  background: var(--color-surface);
  border-left-color: var(--color-accent);
  box-shadow: var(--shadow-sm);
}

/* Fallback for browsers where :has() doesn't fire */
.sellers-faq-item__trigger[aria-expanded="true"] {
  border-left: 0 none;
  background: var(--color-surface);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

.sellers-faq-item__panel:not([hidden]) {
  background: var(--color-surface);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}


/* ================================================================
   SELLERS — 10. CTA
   Solid dark background. Amber phone number. Two buttons + emails.
   ================================================================ */

.sellers-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.sellers-cta__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.sellers-cta__content {
  text-align: center;
  max-width: 680px;
}

.sellers-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.sellers-cta__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

.sellers-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.sellers-cta__phone:hover {
  opacity: 0.85;
}

.sellers-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.sellers-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.sellers-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.sellers-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-5);
}

.sellers-cta__emails {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  justify-content: center;
}

.sellers-cta__emails a {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-decoration: none;
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.sellers-cta__emails a:hover {
  opacity: 1;
  text-decoration: underline;
}

.sellers-cta__emails a:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}


/* end SELLERS PAGE styles */


/* ================================================================
   ================================================================
   === Mortgage Calculator Page ===
   Scoped to .mortgage-* and .ech-calc to prevent collisions.
   Mobile-first. All values use design tokens only.
   10 sections: Hero, Calculator, Rate Drop, Basics, Rate Types,
   Image Break, Factors, Broker, FAQ, CTA.
   ================================================================
   ================================================================ */


/* ================================================================
   MORTGAGE — SHARED: Section label (01 / The Calculator, etc.)
   ================================================================ */

.mortgage-section-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}


/* ================================================================
   MORTGAGE — 1. HERO
   Background: financial-planning-calculator-pen-desk.jpg
   ================================================================ */

.mortgage-hero {
  position: relative;
  min-height: 80svh;
  display: flex;
  align-items: center;
  background-size: cover;
  background-position: center 50%;
  background-repeat: no-repeat;
  overflow: hidden;
}

.mortgage-hero__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.48) 0%,
    rgba(10, 22, 40, 0.62) 50%,
    rgba(10, 22, 40, 0.45) 100%
  );
}

.mortgage-hero__inner {
  position: relative;
  z-index: 1;
  width: 100%;
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: var(--space-9) var(--space-5);
  display: flex;
  justify-content: center;
}

.mortgage-hero__content {
  text-align: center;
  max-width: 820px;
}

.mortgage-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: clamp(1rem, 2.5vw, 1.25rem);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
  opacity: 0.92;
  padding-bottom: 3px;
  border-bottom: 1px solid rgba(255, 255, 255, 0.35);
}

.mortgage-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-3xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.mortgage-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.85;
  margin: 0 0 var(--space-6);
  line-height: var(--leading-relaxed);
}

.mortgage-hero__ctas {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-6);
}

.mortgage-hero__stats {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--space-3);
  max-width: 640px;
  margin: 0 auto;
}

.mortgage-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  padding: var(--space-3) var(--space-2);
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.15);
  border-radius: var(--radius-lg);
  backdrop-filter: blur(8px);
}

.mortgage-hero__stat-value {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
}

.mortgage-hero__stat-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-align: center;
  line-height: var(--leading-normal);
}

@media (min-width: 640px) {
  .mortgage-hero__stats {
    grid-template-columns: repeat(4, 1fr);
  }
}


/* ================================================================
   MORTGAGE — 2. THE CALCULATOR
   ================================================================ */

.mortgage-calculator {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-calculator__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-calculator__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
}

.mortgage-calculator__intro {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
  max-width: var(--container-narrow);
}

.mortgage-calculator__disclaimer-top {
  background: var(--color-surface-sunken);
  border-left: 3px solid var(--color-accent);
  border-radius: var(--radius-sm);
  padding: var(--space-3) var(--space-4);
  margin-bottom: var(--space-6);
  max-width: var(--container-narrow);
}

.mortgage-calculator__disclaimer-top p {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ── Calculator widget (ech-calc) — rewritten with theme tokens ── */

.ech-calc {
  font-family: var(--font-body);
  max-width: 1100px;
  margin: 0 auto;
  color: var(--color-ink);
  background: var(--color-surface);
  border-radius: var(--radius-md);
  overflow: hidden;
  box-shadow: var(--shadow-md);
}

.ech-calc * {
  box-sizing: border-box;
}

.ech-calc-header {
  background: var(--color-surface-inverse);
  color: var(--color-ink-inverse);
  padding: var(--space-4) var(--space-5);
}

.ech-calc-header h3 {
  font-family: var(--font-display);
  font-size: clamp(1.5rem, 3vw, 1.75rem);
  margin: 0 0 var(--space-1) 0;
  font-weight: var(--weight-bold);
  color: var(--color-ink-inverse);
}

.ech-calc-header p {
  margin: 0;
  opacity: 0.85;
  font-size: var(--text-xs);
  letter-spacing: 1px;
  text-transform: uppercase;
}

.ech-calc-body {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0;
}

@media (max-width: 768px) {
  .ech-calc-body {
    grid-template-columns: 1fr;
  }
}

.ech-calc-inputs {
  padding: var(--space-5);
  background: var(--color-surface);
}

.ech-calc-results {
  padding: var(--space-5);
  background: var(--color-surface-sunken);
  border-left: 1px solid var(--color-border);
}

@media (max-width: 768px) {
  .ech-calc-results {
    border-left: none;
    border-top: 1px solid var(--color-border);
  }
}

.ech-input-group {
  margin-bottom: var(--space-4);
}

.ech-input-group label {
  display: block;
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  color: var(--color-ink);
  margin-bottom: var(--space-1);
  text-transform: uppercase;
  letter-spacing: 0.5px;
}

.ech-input-wrap {
  position: relative;
}

.ech-input-wrap input,
.ech-input-wrap select {
  width: 100%;
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-base);
  border: 1.5px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-ink-strong);
  font-family: inherit;
  transition: border-color var(--duration-fast) var(--ease-snappy),
              box-shadow var(--duration-fast) var(--ease-snappy);
  -webkit-appearance: none;
  appearance: none;
}

.ech-input-wrap input:focus,
.ech-input-wrap select:focus {
  outline: none;
  border-color: var(--color-accent);
  box-shadow: var(--shadow-focus);
}

.ech-input-wrap select {
  background-image: url("data:image/svg+xml;charset=UTF-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='%234a5f7f'%3E%3Cpath d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right var(--space-2) center;
  padding-right: var(--space-5);
}

.ech-input-prefix,
.ech-input-suffix {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  color: var(--color-ink-faint);
  font-size: var(--text-base);
  pointer-events: none;
}

.ech-input-prefix { left: var(--space-3); }
.ech-input-suffix { right: var(--space-3); }

.ech-input-wrap.has-prefix input { padding-left: calc(var(--space-3) + 16px); }
.ech-input-wrap.has-suffix input { padding-right: calc(var(--space-3) + 16px); }

.ech-dual-input {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--space-2);
}

.ech-note {
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  margin-top: var(--space-1);
  font-style: italic;
  line-height: var(--leading-relaxed);
}

.ech-warning {
  background: rgba(251, 191, 36, 0.12);
  border-left: 3px solid var(--color-warning);
  padding: var(--space-2) var(--space-3);
  font-size: var(--text-xs);
  color: var(--color-ink);
  border-radius: var(--radius-sm);
  margin-top: var(--space-3);
}

.ech-warning.hidden { display: none; }

.ech-result-headline {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  text-align: center;
  margin-bottom: var(--space-4);
}

.ech-result-headline .label {
  font-size: var(--text-xs);
  text-transform: uppercase;
  letter-spacing: 1.5px;
  opacity: 0.9;
  margin-bottom: var(--space-1);
}

.ech-result-headline .value {
  font-family: var(--font-display);
  font-size: clamp(2rem, 5vw, 2.625rem);
  font-weight: var(--weight-bold);
  line-height: 1;
}

.ech-result-headline .sub {
  font-size: var(--text-xs);
  margin-top: var(--space-1);
  opacity: 0.9;
}

.ech-result-section {
  margin-bottom: var(--space-4);
}

.ech-result-section h4 {
  font-family: var(--font-display);
  font-size: var(--text-base);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2) 0;
  padding-bottom: var(--space-1);
  border-bottom: 1.5px solid var(--color-accent);
  font-weight: var(--weight-bold);
}

.ech-result-row {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: var(--space-2) 0;
  font-size: var(--text-sm);
  border-bottom: 1px solid var(--color-border);
}

.ech-result-row:last-child {
  border-bottom: none;
}

.ech-result-row.total {
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  font-size: var(--text-sm);
  padding-top: var(--space-2);
  border-top: 2px solid var(--color-ink-strong);
  border-bottom: none;
  margin-top: var(--space-1);
}

.ech-result-label {
  color: var(--color-ink-soft);
}

.ech-result-value {
  color: var(--color-ink-strong);
  font-weight: var(--weight-semibold);
}

.ech-disclaimer {
  padding: var(--space-3) var(--space-5);
  background: var(--color-surface-sunken);
  font-size: 11px;
  color: var(--color-ink-faint);
  line-height: var(--leading-normal);
  border-top: 1px solid var(--color-border);
}

.ech-disclaimer strong {
  color: var(--color-ink-strong);
}


/* ================================================================
   MORTGAGE — 3. RATE DROP NOTE (Bev's callout)
   ================================================================ */

.mortgage-rate-drop {
  background: var(--color-surface-sunken);
  padding: var(--space-7) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-rate-drop__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-rate-drop__callout {
  background: var(--color-surface);
  border-left: 4px solid var(--color-accent);
  border-radius: var(--radius-md);
  padding: var(--space-5) var(--space-6);
  box-shadow: var(--shadow-sm);
}

.mortgage-rate-drop__quote {
  margin: 0 0 var(--space-3);
}

.mortgage-rate-drop__quote p {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  font-style: italic;
  color: var(--color-ink-strong);
  line-height: var(--leading-snug);
  margin: 0;
}

.mortgage-rate-drop__attribution {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   MORTGAGE — 4. HOW MORTGAGES WORK (5-card grid)
   ================================================================ */

.mortgage-basics {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-basics__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-basics__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.mortgage-basics__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.mortgage-basics__intro {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.mortgage-basics__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.mortgage-basics-card {
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.mortgage-basics-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.mortgage-basics-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.mortgage-basics-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .mortgage-basics__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 900px) {
  .mortgage-basics__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* ================================================================
   MORTGAGE — 5. FIXED VS VARIABLE (two-column comparison)
   ================================================================ */

.mortgage-rates {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-rates__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-rates__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.mortgage-rates__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.mortgage-rates__columns {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
  margin-bottom: var(--space-6);
}

.mortgage-rates__col {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
}

.mortgage-rates__col-heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-4);
  padding-bottom: var(--space-3);
  border-bottom: 2px solid var(--color-accent);
}

.mortgage-rates__list {
  list-style: none;
  padding: 0;
  margin: 0;
  display: flex;
  flex-direction: column;
  gap: var(--space-3);
}

.mortgage-rates__list li {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  padding-left: var(--space-4);
  position: relative;
}

.mortgage-rates__list li::before {
  content: '';
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 6px;
  height: 6px;
  border-radius: var(--radius-full);
  background: var(--color-accent);
}

.mortgage-rates__note {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto;
}

@media (min-width: 900px) {
  .mortgage-rates__columns {
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-6);
  }
}


/* ================================================================
   MORTGAGE — 6. IMAGE BREAK (parallax photo)
   ================================================================ */

.mortgage-image-break {
  position: relative;
  min-height: clamp(240px, 40vw, 400px);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

.mortgage-image-break__overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    to bottom,
    rgba(10, 22, 40, 0.15) 0%,
    rgba(10, 22, 40, 0.25) 100%
  );
}

@media (min-width: 900px) {
  .mortgage-image-break {
    background-attachment: fixed;
  }
}

@media (max-width: 899px) {
  .mortgage-image-break {
    background-attachment: scroll;
    min-height: 240px;
  }
}


/* ================================================================
   MORTGAGE — 7. WHAT AFFECTS YOUR RATE (6-card grid)
   ================================================================ */

.mortgage-factors {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-factors__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-factors__header {
  text-align: center;
  max-width: var(--container-narrow);
  margin: 0 auto var(--space-7);
}

.mortgage-factors__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.mortgage-factors__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-4);
}

.mortgage-factors-card {
  background: var(--color-surface-elevated);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: var(--space-5);
  box-shadow: var(--shadow-sm);
  transition:
    box-shadow var(--duration-base) var(--ease-snappy),
    border-color var(--duration-base) var(--ease-snappy);
}

.mortgage-factors-card:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--color-border-strong);
}

.mortgage-factors-card__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.mortgage-factors-card__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

@media (min-width: 640px) {
  .mortgage-factors__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 900px) {
  .mortgage-factors__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}


/* ================================================================
   MORTGAGE — 8. WHEN TO TALK TO A BROKER
   ================================================================ */

.mortgage-broker {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-broker__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-broker__header {
  text-align: center;
  margin-bottom: var(--space-6);
}

.mortgage-broker__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.mortgage-broker__body {
  margin-bottom: var(--space-6);
}

.mortgage-broker__body p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

.mortgage-broker__body p:last-child {
  margin-bottom: 0;
}

.mortgage-broker__callout {
  background: var(--color-accent-soft);
  border-radius: var(--radius-md);
  padding: var(--space-4) var(--space-5);
}

.mortgage-broker__callout p {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.mortgage-broker__callout strong {
  color: var(--color-ink-strong);
  font-weight: var(--weight-semibold);
}


/* ================================================================
   MORTGAGE — 9. FAQ (accordion)
   Mirrors .buyers-faq / .sellers-faq pattern exactly with
   .mortgage-faq-* classes.
   ================================================================ */

.mortgage-faq {
  background: var(--color-surface);
  padding: var(--space-8) 0;
  border-bottom: 1px solid var(--color-border);
}

.mortgage-faq__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
}

.mortgage-faq__header {
  text-align: center;
  margin-bottom: var(--space-7);
}

.mortgage-faq__header h2 {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0;
}

.mortgage-faq__list {
  display: flex;
  flex-direction: column;
  gap: 0;
}

.mortgage-faq-item {
  border-bottom: 1px solid var(--color-border);
  border-left: 3px solid transparent;
  border-radius: var(--radius-sm);
  background: transparent;
  transition:
    background var(--duration-base) var(--ease-snappy),
    border-left-color var(--duration-base) var(--ease-snappy),
    box-shadow var(--duration-base) var(--ease-snappy);
}

.mortgage-faq-item:first-child {
  border-top: 1px solid var(--color-border);
}

.mortgage-faq-item__trigger {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--space-4);
  width: 100%;
  padding: var(--space-4) var(--space-3);
  background: none;
  border: none;
  cursor: pointer;
  text-align: left;
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  line-height: var(--leading-snug);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.mortgage-faq-item__trigger:hover {
  color: var(--color-accent);
}

.mortgage-faq-item__trigger:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: -2px;
  border-radius: var(--radius-sm);
}

.mortgage-faq-item__icon {
  flex-shrink: 0;
  width: 24px;
  height: 24px;
  color: var(--color-ink-faint);
  transition:
    transform var(--duration-base) var(--ease-snappy),
    color var(--duration-base) var(--ease-snappy);
}

.mortgage-faq-item__trigger[aria-expanded="true"] {
  color: var(--color-accent);
}

.mortgage-faq-item__trigger[aria-expanded="true"] .mortgage-faq-item__icon {
  transform: rotate(45deg);
  color: var(--color-accent);
}

.mortgage-faq-item__panel {
  overflow: hidden;
  transition: max-height var(--duration-slow) var(--ease-smooth);
}

.mortgage-faq-item__panel[hidden] {
  display: block;
  max-height: 0;
  visibility: hidden;
}

.mortgage-faq-item__panel:not([hidden]) {
  max-height: 500px;
  visibility: visible;
}

.mortgage-faq-item__panel p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
  padding: 0 var(--space-3) var(--space-4);
}

/* Wrapper highlight via :has() — progressive enhancement */
.mortgage-faq-item:has(> .mortgage-faq-item__panel:not([hidden])) {
  background: var(--color-surface-elevated);
  border-left-color: var(--color-accent);
  box-shadow: var(--shadow-sm);
}

/* Fallback for browsers where :has() doesn't fire */
.mortgage-faq-item__trigger[aria-expanded="true"] {
  border-left: 0 none;
  background: var(--color-surface-elevated);
  border-radius: var(--radius-sm) var(--radius-sm) 0 0;
}

.mortgage-faq-item__panel:not([hidden]) {
  background: var(--color-surface-elevated);
  border-radius: 0 0 var(--radius-sm) var(--radius-sm);
}


/* ================================================================
   MORTGAGE — 10. CTA
   Solid dark background. Amber phone number. Two buttons + emails.
   ================================================================ */

.mortgage-cta {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.mortgage-cta__inner {
  max-width: var(--container-wide);
  margin: 0 auto;
  padding: 0 var(--space-5);
  display: flex;
  justify-content: center;
}

.mortgage-cta__content {
  text-align: center;
  max-width: 680px;
}

.mortgage-cta__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-3);
}

.mortgage-cta__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}

.mortgage-cta__phone {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--space-1);
  text-decoration: none;
  margin-bottom: var(--space-6);
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.mortgage-cta__phone:hover {
  opacity: 0.85;
}

.mortgage-cta__phone:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 4px;
  border-radius: var(--radius-sm);
}

.mortgage-cta__phone-label {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.65;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}

.mortgage-cta__phone-number {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  color: var(--color-warning);
  letter-spacing: 0.02em;
}

.mortgage-cta__btns {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-3);
  justify-content: center;
  margin-bottom: var(--space-5);
}

.mortgage-cta__emails {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2) var(--space-5);
  justify-content: center;
}

.mortgage-cta__emails a {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-inverse);
  opacity: 0.7;
  text-decoration: none;
  transition: opacity var(--duration-fast) var(--ease-snappy);
}

.mortgage-cta__emails a:hover {
  opacity: 1;
  text-decoration: underline;
}

.mortgage-cta__emails a:focus-visible {
  outline: 2px solid var(--color-ink-inverse);
  outline-offset: 3px;
  border-radius: var(--radius-sm);
}


/* end MORTGAGE CALCULATOR PAGE styles */


/* ================================================================
   ================================================================
   PRIVACY POLICY PAGE
   Single-column legal/informational page.
   No background images, no multi-section marketing layout.
   ================================================================
   ================================================================ */


/* ================================================================
   PRIVACY — 1. HERO
   Simple dark band, centred content, no background image.
   ================================================================ */

.privacy-hero {
  background-color: var(--color-surface-inverse);
  padding: var(--space-9) var(--space-5) var(--space-8);
  text-align: center;
}

.privacy-hero__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
}

.privacy-hero__badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  background: rgba(14, 116, 144, 0.12);
  padding: var(--space-1) var(--space-3);
  border-radius: var(--radius-full);
  margin-bottom: var(--space-4);
}

.privacy-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.privacy-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-md);
  font-weight: var(--weight-regular);
  line-height: var(--leading-normal);
  color: var(--color-ink-faint);
  max-width: 600px;
  margin: 0 auto var(--space-4);
}

.privacy-hero__date {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-faint);
  opacity: 0.7;
  margin: 0;
}


/* ================================================================
   PRIVACY — 2. TRUST SIGNAL BAR
   Three short reassurance statements on a sunken background.
   ================================================================ */

.privacy-trust {
  background-color: var(--color-surface-sunken);
  padding: var(--space-5) var(--space-5);
  border-bottom: 1px solid var(--color-border);
}

.privacy-trust__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  display: flex;
  justify-content: center;
  gap: var(--space-6);
  flex-wrap: wrap;
}

.privacy-trust__item {
  display: flex;
  align-items: center;
  gap: var(--space-2);
}

.privacy-trust__icon {
  color: var(--color-accent);
  font-size: var(--text-md);
  font-weight: var(--weight-bold);
  line-height: 1;
}

.privacy-trust__text {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink);
}


/* ================================================================
   PRIVACY — 3. MAIN CONTENT
   Single-column document, max-width ~720px, generous line-height.
   ================================================================ */

.privacy-content {
  background-color: var(--color-surface);
  padding: var(--space-8) var(--space-5);
}

.privacy-content__inner {
  max-width: 720px;
  margin: 0 auto;
}

.privacy-content__section {
  margin-bottom: var(--space-7);
}

.privacy-content__section:last-child {
  margin-bottom: 0;
}

.privacy-content__heading {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.privacy-content__section p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-regular);
  line-height: 1.7;
  color: var(--color-ink);
  margin: 0 0 var(--space-3);
}

.privacy-content__section p:last-child {
  margin-bottom: 0;
}

.privacy-content__section p a {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.privacy-content__section p a:hover {
  color: var(--color-accent-hover);
}

.privacy-content__section p a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.privacy-content__list {
  list-style: none;
  padding: 0;
  margin: 0 0 var(--space-3);
}

.privacy-content__list li {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-regular);
  line-height: 1.7;
  color: var(--color-ink);
  padding-left: var(--space-5);
  position: relative;
  margin-bottom: var(--space-2);
}

.privacy-content__list li:last-child {
  margin-bottom: 0;
}

.privacy-content__list li::before {
  content: "";
  position: absolute;
  left: 0;
  top: 0.65em;
  width: 6px;
  height: 6px;
  background-color: var(--color-accent);
  border-radius: var(--radius-full);
}

.privacy-content__list li a {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.privacy-content__list li a:hover {
  color: var(--color-accent-hover);
}

.privacy-content__list li a:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.privacy-content__list li strong {
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
}


/* ================================================================
   PRIVACY — 4. CONTACT CARD
   Subtle sunken background, single column, link-style buttons.
   ================================================================ */

.privacy-contact {
  background-color: var(--color-surface-sunken);
  padding: var(--space-8) var(--space-5);
}

.privacy-contact__inner {
  max-width: 600px;
  margin: 0 auto;
  text-align: center;
  background-color: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: var(--space-7) var(--space-6);
}

.privacy-contact__heading {
  font-family: var(--font-display);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.privacy-contact__body {
  font-family: var(--font-body);
  font-size: var(--text-base);
  font-weight: var(--weight-regular);
  line-height: 1.7;
  color: var(--color-ink);
  margin: 0 0 var(--space-5);
}

.privacy-contact__body a {
  color: var(--color-accent);
  text-decoration: underline;
  text-underline-offset: 2px;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.privacy-contact__body a:hover {
  color: var(--color-accent-hover);
}

.privacy-contact__actions {
  display: flex;
  justify-content: center;
  gap: var(--space-4);
  flex-wrap: wrap;
}

.privacy-contact__link {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-semibold);
  color: var(--color-accent);
  text-decoration: none;
  padding: var(--space-2) var(--space-5);
  border: 1px solid var(--color-accent);
  border-radius: var(--radius-sm);
  transition:
    background-color var(--duration-fast) var(--ease-snappy),
    color var(--duration-fast) var(--ease-snappy);
}

.privacy-contact__link:hover {
  background-color: var(--color-accent);
  color: var(--color-ink-inverse);
}

.privacy-contact__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-sm);
}

.privacy-contact__link--secondary {
  color: var(--color-ink-soft);
  border-color: var(--color-border);
}

.privacy-contact__link--secondary:hover {
  background-color: var(--color-surface-sunken);
  color: var(--color-ink);
  border-color: var(--color-ink-soft);
}


/* end PRIVACY POLICY PAGE styles */


/* ================================================================
   ================================================================
   BLOG ARCHIVE — archive.php
   Scoped to body.blog, body.archive, body.category, body.tag
   ================================================================
   ================================================================ */


/* ----------------------------------------------------------------
   ARCHIVE HERO
   Simple centred band, subtle background tint.
   ---------------------------------------------------------------- */

.blog-archive-hero {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0 var(--space-7);
  text-align: center;
}

.blog-archive-hero__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-4);
}

.blog-archive-hero__eyebrow {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-semibold);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--color-accent);
  margin: 0 0 var(--space-3);
}

.blog-archive-hero__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.blog-archive-hero__sub {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
  max-width: 600px;
  margin-left: auto;
  margin-right: auto;
}


/* ----------------------------------------------------------------
   POST GRID
   2-column desktop, 1-column mobile.
   ---------------------------------------------------------------- */

.blog-archive-grid {
  padding: var(--space-7) 0;
}

.blog-archive-grid__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-4);
}

.blog-card-grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-6);
}

@media (min-width: 900px) {
  .blog-card-grid {
    grid-template-columns: 1fr 1fr;
  }
}


/* ----------------------------------------------------------------
   BLOG CARD
   Reused on archive.php and single.php (related posts).
   ---------------------------------------------------------------- */

.blog-card {
  border-radius: var(--radius-lg);
  overflow: hidden;
  background: var(--color-surface);
  box-shadow: var(--shadow-sm);
  transition:
    transform var(--duration-base) var(--ease-smooth),
    box-shadow var(--duration-base) var(--ease-smooth);
}

.blog-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
}

.blog-card__link {
  display: block;
  text-decoration: none;
  color: inherit;
}

.blog-card__link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
  border-radius: var(--radius-lg);
}

/* Image wrapper */
.blog-card__image-wrap {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--color-surface-sunken);
}

.blog-card__image {
  width: 100%;
  height: 100%;
  object-fit: cover;
  display: block;
  transition: transform var(--duration-slow) var(--ease-smooth);
}

.blog-card:hover .blog-card__image {
  transform: scale(1.04);
}

.blog-card__image-placeholder {
  width: 100%;
  height: 100%;
  background: linear-gradient(
    135deg,
    var(--color-surface-sunken) 0%,
    var(--color-surface-elevated) 100%
  );
}

/* Category badge overlay */
.blog-card__category {
  position: absolute;
  top: var(--space-3);
  left: var(--space-3);
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  background: var(--color-surface);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-sm);
  line-height: 1;
}

/* Card body */
.blog-card__body {
  padding: var(--space-4);
}

.blog-card__title {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.blog-card__date {
  display: block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  margin-bottom: var(--space-2);
}

.blog-card__excerpt {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-3);
}

.blog-card__read-more {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-accent);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.blog-card:hover .blog-card__read-more {
  color: var(--color-accent-hover);
}


/* ----------------------------------------------------------------
   EMPTY STATE
   ---------------------------------------------------------------- */

.blog-empty {
  text-align: center;
  padding: var(--space-8) 0;
  max-width: 560px;
  margin: 0 auto;
}

.blog-empty__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

.blog-empty__text {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-5);
}


/* ----------------------------------------------------------------
   PAGINATION
   ---------------------------------------------------------------- */

.navigation.pagination {
  margin-top: var(--space-7);
  text-align: center;
}

.navigation.pagination .nav-links {
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  flex-wrap: wrap;
}

.navigation.pagination .page-numbers {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 40px;
  height: 40px;
  padding: 0 var(--space-2);
  font-family: var(--font-body);
  font-size: var(--text-sm);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  text-decoration: none;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  background: var(--color-surface);
  transition:
    background var(--duration-fast) var(--ease-snappy),
    color var(--duration-fast) var(--ease-snappy),
    border-color var(--duration-fast) var(--ease-snappy);
}

.navigation.pagination .page-numbers:hover {
  background: var(--color-surface-sunken);
  color: var(--color-ink);
  border-color: var(--color-border-strong);
}

.navigation.pagination .page-numbers.current {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
  border-color: var(--color-accent);
  font-weight: var(--weight-semibold);
}

.navigation.pagination .page-numbers:focus-visible {
  outline: none;
  box-shadow: var(--shadow-focus);
}

.navigation.pagination .prev,
.navigation.pagination .next {
  font-weight: var(--weight-medium);
  color: var(--color-accent);
  border-color: var(--color-accent);
}

.navigation.pagination .prev:hover,
.navigation.pagination .next:hover {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
}

.navigation.pagination .dots {
  border: none;
  background: transparent;
  color: var(--color-ink-faint);
  min-width: auto;
  padding: 0 var(--space-1);
}


/* ----------------------------------------------------------------
   BLOG NEWSLETTER CTA
   Dark section. Reused on archive.php and single.php.
   Mirrors the hv-newsletter pattern.
   ---------------------------------------------------------------- */

.blog-newsletter {
  background: var(--color-surface-inverse);
  padding: var(--space-9) 0;
}

.blog-newsletter__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-5);
  text-align: center;
}

.blog-newsletter__heading {
  font-family: var(--font-display);
  font-size: var(--text-2xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-inverse);
  margin: 0 0 var(--space-4);
}

.blog-newsletter__desc {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-inverse);
  opacity: 0.8;
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-6);
}

.blog-newsletter__form {
  text-align: left;
}

.blog-newsletter__form[hidden],
.blog-newsletter__success[hidden] {
  display: none;
}

.blog-newsletter__honeypot {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
}

.blog-newsletter__fields {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-3);
}

@media (min-width: 640px) {
  .blog-newsletter__fields {
    grid-template-columns: 1fr 1fr auto;
    align-items: end;
  }
}

.blog-newsletter .home-form-label {
  color: var(--color-ink-inverse);
  opacity: 0.85;
}

.blog-newsletter .home-form-input {
  background: var(--color-surface);
  color: var(--color-ink);
  border-color: rgba(255, 255, 255, 0.2);
}

.blog-newsletter .home-form-input::placeholder {
  color: var(--color-ink-faint);
}

.blog-newsletter .home-form-input:focus {
  border-color: var(--color-accent-hover);
  box-shadow: var(--shadow-focus);
}

.blog-newsletter__submit {
  white-space: nowrap;
}

.blog-newsletter__error {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: #fca5a5;
  margin: var(--space-3) 0 0;
}

.blog-newsletter__error[hidden] {
  display: none;
}

.blog-newsletter__privacy {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-inverse);
  opacity: 0.5;
  margin: var(--space-3) 0 0;
  text-align: center;
}

.blog-newsletter__success {
  text-align: center;
  padding: var(--space-6);
  background: var(--color-surface);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-md);
}

.blog-newsletter__success svg {
  color: var(--color-accent);
  margin-bottom: var(--space-3);
}

.blog-newsletter__success h3 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-2);
}

.blog-newsletter__success p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}


/* ================================================================
   ================================================================
   BLOG SINGLE — single.php
   Scoped to body.single-post
   ================================================================
   ================================================================ */


/* ----------------------------------------------------------------
   POST HEADER
   Centred, narrow column.
   ---------------------------------------------------------------- */

.blog-post-header {
  padding: var(--space-7) 0 var(--space-5);
  text-align: center;
}

.blog-post-header__inner {
  max-width: 700px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

/* Breadcrumb */
.blog-breadcrumb__list {
  list-style: none;
  display: flex;
  justify-content: center;
  align-items: center;
  gap: var(--space-2);
  padding: 0;
  margin: 0 0 var(--space-4);
  flex-wrap: wrap;
}

.blog-breadcrumb__item {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
}

.blog-breadcrumb__item + .blog-breadcrumb__item::before {
  content: "/";
  margin-right: var(--space-2);
  color: var(--color-ink-faint);
  opacity: 0.5;
}

.blog-breadcrumb__link {
  color: var(--color-ink-soft);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.blog-breadcrumb__link:hover {
  color: var(--color-accent);
}

.blog-breadcrumb__item--current {
  color: var(--color-ink);
  font-weight: var(--weight-medium);
  /* Truncate long titles in the breadcrumb */
  max-width: 240px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Category badges */
.blog-post-header__categories {
  display: flex;
  justify-content: center;
  gap: var(--space-2);
  flex-wrap: wrap;
  margin-bottom: var(--space-4);
}

.blog-category-badge {
  display: inline-block;
  font-family: var(--font-body);
  font-size: 0.6875rem;
  font-weight: var(--weight-semibold);
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--color-accent);
  background: var(--color-accent-soft);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-full);
  text-decoration: none;
  line-height: 1.2;
  transition:
    background var(--duration-fast) var(--ease-snappy),
    color var(--duration-fast) var(--ease-snappy);
}

.blog-category-badge:hover {
  background: var(--color-accent);
  color: var(--color-ink-inverse);
}

.blog-category-badge:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* Title */
.blog-post-header__title {
  font-family: var(--font-display);
  font-size: clamp(2rem, 4.5vw, 3rem);
  font-weight: var(--weight-bold);
  line-height: var(--leading-tight);
  color: var(--color-ink-strong);
  margin: 0 0 var(--space-3);
}

/* Meta row */
.blog-post-header__meta {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-faint);
  margin: 0;
}

.blog-post-header__separator {
  margin: 0 var(--space-2);
}


/* ----------------------------------------------------------------
   FEATURED IMAGE
   ---------------------------------------------------------------- */

.blog-post-featured {
  margin-bottom: var(--space-6);
}

.blog-post-featured__inner {
  max-width: var(--container-narrow);
  margin: 0 auto;
  padding: 0 var(--space-4);
}

.blog-post-featured__image {
  width: 100%;
  height: auto;
  max-height: 500px;
  object-fit: cover;
  display: block;
  border-radius: var(--radius-lg);
}


/* ----------------------------------------------------------------
   POST CONTENT
   Centred column, 680-720px, readable typography.
   ---------------------------------------------------------------- */

.blog-post-content {
  padding-bottom: var(--space-7);
}

.blog-post-content__inner {
  max-width: 700px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

/* Paragraph */
.blog-post-content__inner p {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
}

/* Headings */
.blog-post-content__inner h2 {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: var(--space-7) 0 var(--space-3);
}

.blog-post-content__inner h3 {
  font-family: var(--font-display);
  font-size: clamp(1.25rem, 2.5vw, 1.5rem);
  font-weight: var(--weight-semibold);
  line-height: var(--leading-snug);
  color: var(--color-ink-strong);
  margin: var(--space-6) 0 var(--space-3);
}

.blog-post-content__inner h4 {
  font-family: var(--font-body);
  font-size: var(--text-lg);
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  margin: var(--space-5) 0 var(--space-2);
}

/* Lists */
.blog-post-content__inner ul,
.blog-post-content__inner ol {
  font-family: var(--font-body);
  font-size: var(--text-base);
  color: var(--color-ink);
  line-height: var(--leading-relaxed);
  margin: 0 0 var(--space-4);
  padding-left: var(--space-5);
}

.blog-post-content__inner li {
  margin-bottom: var(--space-2);
}

.blog-post-content__inner li:last-child {
  margin-bottom: 0;
}

/* Blockquote */
.blog-post-content__inner blockquote {
  font-family: var(--font-display);
  font-style: italic;
  font-size: var(--text-lg);
  line-height: var(--leading-relaxed);
  color: var(--color-ink);
  border-left: 4px solid var(--color-accent);
  background: var(--color-accent-soft);
  margin: var(--space-5) 0;
  padding: var(--space-4) var(--space-5);
  border-radius: 0 var(--radius-md) var(--radius-md) 0;
}

.blog-post-content__inner blockquote p {
  margin: 0;
}

.blog-post-content__inner blockquote cite {
  display: block;
  font-family: var(--font-body);
  font-style: normal;
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  margin-top: var(--space-2);
}

/* Code */
.blog-post-content__inner code {
  font-family: var(--font-mono);
  font-size: 0.9em;
  background: var(--color-surface-sunken);
  padding: 0.15em 0.4em;
  border-radius: var(--radius-sm);
  color: var(--color-ink);
}

.blog-post-content__inner pre {
  background: var(--color-surface-inverse);
  color: var(--color-ink-inverse);
  padding: var(--space-4);
  border-radius: var(--radius-md);
  overflow-x: auto;
  margin: var(--space-5) 0;
  font-size: var(--text-sm);
  line-height: 1.6;
}

.blog-post-content__inner pre code {
  background: transparent;
  padding: 0;
  border-radius: 0;
  color: inherit;
}

/* Links */
.blog-post-content__inner a {
  color: var(--color-accent);
  text-decoration: none;
  transition: color var(--duration-fast) var(--ease-snappy);
}

.blog-post-content__inner a:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}

/* Images */
.blog-post-content__inner img {
  max-width: 100%;
  height: auto;
  display: block;
  border-radius: var(--radius-md);
  margin: var(--space-5) 0;
}

.blog-post-content__inner .wp-caption {
  max-width: 100%;
  margin: var(--space-5) 0;
}

.blog-post-content__inner .wp-caption img {
  margin: 0;
}

.blog-post-content__inner .wp-caption-text {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  color: var(--color-ink-faint);
  text-align: center;
  margin-top: var(--space-2);
}

/* WordPress block alignments */
.blog-post-content__inner .aligncenter {
  display: block;
  margin-left: auto;
  margin-right: auto;
}

.blog-post-content__inner .alignleft {
  float: left;
  margin: 0 var(--space-4) var(--space-3) 0;
}

.blog-post-content__inner .alignright {
  float: right;
  margin: 0 0 var(--space-3) var(--space-4);
}

/* Strong and emphasis */
.blog-post-content__inner strong {
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
}

/* Horizontal rule */
.blog-post-content__inner hr {
  border: none;
  border-top: 1px solid var(--color-border);
  margin: var(--space-6) 0;
}

/* Tables (in case a post uses one) */
.blog-post-content__inner table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-5) 0;
  font-family: var(--font-body);
  font-size: var(--text-sm);
}

.blog-post-content__inner th,
.blog-post-content__inner td {
  text-align: left;
  padding: var(--space-2) var(--space-3);
  border-bottom: 1px solid var(--color-border);
}

.blog-post-content__inner th {
  font-weight: var(--weight-semibold);
  color: var(--color-ink-strong);
  background: var(--color-surface-sunken);
}


/* ----------------------------------------------------------------
   POST FOOTER — Tags + Share
   ---------------------------------------------------------------- */

.blog-post-footer {
  border-top: 1px solid var(--color-border);
}

.blog-post-footer__inner {
  max-width: 700px;
  margin: 0 auto;
  padding: var(--space-5) var(--space-4);
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  align-items: center;
  gap: var(--space-4);
}

/* Tag pills */
.blog-post-footer__tags {
  display: flex;
  flex-wrap: wrap;
  gap: var(--space-2);
}

.blog-tag-pill {
  display: inline-block;
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--color-ink-soft);
  background: var(--color-surface-sunken);
  padding: var(--space-1) var(--space-2);
  border-radius: var(--radius-full);
  text-decoration: none;
  transition:
    background var(--duration-fast) var(--ease-snappy),
    color var(--duration-fast) var(--ease-snappy);
}

.blog-tag-pill:hover {
  background: var(--color-border);
  color: var(--color-ink);
}

.blog-tag-pill:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}

/* Share links */
.blog-post-footer__share {
  display: flex;
  align-items: center;
  gap: var(--space-3);
}

.blog-post-footer__share-label {
  font-family: var(--font-body);
  font-size: var(--text-xs);
  font-weight: var(--weight-medium);
  color: var(--color-ink-faint);
  text-transform: uppercase;
  letter-spacing: 0.06em;
}

.blog-share-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 36px;
  height: 36px;
  color: var(--color-ink-soft);
  border-radius: var(--radius-full);
  transition:
    color var(--duration-fast) var(--ease-snappy),
    background var(--duration-fast) var(--ease-snappy);
}

.blog-share-link:hover {
  color: var(--color-accent);
  background: var(--color-accent-soft);
}

.blog-share-link:focus-visible {
  outline: 2px solid var(--color-accent);
  outline-offset: 2px;
}


/* ----------------------------------------------------------------
   RELATED POSTS
   ---------------------------------------------------------------- */

.blog-related {
  background: var(--color-surface-sunken);
  padding: var(--space-8) 0;
}

.blog-related__inner {
  max-width: var(--container-max);
  margin: 0 auto;
  padding: 0 var(--space-4);
}

.blog-related__heading {
  font-family: var(--font-display);
  font-size: var(--text-xl);
  font-weight: var(--weight-bold);
  color: var(--color-ink-strong);
  text-align: center;
  margin: 0 0 var(--space-6);
}

.blog-related__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: var(--space-5);
}

@media (min-width: 640px) {
  .blog-related__grid {
    grid-template-columns: repeat(2, 1fr);
  }
}

@media (min-width: 960px) {
  .blog-related__grid {
    grid-template-columns: repeat(3, 1fr);
  }
}

/* Smaller variant for related cards */
.blog-card--small .blog-card__body {
  padding: var(--space-3);
}

.blog-card--small .blog-card__title {
  font-size: clamp(1.05rem, 2vw, 1.2rem);
  margin-bottom: var(--space-1);
}


/* ----------------------------------------------------------------
   CONTACT OUTRO
   Subtle closing line on single.php.
   ---------------------------------------------------------------- */

.blog-outro {
  padding: var(--space-6) 0 var(--space-7);
  text-align: center;
}

.blog-outro__inner {
  max-width: 600px;
  margin: 0 auto;
  padding: 0 var(--space-4);
}

.blog-outro__text {
  font-family: var(--font-body);
  font-size: var(--text-sm);
  color: var(--color-ink-soft);
  line-height: var(--leading-relaxed);
  margin: 0;
}

.blog-outro__link {
  color: var(--color-accent);
  text-decoration: none;
  font-weight: var(--weight-medium);
  transition: color var(--duration-fast) var(--ease-snappy);
}

.blog-outro__link:hover {
  color: var(--color-accent-hover);
  text-decoration: underline;
}
