/* ==========================================================================
   RASTREIO — tipografia self-hosted (Rodada G / E2)
   --------------------------------------------------------------------------

   POR QUE ESTE ARQUIVO EXISTE

   Até 06/09/2026 as três famílias vinham do Google Fonts, por `<link>` no
   `<head>`. Isso significava que **a tipografia inteira do app dependia de
   rede** — e o app é usado no galpão da facção, que é justamente onde não há
   sinal. Sem rede, Fraunces / Inter / IBM Plex Mono caíam para o fallback do
   sistema, e junto com elas caía a decisão mais explícita do `tokens.css`:

       "Números SEMPRE tabulares. Coluna de quantidade que dança a cada
        dígito é erro de leitura esperando acontecer."

   Fallback de sistema não garante `tabular-nums`. Numa tela cuja função é
   contar peça, isso não é detalhe estético.

   Agora os arquivos moram em `assets/fonts/` e são cacheados pelo service
   worker (`/sw.js`). Zero requisição a `fonts.googleapis.com` ou
   `fonts.gstatic.com` — a CSP do nginx também deixou de permiti-las.

   ## O que foi baixado, e por que só isto

   | Arquivo | O que é | Por quê |
   |---|---|---|
   | `fraunces-var-latin` | variável: `opsz 9..144`, `wght 100..900`, `SOFT 0..100`, `WONK 0..1` | `app.css` usa `font-variation-settings: "SOFT" 0, "WONK" 1` e `font-optical-sizing: auto` — só o arquivo variável completo atende |
   | `inter-var-latin` | variável: `opsz 14..32`, `wght 100..900` | as views usam pesos **580, 620, 640** (`agenda.js`, `documentos.js`, `retorno.js`); peso não canônico só existe em fonte variável |
   | `inter-var-italic-latin` | idem, itálico real | `app.css` usa `font-style: italic` na observação do coletor — texto que uma pessoa escreveu, e oblíquo sintético em Inter fica ruim |
   | `plexmono-400/600-latin` | estáticas (Plex Mono não tem versão variável) | os dois únicos pesos usados |

   **Só o subset `latin`.** Português inteiro cabe em `U+0000-00FF` (á ã ç é í
   ó õ ú estão todos lá). O `latin-ext` serve a polonês, tcheco, turco — e
   custava 233 KB. Sem ele o pacote caiu de **700 KB para 304 KB**. Um nome
   próprio com glifo fora do range cai para a fonte do sistema *naquele glifo*,
   que degrada bem e não quebra nada.

   ## Verificado com fontTools, não presumido

   - Fraunces: 4 eixos presentes ✅ · **`tnum` AUSENTE** e dígitos
     proporcionais (largura de 1024 a 1461 upm) ⚠️ — ver aviso no fim deste arquivo.
   - Inter: `tnum` presente ✅ — `tabular-nums` funciona de verdade.
   - Plex Mono: dígitos com largura idêntica (600/600) — tabular por construção ✅.
   ========================================================================== */

/* Fraunces — títulos e números grandes. Variável nos quatro eixos. */
@font-face {
  font-family: 'Fraunces';
  src: url('/assets/fonts/fraunces-var-latin.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}

/* Inter — corpo. `font-weight` em range porque o JS pede 580/620/640. */
@font-face {
  font-family: 'Inter';
  src: url('/assets/fonts/inter-var-latin.woff2') format('woff2');
  font-weight: 100 900;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'Inter';
  src: url('/assets/fonts/inter-var-italic-latin.woff2') format('woff2');
  font-weight: 100 900;
  font-style: italic;
  font-display: swap;
}

/* IBM Plex Mono — hora, teclado do contador, código. Sem versão variável. */
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/plexmono-400-latin.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'IBM Plex Mono';
  src: url('/assets/fonts/plexmono-600-latin.woff2') format('woff2');
  font-weight: 600;
  font-style: normal;
  font-display: swap;
}

/* ==========================================================================
   ⚠️ AVISO MEDIDO — a Fraunces NÃO faz números tabulares

   Medido com fontTools em 06/09/2026, no arquivo que este projeto serve:

     dígito : 0=1461  1=1024  2=1334  3=1237  4=1397
              5=1267  6=1348  7=1145  8=1385  9=1348   (unitsPerEm 2000)
     features GSUB: liga, rvrn   ← não há `tnum`

   O "1" é ~30% mais estreito que o "0", e **não existe alternativa tabular na
   fonte**. Portanto `font-variant-numeric: tabular-nums` é **inerte** em todo
   seletor que usa `var(--fonte-display)` — incluindo `.contador-valor`, que é
   o número gigante que o coletor lê enquanto conta peça.

   Isto é **anterior a esta rodada**: acontecia igual com o Google Fonts, porque
   é característica da fonte e não da hospedagem. Está registrado aqui, em
   `armadilhas.md` e no relatório da rodada G. A correção mexe em decisão de
   design (trocar a família dos numéricos por Inter ou Plex Mono, que têm
   dígitos tabulares) e por isso **não foi aplicada sem decisão do founder**.
   ========================================================================== */
