/* TSP Code 1 reader roles, based on the approved desktop and 390px Home.
   The dedicated Business template supplies its own editorial typography. */
body.tsp-site-design {
    --tsp-type-caption: .75rem;
    --tsp-type-footer-date: .8125rem;
    --tsp-type-data: .875rem;
    --tsp-type-ui: .875rem;
    --tsp-type-copy: 1rem;
    --tsp-type-article: 1.0625rem;
    --tsp-type-list-title: .90625rem;
    --tsp-type-card-title: 1.25rem;
    --tsp-type-panel-title: 1.125rem;
    --tsp-type-lead-title: 1.375rem;
    --tsp-type-page-title: 1.375rem;
    --tsp-type-match-title: 1.375rem;
    --tsp-type-lead-leading: 1.22;
    --tsp-type-lead-weight: 700;
    --tsp-type-panel-weight: 750;
    --tsp-type-latest-title: 1.25rem;
    --tsp-type-latest-link: .78125rem;
    --tsp-type-latest-weight: 400;
    --tsp-type-score: 1.25rem;
    --tsp-type-team: .875rem;
    --tsp-type-quick-link: .78125rem;
    --tsp-type-quick-weight: 400;
    --tsp-type-rating-tab-weight: 720;
    font-size: var(--tsp-type-copy);
    line-height: 1.5;
}

@media (max-width: 760px) {
    body.tsp-site-design {
        --tsp-type-caption: .8125rem;
        --tsp-type-data: .9375rem;
        --tsp-type-article: 1rem;
        --tsp-type-list-title: 1rem;
        --tsp-type-card-title: 1.4375rem;
        --tsp-type-panel-title: 1.25rem;
        --tsp-type-lead-title: 1.75rem;
        --tsp-type-page-title: 1.75rem;
        --tsp-type-match-title: 1.75rem;
        --tsp-type-lead-leading: 1.12;
        --tsp-type-lead-weight: 800;
        --tsp-type-panel-weight: 800;
        --tsp-type-latest-link: 1rem;
        --tsp-type-latest-weight: 650;
        --tsp-type-score: 1.75rem;
        --tsp-type-team: 1rem;
        --tsp-type-quick-link: .875rem;
        --tsp-type-quick-weight: 650;
        --tsp-type-rating-tab-weight: 700;
    }
}

/* Defaults for new or unstyled editorial markup. Native scoreboards, archive
   rows, forms and editorial features have their own roles further below. */
.tsp-site-design :where(main h1) {
    font-size: var(--tsp-type-page-title);
    line-height: var(--tsp-type-lead-leading);
    font-weight: var(--tsp-type-lead-weight);
    overflow-wrap: anywhere;
}

.tsp-site-design :where(main h2) {
    font-size: var(--tsp-type-panel-title);
    line-height: 1.25;
}

.tsp-site-design :where(main h3) {
    font-size: var(--tsp-type-card-title);
    line-height: 1.3;
}

.tsp-site-design :where(main figcaption, main time, main small, main legend) {
    font-size: var(--tsp-type-caption);
    line-height: 1.4;
}

.tsp-site-design :where(form button, form input, form select, form textarea) {
    font-family: inherit;
    font-size: var(--tsp-type-copy);
}

/* Desktop toolbar, league menus and mobile navigation. */
@media (min-width: 820px) {
    .tsp-site-design #tsp-desktop-toolbar[data-tsp-desktop-toolbar] {
        --tsp-toolbar-link-size: clamp(.75rem, .56rem + .35vw, .875rem);
    }
}

@media (min-width: 761px) {
    .tsp-site-design #tsp-desktop-toolbar[data-tsp-desktop-toolbar]
        :is(#tsp-departments > a, #tsp-departments > span > a) {
        font-weight: 600 !important;
    }
}

.tsp-site-design .tsp-toolbar-context :is(a, button),
.tsp-site-design .tsp-sports-menu :is(a, button),
.tsp-site-design #tsp-mobile-masthead > :is(a, button),
.tsp-site-design #tsp-mobile-masthead .tsp-mobile-menu > summary,
.tsp-site-design #tsp-mobile-masthead .tsp-mobile-drawer-rail :is(a, button),
.tsp-site-design .tsp-mobile-context :is(a, summary) {
    font-size: var(--tsp-type-data);
}

.tsp-site-design #tsp-mobile-masthead .tsp-mobile-drawer-content a {
    font-size: .9375rem;
}

.tsp-site-design #tsp-mobile-masthead .tsp-mobile-drawer h2,
.tsp-site-design #tsp-mobile-league-shortcuts .tsp-mobile-shortcut-label {
    font-size: var(--tsp-type-caption);
}

.tsp-site-design .tsp-toolbar-context .tsp-toolbar-context-title {
    font-size: var(--tsp-type-card-title);
}

/* Live ticker and match lists. Score figures always get their own emphasis. */
.tsp-site-design #tsp-league-scores:is([data-tls-home], [data-tls-league]) .tls-league,
.tsp-site-design #tsp-league-scores :is(.tls-team, .tls-team-link, .tls-team-name) {
    font-size: .78125rem;
}

.tsp-site-design #tsp-league-scores .tls-score {
    font-size: .8125rem;
    line-height: 1.1;
}

.tsp-site-design #tsp-league-scores article.tls-game :is(
    .tls-game-status, .tls-record, .tls-broadcast, .tls-situation, .tls-extra
),
.tsp-site-design #tsp-league-scores :is(.tls-full, .tls-slate-label, .tls-note) {
    font-size: var(--tsp-type-caption);
    line-height: 1.25;
}

.tsp-site-design #tsp-league-scores article.tls-game .tls-game-status {
    font-size: .65625rem;
    line-height: 1.2;
}

.tsp-site-design :is(.tls-score, .tsp-full-nfl-total, .tsp-redesign-board-team strong, .tsp-pro-score-team strong) {
    font-variant-numeric: tabular-nums;
}

.tsp-site-design :is(
    .tsp-home-scoreboard-team-name, .tsp-redesign-board-team, .tsp-pro-score-team b,
    .tsp-full-nfl-team strong, .nfs-game-team, .nbs-game-team, .nhs-game-team,
    .mbs-game-team, .sc-game-teams .sc-team
) {
    font-size: var(--tsp-type-ui);
    line-height: 1.3;
}

.tsp-site-design :is(
    .tsp-redesign-board-status, .tsp-pro-score-status, .tsp-full-nfl-status,
    .nfs-game-status, .nbs-game-status, .nhs-game-status, .mbs-game-status,
    .nfs-game-info, .nbs-game-info, .nhs-game-info, .mbs-game-info,
    .tsp-game-state > small, .tsp-game-team > small, .sgp-game-status small, .sgp-venue
) {
    font-size: var(--tsp-type-caption);
    line-height: 1.35;
}

.tsp-site-design .tsp-pro-score-status small,
.tsp-site-design .tsp-full-nfl-board .tsp-full-nfl-leaders li > span:first-child,
.tsp-site-design :is(.nfs-game-team, .nbs-game-team, .nhs-game-team, .mbs-game-team) small {
    font-size: var(--tsp-type-caption);
}

/* Page headings and panels used by departments, directories and data pages. */
.tsp-site-design :is(
    .tsp-department-heading, .tsd-heading, .ttr-page-heading, .tbr-page-heading,
    .tsp-vp-heading, .v9-page-heading, .tsp-th-identity, .spp-identity, .spp-profile-hero,
    .nfs-heading, .nbs-heading, .nhs-heading, .mbs-heading, .tsp-soccer
) h1 {
    font-size: var(--tsp-type-page-title);
    line-height: var(--tsp-type-lead-leading);
    font-weight: var(--tsp-type-lead-weight);
    overflow-wrap: anywhere;
}

.tsp-site-design .tsp-fr .tsp-vp-heading h1,
.tsp-site-design .tsp-visitor-experience .tsp-department-heading h1,
.tsp-site-design.tsp-homepage.tsp-department.tsp-editorial-front main#tsp-stories .tsp-department-heading h1 {
    font-size: var(--tsp-type-page-title);
}

.tsp-site-design .tsp-season-game h1 {
    font-size: var(--tsp-type-match-title);
    line-height: 1.15;
}

.tsp-site-design .tsp-fo-page .tsp-u-masthead h1 {
    font-size: var(--tsp-type-page-title) !important;
    line-height: 1.12;
}

:root[data-typeface="clean"] body.tsp-site-design.tsp-layout-refined.tsp-department main#tsp-stories > .tsp-department-heading h1 {
    font-size: var(--tsp-type-page-title) !important;
    line-height: var(--tsp-type-lead-leading) !important;
}

/* Existing front styles use !important for these headings. Match those
   declarations at the shared layout boundary. */
.tsp-site-design main#tsp-stories :is(.tsp-lead-copy, .v3-lead-copy) :is(h1, h2),
.tsp-site-design.tsp-home-v3 main#tsp-stories.v3-page .v3-opening .v3-lead h1,
:root[data-typeface="clean"] body.tsp-site-design.tsp-homepage.tsp-department.tsp-editorial-front
    main#tsp-stories .tsp-front-lead .tsp-lead-copy h2 {
    font-size: var(--tsp-type-lead-title) !important;
    line-height: var(--tsp-type-lead-leading) !important;
    font-weight: var(--tsp-type-lead-weight) !important;
}

.tsp-site-design .tsp-league-headlines .tsp-headline-link h3,
.tsp-site-design main#tsp-stories .tsp-headline-link h3,
.tsp-site-design.tsp-homepage .tsp-frontpage > .tsp-latest .tsp-headline-link h3,
.tsp-site-design.tsp-homepage.tsp-department main#tsp-stories .tsp-league-headlines .tsp-headline-link h3,
:root[data-typeface="clean"] body.tsp-site-design.tsp-department.tsp-layout-refined main#tsp-stories .tsp-league-headlines .tsp-headline-link h3 {
    font-size: var(--tsp-type-list-title) !important;
    line-height: 1.35 !important;
}

.tsp-site-design #tsp-stories .v3-latest li,
.tsp-site-design #tsp-stories .v3-related h3,
.tsp-site-design #tsp-stories .v3-reading-list h3 {
    font-size: var(--tsp-type-list-title);
    line-height: 1.35;
}

.tsp-site-design :is(
    .tsp-department-heading, .tsd-heading, .tsp-vp-heading, .ttr-page-heading,
    .tbr-page-heading, .v9-page-heading
) > p,
.tsp-site-design :is(.tsp-archive-intro, .tsp-fr-intro, .v11-chart-header p),
.tsp-site-design.tsp-homepage .tsp-lead .tsp-deck,
.tsp-site-design #tsp-stories.v3-page .v3-lead-copy p {
    font-size: var(--tsp-type-ui);
    line-height: 1.5;
}

.tsp-site-design.tsp-homepage .tsp-lead .tsp-deck {
    font-size: var(--tsp-type-ui) !important;
}

.tsp-site-design :is(
    .tsp-league-headlines > .tsp-section-heading h2, .tsp-th-section-heading h2,
    .spp-section-head h2, .spp-card-head h2, .sgp-section h2,
    .tsd-results h2, .ttr-edition h2, .tbr-heading-row h2, .v11-chart-header h2,
    .v3-latest .v3-section-head h2
) {
    font-size: var(--tsp-type-panel-title);
    line-height: 1.2;
    font-weight: var(--tsp-type-panel-weight);
}

.tsp-site-design.tsp-homepage.tsp-department.tsp-league-newsroom main#tsp-stories .tsp-league-headlines > .tsp-section-heading h2 {
    font-size: var(--tsp-type-panel-title) !important;
    line-height: 1.25 !important;
    flex: 0 1 auto;
    min-inline-size: 0;
}

.tsp-site-design .tsp-league-headlines > .tsp-section-heading > .tsp-section-line {
    min-inline-size: 0;
}

.tsp-site-design :is(.tsp-redesign-guide-group, #home-tv-guide) li :is(strong, b),
.tsp-site-design :is(.tsp-ratings-v8 .v8-copy > a, .v11-name, .v9-db-item h2),
.tsp-site-design .tsp-fr .tsp-vp-report > summary > strong {
    font-size: var(--tsp-type-list-title);
    line-height: 1.35;
}

.tsp-site-design .tsp-fr .tsp-vp-report > summary > strong {
    font-size: var(--tsp-type-list-title) !important;
}

.tsp-site-design :is(.tsp-home-ratings-table, .v11-rank-table, .v9-db-item) :is(th, small),
.tsp-site-design :is(.v11-source, .v11-period, .v11-phone-unit, .v9-db-kind, .tsp-fr-card-team),
.tsp-site-design :is(.tvg-item small, .tsp-redesign-guide-group time),
.tsp-site-design .tsp-fr .tsp-vp-report > summary > span > span {
    font-size: var(--tsp-type-caption);
}

body.tsp-site-design #tsp-stories #home-tv-ratings .tsp-home-ratings-tabs > button {
    font-size: var(--tsp-type-ui);
    line-height: 1.35;
    font-weight: var(--tsp-type-rating-tab-weight);
}

body.tsp-site-design #tsp-stories #home-tv-ratings > .tsp-home-ratings-head h2 {
    font-size: var(--tsp-type-panel-title);
    line-height: 1.2;
    font-weight: var(--tsp-type-panel-weight);
}

body.tsp-site-design #tsp-stories #home-tv-ratings .tsp-home-ratings-table .tsp-home-ratings-value {
    font-size: var(--tsp-type-data);
    line-height: 1.35;
    font-weight: 800;
}

.tsp-site-design .tsp-fr :is(.tsp-fr-card-status, .tsp-vp-report > summary > span > span) {
    font-size: var(--tsp-type-caption) !important;
}

/* Local context, schedule and statistics. The existing scrollable tables keep
   their own widths, so scaled copy stays readable at narrow widths. */
.tsp-site-design :is(
    .spp-tabs, .sgp-tabs, .nfs-team-tabs, .nbs-team-tabs, .nhs-team-tabs,
    .mbs-team-tabs, .tsp-th-context-links, .sc-tabs, .tsp-vp-nav, .tsp-fo-nav
) :is(a, button),
.tsp-site-design .tsp-fr .tsp-vp-nav a,
.tsp-site-design :is(.tsp-section-link, .tsp-archive-pagination a) {
    font-size: var(--tsp-type-ui);
    line-height: 1.35;
}

.tsp-site-design :is(
    .spp-table, .spp-stat-table, .sgp-table, .nfs-table, .nbs-table,
    .nhs-table, .mbs-table, .sc-table, .tbr-table, .ttr-table,
    .tsp-redesign-board-matchup table, .tsp-full-nfl-game table
) {
    font-size: var(--tsp-type-data);
    line-height: 1.35;
}

.tsp-site-design :is(
    .spp-table, .spp-stat-table, .sgp-table, .nfs-table, .nbs-table,
    .nhs-table, .mbs-table, .sc-table, .tbr-table, .ttr-table,
    .nhgc table, .tsp-live-game table
) :is(thead th, th small, td small),
.tsp-site-design :is(.spp-sources, .sgp-sources, .spp-opponent small, .spp-bio, .sgp-play-meta),
.tsp-site-design :is(.tbr-designation, .tbr-external, .tbr-note, .tbr-count, .tbr-checked),
.tsp-site-design .spp-profile-summary h2 {
    font-size: var(--tsp-type-caption);
}

.tsp-site-design .tsp-depth-nav :is(a, label) {
    font-size: var(--tsp-type-data);
    line-height: 1.35;
}

.tsp-site-design .page-preview[data-depth-content-edition] .team-header h1,
.tsp-site-design .tsp-depth-hero h1 {
    font-size: var(--tsp-type-page-title);
    line-height: 1.12;
}

.tsp-site-design .page-preview[data-depth-content-edition] :is(.section-heading, .line-heading, .offense-heading) h2 {
    font-size: var(--tsp-type-panel-title);
    line-height: 1.25;
}

.tsp-site-design .page-preview[data-depth-content-edition] :is(.team-header, .section-heading) p,
.tsp-site-design .page-preview[data-depth-content-edition] table {
    font-size: var(--tsp-type-data);
    line-height: 1.4;
}

.tsp-site-design .sgp-play-list p,
.tsp-site-design .tsp-live-game .tsp-game-note {
    font-size: var(--tsp-type-ui);
    line-height: 1.5;
}

/* Keep the display and text faces in stories, including feature and History
   editions. Size the standard reading experience for a phone. */
.tsp-site-design #tsp-standard-story .story-hero h1 {
    font-size: var(--tsp-type-page-title);
    line-height: var(--tsp-type-lead-leading);
    font-weight: var(--tsp-type-lead-weight);
    overflow-wrap: anywhere;
}

.tsp-site-design #tsp-standard-story .story-deck {
    font-size: clamp(1.125rem, 1rem + .5vw, 1.5rem);
    line-height: 1.45;
}

.tsp-site-design #tsp-standard-story .story-body,
.tsp-site-design .info-copy :is(p, li) {
    font-size: var(--tsp-type-article);
    line-height: 1.65;
}

.tsp-site-design #tsp-standard-story .story-body h2,
.tsp-site-design .info-copy h2 {
    font-size: clamp(1.5rem, 1.25rem + 1.6vw, 2.5rem);
    line-height: 1.15;
}

.tsp-site-design #tsp-standard-story :is(.story-meta, .story-feature figcaption, .story-related small),
.tsp-site-design :is(.info-eyebrow, .search-result small, .contact-field label) {
    font-size: var(--tsp-type-caption);
    line-height: 1.45;
}

.tsp-site-design .info-page .info-hero h1 {
    font-size: clamp(2.25rem, 1.45rem + 4.5vw, 5.5rem);
    line-height: 1;
    overflow-wrap: anywhere;
}

.tsp-site-design .search-result p,
.tsp-site-design :is(.tsp-home-quick-links, .tsp-quick-links) li a,
body.tsp-site-design.tsp-shared-quick-links .tsp-home-quick-links li a,
body.tsp-site-design.tsp-home-v3 .v3-quick-links .tsp-home-quick-links li > a {
    font-size: var(--tsp-type-ui);
    line-height: 1.4;
}

body.tsp-site-design:is(.tsp-shared-quick-links, .tsp-home-v3) .tsp-home-quick-links .quick-menu-heading h2 {
    font-size: var(--tsp-type-quick-link) !important;
    line-height: 1.35 !important;
    font-weight: var(--tsp-type-quick-weight) !important;
}

body.tsp-site-design.tsp-shared-quick-links .tsp-home-quick-links li > a,
body.tsp-site-design.tsp-home-v3 .v3-quick-links .tsp-home-quick-links li > a {
    font-size: var(--tsp-type-quick-link) !important;
    line-height: 1.35 !important;
    font-weight: var(--tsp-type-quick-weight) !important;
}

.tsp-site-design #latest-headlines > :is(header, .tsp-section-heading) h2,
.tsp-site-design.tsp-homepage.tsp-department.tsp-league-newsroom main#tsp-stories
    .tsp-league-headlines > .tsp-section-heading h2 {
    font-size: var(--tsp-type-latest-title) !important;
    line-height: 1.2 !important;
    font-weight: 800 !important;
}

.tsp-site-design #tsp-stories #latest-headlines li > a,
:root[data-typeface="clean"] body.tsp-site-design.tsp-department.tsp-layout-refined main#tsp-stories
    .tsp-league-headlines .tsp-headline-link h3 {
    font-size: var(--tsp-type-latest-link) !important;
    line-height: 1.4 !important;
    font-weight: var(--tsp-type-latest-weight) !important;
}

.tsp-site-design #latest-headlines > ul > li:not(:last-child) {
    border-bottom: 1px solid #e0e4e7;
}

.tsp-site-design.tsp-home-v3 #tsp-stories :is(#home-featured, .v3-band) > .v3-section-head h2,
.tsp-site-design .tsp-home-scoreboard-head .tsp-home-scoreboard-title {
    font-size: var(--tsp-type-panel-title) !important;
    line-height: 1.2 !important;
    font-weight: var(--tsp-type-panel-weight) !important;
}

.tsp-site-design.tsp-home-v3 #tsp-stories #home-featured .home-lead-list__lead h3,
.tsp-site-design.tsp-home-v3 #tsp-stories.v3-page .v3-band .v3-band-copy h3 {
    font-size: var(--tsp-type-card-title) !important;
    line-height: 1.25 !important;
    font-weight: var(--tsp-type-lead-weight) !important;
}

.tsp-site-design.tsp-home-v3 #tsp-stories :is(#home-featured, .v3-band) .v3-related h3,
.tsp-site-design.tsp-home-v3 #tsp-stories #home-featured .home-lead-list__headlines a,
:root[data-typeface="clean"] body.tsp-site-design.tsp-homepage.tsp-department.tsp-editorial-front
    main#tsp-stories .tsp-front-featured .tsp-front-card[data-section-slot^="support_"] h3 {
    font-size: var(--tsp-type-list-title) !important;
    line-height: 1.4 !important;
    font-weight: 650 !important;
}

.tsp-site-design .tsp-home-scoreboard .tsp-home-scoreboard-team-name {
    font-size: var(--tsp-type-team) !important;
    line-height: 1.35 !important;
}

.tsp-site-design .tsp-home-scoreboard .tsp-home-scoreboard-score:not(.tsp-home-scoreboard-record) {
    font-size: var(--tsp-type-score) !important;
    line-height: 1.1 !important;
    font-variant-numeric: tabular-nums;
}

.tsp-site-design :is(.tsp-home-scoreboard-team-score, .tsp-full-nfl-total,
    .tsp-redesign-board-team strong, .tsp-pro-score-team strong) {
    font-size: var(--tsp-type-score);
    line-height: 1.1;
    font-variant-numeric: tabular-nums;
}

.tsp-site-design :is(
    .tsp-footer nav, .footer .footer-copy, .story-footer .story-footer-links,
    .tsp-business-newspaper-footer
) a {
    font-size: var(--tsp-type-ui);
    line-height: 1.4;
}

.tsp-site-design #tsp-standard-story .story-footer a {
    font-size: var(--tsp-type-ui);
}

.tsp-site-design :is(
    .tsp-footer-meta p, .tsp-footer-date, .tsp-footer .tsp-tagline,
    .footer-copy, .footer-tagline, .story-footer, .tsp-business-newspaper-footer p
) {
    font-size: var(--tsp-type-caption);
    line-height: 1.5;
}

.tsp-site-design .tsp-footer .tsp-footer-meta p {
    font-size: var(--tsp-type-copy);
}

.tsp-site-design .tsp-footer .tsp-footer-date {
    font-size: var(--tsp-type-footer-date);
}

@media (max-width: 760px) {
    /* A 16px minimum prevents iOS form focus from zooming narrow pages. */
    .tsp-site-design :is(main, .tsp-mobile-drawer, dialog, .tsp-depth-nav) :is(
        input:not([type="checkbox"], [type="radio"], [type="range"]), select, textarea
    ) {
        font-size: max(16px, 1rem);
    }

    /* WordPress article templates carry a later 780px article-body declaration. */
    .tsp-site-design #tsp-standard-story .story-body > :is(p, ul, ol) {
        font-size: var(--tsp-type-article);
    }
}
