/* Блок-обёртка кнопки в ZeroBlock */
.tn-elem.btn-flash .tn-atom {
  position: relative;
  overflow: hidden;           /* прячем «блик» за границами кнопки */
}

/* Сам «блик» поверх кнопки */
.tn-elem.btn-flash .tn-atom::after {
  content: '';
  position: absolute;
  top: -60%;
  left: -30%;
  width: 40%;
  height: 220%;
  /* Полупрозрачный блик под углом */
  background: linear-gradient(
    120deg,
    rgba(255,255,255,0) 0%,
    rgba(255,255,255,.65) 50%,
    rgba(255,255,255,0) 100%
  );
  transform: skewX(-20deg) translateX(-150%);
  pointer-events: none;
  /* Один цикл анимации = 3.5s, сам блик бежит в первые 30% времени, остальное — пауза */
  animation: btnFlashSweep 3.5s ease-out infinite;
  box-shadow: 0 0 20px rgba(255, 64, 160, .45), 0 0 40px rgba(255, 64, 160, .25);
  inset 0 0 8px rgba(255,255,255,0.3);
}

/* При наведении — ускоряем блик (необязательно) */
.tn-elem.btn-flash .tn-atom:hover::after {
  animation-duration: 1.6s;
}

@keyframes btnFlashSweep {
  0%   { transform: skewX(-20deg) translateX(-160%); opacity: 0; }
  6%   { opacity: .9; }
  30%  { transform: skewX(-20deg) translateX(360%); opacity: 0; }
  100% { transform: skewX(-20deg) translateX(360%); opacity: 0; }
}
@keyframes pulse {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.03); }
}
.tn-elem.btn-flash .tn-atom {
  animation: pulse 3s ease-in-out infinite;
}
button.next, button.submit {
  animation: pulse 2.8s ease-in-out infinite;
}
@keyframes pulse {
  0%, 100% { transform: scale(1); box-shadow: 0 0 0 rgba(255,64,160,0); }
  50% { transform: scale(1.03); box-shadow: 0 0 15px rgba(255,64,160,.45); }
}