/* fonts.css — a fundação tipográfica da app: as letras e os tokens.
   Carregada PRIMEIRO por todas as cadeias (base.html, auth/_base, legal/_base
   e as páginas standalone), por isso é aqui que vivem os tokens — assim 148
   templates não precisam de mudar nada.

   Tudo SELF-HOSTED. Já foi uma folha da fonts.googleapis.com com os ficheiros
   da fonts.gstatic.com: quando a rota para essas origens degradava, cada
   página ficava presa no desenho e piscava HTML sem estilo. Agora uma página
   só precisa da nossa origem para pintar. Subsets latin + latin-ext (cobrem o
   pt-AO), um @font-face por peso, font-display:swap. O WhiteNoise reescreve os
   url() para nomes imutáveis com hash.

   A Plus Jakarta Sans FICA: deixou de vestir a app (2026-09-16), mas é a letra
   de corpo de várias famílias de modelos de documento — doc_themes.js:116 — e
   não está declarada em mais lado nenhum. Tirá-la daqui parte o papel A4. */

/* latin-ext */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin-ext.5ffe46eeb00d.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;
}

/* latin */
@font-face {
  font-family: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 300;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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: 'Plus Jakarta Sans';
  font-style: normal;
  font-weight: 800;
  font-display: swap;
  src: url("../fonts/plus-jakarta-sans-latin.52d04440a9fa.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;
}


/* ===========================================================================
   AS OUTRAS LETRAS DA APP. O @font-face é preguiçoso: declarar não descarrega,
   só o uso é que descarrega.
   =========================================================================== */



/* IBM Plex Mono · latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-ext-400.17a5b2a15bf5.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;
}
/* IBM Plex Mono · latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-400.814fe1615d4d.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;
}
/* IBM Plex Mono · latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-ext-500.216ee1a35b06.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;
}
/* IBM Plex Mono · latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-500.6708425c446b.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;
}
/* IBM Plex Mono · latin-ext */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-ext-600.6041b3192dc3.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;
}
/* IBM Plex Mono · latin */
@font-face {
  font-family: 'IBM Plex Mono';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/doc/ibm-plex-mono-latin-600.e71a597e376e.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;
}



/* Noto Sans — a letra dos títulos (a mesma do jw.org, que a usa em todo o
   site e faz a hierarquia com o peso, não com uma segunda letra). Ficheiro
   variável: o MESMO woff2 serve os três pesos, como a Plus Jakarta Sans. */
/* Noto Sans · latin-ext */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/noto-sans-latin-ext.cd3472cf160e.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;
}
/* Noto Sans · latin */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../fonts/noto-sans-latin.86d512f8885d.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;
}
/* Noto Sans · latin-ext */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/noto-sans-latin-ext.cd3472cf160e.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;
}
/* Noto Sans · latin */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url("../fonts/noto-sans-latin.86d512f8885d.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;
}
/* Noto Sans · latin-ext */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/noto-sans-latin-ext.cd3472cf160e.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;
}
/* Noto Sans · latin */
@font-face {
  font-family: 'Noto Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url("../fonts/noto-sans-latin.86d512f8885d.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;
}

/* Caveat — a letra manuscrita do passo «Leitura» dos Processos (os valores que
   vieram escritos à mão). Era carregada da fonts.googleapis.com dentro do
   próprio template, ou seja, o terceiro que bloqueia o desenho que esta folha
   existe para evitar. Agora é nossa, como as outras. Só latin + latin-ext: o
   cirílico da Google não serve para nada em pt-AO. */
/* Caveat · latin-ext */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/doc/caveat-latin-ext-500.476a0ee107e3.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;
}
/* Caveat · latin */
@font-face {
  font-family: 'Caveat';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url("../fonts/doc/caveat-latin-500.cf3c9470186b.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;
}

/* ===========================================================================
   TIPOGRAFIA — os tokens.

   Uma escala, uma letra por papel, dois espaçamentos. Antes disto a app tinha
   30+ tamanhos, ~40 espaçamentos e seis pilhas de letras diferentes, porque
   cada funcionalidade inventava os seus números: a mesma etiqueta em
   maiúsculas existia a 9, 9.5, 10, 10.5, 11 e 12px.

   O papel A4 NÃO usa nada disto — os modelos têm doc_fonts.css/doc_themes.js
   e a sua tipografia é o artefacto legal.
   =========================================================================== */
:root{
  /* Uma letra para tudo o que se lê, como no jw.org: a hierarquia faz-se com
     o peso e o tamanho, não com uma segunda letra. O mono é a excepção, e
     ganha-a por ser outra coisa — códigos, não palavras. */
  --f-display:'Noto Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
  --f-text:'Noto Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Arial, sans-serif;
  --f-mono:'IBM Plex Mono', ui-monospace, SFMono-Regular, Menlo, monospace;
  /* --font é o nome antigo: continua vivo para as regras que já o usam. */
  --font:var(--f-text);

  /* escala — oito degraus, nenhum com fracções de pixel */
  --t-micro:11px;   /* etiquetas em maiúsculas, badges, chips, cabeçalhos de tabela */
  --t-small:12px;   /* meta, secundário, corpo de tabela denso                      */
  --t-body:13px;    /* por omissão — corpo e campos                                 */
  --t-ui:14px;      /* botões e ênfase                                              */
  --t-title:16px;   /* títulos de cartão, de secção e de modal                       */
  --t-head:20px;    /* títulos de página                                            */
  --t-display:24px; /* números grandes, mosaicos                                    */
  --t-hero:32px;    /* só entrada e páginas legais                                  */

  /* entrelinha — quatro, não dezanove. O texto grande precisa de MENOS
     entrelinha, não da mesma: um título a 32px com 1.25 fica esparramado. */
  --lh-display:1.1;  /* --t-display e --t-hero      */
  --lh-tight:1.25;   /* títulos, UI de uma linha    */
  --lh-base:1.5;     /* corpo                       */
  --lh-read:1.65;    /* prosa (legais, ajuda)       */

  /* espaçamento entre letras — SÓ estes dois, e zero em tudo o resto.
     Nunca em texto minúsculo: a letra foi desenhada para ser lida junta. */
  --tr-caps:.06em;   /* etiquetas em MAIÚSCULAS                        */
  --tr-tight:-.01em; /* >= --t-head, para o texto grande não abrir     */

  /* pesos: 400 · 600 · 700. Três chegam para toda a hierarquia. */
  --fw-regular:400;
  --fw-semi:600;
  --fw-bold:700;
}

/* A base de toda a app. As folhas seguintes voltam a declarar font-family no
   body com var(--font) — dá no mesmo, aponta para aqui.
   O tabular-nums na raiz alinha TODAS as colunas de dinheiro de uma vez; antes
   era escrito à mão em ~20 sítios, e por isso umas tabelas alinhavam e outras
   abanavam. */
body{
  font-family:var(--font);
  font-size:var(--t-body);
  line-height:var(--lh-base);

  /* Suavização: cada motor tem a sua. Sem as duas, a MESMA letra sai mais
     gorda no Firefox/macOS do que no Chrome. */
  -webkit-font-smoothing:antialiased;   /* Blink + WebKit  */
  -moz-osx-font-smoothing:grayscale;    /* Gecko no macOS  */

  /* Algarismos de largura fixa, para as colunas de dinheiro alinharem.
     font-variant-numeric só é reconhecido pelo Safari a partir do 14; o
     font-feature-settings trata dos mais antigos e do Edge legado. */
  -webkit-font-feature-settings:'tnum' 1;
  font-feature-settings:'tnum' 1;
  font-variant-numeric:tabular-nums;

  /* O Safari do iPhone aumenta o texto sozinho ao rodar o ecrã e desfaz a
     escala toda. Isto trava-o sem impedir o zoom do utilizador. */
  -webkit-text-size-adjust:100%;
  text-size-adjust:100%;
}

/* Parágrafos justificados, com hifenização. Sem hyphens a justificação abre
   rios de espaço nas palavras longas do português («Encadernação»,
   «Disponibilidade»); é o lang="pt-AO" do <html> que faz a hifenização sair
   correcta. SÓ prosa — tabelas, etiquetas, botões e campos nunca se
   justificam. */
p{
  text-align:justify;
  /* Uma prefixada por motor: sem hifenização, a justificação abre rios de
     espaço nas palavras longas do português. O Safari SÓ hifeniza com a
     prefixada; o Edge legado SÓ com a -ms-. */
  -webkit-hyphens:auto;   /* Safari (todas as versões) */
  -ms-hyphens:auto;       /* Edge legado               */
  hyphens:auto;           /* Firefox, Chrome, Edge     */
}
