/* Public-site type scale. Keep these roles consistent across all routes.
   Page title: 52 / section title: 40 / content subheading: 22 / eyebrow: 12.
   Numbers, city labels and the five service glyphs are data/navigation, not headings. */
:root {
  --type-page: 52px;
  --type-section: 40px;
  --type-subtitle: 22px;
  --type-eyebrow: 12px;
}
#main h1 {
  font-family: var(--display);
  font-size: var(--type-page);
  font-weight: 700;
  line-height: 1.3;
  letter-spacing: -.025em;
  text-wrap: balance;
}
#main h2 {
  font-family: var(--display);
  font-size: var(--type-section);
  font-weight: 700;
  line-height: 1.35;
  letter-spacing: -.025em;
  text-wrap: balance;
}
#main :is(h3, .news-archive-copy h2, .service-detail h2,
  .home-news-copy strong, .assurance-list strong, .digital-list strong,
  .scenario-grid strong, .benefits b, .relay-party strong) {
  font-family: var(--display);
  font-size: var(--type-subtitle);
  font-weight: 600;
  line-height: 1.5;
  letter-spacing: 0;
  text-wrap: pretty;
}
#main :is(.eyebrow, .section-heading-group > span, .operations-heading > div > span,
  .assurance-heading > span, .strength-heading > span, .home-cta > div > span) {
  font-family: var(--body);
  font-size: var(--type-eyebrow);
  line-height: 1.5;
  font-weight: 650;
  letter-spacing: .13em;
  text-transform: uppercase;
}
#main .hero h1 > span { font-size: inherit; line-height: inherit; letter-spacing: inherit; }
/* Archive titles are slightly larger; homepage cards and article headings
   keep the shared type scale. Preserve the compact list's text line boxes. */
#main .news-archive-copy h2 { font-size: 24px; line-height: 1.375; }
#main .operation-copy h3 { margin-bottom: 16px; }
#main .section-head h2 { max-width: 100%; }
#main :is(h1, h2, h3) { scroll-margin-top: 120px; }
@media (max-width: 800px) {
  :root { --type-page: 34px; --type-section: 30px; --type-subtitle: 19px; }
  #main .news-archive-copy h2 { font-size: 20px; line-height: 1.425; }
  #main :is(h1, h2, h3) { scroll-margin-top: 85px; }
}
@media (max-width: 380px) {
  :root { --type-page: 28px; --type-section: 28px; }
}
/* Keep partner marks inside the two-column mobile grid, including CMS scaling. */
@media (max-width: 560px) {
  #main .partner-mark { width: 100%; min-width: 0; }
  #main .partner-mark img { width: calc(100% / max(1, var(--logo-scale, 1))); max-width: 154px; }
  #main .partner-mark b { max-width: 100%; overflow-wrap: anywhere; font-size: 16px; }
}
