/*!
 * ═══════════════════════════════════════════════════════════════════════════════
 *  ROWER DESIGN SYSTEM — TIPOGRAFIA
 *  Etapa D4 do PLANO-DESIGN-SYSTEM-GONOGO-20260910.md · 2026-09-10
 * ═══════════════════════════════════════════════════════════════════════════════
 *
 *  O QUE ISTO CONSERTA
 *
 *  Até aqui NENHUMA fonte estava de fato carregada. O HTML pedia 'Segoe UI',
 *  'JetBrains Mono', 'SF Mono' e 'Inter' — cinco famílias — e não havia um único
 *  @font-face nem <link> de fonte no arquivo. Na prática o app renderizava em Segoe
 *  UI no Windows e em outra coisa em qualquer outro lugar: a tipografia do produto
 *  era a do sistema operacional do usuário.
 *
 *  As três famílias abaixo vêm do documento 17 do DS, cada uma com um trabalho:
 *    Manrope        display e títulos      (700, 800)
 *    Figtree        interface              (400, 500, 600)
 *    IBM Plex Mono  TODO dado numérico     (500, 600)
 *
 *  AUTO-HOSPEDADAS, e a razão é operacional, não ideológica: a CSP do produto tem
 *  `font-src 'self' data: cdn.jsdelivr.net` e NÃO inclui fonts.gstatic.com. Servir
 *  do próprio domínio não exige mexer na CSP, funciona offline (o app é usado em
 *  hangar com sinal ruim) e não coloca um terceiro no caminho de render.
 *  Todas OFL. Subconjunto latin, 90 KB no total.
 *
 *  `font-display: swap` é deliberado: o texto aparece imediatamente na fonte de
 *  sistema e troca quando a face chega. Num app de briefing pré-voo, texto invisível
 *  esperando fonte é pior que texto com a fonte errada por 200 ms.
 */

/* ── Manrope — display e títulos ─────────────────────────────────────────────── */
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url('../fonts/manrope-latin-700-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Manrope';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url('../fonts/manrope-latin-800-normal.woff2') format('woff2');
}

/* ── Figtree — interface ─────────────────────────────────────────────────────── */
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url('../fonts/figtree-latin-400-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/figtree-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'Figtree';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/figtree-latin-600-normal.woff2') format('woff2');
}

/* ── IBM Plex Mono — dado ────────────────────────────────────────────────────── */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-latin-500-normal.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url('../fonts/ibm-plex-mono-latin-600-normal.woff2') format('woff2');
}

/* ═══════════════════════════════════════════════════════════════════════════════
   OS ONZE NÍVEIS

   Documento 17 do DS, sem rodeio: "onze tamanhos cobrem o produto — o décimo
   segundo é sempre um acidente."

   Cada classe carrega família, tamanho, entrelinha e peso JUNTOS. Separá-los é o
   que faz a hierarquia derivar na prática: peça o ESTILO, não o número.

   O GONOGO tinha 24 tamanhos distintos, incluindo 119 ocorrências fracionárias
   (9.5, 10.5, 11.5, 12.5, 13.5) e um 8px. Documento 17, de novo: "um padding de
   7px não é uma decisão, é um erro de digitação."
   ═══════════════════════════════════════════════════════════════════════════════ */

.t-display { font-family: var(--ds-font-family-display); font-size: var(--ds-text-display-size); line-height: var(--ds-text-display-line); font-weight: var(--ds-text-display-weight); }
.t-h1      { font-family: var(--ds-font-family-display); font-size: var(--ds-text-h1-size);      line-height: var(--ds-text-h1-line);      font-weight: var(--ds-text-h1-weight); }
.t-h2      { font-family: var(--ds-font-family-display); font-size: var(--ds-text-h2-size);      line-height: var(--ds-text-h2-line);      font-weight: var(--ds-text-h2-weight); }
.t-h3      { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-h3-size);      line-height: var(--ds-text-h3-line);      font-weight: var(--ds-text-h3-weight); }
.t-body-lg { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-body-lg-size); line-height: var(--ds-text-body-lg-line); font-weight: var(--ds-text-body-lg-weight); }
.t-body    { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-body-size);    line-height: var(--ds-text-body-line);    font-weight: var(--ds-text-body-weight); }
.t-body-sm { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-body-sm-size); line-height: var(--ds-text-body-sm-line); font-weight: var(--ds-text-body-sm-weight); }
.t-label   { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-label-size);   line-height: var(--ds-text-label-line);   font-weight: var(--ds-text-label-weight); }
.t-caption { font-family: var(--ds-font-family-ui);      font-size: var(--ds-text-caption-size); line-height: var(--ds-text-caption-line); font-weight: var(--ds-text-caption-weight); }

/* ── Os três níveis de DADO ──────────────────────────────────────────────────────
   `tabular-nums` é OBRIGATÓRIO, não enfeite. Numerais proporcionais numa coluna
   numérica tornam a comparação vertical impossível — é uma das doze proibições do
   documento 17. Vale para toda coluna do Hangar e do Dashboard, para altitude,
   peso, velocidade, horário Zulu e código de regra. */
.t-data    { font-family: var(--ds-font-family-mono); font-size: var(--ds-text-data-size);    line-height: var(--ds-text-data-line);    font-weight: var(--ds-text-data-weight);    font-variant-numeric: tabular-nums; }
.t-data-lg { font-family: var(--ds-font-family-mono); font-size: var(--ds-text-data-lg-size); line-height: var(--ds-text-data-lg-line); font-weight: var(--ds-text-data-lg-weight); font-variant-numeric: tabular-nums; }
.t-data-xl { font-family: var(--ds-font-family-mono); font-size: var(--ds-text-data-xl-size); line-height: var(--ds-text-data-xl-line); font-weight: var(--ds-text-data-xl-weight); font-variant-numeric: tabular-nums; }

/* Cabeçalho de tabela e sobrelinha de seção. Maiúsculas com 0.06em de tracking. */
.t-overline {
  font-family: var(--ds-font-family-mono);
  font-size: var(--ds-text-overline-size);
  line-height: var(--ds-text-overline-line);
  font-weight: var(--ds-text-overline-weight);
  letter-spacing: 0.06em;
  text-transform: uppercase;
}

/* ── Utilitário isolado ──────────────────────────────────────────────────────────
   Para aplicar numerais tabulares onde a classe completa de dado seria demais —
   uma célula de tabela que já herda o tamanho certo, por exemplo. */
.num-tab { font-variant-numeric: tabular-nums; }
