/* Advanced Firework Spark Animation */
.particle {
  position: fixed;
  pointer-events: none;
  border-radius: 50%;
  z-index: 10000;
  will-change: transform, opacity;
}

@keyframes particle-explode {
  0% {
    transform: translate(0, 0) scale(1);
    opacity: 1;
  }
  50% {
    opacity: 0.8;
  }
  100% {
    transform: translate(var(--tx), var(--ty)) scale(0);
    opacity: 0;
  }
}

@keyframes particle-sparkle {
  0%, 100% { filter: brightness(100%); }
  50% { filter: brightness(200%); }
}

/* Shining Light Effect (Cahaya Bersinar) */
@keyframes shine {
  0% {
    left: -100%;
    opacity: 0;
  }
  20% {
    opacity: 0.8;
  }
  100% {
    left: 200%;
    opacity: 0;
  }
}

.shine-effect {
  position: absolute;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
  pointer-events: none;
  z-index: 10;
  border-radius: inherit;
  mix-blend-mode: overlay;
}

.shine-effect::after {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 60%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent 0%,
    rgba(255, 255, 255, 0.1) 20%,
    rgba(255, 255, 255, 0.8) 50%,
    rgba(255, 255, 255, 0.1) 80%,
    transparent 100%
  );
  transform: skewX(-25deg);
}

.shine-effect.active::after {
  animation: shine 0.6s cubic-bezier(0.4, 0.0, 0.2, 1) forwards;
}
