@keyframes gencvSpin { to { transform: rotate(360deg); } }

@keyframes gencvFadeScale {
  from { opacity: 0; transform: scale(0.95) translateY(-4px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

@keyframes gencvFadeUp {
  from { opacity: 0; transform: translateY(24px); }
  to { opacity: 1; transform: translateY(0); }
}

@keyframes gencvPulse {
  0%, 100% { opacity: 1; transform: translateY(-50%) scale(1); }
  50% { opacity: 0.75; transform: translateY(-50%) scale(1.3); }
}

@keyframes gencvShimmer {
  0% { transform: translateX(-120%); }
  100% { transform: translateX(320%); }
}

@keyframes gencvPing {
  0% { opacity: 0.9; transform: scale(0.9); }
  80%, 100% { opacity: 0; transform: scale(1.7); }
}

@keyframes gencvCaret { 50% { opacity: 0; } }

@media (prefers-reduced-motion: reduce) {
  * {
    transition-duration: 0.01s !important;
    animation-duration: 0.01s !important;
  }
}
