/* CTA Button Animator - lightweight CSS attention animations */
:root{
  --cba-distance: 10px;
  --cba-duration: 1.6s;
}

/* Performance hint */
.cba-updown,
.cba-leftright,
.cba-pulse,
.cba-wiggle{
  will-change: transform;
}

/* Up / Down float */
.cba-updown{
  animation: cbaUpDown var(--cba-duration) ease-in-out infinite;
}
@keyframes cbaUpDown{
  0%,100%{ transform: translateY(0); }
  50%{ transform: translateY(calc(var(--cba-distance) * -1)); }
}

/* Left / Right float */
.cba-leftright{
  animation: cbaLeftRight var(--cba-duration) ease-in-out infinite;
}
@keyframes cbaLeftRight{
  0%,100%{ transform: translateX(0); }
  50%{ transform: translateX(var(--cba-distance)); }
}

/* Pulse */
.cba-pulse{
  animation: cbaPulse calc(var(--cba-duration) * 0.9) ease-in-out infinite;
}
@keyframes cbaPulse{
  0%,100%{ transform: scale(1); }
  50%{ transform: scale(1.05); }
}

/* Wiggle */
.cba-wiggle{
  animation: cbaWiggle calc(var(--cba-duration) * 1.1) ease-in-out infinite;
  transform-origin: center;
}
@keyframes cbaWiggle{
  0%,100%{ transform: rotate(0deg); }
  25%{ transform: rotate(-1.5deg); }
  75%{ transform: rotate(1.5deg); }
}

/* Accessibility */
@media (prefers-reduced-motion: reduce){
  .cba-updown,
  .cba-leftright,
  .cba-pulse,
  .cba-wiggle{ animation: none !important; }
}
