/* ==========================================================================
   Crossbridge Business Brokers - Homepage
   Design system derived from the Relume export (DESIGN.md tokens).
   ========================================================================== */

/* ---------- Fonts (loaded locally from /assets/fonts) ---------- */
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("assets/fonts/roboto-300.woff2") format("woff2");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/fonts/roboto-400.woff2") format("woff2");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("assets/fonts/roboto-500.woff2") format("woff2");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("assets/fonts/roboto-700.woff2") format("woff2");
}
@font-face {
  font-family: "Roboto";
  font-style: normal;
  font-weight: 900;
  font-display: swap;
  src: url("assets/fonts/roboto-900.woff2") format("woff2");
}
@font-face {
  font-family: "Roboto Flex";
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("assets/fonts/roboto-flex-400.woff2") format("woff2");
}

/* ---------- Design tokens ---------- */
:root {
  /* Render in the intended light design on every device; prevents mobile
     browsers' auto/force-dark from darkening the UI (e.g. the hamburger) */
  color-scheme: only light;

  /* Neutral */
  --white: #ffffff;
  --neutral-lightest: #f2f2f2;
  --neutral-lighter: #d9dada;
  --neutral-light: #b4b5b6;
  --neutral: #828485;
  --neutral-dark: #505354;
  --neutral-darker: #1e2224;
  --neutral-darkest: #060a0c;

  /* Curious Blue (primary) */
  --blue-lightest: #e8f3fa;
  --blue-lighter: #d2e8f6;
  --blue-light: #61aee0;
  --blue: #1e8cd4;
  --blue-dark: #1870a9;
  --blue-darker: #0c3854;
  --blue-darkest: #092a3f;

  /* Athens Gray (surfaces) */
  --gray-lightest: #fcfcfd;
  --gray-lighter: #fafafc;
  --gray-light: #edeff4;
  --gray: #e6e9f0;
  --gray-dark: #b8bac0;

  /* Seagull (soft accent) */
  --seagull: #71c1e9;
  --seagull-lighter: #e2f2fa;

  /* Type scale (desktop) */
  --h1: 4.5rem;
  --h2: 3.25rem;
  --h3: 2.75rem;
  --h4: 2.25rem;
  --h5: 1.75rem;
  --h6: 1.375rem;
  --text-large: 1.375rem;
  --text-medium: 1.125rem;
  --text-regular: 1rem;
  --text-small: 0.875rem;

  --radius-button: 100px;
  --radius-card: 12px;
  --container: 80rem;
  --section-y: 7rem;

  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --shadow-sm: 0 1px 3px rgba(6, 10, 12, 0.06), 0 1px 2px rgba(6, 10, 12, 0.04);
  --shadow-md: 0 10px 30px -12px rgba(6, 10, 12, 0.18);
  --shadow-lg: 0 24px 60px -20px rgba(12, 56, 84, 0.35);
}

@media (max-width: 991px) {
  :root {
    --h1: 2.75rem;
    --h2: 2.5rem;
    --h3: 2rem;
    --h4: 1.5rem;
    --h5: 1.25rem;
    --h6: 1.125rem;
    --text-large: 1.125rem;
    --section-y: 4.5rem;
  }
}

/* ---------- Reset ---------- */
*,
*::before,
*::after {
  box-sizing: border-box;
  margin: 0;
  padding: 0;
}

/* Keyboard focus ring: shows for keyboard navigation only (not mouse clicks),
   styled to match the brand instead of the browser default. */
a:focus-visible,
button:focus-visible,
.btn:focus-visible,
.nav-toggle:focus-visible,
summary:focus-visible,
[tabindex]:focus-visible {
  outline: 3px solid var(--blue);
  outline-offset: 2px;
  border-radius: 4px;
}
/* Lighter ring on dark sections so it stays visible against navy backgrounds. */
.scheme-dark a:focus-visible,
.scheme-dark .btn:focus-visible,
.scheme-deepest a:focus-visible,
.scheme-deepest .btn:focus-visible {
  outline-color: var(--seagull);
}

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* Root-level guard against horizontal panning on mobile. Any element that
     overflows sideways (decorative glow, parallax, etc.) is clipped at the
     document edge instead of making the whole page draggable left/right, which
     also dragged the fixed mobile menu off-screen. `clip` (not `hidden`) leaves
     vertical overflow `visible`, so it does NOT create a scroll container and
     the sticky header keeps working. */
  overflow-x: clip;
}

body {
  font-family: "Roboto Flex", system-ui, sans-serif;
  font-weight: 400;
  font-size: var(--text-medium);
  line-height: 1.6;
  color: var(--neutral-darkest);
  background: var(--white);
  -webkit-font-smoothing: antialiased;
  /* Guard against accidental horizontal scroll from full-bleed heroes,
     parallax transforms, and decorative glows. `clip` (not `hidden`) keeps
     the sticky header working. */
  overflow-x: clip;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "Roboto", system-ui, sans-serif;
  font-weight: 500;
  line-height: 1.15;
  letter-spacing: -0.01em;
  color: inherit;
  text-wrap: balance;
}

/* Avoid orphaned/widowed words: balance short headings and intros,
   prettify body copy so a single word never wraps onto its own line. */
p { text-wrap: pretty; }

h1 { font-size: var(--h1); }
h2 { font-size: var(--h2); }
h3 { font-size: var(--h3); }
h4 { font-size: var(--h4); }
h5 { font-size: var(--h5); }
h6 { font-size: var(--h6); }

a { color: inherit; text-decoration: none; }
img { max-width: 100%; display: block; }
ul { list-style: none; }

/* ---------- Layout helpers ---------- */
.container {
  width: 100%;
  max-width: var(--container);
  margin-inline: auto;
  padding-inline: 1.5rem;
}

.section {
  padding-block: var(--section-y);
}

.eyebrow {
  display: inline-block;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 1rem;
}

.lead {
  font-size: var(--text-large);
  color: var(--neutral-dark);
  max-width: 46rem;
  text-wrap: balance;
}

.section-head {
  max-width: 52rem;
  margin-bottom: 3.5rem;
}
.section-head.center {
  margin-inline: auto;
  text-align: center;
}

/* ---------- Color schemes ---------- */
.scheme-dark {
  background: var(--blue-dark);
  color: var(--white);
}
.scheme-dark .eyebrow { color: var(--seagull); }
.scheme-dark .lead { color: rgba(255, 255, 255, 0.82); }

.scheme-deepest {
  background: var(--blue-darker);
  color: var(--white);
}
.scheme-deepest .eyebrow { color: var(--seagull); }
.scheme-deepest .lead { color: rgba(255, 255, 255, 0.82); }

.scheme-white { background: var(--white); }
.scheme-gray-light { background: var(--gray-lighter); }
.scheme-gray { background: var(--gray); }
.scheme-blue-soft { background: var(--blue-lightest); }

/* ---------- Buttons ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  line-height: 1;
  padding: 0.95rem 1.75rem;
  border-radius: var(--radius-button);
  border: 1px solid transparent;
  cursor: pointer;
  transition: transform 0.2s var(--ease), background-color 0.2s var(--ease),
    color 0.2s var(--ease), box-shadow 0.2s var(--ease), border-color 0.2s var(--ease);
  white-space: nowrap;
}
.btn:hover { transform: translateY(-2px); }
.btn:active { transform: translateY(0); }

.btn-primary {
  background: var(--blue);
  color: var(--white);
  box-shadow: 0 8px 20px -8px rgba(30, 140, 212, 0.7);
}
.btn-primary:hover { background: var(--blue-dark); }

.btn-outline {
  background: transparent;
  color: inherit;
  border-color: currentColor;
}
.btn-outline:hover { background: rgba(255, 255, 255, 0.08); }

.scheme-white .btn-outline,
.scheme-gray-light .btn-outline,
.scheme-gray .btn-outline,
.scheme-blue-soft .btn-outline {
  border-color: rgba(6, 10, 12, 0.25);
}
.scheme-white .btn-outline:hover,
.scheme-gray-light .btn-outline:hover,
.scheme-gray .btn-outline:hover,
.scheme-blue-soft .btn-outline:hover {
  background: rgba(6, 10, 12, 0.05);
}

.btn-lg { padding: 1.1rem 2.25rem; font-size: var(--text-large); }

/* ==========================================================================
   Header / Navbar
   ========================================================================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: rgba(255, 255, 255, 0.92);
  -webkit-backdrop-filter: saturate(150%) blur(10px);
  backdrop-filter: saturate(150%) blur(10px);
  border-bottom: 1px solid transparent;
  transition: box-shadow 0.25s var(--ease), border-color 0.25s var(--ease);
}
.site-header.is-scrolled {
  box-shadow: var(--shadow-sm);
  border-bottom-color: rgba(6, 10, 12, 0.06);
}

.nav {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
  height: 76px;
}

.brand {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  flex-shrink: 0;
}
.brand img { height: 40px; width: auto; display: block; }
.brand-name {
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: 1.05rem;
  letter-spacing: 0.01em;
  line-height: 1.05;
  color: var(--blue-darker);
}
.brand-name span {
  display: block;
  font-weight: 400;
  font-size: 0.62rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--neutral);
}

.nav-links {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.nav-links a {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-regular);
  color: var(--neutral-darker);
  position: relative;
  padding: 0.25rem 0;
  transition: color 0.2s var(--ease);
}
/* Desktop nav: single-line labels; keep the label + caret together (never wrap) */
@media (min-width: 1220px) {
  .nav-links a { display: inline-block; text-align: center; line-height: 1.2; white-space: nowrap; }
}
/* The manual two-line break only applies on desktop; collapse it in the mobile menu */
@media (max-width: 1219px) {
  .nav-br { display: none; }
}
.nav-links a::after {
  content: "";
  position: absolute;
  left: 0;
  bottom: -2px;
  width: 0;
  height: 2px;
  background: var(--blue);
  transition: width 0.25s var(--ease);
}
.nav-links a:hover { color: var(--blue); }
.nav-links a:hover::after { width: 100%; }

/* ---- Nav dropdown: jump-to-section sub-menu ---- */
.nav-links .has-sub { position: relative; }
.nav-caret {
  width: 11px;
  height: 11px;
  margin-left: 0.3rem;
  vertical-align: middle;
  transition: transform 0.2s var(--ease);
}
.nav-links .has-sub:hover .nav-caret,
.nav-links .has-sub:focus-within .nav-caret { transform: rotate(180deg); }
/* invisible hover bridge so the menu survives the gap to the panel */
.nav-links .has-sub::after {
  content: "";
  position: absolute;
  top: 100%;
  left: -0.5rem;
  right: -0.5rem;
  height: 14px;
}
.nav-submenu {
  position: absolute;
  top: calc(100% + 12px);
  left: 50%;
  transform: translateX(-50%) translateY(6px);
  min-width: 22rem;
  list-style: none;
  margin: 0;
  padding: 0.5rem;
  background: rgba(255, 255, 255, 0.97);
  backdrop-filter: saturate(180%) blur(20px);
  -webkit-backdrop-filter: saturate(180%) blur(20px);
  border: 1px solid rgba(6, 10, 12, 0.06);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-lg);
  opacity: 0;
  visibility: hidden;
  transition: opacity 0.2s var(--ease), transform 0.2s var(--ease),
    visibility 0.2s var(--ease);
  z-index: 200;
}
.nav-links .has-sub:hover .nav-submenu,
.nav-links .has-sub:focus-within .nav-submenu {
  opacity: 1;
  visibility: visible;
  transform: translateX(-50%) translateY(0);
}
.nav-submenu li { display: block; }
/* Small eyebrow label at the top of the panel */
.nav-submenu .ns-label {
  padding: 0.4rem 0.85rem 0.55rem;
  font-family: "Roboto", sans-serif;
  font-weight: 600;
  font-size: 0.68rem;
  letter-spacing: 0.14em;
  text-transform: uppercase;
  color: var(--neutral);
}
.nav-submenu a {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  padding: 0.6rem 0.75rem;
  border-radius: 10px;
  white-space: nowrap;
  text-align: left;
  transition: background 0.18s var(--ease);
}
.nav-submenu a::after { display: none !important; }
/* icon chip */
.ns-icon {
  flex-shrink: 0;
  width: 2.35rem;
  height: 2.35rem;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border-radius: 10px;
  background: var(--blue-lightest);
  color: var(--blue);
  transition: background 0.18s var(--ease), color 0.18s var(--ease),
    transform 0.18s var(--ease);
}
.ns-icon svg { width: 18px; height: 18px; }
.ns-text {
  display: flex;
  flex-direction: column;
  line-height: 1.25;
}
.ns-text strong {
  font-family: "Roboto", sans-serif;
  font-weight: 600;
  font-size: var(--text-small);
  color: var(--neutral-darker);
}
.ns-text small {
  font-size: 0.75rem;
  font-weight: 400;
  color: var(--neutral);
  margin-top: 1px;
}
.nav-submenu a:hover { background: rgba(30, 140, 212, 0.1); }
.nav-submenu a:hover .ns-icon {
  background: var(--blue);
  color: #fff;
  transform: translateY(-1px);
}
.nav-submenu a:hover .ns-text strong { color: var(--blue-dark); }

@media (max-width: 1219px) {
  /* On mobile the sub-links show as a static, indented group in the panel */
  .nav-links .has-sub::after { display: none; }
  .nav-caret { display: none; }
  .nav-submenu {
    position: static;
    transform: none;
    opacity: 1;
    visibility: visible;
    min-width: 0;
    margin: 0;
    padding: 0 0 0.35rem 1rem;
    background: transparent;
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
    border: none;
    box-shadow: none;
  }
  /* The desktop dropdown reveal uses transform: translateX(-50%), and its
     :hover / :focus-within rule is GLOBAL (not desktop-scoped). On mobile the
     submenu is static, so that transform was shoving it sideways off-screen
     whenever a parent was hovered or tapped. Cancel it here so mobile sub-items
     stay put. */
  .nav-links .has-sub:hover .nav-submenu,
  .nav-links .has-sub:focus-within .nav-submenu {
    transform: none;
  }
  .nav-menu .nav-submenu a {
    padding: 0.6rem 0;
    border-bottom: 1px solid rgba(6, 10, 12, 0.05);
  }
  .nav-submenu .ns-label { display: none; }
  .nav-submenu .ns-text small { display: none; }
  .nav-submenu .ns-icon { width: 1.9rem; height: 1.9rem; }
  .nav-submenu .ns-text strong { font-size: var(--text-regular); }
}

@media (max-width: 1219px) {
  /* Top-level page links read as bold, tappable "page" rows with a go-to
     chevron on the right, so they stand out from the icon-led sub-items
     indented beneath them. */
  .nav-menu .nav-links > li > a {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    font-weight: 700;
    color: var(--blue-darker);
  }
  .nav-menu .nav-links > li > a::after {
    content: "";
    position: static;
    display: block;
    flex-shrink: 0;
    width: 20px;
    height: 20px;
    opacity: 0.65;
    background: var(--blue);
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='9 6 15 12 9 18'/%3E%3C/svg%3E") center / 18px 18px no-repeat;
    transition: none;
  }
  /* keep the current-page highlight winning over the navy above */
  .nav-menu .nav-links > li > a.is-active { color: var(--blue); }
}

.nav-actions {
  display: flex;
  align-items: center;
  gap: 1rem;
}
.nav-phone {
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--text-medium);
  color: var(--blue-darker);
  white-space: nowrap;
}
.nav-phone:hover { color: var(--blue); }

@media (min-width: 1220px) {
  /* Desktop nav: the phone number becomes the primary blue CTA; the separate
     Book a Call button is removed here (booking stays in the footer + page CTAs). */
  .nav-menu .btn { display: none; }
  .nav-menu .nav-phone {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    padding: 0.72rem 1.5rem;
    border-radius: var(--radius-button);
    background: var(--blue);
    color: #fff;
    box-shadow: 0 8px 20px -8px rgba(30, 140, 212, 0.7);
    transition: transform 0.2s var(--ease), background-color 0.2s var(--ease),
      color 0.2s var(--ease);
  }
  .nav-menu .nav-phone:hover {
    background: var(--blue-dark);
    color: #fff;
    transform: translateY(-2px);
  }
}

.nav-toggle {
  display: none;
  flex-direction: column;
  justify-content: center;
  gap: 5px;
  width: 44px;
  height: 44px;
  background: none;
  border: none;
  cursor: pointer;
}
.nav-toggle span {
  display: block;
  width: 24px;
  height: 2px;
  background: var(--neutral-darkest);
  transition: transform 0.25s var(--ease), opacity 0.2s var(--ease);
}
.nav-toggle.is-open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
.nav-toggle.is-open span:nth-child(2) { opacity: 0; }
.nav-toggle.is-open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

@media (max-width: 1219px) {
  .nav-toggle { display: flex; }
  .nav-menu {
    position: fixed;
    inset: 76px 0 auto 0;
    background: var(--white);
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    padding: 1rem 1.5rem 2rem;
    box-shadow: var(--shadow-md);
    border-top: 1px solid rgba(6, 10, 12, 0.06);
    transform: translateY(-12px);
    opacity: 0;
    pointer-events: none;
    transition: transform 0.25s var(--ease), opacity 0.25s var(--ease);
    display: flex;
    max-height: calc(100vh - 76px);
    overflow-y: auto;
    overflow-x: hidden;
  }
  .nav-menu.is-open { transform: translateY(0); opacity: 1; pointer-events: auto; }
  .nav-menu .nav-links {
    flex-direction: column;
    align-items: stretch;
    gap: 0;
    width: 100%;
  }
  .nav-menu a {
    font-size: var(--text-medium);
    padding: 0.9rem 0;
    border-bottom: 1px solid rgba(6, 10, 12, 0.06);
  }
  .nav-menu a::after { display: none; }
  /* Long sub-item labels wrap instead of running off-screen on narrow /
     large-font devices (prevents the tap-to-focus horizontal shift). */
  .nav-submenu a { white-space: normal; }
  .nav-submenu .ns-text { min-width: 0; }

  /* Footer actions: phone + Book a Call as full-width stacked buttons */
  .nav-menu .nav-phone,
  .nav-menu .btn {
    width: 100%;
    box-sizing: border-box;
    border-bottom: none;
  }
  .nav-menu .nav-phone {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.55rem;
    margin-top: 1.5rem;
    padding: 0.95rem 1.75rem;
    border: 2px solid var(--blue);
    border-radius: var(--radius-button);
    font-size: var(--text-medium);
    font-weight: 700;
    color: var(--blue-darker);
    white-space: nowrap;
  }
  .nav-menu .nav-phone::before {
    content: "";
    flex-shrink: 0;
    width: 19px;
    height: 19px;
    background: currentColor;
    -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") center / contain no-repeat;
    mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z'/%3E%3C/svg%3E") center / contain no-repeat;
  }
  .nav-menu .nav-phone:hover { background: rgba(6, 10, 12, 0.05); }
  .nav-menu .btn { display: inline-flex; margin-top: 0.75rem; }
}

/* The menu wrapper holds links + actions; on desktop it's a flex row */
.nav-menu {
  display: flex;
  align-items: center;
  gap: 1.75rem;
}

/* ==========================================================================
   Hero
   ========================================================================== */
.hero {
  position: relative;
  overflow: hidden;
  background: var(--blue-dark);
}
.hero-photo {
  position: absolute;
  inset: 0;
  background: url("assets/images/cbb-hero.jpg") center right / cover no-repeat;
  z-index: 0;
}
.hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    var(--blue-dark) 0%,
    var(--blue-dark) 30%,
    rgba(24, 112, 169, 0.82) 48%,
    rgba(12, 56, 84, 0.32) 76%,
    rgba(12, 56, 84, 0.12) 100%
  );
}
.hero .container {
  position: relative;
  z-index: 1;
  min-height: 38rem;
  display: flex;
  align-items: center;
  padding-block: 5.5rem;
}

.hero-content { max-width: 40rem; }
.hero-content h1 {
  font-size: clamp(2.75rem, 5vw, 4.5rem);
  margin-bottom: 1.5rem;
}
.hero-content h1 .accent { color: var(--seagull); }

.hero-content .lead {
  margin-bottom: 2rem;
  max-width: 34rem;
}

.hero-cta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 1rem;
}
.hero-microcopy {
  margin-top: 1.75rem;
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: 0.85rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  color: rgba(255, 255, 255, 0.95);
}
.hero-microcopy .hm-item {
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.hero-microcopy .hm-item svg {
  width: 20px;
  height: 20px;
  color: var(--seagull);
}
.hero-microcopy .dot {
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.4);
}

@media (max-width: 991px) {
  .hero-photo { background-position: center; }
  .hero-photo::after {
    background: linear-gradient(
        180deg,
        rgba(9, 42, 63, 0.72),
        rgba(9, 42, 63, 0.86)
      ),
      linear-gradient(90deg, var(--blue-dark), rgba(24, 112, 169, 0.45));
  }
  .hero .container { min-height: 32rem; padding-block: 4rem; }
  .hero-content { max-width: none; }
}

/* ==========================================================================
   Credibility strip
   ========================================================================== */
.credbar {
  border-bottom: 1px solid rgba(6, 10, 12, 0.08);
}
.credbar-inner {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem 2.5rem;
  padding-block: 1.75rem;
}
.credbar-item {
  display: flex;
  align-items: center;
  gap: 0.65rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.02em;
  color: var(--neutral-darker);
}
.credbar-item svg { width: 22px; height: 22px; color: var(--blue); flex-shrink: 0; }

/* ==========================================================================
   Two-column feature blocks
   ========================================================================== */
.feature {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.feature.reverse .feature-media { order: 2; }
.feature-media img {
  width: 100%;
  border-radius: 16px;
  box-shadow: var(--shadow-md);
  object-fit: cover;
}
.feature h2 { margin-bottom: 1.25rem; }
.feature .lead { margin-bottom: 2rem; }
/* About Crossbridge intro - full-bleed stamp bleeding from the left (mirrors the tailored-approach treatment) */
.intro-band { position: relative; overflow: hidden; }
.intro-photo {
  position: absolute;
  inset: 0;
  background: url("assets/images/trusted-partner.jpg") left center / cover no-repeat;
  z-index: 0;
}
@media (min-width: 992px) {
  .intro-photo { background-size: auto 115%; background-position: 12% center; }
}
.intro-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(250, 250, 252, 0) 0%,
    rgba(250, 250, 252, 0.2) 30%,
    var(--gray-lighter) 56%,
    var(--gray-lighter) 100%
  );
}
.intro-band .container { position: relative; z-index: 1; }
.intro-content { max-width: 38rem; margin-left: auto; }
.intro-content h2 { margin-bottom: 1.25rem; }
.intro-content .lead { margin-bottom: 2rem; }
.intro-points {
  display: grid;
  gap: 0.85rem;
  margin: 1.6rem 0 2rem;
}
.intro-points li {
  display: flex;
  align-items: center;
  gap: 0.85rem;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--text-medium);
  color: var(--blue-darker);
}
.intro-points .ip-icon {
  flex-shrink: 0;
  width: 40px;
  height: 40px;
  border-radius: 12px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  transition: background 0.2s var(--ease), color 0.2s var(--ease);
}
.intro-points .ip-icon svg { width: 20px; height: 20px; }
/* Learn-more button: soft light-blue tint on hover (secondary to the primary CTAs) */
#intro .btn-outline:hover {
  background: var(--blue-lightest);
  border-color: var(--blue);
  color: var(--blue-dark);
}
@media (max-width: 991px) {
  .intro-photo { background-position: center; }
  .intro-photo::after {
    background: linear-gradient(180deg, rgba(250, 250, 252, 0.86), rgba(250, 250, 252, 0.93)),
      linear-gradient(90deg, rgba(250, 250, 252, 0.35), var(--gray-lighter));
  }
  .intro-content { max-width: none; }
  .tl-br { display: none; } /* headline wraps naturally on mobile */
}

.check-list { display: grid; gap: 1.1rem; margin-bottom: 2rem; }
.check-list li {
  display: flex;
  gap: 0.85rem;
  align-items: flex-start;
}
.check-list .check {
  flex-shrink: 0;
  width: 26px;
  height: 26px;
  border-radius: 50%;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  margin-top: 2px;
}
.check-list .check svg { width: 14px; height: 14px; }
.check-list strong {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  display: block;
}
.check-list p { color: var(--neutral-dark); font-size: var(--text-regular); }

/* Numbered value list (shared) */
.value-num {
  flex-shrink: 0;
  width: 32px;
  height: 32px;
  border-radius: 50%;
  background: var(--blue);
  color: var(--white);
  display: grid;
  place-items: center;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--text-small);
  margin-top: 1px;
}

@media (max-width: 991px) {
  .feature { grid-template-columns: 1fr; gap: 2.5rem; }
  .feature.reverse .feature-media { order: 0; }
  /* "What you keep": on mobile, weave the infographic BETWEEN the intro
     paragraph and the supporting bullets. `display:contents` promotes the
     feature-body's children into the same flex column as the infographic so
     they can be individually ordered. Desktop (>991px) is untouched. */
  .keep-feature { display: flex; flex-direction: column; gap: 0; }
  .keep-feature .feature-body { display: contents; }
  .keep-feature .feature-body .eyebrow { order: 1; }
  .keep-feature .feature-body h2 { order: 2; }
  .keep-feature .feature-body .lead { order: 3; }
  .keep-feature .keep-media { order: 4; margin-block: 0.75rem 2.25rem; }
  .keep-feature .feature-body .check-list { order: 5; }
}

/* ==========================================================================
   Maximize Value (levers + value-maximization journey)
   ========================================================================== */
.value-stack { display: grid; gap: 0.75rem; }
.value-stack li {
  display: flex;
  gap: 1.1rem;
  align-items: flex-start;
  padding: 1rem 1.15rem;
  border: 1px solid transparent;
  border-radius: var(--radius-card);
  transition: border-color 0.25s var(--ease), background-color 0.25s var(--ease),
    box-shadow 0.25s var(--ease);
}
.value-stack li:hover {
  border-color: var(--blue-light);
  background: var(--blue-lightest);
  box-shadow: var(--shadow-sm);
}
.value-stack .value-num {
  width: 38px;
  height: 38px;
  font-size: var(--text-medium);
}
/* Number badge pops in just after its point slides up, for a layered cascade */
.value-stack li.reveal .value-num {
  transform: scale(0.4);
  opacity: 0;
  transition: transform 0.55s var(--ease) calc(var(--reveal-delay, 0ms) + 120ms),
    opacity 0.55s var(--ease) calc(var(--reveal-delay, 0ms) + 120ms);
}
.value-stack li.reveal.is-visible .value-num {
  transform: scale(1);
  opacity: 1;
}
@media (prefers-reduced-motion: reduce) {
  .value-stack li.reveal .value-num {
    transform: none;
    opacity: 1;
    transition: none;
  }
}
.value-stack strong {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  display: block;
  margin-bottom: 0.2rem;
}
.value-stack p { color: var(--neutral-dark); font-size: var(--text-regular); }

/* Maximize Value: intro + chart on the left, items spaced on the right
   (items top aligns with the paragraph, list spreads to fill) */
.value-split3 {
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-rows: auto 1fr;
  column-gap: 4rem;
  row-gap: 1.4rem;
  margin-bottom: 3.5rem;
}
.vs3-head { grid-column: 1 / -1; grid-row: 1; max-width: 44rem; }
.vs3-left { grid-column: 1; grid-row: 2; }
.vs3-left .lead { margin-bottom: 0; }
.vs3-img {
  width: 100%;
  height: auto;
  display: block;
  margin-top: 0.85rem;
  -webkit-mask-image:
    linear-gradient(to right, transparent 0, #000 6%, #000 94%, transparent 100%),
    linear-gradient(to bottom, transparent 0, #000 8%, #000 92%, transparent 100%);
  -webkit-mask-composite: source-in;
  mask-image:
    linear-gradient(to right, transparent 0, #000 6%, #000 94%, transparent 100%),
    linear-gradient(to bottom, transparent 0, #000 8%, #000 92%, transparent 100%);
  mask-composite: intersect;
}
.vs3-items {
  grid-column: 2;
  grid-row: 2;
  align-content: space-between;
  margin-top: -0.5rem;
}
@media (max-width: 991px) {
  .value-split3 { grid-template-columns: 1fr; grid-template-rows: auto; row-gap: 1.4rem; }
  .vs3-head, .vs3-left, .vs3-items { grid-column: 1; grid-row: auto; }
}

.value-goal {
  margin-top: 1.5rem;
  display: flex;
  align-items: center;
  gap: 1.25rem;
  background: var(--blue);
  color: var(--white);
  border-radius: 16px;
  padding: 1.5rem 2rem;
}
.vg-icon {
  width: 50px;
  height: 50px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.vg-icon svg { width: 26px; height: 26px; }
.value-goal p {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-large);
}
@media (max-width: 767px) {
  .value-levers {
    grid-template-columns: 1fr;
    grid-template-rows: none;
    grid-auto-flow: row;
    gap: 1.5rem;
  }
  .value-goal { padding: 1.5rem; }
}

/* ==========================================================================
   Process section (Deal Journey + 10-Step Process)
   ========================================================================== */
/* Header with years badge */
.process-top {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  gap: 2.5rem;
  margin-bottom: 1rem;
}
.process-intro { max-width: 42rem; }
.process-intro h2 { margin-bottom: 1.25rem; }
.years-badge {
  display: flex;
  align-items: center;
  gap: 1rem;
  flex-shrink: 0;
  padding-left: 2rem;
  border-left: 1px solid rgba(6, 10, 12, 0.12);
}
.years-medal { color: var(--blue); }
.years-medal svg { width: 56px; height: 56px; }
.years-num {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--h5);
  color: var(--blue-darker);
  line-height: 1.1;
}
.years-sub {
  display: block;
  font-size: var(--text-small);
  color: var(--neutral-dark);
  max-width: 9rem;
}
@media (max-width: 767px) {
  .process-top { flex-direction: column; align-items: flex-start; gap: 1.75rem; }
  .years-badge { padding-left: 0; border-left: 0; }
}

/* Process: expandable step within each phase column (Section 4) */
.pj-hint {
  text-align: center;
  font-size: var(--text-small);
  color: var(--neutral);
  margin-bottom: 1.5rem;
}
.pg-step { border-bottom: 1px solid rgba(6, 10, 12, 0.08); }
.pg-step:last-child { border-bottom: none; }
.pg-step > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.7rem 0;
}
.pg-step > summary::-webkit-details-marker { display: none; }
.pg-step > summary:hover .pg-name { color: var(--pg-color); }
.pg-chev {
  margin-left: auto;
  flex: none;
  color: var(--neutral);
  display: inline-grid;
  place-items: center;
  transition: transform 0.3s var(--ease);
}
.pg-chev svg { width: 16px; height: 16px; display: block; }
.pg-step[open] > summary .pg-chev { transform: rotate(180deg); color: var(--pg-color); }
.pg-desc {
  margin: 0;
  padding: 0 0 0.9rem 2.5rem;
  font-size: var(--text-small);
  color: var(--neutral-dark);
}
.pg-step:not([open]) .pg-desc { display: none; }

/* Confidentiality safeguards grid (Section 5, dark) */
.safeguards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.25rem;
  margin-top: 3rem;
}
.safeguard {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(255, 255, 255, 0.12);
  border-radius: var(--radius-card);
  padding: 1.5rem;
  transition: transform 0.35s var(--ease), border-color 0.35s var(--ease);
}
.safeguard:hover { transform: translateY(-4px); border-color: rgba(113, 193, 233, 0.5); }
.safeguard-icon {
  width: 46px;
  height: 46px;
  border-radius: 50%;
  background: rgba(113, 193, 233, 0.16);
  color: var(--seagull);
  display: grid;
  place-items: center;
  margin-bottom: 1rem;
  transition: background 0.35s var(--ease), color 0.35s var(--ease);
}
.safeguard:hover .safeguard-icon { background: var(--seagull); color: var(--blue-darker); }
.safeguard-icon svg { width: 22px; height: 22px; }
.safeguard h5 { color: #fff; font-size: var(--h6); margin-bottom: 0.4rem; }
.safeguard p { color: rgba(255, 255, 255, 0.75); font-size: var(--text-small); margin: 0; }
@media (max-width: 991px) { .safeguards { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .safeguards { grid-template-columns: 1fr; } }

/* Divider label */
.divider-label {
  display: flex;
  align-items: center;
  gap: 1.5rem;
  margin: 3.5rem 0 2.5rem;
}
.divider-label::before,
.divider-label::after {
  content: "";
  flex: 1;
  height: 1px;
  background: rgba(6, 10, 12, 0.12);
}
.divider-label span {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--h6);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--blue-darker);
}

/* Journey banner */
.journey-banner {
  margin-top: 2rem;
  background: var(--blue-darker);
  color: var(--white);
  border-radius: 16px;
  padding: 1.75rem 2.5rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 2rem;
}
.jb-left { display: flex; align-items: center; gap: 1.25rem; }
.jb-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.12);
  color: var(--seagull);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.jb-icon svg { width: 24px; height: 24px; }
.jb-left p { font-size: var(--text-large); max-width: 34rem; }
.jb-right { display: flex; align-items: center; gap: 1rem; flex-shrink: 0; }
.jb-arrow { color: var(--seagull); }
.jb-arrow svg { width: 120px; height: 32px; display: block; }
.jb-goal {
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--h6);
  line-height: 1.2;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  white-space: nowrap;
}
@media (max-width: 767px) {
  .journey-banner { flex-direction: column; align-items: flex-start; gap: 1.5rem; }
  .jb-arrow { display: none; }
}

/* Process - 4 phases, each with its steps (combined) */
.phase-journey { display: flex; align-items: stretch; gap: 0.5rem; }
.phase-group {
  flex: 1;
  min-width: 0;
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease);
}
.phase-group:hover { transform: translateY(-4px); box-shadow: var(--shadow-md); }
.pg-head {
  background: var(--pg-color);
  color: var(--white);
  padding: 1.5rem 1.25rem 1.35rem;
  text-align: center;
}
.pg-icon {
  width: 48px;
  height: 48px;
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.18);
  display: grid;
  place-items: center;
  margin: 0 auto 0.75rem;
}
.pg-icon svg { width: 24px; height: 24px; color: #fff; }
.pg-tag {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--text-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  opacity: 0.85;
}
.pg-title { font-size: var(--h6); margin-top: 0.25rem; color: #fff; }
.pg-steps { display: grid; padding: 0.4rem 1.25rem; }
.pg-steps li {
  display: flex;
  align-items: center;
  gap: 0.7rem;
  padding: 0.7rem 0;
  border-bottom: 1px solid rgba(6, 10, 12, 0.08);
}
.pg-steps li:last-child { border-bottom: none; }
.pg-num {
  flex-shrink: 0;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--pg-color);
  color: #fff;
  display: grid;
  place-items: center;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--text-small);
}
.pg-name { font-family: "Roboto", sans-serif; font-weight: 500; font-size: var(--text-regular); }
.pg-foot {
  margin-top: auto;
  padding: 1rem 1.25rem 1.25rem;
  border-top: 1px solid rgba(6, 10, 12, 0.08);
  font-size: var(--text-regular);
  color: var(--neutral-darker);
}
.pg-foot span {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: 0.7rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
  color: var(--pg-color);
  margin-bottom: 0.2rem;
}
.pg-arrow {
  flex: 0 0 auto;
  align-self: center;
  width: 30px;
  height: 30px;
  border-radius: 50%;
  background: var(--blue-darker);
  color: #fff;
  display: grid;
  place-items: center;
}
.pg-arrow svg { width: 15px; height: 15px; }
@media (max-width: 991px) {
  .phase-journey { flex-direction: column; gap: 1rem; }
  .pg-arrow { transform: rotate(90deg); }
}

/* Trust bar */
.process-trust {
  margin-top: 3.5rem;
  background: var(--blue-lightest);
  border-radius: 16px;
  padding: 2.25rem 2.5rem;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2.5rem;
}
.pt-item { display: flex; gap: 1.25rem; align-items: flex-start; }
.pt-icon {
  width: 52px;
  height: 52px;
  border-radius: 50%;
  background: var(--blue);
  color: var(--white);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.pt-icon svg { width: 26px; height: 26px; }
.pt-item h6 { font-size: var(--text-large); margin-bottom: 0.35rem; }
.pt-item p { font-size: var(--text-regular); color: var(--neutral-dark); }
@media (min-width: 768px) {
  .process-trust .pt-item:nth-child(2) {
    border-left: 1px solid rgba(6, 10, 12, 0.12);
    padding-left: 2.5rem;
  }
}
@media (max-width: 767px) {
  .process-trust { grid-template-columns: 1fr; gap: 1.75rem; padding: 1.75rem; }
}

/* ==========================================================================
   Services grid
   ========================================================================== */
.services-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.25rem;
}
.service-card {
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  padding: 1.75rem;
  display: flex;
  flex-direction: column;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.service-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.service-top {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 1.1rem;
}
.service-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease);
}
.service-icon svg { width: 24px; height: 24px; }
.service-card:hover .service-icon { background: var(--blue); color: var(--white); }
.service-num {
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--h6);
  color: var(--gray-dark);
  line-height: 1;
}
.service-card h6 {
  font-size: var(--text-medium);
  margin-bottom: 0.4rem;
}
.service-card p {
  font-size: var(--text-regular);
  color: var(--neutral-dark);
}
@media (max-width: 991px) {
  .services-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 479px) {
  .services-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Confidentiality band
   ========================================================================== */
.lock-badge {
  width: 64px;
  height: 64px;
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.12);
  display: grid;
  place-items: center;
  margin-bottom: 1.5rem;
}
.lock-badge svg { width: 30px; height: 30px; color: var(--seagull); }

#confidentiality { position: relative; overflow: hidden; }
.conf-photo {
  position: absolute;
  inset: 0;
  background: url("assets/images/conf-secret-sauce.jpg") left center / 88% no-repeat;
  z-index: 0;
}
.conf-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(12, 56, 84, 0.12) 0%,
    rgba(12, 56, 84, 0.3) 35%,
    var(--blue-darker) 66%,
    var(--blue-darker) 100%
  );
}
#confidentiality .container { position: relative; z-index: 1; }
.confidential-content { max-width: 38rem; margin-left: auto; }
.confidential-content h2 { margin-bottom: 1.25rem; }
.conf-icon {
  width: 48px;
  height: 48px;
  border-radius: 12px;
  background: rgba(255, 255, 255, 0.1);
  display: grid;
  place-items: center;
  flex-shrink: 0;
}
.conf-icon svg { width: 24px; height: 24px; color: var(--seagull); }
.conf-list { display: grid; gap: 1.75rem; margin-top: 2rem; }
.conf-list li { display: flex; gap: 1rem; align-items: flex-start; }
.conf-list h6 { margin-bottom: 0.25rem; }
.conf-list p { color: rgba(255, 255, 255, 0.78); font-size: var(--text-regular); }
@media (max-width: 991px) {
  .conf-photo { background-position: center; }
  .conf-photo::after {
    background: linear-gradient(180deg, rgba(9, 42, 63, 0.78), rgba(9, 42, 63, 0.9)),
      linear-gradient(90deg, rgba(12, 56, 84, 0.4), var(--blue-darker));
  }
  .confidential-content { max-width: none; }
}

/* ==========================================================================
   Testimonials - "Owners who crossed the bridge"
   ========================================================================== */
.testimonials-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.testimonial-card {
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  padding: 2rem;
  display: flex;
  flex-direction: column;
  gap: 1.25rem;
}
.testimonial-card .stars {
  display: flex;
  gap: 3px;
  color: var(--blue);
}
.testimonial-card .stars svg { width: 18px; height: 18px; }
.testimonial-card blockquote {
  font-size: var(--text-medium);
  line-height: 1.6;
  color: var(--neutral-darker);
}
.testimonial-card .attribution {
  margin-top: auto;
  border-top: 1px solid rgba(6, 10, 12, 0.08);
  padding-top: 1.25rem;
}
.testimonial-card .name {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
}
.testimonial-card .company {
  font-size: var(--text-small);
  color: var(--neutral);
}
@media (max-width: 991px) {
  .testimonials-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Commercial real estate cross-sell
   ========================================================================== */
.cre-band {
  position: relative;
  overflow: hidden;
  background: var(--neutral-darker);
  color: var(--white);
}
.cre-photo {
  position: absolute;
  inset: 0;
  background: url("assets/images/building-rendering.jpg") center / cover no-repeat;
  z-index: 0;
}
.cre-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    rgba(14, 18, 20, 0.94) 0%,
    rgba(14, 18, 20, 0.84) 42%,
    rgba(14, 18, 20, 0.55) 78%,
    rgba(14, 18, 20, 0.45) 100%
  );
}
.cre-band .container {
  position: relative;
  z-index: 1;
  min-height: 26rem;
  display: flex;
  align-items: center;
}
.cre-band-content { max-width: 38rem; }
.cre-band .eyebrow { color: var(--seagull); }
.cre-band h2 { margin-bottom: 1.5rem; }
.cre-band .lead { color: rgba(255, 255, 255, 0.85); max-width: 34rem; margin-bottom: 2rem; }
@media (max-width: 991px) {
  .cre-photo::after {
    background: linear-gradient(
      90deg,
      rgba(14, 18, 20, 0.92) 0%,
      rgba(14, 18, 20, 0.82) 100%
    );
  }
  .cre-band .container { min-height: 22rem; }
}

/* ==========================================================================
   Why Crossbridge / advantages
   ========================================================================== */
.advantages-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
.advantage-card {
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  padding: 2.5rem 2rem;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.advantage-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.adv-icon {
  width: 60px;
  height: 60px;
  border-radius: 16px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  margin-bottom: 1.5rem;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease);
}
.adv-icon svg { width: 30px; height: 30px; }
.advantage-card:hover .adv-icon { background: var(--blue); color: var(--white); }
.advantage-card h5 { font-size: var(--h5); margin-bottom: 0.75rem; }
.advantage-card p { color: var(--neutral-dark); font-size: var(--text-regular); }
.card-link {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  margin-top: 1.1rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  color: var(--blue);
}
.card-link svg { width: 16px; height: 16px; transition: transform 0.2s var(--ease); }
.card-link:hover { color: var(--blue-dark); }
.card-link:hover svg { transform: translateX(3px); }
@media (max-width: 991px) {
  .advantages-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Final CTA - "30 minutes. One number. Zero risk."
   ========================================================================== */
.final-cta { position: relative; overflow: hidden; }
.final-cta::before {
  content: "";
  position: absolute;
  inset: 0;
  background: radial-gradient(
      120% 120% at 100% 0%,
      rgba(97, 174, 224, 0.3),
      transparent 55%
    );
}
.final-cta .container { position: relative; z-index: 1; }
.cta-grid {
  display: grid;
  grid-template-columns: 1.1fr 0.9fr;
  gap: 3.5rem;
  align-items: center;
}
.cta-kicker {
  display: flex;
  gap: 1rem;
  flex-wrap: wrap;
  margin-bottom: 1.5rem;
}
.cta-kicker span {
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--h5);
  color: var(--seagull);
}
.cta-kicker .sep { color: rgba(255, 255, 255, 0.4); font-weight: 400; }
.final-cta h2 { margin-bottom: 1.25rem; }

.cta-offer {
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(255, 255, 255, 0.18);
  border-radius: 18px;
  padding: 2.25rem;
}
.cta-offer h5 { margin-bottom: 1.25rem; }
.cta-offer ul { display: grid; gap: 1rem; margin-bottom: 2rem; }
.cta-offer li {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
}
.cta-offer li svg { width: 20px; height: 20px; color: var(--seagull); flex-shrink: 0; margin-top: 3px; }
.cta-offer .btn { width: 100%; }
.cta-offer .or {
  text-align: center;
  margin-top: 1rem;
  font-size: var(--text-small);
  color: rgba(255, 255, 255, 0.75);
}
.cta-offer .or a { color: var(--seagull); font-weight: 500; }
@media (max-width: 991px) {
  .cta-grid { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* ==========================================================================
   Footer
   ========================================================================== */
.site-footer { padding-block: 4.5rem 2rem; }
.footer-grid {
  display: grid;
  grid-template-columns: 1.4fr 1fr 1fr 1.2fr;
  gap: 2.5rem;
  padding-bottom: 3rem;
  border-bottom: 1px solid rgba(255, 255, 255, 0.15);
}
.brand-footer { margin-bottom: 1.5rem; }
.brand-footer img { height: 82px; filter: brightness(0) invert(1); }
.footer-brand p { color: rgba(255, 255, 255, 0.75); max-width: 22rem; font-size: var(--text-regular); }
.footer-col h6 {
  font-size: var(--text-small);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--seagull);
  margin-bottom: 1.25rem;
}
.footer-col ul { display: grid; gap: 0.75rem; }
.footer-col a, .footer-col p {
  color: rgba(255, 255, 255, 0.8);
  font-size: var(--text-regular);
  transition: color 0.2s var(--ease);
}
.footer-col a:hover { color: var(--white); }
.footer-social { display: flex; gap: 0.75rem; margin-top: 1.25rem; }
.footer-social a {
  width: 40px; height: 40px;
  border: 1px solid rgba(255, 255, 255, 0.25);
  border-radius: 50%;
  display: grid; place-items: center;
}
.footer-social a:hover { background: rgba(255, 255, 255, 0.12); }
.footer-social svg { width: 18px; height: 18px; }
.footer-bottom {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
  gap: 1rem;
  padding-top: 2rem;
  font-size: var(--text-small);
  color: rgba(255, 255, 255, 0.65);
}
@media (max-width: 991px) {
  .footer-grid { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 567px) {
  .footer-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Active nav link (inner pages)
   ========================================================================== */
.nav-links a.is-active { color: var(--blue); }
.nav-links a.is-active::after { width: 100%; }
@media (max-width: 1219px) {
  .nav-menu a.is-active { color: var(--blue); }
}

/* ==========================================================================
   Inner page hero (shared template)
   ========================================================================== */
.page-hero {
  position: relative;
  overflow: hidden;
  background: var(--blue-darker);
}
.page-hero-photo {
  position: absolute;
  inset: 0;
  background-position: center right;
  background-size: cover;
  background-repeat: no-repeat;
  z-index: 0;
}
#about-hero .page-hero-photo {
  background-image: url("assets/images/about-bridge-nologo.jpg");
}
/* About hero: centre the copy in the upper area so the panorama's two figures
   (owner on the left, couple on the right) flank it and the transition reads.
   Top-down scrim keeps the copy legible while the sides stay visible. */
#about-hero .page-hero-photo { background-position: center 38%; }
#about-hero .page-hero-photo::after {
  background: linear-gradient(
    to bottom,
    rgba(9, 42, 63, 0.92) 0%,
    rgba(9, 42, 63, 0.62) 26%,
    rgba(9, 42, 63, 0.24) 50%,
    rgba(9, 42, 63, 0) 74%
  );
}
#about-hero .container {
  min-height: 84vh;
  align-items: flex-start;
  padding-block: clamp(3.5rem, 8vh, 6rem);
}
#about-hero .page-hero-content {
  max-width: 54rem;
  margin-inline: auto;
  text-align: center;
  text-shadow: 0 2px 22px rgba(6, 20, 30, 0.5);
}
#about-hero .page-hero-content .lead { max-width: 46rem; margin-inline: auto; }
#about-hero .page-hero-cta { justify-content: center; }
@media (max-width: 991px) {
  #about-hero .page-hero-photo::after {
    background: linear-gradient(to bottom, rgba(9, 42, 63, 0.88) 0%, rgba(9, 42, 63, 0.62) 46%, rgba(9, 42, 63, 0.42) 100%);
  }
  #about-hero .container { min-height: 68vh; align-items: flex-start; }
}
#engagements-hero .page-hero-photo {
  background-image: url("assets/images/engagements-header-section.jpg");
}
.page-hero-photo::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(
    90deg,
    var(--blue-darker) 0%,
    var(--blue-darker) 32%,
    rgba(12, 56, 84, 0.82) 52%,
    rgba(12, 56, 84, 0.4) 78%,
    rgba(12, 56, 84, 0.18) 100%
  );
}
.page-hero .container {
  position: relative;
  z-index: 1;
  min-height: 26rem;
  display: flex;
  align-items: center;
  padding-block: 5rem;
}
.page-hero-content { max-width: 42rem; }
.page-hero-content h1 {
  font-size: clamp(2.5rem, 4.5vw, 4rem);
  margin-bottom: 1.5rem;
}
.page-hero-content h1 .accent { color: var(--seagull); }
.page-hero-content .lead { margin-bottom: 1.25rem; max-width: 38rem; }
.page-hero-content .page-hero-sub {
  color: rgba(255, 255, 255, 0.82);
  max-width: 40rem;
  margin-bottom: 2rem;
}
.page-hero-cta { display: flex; flex-wrap: wrap; align-items: center; gap: 1rem; }
@media (max-width: 991px) {
  .page-hero-photo { background-position: center; }
  .page-hero-photo::after {
    background: linear-gradient(180deg, rgba(9, 42, 63, 0.78), rgba(9, 42, 63, 0.9)),
      linear-gradient(90deg, var(--blue-darker), rgba(12, 56, 84, 0.45));
  }
  .page-hero .container { min-height: 20rem; padding-block: 3.5rem; }
  .page-hero-content { max-width: none; }
}

/* Feature body spacing (paired with shared .feature grid) */
.feature-body h2 { margin-bottom: 1.25rem; }
.feature-body .lead { margin-bottom: 1.5rem; }
.feature-media img { aspect-ratio: 4 / 3; }

/* ==========================================================================
   Selling page
   ========================================================================== */
#selling-hero .page-hero-photo {
  background-image: url("assets/images/selling-hero-candle.jpg");
  background-position: center right;
}

/* Credibility strip (directly under the selling hero) */
.cred-strip {
  background: var(--gray-lightest);
  border-bottom: 1px solid var(--gray-light);
}
.cred-strip .container {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: center;
  gap: 0.9rem 2.5rem;
  padding-block: 1.15rem;
}
.cs-item {
  display: inline-flex;
  align-items: center;
  gap: 0.6rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  color: var(--neutral-darker);
}
.cs-item svg { width: 20px; height: 20px; color: var(--blue); flex: none; }
@media (max-width: 767px) {
  /* On mobile the credibility strip read as an afterthought under the hero, and
     the same accreditations appear (properly, with logos) in the #trust section
     lower down. So we hide the strip on phones and keep it on tablet/desktop,
     where it works as a single horizontal row. */
  .cred-strip { display: none; }
}

/* "What you keep" outcome-factors flow (Section 2, vertical, two-pane) */
.keep-media { position: relative; }
.keep-media::before {
  content: "";
  position: absolute;
  inset: -10% -8%;
  z-index: 0;
  background:
    radial-gradient(55% 40% at 50% 20%, rgba(30, 140, 212, 0.16), transparent 70%),
    radial-gradient(52% 38% at 50% 82%, rgba(113, 193, 233, 0.16), transparent 72%);
  filter: blur(16px);
  animation: keepGlow 9s ease-in-out infinite alternate;
}
@keyframes keepGlow {
  from { transform: translateY(-8px) scale(1); opacity: 0.8; }
  to   { transform: translateY(8px) scale(1.05); opacity: 1; }
}
.factor-flow {
  position: relative;
  z-index: 1;
  max-width: 25rem;
  margin-inline: auto;
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: 0.5rem;
}
.ff-node {
  display: flex;
  align-items: center;
  gap: 0.9rem;
  padding: 1rem 1.15rem;
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-sm);
}
.ff-start { background: #fff; border: 1px solid var(--gray); justify-content: center; }
.ff-end {
  background: linear-gradient(135deg, var(--blue-dark), var(--blue));
  color: #fff;
  box-shadow: var(--shadow-md);
  justify-content: center;
}
.ff-node-icon {
  flex: none;
  width: 46px;
  height: 46px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--blue-lightest);
  color: var(--blue);
}
.ff-end .ff-node-icon { background: rgba(255, 255, 255, 0.16); color: #fff; }
.ff-node-icon svg { width: 22px; height: 22px; }
.ff-node-label {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-large);
  line-height: 1.15;
}
.ff-node-sub { display: block; font-size: var(--text-small); color: var(--neutral-dark); margin-top: 0.15rem; }
.ff-end .ff-node-label { font-size: var(--h6); }
.ff-end .ff-node-sub { color: rgba(255, 255, 255, 0.82); }
.ff-arrow { align-self: center; color: var(--blue-light); line-height: 0; }
.ff-arrow svg { width: 24px; height: 24px; }
.ff-factors {
  padding: 1.1rem 1.15rem 1.25rem;
  border: 1px solid var(--blue-lighter);
  border-radius: var(--radius-card);
  background: var(--blue-lightest);
}
.ff-factors-head {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.6rem;
  margin-bottom: 1rem;
}
.ff-factors-icon { color: var(--blue-dark); line-height: 0; }
.ff-factors-icon svg { width: 22px; height: 22px; }
.ff-cap {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  text-transform: uppercase;
  letter-spacing: 0.06em;
  color: var(--blue-dark);
}
.ff-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.ff-card {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 0.5rem;
  text-align: center;
  background: #fff;
  border: 1px solid var(--gray);
  border-radius: 10px;
  padding: 0.85rem 0.5rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  color: var(--neutral-darker);
}
.ff-ic {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  display: grid;
  place-items: center;
  background: var(--blue-lightest);
  color: var(--blue);
}
.ff-ic svg { width: 20px; height: 20px; }
/* Hover interactions on the flow boxes */
.ff-start,
.ff-end,
.ff-factors,
.ff-card,
.ff-node-icon,
.ff-ic {
  transition: transform 0.35s var(--ease), box-shadow 0.35s var(--ease),
    border-color 0.35s var(--ease), background-color 0.35s var(--ease), color 0.35s var(--ease);
}
.ff-start:hover,
.ff-card:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.ff-end:hover {
  transform: translateY(-4px);
  box-shadow: var(--shadow-lg);
}
.ff-factors:hover {
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.ff-start:hover .ff-node-icon,
.ff-card:hover .ff-ic {
  background: var(--blue);
  color: #fff;
}
.ff-end:hover .ff-node-icon {
  background: #fff;
  color: var(--blue);
}
@media (prefers-reduced-motion: reduce) {
  .keep-media::before { animation: none; }
  .ff-start:hover,
  .ff-end:hover,
  .ff-card:hover { transform: none; }
}
@media (max-width: 991px) {
  .keep-media { margin-bottom: 0.5rem; }
}
#buying-hero .page-hero-photo {
  background-image: url("assets/images/various-businesses.jpg");
  background-position: center;
}

/* Duo cards (two-up, works on light and dark schemes) */
.duo-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 1.75rem;
}
.duo-card {
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  padding: 2.5rem 2.25rem;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.duo-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.duo-icon {
  width: 60px;
  height: 60px;
  border-radius: 16px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  margin-bottom: 1.5rem;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease);
}
.duo-icon svg { width: 30px; height: 30px; }
.duo-card:hover .duo-icon { background: var(--blue); color: var(--white); }
.duo-tag {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 0.5rem;
}
.duo-card h4 { font-size: var(--h5); margin-bottom: 0.85rem; }
.duo-card p { color: var(--neutral-dark); font-size: var(--text-regular); }
.duo-note {
  max-width: 780px;
  margin: 2.5rem auto 0;
  padding: 1.15rem 1.6rem;
  border-left: 5px solid var(--blue);
  border-radius: 12px;
  background: var(--blue-lightest);
  color: var(--blue-darker);
  font-family: "Roboto", sans-serif;
  font-weight: 600;
  font-size: var(--text-medium);
  text-align: left;
  box-shadow: var(--shadow-sm);
}
.duo-note a { color: var(--blue); font-weight: 500; }

/* Duo cards on dark schemes */
.scheme-deepest .duo-card,
.scheme-dark .duo-card {
  background: rgba(255, 255, 255, 0.06);
  border-color: rgba(255, 255, 255, 0.16);
}
.scheme-deepest .duo-card:hover,
.scheme-dark .duo-card:hover {
  background: rgba(255, 255, 255, 0.09);
  border-color: var(--seagull);
}
.scheme-deepest .duo-icon,
.scheme-dark .duo-icon {
  background: rgba(255, 255, 255, 0.1);
  color: var(--seagull);
}
.scheme-deepest .duo-card:hover .duo-icon,
.scheme-dark .duo-card:hover .duo-icon {
  background: var(--seagull);
  color: var(--blue-darkest);
}
.scheme-deepest .duo-tag,
.scheme-dark .duo-tag { color: var(--seagull); }
.scheme-deepest .duo-card p,
.scheme-dark .duo-card p { color: rgba(255, 255, 255, 0.82); }

.duo-grid.is-trio { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 767px) {
  .duo-grid { grid-template-columns: 1fr; }
}
@media (max-width: 991px) {
  .duo-grid.is-trio { grid-template-columns: 1fr; }
}

/* Trust section: seller-mandate checklist + proof (Section 7) */
.mandate-list {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 0.9rem 2.5rem;
  max-width: 58rem;
  margin: 2.75rem auto 0;
}
.mandate-list li {
  display: flex;
  align-items: flex-start;
  gap: 0.7rem;
  font-size: var(--text-regular);
  color: var(--neutral-darker);
}
.mandate-list li svg { flex: none; width: 20px; height: 20px; color: var(--blue); margin-top: 3px; }
.mandate-close {
  text-align: center;
  margin-top: 2rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  color: var(--blue-dark);
}
.proof-panel {
  max-width: 46rem;
  margin: 3.5rem auto 0;
  padding: 2.5rem;
  background: #fff;
  border: 1px solid var(--gray);
  border-radius: var(--radius-card);
  box-shadow: var(--shadow-sm);
  text-align: center;
}
.proof-mark { color: var(--blue-light); display: inline-block; line-height: 0; }
.proof-mark svg { width: 38px; height: 38px; }
.proof-panel blockquote {
  font-family: "Roboto", sans-serif;
  font-size: var(--h6);
  line-height: 1.5;
  color: var(--neutral-darker);
  margin: 0.75rem 0 1.25rem;
}
.proof-author strong { display: block; font-family: "Roboto", sans-serif; font-weight: 500; color: var(--neutral-darkest); }
.proof-author span { display: block; font-size: var(--text-small); color: var(--neutral); }
.proof-senior {
  margin-top: 1.5rem;
  padding-top: 1.5rem;
  border-top: 1px solid var(--gray);
  font-size: var(--text-small);
  color: var(--neutral-dark);
}
.proof-links { margin-top: 1.25rem; display: flex; flex-wrap: wrap; justify-content: center; gap: 1.75rem; }
.proof-links a {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  color: var(--blue-dark);
}
.proof-links a svg { width: 16px; height: 16px; transition: transform 0.25s var(--ease); }
.proof-links a:hover svg { transform: translateX(3px); }
#trust .cred-block { margin-top: 3.5rem; }
@media (max-width: 767px) {
  .mandate-list { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Stats band
   ========================================================================== */
.stats-band .section-head { margin-bottom: 2.5rem; }
.stats-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.stat {
  text-align: center;
  padding: 2rem 1.25rem;
  background: rgba(255, 255, 255, 0.06);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--radius-card);
}
.stat-num {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: var(--h2);
  line-height: 1;
  color: var(--seagull);
  margin-bottom: 0.75rem;
}
.stat-plus { font-size: 0.6em; }
.stat-label {
  display: block;
  font-size: var(--text-regular);
  color: rgba(255, 255, 255, 0.82);
  max-width: 14rem;
  margin-inline: auto;
}
@media (max-width: 991px) {
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 479px) {
  .stats-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Team grid
   ========================================================================== */
.team-grid {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.75rem;
}
.team-card {
  flex: 0 1 calc((100% - 3.5rem) / 3);
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  overflow: hidden;
  display: flex;
  flex-direction: column;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.team-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.team-photo {
  aspect-ratio: 1 / 1;
  overflow: hidden;
  background: var(--gray-light);
}
.team-photo img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center top;
  filter: grayscale(100%);
  transition: filter 0.35s var(--ease), transform 0.4s var(--ease);
}
.team-card:hover .team-photo img { filter: grayscale(0%); transform: scale(1.03); }
.team-body { padding: 1.5rem 1.5rem 1.75rem; }
.team-body h5 { font-size: var(--h6); margin-bottom: 0.15rem; }
.team-role {
  display: block;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 0.85rem;
}
.team-body p { font-size: var(--text-regular); color: var(--neutral-dark); }
@media (max-width: 991px) {
  .team-card { flex-basis: calc((100% - 1.75rem) / 2); }
}
@media (max-width: 567px) {
  .team-card { flex-basis: 100%; }
}

/* ==========================================================================
   Industries we are best at
   ========================================================================== */
.industries {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.industries-intro h2 { margin-bottom: 1.25rem; }
.industries-intro .lead { margin-bottom: 1.25rem; }
.industries-intro p:last-child { color: var(--neutral-dark); }
.industry-list { display: grid; gap: 0.75rem; }
.industry-row {
  display: flex;
  align-items: center;
  gap: 1rem;
  padding: 0.95rem 1.25rem;
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.08);
  border-radius: var(--radius-card);
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  color: var(--neutral-darker);
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.industry-row:hover {
  transform: translateX(4px);
  border-color: var(--blue-light);
  box-shadow: var(--shadow-sm);
}
.industry-icon {
  width: 42px;
  height: 42px;
  border-radius: 10px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  flex-shrink: 0;
  transition: background-color 0.25s var(--ease), color 0.25s var(--ease);
}
.industry-icon svg { width: 22px; height: 22px; }
.industry-row:hover .industry-icon { background: var(--blue); color: var(--white); }
@media (max-width: 991px) {
  .industries { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* ==========================================================================
   Accreditations - four logo cards (Home + About "Why Crossbridge")
   ========================================================================== */
.cred-block { margin-top: 3.5rem; }
.cred-block-label {
  display: block;
  text-align: center;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.12em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 1.75rem;
}
.cred-grid {
  list-style: none;
  margin: 0;
  padding: 0;
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.cred-card {
  position: relative;
  overflow: hidden;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 1.1rem;
  min-height: 190px;
  padding: 1.75rem 1.25rem;
  background: #fff;
  border: 1px solid rgba(6, 10, 12, 0.08);
  border-radius: 16px;
  box-shadow: var(--shadow-sm);
}
/* Hover description panel (Master CBI + CM&AP cards explain the designation) */
.cred-desc {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: 1.15rem;
  background: rgba(12, 56, 84, 0.88);
  -webkit-backdrop-filter: blur(3px);
  backdrop-filter: blur(3px);
  color: #fff;
  font-family: "Roboto", sans-serif;
  font-weight: 400;
  font-size: 1.1rem;
  line-height: 1.45;
  opacity: 0;
  transition: opacity 0.25s var(--ease);
  pointer-events: none;
}
.cred-card:has(.cred-desc) { cursor: help; }
.cred-card:hover .cred-desc,
.cred-card:focus-within .cred-desc { opacity: 1; }
/* Linked cards (IBBA, RECO) - the whole card is clickable via a stretched link */
.cred-card { transition: border-color 0.2s var(--ease), box-shadow 0.2s var(--ease), transform 0.2s var(--ease); }
.cred-card-link {
  position: absolute;
  inset: 0;
  z-index: 2;
  border-radius: inherit;
}
.cred-card:has(.cred-card-link):hover {
  border-color: var(--blue-light);
  box-shadow: var(--shadow-md);
  transform: translateY(-3px);
}
.cred-card img { width: auto; display: block; object-fit: contain; flex-shrink: 0; }
.cred-card.is-badge img { height: 84px; } /* circular badges: Master CBI, CM&AP */
/* Master CBI art only fills ~78% of its frame; scale up to match CM&AP's ring. */
.cred-card.is-badge img[src*="master-cbi"] { height: 108px; }
.cred-card.is-mark img { height: 46px; }  /* wide wordmark: IBBA */
.cred-card.is-mark img[src*="reco"] { height: 80px; } /* RECO bumped +75% */
.cred-cap {
  max-width: 100%;
  font-family: "Roboto", sans-serif;
  font-weight: 700;
  font-size: 1rem;
  line-height: 1.25;
  color: var(--blue-darker);
}
@media (max-width: 991px) {
  .cred-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px) {
  .cred-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Scroll reveal & motion
   ========================================================================== */
/* Reveal is driven by a keyframe ANIMATION (not a transition) so it never
   collides with an element's own `transition` used for hover states. This
   makes staggered reveals work on any element regardless of CSS specificity
   or source order. The resting state is a plain opacity:1 that leaves
   `transform` free for hover effects. */
.reveal { opacity: 0; }
.reveal.is-visible {
  opacity: 1;
  animation: reveal-up 0.8s var(--ease) var(--reveal-delay, 0ms) backwards;
}

/* Directional & stylistic variants (add alongside .reveal) */
.reveal.reveal-left.is-visible  { animation-name: reveal-left; }
.reveal.reveal-right.is-visible { animation-name: reveal-right; }
.reveal.reveal-scale.is-visible { animation-name: reveal-scale; }
.reveal.reveal-blur.is-visible  { animation-name: reveal-blur; }
.reveal.reveal-fade.is-visible  { animation-name: reveal-fade; }

@keyframes reveal-up {
  from { opacity: 0; transform: translateY(28px); }
  to   { opacity: 1; transform: none; }
}
@keyframes reveal-left {
  from { opacity: 0; transform: translateX(-40px); }
  to   { opacity: 1; transform: none; }
}
@keyframes reveal-right {
  from { opacity: 0; transform: translateX(40px); }
  to   { opacity: 1; transform: none; }
}
@keyframes reveal-scale {
  from { opacity: 0; transform: scale(0.94); }
  to   { opacity: 1; transform: none; }
}
@keyframes reveal-blur {
  from { opacity: 0; filter: blur(14px); transform: translateY(20px); }
  to   { opacity: 1; filter: none; transform: none; }
}
@keyframes reveal-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}

/* Image wipe reveal (bottom-up clip) */
.reveal-img { opacity: 0; }
.reveal-img.is-visible {
  opacity: 1;
  animation: reveal-wipe 0.95s var(--ease) var(--reveal-delay, 0ms) backwards;
}
@keyframes reveal-wipe {
  from { opacity: 0; clip-path: inset(0 0 100% 0); }
  to   { opacity: 1; clip-path: inset(0 0 0 0); }
}

/* Hero photo: slow zoom-in on load + scroll parallax (transform driven in JS) */
.hero-photo {
  opacity: 0;
  transform: scale(1.06);
  transition: opacity 1.3s var(--ease);
  will-change: transform, opacity;
}
.hero-photo.is-in { opacity: 1; }

@media (prefers-reduced-motion: reduce) {
  * { scroll-behavior: auto !important; }
  .reveal,
  .reveal-img {
    opacity: 1 !important;
    animation: none !important;
  }
  .hero-photo {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .btn:hover { transform: none; }
}

/* ==========================================================================
   Commercial Real Estate page
   ========================================================================== */
#cre-hero .page-hero-photo {
  background-image: url("assets/images/cbb-sign-for-sale.jpg");
  background-position: center right;
}

/* ==========================================================================
   FAQ page
   ========================================================================== */
#faq-hero .page-hero-photo {
  background-image: url("assets/images/home-hero-header-section-3.jpg");
  background-position: center right;
}

/* "Most common" tag on an option card */
.opt-tag {
  display: inline-block;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  color: var(--blue-dark);
  background: var(--blue-lightest);
  border-radius: var(--radius-button);
  padding: 0.3rem 0.85rem;
  margin-bottom: 0.85rem;
}

/* Why Crossbridge: intro + stacked reasons (dark scheme) */
.why-split {
  display: grid;
  grid-template-columns: 1fr 1.1fr;
  gap: 4rem;
  align-items: start;
}
.why-intro h2 { margin-bottom: 1.25rem; }
.why-intro .lead { margin-bottom: 2rem; }
.why-reasons { display: grid; gap: 1.75rem; }
.why-item { display: flex; gap: 1.1rem; align-items: flex-start; }
.why-icon {
  flex-shrink: 0;
  width: 52px;
  height: 52px;
  border-radius: 14px;
  background: rgba(255, 255, 255, 0.1);
  color: var(--seagull);
  display: grid;
  place-items: center;
}
.why-icon svg { width: 26px; height: 26px; }
.why-item h6 { margin-bottom: 0.35rem; color: var(--white); }
.why-item p { color: rgba(255, 255, 255, 0.82); font-size: var(--text-regular); }
@media (max-width: 991px) {
  .why-split { grid-template-columns: 1fr; gap: 2.5rem; }
}

/* Value-added services: two-column check-list */
.value-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.5rem 3rem;
  max-width: none;
}
@media (max-width: 767px) {
  .value-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   Accordion (reusable: CRE FAQ, FAQ page, Sale Ready)
   ========================================================================== */
.accordion {
  max-width: 52rem;
  margin-inline: auto;
  display: grid;
  gap: 1rem;
}
.acc-item {
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  overflow: hidden;
  transition: box-shadow 0.25s var(--ease), border-color 0.25s var(--ease);
}
.acc-item:hover { border-color: var(--blue-light); }
.acc-item[open] { border-color: var(--blue-light); box-shadow: var(--shadow-md); }
.acc-item > summary {
  list-style: none;
  cursor: pointer;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  padding: 1.35rem 1.5rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-large);
  line-height: 1.3;
  color: var(--neutral-darker);
}
.acc-item > summary::-webkit-details-marker { display: none; }
.acc-item > summary:focus-visible {
  outline: 2px solid var(--blue);
  outline-offset: -2px;
}
.acc-ico {
  flex-shrink: 0;
  width: 28px;
  height: 28px;
  color: var(--blue);
  transition: transform 0.3s var(--ease);
}
.acc-ico svg { width: 100%; height: 100%; }
.acc-item[open] .acc-ico { transform: rotate(45deg); }
.acc-body {
  padding: 0 1.5rem 1.4rem;
  color: var(--neutral-dark);
}
.acc-body p { font-size: var(--text-regular); }
.acc-body p + p { margin-top: 0.85rem; }
.acc-body a {
  color: var(--blue-dark);
  font-weight: 500;
  text-decoration: underline;
  text-underline-offset: 2px;
}
.acc-body a:hover { color: var(--blue); }
.acc-body ul {
  margin: 0.85rem 0 0;
  padding-left: 1.2rem;
  display: grid;
  gap: 0.55rem;
  font-size: var(--text-regular);
}
.acc-body li { line-height: 1.55; }
.acc-body li::marker { color: var(--blue); }
.acc-body strong { color: var(--neutral-darker); }
@media (prefers-reduced-motion: reduce) {
  .acc-ico { transition: none; }
}

/* ==========================================================================
   Engagements - listing cards + status chips (Businesses & CRE for sale)
   ========================================================================== */
:root {
  /* Status accents (semantic only; kept off the brand palette on purpose) */
  --status-soon-green: #2e7d32; /* coming soon - green */
  --status-sold-red: #c0392b;   /* sold - red, attention-grabbing */
}

/* Trust line under the engagements hero */
.trust-line {
  margin-top: 1.75rem;
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.65rem 1.1rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  color: rgba(255, 255, 255, 0.95);
}
.trust-line .tl-item { display: inline-flex; align-items: center; gap: 0.5rem; }
.trust-line .tl-item svg { width: 20px; height: 20px; color: var(--seagull); }
.trust-line .dot { width: 5px; height: 5px; border-radius: 50%; background: rgba(255, 255, 255, 0.4); }

/* Listing grid + cards */
.listing-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 1.5rem;
}
@media (max-width: 991px) { .listing-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 639px) { .listing-grid { grid-template-columns: 1fr; } }

.listing-card {
  display: flex;
  flex-direction: column;
  background: var(--white);
  border: 1px solid rgba(6, 10, 12, 0.1);
  border-radius: var(--radius-card);
  overflow: hidden;
  color: inherit;
  transition: transform 0.25s var(--ease), box-shadow 0.25s var(--ease),
    border-color 0.25s var(--ease);
}
.listing-card:hover {
  transform: translateY(-5px);
  box-shadow: var(--shadow-md);
  border-color: var(--blue-light);
}
.listing-media {
  position: relative;
  aspect-ratio: 16 / 10;
  overflow: hidden;
  background: var(--gray-light);
}
.listing-media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform 0.4s var(--ease);
}
.listing-card:hover .listing-media img { transform: scale(1.04); }

/* Status chip */
.status-chip {
  position: absolute;
  top: 0.9rem;
  left: 0.9rem;
  z-index: 1;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  padding: 0.4rem 0.8rem;
  border-radius: var(--radius-button);
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.02em;
  line-height: 1;
  background: var(--blue);
  color: var(--white);
  box-shadow: 0 4px 12px -4px rgba(6, 10, 12, 0.4);
}
.status-chip::before {
  content: "";
  width: 7px;
  height: 7px;
  border-radius: 50%;
  background: currentColor;
}
.status-chip.is-active { background: var(--blue); color: var(--white); }
.status-chip.is-soon { background: var(--status-soon-green); color: var(--white); }
.status-chip.is-sold { background: var(--status-sold-red); color: var(--white); font-weight: 700; }

/* Card body */
.listing-body {
  display: flex;
  flex-direction: column;
  flex: 1;
  padding: 1.6rem 1.5rem 1.5rem;
}
.listing-ref {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-small);
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--blue);
  margin-bottom: 0.5rem;
}
.listing-card h3 {
  font-size: var(--h6);
  line-height: 1.25;
  margin-bottom: 0.5rem;
}
.listing-loc {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: var(--text-regular);
  color: var(--neutral-dark);
  margin-bottom: 1.1rem;
}
.listing-loc svg { width: 16px; height: 16px; color: var(--neutral); flex-shrink: 0; }

/* Fact rows (shared by card + detail page) */
.listing-facts { display: grid; margin-bottom: 1.1rem; }
.listing-facts > div {
  display: flex;
  justify-content: space-between;
  align-items: baseline;
  gap: 1rem;
  padding: 0.7rem 0;
  border-bottom: 1px solid rgba(6, 10, 12, 0.08);
}
.listing-facts > div:first-child { border-top: 1px solid rgba(6, 10, 12, 0.08); }
.listing-facts dt {
  font-size: var(--text-regular);
  color: var(--neutral-dark);
}
.listing-facts dd {
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-medium);
  color: var(--neutral-darkest);
  text-align: right;
}
.listing-blurb {
  font-size: var(--text-regular);
  color: var(--neutral-dark);
  margin-bottom: 1.25rem;
  display: -webkit-box;
  -webkit-line-clamp: 4;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.listing-more {
  margin-top: auto;
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-family: "Roboto", sans-serif;
  font-weight: 500;
  font-size: var(--text-regular);
  color: var(--blue);
}
.listing-more svg { width: 18px; height: 18px; transition: transform 0.2s var(--ease); }
.listing-card:hover .listing-more { color: var(--blue-dark); }
.listing-card:hover .listing-more svg { transform: translateX(3px); }

/* Centered note under a listing section (off-market / private) */
.listing-note {
  text-align: center;
  max-width: 48rem;
  margin: 2.5rem auto 0;
  color: var(--neutral-dark);
  font-size: var(--text-regular);
}
.listing-note a { color: var(--blue); font-weight: 500; }

/* Status values in the fact table: coloured + bold to match the chip */
.listing-facts dd.fact-sold { color: var(--status-sold-red); font-weight: 700; }
.listing-facts dd.fact-soon { color: var(--status-soon-green); font-weight: 700; }

/* Show a listing blurb in full (used when a card has no detail page to read on) */
.listing-blurb.full { -webkit-line-clamp: unset; display: block; overflow: visible; }

/* Two-up centered grid (when only a couple of listings exist) */
.listing-grid.cols-2 {
  grid-template-columns: repeat(2, 1fr);
  max-width: 52rem;
  margin-inline: auto;
}
@media (max-width: 639px) { .listing-grid.cols-2 { grid-template-columns: 1fr; } }

/* Empty state (a section with no current listings) */
.listing-empty {
  max-width: 46rem;
  margin-inline: auto;
  text-align: center;
  background: var(--white);
  border: 1px dashed var(--gray-dark);
  border-radius: var(--radius-card);
  padding: 3rem 2rem;
}
.listing-empty .le-icon {
  width: 64px;
  height: 64px;
  border-radius: 16px;
  background: var(--blue-lightest);
  color: var(--blue);
  display: grid;
  place-items: center;
  margin: 0 auto 1.25rem;
}
.listing-empty .le-icon svg { width: 30px; height: 30px; }
.listing-empty h3 { font-size: var(--h5); margin-bottom: 0.75rem; }
.listing-empty p {
  color: var(--neutral-dark);
  font-size: var(--text-regular);
  max-width: 34rem;
  margin: 0 auto 1.75rem;
}
.listing-empty .le-cta { display: flex; flex-wrap: wrap; gap: 1rem; justify-content: center; }

/* ==========================================================================
   Listing detail page
   ========================================================================== */
.crumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.5rem;
  font-size: var(--text-small);
  color: var(--neutral);
  margin-bottom: 2rem;
}
.crumbs a { color: var(--neutral-dark); }
.crumbs a:hover { color: var(--blue); }
.crumbs .sep { color: var(--neutral-light); }
.crumbs span[aria-current] { color: var(--neutral-darker); }

.listing-detail {
  display: grid;
  grid-template-columns: 1.05fr 1fr;
  gap: 3.5rem;
  align-items: start;
}
.ld-gallery img.ld-main {
  width: 100%;
  aspect-ratio: 5 / 4;
  object-fit: cover;
  border-radius: 16px;
  box-shadow: var(--shadow-md);
}
.ld-caption {
  margin-top: 0.85rem;
  font-size: var(--text-small);
  color: var(--neutral);
  text-align: center;
}
.ld-info h1 { font-size: var(--h3); margin: 0.75rem 0 0.75rem; }
.ld-info .listing-ref { margin-bottom: 0; }
.ld-info .listing-loc { margin-bottom: 1.5rem; }
.ld-info .listing-facts dd { font-size: var(--text-large); }
.ld-info .listing-facts { margin: 1.5rem 0; }
.ld-lead { font-size: var(--text-medium); color: var(--neutral-dark); margin-bottom: 1.75rem; }
.ld-cta { display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1.5rem; }
.ld-nda {
  display: flex;
  gap: 0.75rem;
  align-items: flex-start;
  background: var(--blue-lightest);
  border-radius: var(--radius-card);
  padding: 1rem 1.25rem;
  font-size: var(--text-regular);
  color: var(--neutral-darker);
}
.ld-nda svg { width: 22px; height: 22px; color: var(--blue); flex-shrink: 0; margin-top: 2px; }
.ld-status-row { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.ld-status-row .status-chip { position: static; box-shadow: none; }
@media (max-width: 991px) {
  .listing-detail { grid-template-columns: 1fr; gap: 2.5rem; }
}
