/* ── Animations ── */
@keyframes fadeInUp { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: translateY(0); } }
@keyframes fadeIn   { from { opacity: 0; } to { opacity: 1; } }
@keyframes slideDown { from { opacity: 0; transform: translateY(-10px); } to { opacity: 1; transform: translateY(0); } }
@keyframes scaleIn  { from { opacity: 0; transform: scale(0.95); } to { opacity: 1; transform: scale(1); } }
@keyframes shimmer  { 0% { background-position: -400px 0; } 100% { background-position: 400px 0; } }

.animate-fadeInUp  { animation: fadeInUp  0.5s ease both; }
.animate-fadeIn    { animation: fadeIn    0.4s ease both; }
.animate-slideDown { animation: slideDown 0.3s ease both; }
.animate-scaleIn   { animation: scaleIn   0.3s ease both; }

.delay-1 { animation-delay: 0.1s; }
.delay-2 { animation-delay: 0.2s; }
.delay-3 { animation-delay: 0.3s; }
.delay-4 { animation-delay: 0.4s; }

/* Skeleton loader */
.skeleton {
  background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%);
  background-size: 400px 100%;
  animation: shimmer 1.4s infinite;
  border-radius: 6px;
}

/* Page loader */
#page-loader {
  position: fixed; inset: 0; background: #fff;
  display: flex; align-items: center; justify-content: center;
  z-index: 9999; transition: opacity 0.4s;
}
#page-loader.hidden { opacity: 0; pointer-events: none; }
.loader-ring {
  width: 48px; height: 48px; border-radius: 50%;
  border: 4px solid #e2e8f0; border-top-color: #2C7DA0;
  animation: spin 0.8s linear infinite;
}
@keyframes spin { to { transform: rotate(360deg); } }

/* Toast notification */
#toast-container { position: fixed; bottom: 24px; right: 24px; z-index: 9998; display: flex; flex-direction: column; gap: 10px; }
.toast {
  background: #1a1a2e; color: #fff; padding: 12px 20px;
  border-radius: 10px; font-size: 0.9rem; min-width: 220px;
  box-shadow: 0 4px 16px rgba(0,0,0,0.2);
  animation: fadeInUp 0.3s ease both;
}
.toast.success { border-left: 4px solid #22c55e; }
.toast.error   { border-left: 4px solid #ef4444; }
.toast.info    { border-left: 4px solid #2C7DA0; }
