/* ============================================================================
   fonts.css — DM Sans auto-hospedada
   ----------------------------------------------------------------------------
   Arquivo próprio (e não dentro de landing.css) porque os dois layouts precisam
   da fonte: _Layout (land page) e _LayoutLegal (documentos legais e /Error).
   Sem isto, as páginas legais declarariam "DM Sans" via tokens.css e cairiam na
   fonte do sistema, por falta de @font-face.

   Auto-hospedada, e não via Google Fonts, por três razões: a CSP é enforcing com
   `style-src 'self'; font-src 'self'` e não será afrouxada; o IP do visitante não
   vai para um terceiro que a Política de Privacidade não declara; e saem duas
   conexões do caminho crítico.

   Origem: D:\Source\QNT\Fonts\DMSans\static\ (licença OFL — ver wwwroot/fonts/OFL.txt).
   Convertidos para woff2 subsetado, ~13,5 KB por peso, com fontTools:

     python -m fontTools.subset <origem>.ttf --output-file=dm-sans-<peso>.woff2
       --flavor=woff2
       --unicodes="U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,
                   U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+2070-209F,
                   U+20A0-20CF,U+2100-214F,U+2190-2193,U+2212,U+2215,U+FEFF,
                   U+FFFD"
       --layout-features="kern,liga,clig,calt,ccmp,locl,mark,mkmk,rlig"
       --desubroutinize

   Os quatro pesos existem porque tokens.css distingue 400/500/600/700 e o mock
   usa os quatro. Servir só o 400 faria o navegador sintetizar os demais, e o
   faux bold engorda o traço de forma irregular.

   Nota: o nome interno (name ID 1) dos arquivos de 500 e 600 é "DM Sans Medium"
   e "DM Sans SemiBold" — convenção do Google Fonts para pesos fora do conjunto
   RIBBI. Irrelevante aqui: no @font-face vale o font-family declarado abaixo.
   ============================================================================ */

/* `optional` em vez de `swap` (LPV-08): o banner de cookies é `position: fixed;
   bottom:` com altura definida pelo texto — a troca de fonte no meio da
   renderização reflui a caixa e ela se desloca no viewport, medido como CLS
   0.263 ("poor") com `swap`. `optional` deixa o navegador pintar direto com a
   fonte certa quando ela chega a tempo (rede local/banda larga) e, se não
   chegar, mantém o fallback pelo resto da navegação — sem swap, sem reflow. */
@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 400;
  font-display: optional;
  src: url("../fonts/dm-sans-400.woff2") format("woff2");
}

@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 500;
  font-display: optional;
  src: url("../fonts/dm-sans-500.woff2") format("woff2");
}

@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 600;
  font-display: optional;
  src: url("../fonts/dm-sans-600.woff2") format("woff2");
}

@font-face {
  font-family: "DM Sans";
  font-style: normal;
  font-weight: 700;
  font-display: optional;
  src: url("../fonts/dm-sans-700.woff2") format("woff2");
}
