/* Shared public typography, loaded LAST, including after optional block styles.
   Narrow display headings with lighter weight; normal-width reading text.
   Keep sizes here, not in individual block or entry-type stylesheets. */
:root {
    --font-body: "Sofia Sans", Arial, sans-serif;
    --font-heading: "Sofia Sans Extra Condensed", "Arial Narrow", sans-serif;
    --font-subheading: "Sofia Sans Semi Condensed", "Arial Narrow", sans-serif;
    --type-reading: 1.25rem;
    --type-reading-leading: 1.65;
    --type-body: var(--type-reading);
    --type-leading: var(--type-reading-leading);
    --type-card-body: 1rem;
    --type-card-heading: 1.25rem;
    --type-card-leading: 1.5;
    --type-ui: 1rem;
    --type-caption: .875rem;
    --type-h1: clamp(3.25rem, 7.6vw, 5.75rem);
    --type-h2: clamp(2.375rem, 5vw, 3.625rem);
    --type-h3: 1.6875rem;
}
body { font-family: var(--font-body); }
em, i { font-style: italic; font-weight: inherit; }
strong, b { font-weight: 700; }

/* Main and portaled biography dialogs share one type system.
   ID-level specificity wins over legacy component styles.
   Plain paragraphs, rich text, lists and unwrapped copy share the same scale. */
:is(#main, .people-bio-dialog),
:is(#main, .people-bio-dialog) :is(p, ul, ol, li, dl, dd, table),
:is(#main, .people-bio-dialog) :is(.cms-rich-copy, .cms-prose, .large-copy,
    .intro, .grant-detail-copy, .profile-intro-bio, .trust-note > div) {
    font-size: var(--type-body);
    line-height: var(--type-leading);
    letter-spacing: normal;
}
:is(#main, .people-bio-dialog) :is(h1, h2, h3, h4, h5, h6) {
    font-family: var(--font-heading);
    font-weight: 700;
    letter-spacing: -.025em;
    text-wrap: balance;
    overflow-wrap: anywhere;
}
:is(#main, .people-bio-dialog) h1 { font-size: var(--type-h1); font-weight: 600; line-height: .98; }
:is(#main, .people-bio-dialog) h2 { font-size: var(--type-h2); line-height: 1.05; }
:is(#main, .people-bio-dialog) h3 {
    font-family: var(--font-subheading);
    font-size: var(--type-h3);
    font-weight: 700;
    line-height: 1.15;
    letter-spacing: -.015em;
}
:is(#main, .people-bio-dialog) :is(h4, h5, h6) {
    font-family: var(--font-body);
    font-size: var(--type-body);
    font-weight: 700;
    line-height: 1.3;
    letter-spacing: normal;
}
:is(#main, .people-bio-dialog) :is(h1, h2, h3, h4, h5, h6) :is(strong, b) { font-weight: inherit; }

/* Cards are compact summaries, not long-form reading containers. */
#main :is(.catalog-card, .discovery-card, .program-listing-card, .person-card,
    .award-display-card, .award-winner-card, .work-card, .grant-card-grid > article,
    .program-feature, .program-list > article, .voice-card) {
    --type-body: var(--type-card-body);
    --type-leading: var(--type-card-leading);
    font-size: var(--type-body);
    line-height: var(--type-leading);
}
#main :is(.catalog-card, .discovery-card, .program-listing-card, .person-card,
    .award-display-card, .award-winner-card, .work-card, .grant-card-grid > article,
    .program-feature, .program-list > article, .voice-card) :is(h3, h4) {
    font-family: var(--font-subheading);
    font-size: var(--type-card-heading);
    font-weight: 600;
    line-height: 1.2;
    letter-spacing: -.015em;
}
/* A biography is full reading copy even in the no-JavaScript card fallback. */
.people-bio-panel {
    --type-body: var(--type-reading);
    --type-leading: var(--type-reading-leading);
}

/* Interface roles are not reading-copy exceptions tied to content blocks. */
.header nav, .header-menu > summary, .login-link,
.site-footer .footer-links, .site-footer .footer-links a, .record-edit-control,
:is(#main, .people-bio-dialog) :is(input, select, textarea, button, .button, .text-link, label,
    .breadcrumbs, .profile-meta, .story-byline, .field-help, .discovery-count,
    .browse-summary p, .program-listing-compact-name) {
    font-family: var(--font-body);
    font-size: var(--type-ui);
    line-height: 1.5;
}
:is(#main, .people-bio-dialog) :is(.eyebrow, .program-listing-cohort, .episode-type,
    figcaption, figcaption p, .cms-media-credit, .award-display-category) {
    font-size: var(--type-caption);
    line-height: 1.5;
}
:is(#main, .people-bio-dialog) .eyebrow { letter-spacing: .14em; }
:is(#main, .people-bio-dialog) .grant-detail-list summary { font-size: var(--type-body); line-height: 1.4; }
.site-footer .footer-name {
    font-family: var(--font-heading);
    font-size: var(--type-h2);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -.025em;
}

/* Native editorial blockquotes double as the opt-in pullquote treatment.
   Do not restyle imported quotations/embeds as decorative pullquotes. */
:is(#main, .people-bio-dialog) :is(.cms-prose:not(.wordpress-legacy), .cms-rich-copy) blockquote {
    margin: 2rem 0;
    padding: 1.25rem 0 0 clamp(1rem, 3vw, 1.875rem);
    border: 0;
    border-top: 5px solid var(--gold);
    color: inherit;
    font-family: var(--font-body);
    font-style: italic;
    font-weight: 500;
    font-size: clamp(1.6875rem, 3.1vw, 2.4375rem);
    line-height: 1.25;
}
:is(#main, .people-bio-dialog) :is(.cms-prose:not(.wordpress-legacy), .cms-rich-copy) blockquote :is(p, ul, ol, li) {
    font-size: inherit;
    line-height: inherit;
}
:is(#main, .people-bio-dialog) :is(.cms-prose:not(.wordpress-legacy), .cms-rich-copy) blockquote cite {
    display: block;
    margin-top: 1rem;
    font-size: var(--type-caption);
    font-style: normal;
    font-weight: 600;
}
