/* Gestx 17.117 — Evolução Etapa 04 | Padrão visual transversal.
 * Camada ADITIVA: a identidade de módulos, z-index dos modais e os indicadores
 * de carregamento já existentes não são alterados nesta fase.
 * Os seletores estão delimitados à aplicação, site/blog e vitrine pública.
 */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) {
  --ux-raio-controle: 10px;
  --ux-raio-bloco: 16px;
  --ux-borda: #dce6eb;
  --ux-foco-cor: #075fae;
  --ux-foco-anel: #ffffff;
  --ux-tempo: 180ms;
  --ux-tempo-lento: 260ms;
  --ux-curva: cubic-bezier(.2,.7,.2,1);
  --ux-distancia: 2px;
  -webkit-text-size-adjust: 100%;
  text-size-adjust: 100%;
}
/* O foco por teclado não depende só de uma sombra: funciona também em alto contraste. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
  :where(a[href],button:not([disabled]),input:not([type=hidden]),select,textarea,[tabindex]:not([tabindex='-1'])):focus-visible {
  outline: 2px solid var(--ux-foco-cor);
  outline-offset: 3px;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(input,select,textarea)[aria-invalid='true'],
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(input,select,textarea):user-invalid {
  border-color: #b42318;
  box-shadow: 0 0 0 2px rgb(180 35 24 / 12%);
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(input,select,textarea)[aria-invalid='true']:focus-visible {
  outline-color: #b42318;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(input,select,textarea):disabled {
  cursor: not-allowed;
}
/* Leitura: títulos longos podem quebrar em linhas equilibradas sem alterar escala tipográfica específica. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(h1,h2,h3,h4) {
  text-wrap: balance;
  overflow-wrap: break-word;
}
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(code,kbd,output) {
  overflow-wrap: anywhere;
}
.corpo-aplicacao :where(.cartao,.painel):focus-within {
  border-color: #b7d5e7;
}
/* Consolida ritmo vertical sem mudar altura de botões de ação especializados. */
.corpo-aplicacao :where(.cartao,.painel,.secao-formulario) {
  border-color: var(--ux-borda);
}
.corpo-aplicacao :where(.grupo-campo,.secao-formulario,.grade-campos,.linha-formulario) {
  min-width: 0;
}
.corpo-aplicacao :where(.grupo-campo label,.campo-ajuda) {
  line-height: 1.5;
}
.corpo-aplicacao :where(.botao,.botao-icone):not(:disabled) {
  transition-duration: var(--ux-tempo);
  transition-timing-function: var(--ux-curva);
}
.corpo-aplicacao :where(.conteudo-principal,.coluna-principal,.grade-campos,.tabela-responsiva) {
  min-width: 0;
}
.corpo-aplicacao :where(.tabela-responsiva) {
  max-width: 100%;
  overscroll-behavior-x: contain;
  -webkit-overflow-scrolling: touch;
}
.corpo-aplicacao :where(.tabela th,.tabela td) {
  line-height: 1.4;
}
.corpo-aplicacao :where(.mensagem-formulario) {
  overflow-wrap: anywhere;
}
/* Evita perda do foco nas listas longas e formulários dos módulos. */
.corpo-aplicacao :where(.tabela tr):focus-within {
  position: relative;
}
/* Site e Blog compartilham comportamento de foco e controles, sem mudar marca. */
.site-gestx :where(.site-botao,.site-menu-botao,.blog-artigo-acoes button) {
  transition-duration: var(--ux-tempo);
}
.site-gestx :where(.site-chat-corpo input,.site-chat-corpo textarea) {
  max-width: 100%;
}
/* Vitrine: preserva cores escolhidas pelo lojista e melhora controles de seleção. */
.catalogo-publico :where(.produto-publico-valor-variacao,.vitrine-abrir-filtros,.checkout-etapa-proximo,.checkout-etapa-voltar) {
  transition-duration: var(--ux-tempo);
}
.catalogo-publico :where(.produto-publico-valor-variacao)[aria-pressed='true'] {
  border-style: solid;
}
.catalogo-publico :where(.produto-publico-pagina,.carrinho-publico-pagina,.checkout-publico-pagina,.catalogo-publico-largura) {
  min-width: 0;
}
.catalogo-publico :where(.vitrine-filtros-overlay)[hidden] { display: none !important; }
/* Mensagens longas não devem deslocar a página horizontalmente. */
:where(.corpo-aplicacao,.site-gestx,.catalogo-publico) :where(.mensagem-formulario,[role='alert'],[role='status']) {
  overflow-wrap: anywhere;
}
@media (max-width: 640px) {
  .corpo-aplicacao :where(.acoes-formulario) { flex-wrap: wrap; }
  .corpo-aplicacao :where(.tabela-responsiva) { scrollbar-width: thin; }
  .site-gestx :where(.site-chat-corpo) { max-width: 100%; }
  .catalogo-publico :where(.produto-publico-pagina,.carrinho-publico-pagina,.checkout-publico-pagina) { max-width: 100%; }
}
@media (prefers-reduced-motion: reduce) {
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico) {
    scroll-behavior: auto;
    --ux-tempo: 0ms;
    --ux-tempo-lento: 0ms;
  }
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
    :where(.botao,.botao-icone,.site-botao,.site-menu-botao,.produto-publico-valor-variacao) {
    transition-duration: 0ms !important;
    transform: none !important;
  }
}
@media (forced-colors: active) {
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico)
    :where(a[href],button:not([disabled]),input,select,textarea):focus-visible {
    outline: 2px solid Highlight;
    outline-offset: 3px;
  }
}
@media print {
  :where(.corpo-aplicacao,.site-gestx,.catalogo-publico) {
    --ux-tempo: 0ms;
    --ux-tempo-lento: 0ms;
  }
}
