/**
 * BigPlay — Applied Typography Layer (WP02)
 * Load AFTER theme.bundle.css + exchange-theme.css.
 * Consumes --theme-text-* / --theme-type-* / --theme-weight-* only.
 * Canonical scale: 11 / 12 / 13 / 14 / 16 / 18 / 24 · weights ≤ 700.
 */

/* ── App base ───────────────────────────────────────────────────────────── */
.exchange-app,
body.exchange-app,
html.theme-light .exchange-app,
html.theme-dark .exchange-app {
  font-family: var(--theme-font-sans, "Inter", system-ui, sans-serif);
  font-size: var(--theme-text-base, 0.875rem);
  line-height: var(--theme-leading-body, 1.45);
  font-weight: var(--theme-weight-regular, 400);
  font-feature-settings: var(--theme-font-features, "cv11", "ss01");
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
}

/* Hard cap: no chrome louder than odds/CTA bold */
.exchange-app {
  --theme-weight-extrabold: var(--theme-weight-bold, 700);
  --theme-weight-black: var(--theme-weight-bold, 700);
}

/* ── Trading roles ──────────────────────────────────────────────────────── */
.exchange-app .ex-indibet-row__team,
.exchange-app .ex-indibet-row__vs,
.exchange-app .ex-match-row__team,
.exchange-app .ex-fixture-row__team {
  font-size: var(--theme-type-team-size, var(--theme-text-md, 0.8125rem));
  font-weight: var(--theme-type-team-weight, var(--theme-weight-semibold, 600));
  line-height: var(--theme-leading-snug, 1.25);
  letter-spacing: 0;
}

.exchange-app .ex-price__value,
.exchange-app .ex-odds-cell__value,
.exchange-app .ex-indibet-outcome .ex-price__value {
  font-size: var(--theme-type-odds-size, var(--theme-text-md, 0.8125rem));
  font-weight: var(--theme-type-odds-weight, var(--theme-weight-bold, 700));
  line-height: var(--theme-leading-tight, 1.1);
  letter-spacing: var(--theme-type-odds-tracking, -0.01em);
  font-variant-numeric: tabular-nums;
}

.exchange-app .ex-price__size,
.exchange-app .ex-odds-cell__size,
.exchange-app .ex-indibet-outcome .ex-price__size {
  font-size: var(--theme-type-odds-size-liquidity, var(--theme-text-xs, 0.6875rem));
  font-weight: var(--theme-weight-medium, 500);
  line-height: var(--theme-leading-snug, 1.25);
}

.exchange-app .ex-inplay-group__name,
.exchange-app .ex-league-header,
.exchange-app .ex-group-head__title {
  font-size: var(--theme-type-league-size, var(--theme-text-base, 0.875rem));
  font-weight: var(--theme-type-league-weight, var(--theme-weight-semibold, 600));
  letter-spacing: var(--theme-type-league-tracking, 0);
  line-height: var(--theme-leading-snug, 1.25);
}

/* MATCH column micro-label — below team (13), not league role */
.exchange-app .ex-indibet-list__match-hd,
.exchange-app .ex-indibet-list__match-hd-text {
  font-size: var(--theme-text-sm, 0.75rem);
  font-weight: var(--theme-type-league-weight, var(--theme-weight-semibold, 600));
  letter-spacing: 0.05em;
  line-height: 1;
}

/* Match meta hierarchy — secondary to teams/odds */
.exchange-app .ex-indibet-row__meta,
.exchange-app .ex-indibet-row__time,
.exchange-app .ex-indibet-row__flag,
.exchange-app .ex-match-meta,
.exchange-app .ex-fixture-meta {
  font-size: var(--theme-type-caption-size, var(--theme-text-sm, 0.75rem));
  font-weight: var(--theme-weight-medium, 500);
  line-height: var(--theme-leading-snug, 1.25);
  letter-spacing: 0.01em;
}

.exchange-app .ex-badge,
.exchange-app .ex-chip {
  font-size: var(--theme-type-badge-size, var(--theme-text-sm, 0.75rem));
  font-weight: var(--theme-type-badge-weight, var(--theme-weight-semibold, 600));
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Row flags / LIVE micro-labels owned by exchange-badges.css (10px, not type-badge) */

/* Buttons / nav */
.exchange-app .btn-base,
.exchange-app .ex-btn,
.exchange-app .ex-load-more-btn,
.exchange-app .ex-promo-html__cta,
.exchange-app .ex-betslip__place,
.exchange-app .ex-place-bet {
  font-size: var(--theme-type-button-size, var(--theme-text-base, 0.875rem));
  font-weight: var(--theme-type-button-weight, var(--theme-weight-semibold, 600));
  letter-spacing: 0;
}

.exchange-app .ex-mobile-nav__label,
.exchange-app .ex-nav-label,
.exchange-app .ex-cats__label {
  font-size: var(--theme-type-nav-size, var(--theme-text-sm, 0.75rem));
  font-weight: var(--theme-type-nav-weight, var(--theme-weight-medium, 500));
  letter-spacing: 0.01em;
}

/* Sidebar sections — capped at 700 (WP02) */
.exchange-app .ex-sidebar__section-toggle,
.exchange-app .ex-sidebar-section__title,
.exchange-app .ex-s7-section-title {
  font-size: var(--theme-text-md, 0.8125rem);
  font-weight: var(--theme-weight-bold, 700);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}

/* Tables */
.exchange-app table th,
.exchange-app .ex-table__head,
.exchange-app .ex-account-table th {
  font-size: var(--theme-type-table-head-size, var(--theme-text-md, 0.8125rem));
  font-weight: var(--theme-type-table-head-weight, var(--theme-weight-bold, 700));
  letter-spacing: var(--theme-type-table-head-tracking, 0.04em);
}

/* Money / balances */
.exchange-app .ex-money,
.exchange-app .ex-balance,
.exchange-app .ex-account-dd__balance {
  font-weight: var(--theme-type-money-weight, var(--theme-weight-bold, 700));
  font-variant-numeric: tabular-nums;
}
