/* ─── Keyframes ──────────────────────────────────────────── */
@keyframes fadeUp {
  from { opacity: 0; transform: translateY(18px); }
  to   { opacity: 1; transform: translateY(0); }
}
@keyframes spin { to { transform: rotate(360deg); } }
@keyframes pulse { 0%,100% { opacity:.8 } 50% { opacity:.35 } }
@keyframes shimmer {
  0%   { background-position: -400px 0; }
  100% { background-position:  400px 0; }
}
@keyframes floatBadge {
  0%,100% { transform: translateY(0); }
  50%      { transform: translateY(-4px); }
}
@keyframes progressFill {
  from { width: 0%; }
}

/* ─── Animation classes ──────────────────────────────────── */
.fade-up { animation: fadeUp .45s cubic-bezier(.16,1,.3,1) both; }
