/* Tipografia do site público. Tamanhos, pesos, espaçamentos e cores permanecem nos componentes. */
html body {
  font-family: var(--font-body, 'DM Sans', system-ui, sans-serif);
}

/* Títulos principais de páginas, seções, cards e estados vazios. */
#conteudo h1,
#conteudo h2,
#conteudo h3,
#conteudo h4,
#conteudo .candidate-number,
#conteudo .hero-wordmark,
#conteudo .portrait-placeholder,
#conteudo .bio-placeholder strong,
#conteudo .material-art strong,
#conteudo .material-art > span,
#conteudo .timeline-year,
#conteudo .join-badge strong,
#conteudo .download-placeholder,
#conteudo .photo-campaign-placeholder strong,
#conteudo .empty-state strong,
#conteudo .error-page > div > span,
#conteudo .jingles-empty strong,
#conteudo .jingles-decoration,
.site-footer .footer-candidate {
  font-family: var(--font-heading, 'League Spartan', 'DM Sans', sans-serif);
}

/* Chamadas curtas, marcadores, datas e metadados. */
#conteudo .eyebrow,
#conteudo [class*="-eyebrow"],
#conteudo [class*="-kicker"],
#conteudo time,
#conteudo .hero-office,
#conteudo .join-badge span,
#conteudo .album-detail-meta,
#conteudo .biography-office,
#conteudo .album-gallery-heading p,
#conteudo .album-gallery-heading h2,
#conteudo .timeline-preview article > span,
#conteudo .bio-photo-empty,
#conteudo .lightbox-position,
#conteudo .photo-campaign-placeholder span,
#conteudo .santinho-list-hero > .container > span,
#conteudo .santinho-entry-copy > span,
#conteudo .hero-copy h2,
#conteudo .jingle-title-row > div > span,
#conteudo .jingle-title-row > strong,
#conteudo .jingle-progress-row time,
.site-footer .footer-kicker,
.site-footer h2,
.site-footer h3 {
  font-family: var(--font-subheading, 'League Spartan', 'DM Sans', sans-serif);
}

#conteudo .portrait-placeholder small,
#conteudo .photo-share-notice,
#conteudo .photo-action::after {
  font-family: var(--font-body, 'DM Sans', system-ui, sans-serif);
}

/* Botões, CTAs e controles textuais do conteúdo público. */
#conteudo button,
#conteudo .btn,
#conteudo .banner-button,
#conteudo .card-button,
#conteudo .text-link,
#conteudo .album-button,
#conteudo .albums-all a,
#conteudo .back-link,
#conteudo .photo-action,
#conteudo .photo-action.action-social small,
#conteudo .lightbox-actions a,
#conteudo .biography-action,
#conteudo .photo-campaign-copy > span,
#conteudo .jingle-download,
#conteudo .jingle-whatsapp,
#conteudo .santinho-entry-copy b,
#conteudo .santinho-file-label > span,
#conteudo .santinho-actions button,
#conteudo .santinho-reset,
#conteudo .santinho-button-row button,
.main-nav .nav-cta {
  font-family: var(--font-button, 'League Spartan', 'DM Sans', sans-serif);
}

/* Navegação. O CTA do cabeçalho permanece na categoria Botões. */
.site-header .brand,
.site-header .main-nav > a:not(.nav-cta),
.site-footer .footer-grid > div:nth-child(2) > a {
  font-family: var(--font-menu, 'League Spartan', 'DM Sans', sans-serif);
}

/* Overrides individuais: quando o editor define uma fonte, ela vence a categoria global. */
#conteudo .hero-copy h1 {
  font-family: var(--hero-title-font, var(--font-heading, 'League Spartan', sans-serif));
}

#conteudo .bio-person-label strong { font-family: var(--bio-name-font, var(--font-heading)); }
#conteudo .bio-person-label span { font-family: var(--bio-office-font, var(--font-subheading)); }
#conteudo .bio-candidate-copy .eyebrow { font-family: var(--bio-eyebrow-font, var(--font-subheading)); }
#conteudo .bio-candidate-copy h2 { font-family: var(--bio-title-font, var(--font-heading)); }
#conteudo .bio-candidate-copy .bio-full-name { font-family: var(--bio-full-name-font, var(--font-body)); }
#conteudo .bio-candidate-copy .btn { font-family: var(--bio-button-font, var(--font-button)); }
#conteudo .photo-campaigns-hero h1 { font-family: var(--photo-title-font, var(--font-heading)); }
#conteudo .jingles-heading h1 { font-family: var(--jingles-title-font, var(--font-heading)); }

@media (max-width: 767px) {
  #conteudo h1,
  #conteudo h2,
  #conteudo h3,
  #conteudo h4 {
    max-width: 100%;
  }
}
