@keyframes glitch-slice-top {
  0% { transform: translate(0); }
  20% { opacity: 1; transform: translate(-2px, 1px); clip-path: inset(10% 0 60% 0); }
  40% { opacity: 1; transform: translate(2px, -1px); clip-path: inset(40% 0 10% 0); }
  60% { opacity: 0.8; transform: translate(-2px, 2px); }
  100% { transform: translate(0); opacity: 1; }
}

@keyframes pulse-red {
  0%, 100% { opacity: 1; transform: scale(1); }
  50% { opacity: 0.8; transform: scale(1.05); }
}

.glitch-active {
  animation: glitch-slice-top 0.3s cubic-bezier(0.25, 0.46, 0.45, 0.94) both;
}

.carrier-pulse {
  animation: pulse-red 4s infinite ease-in-out;
}
