/* =============================================================================
 * atrilha — self-host das fontes da marca (chore-ux-001 §4.1, CHORE-016)
 *
 * Fonte única dos @font-face do produto. Carregado por TODOS os layouts que
 * renderizam UI de usuário — layout/app.html (app shell), layout/estudo.html
 * (imersivo) e layout/public.html (landing). Nasceu extraído do app.css na
 * US-117: o layout imersivo não carrega app.css e, por isso, rodava sem
 * webfont alguma (caía no system-ui). Um arquivo só evita que a próxima tela
 * fora do app shell repita esse silêncio.
 *
 * Hanken Grotesk (texto E display, 400–800) e Newsreader (serif, 400 + 600 +
 * 400 itálico), servidas de /public/fonts/*.woff2 (src/main/resources/static/public/fonts/).
 * `font-display: swap` evita FOIT — em queda de rede o sistema renderiza com o
 * fallback system-ui (chore-ux-001 §4.1 "Fallback stack") e troca quando a
 * fonte chega. Sem requisição a fonts.googleapis.com em runtime.
 *
 * US-117: Hanken Grotesk assume texto e display (antes Inter + Bricolage
 * Grotesque, ambas removidas do app — o admin declara as suas próprias em
 * admin/css/admin.css e não depende daqui). Newsreader entra como serif — o
 * par já usado na landing, agora unificado com o app. Os pesos normais do
 * Newsreader foram instanciados da variável oficial (wght pinado, opsz=18) no
 * mesmo formato estático por peso das demais.
 *
 * Os arquivos WOFF2 (subset latin) cobrem pt-BR (acentos comuns). Total ~138KB
 * — acima do teto de ~100KB de chore-ux-001 §4.1, mas na prática empata com as
 * ~131KB do par anterior (Inter + Bricolage + Hanken 700).
 * ============================================================================= */
@font-face {
    font-family: "Hanken Grotesk";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("/public/fonts/hanken-grotesk-latin-400-78c2be80e151552c76af1ba90f5f7d1c.woff2") format("woff2");
}
@font-face {
    font-family: "Hanken Grotesk";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("/public/fonts/hanken-grotesk-latin-500-8d6eb9d4c9c24af37c69444b4173c67d.woff2") format("woff2");
}
@font-face {
    font-family: "Hanken Grotesk";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("/public/fonts/hanken-grotesk-latin-600-0c156079a0bef2732acc6160a0930985.woff2") format("woff2");
}
@font-face {
    font-family: "Hanken Grotesk";
    font-style: normal;
    font-weight: 700;
    font-display: swap;
    src: url("/public/fonts/hanken-grotesk-latin-700-f3223a1e6b4c470a58a58c16e30cedbb.woff2") format("woff2");
}
@font-face {
    font-family: "Hanken Grotesk";
    font-style: normal;
    font-weight: 800;
    font-display: swap;
    src: url("/public/fonts/hanken-grotesk-latin-800-6823d400405145857e25dd9f3c71c12c.woff2") format("woff2");
}

/* Newsreader — serif de citação e das peças da coleção (US-117). */
@font-face {
    font-family: "Newsreader";
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url("/public/fonts/newsreader-latin-400-4847b323952b5a2baaa6dcbfa49221f2.woff2") format("woff2");
}
@font-face {
    font-family: "Newsreader";
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url("/public/fonts/newsreader-latin-600-06f65d873646b621c9090e0fe0298dfe.woff2") format("woff2");
}
@font-face {
    font-family: "Newsreader";
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url("/public/fonts/newsreader-latin-400-italic-a6974fdd8f8b02239d20af9afd1dad44.woff2") format("woff2");
}

/* JetBrains Mono — GRANDEZAS apenas (Story 2.3).
 * Uso exclusivo: ofensiva, XP, contadores de progresso. Nunca corpo, rótulo ou
 * título. A família traz 700, mas o v2 usa só o 500 — self-hospedar o peso que
 * não é consumido seria 20KB de tráfego morto. Ver DESIGN.md · Typography. */
@font-face {
    font-family: "JetBrains Mono";
    font-style: normal;
    font-weight: 500;
    font-display: swap;
    src: url("/public/fonts/jetbrains-mono-latin-500-ba99f79490ff40bf82364c7c24915a0d.woff2") format("woff2");
}
