/* Base text effects */
.text-shake {
  display: inline-block;
  animation: shake 1s infinite;

}

.text-wave {
  display: inline-block;
  animation: wave 2s infinite;
}

.text-pulse {
  display: inline-block;
  animation: pulse 1.5s infinite;
}

.text-glow {
  display: inline-block;
  text-shadow: 0 0 10px currentColor;
}

.text-fade {
  display: inline-block;
  animation: fade 2s infinite alternate;
}

.text-jitter {
  display: inline-block;
  position: relative;
}

.text-rainbow {
  display: inline-block;
  background: linear-gradient(to right, #ff0000, #ff7f00, #ffff00, #00ff00, #0000ff, #4b0082, #9400d3);
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
  animation: rainbow 5s linear infinite;
  background-size: 200% 100%;
}

.text-slow {
  display: inline-block;
  animation: slow-fade 3s infinite;
}

/* Color effects */
.text-red { color: #ff5252; }
.text-blue { color: #2196f3; }
.text-green { color: #4caf50; }
.text-yellow { color: #ffeb3b; }
.text-purple { color: #9c27b0; }
.text-cyan { color: #00bcd4; }
.text-orange { color: #ff9800; }

/* Animations */
@keyframes shake {
  0%, 100% { transform: translateX(0); }
  10%, 30%, 50%, 70%, 90% { transform: translateX(-2px); }
  20%, 40%, 60%, 80% { transform: translateX(2px); }
}

@keyframes wave {
  0%, 100% { transform: translateY(0); }
  25% { transform: translateY(-5px); }
  75% { transform: translateY(5px); }
}

@keyframes pulse {
  0%, 100% { opacity: 1; }
  50% { opacity: 0.7; }
}

@keyframes fade {
  0% { opacity: 0.3; }
  100% { opacity: 1; }
}

@keyframes rainbow {
  0% { background-position: 0% 50%; }
  100% { background-position: 100% 50%; }
}

@keyframes slow-fade {
  0%, 100% { opacity: 0.5; }
  50% { opacity: 1; }
}

/* Jitter effect - each character moves in a different direction */
.text-jitter span {
  display: inline-block;
  animation: jitter 3s infinite;
}

@keyframes jitter {
  0%, 100% { transform: translate(0, 0); }
  25% { transform: translate(1px, -1px); }
  50% { transform: translate(-1px, 1px); }
  75% { transform: translate(1px, 1px); }
}

/* Wave effect variations */
.wave-amp-1 { animation-name: wave-1; }
.wave-amp-2 { animation-name: wave-2; }
.wave-amp-3 { animation-name: wave-3; }

.wave-speed-1 { animation-duration: 1s; }
.wave-speed-2 { animation-duration: 2s; }
.wave-speed-3 { animation-duration: 3s; }

@keyframes wave-1 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-3px); }
}

@keyframes wave-2 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-5px); }
}

@keyframes wave-3 {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}