@keyframes pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%       { opacity: 0.4; transform: scale(1.4); }
}

@keyframes pin-glow {
  0%, 100% { filter: drop-shadow(0 0 4px rgba(57,255,20,0.5)) drop-shadow(0 0 8px rgba(57,255,20,0.25)); }
  50%       { filter: drop-shadow(0 0 8px rgba(57,255,20,0.9)) drop-shadow(0 0 16px rgba(57,255,20,0.5)); }
}

@keyframes shimmer {
  0%   { background-position:  100% 0; }
  100% { background-position: -100% 0; }
}

@keyframes electrify {
  0%, 100% { text-shadow: 0 0 4px rgba(57,255,20,0.6), 0 0 10px rgba(57,255,20,0.3), 0 0 20px rgba(57,255,20,0.15); }
  30% { text-shadow: 0 0 4px rgba(57,255,20,0.6), 0 0 10px rgba(57,255,20,0.3), 0 0 20px rgba(57,255,20,0.15); }
  32% { text-shadow: 0 0 6px rgba(57,255,20,0.9), 0 0 14px rgba(57,255,20,0.5), 0 0 28px rgba(57,255,20,0.3), 0 0 40px rgba(57,255,20,0.1); }
  34% { text-shadow: 0 0 3px rgba(57,255,20,0.4), 0 0 8px rgba(57,255,20,0.2); }
  36% { text-shadow: 0 0 7px rgba(57,255,20,1), 0 0 16px rgba(57,255,20,0.6), 0 0 32px rgba(57,255,20,0.3); }
  38% { text-shadow: 0 0 4px rgba(57,255,20,0.6), 0 0 10px rgba(57,255,20,0.3), 0 0 20px rgba(57,255,20,0.15); }
}

@keyframes ld-ring-rotate { 0% { transform: rotate(0); } 100% { transform: rotate(360deg); } }

@keyframes ld-txt-pulse {
  0%, 100% { opacity: 0.5; }
  50%      { opacity: 1; }
}

@keyframes umarker {
  0%, 100% { box-shadow: 0 0 0 2px var(--teal), 0 0 16px var(--teal), 0 0 32px rgba(57,255,20,.5); }
  50%       { box-shadow: 0 0 0 7px rgba(57,255,20,.15), 0 0 28px var(--teal), 0 0 56px rgba(0,255,65,.4); }
}
