/*
  Sparkle cursor (site-wide)
*/
body.has-custom-cursor,
body.has-custom-cursor a,
body.has-custom-cursor button,
body.has-custom-cursor [role="button"] {
  cursor: none;
}

body.has-custom-cursor * {
  cursor: none !important;
}

body.has-custom-cursor.is-blue-hovering .cursor-star {
  color: var(--white);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.16);
  filter: none;
  mix-blend-mode: normal;
}

body.has-custom-cursor.is-featured-hovering .cursor-star {
  opacity: 0 !important;
}

body.has-custom-cursor.is-hero-cursor-zone .cursor-star {
  color: var(--white, #ffffff);
  text-shadow: 0 0 10px rgba(255, 255, 255, 0.16);
  mix-blend-mode: normal;
  filter: none;
}

.cursor-star {
  height: 22px;
  width: 22px;
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: 99999999;
  transform: translate3d(-100px, -100px, 0);
  opacity: 0;
  will-change: transform;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 26px;
  line-height: 1;
  font-weight: 500;
  color: var(--blue, #013fa7);
  text-shadow: 0 0 10px rgba(1, 63, 167, 0.12);
  mix-blend-mode: multiply;
  filter: saturate(0.85);
}

/*
  Landing page sparkle trail (hero + contact)
*/
.sparkle-trail-particle {
  position: fixed;
  top: 0;
  left: 0;
  pointer-events: none;
  z-index: 99999998;
  display: flex;
  align-items: center;
  justify-content: center;
  line-height: 1;
  font-weight: 500;
  color: var(--sparkle-color, #ffffff);
  transform: translate(-50%, -50%) rotate(var(--sparkle-rotate, 0deg))
    scale(var(--sparkle-scale, 1));
  animation: sparkle-trail-fade var(--sparkle-duration, 720ms) ease-out forwards;
}

.sparkle-trail-particle--light {
  text-shadow: 0 0 12px rgba(255, 255, 255, 0.28);
  mix-blend-mode: normal;
  filter: none;
}

.sparkle-trail-particle--blue {
  text-shadow: 0 0 10px rgba(1, 63, 167, 0.12);
  mix-blend-mode: multiply;
  filter: saturate(0.85);
}

@keyframes sparkle-trail-fade {
  0% {
    opacity: 0.95;
    transform: translate(-50%, -50%) rotate(var(--sparkle-rotate, 0deg))
      scale(var(--sparkle-scale, 1));
  }

  100% {
    opacity: 0;
    transform: translate(-50%, -50%)
      rotate(calc(var(--sparkle-rotate, 0deg) + 48deg))
      scale(calc(var(--sparkle-scale, 1) * 0.35));
  }
}

@media (prefers-reduced-motion: reduce) {
  .sparkle-trail-particle {
    animation: none;
    opacity: 0;
  }
}
