/* Juris — utilitários mínimos (evita reintroduzir um framework). */
.u-mono { font-family: var(--font-mono); font-variant-numeric: tabular-nums; }
.u-serif { font-family: var(--font-serif); }
.u-ink-1 { color: var(--ink-1); } .u-ink-2 { color: var(--ink-2); } .u-ink-erro { color: var(--erro); }
.u-carimbo { color: var(--carimbo-ink); } .u-sinete { color: var(--sinete-ink); }
.u-flex { display: flex; } .u-col { flex-direction: column; } .u-center { align-items: center; }
.u-between { justify-content: space-between; } .u-wrap { flex-wrap: wrap; }
.u-gap-1 { gap: var(--sp-1); } .u-gap-2 { gap: var(--sp-2); } .u-gap-3 { gap: var(--sp-3); } .u-gap-4 { gap: var(--sp-4); }
.u-grid { display: grid; }
.u-mt-2 { margin-top: var(--sp-2); } .u-mt-4 { margin-top: var(--sp-4); } .u-mb-2 { margin-bottom: var(--sp-2); } .u-mb-4 { margin-bottom: var(--sp-4); }
.u-sm { font-size: var(--fs-sm); } .u-xs { font-size: var(--fs-xs); } .u-lg { font-size: var(--fs-lg); }
.u-right { text-align: right; } .u-center-text { text-align: center; }
.u-tabular { font-variant-numeric: tabular-nums; }
.u-hidden { display: none; }
.cols-3-6-3 { display: grid; grid-template-columns: 3fr 6fr 3fr; gap: var(--sp-4); }
.cols-auto { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: var(--sp-3); }
@media (max-width: 991px) { .cols-3-6-3 { grid-template-columns: 1fr; } }

/* Texto só para leitor de tela. Existe porque a coluna do olho na lista do acervo é um
   ícone sem rótulo: o `<th>` precisa de um nome acessível, e qualquer palavra visível ali
   empurraria a coluna do número — a que o advogado procura — para dentro da tabela.
   Não reaproveita o `.u-oculto-js` dos componentes: aquele nomeia OUTRA intenção (o botão
   que só serve a quem está sem JS) e um dia pode passar a ser `display:none`, que apagaria
   este rótulo do leitor de tela junto. */
.u-so-leitor { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%);
               white-space: nowrap; }
