/* Shared type scale. Loaded by both site layouts and the compact links page.
   These semantic content scopes deliberately outrank legacy page selectors.
   The embedded .report-viewer, navigation, and brand wordmarks are not content
   scopes: they retain the typography appropriate to their UI roles. */
:root {
    --type-page-title: 3rem;
    --type-section-title: 2.25rem;
    --type-card-title: 1.375rem;
    --type-subheading: 1.125rem;
    --type-lead: 1.125rem;
    --type-body: 1rem;
    --type-detail: .875rem;
    --type-label: .75rem;
    --type-heading-weight: 500;
    --type-card-weight: 600;
    --type-title-leading: 1.12;
    --type-section-leading: 1.2;
    --type-card-leading: 1.3;
    --type-body-leading: 1.7;
}
@media (max-width: 900px) {
    :root { --type-page-title: 2.625rem; --type-section-title: 2rem; }
}
@media (max-width: 600px) {
    :root {
        --type-page-title: 2.125rem;
        --type-section-title: 1.75rem;
        --type-card-title: 1.25rem;
        --type-lead: 1rem;
    }
}

:is(#main-content, .blog-page, .blog-article, .report-intro) h1 {
    font-size: var(--type-page-title);
    font-weight: var(--type-heading-weight);
    line-height: var(--type-title-leading);
    letter-spacing: -.04em;
    text-wrap: balance;
}
:is(#main-content, .blog-page, .blog-article, .report-intro) h2 {
    font-size: var(--type-section-title);
    font-weight: var(--type-heading-weight);
    line-height: var(--type-section-leading);
    letter-spacing: -.03em;
    text-wrap: balance;
}
:is(#main-content, .blog-page, .blog-article) h3,
:is(#main-content, .blog-page) .blog-card-title {
    font-size: var(--type-card-title);
    font-weight: var(--type-card-weight);
    line-height: var(--type-card-leading);
    letter-spacing: -.02em;
    text-wrap: balance;
}
:is(#main-content, .blog-page, .blog-article) :is(h4, h5, h6) {
    font-size: var(--type-subheading);
    font-weight: var(--type-card-weight);
    line-height: var(--type-card-leading);
    letter-spacing: -.01em;
}
:is(#main-content, .blog-page, .blog-article, .report-intro) :is(h1, h2, h3) > span {
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: inherit;
}
:is(#main-content, .blog-page, .blog-article) p {
    font-size: var(--type-body);
    font-weight: 400;
    line-height: var(--type-body-leading);
    letter-spacing: normal;
}
/* Page and section introductions share the lead role. Card descriptions use
   the body role, even when a legacy template called them "small". */
#main-content :is(.page-hero-copy, .platform-hero-copy, .about-hero-content,
    .legal-hero-content, .section-heading, .edge-copy, .close-loop-copy,
    .peace-copy, .compliance-copy, .combine-copy, .contact-copy, .product-cta-copy) > p:not(.use-case-hero-label),
:is(#main-content, .blog-page, .report-intro) .type-lead,
.report-cta .type-lead {
    font-size: var(--type-lead);
    font-weight: 400;
    line-height: var(--type-body-leading);
    letter-spacing: normal;
}
/* Compact explanatory text inside diagrams and UI, not marketing descriptions. */
#main-content .platform-flow p,
#main-content .form-status,
:is(#main-content, .blog-article) .blog-byline {
    font-size: var(--type-detail);
    font-weight: 400;
    line-height: 1.5;
    letter-spacing: normal;
}
#main-content :is(.eyebrow, .platform-kicker, .legal-eyebrow, .use-case-hero-label),
:is(#main-content, .blog-page, .report-intro) .type-eyebrow {
    font-size: var(--type-label);
    font-weight: 700;
    line-height: 1.5;
    letter-spacing: .12em;
    text-transform: uppercase;
}
/* Markdown and legal prose share a reading size, including list items. */
:is(#main-content, .blog-article) :is(.post-body, .legal-prose) {
    font-size: var(--type-body);
    line-height: var(--type-body-leading);
}
:is(#main-content, .blog-article) :is(.post-body, .legal-prose) li {
    font-size: var(--type-body);
    line-height: var(--type-body-leading);
}
/* The links utility has compact labels rather than marketing headings. */
:root .links-page .links-copy strong {
    font-size: var(--type-body);
    font-weight: var(--type-card-weight);
    line-height: 1.3;
}
:root .links-page .links-copy small {
    font-size: var(--type-detail);
    line-height: 1.5;
}
