/* Type formula: every text role takes its size, weight and style from here.
   Italic is the voice (page titles, quotes, taglines, the closing line).
   Upright serif 500 names things; upright serif 400 counts them.
   Sans 400 reads, sans 500 labels and acts. No other weights are loaded.
   Five sizes only: display, heading, sub, body, small. */
:root {
  --t-display: clamp(56px, 6.1vw, 88px);
  --t-heading: clamp(34px, 3.4vw, 48px);
  --t-sub: clamp(22px, 1.8vw, 26px);
  --t-body: 16px;
  --t-small: 13px;
}
@media (max-width: 760px) {
  :root { --t-display: 44px; --t-heading: 30px; --t-sub: 20px; --t-body: 15px; --t-small: 12px; }
}

/* Italic titles */
.hero h1 .serif { font-size: var(--t-display); font-style: italic; font-weight: 500; }
.page-head h1 { font-size: var(--t-display); font-style: italic; font-weight: 500; }

/* Upright headings */
.h2, .h2--xl, .h2--xxl, .home-refined .h2, .home-refined .h2--xl, .home-refined .h2--xxl,
.next strong, .stats b { font-size: var(--t-heading); font-style: normal; font-weight: 500; }
.h3, .values h3, .topic h3, .reason h3, .path .name, .notice h2 { font-size: var(--t-sub); font-style: normal; font-weight: 500; }
.gains h3, #why .gains h3, .item h3, .steps h3, .student b, .res b, .faq summary, .home-refined .faq summary,
.mini dd, .facts span, .schedule time, .schedule .date, .years b, .works summary, .works__papers b, .path .when,
.atlas__list .name, #explore .atlas__list .name { font-size: var(--t-sub); font-style: normal; font-weight: 500; }

/* The voice: quotes, taglines and closing lines */
.cta__copy h2 { font-size: var(--t-heading); font-style: italic; font-weight: 400; }
.quote p, .asks > li, .symbol__close, .atlas__q, #explore .atlas__q { font-size: var(--t-sub); font-style: italic; font-weight: 400; }
.tagline, .epi p, #explore .explore-head .epi p, .heritage-quote p, .topic q, .year__sub, .pullq, .foot__tag { font-size: var(--t-sub); font-style: italic; font-weight: 400; }

/* Numbers */
.values .num, .gains .num, #why .gains .num, .steps > li::before { font-size: var(--t-sub); font-style: normal; font-weight: 400; }
.year__num { font-size: var(--t-display); font-style: normal; font-weight: 400; }
.hero h1 .nation { font-size: var(--t-heading); }
.atlas__list .num, .topic .num, .reason .num, .keywords { font-size: var(--t-small); font-weight: 400; }

/* Reading text */
body, .home-refined, .prose p, .sec__body .prose p:first-child, .home-refined .sec__body .prose p:first-child,
.lead, .sec__side .lead, .sec__lead, .hero__description, .explore-intro, #explore .explore-intro, .spec dd, .topic--full p,
.gains p, .home-refined .gains p, #why .gains p, .item p, .steps p, .path p, .schedule p, .years p, .works__list li, .checks > li,
.works__papers li, .home-refined .faq .ans, .cta__copy p { font-size: var(--t-body); font-weight: 400; }
.schedule h3 { font-size: var(--t-body); font-weight: 500; }

/* Small text that acts or supports */
.btn, .btn--sm, .hero__cta .btn, .link, .hero__cta .link, .nav a, .nav .nav__sub a, .nav .nav__lang a, .tabs a, .lang, .subhead,
.spec dt, .person .role, .student em { font-size: var(--t-small); font-weight: 500; }
.person-home__role, .student span, .res span, .epi cite, .quote cite, .heritage-quote cite, figcaption, .atlas__fig, .atlas__hint,
.works__papers span, .works__papers li > :first-child:not(b), .stats span, .small, .site-footer { font-size: var(--t-small); font-weight: 400; }
.nav .nav__sub a { font-weight: 400; }

/* Labels */
.brand span, .brand b { font-size: var(--t-small); }
.label, .facts b, .mini dt, .foot h2, .tag, .hero__status, .hero__eyebrow { font-size: var(--t-small); font-weight: 500; }
.topic .en, .item .en { font-size: var(--t-small); font-weight: 400; }

/* Emphasis inside text is one step, never bold */
b, strong, .lang a[aria-current], .epi cite b, .quote cite b, .symbol__text b, .heritage-quote cite b { font-weight: 500; }
.faq summary::after, .works summary::after { font-size: var(--t-sub); font-weight: 400; }

@media (max-width: 760px) {
  #explore .atlas__list .name, .atlas__list .name { font-size: var(--t-small); }
  .bar .brand::before { font-size: var(--t-heading); }
  .bar .brand span { font-size: var(--t-small); line-height: 1.25; letter-spacing: .06em; }
}

/* Roman numerals at number size need their own column */
@media (min-width: 761px) {
  #why .gains li { grid-template-columns: 44px minmax(0, 1fr); column-gap: 10px; }
  #why .gains .num { padding-top: 0; line-height: 1.1; }
  #why .gains h3 { align-self: start; padding-top: 5px; }
}
