/*
 * MSJ TYPOGRAPHY CLEAN V5.4
 * Purpose: reduce visual noise and oversized display type while preserving
 * the MSJ campaign identity, colours, layout, imagery, navigation and content.
 * Research basis: GCIS (SA government web guidance), GOV.UK Design System,
 * and USWDS typography guidance.
 */

/* A calmer body face for reading. Keep the campaign display face for headings. */
body.msj-pdf-theme {
  --msj-body: Arial, Helvetica, sans-serif;
  font-family: var(--msj-body);
  font-size: 16px;
  line-height: 1.55;
}

/* Header: still strong, but less visually aggressive. */
.msj-campaign-nav a {
  font-size: 13px !important;
  font-weight: 760 !important;
  letter-spacing: .015em !important;
}
.msj-vote-button {
  font-size: 15px !important;
  font-weight: 800 !important;
}
.msj-political-strip a {
  font-size: 10.5px !important;
  font-weight: 800 !important;
  letter-spacing: .035em !important;
}

/* Homepage hierarchy: reduce the "poster" feel but keep a clear hero. */
.msj-home-copy h1 {
  font-size: clamp(46px, 4.25vw, 68px) !important;
  line-height: .98 !important;
  letter-spacing: -.025em !important;
  font-weight: 800 !important;
  max-width: 820px !important;
}
.msj-home-copy .msj-lead {
  max-width: 760px !important;
  margin-top: 22px !important;
  font-size: clamp(16px, 1.15vw, 19px) !important;
  line-height: 1.58 !important;
  font-weight: 400 !important;
}
.msj-home-callout strong {
  font-size: clamp(20px, 1.55vw, 28px) !important;
  line-height: 1.08 !important;
  font-weight: 800 !important;
}
.msj-home-callout span { font-size: 14px !important; line-height: 1.45 !important; }
.msj-stat-row b { font-size: 30px !important; }
.msj-stat-row span { font-size: 12px !important; font-weight: 700 !important; }

/* Main campaign page titles. */
.msj-kicker {
  font-size: 13px !important;
  font-weight: 800 !important;
  letter-spacing: .04em !important;
}
.msj-section-title {
  font-size: clamp(34px, 3.25vw, 50px) !important;
  line-height: 1.03 !important;
  letter-spacing: -.015em !important;
  font-weight: 800 !important;
  padding-bottom: 14px !important;
}
.msj-section-title::after { width: 72px !important; height: 4px !important; }
.msj-section-intro {
  max-width: 900px !important;
  margin: 14px 0 28px !important;
  font-size: clamp(16px, 1.05vw, 18px) !important;
  line-height: 1.6 !important;
  font-weight: 400 !important;
}
.msj-panel-heading { font-size: 22px !important; font-weight: 800 !important; }

/* About / values cards. */
.msj-vision-panel h2 { font-size: 22px !important; font-weight: 800 !important; }
.msj-vision-panel strong { font-size: 21px !important; line-height: 1.35 !important; font-weight: 700 !important; }
.msj-vision-panel p { font-size: 16px !important; line-height: 1.62 !important; margin-top: 24px !important; }
.msj-dark-card b { font-size: 27px !important; }
.msj-dark-card h2,
.msj-dark-card h3 { font-size: 21px !important; line-height: 1.15 !important; font-weight: 800 !important; }
.msj-dark-card p { font-size: 16px !important; line-height: 1.58 !important; font-weight: 400 !important; }
.msj-mandate-bar strong { font-size: 18px !important; font-weight: 800 !important; }
.msj-mandate-bar span { font-size: 16px !important; line-height: 1.55 !important; }

/* Manifesto priorities. */
.msj-priority-card b { font-size: 27px !important; }
.msj-priority-card h2 { font-size: 21px !important; line-height: 1.12 !important; font-weight: 800 !important; }
.msj-priority-card p { font-size: 15px !important; line-height: 1.56 !important; }
.msj-cta-card h2 { font-size: 20px !important; line-height: 1.15 !important; }
.msj-cta-card p { font-size: 15px !important; line-height: 1.45 !important; }

/* Candidates: cleaner names and descriptions. */
.msj-candidate-copy { padding-top: 23px !important; }
.msj-candidate-copy > span { font-size: 15px !important; font-weight: 800 !important; }
.msj-candidate-copy h2 {
  margin-top: 16px !important;
  font-size: clamp(24px, 1.8vw, 29px) !important;
  line-height: 1.04 !important;
  font-weight: 800 !important;
}
.msj-candidate-copy small { font-size: 13px !important; font-weight: 700 !important; }
.msj-candidate-copy p { margin-top: 20px !important; font-size: 16px !important; line-height: 1.55 !important; }
.msj-candidate-principles { font-size: 13px !important; line-height: 1.4 !important; font-weight: 700 !important; }
.msj-candidate-copy .msj-btn { font-size: 14px !important; font-weight: 800 !important; }

/* Candidate profiles. */
.msj-profile-copy .msj-kicker { font-size: 14px !important; }
.msj-profile-copy .msj-section-title {
  font-size: clamp(34px, 3.4vw, 52px) !important;
  margin-bottom: 22px !important;
}
.msj-profile-copy h2 { font-size: 22px !important; font-weight: 800 !important; }
.msj-profile-copy p,
.msj-profile-copy li { font-size: 16px !important; line-height: 1.6 !important; font-weight: 400 !important; }

/* Get involved / form / follow card. */
.msj-accountability-strip strong { font-size: 21px !important; font-weight: 800 !important; }
.msj-accountability-strip span { font-size: 14px !important; font-weight: 700 !important; }
.msj-involved-actions .msj-dark-card b { font-size: 27px !important; }
.msj-involved-actions .msj-dark-card h2 { font-size: 20px !important; }
.msj-involved-actions .msj-dark-card p { font-size: 15px !important; line-height: 1.55 !important; }
.msj-involved-form h2 { font-size: 20px !important; font-weight: 800 !important; }
.msj-involved-form input,
.msj-involved-form textarea { font-size: 14px !important; font-weight: 500 !important; }
.msj-involved-message-row button { font-size: 16px !important; font-weight: 800 !important; }
.msj-follow-card h2 { font-size: 21px !important; font-weight: 800 !important; }
.msj-follow-card strong { font-size: 16px !important; font-weight: 800 !important; }
.msj-follow-card span,
.msj-follow-card p { font-size: 15px !important; line-height: 1.55 !important; }

/* Expanded homepage sections. */
.msj-politics-heading h2 {
  font-size: clamp(30px, 2.8vw, 42px) !important;
  line-height: 1.06 !important;
  letter-spacing: -.02em !important;
  font-weight: 800 !important;
}
.msj-politics-heading > p { font-size: 16px !important; line-height: 1.6 !important; }
.msj-news-body h3 { font-size: 19px !important; line-height: 1.2 !important; font-weight: 800 !important; }
.msj-news-body p { font-size: 15px !important; line-height: 1.6 !important; }
.msj-ward-copy h3 { font-size: 23px !important; line-height: 1.1 !important; font-weight: 800 !important; }
.msj-ward-copy p { font-size: 14px !important; line-height: 1.58 !important; }
.msj-home-priority-card > b { font-size: 25px !important; }
.msj-home-priority-card h3 { font-size: 17px !important; line-height: 1.2 !important; font-weight: 800 !important; }
.msj-home-priority-card p { font-size: 14px !important; line-height: 1.58 !important; }
.msj-connect-expansion h2 {
  font-size: clamp(32px, 3.4vw, 48px) !important;
  line-height: 1.04 !important;
  letter-spacing: -.02em !important;
  font-weight: 800 !important;
}
.msj-connect-lead { font-size: 16px !important; line-height: 1.62 !important; }
.msj-connect-steps strong { font-size: 16px !important; font-weight: 800 !important; }
.msj-connect-steps span { font-size: 14px !important; line-height: 1.55 !important; }
.msj-action-grid h3 { font-size: 19px !important; font-weight: 800 !important; }
.msj-action-grid p { font-size: 15px !important; line-height: 1.6 !important; }
.msj-join-banner h2 {
  font-size: clamp(30px, 2.8vw, 40px) !important;
  line-height: 1.08 !important;
  font-weight: 800 !important;
}
.msj-join-banner p { font-size: 16px !important; line-height: 1.58 !important; }

/* Managed WordPress pages: replace billboard-scale headings with a civic-service scale. */
.page-hero h1 {
  max-width: 880px !important;
  font-size: clamp(34px, 3.2vw, 50px) !important;
  line-height: 1.05 !important;
  letter-spacing: -.02em !important;
  font-weight: 800 !important;
}
.page-hero-inner > p:not(.public-eyebrow) {
  max-width: 760px !important;
  font-size: 17px !important;
  line-height: 1.62 !important;
}
.public-eyebrow { font-size: 11px !important; font-weight: 800 !important; letter-spacing: .11em !important; }
.section h2,
.public-callout h2,
.manifesto-section h2,
.service-boundary h2,
.verification-note h2 {
  font-size: clamp(28px, 2.6vw, 42px) !important;
  line-height: 1.08 !important;
  letter-spacing: -.02em !important;
  font-weight: 800 !important;
}
.section-lead,
.editorial-copy p { font-size: 16px !important; line-height: 1.65 !important; }
.editorial-copy .lead-copy { font-size: clamp(20px, 1.8vw, 28px) !important; line-height: 1.4 !important; font-weight: 650 !important; }
.commitment-heading h2 { font-size: clamp(30px, 2.8vw, 44px) !important; line-height: 1.08 !important; }
.commitment-grid h3 { font-size: 22px !important; }
.information-grid strong { font-size: 21px !important; }
.home-news-feature strong { font-size: clamp(22px, 2vw, 30px) !important; line-height: 1.15 !important; }
.manifesto-section blockquote { font-size: clamp(20px, 1.8vw, 28px) !important; line-height: 1.4 !important; }
.numbered-principles h3 { font-size: 22px !important; }

/* Buttons: quieter and more interface-like. */
.msj-btn,
.button,
.connect-button,
.msj-vote-button { letter-spacing: .01em !important; }

/* Reading width: prevent long text from stretching across the screen. */
.msj-section-intro,
.msj-home-copy .msj-lead,
.msj-profile-copy p,
.page-hero-inner > p:not(.public-eyebrow),
.section-lead,
.editorial-copy p { max-width: 72ch; }

/* Tablet */
@media (max-width: 1080px) {
  .msj-home-copy h1 { font-size: clamp(42px, 6vw, 58px) !important; }
  .msj-section-title { font-size: clamp(32px, 5vw, 44px) !important; }
  .page-hero h1 { font-size: clamp(32px, 5vw, 44px) !important; }
  .msj-candidate-copy h2 { font-size: 27px !important; }
  .msj-profile-copy .msj-section-title { font-size: 42px !important; }
}

/* Mobile */
@media (max-width: 760px) {
  body.msj-pdf-theme { font-size: 16px; line-height: 1.55; }
  .msj-campaign-nav a { font-size: 15px !important; }
  .msj-home-copy h1 { font-size: clamp(38px, 11vw, 52px) !important; line-height: 1 !important; }
  .msj-home-copy .msj-lead { font-size: 16px !important; line-height: 1.58 !important; }
  .msj-section-title { font-size: clamp(30px, 9vw, 40px) !important; line-height: 1.05 !important; }
  .msj-section-intro { font-size: 16px !important; }
  .page-hero h1 { font-size: clamp(30px, 9vw, 40px) !important; }
  .page-hero-inner > p:not(.public-eyebrow) { font-size: 16px !important; }
  .msj-candidate-copy h2 { font-size: 26px !important; }
  .msj-profile-copy .msj-section-title { font-size: 38px !important; }
  .msj-profile-copy p,
  .msj-profile-copy li { font-size: 16px !important; }
  .msj-politics-heading h2,
  .msj-connect-expansion h2,
  .msj-join-banner h2 { font-size: clamp(28px, 8vw, 36px) !important; }
  .section h2,
  .public-callout h2,
  .manifesto-section h2,
  .service-boundary h2,
  .verification-note h2 { font-size: clamp(26px, 8vw, 36px) !important; }
}
