/* ==========================================================================
   Unasse — BASE
   Reset mínimo + fonte + os 11 tokens tipográficos compostos + reduced-motion
   global (§6.5a) + foco visível. Sem !important fora do bloco de reduced-motion.
   ========================================================================== */

/* --------------------------------------------------------------------------
   Nunito variável, SELF-HOST. Google Fonts é proibido neste projeto:
   foi a causa comprovada do LCP 4,4s e vazava IP antes do consentimento.
   O eixo do arquivo é wght 200..1000 e o *default* do arquivo é 200 —
   por isso todo papel declara o peso explicitamente (500/800/900).
   -------------------------------------------------------------------------- */
@font-face{
  font-family:"Nunito";
  font-style:normal;
  font-weight:200 1000;
  font-display:swap;
  src:url("/assets/fonts/nunito-latin-variavel.woff2") format("woff2");
}

*,*::before,*::after{ box-sizing:border-box }

html{
  /* zoom de texto do navegador funciona: a escala é toda em rem, sem clamp/vw */
  -webkit-text-size-adjust:100%;
  /* O fundo do CANVAS (a área de rubber-band do iOS) é o do <html> quando ele
     declara um; o do <body> só propaga se o <html> for transparente. Por isso
     o capítulo dinâmico mora aqui, e não no body — senão a faixa de overscroll
     fica sempre escura sobre um capítulo claro. */
  background:var(--bg-dinamico,var(--marinho-profundo));
  transition:background-color var(--d-transicao) var(--ease-sistema);
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--altura-cabecalho) + var(--e-16));
}

body{
  margin:0;
  color:var(--txt-escuro);
  font-family:"Nunito","Arial Rounded MT Bold",system-ui,sans-serif;
  font-size:var(--fs-corpo);
  line-height:var(--lh-corpo);
  font-weight:500;                        /* §1.1: 500 é o corpo, não 400 */
  -webkit-font-smoothing:antialiased;
  /* palavra longa em PT-BR ("Integração", "responsabilidade") com zoom de texto
     a 200% num aparelho de 360px não pode empurrar a página para fora da tela.
     Só age quando a palavra realmente não cabe — sem efeito no caso normal. */
  overflow-wrap:break-word;
}

h1,h2,h3,p,dl,dd,figure,blockquote{ margin:0 }
ul,ol{ margin:0; padding:0; list-style:none }
img,svg,video{ display:block; max-width:100% }
img{ height:auto }
a{ color:inherit }
button{ font:inherit; color:inherit }

/* --------------------------------------------------------------------------
   Os 11 tokens compostos (§1.3). Cada papel carrega size + leading + tracking
   + peso. Nunca um font-size solto. Medida em ch obrigatória no texto corrido.
   -------------------------------------------------------------------------- */
.t-h1{ font-size:var(--fs-h1); line-height:var(--lh-h1); letter-spacing:var(--ls-h1); font-weight:900; max-width:var(--m-h1); text-wrap:balance }
.t-h2{ font-size:var(--fs-h2); line-height:var(--lh-h2); letter-spacing:var(--ls-h2); font-weight:800; max-width:var(--m-h2); text-wrap:balance }
.t-h3{ font-size:var(--fs-h3); line-height:var(--lh-h3); letter-spacing:var(--ls-h3); font-weight:800; max-width:var(--m-h3); text-wrap:balance }
.t-h4{ font-size:var(--fs-h4); line-height:var(--lh-h4); letter-spacing:var(--ls-h4); font-weight:800; max-width:var(--m-h4); text-wrap:balance }
.t-sub{ font-size:var(--fs-sub); line-height:var(--lh-sub); letter-spacing:var(--ls-sub); font-weight:500; max-width:var(--m-sub); text-wrap:pretty }
.t-corpo-g{ font-size:var(--fs-corpo-g); line-height:var(--lh-corpo-g); font-weight:500; max-width:var(--m-corpo-g); text-wrap:pretty }
.t-corpo{ font-size:var(--fs-corpo); line-height:var(--lh-corpo); font-weight:500; max-width:var(--m-corpo); text-wrap:pretty }

/* font-variant-numeric: o subset do woff2 NÃO traz a feature `zero`
   (GSUB do arquivo = calt ccmp dnom frac liga locl numr — medido com fontTools,
   ver docs/VERIFICACAO.md §5). `slashed-zero` foi REMOVIDO do sistema por ser
   declaração morta. `tabular-nums` fica: a feature `tnum` também não existe,
   mas os dez dígitos já têm avanço idêntico (600/1000 upm) — o resultado
   pedido pelo HOKUSAI acontece por desenho da fonte, e a declaração protege
   o dia em que o arquivo for re-subsetado. */
.t-micro{ font-size:var(--fs-micro); line-height:var(--lh-micro); letter-spacing:var(--ls-micro); font-weight:500; max-width:var(--m-micro); font-variant-numeric:tabular-nums }
.t-legenda{ font-size:var(--fs-legenda); line-height:var(--lh-legenda); letter-spacing:var(--ls-legenda); font-weight:500; max-width:var(--m-legenda); font-variant-numeric:tabular-nums }
.t-botao{ font-size:var(--fs-botao); line-height:var(--lh-botao); letter-spacing:var(--ls-botao); font-weight:800 }
.t-eyebrow{ font-size:var(--fs-eyebrow); line-height:var(--lh-eyebrow); letter-spacing:var(--ls-eyebrow); font-weight:800; text-transform:uppercase }

/* --------------------------------------------------------------------------
   Foco visível — em todos os 4 fundos. Nunca outline:none sem substituto.
   -------------------------------------------------------------------------- */
:focus-visible{
  outline:3px solid var(--foco,currentColor);
  outline-offset:3px;
  border-radius:2px;
  transition:outline-color var(--d-instante) var(--ease-sistema);
}

/* Skip link — primeiro nó tabulável da página */
.pular{
  position:absolute; left:var(--e-16); top:var(--e-16); z-index:100;
  transform:translateY(-200%);
  background:var(--papel); color:var(--txt-claro);
  padding:var(--e-12) var(--e-16);
  border-radius:var(--raio-neutro);
  font-weight:800; text-decoration:none;
  transition:transform var(--d-ui) var(--ease-sistema);
}
.pular:focus{ transform:translateY(0) }

/* --------------------------------------------------------------------------
   prefers-reduced-motion — REGRA GLOBAL no reset (§6.5a).
   Único bloco do projeto autorizado a usar !important.
   A segunda camada (o estado inicial escondido nascer no JS) está em
   js/behaviors/Revelar.js — sem ela, esta regra sozinha não basta.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.01ms !important;
    scroll-behavior:auto !important;
  }
  html{ scroll-behavior:auto !important }
}
