.ff-page {
  --ff-ink: var(--text);
  --ff-muted: var(--text-muted);
  --ff-line: var(--border);
  --ff-surface: var(--background-raised);
  --ff-soft: var(--ui-teal-50);
  --ff-accent: var(--teal-action);
  --ff-accent-soft: var(--ui-teal-50);
  --ff-purple: var(--teal-action);
  --ff-yellow: var(--brand-banana);
  --ff-cream: var(--background-raised);
  background: var(--background-raised);
  color: var(--text);
  font: 400 18px/1.5 var(--font-body);
  /* The program header runs behind the fixed nav and pads for it itself. */
  padding-top: 0;
}
.ff-page .ff-enrollment { padding-top: 0; }
.ff-page .ff-shell { max-width: 1400px; padding-inline: 24px; }
/* The header sits on a lined grid centered on the page. Every line box, gap
   and the photo are whole cells, so the text sits in the rows instead of
   across them. */
.ff-page .ff-program-header {
  --cell: 32px;
  width: 100vw;
  max-width: none;
  margin-left: calc(50% - 50vw);
  padding: calc(var(--site-header-offset) + var(--cell) * 2) 24px var(--cell);
  background-color: var(--brand-lavender);
  background-image: linear-gradient(#ffffffa8 1px, transparent 1px), linear-gradient(90deg, #ffffffa8 1px, transparent 1px);
  background-size: var(--cell) var(--cell);
  background-position: calc(50% + var(--cell) / 2) var(--site-header-offset);
}
.ff-page .ff-eyebrow,
.ff-page .ff-section-kicker { color: var(--text-muted) !important; font-size: 14px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.ff-page .ff-program-header h1,
.ff-page .ff-program-guide h2,
.ff-page .ff-faq h3,
.ff-page .ff-fieldset legend,
.ff-page .ff-referral h2,
.ff-page .ff-review-panel h2,
.ff-page .ff-success h2,
.ff-page .ff-success h3,
.ff-page .ff-child-heading h3 {
  color: var(--text);
  font-family: var(--font-display);
  font-weight: 700;
  letter-spacing: -.04em;
}
.ff-page .ff-program-header .ff-eyebrow { margin: 0; line-height: var(--cell); }
.ff-page .ff-program-header h1 { max-width: none; margin: 0; font-size: clamp(52px, 6.5vw, 88px); line-height: calc(var(--cell) * 3); }
.ff-page .ff-program-header h1 span::after { display: none; }
.ff-page .ff-offer { max-width: 840px; color: var(--text) !important; font-size: clamp(19px, 1.8vw, 24px); font-weight: 400; line-height: var(--cell); }
/* Size the photo from the viewport height so the whole header fits on a
   laptop screen: 388px is everything above the photo plus a cell below it. */
.ff-page .ff-product-figure {
  --photo-h: round(down, clamp(256px, 100svh - 388px, 576px), var(--cell));
  width: auto;
  max-width: 100%;
  margin: var(--cell) auto 0;
}
.ff-page .ff-product-preview { width: round(nearest, var(--photo-h) * 1.5, var(--cell) * 2); max-width: 100%; height: var(--photo-h); margin: 0 auto; object-fit: cover; background: var(--background-subtle); border-radius: 0; box-shadow: none; -webkit-mask-image: none; mask-image: none; }
.ff-page .ff-program-guide { max-width: 900px; border-color: var(--border); }
.ff-page .ff-faq { border-top-color: var(--border); }
.ff-page .ff-timeline-number { background: var(--brand-lime); color: var(--text); }
.ff-page .ff-timeline li::after { background: var(--border); }
.ff-page .ff-timeline strong { color: var(--text); }
.ff-page .ff-timeline small,
.ff-page .ff-faq details p { color: var(--text-muted) !important; }
.ff-page .ff-faq-list {
  padding: clamp(14px, 2vw, 24px) clamp(18px, 2.5vw, 30px);
  background: var(--background-subtle);
}
.ff-page .ff-faq details {
  margin-top: 0;
  padding: 0;
  border: 0;
  border-radius: 0;
  background: transparent;
}
.ff-page .ff-faq details + details { margin-top: 4px; }
.ff-page .ff-faq details[open] { padding-bottom: 14px; }
.ff-page .ff-faq summary {
  padding: 14px 0;
  color: var(--text);
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 600;
  letter-spacing: 0;
  line-height: 1.4;
}
.ff-page .ff-faq details[open] summary { color: var(--text); }
.ff-page .ff-faq summary::after {
  width: 22px;
  height: 22px;
  background: url('/assets/kale/hugeicons/plus.svg') center / contain no-repeat;
  content: '';
}
.ff-page .ff-faq details[open] summary::after {
  background-image: url('/assets/kale/hugeicons/minus.svg');
  content: '';
}
.ff-page .ff-faq details p {
  margin: 0 0 20px;
  padding-right: 28px;
  font-family: var(--font-body);
  font-size: 18px;
  font-weight: 400;
  line-height: 1.65;
}
.ff-page .ff-faq details p:last-child { margin-bottom: 0; }
.ff-page .ff-form { max-width: 900px; background: var(--ui-teal-50); border-radius: 0; }
.ff-page .ff-choice-card,
.ff-page .ff-child-card,
.ff-page .ff-conditional-panel,
.ff-page .ff-review-details { border-radius: 2px; }
.ff-page .form-field input,
.ff-page .form-field select,
.ff-page .form-field textarea { border-color: var(--border); border-radius: 2px; background: white; }
.ff-page .ff-submit-row .button,
.ff-page .ff-review-actions .button,
.ff-page .ff-share-invite,
.ff-page .ff-edit-review { border-radius: 2px; }
.ff-page .ff-submit-row .button,
.ff-page .ff-review-actions .button { border-color: var(--teal-action); background: var(--teal-action); color: white; }
.ff-page .ff-submit-row .button:hover,
.ff-page .ff-review-actions .button:hover { background: var(--teal-action-hover); }
.ff-page .ff-success-mark svg { width: 32px; height: 32px; }
.ff-signup-section { padding: 74px 24px; background: var(--brand-lime); }
.ff-signup-inner { max-width: 1400px; margin: auto; }
.ff-signup-section .ff-footer-signup { max-width: 650px; padding: 0; }
.ff-signup-section .ff-footer-signup-copy { color: var(--text) !important; font-size: 20px; font-weight: 600; }
.ff-signup-section .ff-edit-review { min-height: 54px; padding-inline: 22px; border: 0; background: var(--teal-action); color: white; font-size: 17px; font-weight: 700; }
.ff-signup-section .ff-edit-review:hover { background: var(--teal-action-hover); }
.ff-signup-section .form-field input { min-height: 54px; }
@media (max-width: 760px) {
  .ff-page { font-size: 16px; }
  .ff-page .ff-shell { padding-inline: 16px; }
  .ff-page .ff-program-header { --cell: 28px; padding: calc(var(--site-header-offset) + var(--cell) * 2) 16px; }
  .ff-page .ff-program-header h1 { font-size: clamp(40px, 11vw, 52px); line-height: calc(var(--cell) * 2); }
  .ff-page .ff-offer { font-size: 18px; }
  .ff-page .ff-product-preview { width: 100%; height: round(down, (100vw - 32px) / 1.5, var(--cell)); }
  .ff-signup-section { padding: 58px 24px; }
}
