/* =========================================================
   Base: reset, tipografia e utilitários mínimos
   ========================================================= */
*, *::before, *::after { box-sizing: border-box; }
[hidden] { display: none !important; }
html { -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0;
  font-family: var(--fonte);
  font-size: var(--texto-md);
  line-height: var(--entrelinha-texto);
  color: var(--texto);
  background: var(--fundo);
  -webkit-font-smoothing: antialiased;
  font-feature-settings: "ss01" 0;
  text-rendering: optimizeLegibility;
}
img, svg, video { display: block; max-width: 100%; }
button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
a { color: inherit; }
h1, h2, h3, h4, p, ul, ol, figure, blockquote, dl, dd { margin: 0; }
ul[role="list"], ol[role="list"] { list-style: none; padding: 0; }
table { border-collapse: collapse; }
fieldset { border: 0; padding: 0; margin: 0; min-width: 0; }
legend { padding: 0; }
code, kbd { font-family: inherit; font-size: .92em; }
hr { border: 0; border-top: 1px solid var(--divisor); margin: var(--e-6) 0; }

:focus { outline: none; }
:focus-visible { box-shadow: var(--foco); border-radius: var(--raio-sm); }

/* ---------- Escala tipográfica ---------- */
.t-display { font-size: var(--titulo-xl); font-weight: var(--peso-semi); line-height: 1; letter-spacing: -0.045em; text-wrap: balance; }
.t-titulo-lg, h1 { font-size: var(--titulo-lg); font-weight: var(--peso-semi); line-height: var(--entrelinha-titulo); letter-spacing: -0.04em; text-wrap: balance; }
.t-titulo-md, h2 { font-size: var(--titulo-md); font-weight: var(--peso-semi); line-height: 1.15; letter-spacing: -0.03em; }
.t-titulo-sm, h3 { font-size: var(--titulo-sm); font-weight: var(--peso-semi); line-height: 1.25; letter-spacing: -0.02em; }
h4 { font-size: var(--texto-lg); font-weight: var(--peso-semi); line-height: 1.35; }
.t-lg { font-size: var(--texto-lg); }
.t-sm { font-size: var(--texto-sm); }
.t-xs { font-size: var(--texto-xs); }
.t-2 { color: var(--texto-2); }
.t-3 { color: var(--texto-3); }
.t-medio { font-weight: var(--peso-medio); }
.t-semi { font-weight: var(--peso-semi); }
.t-num { font-variant-numeric: tabular-nums; }
.t-marca { color: var(--marca-texto); }
.t-sucesso { color: var(--sucesso-texto); }
.t-aviso { color: var(--aviso-texto); }
.t-perigo { color: var(--perigo-texto); }
.rotulo { font-size: var(--texto-sm); font-weight: var(--peso-medio); color: var(--texto-2); }
.leitura { max-width: var(--largura-leitura); }
p { text-wrap: pretty; }

/* ---------- Utilitários de layout (poucos, previsíveis) ---------- */
.pilha > * + * { margin-top: var(--e-4); }
.pilha-sm > * + * { margin-top: var(--e-2); }
.pilha-lg > * + * { margin-top: var(--e-8); }
.linha { display: flex; align-items: center; gap: var(--e-3); }
.linha-sm { display: flex; align-items: center; gap: var(--e-2); }
.linha-entre { display: flex; align-items: center; justify-content: space-between; gap: var(--e-4); }
.quebra { flex-wrap: wrap; }
.cresce { flex: 1 1 auto; min-width: 0; }
.grade { display: grid; gap: var(--gap-cartoes); }
.grade-2 { display: grid; gap: var(--gap-cartoes); grid-template-columns: repeat(2, minmax(0, 1fr)); }
.grade-3 { display: grid; gap: var(--gap-cartoes); grid-template-columns: repeat(3, minmax(0, 1fr)); }
.grade-4 { display: grid; gap: var(--gap-cartoes); grid-template-columns: repeat(4, minmax(0, 1fr)); }
.grade-auto { display: grid; gap: var(--gap-cartoes); grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); }
@media (max-width: 1100px) { .grade-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 900px) { .grade-3 { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
@media (max-width: 640px) { .grade-2, .grade-3, .grade-4 { grid-template-columns: minmax(0, 1fr); } }

.so-leitor {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0;
}
.truncar { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.truncar-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }

/* ---------- Ícones ---------- */
.ic { width: 20px; height: 20px; flex: none; stroke: currentColor; fill: none; stroke-width: 1.75; stroke-linecap: round; stroke-linejoin: round; }
.ic-sm { width: 16px; height: 16px; }
.ic-lg { width: 24px; height: 24px; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 1ms !important; animation-iteration-count: 1 !important; transition-duration: 1ms !important; scroll-behavior: auto !important; }
}

/* ---------- Espaçamentos pontuais ---------- */
.mt-1 { margin-top: var(--e-1); }
.mt-2 { margin-top: var(--e-2); }
.mt-3 { margin-top: var(--e-3); }
.mt-4 { margin-top: var(--e-4); }
.mt-6 { margin-top: var(--e-6); }
.mt-8 { margin-top: var(--e-8); }
.mt-5 { margin-top: var(--e-5); }
.mb-2 { margin-bottom: var(--e-2); }
.mb-3 { margin-bottom: var(--e-3); }
.mb-4 { margin-bottom: var(--e-4); }
.mb-5 { margin-bottom: var(--e-5); }
.mb-6 { margin-bottom: var(--e-6); }
.mb-8 { margin-bottom: var(--e-8); }
.bloco { display: block; }

/* ---------- Link de apoio ---------- */
.link { color: var(--texto-2); font-size: var(--texto-sm); font-weight: var(--peso-medio); text-decoration: none; }
.link:hover { color: var(--texto); text-decoration: underline; text-underline-offset: 3px; }
.link-forte { color: var(--texto); font-weight: var(--peso-medio); text-decoration: none; }
.link-forte:hover { text-decoration: underline; text-underline-offset: 3px; }
