/*
 * Login V2 (exploração) - base compartilhada (comportamento, não aparência).
 * Cada proposta define tokens, tipografia e superfícies no próprio CSS.
 */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; min-height: 100vh; min-height: 100dvh; }
input, button, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }
[hidden] { display: none !important; }

.sr-only {
  position: absolute !important;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0);
  white-space: nowrap; border: 0;
}

/* Etapas: o motor controla hidden/is-active; a proposta decide a transição.
   O foco programático na própria etapa (tabindex=-1) não desenha anel. */
[data-step] { outline: none; }
[data-step]:focus-visible { outline: none; }

/* Botão de envio ocupado: a proposta estiliza .is-busy; aqui só o bloqueio. */
form[data-busy] button[type="submit"] { pointer-events: none; }
form[data-busy] input { caret-color: transparent; }

/* Autofill: não deixar o navegador pintar amarelo/branco por cima do tema. */
input:-webkit-autofill,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus {
  -webkit-text-fill-color: var(--field-text, inherit);
  -webkit-box-shadow: 0 0 0 1000px var(--field-bg, transparent) inset;
  transition: background-color 9999s ease-out;
}

/* Foco visível universal: a proposta pode sobrescrever, nunca remover. */
:focus-visible { outline: 3px solid var(--focus, #0054b5); outline-offset: 2px; }

/* Movimento reduzido: preferência do SO ou do painel de demo. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; scroll-behavior: auto !important; }
}
html[data-motion="reduced"] *, html[data-motion="reduced"] *::before, html[data-motion="reduced"] *::after {
  animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important;
}
html[data-motion="reduced"] { --step-out-ms: 0ms; }
