/* As declarações @font-face vivem em css/fontes.css e são ligadas por <link>
   nas páginas, não por @import. Um @import obriga o browser a descarregar
   este ficheiro inteiro antes de sequer descobrir o outro — dois pedidos em
   série em vez de dois em paralelo, e as fontes chegam mais tarde. */

/* ==========================================================================
   Alvará Já — sistema de estilo
   Conceito: "um carimbo, não uma repartição". Superfície de papel, tinta
   escura, âmbar para acção, verde só para o estado habilitada.
   Luz apenas, por decisão: o contexto é documento oficial, e papel escuro
   contradiz a metáfora.
   ========================================================================== */

:root {
  /* Marca */
  --tinta:        #123A4E;
  --tinta-escura: #0C222C;
  --tinta-clara:  #2D5C72;
  --ambar:        #E0912A;
  --ambar-escuro: #C77E1E;   /* superfícies e contornos — NÃO usar em texto pequeno */
  /* Âmbar legível: 4,92:1 sobre --papel e 4,55:1 sobre --papel-2, portanto
     passa AA em corpo pequeno. O --ambar-escuro fica nos 3,1:1 e reprova.
     Toda a etiqueta, chapéu ou nota em âmbar usa esta variável. */
  --ambar-texto:  #9E5F0C;
  --verde:        #1E7A57;
  --verde-fundo:  #EAF7F1;
  --tijolo:       #A32E1E;   /* estado cancelado */
  --tijolo-fundo: #FBEDEA;

  /* Neutros de pedra fria */
  --papel:        #FBFAF8;
  --papel-2:      #F2F1ED;
  --linha:        #DFDDD6;
  --linha-forte:  #C8C5BC;
  --texto:        #1B2A31;
  --texto-suave:  #5A6A72;

  /* Tipografia */
  --display: 'Archivo', system-ui, -apple-system, 'Segoe UI', sans-serif;
  --corpo:   'Inter', system-ui, -apple-system, 'Segoe UI', Roboto, sans-serif;
  --mono:    'JetBrains Mono', ui-monospace, 'SF Mono', Menlo, Consolas, monospace;

  /* Ritmo */
  --largura: 1120px;
  --estreito: 720px;
  --raio: 10px;
  --raio-g: 16px;
  --sombra: 0 1px 2px rgba(18,58,78,.06), 0 8px 24px rgba(18,58,78,.07);
  --sombra-f: 0 2px 4px rgba(18,58,78,.08), 0 16px 40px rgba(18,58,78,.12);
}

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

html { -webkit-text-size-adjust: 100%; scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation-duration: .01ms !important; transition-duration: .01ms !important; }
}

body {
  margin: 0;
  font-family: var(--corpo);
  font-size: 17px;
  line-height: 1.65;
  color: var(--texto);
  background: var(--papel);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: var(--display);
  font-weight: 800;
  line-height: 1.12;
  letter-spacing: -0.02em;
  color: var(--tinta);
  margin: 0 0 .5em;
  text-wrap: balance;
}
h1 { font-size: clamp(2rem, 5.2vw, 3.25rem); }
h2 { font-size: clamp(1.55rem, 3.4vw, 2.2rem); }
h3 { font-size: 1.2rem; font-weight: 700; }
p  { margin: 0 0 1.1em; text-wrap: pretty; }
p:last-child { margin-bottom: 0; }

a { color: var(--tinta); text-underline-offset: .18em; text-decoration-thickness: .08em; }
a:hover { color: var(--ambar-texto); }

:focus-visible {
  outline: 3px solid var(--ambar);
  outline-offset: 2px;
  border-radius: 4px;
}

.mono { font-family: var(--mono); font-variant-numeric: tabular-nums; }
.saltar {
  position: absolute; left: -9999px; top: 0; z-index: 100;
  background: var(--tinta); color: #fff; padding: .75rem 1.25rem; border-radius: 0 0 var(--raio) 0;
}
.saltar:focus { left: 0; }
.visualmente-oculto {
  position: absolute; width: 1px; height: 1px; overflow: hidden;
  clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap;
}

/* --- Estrutura ----------------------------------------------------------- */
.envolvente { width: 100%; max-width: var(--largura); margin-inline: auto; padding-inline: 1.25rem; }
.envolvente--estreita { max-width: var(--estreito); }
.seccao { padding-block: clamp(3rem, 7vw, 5.5rem); }
.seccao--papel { background: var(--papel-2); border-block: 1px solid var(--linha); }

/* --- Cabeçalho ----------------------------------------------------------- */
.cabecalho {
  position: sticky; top: 0; z-index: 50;
  background: rgba(251,250,248,.92);
  backdrop-filter: saturate(1.4) blur(8px);
  border-bottom: 1px solid var(--linha);
}
.cabecalho__interior {
  display: flex; align-items: center; gap: 1.5rem;
  min-height: 68px;
}
.logo { display: inline-flex; align-items: center; gap: .55rem; text-decoration: none; flex-shrink: 0; }
/* O monograma tem caixa 52×56 — largura automática mantém a proporção. */
.logo svg { height: 31px; width: auto; display: block; }
.logo__texto {
  font-family: var(--display); font-weight: 800; font-size: 1.24rem;
  letter-spacing: -.028em; color: var(--tinta); white-space: nowrap;
}
.logo__ja { color: var(--ambar-escuro); }
.navegacao { margin-left: auto; display: flex; align-items: center; gap: 1.5rem; }
.navegacao a:not(.botao) { font-size: .95rem; font-weight: 500; text-decoration: none; color: var(--texto-suave); }
.navegacao a:not(.botao):hover,
.navegacao a:not(.botao)[aria-current="page"] { color: var(--tinta); }
/* Sem o :not(.botao) acima, `.navegacao a` (0,1,1) vencia `.botao--tinta` (0,1,0)
   e o texto do botão do cabeçalho ficava cinzento sobre azul — contraste ~1.9:1. */

/* Botão de menu: só existe quando a barra deixa de caber. */
.menu-botao {
  display: none; margin-left: auto; flex: none;
  align-items: center; justify-content: center; gap: .5rem;
  background: #fff; border: 1px solid var(--linha-forte); border-radius: var(--raio);
  padding: .55rem .8rem; cursor: pointer; color: var(--tinta);
  font: inherit; font-size: .9rem; font-weight: 600;
}
.menu-botao:hover { border-color: var(--tinta); }
/* Sem `display` na regra genérica: `.menu-botao svg` (0,1,1) vencia
   `.menu-botao__fechar` (0,1,0) e os dois ícones apareciam ao mesmo tempo. */
.menu-botao svg { width: 18px; height: 18px; }
.menu-botao__abrir { display: block; }
.menu-botao__fechar { display: none; }
.menu-botao[aria-expanded="true"] .menu-botao__abrir { display: none; }
.menu-botao[aria-expanded="true"] .menu-botao__fechar { display: block; }

@media (max-width: 860px) {
  .menu-botao { display: inline-flex; }
  .navegacao {
    position: absolute; top: 100%; left: 0; right: 0;
    margin-left: 0; display: none;
    flex-direction: column; align-items: stretch; gap: 0;
    background: var(--papel); border-bottom: 1px solid var(--linha);
    box-shadow: var(--sombra-f);
    padding: .5rem clamp(1rem, 4vw, 1.25rem) 1.25rem;
  }
  .navegacao[data-aberta] { display: flex; }
  .navegacao a:not(.botao) {
    font-size: 1.02rem; padding: .9rem .25rem;
    border-bottom: 1px solid var(--linha); color: var(--tinta);
  }
  .navegacao a:not(.botao)[aria-current="page"] { color: var(--ambar-texto); }
  .navegacao .botao { margin-top: 1rem; justify-content: center; }
}

/* --- Botões -------------------------------------------------------------- */
.botao {
  display: inline-flex; align-items: center; justify-content: center; gap: .5rem;
  font-family: var(--corpo); font-size: 1rem; font-weight: 600;
  padding: .8rem 1.5rem; border-radius: var(--raio);
  border: 1px solid transparent; cursor: pointer; text-decoration: none;
  transition: background-color .15s, border-color .15s, transform .08s;
  line-height: 1.2;
}
.botao:active { transform: translateY(1px); }
/* Texto em tinta escura, não branco: branco sobre âmbar dá 2,5:1 e reprova em AA.
   Tinta escura sobre âmbar passa folgadamente e assina melhor a sinalética de obra. */
.botao--primario { background: var(--ambar); color: var(--tinta-escura); border-color: var(--ambar-escuro); }
.botao--primario:hover { background: var(--ambar-escuro); color: var(--tinta-escura); }
.botao--tinta { background: var(--tinta); color: #fff; }
.botao--tinta:hover { background: var(--tinta-escura); color: #fff; }
.botao--linha { background: transparent; color: var(--tinta); border-color: var(--linha-forte); }
.botao--linha:hover { background: #fff; border-color: var(--tinta); color: var(--tinta); }
.botao--largo { width: 100%; }

/* --- Hero ---------------------------------------------------------------- */
.hero {
  background:
    radial-gradient(900px 420px at 78% -12%, rgba(224,145,42,.13), transparent 62%),
    linear-gradient(180deg, #fff 0%, var(--papel) 100%);
  border-bottom: 1px solid var(--linha);
  padding-block: clamp(2.75rem, 6vw, 4.75rem);
}
.hero__etiqueta {
  display: inline-flex; align-items: center; gap: .55rem;
  font-size: .82rem; font-weight: 600; letter-spacing: .02em;
  color: var(--tinta); background: #fff;
  border: 1px solid var(--linha-forte); border-radius: 999px;
  padding: .38rem .9rem; margin-bottom: 1.4rem;
}
.hero__etiqueta::before {
  content: ""; width: 7px; height: 7px; border-radius: 50%;
  background: var(--ambar); flex-shrink: 0;
}
.hero__chamada { font-size: clamp(1.05rem, 2.1vw, 1.25rem); color: var(--texto-suave); max-width: 60ch; }

/* --- Verificador --------------------------------------------------------- */
.verificador {
  background: #fff; border: 1px solid var(--linha);
  border-radius: var(--raio-g); box-shadow: var(--sombra);
  padding: clamp(1.25rem, 3vw, 1.75rem);
  margin-top: 2rem;
}
.verificador__etiqueta {
  display: block; font-weight: 600; font-size: .95rem;
  color: var(--tinta); margin-bottom: .6rem;
}
.verificador__campos { display: flex; gap: .75rem; }
.verificador__campo {
  flex: 1; min-width: 0;
  font-family: var(--mono); font-size: 1.15rem; letter-spacing: .04em;
  padding: .85rem 1rem; border: 1.5px solid var(--linha-forte);
  border-radius: var(--raio); background: var(--papel);
  color: var(--texto); width: 100%;
}
.verificador__campo::placeholder { color: #9AA5AB; letter-spacing: .02em; }
.verificador__campo:focus { border-color: var(--tinta); background: #fff; outline: none; box-shadow: 0 0 0 3px rgba(18,58,78,.1); }
.verificador__campo[aria-invalid="true"] { border-color: var(--tijolo); }
.verificador__ajuda { font-size: .875rem; color: var(--texto-suave); margin: .7rem 0 0; }
.verificador__erro { font-size: .9rem; color: var(--tijolo); font-weight: 500; margin: .6rem 0 0; }
.verificador__alternar {
  background: none; border: none; padding: 0; cursor: pointer;
  font: inherit; font-size: .875rem; color: var(--tinta-clara);
  text-decoration: underline; text-underline-offset: .18em;
}
.verificador__alternar:hover { color: var(--ambar-texto); }
@media (max-width: 620px) {
  .verificador__campos { flex-direction: column; }
}

/* --- Resultado ----------------------------------------------------------- */
.resultado {
  border-radius: var(--raio-g); border: 1px solid var(--linha);
  background: #fff; box-shadow: var(--sombra-f);
  overflow: hidden; margin-top: 1.5rem;
}
.resultado__topo { padding: 1.4rem clamp(1.25rem, 3vw, 1.85rem); border-bottom: 1px solid var(--linha); }
.resultado__corpo { padding: 1.4rem clamp(1.25rem, 3vw, 1.85rem); }
.resultado__estado {
  display: inline-flex; align-items: center; gap: .55rem;
  font-family: var(--display); font-weight: 800; font-size: .82rem;
  letter-spacing: .09em; text-transform: uppercase;
  padding: .4rem .85rem; border-radius: 999px; margin-bottom: .9rem;
}
.resultado__nome { font-family: var(--display); font-weight: 800; font-size: 1.4rem; color: var(--tinta); margin: 0 0 .3rem; line-height: 1.2; }
.resultado__nif { font-family: var(--mono); font-size: .95rem; color: var(--texto-suave); }
.resultado--habilitada .resultado__topo { background: var(--verde-fundo); border-bottom-color: #C9E5D8; }
.resultado--habilitada .resultado__estado { background: var(--verde); color: #fff; }
.resultado--cancelada .resultado__topo { background: var(--tijolo-fundo); border-bottom-color: #F0D2CC; }
.resultado--cancelada .resultado__estado { background: var(--tijolo); color: #fff; }
.resultado--sem-registo .resultado__topo { background: var(--papel-2); }
.resultado--sem-registo .resultado__estado { background: var(--texto-suave); color: #fff; }

.titulo-item {
  display: flex; flex-wrap: wrap; gap: .5rem 1rem; align-items: baseline;
  padding: .8rem 0; border-bottom: 1px dashed var(--linha);
}
.titulo-item:last-of-type { border-bottom: none; }
.titulo-item__especie { font-weight: 600; color: var(--tinta); }
.titulo-item__numero { font-family: var(--mono); font-size: .9rem; color: var(--texto-suave); }
.titulo-item__ambito {
  font-size: .78rem; font-weight: 600; letter-spacing: .04em; text-transform: uppercase;
  background: var(--papel-2); border: 1px solid var(--linha);
  padding: .16rem .55rem; border-radius: 5px; color: var(--texto-suave);
}
.nota {
  background: var(--papel-2); border-left: 3px solid var(--linha-forte);
  padding: .9rem 1.1rem; border-radius: 0 var(--raio) var(--raio) 0;
  font-size: .93rem; color: var(--texto-suave); margin-top: 1.1rem;
}
.nota--aviso { background: #FEF6E7; border-left-color: var(--ambar); color: #6B4C15; }
.accao-seguinte {
  margin-top: 1.4rem; padding-top: 1.4rem; border-top: 1px solid var(--linha);
  display: flex; flex-wrap: wrap; gap: .75rem; align-items: center;
}

/* --- Grelhas e cartões --------------------------------------------------- */
.grelha { display: grid; gap: 1.25rem; }
.grelha--3 { grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); }
.grelha--2 { grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); }
.cartao {
  background: #fff; border: 1px solid var(--linha);
  border-radius: var(--raio-g); padding: 1.5rem; box-shadow: var(--sombra);
}
.cartao__numero {
  font-family: var(--mono); font-size: .8rem; font-weight: 500;
  color: var(--ambar-texto); letter-spacing: .1em; margin-bottom: .6rem;
}
.cartao h3 { margin-bottom: .45rem; }
.cartao p { font-size: .96rem; color: var(--texto-suave); }

/* --- Tabela de preços ---------------------------------------------------- */
.tabela-envolvente { overflow-x: auto; border: 1px solid var(--linha); border-radius: var(--raio-g); background: #fff; }
table.precos { width: 100%; border-collapse: collapse; min-width: 620px; }
table.precos th, table.precos td { text-align: left; padding: 1rem 1.15rem; border-bottom: 1px solid var(--linha); vertical-align: top; }
table.precos thead th { background: var(--papel-2); font-family: var(--display); font-weight: 700; font-size: .82rem; text-transform: uppercase; letter-spacing: .07em; color: var(--texto-suave); }
table.precos tbody tr:last-child td { border-bottom: none; }
table.precos .preco { font-family: var(--mono); font-weight: 500; white-space: nowrap; color: var(--tinta); }
/* "+ IVA" colado ao valor: é a fonte de mal-entendidos mais comum numa tabela
   de honorários, por isso nunca fica só na nota de rodapé. */
table.precos .preco__iva {
  font-family: var(--corpo); font-size: .82rem; font-weight: 500;
  color: var(--texto-suave); white-space: nowrap;
}
table.precos .servico { font-weight: 600; color: var(--tinta); }
table.precos .detalhe { display: block; font-size: .88rem; color: var(--texto-suave); font-weight: 400; margin-top: .2rem; }

/* --- Simulador ----------------------------------------------------------- */
.passo { display: none; }
.passo[data-activo] { display: block; }
.passo__conta {
  font-family: var(--mono); font-size: .78rem; letter-spacing: .12em;
  text-transform: uppercase; color: var(--ambar-texto); margin-bottom: .6rem;
}
.passo fieldset { border: 0; padding: 0; margin: 0; }
.passo legend {
  font-family: var(--display); font-weight: 800; font-size: 1.35rem;
  color: var(--tinta); line-height: 1.2; margin-bottom: 1.1rem; padding: 0;
}
.opcoes { display: grid; gap: .7rem; }
.opcao {
  display: flex; align-items: flex-start; gap: .85rem;
  padding: 1rem 1.15rem; background: #fff;
  border: 1.5px solid var(--linha); border-radius: var(--raio);
  cursor: pointer; transition: border-color .14s, box-shadow .14s;
}
.opcao:hover { border-color: var(--linha-forte); }
.opcao:has(input:checked) { border-color: var(--ambar); box-shadow: 0 0 0 3px rgba(224,145,42,.16); }
.opcao:has(input:focus-visible) { outline: 3px solid var(--ambar); outline-offset: 2px; }
.opcao input { margin-top: .3rem; flex-shrink: 0; accent-color: var(--tinta); }
.opcao__t { display: block; font-weight: 600; color: var(--tinta); }
.opcao__d { display: block; font-size: .88rem; color: var(--texto-suave); margin-top: .12rem; }
.passo__navegacao {
  display: flex; gap: .75rem; align-items: center; flex-wrap: wrap;
  margin-top: 1.5rem; padding-top: 1.25rem; border-top: 1px solid var(--linha);
}
.barra-progresso {
  display: flex; gap: .4rem; margin-bottom: 1.5rem;
}
.barra-progresso span {
  height: 4px; flex: 1; border-radius: 2px; background: var(--linha);
}
.barra-progresso span[data-feito] { background: var(--ambar); }

/* --- FAQ ----------------------------------------------------------------- */
.faq details {
  background: #fff; border: 1px solid var(--linha); border-radius: var(--raio);
  padding: 1rem 1.25rem; margin-bottom: .75rem;
}
.faq details[open] { box-shadow: var(--sombra); }
.faq summary {
  cursor: pointer; font-weight: 600; color: var(--tinta);
  list-style: none; display: flex; justify-content: space-between; align-items: center; gap: 1rem;
}
.faq summary::-webkit-details-marker { display: none; }
.faq summary::after { content: "+"; font-family: var(--mono); font-size: 1.3rem; color: var(--ambar); line-height: 1; }
.faq details[open] summary::after { content: "\2212"; }
.faq details > *:not(summary) { margin-top: .85rem; font-size: .96rem; color: var(--texto-suave); }

/* --- Rodapé -------------------------------------------------------------- */
.rodape { background: var(--tinta-escura); color: #B9C7CE; padding-block: 3rem 2rem; font-size: .93rem; }
.rodape h4 { color: #fff; font-size: .82rem; text-transform: uppercase; letter-spacing: .09em; margin-bottom: .9rem; }
.rodape a { color: #B9C7CE; text-decoration: none; }
.rodape a:hover { color: #fff; text-decoration: underline; }
.rodape__grelha { display: grid; gap: 2rem; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); }
.rodape__lista { list-style: none; padding: 0; margin: 0; display: grid; gap: .5rem; }
.rodape__fundo {
  margin-top: 2.5rem; padding-top: 1.5rem; border-top: 1px solid rgba(255,255,255,.13);
  display: flex; flex-wrap: wrap; gap: 1rem; justify-content: space-between;
  font-size: .85rem; color: #8FA3AC;
}
.rodape__fonte { font-family: var(--mono); font-size: .8rem; }

/* Aviso para quem tem o JavaScript desligado. As ferramentas que dependem
   dele devem dizê-lo e apontar uma alternativa, em vez de ficarem mudas. */
.sem-js {
  display: block; background: #FEF6E7; border: 1px solid var(--ambar);
  border-radius: var(--raio); padding: 1rem 1.15rem; margin-bottom: 1.5rem;
  font-size: .95rem; color: #6B4C15;
}
.sem-js a { color: inherit; }

/* --- Utilitários --------------------------------------------------------- */
.centro { text-align: center; }
.chapeu {
  font-family: var(--mono); font-size: .8rem; font-weight: 500;
  letter-spacing: .13em; text-transform: uppercase; color: var(--ambar-texto);
  margin-bottom: .7rem;
}
.suave { color: var(--texto-suave); }
.pequeno { font-size: .88rem; }
.oculto { display: none !important; }
.lista-limpa { list-style: none; padding: 0; margin: 0; }
.lista-visto { list-style: none; padding: 0; margin: 0 0 1.1em; display: grid; gap: .6rem; }
.lista-visto li { position: relative; padding-left: 1.75rem; }
.lista-visto li::before {
  content: ""; position: absolute; left: 0; top: .52em;
  width: 11px; height: 6px; border-left: 2.5px solid var(--verde); border-bottom: 2.5px solid var(--verde);
  transform: rotate(-45deg);
}
.aviso-legal {
  font-size: .85rem; color: var(--texto-suave); line-height: 1.55;
  border-top: 1px solid var(--linha); padding-top: 1.25rem; margin-top: 2rem;
}
.girar { animation: girar 700ms linear infinite; transform-origin: 50% 50%; }
@keyframes girar { to { transform: rotate(360deg); } }

/* --- Acções sobre o resultado -------------------------------------------- */
.resultado__ferramentas {
  display: flex; flex-wrap: wrap; gap: .5rem;
  margin-top: 1.1rem; padding-top: 1rem; border-top: 1px dashed var(--linha);
}
.ferramenta {
  display: inline-flex; align-items: center; gap: .4rem;
  font: inherit; font-size: .88rem; font-weight: 600;
  background: none; border: 1px solid var(--linha-forte); border-radius: 8px;
  padding: .42rem .75rem; cursor: pointer; color: var(--tinta);
  text-decoration: none; transition: border-color .14s, background-color .14s;
}
.ferramenta:hover { border-color: var(--tinta); background: var(--papel-2); color: var(--tinta); }
.ferramenta svg { width: 15px; height: 15px; flex: none; }
.ferramenta[data-feito] { border-color: var(--verde); color: var(--verde); }

/* --- Impressão ------------------------------------------------------------
   Um resultado impresso é o documento que o dono de obra arquiva no processo
   da empreitada. Vale a pena sair limpo: sem navegação, sem botões, com a
   fonte dos dados e a data bem visíveis, e o endereço dos links por extenso.  */
@media print {
  .cabecalho, .rodape, .menu-botao, .saltar,
  .resultado__ferramentas, .accao-seguinte,
  form, .verificador, .barra-progresso, .faq { display: none !important; }

  html, body { background: #fff !important; font-size: 11.5pt; }
  .seccao, .hero { padding-block: 0 !important; background: none !important; border: 0 !important; }
  .envolvente { max-width: none; padding-inline: 0; }

  .resultado {
    box-shadow: none !important;
    border: 1.5pt solid #123A4E !important;
    break-inside: avoid;
    margin-top: 0 !important;
  }
  .resultado__topo { background: none !important; border-bottom: 1pt solid #123A4E !important; }
  .resultado__estado {
    background: none !important; color: #123A4E !important;
    border: 1pt solid #123A4E; padding: .1rem .4rem;
  }
  .nota, .nota--aviso { border: .5pt solid #999 !important; background: none !important; }

  /* Sem os endereços por extenso, um link impresso não serve para nada. */
  a[href^="http"]::after { content: " (" attr(href) ")"; font-size: 9pt; word-break: break-all; }

  /* Cabeçalho e rodapé próprios da folha. */
  .resultado::before {
    content: "Alvará Já · alvaraja.pt — consulta ao registo público do IMPIC";
    display: block; padding: .35rem .9rem;
    font-size: 9pt; letter-spacing: .04em; text-transform: uppercase;
    border-bottom: .5pt solid #999; color: #123A4E;
  }
  .aviso-legal { border-top: .5pt solid #999; font-size: 9pt; }
  @page { margin: 16mm; }
}

/* --- Conteúdo longo (legal) ---------------------------------------------- */
.prosa h2 { margin-top: 2.5rem; font-size: 1.5rem; }
.prosa h3 { margin-top: 1.75rem; }
.prosa ul, .prosa ol { padding-left: 1.3rem; margin-bottom: 1.1em; }
.prosa li { margin-bottom: .45rem; }
.prosa table { width: 100%; border-collapse: collapse; margin-bottom: 1.5em; font-size: .95rem; }
.prosa th, .prosa td { text-align: left; padding: .65rem .8rem; border: 1px solid var(--linha); vertical-align: top; }
.prosa th { background: var(--papel-2); font-weight: 600; }
