/* Typography — Header/Bold/40-48/ls-0.4 (desktop) */
.typo-header-bold-40-48 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 40px;
  line-height: 48px;
  letter-spacing: -0.4px;

  @media (max-width: 767px) {
    .blog-page & {
      font-size: 26px;
      line-height: 31.2px;
      letter-spacing: -0.28px;
    }

    .article-page &,
    .page-lead &,
    .faq-page & {
      font-size: 28px;
      line-height: 32px;
      letter-spacing: normal;
    }
  }
}

/* Typography — Header/H04 (first section title mobile) */
.typo-header-h04 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 28px;
  line-height: 32px;
}

/* Typography — Header/H03 Bold/36-40 (self-test result desktop) */
.typo-header-bold-36-40 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 36px;
  line-height: 40px;
}

/* Typography — Body/B02 Regular/17-25.5 (self-test result mobile) */
.typo-body-b02 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 17px;
  line-height: 25.5px;
}

/* Typography — Header/Bold/26-31/ls-0.28 (mobile) */
.typo-header-bold-26-31 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 26px;
  line-height: 31.2px;
  letter-spacing: -0.28px;
}

/* Typography — Body/SemiBold/15 (header links, hero CTA desktop) */
.typo-body-semibold-15 {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 15px;
  line-height: 22.5px;
}

/* Typography — Body/SemiBold/18 (self-test answers) */
.typo-body-semibold-18 {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 18px;
  line-height: normal;
}

/* Typography — Body/SemiBold/14 (self-test answers mobile) */
.typo-body-semibold-14 {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 14px;
  line-height: normal;
}

/* Typography — Body/SemiBold/13 (hero CTA mobile) */
.typo-body-semibold-13 {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 13px;
  line-height: normal;
}

/* Typography — Header/H2/Regular (hero text desktop) */
.typo-header-h2-regular {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 18px;
  line-height: 24px;
}

/* Typography — Header/H3/Regular (product card description) */
.typo-header-h3-regular {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 24px;
}

/* Typography — Body/B05 (hero text mobile) */
.typo-body-b05 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 16px;
  line-height: 22px;
}

/* Typography — Body/Regular/18-31 (info text desktop) */
.typo-body-regular-18-31 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 18px;
  line-height: 30.6px;
  @media (max-width: 767px) {
    .article-page & {
      font-size: 16px;
      line-height: 22px;
    }
  }
}

/* Typography — Header/SemiBold/19 (cause card titles) */
.typo-header-semibold-19 {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 19px;
  line-height: 26px;
}

/* Typography — Header/SemiBold/19-24 (blog card title) */
.typo-header-semibold-19-24 {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 19px;
  line-height: 24px;
  letter-spacing: -0.19px;
}

/* Typography — Header/SemiBold/17-24 (accordion title) */
.typo-header-semibold-17-24 {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 17px;
  line-height: 23.8px;
}

/* Typography — Body/Bold/14-20 (num badge mobile) */
.typo-body-bold-14-20 {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 14px;
  line-height: 20px;
}

/* Typography — Body/Medium/14-20 (list item label mobile) */
.typo-body-medium-14-20 {
  font-family: var(--font-body);
  font-weight: 500;
  font-size: 14px;
  line-height: 20px;
}

/* Typography — Body/Regular/15 (cause card text desktop) */
.typo-body-regular-15 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 15px;
  line-height: 22.5px;
}

/* Typography — Body/B08 (self-test banner text mobile) */
.typo-body-b08 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 15px;
  line-height: 27px;
}

/* Typography — Body/B09 (cause card text mobile) */
.typo-body-b09 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 14px;
  line-height: 20px;
}

/* Typography — Body/Regular/14 */
.typo-body-regular-14 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 14px;
  line-height: 21px;
}

/* Typography — Header/Bold/24 */
.typo-header-bold-24 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 24px;
  line-height: normal;
}

/* Typography — Body/Regular/19-28.5 (page lead) */
.typo-body-regular-19-28 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 19px;
  line-height: 28.5px;
}

.page-lead .page-lead__text.typo-body-regular-19-28 {
  @media (max-width: 767px) {
    font-size: 16px;
    line-height: 22px;
  }
}

/* Typography — Body/Bold/16 (stage number) */
.typo-body-bold-16 {
  font-family: var(--font-body);
  font-weight: 700;
  font-size: 16px;
  line-height: 24px;
}

.typo-header-bold-22 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 22px;
  line-height: normal;
}

/* Typography — Header/Bold/22-35/ls-0.22 (disease cards) */
.typo-header-bold-22-35 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 22px;
  line-height: 35.2px;
  letter-spacing: -0.22px;
}

/* Typography — Header/H05 (18/27) */
.typo-header-h05 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 18px;
  line-height: 27px;
}

/* Typography — Header/Bold/13 (TOC label) */
.typo-header-bold-13 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 13px;
  line-height: 16px;
}

/* Typography — Header/SemiBold/14 */
.typo-header-semibold-14 {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 14px;
  line-height: normal;
}

/* Typography — Header/SemiBold/16 */
.typo-header-semibold-16 {
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 16px;
  line-height: normal;
}

/* Typography — Header/H7/SemiBold (mobile nav) */
.typo-header-h7-semibold {
  font-family: var(--font-body);
  font-weight: 600;
  font-size: 16px;
  line-height: 24px;
}

/* Typography — Header/Regular/14 */
.typo-header-regular-14 {
  font-family: var(--font-heading);
  font-weight: 400;
  font-size: 14px;
  line-height: normal;
}

/* Typography — Body/Regular/13 (product pack placeholder) */
.typo-body-regular-13 {
  font-family: var(--font-body);
  font-weight: 400;
  font-size: 13px;
  line-height: 19.5px;
}

/* Typography — Header/Bold/30 */
.typo-header-bold-30 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 30px;
  line-height: normal;
}

/* Typography — Header/Bold/30-38/ls-0.3 */
.typo-header-bold-30-38 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 30px;
  line-height: 37.5px;
  letter-spacing: -0.3px;
}

/* Typography — Header/Bold/30-48 */
.typo-header-bold-30-48 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 30px;
  line-height: 48px;
  letter-spacing: -0.3px;
}

/* Typography — Header/Bold/19 (release form titles) */
.typo-header-bold-19 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 19px;
  line-height: normal;
}

/* Typography — Header/Bold/16 (table component) */
.typo-header-bold-16 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 16px;
  line-height: normal;
}

/* Typography — Header/Bold/14 (table head) */
.typo-header-bold-14 {
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  line-height: normal;
}

/* Typography — Header/Regular/13 */
.typo-header-regular-13 {
  font-family: var(--font-heading);
  font-weight: 400;
  font-size: 13px;
  line-height: normal;
}

/* Typography — Header/Regular/15 */
.typo-header-regular-15 {
  font-family: var(--font-heading);
  font-weight: 400;
  font-size: 15px;
  line-height: normal;
}

.hero__title.typo-header-bold-40-48 {
  @media (max-width: 767px) {
    font-size: 26px;
    line-height: 31.2px;
    letter-spacing: -0.28px;
  }
}

.hero__text.typo-header-h2-regular {
  @media (max-width: 767px) {
    font-size: 16px;
    line-height: 22px;
  }
}

.cause-card__text.typo-body-regular-15 {
  @media (max-width: 767px) {
    font-size: 14px;
    line-height: 20px;
  }
}

.quiz__question.typo-header-bold-24 {
  @media (max-width: 767px) {
    font-size: 18px;
    line-height: 27px;
  }
}

.quiz__answers .btn--tile.typo-body-semibold-18 {
  @media (max-width: 767px) {
    font-size: 14px;
  }
}

.quiz-result__title.typo-header-bold-36-40 {
  @media (max-width: 767px) {
    font-size: 26px;
    line-height: 32px;
    letter-spacing: -0.28px;
  }
}

.quiz-result__text.typo-header-h2-regular {
  @media (max-width: 767px) {
    font-size: 16px;
    line-height: 22px;
  }
}

/* Project override: info text uses Medium (500), not Regular (400) */
.info-card__text.typo-body-regular-18-31 {
  font-weight: 500;
  @media (max-width: 767px) {
    font-size: 16px;
    line-height: 22px;
  }
}

/* —— UI Kit page (demo layout) —— */
.uikit {
  max-width: 1100px;
  margin: 0 auto;
  padding: 48px 24px 80px;
}

.uikit__section-title {
  margin: 0 0 32px;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 28px;
  line-height: 32px;
  color: var(--color-dark-900);
}

.uikit__block-title {
  margin: 48px 0 16px;
  font-family: var(--font-heading);
  font-weight: 600;
  font-size: 22px;
  color: var(--color-green-500);
}

.uikit__divider {
  height: 1px;
  background: var(--color-border-soft);
  margin-bottom: 16px;
}

.uikit-typo {
  display: grid;
  gap: 28px;
}

.uikit-typo__item {
  display: grid;
  gap: 8px;
}

.uikit-typo__meta {
  margin: 0;
  font-family: var(--font-body);
  font-size: 14px;
  line-height: 21px;
  color: var(--color-gray-400);
}

.uikit-typo__sample {
  margin: 0;
  color: #212121;
}

.uikit-swatches {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
}

.uikit-swatch {
  width: 96px;
  display: flex;
  flex-direction: column;
  gap: 4px;
}

.uikit-swatch__chip {
  width: 96px;
  height: 88px;
  border-radius: 8px;
  border: 1px solid var(--color-border-soft);
}

.uikit-swatch__label {
  margin: 0;
  font-family: var(--font-body);
  font-size: 13px;
  line-height: 18px;
  color: #89939e;
}

.uikit-btns {
  display: grid;
  gap: 40px;
}

.uikit-btns__viewport {
  margin: 0 0 16px;
  font-family: var(--font-body);
  font-size: 13px;
  font-weight: 700;
  color: #646e78;
}

.uikit-btns__grid {
  display: grid;
  grid-template-columns: auto 1fr 1fr;
  gap: 12px 24px;
  align-items: center;

  @media (max-width: 767px) {
    grid-template-columns: 1fr;
    gap: 8px;
  }
}

.uikit-btns__state {
  margin: 0;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 500;
  color: #646e78;
  min-width: 72px;

  @media (max-width: 767px) {
    margin-top: 12px;
  }
}

.uikit-btns__col-title {
  margin: 0 0 8px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 500;
  color: #646e78;
}

.uikit-btns__pair {
  display: contents;
}

.uikit-btns__extras {
  display: grid;
  gap: 20px;
  max-width: 560px;
}

.uikit-btns__label {
  margin: 0 0 8px;
  font-family: var(--font-body);
  font-size: 12px;
  font-weight: 500;
  color: #646e78;
}

.uikit-btns .btn.is-loading {
  position: relative;
}

.uikit-btns .uikit-btn-ghost {
  visibility: hidden;
  display: inline-flex;
  align-items: center;
  gap: 8px;
}

.uikit-btns .btn.is-loading .uikit-btn-ghost img {
  display: inline-block;
}

.uikit-btns .uikit-btn-status {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
}

.uikit-components {
  display: grid;
  gap: 40px;
}

.uikit-components__row {
  display: grid;
  grid-template-columns: 820px 390px;
  gap: 32px;
  align-items: start;

  @media (max-width: 1024px) {
    grid-template-columns: 1fr;
  }
}

.uikit-components__desktop {
  width: 820px;
  max-width: 100%;

  @media (max-width: 1024px) {
    width: 100%;
  }
}

.uikit-components__label {
  margin: 0 0 12px;
  font-family: var(--font-body);
  font-size: 13px;
  color: var(--color-gray-400);
}

.uikit-components__mobile {
  width: 390px;
  max-width: 100%;
  padding-inline: 16px;
  box-sizing: border-box;

  @media (max-width: 1024px) {
    width: 100%;
  }
}

.uikit-num-row {
  display: flex;
  flex-wrap: wrap;
  gap: 16px;
  align-items: center;
}

/* UI Kit: force mobile look for footer accordion demo */
.uikit-footer-acc {
  display: grid;
  gap: 20px;
}

.uikit-footer-acc .footer-acc {
  border-bottom: 1px solid var(--color-border);
}

.uikit-footer-acc .footer-acc__summary {
  margin-bottom: 0;
  padding: 12px 0;
  cursor: pointer;
  pointer-events: auto;
}

.uikit-footer-acc .footer-acc__title {
  color: var(--color-dark-500);
}

.uikit-footer-acc .footer-acc__icon {
  display: block;
}

.uikit-footer-acc .footer-acc__list {
  display: grid;
  grid-template-rows: 0fr;
  transition: grid-template-rows 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.uikit-footer-acc .footer-acc__list-inner {
  overflow: hidden;
  gap: 8px;
  padding: 0 0 0 28px;
  transition: padding 0.6s cubic-bezier(0.4, 0, 0.2, 1);
}

.uikit-footer-acc .footer-acc.is-open .footer-acc__list {
  grid-template-rows: 1fr;
}

.uikit-footer-acc .footer-acc.is-open .footer-acc__list-inner {
  padding: 16px 0 16px 28px;
}

