.lyric-span.active {
  text-shadow: 0 0 20px rgba(232,244,64,0.4);
  color: var(--active-word);
  animation:
    word-jitter 60ms linear forwards,
    float-up var(--word-dur, 0.3s) cubic-bezier(0.22, 1, 0.36, 1) forwards 60ms;
}

@keyframes word-glow {
  0%   { text-shadow: 0 0 10px rgba(232,244,64,0.5); }
  50%  { text-shadow: 0 0 60px rgba(232,244,64,0.9), 0 0 120px rgba(232,244,64,0.4); }
  100% { text-shadow: 0 0 10px rgba(232,244,64,0.5); }
}

.lyric-span.active.long-word {    
  animation:
  word-jitter 60ms linear forwards,
  float-up-bloom var(--word-dur, 0.3s) cubic-bezier(0.22, 1, 0.36, 1) forwards 60ms,
  word-glow-dynamic var(--word-dur) ease-in-out forwards 60ms !important;
}

@keyframes word-glow-dynamic {
  0%   { text-shadow: 0 0 10px rgba(232,244,64,0.5); }
  15%  { text-shadow: 0 0 12px rgba(232,244,64,0.3), 0 0 30px rgba(232,244,64,0.4); }
  100% { text-shadow: 0 0 10px rgba(232,244,64,0.5); }
}

.lyric-letter {
  display: inline-block;
  transform-origin: center bottom;
  /* Neutral state: no transform, inherits color from parent .lyric-span */
}

@keyframes letter-bloom {
  0%   { transform: translateY(0) scale(0.88); }
  18%  { transform: translateY(-3px) scale(1.03); }
  55%  { transform: translateY(-1px) scale(0.99); }
  100% { transform: translateY(0px)  scale(0.97); }
}

.lyric-span.active.long-word .lyric-letter {
  animation: letter-bloom calc(var(--word-dur) * 2) cubic-bezier(0.22, 1, 0.36, 1) both;
  animation-delay: calc(60ms + (var(--letter-index) * 38ms));
}

@keyframes word-jitter {
  0%   { transform: translateY(2px); }
  40%  { transform: translateY(5px); }
  100% { transform: translateY(5px); }
}

@keyframes float-up {
  from { transform: translateY(5px); }
  to   { transform: translateY(0px); }
}

@keyframes float-up-bloom {
  0%    { transform: translateY(2px);  }
  70%   { transform: translateY(-3px); }
  100%  { transform: translateY(0px);  }
}