/* Sports Index web typography, adopted from the Home polish experiment.
   Load after page CSS. Typography only: no surfaces, colors, spacing or motion.
   Remove the single base.html include to revert this pass across the site.
   Native third-party embeds and article/post body text keep their own styles. */
:root {
  --si-type-display:800;
  --si-type-heading:750;
  --si-type-label:650;
  --si-type-control:600;
  --si-type-meta:550;
}
/* Display identity remains confident; supporting hierarchy is quieter. */
html body.si-themed :is(h1,.xf-bh-title,.nhb-hc-title,.upf-name,.team-community-intro h2,.home-plans-title) {
  font-weight:var(--si-type-display);
}
html body.si-themed :is(.team-masthead h2,.gp-section-head h2,.contact-page .si-shead-label,
  .team-column-head h3,.team-game-slide h2,.gp h3,.set-head h1,.content-job-title,
  .as-content h2,.team-community-quote blockquote,.nhb-more-title,.upf-rank-title) {
  font-weight:var(--si-type-heading);
}
/* Compact overlines retain their existing size and case on each surface. */
html body.si-themed :is(.si-shead-label,.xf-shead-label,.xf-tw-kicker,.sc-day-head b,
  .team-eyebrow,.gp-eyebrow,.pp-fact small,.shx-feat-kicker,.shx-chase-eyebrow,
  .nhb-hc-kicker,.nhb-tr-eyebrow,.nhb-card-team,.rkx-card-kicker,.upf-slot-label) {
  font-weight:var(--si-type-heading);
}
/* News, roster identities and ranking rows should not compete with the hero. */
html body.si-themed :is(.xf-trend-title,.xf-card-title,.xf-rk-team,.xf-sl-id b,
  .xf-tw-team b,.nhb-tr-body b,.nhb-card-title,.nhb-fs-title,.nhb-x-id b,
  .team-game-side,.team-standing-row b,.team-player-body b,.team-stat-scroll tbody th,
  .team-sample-video b,.team-perk h3,.pp-fact b,.pp-fact a,.pp-log-title,
  .sc-side b,.sc-poll-row b,.rkx-pollteam b,.rkx-mover-body b,.rkx-team b,
  .rkx-bcard-team,.rkx-ballot-id a,.shx-chase-name,.shx-side-row b,.shx-find-hit b,
  .shx-game b,.disc-author,.disc-composer-who,.upf-row-title,.upf-player-name,
  .upf-art-title,.upf-rank-name,.upf-fc-flagbody b,.set-row strong,
  .contact-info-label,.content-job-link .content-job-title) {
  font-weight:var(--si-type-label);
}
html body.si-themed .scf-feed :is(.scf-card-copy h3,.scf-author b) {
  font-weight:var(--si-type-label);
}
html body.si-themed :is(.xf-trend-title,.xf-card-title,.nhb-card-title) { line-height:1.45; }
/* Secondary facts: preserve tabular alignment and all stat-specific precision. */
html body.si-themed :is(.xf-shead-meta,.xf-tw-meta,.xf-rk-rec,.xf-tw-status i,
  .team-standing-row>span:nth-last-child(-n+2),.team-schedule-date,.shx-chase-school,
  .rkx-rec,.sc-grid-net,.upf-fc-season) { font-weight:var(--si-type-meta); }
html body.si-themed :is(.xf-trend-tag,.xf-tw-status b,.team-game-status,.team-rank,
  .team-standing-head,.team-stat-scroll thead th,.shx-thead,.rkx-sthead,.sc-standings-head) {
  font-weight:var(--si-type-label);
}
/* Shared navigation and action labels; selected state still comes from each owner. */
html body.si-themed :is(.site-rail-btn,.site-cbar a,.set-nav a) { font-weight:var(--si-type-meta); }
html body.si-themed .site-rail-btn.is-active { font-weight:700; }
html body.si-themed :is(.team-tabs button,.team-segments button,.team-select summary,
  .team-menu button,.team-standings-toggle,.team-primary,.gp-sidebar-tabs button,
  .sc-chip,.sc-vt,.sc-day-pill,.rkx-switch-btn,.shx-cats button,.shx-chips button,
  .nhb-filter-head,.upf-tab,.upf-btn,.set-button,.contact-submit-btn,.disc-post-btn) {
  font-weight:var(--si-type-control);
}
/* These legacy controls already declare font weights !important. */
html body.si-themed :is(.xf-conf,.xf-seg-btn,.xf-mini-btn) { font-weight:var(--si-type-control)!important; }
/* Home adopts the reviewed responsive headline, without the surface experiment. */
html body.si-themed.page-explore .xf-bh-title {
  display:block; -webkit-line-clamp:unset; overflow:visible; overflow-wrap:anywhere;
  font-size:clamp(28px,2.45vw,38px); letter-spacing:-1.15px; line-height:1.15; text-wrap:pretty;
}
html body.si-themed.page-explore .xf-trend-title { font-size:17px; letter-spacing:-.25px; -webkit-line-clamp:3; }
html body.si-themed.page-explore .xf-bh-dek { font-size:16px; line-height:1.65; }
html body.si-themed.page-explore :is(.xf-shead-label,.xf-tw-kicker) { font-size:11px; letter-spacing:1px; }
html body.si-themed.page-explore :is(.xf-shead-meta,.xf-tw-meta) { font-size:10px; letter-spacing:.5px; }
html body.si-themed.page-explore .xf-trend-tag { font-size:10px; letter-spacing:.65px; }
@media(max-width:900px) {
  html body.si-themed.page-explore .xf-bh-title { font-size:32px; }
}
@media(max-width:640px) {
  html body.si-themed.page-explore .xf-bh-title { font-size:28px; letter-spacing:-.7px; line-height:1.18; }
  html body.si-themed.page-explore .xf-trend-title { font-size:16px; }
}
/* Surfaces with ID-scoped legacy rules need matching ownership specificity. */
html body.si-themed #playHub :is(.si-shead-label,.ph-et-label,.ph-cardhead-kick) { font-weight:var(--si-type-heading); }
html body.si-themed #playHub :is(.ph-navtab,.ph-seg button,.fm-tab) { font-weight:var(--si-type-control)!important; }
html body.si-themed #playHub :is(.ph-cta,.ph-cta-sm,.ph-fr-wk b,.ph-poll-more) { font-weight:var(--si-type-label); }
html body.si-themed.admin-settings-mode #tab-content :is(h2,h3) { font-weight:var(--si-type-heading); }
html body.si-themed.admin-settings-mode #tab-content .content-job-title,
html body.si-themed .as-llm .llm-title { font-weight:var(--si-type-label); }
html body.si-themed .as-llm :is(.llm-meta dt,.llm-field label) { font-weight:var(--si-type-control); }
html body.si-themed .gp h2 { font-weight:var(--si-type-heading); }
