/* animations.css — keyframe library, referenced by component classes */
@keyframes auth-fade-in {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes auth-slide-in-right {
  from { opacity: 0; transform: translateX(24px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes auth-slide-in-left {
  from { opacity: 0; transform: translateX(-24px); }
  to   { opacity: 1; transform: translateX(0); }
}

@keyframes spinner-rotate {
  from { transform: rotate(0deg); }
  to   { transform: rotate(360deg); }
}

@keyframes checkmark-pop {
  0%   { transform: scale(0); }
  60%  { transform: scale(1.12); }
  100% { transform: scale(1); }
}

@keyframes pulse-dot {
  0%, 100% { opacity: 0.4; transform: scale(1); }
  50%      { opacity: 1;   transform: scale(1.15); }
}

.auth-fade-in           { animation: auth-fade-in 400ms cubic-bezier(0.2, 0.7, 0.2, 1) both; }
.auth-slide-in-right    { animation: auth-slide-in-right 320ms cubic-bezier(0.2, 0.7, 0.2, 1) both; }
.auth-slide-in-left     { animation: auth-slide-in-left 320ms cubic-bezier(0.2, 0.7, 0.2, 1) both; }
.checkmark-pop          { animation: checkmark-pop 500ms cubic-bezier(0.34, 1.56, 0.64, 1) both; }

@media (prefers-reduced-motion: reduce) {
  .auth-fade-in,
  .auth-slide-in-right,
  .auth-slide-in-left,
  .checkmark-pop { animation: none !important; }
}
