/* Gestx 17.117 — Etapa 05: componentes compartilhados.
 * Mantém estilos locais e controles nativos. Não cria ou modifica spinners.
 */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) {
  --ux05-contorno: #bbceda;
  --ux05-foco: #075fae;
  --ux05-ajuda: #586b7a;
  --ux05-erro: #b42318;
  --ux05-limite: #97530a;
}
/* Campos: legibilidade das ajudas e feedback apenas após validação nativa. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(.grupo-campo,.campo-formulario,.site-formulario,.catalogo-formulario) {
  min-width: 0;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(.grupo-campo,.campo-formulario) :where(label,legend) {
  overflow-wrap: anywhere;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(.grupo-campo,.campo-formulario) :where(small,.campo-ajuda) {
  line-height: 1.45;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(input,select,textarea)[data-gestx-validacao-auto='1'][aria-invalid='true'] {
  border-color: var(--ux05-erro);
  outline-color: var(--ux05-erro);
}
/* Contador textual não é uma notificação, por isso não cria alertas vivos a cada tecla. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .gestx-contador-texto {
  display: block;
  justify-self: end;
  max-width: 100%;
  margin: 3px 0 0;
  color: var(--ux05-ajuda);
  font-size: 12px;
  font-weight: 400;
  font-variant-numeric: tabular-nums;
  text-align: right;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .gestx-contador-texto.gestx-contador-limite {
  color: var(--ux05-limite);
  font-weight: 600;
}
/* Tabelas com colunas ocultas: acesso ao scroll pelo teclado com indicação do foco. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .tabela-responsiva.gestx-tabela-rolavel {
  max-width: 100%;
  overscroll-behavior-x: contain;
  scrollbar-gutter: stable;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .tabela-responsiva.gestx-tabela-rolavel:focus-visible {
  outline: 2px solid var(--ux05-foco);
  outline-offset: -2px;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(.tabela-responsiva,.grade-campos,.linha-formulario) > * {
  min-width: 0;
}
/* Barras: não ocultar controles quando uma coluna fica estreita. */
.corpo-aplicacao :where(.acoes-formulario,.barra-acoes,.acoes-modal) {
  column-gap: clamp(8px, 1.3vw, 13px);
  row-gap: 8px;
}
.corpo-aplicacao :where(.acoes-formulario,.barra-acoes) :where(button,.botao,a.botao) {
  max-width: 100%;
}
/* Itens de menu e listas de opções: preserva cores de cada módulo. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where([role='menuitem'],[role='option'],.botao-aba-lateral):focus-visible {
  outline: 2px solid var(--ux05-foco);
  outline-offset: 2px;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(select,input,textarea):disabled {
  opacity: .75;
  cursor: not-allowed;
}
@media (max-width: 650px) {
  .corpo-aplicacao :where(.acoes-formulario,.barra-acoes) { flex-wrap: wrap; }
  .corpo-aplicacao :where(.acoes-formulario,.barra-acoes) > :where(button,.botao) { min-width: 0; }
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .gestx-contador-texto { white-space: normal; }
}
@media (forced-colors: active) {
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
    .tabela-responsiva.gestx-tabela-rolavel:focus-visible { outline-color: Highlight; }
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
    :where(input,select,textarea)[data-gestx-validacao-auto='1'][aria-invalid='true'] { border-color: Mark; }
}
@media print {
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico) .gestx-contador-texto { display: none; }
}
