/* Reset, tipografia e corpo (Sistema_de_Estilos: base.css). Só tokens de style.css. */
*, *::before, *::after { box-sizing: border-box; }
/* `hidden` sempre esconde, mesmo em classe com display próprio (.linha-campos é grid, .campo é flex) */
[hidden] { display: none !important; }

html { -webkit-text-size-adjust: 100%; }

body {
  margin: 0;
  min-height: 100vh;
  background: var(--fundo);
  color: var(--texto);
  font-family: var(--font);
  font-size: var(--fs-base);
  line-height: 1.55;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

/* CRÍTICO: sem isso, form vai pra Arial (Windows) ou -apple-system (Mac) */
button, input, select, textarea { font-family: inherit; }

h1, h2, h3, h4, h5 {
  font-family: var(--font-titulo);
  font-weight: 700;
  letter-spacing: -.02em;
  color: var(--texto);
  line-height: 1.2;
  margin: 0;
}
h1 { font-size: var(--fs-2xl); }
h2, h1.titulo-publico { font-size: var(--fs-xl); }   /* tela pública: h1 único, no tamanho do card */
h3 { font-size: var(--fs-h3); }
p { margin: 0; }

/* Tom escuro da marca: o --cor-primaria-texto dá 4.37:1 sobre --fundo, abaixo do AA; este dá 6.33:1 */
a { color: var(--cor-primaria-escura); text-decoration: none; }
a:hover { text-decoration: underline; }

img { max-width: 100%; display: block; }

:focus-visible {
  outline: 2px solid var(--cor-primaria-hover);
  outline-offset: 2px;
}

/* Texto só para leitor de tela */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

.texto-fraco { color: var(--texto-fraco); }
.texto-secundario { color: var(--texto-secundario); }
.texto-centro { text-align: center; }
.oculto { display: none !important; }
