/* Shared type roles. Geometry belongs to site/design-system and page layouts;
   the table's responsive column policy below is the only layout exception. */
h1, .hero h1, .simple-page h1, .news-article h1 {
  font-size: var(--text-title);
  line-height: var(--line-title);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--tracking-heading);
}
h2, .section-heading h2, .chart-section-heading h2,
.project-dashboard .section-heading h2, .description-panel h2,
.indices-teaser h2, .index-card h2, .news-story h2, .project-dialog h2 {
  font-size: var(--text-heading);
  line-height: var(--line-heading);
  font-weight: var(--font-weight-medium);
  letter-spacing: var(--tracking-heading);
}
.breadcrumbs, .eyebrow, .hero .eyebrow, .info-panel > .eyebrow,
.indices-teaser .eyebrow, .live-label {
  font-size: var(--text-small);
  line-height: var(--line-body);
}
.hero-description, .prose, .simple-page > p, .index-card p,
.news-story p, .news-lead,
.project-empty p, .project-empty.compact p, .material-copy p {
  font-size: var(--text-body);
  line-height: var(--line-body);
}

.news-article .prose { font-size:var(--text-article); line-height:var(--line-article); }

/* Shared metric values and context follow the existing MVP reading scale. */
.stat-label, .project-stats .stat-label, .stat-caption,
.record-breakdown .stat-caption, .project-stats .stat-caption,
.domination-copy .stat-caption, .stat-card strong small {
  font-size: var(--text-small);
  line-height: var(--line-body);
  color: var(--color-muted);
}
.stat-value strong, .stat-card > strong, .project-stat-value > strong,
.availability-value > strong, .record-current > strong, .record-breakdown strong {
  font-size: var(--text-value);
  line-height: var(--line-value);
  font-weight: var(--font-weight-medium);
  letter-spacing: normal;
  color: var(--color-number);
}
.leader-name, .domination-copy .leader-name {
  font-size: var(--text-body);
  line-height: var(--line-body);
  overflow-wrap: anywhere;
}
.online-change, .change-cell .online-change, .project-stat-value .online-change,
.project-peak-strip, .chart-range, .chart-hint, .chart-status, .chart-legend,
.section-note, .project-dashboard .section-note, .chart-plot svg text {
  font-size: var(--text-small);
  line-height: var(--line-body);
}
.chart-tooltip, .domination-tooltip { font-size: var(--text-control); line-height: var(--line-body); }
.chart-tooltip strong, .domination-tooltip > strong, .chart-tooltip b { font-size: var(--text-body); }
.bar-value, .comparison-title { font-size: var(--text-body); }
.bar-label, .comparison-legend, .comparison-note { font-size: var(--text-small); line-height: var(--line-body); }

/* Prioritize name,
   online and queue as the available container narrows, without tiny type.
   These widths are data-density constraints, not a second spacing scale. */
.table-scroll { overflow-x: hidden; }
.catalog-table { min-width: 0; table-layout: fixed; }
.catalog-table th { font-size: var(--text-small); line-height: var(--line-body); }
.catalog-table td { font-size: var(--text-table); line-height: var(--line-body); }
.catalog-table th:first-child, .catalog-table td:first-child { width: auto; position: static; }
.catalog-table th:nth-child(2) { width: 84px; }
.catalog-table th:nth-child(3) { width: 72px; }
.catalog-table th:nth-child(4) { width: 78px; }
.catalog-table th:nth-child(5) { width: 70px; }
.catalog-table th:nth-child(6) { width: 80px; }
.catalog-table th:nth-child(7), .catalog-table th:nth-child(8) { width: 76px; }
.catalog-table th:nth-child(9) { width: 122px; }
.entity-copy strong { font-size: var(--text-table); line-height: var(--line-table); font-weight: var(--font-weight-medium); }
.online-cell strong { font-size: var(--text-body); line-height: var(--line-body); font-weight: var(--font-weight-medium); letter-spacing: normal; }
.language-tag, .language-fallback, .facts .language-tag { font-size: var(--text-small); }
.catalog-table .language-flags, .catalog-table .row-mobile-flags { flex-wrap: nowrap; white-space: nowrap; vertical-align: middle; }
/* Leave room for pin, rank, avatar and a readable name beside the fixed metrics.
   The monthly trend stays available in cards and the main chart below. */
@container catalog (max-width: 959px) {
  .catalog-table th:nth-child(9), .catalog-table td:nth-child(9) { display: none; }
  .catalog-table th:nth-child(8) { width: 86px; }
}
@container catalog (max-width: 739px) {
  .catalog-table th:nth-child(7), .catalog-table td:nth-child(7),
  .catalog-table th:nth-child(8), .catalog-table td:nth-child(8) { display: none; }
  .catalog-table th:nth-child(6) { width: 90px; }
}
@container catalog (max-width: 599px) {
  .catalog-table th:nth-child(6), .catalog-table td:nth-child(6) { display: none; }
  .catalog-table th:nth-child(5) { width: 80px; }
  .row-mobile-flags { display: inline-flex; }
  .row-mobile-flags .language-empty { display: none; }
}
@container catalog (max-width: 539px) {
  .catalog-table th:nth-child(5), .catalog-table td:nth-child(5) { display: none; }
  .catalog-table th:nth-child(4) { width: 88px; }
}
@container catalog (max-width: 459px) {
  .catalog-table th:nth-child(4), .catalog-table td:nth-child(4) { display: none; }
  .catalog-table th:nth-child(3) { width: 78px; }
}
@container catalog (max-width: 339px) {
  .catalog-table th:nth-child(3), .catalog-table td:nth-child(3) { display: none; }
  .catalog-table th:nth-child(2) { width: 90px; }
}

/* Supporting content and existing project-only flows share the same roles. */
.facts > div, .news-copy > strong, .news-empty > strong,
.project-dashboard h3, .project-empty h3, .project-empty.compact h3,
.event-copy h3, .streamer-item strong, .team-member strong {
  font-size: var(--text-body);
  line-height: var(--line-body);
}
.facts dt { color: var(--color-muted); }
.info-note, .records-panel .info-note, .data-note p, .bonus-note span,
.news-meta, .news-article .news-meta, .event-date, .event-upcoming,
.section-count, .team-member small, .material-copy small, .streamer-item small,
.index-open, .site-footer > div > p, .footer-note, .footer-links {
  font-size: var(--text-small);
  line-height: var(--line-body);
}
.records-panel strong, .records-panel > a,
.indices-teaser > a, .indices-teaser .all-indices, .indices-teaser p,
.news-summary, .news-all, .news-empty > p, .section-more,
.event-copy p, .rating-link, .review-composer,
.availability-count, .availability-note, .record-current > span,
.project-timeline li, .project-timeline li > strong, .project-timeline .timeline-empty,
.dialog-intro, .dialog-auth-note {
  font-size: var(--text-control);
  line-height: var(--line-body);
}
