/* ═══════════════════════════════════════════════════════════════
   CONTAB — Typography Tokens
   Один шрифт: Inter variable (300–800, самохостинг в tokens/fonts.css).
   Философия весов: display/заголовки — semibold 600; body 400;
   подписи/кнопки 500. Эмфаза — вес или акцентный цвет, не курсив.
   Цифры — всегда font-variant-numeric: tabular-nums.
   ═══════════════════════════════════════════════════════════════ */

:root {
  --font-sans:    "Inter", -apple-system, BlinkMacSystemFont, "Helvetica Neue", sans-serif;
  --font-display: "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-block:   "Inter", -apple-system, BlinkMacSystemFont, sans-serif;
  --font-mono:    ui-monospace, "SF Mono", Menlo, Consolas, monospace;

  --fs-display-xxl: 116px; --fs-display-xl: 80px; --fs-display-lg: 56px;
  --fs-display-md: 48px;   --fs-display-sm: 30px;
  /* Единая шкала заголовков платформы (обязательная):
     h1 22/600/-.02em · h2 17/600 · h3 15/600 · body 15/400 */
  --fs-h1: 22px; --fs-h2: 17px; --fs-h3: 15px;
  --fs-body-lg: 17px; --fs-body: 15px;
  --fs-body-sm: 13.5px; --fs-caption: 13px; --fs-micro: 11px;
  --fs-label: 10.5px;   /* labels: uppercase 10.5/600/.06em --text-faint */

  /* ⚠️ Веса 800/900 в системе ЗАПРЕЩЕНЫ: --fw-bold и --fw-black
     намеренно замаплены вниз (600/650) — легаси-стили, тянущие
     var(--fw-bold/black), автоматически получают допустимый вес. */
  --fw-light: 300; --fw-regular: 400; --fw-medium: 500;
  --fw-semibold: 600; --fw-bold: 600; --fw-black: 650;

  --lh-display: 1.04; --lh-tight: 1.12; --lh-snug: 1.3;
  --lh-body: 1.55; --lh-relaxed: 1.65;

  --ls-display: -0.035em; --ls-tight: -0.025em; --ls-snug: -0.015em;
  --ls-normal: 0; --ls-wide: 0.04em; --ls-label: 0.06em; --ls-wider: 0.08em;
}

/* ═══ ПРИНУДИТЕЛЬНАЯ ШКАЛА ═══
   Глобальные правила, давящие страничные «24px/800» по умолчанию.
   Специфичность умеренная (страницы, где надо, переопределят классом),
   но покрывает и голые h1, и .page-header h1 / .page-title. */
h1, .page-header h1, .page-body h1 {
  font-size: var(--fs-h1);
  font-weight: var(--fw-semibold);
  letter-spacing: -0.02em;
  line-height: var(--lh-tight);
}
h2, .page-body h2 {
  font-size: var(--fs-h2);
  font-weight: var(--fw-semibold);
  letter-spacing: var(--ls-snug);
  line-height: var(--lh-snug);
}
h3, .page-body h3 {
  font-size: var(--fs-h3);
  font-weight: var(--fw-semibold);
  line-height: var(--lh-snug);
}
h4, h5, h6 { font-weight: var(--fw-semibold); }

/* Жирнее 650 не бывает: даже захардкоженные <b>/<strong> и легаси
   font-weight:700+ на заголовках прижимаются к 600. */
b, strong { font-weight: var(--fw-semibold); }
:is(h1, h2, h3, h4, h5, h6) :is(b, strong) { font-weight: inherit; }

/* Единый лейбл (uppercase-подпись полей, колонок, метрик) */
.t-label {
  font-size: var(--fs-label);
  font-weight: var(--fw-semibold);
  text-transform: uppercase;
  letter-spacing: var(--ls-label);
  color: var(--text-faint);
}
