/*
 * Bill Boehm interior-page redesign — v1.3.1
 * Cool soft-white and mist fields, page-specific hero instruments, restrained
 * gold punctuation, theme-proof controls, and one geometry source for motion.
 */

:root {
  --bb-ivory: #f3f6f7;
  --bb-white: #fcfbf8;
  --bb-charcoal: #29343b;
  --bb-slate: #45545f;
  --bb-indigo: #4d5871;
  --bb-indigo-deep: #3f495f;
  --bb-smoke: #667984;
  --bb-mist: #b8c8d2;
  --bb-mist-pale: #dce6ea;
  --bb-gold: #d7a33d;
  --bb-gold-dark: #a9751c;
  --bb-linen: #e8eff2;
  --bb-muted: #5e707c;
  --bb-rule: rgba(92, 116, 130, 0.26);
  --bb-shadow: 0 24px 64px rgba(41, 52, 59, 0.14);
  --bb-shadow-soft: 0 16px 42px rgba(41, 52, 59, 0.1);
  --bb-hero-height: clamp(570px, calc(100svh - var(--bb-header)), 680px);
}

body.bill-site {
  background: var(--bb-ivory);
  color: var(--bb-charcoal);
}

body.bill-site ::selection {
  background: var(--bb-mist-pale);
  color: var(--bb-charcoal);
}

.bb-site-header {
  background: rgba(252, 251, 248, 0.98);
  border-bottom-color: rgba(102, 121, 132, 0.24);
}

.bb-header-action,
body.bill-site .bb-button {
  border: 1px solid var(--bb-indigo);
  background: var(--bb-indigo);
  color: var(--bb-white);
  box-shadow: none;
}

/* The base header link selector is intentionally stronger than a bare class.
 * Match that specificity so visited-link rules can never darken the CTA. */
.bb-site-header .bb-header-action,
.bb-site-header .bb-header-action:visited {
  color: var(--bb-white);
}

.bb-header-action:hover,
body.bill-site .bb-button:hover {
  border-color: var(--bb-indigo-deep);
  background: var(--bb-indigo-deep);
  color: var(--bb-white);
  box-shadow: 0 12px 30px rgba(63, 73, 95, 0.18);
}

.bb-site-header .bb-header-action:hover,
.bb-site-header .bb-header-action:focus-visible {
  color: var(--bb-white);
}

body.bill-site .bb-button--secondary {
  border-color: rgba(77, 88, 113, 0.72);
  background: transparent;
  color: var(--bb-indigo);
}

body.bill-site .bb-button--secondary:hover {
  border-color: var(--bb-indigo);
  background: rgba(184, 200, 210, 0.22);
  color: var(--bb-indigo-deep);
  box-shadow: none;
}

body.bill-site .bb-button--light {
  border-color: rgba(252, 251, 248, 0.62);
  background: transparent;
  color: var(--bb-white);
}

body.bill-site .bb-button--light:hover {
  border-color: var(--bb-white);
  background: rgba(252, 251, 248, 0.1);
  color: var(--bb-white);
  box-shadow: none;
}

/* Desktop resources menu keeps the primary navigation focused. */
.bb-nav-resources {
  position: relative;
}

.bb-nav-resources summary {
  position: relative;
  display: inline-flex;
  min-height: 44px;
  align-items: center;
  gap: 7px;
  padding: 0 2px;
  color: var(--bb-slate);
  font-size: 13px;
  font-weight: 750;
  list-style: none;
  cursor: pointer;
}

.bb-nav-resources summary::-webkit-details-marker { display: none; }

.bb-nav-resources summary::after {
  content: "";
  width: 6px;
  height: 6px;
  margin-top: -3px;
  border-right: 1.5px solid currentColor;
  border-bottom: 1.5px solid currentColor;
  transform: rotate(45deg);
  transition: transform 0.18s ease-out;
}

.bb-nav-resources[open] summary::after { transform: translateY(3px) rotate(225deg); }

.bb-nav-resources summary::before {
  content: "";
  position: absolute;
  left: 0;
  right: 0;
  bottom: 5px;
  height: 2px;
  background: var(--bb-indigo);
  transform: scaleX(0);
  transform-origin: left center;
  transition: transform 0.2s ease-out;
}

.bb-nav-resources:hover summary::before,
.bb-nav-resources[open] summary::before,
.bb-nav-resources.is-current summary::before { transform: scaleX(1); }

.bb-nav-resources-menu {
  position: absolute;
  top: calc(100% + 2px);
  left: 50%;
  z-index: 30;
  display: grid;
  width: 210px;
  padding: 10px;
  border: 1px solid var(--bb-rule);
  border-radius: 14px;
  background: var(--bb-white);
  box-shadow: var(--bb-shadow-soft);
  transform: translateX(-50%);
}

.bb-nav .bb-nav-resources-menu a {
  min-height: 42px;
  padding: 10px 12px;
  border-radius: 9px;
}

.bb-nav .bb-nav-resources-menu a::after { display: none; }
.bb-nav .bb-nav-resources-menu a:hover,
.bb-nav .bb-nav-resources-menu a[aria-current="page"] { background: var(--bb-ivory); color: var(--bb-indigo-deep); }

/* Shared hero: shorter, more useful, and stable on short laptops. */
.bb-real-portrait {
  -webkit-mask-image: url('./bill-real-portrait-mask.png');
  mask-image: url('./bill-real-portrait-mask.png');
  -webkit-mask-size: 100% 100%;
  mask-size: 100% 100%;
  -webkit-mask-repeat: no-repeat;
  mask-repeat: no-repeat;
}
.bb-page-about-bill .bb-page-hero--profile .bb-hero-grid { padding-bottom: 0; }
.bb-page-about-bill .bb-page-hero--profile .bb-hero-copy { padding-bottom: 125px; }
.bb-page-about-bill .bb-page-hero--profile .bb-display { max-width: 16ch; }
.bb-page-about-bill .bb-page-hero--profile .bb-hero-visual { align-self: end; height: 620px; z-index: 2; }
.bb-page-about-bill .bb-page-hero--profile .bb-real-portrait {
  width: auto; max-width: none; height: 100%; bottom: 0; right: 0; object-fit: fill;
}
.bb-debt-feature .bb-button { margin-top: 24px; }
.bb-debt-feature .bb-body-copy { margin-top: 20px; }
.bb-milestone { background: var(--bb-ivory); }
.bb-milestone-layout { display: grid; grid-template-columns: minmax(0,1.1fr) minmax(280px,.9fr); gap: 28px clamp(36px,7vw,96px); align-items: start; }
.bb-milestone-heading, .bb-milestone-next { grid-column: 1; }
.bb-milestone-watch { grid-column: 2; grid-row: 1 / span 2; }
.bb-milestone .bb-display { max-width: 14ch; }
.bb-milestone-back { color: var(--bb-indigo); text-decoration: underline; text-underline-offset: 4px; min-height: 44px; display: inline-flex; align-items: center; }
.bb-milestone .bb-hero-lead { margin-top: 0; }
.bb-milestone .bb-subheading { margin-top: 12px; font-size: 32px; }
.bb-milestone .bb-actions { margin-top: 8px; }
.bb-milestone-watch { max-width: 430px; width: 100%; margin-inline: auto; }
.bb-milestone-watch iframe { display: block; width: 100%; height: auto; aspect-ratio: 4/5; border: 0; border-radius: 14px; background: var(--bb-charcoal); }
.bb-milestone-watch p, .bb-milestone-note { color: var(--bb-muted); font-size: 13px; line-height: 1.65; margin: 16px 0 0; }
@media(max-width: 680px) {
  .bb-page-about-bill .bb-page-hero--profile .bb-hero-copy { padding-bottom: 0; }
  .bb-page-about-bill .bb-page-hero--profile .bb-hero-visual { height: 430px; min-height: 0; }
  .bb-page-about-bill .bb-page-hero--profile .bb-real-portrait { right: 50%; transform: translateX(50%); }
  .bb-milestone-layout { grid-template-columns: 1fr; }
  .bb-milestone-watch { max-width: 350px; grid-column: 1; grid-row: auto; }
}
.bb-page-hero {
  min-height: var(--bb-hero-height);
  background: var(--bb-ivory);
  border-bottom-color: rgba(102, 121, 132, 0.28);
}

.bb-page-hero--coast {
  background-image:
    linear-gradient(90deg, rgba(247, 249, 249, 0.98) 0%, rgba(242, 246, 247, 0.91) 45%, rgba(232, 239, 242, 0.54) 100%),
    url("./coastline-background.png");
}

.bb-page-hero--slate {
  background: #43515d;
  color: var(--bb-white);
}

.bb-page-hero--mist {
  background: var(--bb-mist-pale);
  color: var(--bb-charcoal);
}

.bb-hero-grid {
  min-height: var(--bb-hero-height);
  grid-template-columns: minmax(0, 1.05fr) minmax(340px, 0.95fr);
  gap: clamp(42px, 7vw, 104px);
  padding: clamp(54px, 7vw, 88px) 0 clamp(104px, 12vw, 132px);
}

.bb-display {
  max-width: 13ch;
  font-size: clamp(52px, 5.45vw, 82px);
  line-height: 0.98;
  letter-spacing: -0.035em;
}

.bb-heading {
  font-size: clamp(42px, 4.4vw, 66px);
  line-height: 1.02;
}

.bb-subheading {
  font-size: clamp(29px, 3.2vw, 46px);
  line-height: 1.08;
}

.bb-hero-lead {
  margin-top: 24px;
  color: var(--bb-slate);
  font-size: clamp(16px, 1.3vw, 19px);
  line-height: 1.68;
}

.bb-page-hero--slate .bb-hero-lead { color: #e7edf0; }
.bb-page-hero--slate .bb-display em,
.bb-page-hero--slate .bb-heading em,
.bb-page-hero--slate .bb-subheading em { color: #d9e4e9; }

.bb-hero-copy { max-width: 680px; }
.bb-actions { margin-top: 28px; }
.bb-hero-visual { min-height: 410px; }

.bb-hero-portrait {
  right: 0;
  bottom: -3px;
  width: min(100%, 520px);
  height: calc(100% + 8px);
}

.bb-hero-photo {
  max-height: 460px;
  border-radius: 160px 160px 14px 14px;
  box-shadow: var(--bb-shadow);
}

/* Exact responsive route: JavaScript positions the marker from this path. */
.bb-house-route {
  left: 0;
  right: 0;
  bottom: -1px;
  width: 100%;
  height: 122px;
  overflow: visible;
}

.bb-route-line,
.bb-route-chimney {
  fill: none;
  stroke: var(--bb-mist);
  stroke-width: 2;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
  opacity: 1;
}

.bb-page-hero--slate .bb-route-line,
.bb-page-hero--slate .bb-route-chimney { stroke: #aebfca; }

.bb-route-dot {
  position: absolute;
  left: 65.455%;
  top: 8%;
  width: 13px;
  height: 13px;
  border: 2px solid rgba(252, 251, 248, 0.92);
  background: var(--bb-gold);
  box-shadow: 0 5px 14px rgba(169, 117, 28, 0.28);
  offset-path: none;
  animation: none;
  transform: translate3d(0, 0, 0) translate(-50%, -50%);
  will-change: transform;
}

/* Page-specific hero instruments. */
.bb-hero-aside {
  align-self: center;
  min-width: 0;
}

.bb-hero-map {
  display: grid;
  gap: 1px;
  overflow: hidden;
  border: 1px solid rgba(220, 230, 234, 0.42);
  border-radius: 16px;
  background: rgba(220, 230, 234, 0.22);
}

.bb-hero-map > a,
.bb-hero-map > span {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  min-height: 62px;
  padding: 14px 18px;
  background: rgba(67, 81, 93, 0.9);
  color: var(--bb-white);
  font-weight: 700;
  text-decoration: none;
}

.bb-hero-map a:hover { background: rgba(220, 230, 234, 0.12); }
.bb-hero-map strong { color: #dce6ea; font-size: 12px; letter-spacing: 0.08em; }

.bb-hero-instrument {
  padding: clamp(28px, 4vw, 44px);
  border-radius: 16px;
  background: var(--bb-indigo);
  color: var(--bb-white);
  box-shadow: var(--bb-shadow-soft);
}

.bb-hero-instrument strong {
  display: block;
  font-family: "Cormorant Garamond", serif;
  font-size: clamp(42px, 5vw, 68px);
  font-weight: 500;
  line-height: 0.95;
  letter-spacing: -0.03em;
}

.bb-hero-instrument p { margin: 16px 0 0; color: #dce6ea; }
.bb-hero-instrument ul { display: grid; gap: 10px; margin: 24px 0 0; padding: 18px 0 0; border-top: 1px solid rgba(220, 230, 234, 0.3); list-style: none; }
.bb-hero-instrument li { display: flex; justify-content: space-between; gap: 18px; color: #eef3f5; font-size: 14px; }

.bb-hero-proof-note {
  position: absolute;
  right: 18px;
  bottom: 18px;
  max-width: 260px;
  padding: 14px 16px;
  border-radius: 12px;
  background: rgba(41, 52, 59, 0.9);
  color: var(--bb-white);
  font-size: 13px;
  line-height: 1.5;
}

.bb-hero-topic-index {
  min-width: 0;
}

.bb-hero-topic-title {
  margin: 0 0 16px;
  color: #dce6ea;
  font: 800 13px/1.4 "Manrope", sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.bb-hero-topic-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.bb-hero-topic-index a {
  display: block;
  min-height: 72px;
  padding: 14px;
  border: 1px solid rgba(220, 230, 234, 0.38);
  border-radius: 12px;
  background: rgba(220, 230, 234, 0.08);
  color: var(--bb-white);
  font-size: 14px;
  font-weight: 750;
  text-decoration: none;
}

.bb-hero-topic-index a span:last-child {
  display: block;
  margin-top: 5px;
  color: #c5d2d9;
  font-size: 11px;
  font-weight: 650;
}

.bb-hero-topic-index a:hover { background: rgba(220, 230, 234, 0.16); }

.bb-hero-media-shelf {
  position: relative;
  display: grid;
  grid-template-columns: 1.35fr 0.65fr;
  gap: 12px;
}

.bb-hero-media-shelf img {
  width: 100%;
  height: 100%;
  min-height: 300px;
  object-fit: cover;
  border-radius: 16px;
}

.bb-hero-media-shelf-side { display: grid; gap: 12px; }
.bb-hero-media-shelf-side img { min-height: 0; }

.bb-library-status {
  position: absolute;
  left: 18px;
  bottom: 18px;
  padding: 9px 12px;
  border-radius: 999px;
  background: var(--bb-charcoal);
  color: var(--bb-white);
  font-size: 12px;
  font-weight: 800;
}

.bb-hero-contact-panel {
  display: grid;
  overflow: hidden;
  border-radius: 16px;
  background: var(--bb-white);
  box-shadow: var(--bb-shadow-soft);
}

.bb-hero-contact-primary {
  padding: 28px;
  background: var(--bb-indigo);
  color: var(--bb-white);
}

.bb-hero-contact-primary h2 { margin: 0; font-family: "Cormorant Garamond", serif; font-size: 38px; line-height: 1; font-weight: 500; }
.bb-hero-contact-primary p { margin: 13px 0 22px; color: #dce6ea; }
.bb-hero-contact-primary .bb-button { border-color: var(--bb-white); background: var(--bb-white); color: var(--bb-charcoal); }
.bb-hero-contact-links { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); }
.bb-hero-contact-links a { min-height: 70px; display: grid; align-content: center; padding: 14px 18px; border-right: 1px solid var(--bb-rule); color: var(--bb-indigo); font-weight: 800; text-decoration: none; }
.bb-hero-contact-links a:last-child { border-right: 0; }
.bb-hero-contact-links small { display: block; margin-top: 3px; color: var(--bb-muted); font-size: 11px; font-weight: 600; }

/* Page rhythm and surfaces. */
.bb-section { padding: clamp(70px, 7.5vw, 108px) 0; }
.bb-section--ivory { background: var(--bb-ivory); }
.bb-section--linen { background: var(--bb-linen); }
.bb-section--mist { background: var(--bb-mist-pale); }
.bb-section--slate { background: #43515d; }

.bb-section-intro {
  margin-bottom: clamp(38px, 5vw, 64px);
}

.bb-final-cta {
  padding: clamp(72px, 8vw, 104px) 0;
  background: var(--bb-indigo-deep);
}

.bb-final-cta .bb-heading { max-width: 16ch; font-size: clamp(40px, 4.3vw, 62px); }
.bb-final-cta .bb-heading em { color: #dce6ea; }
.bb-final-cta p { color: #e7edf0; }
.bb-final-cta .bb-button { border-color: var(--bb-white); background: var(--bb-white); color: var(--bb-charcoal); }
.bb-final-cta .bb-button:hover { border-color: #e7edf0; background: #e7edf0; color: var(--bb-charcoal); }

.bb-page-about-bill .bb-section[aria-label="Bill Boehm credentials"] {
  z-index: 3;
  padding: 0;
  background: transparent;
}

.bb-page-about-bill .bb-proof-band {
  position: relative;
  margin-top: -32px;
  overflow: hidden;
  border: 1px solid rgba(102, 121, 132, 0.24);
  border-radius: 16px;
  background: var(--bb-white);
  box-shadow: var(--bb-shadow-soft);
}

.bb-page-about-bill .bb-section[aria-labelledby="meet-bill-title"] { padding-top: clamp(96px, 10vw, 132px); }
.bb-page-about-bill .bb-media--tall { max-height: 620px; }

.bb-program-explorer {
  overflow: hidden;
  border: 1px solid rgba(102, 121, 132, 0.24);
  border-radius: 16px;
  background: var(--bb-white);
  box-shadow: var(--bb-shadow-soft);
}

body.bill-site button.bb-program-tab,
body.bill-site button.bb-program-tab:is(:hover, :focus, :active) {
  appearance: none;
  margin: 0;
  border-radius: 0;
  background: transparent;
  background-image: none;
  box-shadow: none;
  color: var(--bb-slate);
  font: 750 15px/1.4 "Manrope", sans-serif;
  letter-spacing: -0.01em;
  text-align: left;
  text-transform: none;
  white-space: normal;
  transform: none;
}

body.bill-site button.bb-program-tab:hover { background: rgba(184, 200, 210, 0.18); color: var(--bb-indigo); }
body.bill-site button.bb-program-tab[aria-selected="true"] { background: var(--bb-mist-pale); color: var(--bb-indigo-deep); }

.bb-program-tags span { background: var(--bb-white); }

.bb-page-mortgage-calculator .bb-page-hero { --bb-hero-height: clamp(520px, calc(100svh - var(--bb-header)), 610px); }
.bb-page-mortgage-calculator #payment-calculator { padding-top: clamp(54px, 6vw, 82px); }
.bb-calculator { border-radius: 16px; box-shadow: var(--bb-shadow); }
.bb-calculator-results { background: var(--bb-indigo-deep); }
.bb-field input[aria-invalid="true"],
.bb-field select[aria-invalid="true"] { border-color: #a74b43; background: #fff9f8; }
.bb-field-error { margin: 0; color: #8b3933; font-size: 12px; font-weight: 750; }
.bb-calculator[data-has-error="true"] .bb-result-total { font-size: clamp(34px, 4vw, 48px); }
.bb-calculator-reset { justify-self: start; margin-top: 22px; }

.bb-page-reviews #client-reviews {
  padding-top: clamp(58px, 6vw, 84px);
  background: var(--bb-white);
}
.bb-review-stage {
  grid-template-columns: minmax(0, 1fr);
  align-items: start;
  gap: clamp(38px, 5vw, 58px);
}
.bb-review-stage > .bb-copy-stack { max-width: 760px; }
.bb-review-frame {
  position: relative;
  display: block;
  width: 100%;
  max-width: 1180px;
  min-height: 900px;
  height: auto;
  margin-inline: auto;
  overflow: hidden;
  border-radius: 0;
  background: var(--bb-white);
  box-shadow: none;
}
.bb-review-iframe {
  display: block;
  width: 100%;
  max-width: none;
  height: 900px;
  margin: 0;
  border: 0;
  border-radius: 0;
  background: var(--bb-white);
  box-shadow: none;
}
.bb-review-frame::before { content: "Loading Bill’s live Google reviews…"; position: absolute; z-index: 2; inset: 0; display: grid; place-items: center; padding: 24px; background: var(--bb-white); color: var(--bb-muted); font-size: 14px; text-align: center; transition: opacity 180ms ease-out, visibility 180ms ease-out; }
.bb-review-frame.is-loaded { min-height: 0; }
.bb-review-frame.is-loaded::before { opacity: 0; visibility: hidden; }
.bb-review-iframe { position: relative; z-index: 1; }
.bb-review-links a { display: inline-flex; min-height: 44px; align-items: center; }

/* FAQ: root-first search, grouped reading column, and a complete theme reset. */
.bb-page-faq .bb-page-hero { --bb-hero-height: clamp(500px, calc(100svh - var(--bb-header)), 590px); }
.bb-faq-section { background: var(--bb-ivory); }
.bb-faq-hub { width: min(100%, 1160px); margin-inline: auto; }
.bb-faq-intro { max-width: 760px; margin-bottom: clamp(34px, 5vw, 56px); }

.bb-faq-search-panel {
  display: block;
  margin-bottom: clamp(36px, 5vw, 54px);
  padding: 20px;
  border-radius: 14px;
  background: var(--bb-mist-pale);
}

.bb-faq-search-label,
.bb-faq-nav__title {
  display: block;
  margin: 0 0 9px;
  color: var(--bb-charcoal);
  font: 800 13px/1.4 "Manrope", sans-serif;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}

.bb-faq-search-row { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px; align-items: center; }

body.bill-site .bb-faq-section input.bb-faq-search[type="search"] {
  appearance: none;
  width: 100%;
  max-width: none;
  min-width: 0;
  min-height: 52px;
  margin: 0;
  padding: 13px 16px;
  border: 1px solid rgba(102, 121, 132, 0.54);
  border-radius: 9px;
  background: var(--bb-white);
  background-image: none;
  box-shadow: none;
  color: var(--bb-charcoal);
  font: 500 16px/1.5 "Manrope", sans-serif;
  letter-spacing: -0.01em;
}

body.bill-site .bb-faq-section input.bb-faq-search[type="search"]:focus {
  border-color: var(--bb-indigo);
  outline: 3px solid rgba(77, 88, 113, 0.2);
  outline-offset: 1px;
}

body.bill-site .bb-faq-section input.bb-faq-search[type="search"]::-webkit-search-cancel-button { appearance: none; }

body.bill-site button.bb-faq-search-clear,
body.bill-site button.bb-faq-search-clear:is(:hover, :focus, :active) {
  appearance: none;
  min-width: 64px;
  min-height: 44px;
  margin: 0;
  padding: 8px 10px;
  border: 0;
  border-radius: 8px;
  background: transparent;
  background-image: none;
  box-shadow: none;
  color: var(--bb-indigo);
  font: 800 14px/1.3 "Manrope", sans-serif;
  letter-spacing: 0;
  text-transform: none;
  white-space: normal;
  cursor: pointer;
  transform: none;
}

body.bill-site button.bb-faq-search-clear:hover { background: rgba(102, 121, 132, 0.12); }
body.bill-site [data-faq-clear][hidden] { display: none !important; }
.bb-faq-search-hint,
.bb-faq-results { display: block; margin: 9px 0 0; color: var(--bb-muted); font-size: 13px; line-height: 1.5; }
.bb-faq-results { font-weight: 700; }

.bb-faq-layout { display: grid; grid-template-columns: minmax(190px, 230px) minmax(0, 1fr); gap: clamp(32px, 6vw, 76px); align-items: start; }
.bb-faq-nav { position: sticky; top: calc(var(--bb-header) + 28px); }
.bb-faq-nav__list { display: grid; gap: 4px; margin: 0; padding: 0; list-style: none; }

body.bill-site .bb-faq-nav__link {
  display: flex;
  min-width: 0;
  min-height: 44px;
  align-items: center;
  justify-content: space-between;
  gap: 12px;
  padding: 10px 12px;
  border-inline-start: 1px solid transparent;
  border-radius: 0 8px 8px 0;
  color: var(--bb-slate);
  font: 700 14px/1.35 "Manrope", sans-serif;
  text-decoration: none;
  white-space: normal;
  overflow-wrap: anywhere;
}

body.bill-site .bb-faq-nav__link:hover { border-inline-start-color: var(--bb-indigo); background: rgba(184, 200, 210, 0.18); color: var(--bb-indigo); }
.bb-faq-groups { display: grid; gap: 22px; min-width: 0; }
.bb-faq-category { min-width: 0; overflow: clip; border-radius: 14px; background: var(--bb-white); box-shadow: 0 14px 34px rgba(41, 52, 59, 0.08); }
.bb-faq-category[hidden],
.bb-faq-item[hidden] { display: none; }
.bb-faq-category__header { padding: 22px 24px 19px; border-bottom: 1px solid var(--bb-rule); background: rgba(220, 230, 234, 0.48); }
.bb-faq-category__title { margin: 0; color: var(--bb-charcoal); font: 800 clamp(20px, 2vw, 24px)/1.2 "Manrope", sans-serif; letter-spacing: -0.02em; }
.bb-faq-category__intro { max-width: 62ch; margin: 7px 0 0; color: var(--bb-slate); font-size: 14px; line-height: 1.55; }
.bb-faq-list { border: 0; }
.bb-faq-item { border: 0; }
.bb-faq-item + .bb-faq-item { border-top: 1px solid var(--bb-rule); }
.bb-faq-item__heading { margin: 0; }

body.bill-site .bb-faq-category button.bb-faq-question,
body.bill-site .bb-faq-category button.bb-faq-question:is(:hover, :focus, :active) {
  appearance: none;
  display: flex;
  width: 100%;
  min-width: 0;
  min-height: 68px;
  align-items: center;
  justify-content: space-between;
  gap: 22px;
  margin: 0;
  padding: 19px 24px;
  border: 0;
  border-radius: 0;
  background: transparent;
  background-color: transparent;
  background-image: none;
  box-shadow: none;
  color: var(--bb-charcoal);
  font: 750 clamp(17px, 1.25vw, 19px)/1.4 "Manrope", sans-serif;
  letter-spacing: -0.015em;
  text-align: start;
  text-decoration: none;
  text-transform: none;
  white-space: normal;
  cursor: pointer;
  transform: none;
}

body.bill-site .bb-faq-category button.bb-faq-question:hover,
body.bill-site .bb-faq-category button.bb-faq-question[aria-expanded="true"] { background: rgba(220, 230, 234, 0.42); color: var(--bb-indigo-deep); }
body.bill-site .bb-faq-category button.bb-faq-question:focus-visible { position: relative; z-index: 1; outline: 3px solid var(--bb-indigo); outline-offset: -4px; }
.bb-faq-question__label { min-width: 0; overflow-wrap: anywhere; }
.bb-faq-icon { position: relative; width: 32px; height: 32px; flex: none; border: 1px solid rgba(77, 88, 113, 0.5); border-radius: 50%; }
.bb-faq-icon::before,
.bb-faq-icon::after { content: ""; position: absolute; inset-inline: 9px; top: 14px; height: 1.5px; background: var(--bb-indigo); transition: transform 0.18s ease-out; }
.bb-faq-icon::after { transform: rotate(90deg); }
.bb-faq-question[aria-expanded="true"] .bb-faq-icon { border-color: var(--bb-indigo); background: var(--bb-indigo); }
.bb-faq-question[aria-expanded="true"] .bb-faq-icon::before,
.bb-faq-question[aria-expanded="true"] .bb-faq-icon::after { background: var(--bb-white); }
.bb-faq-question[aria-expanded="true"] .bb-faq-icon::after { transform: rotate(0); }
.bb-faq-answer { max-width: 75ch; padding: 0 72px 22px 24px; color: var(--bb-slate); }
.bb-faq-answer[hidden] { display: none; }
.bb-faq-answer p { margin: 0; }
.bb-faq-empty { grid-column: 2; padding: 34px; border-radius: 14px; background: var(--bb-white); color: var(--bb-slate); box-shadow: 0 14px 34px rgba(41, 52, 59, 0.08); }
.bb-faq-empty h3 { margin: 0 0 7px; color: var(--bb-charcoal); }
.bb-faq-empty p { margin: 0; }
.bb-faq-empty__actions { display: flex; flex-wrap: wrap; gap: 12px; margin-top: 22px; }

.bb-video-feature-media,
.bb-video-card img { box-shadow: var(--bb-shadow-soft); }
.bb-video-library { grid-template-columns: minmax(0, 1.25fr) minmax(0, 0.75fr); }
.bb-video-card:first-child { grid-row: span 2; }
.bb-video-card:first-child img { aspect-ratio: 4 / 3; }
.bb-video-status { background: var(--bb-indigo-deep); color: var(--bb-white); }

.bb-page-contact .bb-contact-routes { grid-template-columns: 1.2fr 0.9fr 0.9fr; overflow: hidden; border-radius: 16px; background: var(--bb-white); box-shadow: var(--bb-shadow-soft); }
.bb-page-contact .bb-contact-route { padding: clamp(28px, 4vw, 46px); }
.bb-page-contact .bb-contact-route:first-child { background: var(--bb-mist-pale); }
.bb-contact-panel { border-radius: 16px; box-shadow: var(--bb-shadow-soft); }

.bb-site-footer { background: #29343b; }
.bb-footer-column a:hover { color: var(--bb-white); }
.bb-footer-legal { margin-top: 8px; padding-top: 34px; background: transparent; }

/* Loan-program library ---------------------------------------------------- */

.bb-nav a[aria-current]::after { right: 0; }

.bb-mobile-nav__label {
  display: block;
  margin: 24px 0 4px;
  color: var(--bb-muted);
  font-size: 11px;
  font-weight: 800;
  letter-spacing: 0.12em;
  text-transform: uppercase;
}

.bb-loan-directory__families {
  display: grid;
  gap: clamp(58px, 8vw, 96px);
  margin-top: clamp(52px, 7vw, 84px);
}

.bb-loan-directory__family {
  display: grid;
  grid-template-columns: minmax(230px, 0.38fr) minmax(0, 1fr);
  gap: clamp(38px, 7vw, 98px);
  padding-top: clamp(28px, 4vw, 44px);
  border-top: 1px solid var(--bb-rule);
}

.bb-loan-directory__family-intro h3 {
  max-width: 12ch;
  margin: 0;
  color: var(--bb-charcoal);
  font: 600 clamp(31px, 3.2vw, 46px)/1.04 "Cormorant Garamond", serif;
  letter-spacing: -0.025em;
}

.bb-loan-directory__family-intro p {
  max-width: 34ch;
  margin: 18px 0 0;
  color: var(--bb-slate);
}

.bb-loan-directory__links { border-bottom: 1px solid var(--bb-rule); }

.bb-loan-directory__links a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 28px;
  gap: 28px;
  align-items: center;
  min-height: 94px;
  padding: 20px 8px 20px 0;
  border-top: 1px solid var(--bb-rule);
  color: var(--bb-charcoal);
  text-decoration: none;
  transition: color 0.2s ease-out, padding 0.2s ease-out, background-color 0.2s ease-out;
}

.bb-loan-directory__links a:hover {
  padding-left: 18px;
  background: rgba(220, 230, 234, 0.36);
  color: var(--bb-indigo-deep);
}

.bb-loan-directory__links strong {
  display: block;
  font-size: clamp(17px, 1.45vw, 21px);
  line-height: 1.3;
  letter-spacing: -0.018em;
}

.bb-loan-directory__links small {
  display: block;
  max-width: 78ch;
  margin-top: 7px;
  color: var(--bb-muted);
  font-size: 13.5px;
  line-height: 1.55;
}

.bb-loan-directory__links svg,
.bb-loan-related-links svg {
  width: 24px;
  height: 24px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.5;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform 0.2s ease-out;
}

.bb-loan-directory__links a:hover svg,
.bb-loan-related-links a:hover svg { transform: translateX(4px); }

.bb-loan-product-hero {
  min-height: clamp(610px, calc(100svh - var(--bb-header)), 720px);
  overflow: hidden;
}

.bb-loan-product-hero .bb-hero-grid {
  min-height: clamp(610px, calc(100svh - var(--bb-header)), 720px);
  grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
  padding-top: clamp(46px, 6vw, 74px);
}

.bb-loan-product-hero--buying { background: #f3f6f7; }
.bb-loan-product-hero--income { background: #dce6ea; }
.bb-loan-product-hero--structure { background: #e9eff2; }
.bb-loan-product-hero--investment { background: #43515d; color: var(--bb-white); }

.bb-loan-product-hero--investment .bb-hero-lead,
.bb-loan-product-hero--investment .bb-breadcrumb,
.bb-loan-product-hero--investment .bb-breadcrumb a { color: #e4ebee; }

.bb-loan-product-hero--investment .bb-display em { color: #dce6ea; }

body.bill-site .bb-loan-product-hero--investment .bb-button {
  border-color: var(--bb-white);
  background: var(--bb-white);
  color: var(--bb-indigo-deep);
}

body.bill-site .bb-loan-product-hero--investment .bb-button:hover {
  border-color: #edf3f5;
  background: #edf3f5;
  color: var(--bb-indigo-deep);
}

body.bill-site .bb-loan-product-hero--investment .bb-button--secondary {
  border-color: rgba(252, 251, 248, 0.68);
  background: transparent;
  color: var(--bb-white);
}

body.bill-site .bb-loan-product-hero--investment .bb-button--secondary:hover {
  border-color: var(--bb-white);
  background: rgba(252, 251, 248, 0.1);
  color: var(--bb-white);
}

.bb-breadcrumb {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  margin-bottom: 24px;
  color: var(--bb-muted);
  font-size: 12px;
  font-weight: 750;
  letter-spacing: 0.04em;
}

.bb-breadcrumb a { color: var(--bb-indigo); }

.bb-loan-product-hero .bb-display {
  max-width: 12ch;
  font-size: clamp(49px, 5.1vw, 78px);
}

.bb-loan-lens {
  position: relative;
  align-self: center;
  min-width: 0;
  overflow: hidden;
  padding: clamp(28px, 4vw, 46px);
  border: 1px solid rgba(102, 121, 132, 0.34);
  border-radius: 16px;
  background: rgba(252, 251, 248, 0.72);
}

.bb-loan-product-hero--investment .bb-loan-lens {
  border-color: rgba(220, 230, 234, 0.34);
  background: rgba(41, 52, 59, 0.32);
}

.bb-loan-lens__geometry {
  width: 100%;
  height: auto;
  margin: -4px 0 22px;
  overflow: visible;
}

.bb-loan-lens__geometry path,
.bb-loan-lens__geometry circle {
  fill: none;
  stroke: var(--bb-indigo);
  stroke-width: 1.6;
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}

.bb-loan-product-hero--investment .bb-loan-lens__geometry path { stroke: #c3d2d9; }

.bb-loan-lens__geometry circle {
  fill: var(--bb-gold);
  stroke: var(--bb-white);
  stroke-width: 2;
}

.bb-loan-lens__geometry path {
  stroke-dasharray: 620;
  animation: bb-loan-ink 1.15s cubic-bezier(0.16, 1, 0.3, 1) 0.22s both;
}

@keyframes bb-loan-ink {
  from { stroke-dashoffset: 620; }
  to { stroke-dashoffset: 0; }
}

.bb-loan-lens h2 {
  max-width: 15ch;
  margin: 0;
  color: var(--bb-charcoal);
  font: 600 clamp(30px, 3vw, 44px)/1.08 "Cormorant Garamond", serif;
  letter-spacing: -0.025em;
}

.bb-loan-product-hero--investment .bb-loan-lens h2 { color: var(--bb-white); }

.bb-loan-lens dl { margin: 26px 0 0; }

.bb-loan-lens dl > div {
  display: grid;
  grid-template-columns: 76px minmax(0, 1fr);
  gap: 18px;
  padding: 15px 0;
  border-top: 1px solid rgba(102, 121, 132, 0.28);
}

.bb-loan-product-hero--investment .bb-loan-lens dl > div { border-top-color: rgba(220, 230, 234, 0.24); }

.bb-loan-lens dt {
  color: var(--bb-indigo);
  font-size: 12px;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

.bb-loan-product-hero--investment .bb-loan-lens dt { color: #d6e1e6; }

.bb-loan-lens dd {
  margin: 0;
  color: var(--bb-slate);
  font-size: 14px;
  font-weight: 650;
  line-height: 1.45;
}

.bb-loan-product-hero--investment .bb-loan-lens dd { color: #edf2f4; }

.bb-loan-considerations {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  margin-top: clamp(48px, 7vw, 76px);
  border-top: 1px solid var(--bb-rule);
}

.bb-loan-consideration {
  min-width: 0;
  padding: clamp(26px, 4vw, 42px) clamp(20px, 4vw, 44px) clamp(30px, 4vw, 48px) 0;
  border-bottom: 1px solid var(--bb-rule);
}

.bb-loan-consideration:nth-child(even) {
  padding-right: 0;
  padding-left: clamp(20px, 4vw, 44px);
  border-left: 1px solid var(--bb-rule);
}

.bb-loan-consideration h3 {
  margin: 0;
  color: var(--bb-charcoal);
  font-size: clamp(19px, 1.7vw, 24px);
  line-height: 1.25;
  letter-spacing: -0.02em;
}

.bb-loan-consideration p {
  max-width: 58ch;
  margin: 11px 0 0;
  color: var(--bb-slate);
}

.bb-loan-steps {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(26px, 5vw, 70px);
  margin: clamp(58px, 7vw, 82px) 0 0;
  padding: 0;
  list-style: none;
}

.bb-loan-steps::before {
  content: "";
  position: absolute;
  top: 18px;
  left: 18px;
  right: 18px;
  height: 1px;
  background: var(--bb-mist);
}

.bb-loan-steps li { position: relative; min-width: 0; padding-top: 56px; }

.bb-loan-steps li > span {
  position: absolute;
  top: 0;
  left: 0;
  z-index: 1;
  display: grid;
  width: 36px;
  height: 36px;
  place-items: center;
  border: 1px solid var(--bb-indigo);
  border-radius: 50%;
  background: var(--bb-mist-pale);
  color: var(--bb-indigo-deep);
  font-size: 12px;
  font-weight: 800;
}

.bb-loan-steps h3 {
  margin: 0;
  color: var(--bb-charcoal);
  font-size: clamp(19px, 1.8vw, 24px);
  line-height: 1.25;
  letter-spacing: -0.02em;
}

.bb-loan-steps p { max-width: 38ch; margin: 12px 0 0; color: var(--bb-slate); }

.bb-loan-faq-layout {
  display: grid;
  grid-template-columns: minmax(260px, 0.72fr) minmax(0, 1.28fr);
  gap: clamp(44px, 8vw, 112px);
  align-items: start;
}

.bb-loan-faq .bb-faq-category { box-shadow: none; border: 1px solid var(--bb-rule); }

.bb-loan-related-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
  gap: clamp(44px, 8vw, 112px);
  align-items: start;
}

.bb-loan-related-links { border-bottom: 1px solid rgba(220, 230, 234, 0.26); }

.bb-loan-related-links a {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 28px;
  gap: 20px;
  align-items: center;
  min-height: 76px;
  padding: 18px 4px;
  border-top: 1px solid rgba(220, 230, 234, 0.26);
  color: var(--bb-white);
  font-size: clamp(17px, 1.5vw, 21px);
  font-weight: 750;
  text-decoration: none;
}

.bb-loan-related-links a:hover { color: #dce6ea; }

.bb-loan-sources { padding-top: clamp(66px, 8vw, 96px); padding-bottom: clamp(66px, 8vw, 96px); }

.bb-loan-sources-layout {
  display: grid;
  grid-template-columns: minmax(0, 0.82fr) minmax(0, 1.18fr);
  gap: clamp(44px, 8vw, 112px);
  align-items: start;
}

.bb-loan-sources ul {
  margin: 0;
  padding: 0;
  border-bottom: 1px solid var(--bb-rule);
  list-style: none;
}

.bb-loan-sources li { border-top: 1px solid var(--bb-rule); }

.bb-loan-sources li a {
  display: block;
  padding: 16px 0;
  color: var(--bb-indigo);
  font-weight: 750;
}

.bb-loan-sources li a:hover { color: var(--bb-indigo-deep); }

.bb-loan-disclosure {
  max-width: 100ch;
  margin: clamp(40px, 5vw, 62px) 0 0;
  padding-top: 22px;
  border-top: 1px solid var(--bb-rule);
  color: var(--bb-muted);
  font-size: 12.5px;
  line-height: 1.6;
}

@media (max-width: 960px) {
  .bb-loan-product-hero .bb-hero-grid,
  .bb-loan-directory__family,
  .bb-loan-faq-layout,
  .bb-loan-related-layout,
  .bb-loan-sources-layout { grid-template-columns: 1fr; }

  .bb-loan-product-hero .bb-hero-grid { min-height: 0; }
  .bb-loan-directory__family { gap: 28px; }
  .bb-loan-directory__family-intro h3 { max-width: 18ch; }
  .bb-loan-directory__family-intro p { max-width: 60ch; }
  .bb-loan-lens { max-width: 720px; }
}

@media (max-width: 680px) {
  .bb-loan-product-hero .bb-display { max-width: 11ch; font-size: clamp(43px, 12vw, 57px); }
  .bb-breadcrumb { margin-bottom: 18px; }
  .bb-loan-lens { padding: 24px 20px; }
  .bb-loan-lens dl > div { grid-template-columns: 64px minmax(0, 1fr); gap: 12px; }
  .bb-loan-directory__links a { min-height: 78px; padding-block: 17px; }
  .bb-loan-directory__links small { display: none; }
  .bb-loan-considerations { grid-template-columns: 1fr; }
  .bb-loan-consideration,
  .bb-loan-consideration:nth-child(even) { padding: 24px 0; border-left: 0; }
  .bb-loan-steps { grid-template-columns: 1fr; gap: 30px; }
  .bb-loan-steps::before { top: 18px; bottom: 18px; left: 18px; right: auto; width: 1px; height: auto; }
  .bb-loan-steps li { min-height: 80px; padding: 0 0 0 58px; }
  .bb-loan-related-links a { min-height: 68px; }
}

@media (max-height: 760px) and (min-width: 961px) {
  :root { --bb-hero-height: 540px; }
  .bb-hero-grid { padding-top: 44px; padding-bottom: 94px; }
  .bb-display { font-size: clamp(48px, 4.7vw, 70px); }
  .bb-hero-lead { margin-top: 18px; }
  .bb-actions { margin-top: 22px; }
  .bb-hero-visual { min-height: 340px; }
  .bb-hero-photo { max-height: 370px; }
  .bb-house-route { height: 96px; }
}

@media (max-width: 1240px) {
  .bb-nav-resources { display: none; }
}

@media (max-width: 960px) {
  :root { --bb-hero-height: auto; }
  .bb-hero-grid { min-height: 0; grid-template-columns: 1fr; gap: 30px; padding: 58px 0 106px; }
  .bb-hero-visual { min-height: 330px; }
  .bb-hero-photo { max-height: 390px; }
  .bb-page-hero--slate .bb-hero-grid > .bb-hero-copy:last-child:not(:first-child) { max-width: 760px; padding-top: 24px; }
  .bb-house-route { width: 100%; left: 0; height: 100px; }
  .bb-page-about-bill .bb-hero-grid { grid-template-columns: minmax(0, 1fr) minmax(260px, 0.72fr); gap: 24px; }
  .bb-page-about-bill .bb-hero-visual { min-height: 420px; }
  .bb-faq-layout { grid-template-columns: 1fr; }
  .bb-faq-nav { position: static; }
  .bb-faq-nav__list { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .bb-faq-empty { grid-column: 1; }
  .bb-page-contact .bb-contact-routes { grid-template-columns: 1fr; }
  .bb-video-library { grid-template-columns: 1fr; }
  .bb-video-card:first-child { grid-row: auto; }
}

@media (max-width: 680px) {
  .bb-page-hero--coast {
    background-image:
      linear-gradient(rgba(247, 249, 249, 0.96), rgba(236, 242, 244, 0.74)),
      url("./coastline-background.png");
  }

  .bb-hero-grid { gap: 24px; padding: 46px 0 92px; }
  .bb-display { max-width: 11ch; font-size: clamp(45px, 12.8vw, 58px); line-height: 0.99; }
  .bb-heading { font-size: clamp(38px, 10.8vw, 50px); }
  .bb-subheading { font-size: clamp(28px, 8.5vw, 38px); }
  .bb-hero-lead { font-size: 15.5px; }
  .bb-hero-visual { min-height: 290px; }
  .bb-hero-portrait { width: min(108%, 420px); }
  .bb-hero-photo { max-height: 340px; border-radius: 100px 100px 12px 12px; }
  .bb-house-route { width: 100%; left: 0; height: 82px; }
  .bb-page-about-bill .bb-hero-grid { grid-template-columns: 1fr; }
  .bb-page-about-bill .bb-hero-visual { min-height: 300px; }
  .bb-page-about-bill .bb-proof-band { margin-top: -20px; }
  .bb-hero-topic-list { grid-template-columns: 1fr; }
  .bb-hero-topic-index a { min-height: 54px; }
  .bb-hero-media-shelf { grid-template-columns: 1fr; }
  .bb-hero-media-shelf-side { display: none; }
  .bb-hero-media-shelf img { min-height: 230px; }
  .bb-hero-contact-links { grid-template-columns: 1fr; }
  .bb-hero-contact-links a { border-right: 0; border-bottom: 1px solid var(--bb-rule); }
  .bb-hero-contact-links a:last-child { border-bottom: 0; }
  .bb-faq-search-panel { padding: 16px; }
  .bb-faq-search-row { grid-template-columns: 1fr; }
  body.bill-site button.bb-faq-search-clear { justify-self: start; }
  .bb-faq-nav__list { grid-template-columns: 1fr; }
  .bb-faq-category__header { padding: 19px 18px 17px; }
  body.bill-site .bb-faq-category button.bb-faq-question,
  body.bill-site .bb-faq-category button.bb-faq-question:is(:hover, :focus, :active) { min-height: 64px; gap: 14px; padding: 17px 18px; }
  .bb-faq-answer { padding: 0 18px 20px; }
  .bb-review-frame { min-height: 900px; }
  .bb-review-iframe { height: 900px; }
}

@media (prefers-reduced-motion: reduce) {
  .bb-route-dot { animation: none; }
  .bb-loan-lens__geometry path { animation: none; }
  .bb-review-frame::before { transition: none; }
  .bb-faq-icon,
  .bb-faq-icon::before,
  .bb-faq-icon::after { transition: none; }
}

@media print {
  .bb-faq-nav,
  .bb-faq-search-panel,
  .bb-faq-icon { display: none !important; }
  .bb-faq-category[hidden],
  .bb-faq-item[hidden],
  .bb-faq-answer[hidden] { display: block !important; }
}
