/* Retorno da consulta de CEP, logo abaixo do campo.

   Precisa existir nas três cascas (painel, Espaço do Associado e páginas
   públicas), por isso mora em folha própria — do mesmo jeito que br-fields.js.
   Sem esta linha, um CEP inexistente ou uma consulta fora do ar pareceriam
   simplesmente "não ter feito nada". */
/* O retorno fica na LINHA DO RÓTULO, ancorado à direita, e não abaixo do
   campo. Abaixo do campo ele ocupava altura própria: numa grade de duas
   colunas o label do CEP crescia duas linhas e empurrava "Número" e
   "Complemento" para fora do alinhamento com a coluna vizinha. Fora do fluxo,
   a mensagem aparece e some sem mover nada. */
label:has(> .cep-status) { position: relative; }
.cep-status {
  position: absolute;
  top: 0;
  right: 0;
  max-width: 62%;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
  font-size: 11px;
  font-weight: 600;
  line-height: 1.4;
  color: #6b7a88;
}
/* Sem :has(), volta ao fluxo — some o alinhamento, fica a informação. */
@supports not selector(label:has(> small)) {
  .cep-status { position: static; max-width: none; white-space: normal; display: block; margin-top: 6px; }
}
.cep-status[data-tone="busy"] { color: #6b7a88; }
.cep-status[data-tone="ok"]    { color: #0b7a57; }
.cep-status[data-tone="error"] { color: #b8483d; }

/* O ponto pulsante evita a dúvida de "travou ou está buscando?" em conexão lenta. */
.cep-status[data-tone="busy"]::before {
  content: '';
  display: inline-block;
  width: 6px;
  height: 6px;
  margin-right: 6px;
  border-radius: 50%;
  background: currentColor;
  animation: cepStatusPulse 1s ease-in-out infinite;
}
@keyframes cepStatusPulse { 0%, 100% { opacity: .25 } 50% { opacity: 1 } }
@media (prefers-reduced-motion: reduce) {
  .cep-status[data-tone="busy"]::before { animation: none; opacity: .7 }
}
