/* Animated text styles for shortcodes: rainbow, cycle, bounce, scroll */
.animated-rainbow .char,
.animated-bounce .char {
  display: inline-block;
  line-height: 1;
  will-change: transform, color;
}

@keyframes rainbowHue {
  0% { color: hsl(0,85%,62%); }
  25% { color: hsl(90,85%,62%); }
  50% { color: hsl(180,85%,62%); }
  75% { color: hsl(270,85%,62%); }
  100% { color: hsl(360,85%,62%); }
}

.animated-rainbow .char {
  animation: rainbowHue 3.6s linear infinite;
}

@keyframes cycleColor {
  0% { color: hsl(0,78%,64%); }
  20% { color: hsl(60,78%,64%); }
  40% { color: hsl(120,78%,64%); }
  60% { color: hsl(200,78%,64%); }
  80% { color: hsl(280,78%,64%); }
  100% { color: hsl(360,78%,64%); }
}

.animated-cycle {
  display: inline-block;
  animation: cycleColor 4.4s linear infinite;
}

@keyframes bounceY {
  0% { transform: translateY(0); }
  30% { transform: translateY(-12%); }
  60% { transform: translateY(0); }
  100% { transform: translateY(0); }
}

.animated-bounce .char {
  animation: bounceY 0.9s ease-in-out infinite;
}

/* Scroll / marquee styles */
.animated-scroll {
  display: inline-block;
  overflow: hidden;
  vertical-align: middle;
  max-width: 100%;
}
.animated-scroll .scroll-inner {
  display: inline-block;
  padding-left: 100%;
  white-space: nowrap;
  animation: scroll-left 8s linear infinite;
}
@keyframes scroll-left {
  0% { transform: translateX(0%); }
  100% { transform: translateX(-100%); }
}

/* Small accessibility: respect reduced motion */
@media (prefers-reduced-motion: reduce) {
  .animated-rainbow .char,
  .animated-bounce .char,
  .animated-cycle,
  .animated-scroll .scroll-inner {
    animation: none !important;
  }
}
