/* ══════════════════════════════════════════════════════════════════════
   HERO VFX — per-letter aurora flow + float wave + RGB glitch burst
   Applied by js/hero-vfx.js to the SECURITY WEAPON headline.
   ══════════════════════════════════════════════════════════════════════ */

.text-weapon-mallu { position: relative; }

/* Letters take over the motion — stop the old whole-line tilt/shimmer */
.text-weapon-mallu.vfx-live { animation: none; }

.text-weapon-mallu .wch {
  display: inline-block;
  background: linear-gradient(115deg,
    #a855f7 0%, #d946ef 26%, #ffffff 50%, #22d3ee 74%, #a855f7 100%);
  background-size: 300% 100%;
  -webkit-background-clip: text; -webkit-text-fill-color: transparent;
  animation:
    wchFlow 2.8s linear infinite,
    wchFloat 3.4s ease-in-out infinite;
  animation-delay: calc(var(--i) * -0.22s), calc(var(--i) * 0.11s);
  will-change: transform, background-position;
}
.text-weapon-mallu .wch-sp { animation: none; }

@keyframes wchFlow {
  0%   { background-position: 0% 0%; }
  100% { background-position: 300% 0%; }
}
@keyframes wchFloat {
  0%, 100% { transform: translateY(0); }
  50%      { transform: translateY(-7px); }
}

/* ── RGB-separation glitch burst: long idle, short violent flicker ── */
.text-weapon-mallu.vfx-live::before,
.text-weapon-mallu.vfx-live::after {
  content: attr(data-text);
  position: absolute; left: 0; right: 0; top: 0; bottom: 0;
  pointer-events: none; opacity: 0;
  background: none;
  -webkit-background-clip: border-box;
  -webkit-text-fill-color: currentColor;
  mix-blend-mode: screen;
}
.text-weapon-mallu.vfx-live::before {
  color: #22d3ee;
  animation: wchGlitchA 6.5s steps(1) infinite 1.4s;
}
.text-weapon-mallu.vfx-live::after {
  color: #d946ef;
  animation: wchGlitchB 6.5s steps(1) infinite 1.4s;
}
@keyframes wchGlitchA {
  0%, 86%, 94%, 100% { opacity: 0; transform: none; clip-path: inset(0 0 100% 0); }
  87% { opacity: .8; transform: translate(-4px, -2px); clip-path: inset(8% 0 58% 0); }
  89% { opacity: .8; transform: translate(3px, 1px);   clip-path: inset(52% 0 12% 0); }
  91% { opacity: .8; transform: translate(-2px, 2px);  clip-path: inset(28% 0 38% 0); }
  93% { opacity: .6; transform: translate(4px, -1px);  clip-path: inset(70% 0 5% 0); }
}
@keyframes wchGlitchB {
  0%, 86%, 94%, 100% { opacity: 0; transform: none; clip-path: inset(0 0 100% 0); }
  87% { opacity: .8; transform: translate(4px, 2px);   clip-path: inset(55% 0 10% 0); }
  89% { opacity: .8; transform: translate(-3px, -1px); clip-path: inset(12% 0 62% 0); }
  91% { opacity: .8; transform: translate(2px, -2px);  clip-path: inset(40% 0 30% 0); }
  93% { opacity: .6; transform: translate(-4px, 1px);  clip-path: inset(5% 0 72% 0); }
}

@media (prefers-reduced-motion: reduce) {
  .text-weapon-mallu .wch { animation: none; }
  .text-weapon-mallu.vfx-live::before,
  .text-weapon-mallu.vfx-live::after { display: none; }
}
