.result-card,
.data-streak,
.loader-data-label,
.data-packet {
  will-change: transform, opacity;
}

@keyframes floatScroll {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(6px); }
}

@keyframes floatObj {
  0% {
    transform: translateY(0px) rotate(0deg);
  }
  33% {
    transform: translateY(-15px) rotate(2deg);
  }
  66% {
    transform: translateY(10px) rotate(-1.5deg);
  }
  100% {
    transform: translateY(0px) rotate(0deg);
  }
}

@keyframes floatObjHero {
  0% {
    transform: translate(-50%, 0px) rotate(0deg);
  }
  33% {
    transform: translate(-50%, -10px) rotate(1deg);
  }
  66% {
    transform: translate(-50%, 8px) rotate(-0.5deg);
  }
  100% {
    transform: translate(-50%, 0px) rotate(0deg);
  }
}

@keyframes pulseHighlight {
  0% {
    background-color: transparent;
  }
  30% {
    background-color: rgba(168, 85, 247, 0.12);
    box-shadow: inset 0 0 20px rgba(168, 85, 247, 0.15);
  }
  100% {
    background-color: transparent;
  }
}
.pulse-highlight {
  animation: pulseHighlight 2s cubic-bezier(0.4, 0, 0.2, 1);
}


@keyframes float-up-fade {
  0% {
    transform: translateY(0);
    opacity: 0;
  }
  20% {
    opacity: 0.4;
  }
  100% {
    transform: translateY(-50px);
    opacity: 0;
  }
}

@keyframes shoot-diag-left {
  0% {
    transform: translate(0, 0);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  100% {
    transform: translate(-100px, 150px);
    opacity: 0;
  }
}

@keyframes shoot-diag-right {
  0% {
    transform: translate(0, 0);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  100% {
    transform: translate(100px, 150px);
    opacity: 0;
  }
}

@keyframes swallow-data {
  0% {
    transform: translate(var(--sx), var(--sy)) rotate(var(--rot)) scaleX(3)
      scaleY(2);
    opacity: 0;
  }
  20% {
    opacity: 1;
  }
  100% {
    transform: translate(var(--ex), var(--ey)) rotate(var(--rot)) scaleX(0.1)
      scaleY(0.5);
    opacity: 0;
  }
}

@keyframes node-impact-shake {
  0% {
    transform: translate(0, 0);
  }
  10% {
    transform: translate(-3px, -3px);
  }
  20% {
    transform: translate(3px, 2px);
  }
  30% {
    transform: translate(-4px, 3px);
  }
  40% {
    transform: translate(4px, -2px);
  }
  50% {
    transform: translate(-5px, -3px);
  }
  60% {
    transform: translate(5px, 3px);
  }
  70% {
    transform: translate(-6px, -2px);
  }
  80% {
    transform: translate(6px, 4px);
  }
  90% {
    transform: translate(-3px, -3px);
  }
  100% {
    transform: translate(0, 0);
  }
}

@keyframes node-bounce-in-out {
  0% {
    transform: scale(1);
  }
  30% {
    transform: scale(1.2);
  }
  100% {
    transform: scale(1);
  }
}

@keyframes node-vibrate {
  0% {
    transform: scale(1) translate(0, 0);
  }
  20% {
    transform: scale(1.08) translate(-2px, 1px);
  }
  40% {
    transform: scale(1.08) translate(2px, -1px);
  }
  60% {
    transform: scale(1.08) translate(-1px, 2px);
  }
  80% {
    transform: scale(1.08) translate(1px, -2px);
  }
  100% {
    transform: scale(1) translate(0, 0);
  }
}

@keyframes node-shake-intense {
  0% {
    transform: translate(0, 0);
  }
  10% {
    transform: translate(-2px, -2px);
  }
  20% {
    transform: translate(2px, 1px);
  }
  30% {
    transform: translate(-3px, 2px);
  }
  40% {
    transform: translate(3px, -1px);
  }
  50% {
    transform: translate(-4px, -2px);
  }
  60% {
    transform: translate(4px, 2px);
  }
  70% {
    transform: translate(-5px, -1px);
  }
  80% {
    transform: translate(5px, 3px);
  }
  90% {
    transform: translate(-2px, -2px);
  }
  100% {
    transform: translate(0, 0);
  }
}

@keyframes node-jump {
  0% {
    transform: scale(1) translateY(0);
  }
  40% {
    transform: scale(1.05) translateY(-15px);
  }
  60% {
    transform: scale(1.1) translateY(-18px);
    filter: drop-shadow(0 0 25px var(--accent));
  }
  100% {
    transform: scale(1) translateY(0);
  }
}

@keyframes node-windup-spit {
  0% {
    transform: scale(1) translateY(0);
  }
  15% {
    transform: scale(0.65, 1.5) translateY(15px); /* Deep squash */
    filter: brightness(1.2);
  }
  35% {
    transform: scale(1.5, 0.5) translateY(-10px); /* Wide stretch */
    filter: brightness(1.5) drop-shadow(0 0 25px var(--accent));
  }
  50% {
    transform: scale(0.8, 1.3) translateY(-25px); /* Snap up high */
  }
  65% {
    transform: scale(1.6, 0.6) translateY(5px); /* Big landing stretch */
    filter: brightness(2) drop-shadow(0 0 50px var(--accent));
  }
  80% {
    transform: scale(0.9, 1.1) translateY(-5px);
  }
  100% {
    transform: scale(1) translateY(0);
  }
}

@keyframes packet-move {
  0% {
    offset-distance: 0%;
    opacity: 0;
    transform: scale(0.3);
  }
  15% {
    opacity: 1;
    transform: scale(1);
  }
  85% {
    opacity: 1;
    transform: scale(1);
  }
  100% {
    offset-distance: 100%;
    opacity: 0;
    transform: scale(0.4);
  }
}

.paused-anim *,
.paused-anim *::before,
.paused-anim *::after {
  animation-play-state: paused !important;
}

@keyframes card-pop {
  0% { transform: translate(0, 0); }
  50% { transform: translate(0, -15px); }
  100% { transform: translate(0, 0); }
}

.card-pop-trigger .card-inner {
  animation: card-pop 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
}

