/* login.css — página de login do painel administrativo.
   Tokens globais e classes compartilhadas vêm de /utils/theme.css. */

/* Painel esquerdo (branding). Sem gradiente animado, sem orbs. */
.side-gradient {
  background: var(--bg-surface);
  border-right: 1px solid var(--border-subtle);
}

/* Removendo animações decorativas de flutuar/pulse-ring */
.float-anim, .float-anim-delay { animation: none; }
.orbit-ring, .orbit-ring-delay  { display: none; }

/* Card do formulário: superfície discreta, sem sombra colorida */
.login-card {
  background: var(--bg-surface);
  border: 1px solid var(--border-subtle);
  border-radius: var(--radius-md);
}

/* Ícone de campo com foco */
.field-icon { transition: color .15s ease; }
.input-field:focus ~ .field-icon,
.input-field:focus + .field-icon { color: var(--brand); }

/* Checkbox */
.checkbox-custom {
  appearance: none;
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  border: 1px solid var(--border-strong);
  border-radius: 3px;
  background: var(--bg-input);
  cursor: pointer;
  transition: background .15s ease, border-color .15s ease;
  position: relative;
  flex-shrink: 0;
}
.checkbox-custom:checked {
  background: var(--brand);
  border-color: var(--brand);
}
.checkbox-custom:checked::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 5px;
  width: 4px;
  height: 8px;
  border: solid #fff;
  border-width: 0 2px 2px 0;
  transform: rotate(45deg);
}

/* Botão de login — sólido, sem glow, sem lift no hover */
.btn-login { transition: background .15s ease; }
.btn-login:hover:not(:disabled) { background: var(--brand-hover) !important; }

/* Password toggle */
.password-toggle { transition: color .15s ease; }
.password-toggle:hover { color: var(--text-primary); }

/* Shake em erro (feedback funcional) */
@keyframes shake {
  0%,100% { transform: translateX(0); }
  20%     { transform: translateX(-4px); }
  40%     { transform: translateX(4px); }
  60%     { transform: translateX(-2px); }
  80%     { transform: translateX(2px); }
}
.error-shake { animation: shake 0.35s ease-in-out; }

/* Spinner de loading (feedback funcional real) */
@keyframes spin { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
.loading-spinner { animation: spin .8s linear infinite; }

/* Neutraliza texto com gradient (proibido pela skill) */
.brand-gradient-text {
  background: none;
  -webkit-text-fill-color: currentColor;
  color: var(--brand-soft-fg);
}

/* Stagger simples de entrada — mantido para o card, sem exagerar */
.stagger-1, .stagger-2, .stagger-3, .stagger-4, .stagger-5, .stagger-6 {
  animation: none;
  opacity: 1;
}
