/* =============================================================================
   final-expense.css — /final-expense/ (namespaced; tokens only).
   Brand: NO BLUE. Page stays cream. Warm shadows only. Element-scale gradients.
   COMPLIANCE: this is life insurance, NOT Medicare. NO Medicare imagery, NO
   government cue, NO Medicare-seal trust marks anywhere. The scope clarifier
   (top) and disclaimer band (bottom) must be full-contrast body type, never
   collapsed.
   ============================================================================= */

/* ---- Shared button system (matches contact/coverage canonical .gv-btn) ---- */
.gv-btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 10px;
  font-family: var(--gv-font-label);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.12em;
  text-transform: uppercase;
  text-decoration: none;
  min-height: 56px;
  padding: 0 28px;
  border-radius: 999px;
  border: 2px solid transparent;
  cursor: pointer;
  transition:
    filter var(--gv-dur) var(--gv-ease),
    box-shadow var(--gv-dur) var(--gv-ease),
    transform var(--gv-dur-press) var(--gv-ease-out);
  -webkit-tap-highlight-color: transparent;
}
.gv-btn:focus-visible { outline: 3px solid var(--gv-gold-text); outline-offset: 3px; }
.gv-btn:active { transform: scale(0.97); }
.gv-btn--filled { background: var(--gv-grad-gold); color: var(--gv-ink-deepest); }
.gv-btn--filled:hover { filter: brightness(1.04); box-shadow: var(--gv-shadow-lg); }
@media (prefers-reduced-motion: reduce) {
  .gv-btn { transition: none; }
  .gv-btn:active { transform: none; }
}

/* ---- 1. HERO ------------------------------------------------------------- */
.gv-fex-hero { padding-block: clamp(40px, 7vw, 80px) clamp(32px, 5vw, 56px); }
/* Hero two-column grid: text + 4:5 still. Single column on mobile (image below). */
.gv-fex-hero__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: center;
}
.gv-fex-hero__media {
  display: block;
  border-radius: var(--gv-radius-lg);
  overflow: hidden;
  box-shadow: var(--gv-shadow);
  max-width: 432px;
  margin: 0 auto;
  width: 100%;
}
.gv-fex-hero__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 5;
  object-fit: cover;
  object-position: center;
  filter: saturate(1.05);
}
@media (min-width: 768px) {
  .gv-fex-hero__grid {
    grid-template-columns: 1.15fr 0.85fr;
    gap: 48px;
  }
  .gv-fex-hero__media { margin: 0; max-width: 100%; }
}
.gv-fex-hero__label { margin-bottom: 14px; }
.gv-fex-hero__h1 {
  font-family: var(--gv-font-display);
  font-size: clamp(32px, 6.4vw, 56px);
  font-weight: 500;
  color: var(--gv-text);
  line-height: var(--gv-display-lh);
  letter-spacing: var(--gv-display-tracking);
  margin: 0 0 20px;
  max-width: 18ch;
}
.gv-fex-hero__rule { max-width: 320px; margin: 0 0 24px; }
.gv-fex-hero__lead {
  font-family: var(--gv-font-body);
  font-size: clamp(18px, 2.2vw, 20px);
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  max-width: 60ch;
  margin: 0 0 28px;
}
.gv-fex-hero__ctas { display: flex; flex-direction: column; gap: 12px; align-items: flex-start; }
.gv-fex-hero__cta { width: 100%; max-width: 420px; white-space: normal; }
/* >=480px: pill grows to fit one clean line (no two-line oval). Below 480px the
   long label is allowed to wrap inside the full-width button. */
@media (min-width: 480px) { .gv-fex-hero__cta { width: auto; white-space: nowrap; } }
.gv-fex-reassure {
  font-family: var(--gv-font-body);
  font-size: 16px;
  color: var(--gv-text-muted);
  margin: 0;
  line-height: 1.5;
  max-width: 52ch;
}

/* ---- Generic section + headings ------------------------------------------ */
.gv-fex-section { padding-block: clamp(48px, 7vw, 96px); } /* normalized 72->96 to match home/about/medicare section rhythm */
.gv-fex-section--alt { background: var(--gv-card); border-block: 1px solid var(--gv-rule); }
.gv-fex-h2 {
  font-family: var(--gv-font-display);
  font-size: clamp(26px, 3.4vw, 38px);
  font-weight: 500;
  color: var(--gv-text);
  line-height: 1.12;
  letter-spacing: var(--gv-display-tracking);
  margin: 0 0 20px;
  max-width: 22ch;
}
.gv-fex-body {
  font-family: var(--gv-font-body);
  font-size: 18px;
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  max-width: 65ch;
}
.gv-fex-body p { margin: 0 0 18px; }
.gv-fex-body p:last-child { margin-bottom: 0; }

/* "How Cassidy helps" — body copy beside a 4:3 warmth image. */
.gv-fex-how__grid {
  display: grid;
  grid-template-columns: 1fr;
  gap: 28px;
  align-items: center;
}
.gv-fex-how__media {
  display: block;
  border-radius: var(--gv-radius);
  overflow: hidden;
  box-shadow: var(--gv-shadow);
  width: 100%;
}
.gv-fex-how__img {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 4 / 3;
  object-fit: cover;
  object-position: center;
  filter: saturate(1.05);
}
@media (min-width: 768px) {
  .gv-fex-how__grid {
    grid-template-columns: 1fr 1fr;
    gap: 48px;
  }
}

/* ---- 3. WHEN IT MAKES SENSE — numbered editorial list (I/II/III) --------- */
.gv-fex-reasons {
  list-style: none;
  margin: 32px 0 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  max-width: 60ch;            /* editorial measure — keeps lines readable, not full-bleed */
}
.gv-fex-reason {
  display: grid;
  grid-template-columns: 40px 1fr;   /* hanging numeral column + body */
  column-gap: 20px;
  align-items: start;
  padding-block: 24px;
  border-top: 1px solid var(--gv-rule);   /* per-item hairline divider */
}
.gv-fex-reason:first-child {
  padding-top: 8px;            /* tighter under the lead line; no rule on the first item */
  border-top: 0;
}
.gv-fex-reason__num {
  font-family: var(--gv-font-display);
  font-size: 26px;
  font-weight: 600;
  line-height: 1.1;
  letter-spacing: 0.04em;
  color: var(--gv-gold-text);   /* gold-on-cream, AA */
  text-transform: uppercase;
}
.gv-fex-reason__body {
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.gv-fex-reason__label {
  font-family: var(--gv-font-display);
  font-size: clamp(21px, 2.4vw, 24px);
  font-weight: 500;
  line-height: 1.2;
  letter-spacing: var(--gv-display-tracking);
  color: var(--gv-text);
  margin: 0;
}
.gv-fex-reason__text {
  font-family: var(--gv-font-body);
  font-size: 17px;
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  margin: 0;
}
.gv-fex-lead-line {
  font-family: var(--gv-font-body);
  font-size: clamp(18px, 2vw, 20px);
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  max-width: 60ch;
  margin: 0;
}

/* ---- 5. FAQ -------------------------------------------------------------- */
.gv-fex-faq { display: grid; gap: 16px; margin-top: 28px; }
.gv-fex-faq-item {
  background: var(--gv-page);
  border: 1px solid var(--gv-rule);
  border-radius: var(--gv-radius);
  padding: 22px 22px 24px;
}
.gv-fex-section--alt .gv-fex-faq-item { background: var(--gv-page); }
.gv-fex-faq-item__q {
  font-family: var(--gv-font-display);
  font-size: clamp(19px, 1.8vw, 22px);
  font-weight: 600;
  color: var(--gv-text);
  line-height: 1.3;
  margin: 0 0 12px;
}
.gv-fex-faq-item__a {
  font-family: var(--gv-font-body);
  font-size: 18px;
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  margin: 0;
}

/* ---- 6. CTA BAND (with calendar embed) ----------------------------------- */
.gv-fex-cta-band { padding-block: clamp(48px, 8vw, 96px); overflow-x: hidden; overflow-x: clip; } /* normalized 88->96 */
.gv-fex-cta-head { text-align: center; max-width: 620px; margin: 0 auto 32px; }
.gv-fex-cta-head__h2 {
  font-family: var(--gv-font-display);
  font-size: clamp(28px, 3.5vw, 42px);
  font-weight: 500;
  color: var(--gv-text);
  line-height: 1.15;
  margin: 14px 0 16px;
}
.gv-fex-cta-head__lead {
  font-family: var(--gv-font-body);
  font-size: clamp(18px, 1.8vw, 20px);
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  max-width: 54ch;
  margin: 0 auto;
}
/* Booking calendar: a contained, centered column at every width.
   NO viewport-breakout. The old `.gv-embed-card--wide` broke the embed out to
   1360px via `calc(50% - min(50vw - 1rem, 680px))`; that viewport math made the
   card wider than its container and shifted/clipped the WHOLE embed (our label
   + intro + the GHL iframe) on wide screens / with a classic scrollbar (vw counts
   the scrollbar, % does not). Plain max-width + auto margins can't shift. */
.gv-fex-embed-shell { max-width: 1100px; margin-inline: auto; }
.gv-fex-cta-foot { text-align: center; margin-top: 24px; display: flex; flex-direction: column; gap: 12px; align-items: center; }
.gv-fex-cta-foot__reassure {
  font-family: var(--gv-font-body);
  font-size: 16px;
  color: var(--gv-text-muted);
  margin: 0;
}
.gv-fex-cta-foot__secondary {
  display: inline-flex;
  align-items: center;
  min-height: 48px;
  font-family: var(--gv-font-body);
  font-size: 17px;
  color: var(--gv-text-body);
  text-decoration: underline;
  text-underline-offset: 3px;
}
.gv-fex-cta-foot__secondary:hover { color: var(--gv-text); }

/* ---- 7. PAGE-SCOPED DISCLAIMER BAND (repeats the clarifier at page foot) -- */
.gv-fex-disclaimer-band {
  background: var(--gv-card);
  border-top: 1px solid var(--gv-rule);
  padding-block: 40px;
}
@media (min-width: 768px) { .gv-fex-disclaimer-band { padding-block: 64px; } }
.gv-fex-disclaimer-band__label {
  font-family: var(--gv-font-label);
  font-size: 13px;
  font-weight: 600;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--gv-text-muted);
  margin: 0 0 18px;
}
.gv-fex-disclaimer-band__body {
  font-family: var(--gv-font-body);
  font-size: 16px; /* ≥16px floor, full contrast — never collapsed */
  line-height: var(--gv-body-lh);
  color: var(--gv-text-body);
  max-width: 86ch;
  margin: 0;
}

/* Section dividers */
.gv-fex-rule { max-width: 240px; margin: 0 0 20px; }

/* Scroll-reveal (shared) */
.gv-reveal {
  opacity: 0;
  transform: translateY(16px);
  transition:
    opacity var(--gv-dur-reveal) var(--gv-ease-out),
    transform var(--gv-dur-reveal) var(--gv-ease-out);
}
.gv-reveal.is-visible { opacity: 1; transform: translateY(0); }
@media (prefers-reduced-motion: reduce) {
  .gv-reveal { opacity: 1; transform: none; transition: none; }
}

