/* OrlandoHQ — animations.css */

@keyframes fadeSlideIn {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes modalSlideUp {
  from { transform: translateY(100%); }
  to   { transform: translateY(0); }
}
@keyframes backdropIn {
  from { opacity: 0; }
  to   { opacity: 1; }
}
@keyframes toastIn {
  from { opacity: 0; transform: translateY(60px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes toastOut {
  from { opacity: 1; transform: translateY(0); }
  to   { opacity: 0; transform: translateY(20px); }
}
@keyframes shimmer {
  0%   { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}
@keyframes cardIn {
  from { opacity: 0; transform: scale(0.97); }
  to   { opacity: 1; transform: scale(1); }
}
@keyframes successFlash {
  0%   { background-color: var(--color-bg-card); }
  20%  { background-color: var(--color-accent-2-light); }
  100% { background-color: var(--color-bg-card); }
}
@keyframes checkBounce {
  0%   { transform: scale(0); }
  60%  { transform: scale(1.2); }
  100% { transform: scale(1); }
}

@media (prefers-reduced-motion: no-preference) {
  .tab-panel { animation: fadeSlideIn 200ms ease-out; }
  .card-enter { animation: cardIn 180ms ease-out backwards; }
  .skeleton {
    background: linear-gradient(90deg,
      var(--color-bg-card) 25%,
      var(--color-bg-elevated) 50%,
      var(--color-bg-card) 75%);
    background-size: 200% 100%;
    animation: shimmer 1.5s infinite;
    border-radius: 12px;
  }
  .completed-flash { animation: successFlash 350ms ease; }
  .check-bounce { animation: checkBounce 350ms ease; }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
  }
}
