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

@keyframes flashSweep {
  from { transform: scaleX(0); }
  to { transform: scaleX(1); }
}

@keyframes panelIn {
  from { transform: translateX(6%); opacity: 0; }
  to { transform: translateX(0); opacity: 1; }
}

@keyframes rareWordPop {
  0%   { transform: scale(1); }
  22%  { transform: scale(1.075); }
  55%  { transform: scale(0.995); }
  100% { transform: scale(1); }
}

/* Slides a horizontal gradient across the text via background-position.
   Combined with background-clip:text on the overlay, the moving peak
   paints onto the glyph shapes only — never on the rectangular box.
   Opacity fades at both ends so the leading/trailing edges of the
   gradient never appear suddenly. */
@keyframes rareShineSweep {
  0%   { background-position: 150% 0; opacity: 0; }
  20%  { opacity: 1; }
  80%  { opacity: 1; }
  100% { background-position: -50% 0; opacity: 0; }
}

@keyframes rareParticleOut {
  0%   { transform: translate(0, 0) scale(0.35); opacity: 0; }
  15%  { opacity: 1; }
  100% { transform: translate(var(--dx), var(--dy)) scale(0.55); opacity: 0; }
}
