/* O visual novo (05/10/2026, pedido do Romeu: «coloca a fonte do Google Exo 2 instalada offline, e as fontes estão
   muito grandes»). Vale SÓ com o interruptor dos temas (app/temas.py): com ele ligado, o base.html e a casca da
   assistente põem data-visual="novo" no <html> e trazem este arquivo; desligado (a produção, até o Romeu aprovar),
   nem o arquivo nem a fonte são pedidos e a página é a de sempre. Toda regra daqui começa pelo interruptor —
   :root[data-visual="novo"], ou [data-visual="novo"] / :where(:root[data-visual="novo"]) quando o peso do
   seletor importa — e o teste_fonte_exo2.py confere.

   A FONTE: Exo 2 (Natanael Gama, licença OFL — static/fontes/exo2/OFL.txt), do repositório google/fonts, servida
   daqui mesmo, sem Google Fonts em tempo de execução. Variável (um arquivo para os pesos 300 a 700), em WOFF2, em
   dois recortes como os do Google: latin (português inteiro, aspas, travessão, €) e latin-ext (só é baixado se a
   página tiver uma letra de lá). O itálico também é variável e só é baixado onde há texto em itálico.

   O TAMANHO, por medição (canvas do Chrome, texto de referência em português, peso 400): a Exo 2 tem a largura da
   Segoe UI (+0,6 %; medida pela Selawik, a métrica livre da Segoe), 3,7 % a mais que a fonte do Mac (SF) e
   x-altura um pouco menor (0,487 contra 0,50 da Segoe e 0,51 da SF). Ou seja: a troca de fonte quase não muda o
   tamanho — quem diminui são os números. O corpo vai de 15 para 13,5 px (−10 %); a raiz, de 16 para 15 px (tudo o
   que é medido em rem, quase todos os ~380 tamanhos dos CSS, encolhe 6,25 %); títulos e o texto das tabelas descem
   10 a 12 %; botão segue o corpo. Raiz de 14 px foi medida e descartada: jogaria 195 regras (rótulos, selos, texto
   das tabelas) abaixo de 12 px. O que já é pequeno tem piso (abaixo). No celular, corpo de 14 px e campo de
   formulário de 16 px (o iPhone dá zoom ao tocar num campo menor que 16 px). */

@font-face { font-family: "Exo 2"; font-style: normal; font-weight: 300 700; font-display: swap;
  src: url("fontes/exo2/exo2-latin.woff2") format("woff2");
  unicode-range: 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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Exo 2"; font-style: normal; font-weight: 300 700; font-display: swap;
  src: url("fontes/exo2/exo2-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
    U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family: "Exo 2"; font-style: italic; font-weight: 300 700; font-display: swap;
  src: url("fontes/exo2/exo2-italico-latin.woff2") format("woff2");
  unicode-range: 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+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family: "Exo 2"; font-style: italic; font-weight: 300 700; font-display: swap;
  src: url("fontes/exo2/exo2-italico-latin-ext.woff2") format("woff2");
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329,
    U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }

/* ------------------------------------------------------------------ a fonte, em tudo */
:root[data-visual="novo"] {
  --fonte: "Exo 2", "Segoe UI", Roboto, system-ui, -apple-system, sans-serif;
  font-size: 15px;                                   /* a raiz (era 16): tudo em rem encolhe 6,25 % */
}
:root[data-visual="novo"] body { font-family: var(--fonte); font-size: 13.5px; }   /* o corpo: era 15 px */
/* botão, campo e lista não herdam a fonte sozinhos (o navegador põe a dele). Sem peso no seletor (:where): quem
   pediu monoespaçada num campo (o link da caixa da Busca Ativa) continua mono. */
:where(:root[data-visual="novo"]) :where(button, input, select, textarea, optgroup) { font-family: inherit; }
/* a aba da assistente trazia a família escrita por extenso */
:root[data-visual="novo"] .pm-aba { font-family: var(--fonte); }

/* títulos e tabelas: descem como o corpo (−10 a −12 %), não só os 6 % da raiz. Com :where o peso do seletor é o
   do style.css: o título ou a tabela que um módulo dimensiona por conta própria continua com o tamanho dele. */
:where(:root[data-visual="novo"]) h1 { font-size: 1.45rem; }        /* 21,8 px (era 24,8) */
:where(:root[data-visual="novo"]) h2 { font-size: 1.12rem; }        /* 16,8 px (era 19,2) */
:where(:root[data-visual="novo"]) h3 { font-size: .95rem; }         /* 14,3 px (era 16) */
:where(:root[data-visual="novo"]) table.t { font-size: .85rem; }    /* 12,8 px (era 14,1) */

/* números alinhados em coluna (tabelas, contadores, painéis de número) */
:root[data-visual="novo"] :is(table, .kpi .v, .kpis-mini, .ba-c b, time) { font-variant-numeric: tabular-nums; }

/* ------------------------------------------------------------------ a casca da assistente */
/* a casca já usava 14 px de raiz (o painel do chat): desce para 13 px; o balão fica em 12,1 px */
:root[data-visual="novo"].pm-casca-raiz { font-size: 13px; }

/* ------------------------------------------------------------------ pisos */
/* Encolher pela raiz também encolheria o que já é pequeno (rótulo, selo, legenda, a pílula da Agenda). Regra:
   texto que hoje tem 12 px ou mais não cai abaixo de 12; texto que hoje já é menor que 12 fica do tamanho de hoje.
   Uma linha por regra dos CSS que ficaria abaixo disso, com o mesmo seletor de lá: vale onde a regra original
   valia, e uma regra mais específica de módulo continua mandando. Na frente vai :where(…) (peso zero) para as folhas
   que entram no <head> antes desta; e [data-visual="novo"] (um degrau de peso) para as que entram no <body>, DEPOIS
   desta — busca_ativa, emissao, sst, agente (pelos _nav.html) e assistente (pela aba). A lista saiu das regras em
   rem dos CSS de app/static (raiz 16 → 15; na casca da assistente, 14 → 13), conferida texto a texto no Chrome
   contra a versão de antes; regra nova em rem abaixo de .8rem só precisa de uma linha aqui se tiver de ficar do
   tamanho de hoje. */
/* a assistente (parte A', pedido da B10): o rótulo do tipo do arquivo, a língua do código, a dica sob a caixa de
   texto e os textos de apoio das conversas e dos anexos ficavam entre 8 e 10,5 px na casca de 13 px — ilegíveis.
   Piso próprio: 10 px no selo do tipo (cabe no ícone de 30 px), 11 px no apoio, 12 px na dica, que é instrução. */
[data-visual="novo"] .pm-tipo {
  font-size: max(.58rem, 10px); }
[data-visual="novo"] .pm-md pre[data-lingua]::before {
  font-size: max(.68rem, 11px); }
[data-visual="novo"] .pm-dica {
  font-size: max(.7rem, 12px); }
[data-visual="novo"] .fx-pdf {
  font-size: max(.62rem, 9.92px); }
[data-visual="novo"] .pm-conversas-tit,
[data-visual="novo"] .pm-chip-info,
[data-visual="novo"] .pm-anexo-tam,
[data-visual="novo"] .pm-credencial-nota,
[data-visual="novo"] .pm-conversas .q,
[data-visual="novo"] .pm-arquivo-tam {
  font-size: max(.75rem, 11px); }
[data-visual="novo"] .ba-rot-cenarios .selo {
  font-size: max(.66rem, 10.56px); }
[data-visual="novo"] .irreg-selo {
  font-size: max(.67rem, 10.72px); }
:where(:root[data-visual="novo"]) .agd-col-cab span,
:where(:root[data-visual="novo"]) .bn-parc,
[data-visual="novo"] table.t.tabela-concluidas th,
[data-visual="novo"] .tabela-concluidas .quem-fez,
[data-visual="novo"] .tabela-concluidas .anexos-mais,
[data-visual="novo"] .irreg summary,
[data-visual="novo"] .solto-central input[type=text],
[data-visual="novo"] .em-passo-rotulo small {
  font-size: max(.68rem, 10.88px); }
[data-visual="novo"] .pm-quem span,
[data-visual="novo"] .pm-md th,
[data-visual="novo"] .pm-mermaid .pm-aviso,
[data-visual="novo"] .pm-sug-tit {
  font-size: max(.78rem, 10.92px); }
:where(:root[data-visual="novo"]) .ba-contato h4,
:where(:root[data-visual="novo"]) .ba-bloco h4,
:where(:root[data-visual="novo"]) body.com-barra .marca-mod,
:where(:root[data-visual="novo"]) .bn-escala,
[data-visual="novo"] table.t.tabela-concluidas .selo,
[data-visual="novo"] .sst-feriado {
  font-size: max(.7rem, 11.2px); }
[data-visual="novo"] .pm-linha,
[data-visual="novo"] .pm-chip {
  font-size: max(.8rem, 11.2px); }
[data-visual="novo"] .pm-mermaid.esperando,
[data-visual="novo"] .pm-confirma .pm-resolucao,
[data-visual="novo"] .pm-credencial-erro,
[data-visual="novo"] .pm-sugestoes button,
[data-visual="novo"] .pm-soltar-caixa span,
[data-visual="novo"] .pm-anexo-nome,
[data-visual="novo"] .pm-arquivo-bt {
  font-size: max(.82rem, 11.48px); }
:where(:root[data-visual="novo"]) .selo-parceiro,
:where(:root[data-visual="novo"]) .etapas .quando,
:where(:root[data-visual="novo"]) .ag-sub1l,
:where(:root[data-visual="novo"]) .ag-combo-grupo,
:where(:root[data-visual="novo"]) .agd-mais-link,
:where(:root[data-visual="novo"]) .agd-mes-cab div,
:where(:root[data-visual="novo"]) .agd-selo,
:where(:root[data-visual="novo"]) .bn-dg td .sub,
:where(:root[data-visual="novo"]) .bn-cols-rot span,
:where(:root[data-visual="novo"]) .agh-mod,
[data-visual="novo"] .criterio h4,
[data-visual="novo"] table.t.tabela-concluidas .ref,
[data-visual="novo"] .link-central,
[data-visual="novo"] .kpi-rede .canais,
[data-visual="novo"] .irreg-form select,
[data-visual="novo"] .irreg-form input[type=text],
[data-visual="novo"] .irreg summary.btn,
[data-visual="novo"] .irreg-op,
:where(:root[data-visual="novo"]) .cd-lido,
[data-visual="novo"] .cand-rot,
[data-visual="novo"] .fx-linha,
[data-visual="novo"] .fx-aso,
[data-visual="novo"] .em-orig,
:where(:root[data-visual="novo"]) .lb-rot,
:where(:root[data-visual="novo"]) .lb kbd,
:where(:root[data-visual="novo"]) .lb-ficha kbd,
:where(:root[data-visual="novo"]) .lb-gr-rot,
:where(:root[data-visual="novo"]) .lb-tag,
:where(:root[data-visual="novo"]) .lb-dia,
:where(:root[data-visual="novo"]) .tm-rot {
  font-size: max(.72rem, 11.52px); }
[data-visual="novo"] .pm-confirma dl,
[data-visual="novo"] .pm-credencial-motivo {
  font-size: max(.84rem, 11.76px); }
:where(:root[data-visual="novo"]) .agd-pil,
[data-visual="novo"] table.t.tabela-concluidas .btn.peq,
[data-visual="novo"] .ba-rot-cenarios button .num,
[data-visual="novo"] .roteiro-lig h4,
[data-visual="novo"] .em-info {
  font-size: max(.74rem, 11.84px); }
:where(:root[data-visual="novo"]) table.t th,
:where(:root[data-visual="novo"]) .kpi .r,
:where(:root[data-visual="novo"]) .topo nav a i,
:where(:root[data-visual="novo"]) .agd-vazio,
:where(:root[data-visual="novo"]) .agd-passo span,
:where(:root[data-visual="novo"]) .bn-col .taxa,
:where(:root[data-visual="novo"]) .dp-time span,
[data-visual="novo"] .card > h2 .selo,
:where(:root[data-visual="novo"]) .lb-valor {
  font-size: max(.75rem, 12px); }
:where(:root[data-visual="novo"]) .selo,
:where(:root[data-visual="novo"]) .parceiro-toggle,
:where(:root[data-visual="novo"]) .ba-tabela td:nth-child(5),
:where(:root[data-visual="novo"]) .baixar,
:where(:root[data-visual="novo"]) .agd-legenda,
:where(:root[data-visual="novo"]) .bn-legenda,
:where(:root[data-visual="novo"]) .bn-hb .val,
:where(:root[data-visual="novo"]) .bn-mais,
:where(:root[data-visual="novo"]) .bn-tip,
:where(:root[data-visual="novo"]) .agh-rot,
[data-visual="novo"] .data-atendimento label,
[data-visual="novo"] .abas-trabalho .aba-n,
[data-visual="novo"] .fx-nome,
[data-visual="novo"] .em-passo-num,
:where(:root[data-visual="novo"]) .lb-upload small,
:where(:root[data-visual="novo"]) .lb-etapa-atr,
[data-visual="novo"] .sst-grupo,
[data-visual="novo"] .sst-bloq,
:where(:root[data-visual="novo"]) .tm-sem {
  font-size: max(.78rem, 12px); }
:where(:root[data-visual="novo"]) .ba-tabela .ref,
[data-visual="novo"] .link-aso,
:where(:root[data-visual="novo"]) .lb-tempo-q {
  font-size: max(.76rem, 12px); }
[data-visual="novo"] .pm-aba,
[data-visual="novo"] .pm-vazio,
[data-visual="novo"] .pm-md table {
  font-size: max(.86rem, 12px); }
[data-visual="novo"] .pm-conversas .t,
[data-visual="novo"] .pm-confirma,
[data-visual="novo"] .pm-md summary {
  font-size: max(.9rem, 12px); }
[data-visual="novo"] .pm-confirma h3 {
  font-size: max(.92rem, 12px); }
[data-visual="novo"] .pm-md details > :not(summary),
[data-visual="novo"] .pm-arquivo-nome {
  font-size: max(.88rem, 12px); }
/* ------------------------------------------------------------------ celular (até 700 px) */
/* corpo de 14 px; campo de 16 px, senão o iPhone aproxima a tela ao tocar nele */
@media (max-width: 700px) {
  :root[data-visual="novo"] body { font-size: 14px; }
  :root[data-visual="novo"] :is(input:not([type=checkbox]):not([type=radio]):not([type=range]), select, textarea) {
    font-size: 16px; }
  :root[data-visual="novo"].pm-casca-raiz { font-size: 14px; }
}
