/* HolyGlow GF-004-R1 fixed-viewport Heart and Prayer reaction effects. */
#hgGF004ReactionFxRoot {
  position: fixed;
  inset: 0;
  z-index: 2147483646;
  width: 100vw;
  height: 100dvh;
  overflow: visible;
  pointer-events: none;
  isolation: isolate;
  contain: layout style;
}

#hgGF004ReactionFxRoot,
#hgGF004ReactionFxRoot * {
  box-sizing: border-box;
  pointer-events: none !important;
}

.hg-gf004-r1-reaction-burst {
  position: absolute;
  left: var(--hg-gf004-x);
  top: var(--hg-gf004-y);
  width: 72px;
  height: 72px;
  margin: -36px 0 0 -36px;
  z-index: 1;
  display: grid;
  place-items: center;
  overflow: visible;
  transform-origin: 50% 80%;
  animation: hgGF004R1Rise 1.35s cubic-bezier(.16,1,.3,1) both;
  will-change: transform, opacity;
}

.hg-gf004-r1-particle {
  position: absolute;
  display: grid;
  place-items: center;
  color: #ff5c87;
  font-size: 29px;
  line-height: 1;
  filter:
    drop-shadow(0 0 7px rgba(255,92,135,.92))
    drop-shadow(0 0 16px rgba(255,215,0,.48));
  animation: hgGF004R1Particle 1.2s cubic-bezier(.16,1,.3,1) both;
}

.hg-gf004-r1-prayer .hg-gf004-r1-particle {
  color: #ffe875;
  filter:
    drop-shadow(0 0 8px rgba(255,232,117,.96))
    drop-shadow(0 0 18px rgba(0,229,255,.62));
}

.hg-gf004-r1-particle-1 {
  transform: translate(0, 5px) scale(1);
  animation-delay: 0s;
}

.hg-gf004-r1-particle-2 {
  font-size: 17px;
  transform: translate(-22px, 17px) rotate(-13deg) scale(.8);
  animation-delay: .06s;
  opacity: .78;
}

.hg-gf004-r1-particle-3 {
  font-size: 15px;
  transform: translate(22px, 19px) rotate(12deg) scale(.76);
  animation-delay: .1s;
  opacity: .7;
}

.hg-gf004-r1-halo {
  position: absolute;
  width: 58px;
  height: 58px;
  border: 2px solid rgba(255,232,117,.68);
  border-radius: 50%;
  box-shadow:
    0 0 18px rgba(255,215,0,.34),
    inset 0 0 15px rgba(0,229,255,.18);
  animation: hgGF004R1Halo 1s ease-out both;
}

.hg-gf004-r1-heart .hg-gf004-r1-halo {
  border-color: rgba(255,92,135,.68);
  box-shadow:
    0 0 18px rgba(255,92,135,.34),
    inset 0 0 14px rgba(255,215,0,.16);
}

@keyframes hgGF004R1Rise {
  0% {
    opacity: 0;
    transform: translateY(12px) scale(.72);
  }
  18% {
    opacity: 1;
    transform: translateY(0) scale(1.08);
  }
  72% {
    opacity: 1;
    transform: translateY(-50px) scale(1);
  }
  100% {
    opacity: 0;
    transform: translateY(-78px) scale(.86);
  }
}

@keyframes hgGF004R1Particle {
  0% {
    opacity: 0;
    filter: blur(2px);
  }
  20% {
    opacity: 1;
    filter: blur(0);
  }
  78% {
    opacity: 1;
  }
  100% {
    opacity: 0;
    filter: blur(1.5px);
  }
}

@keyframes hgGF004R1Halo {
  0% {
    opacity: 0;
    transform: scale(.42);
  }
  28% {
    opacity: .92;
  }
  100% {
    opacity: 0;
    transform: scale(1.62);
  }
}

/* Reduced motion remains visible, but becomes a short gentle confirmation. */
@media (prefers-reduced-motion: reduce) {
  .hg-gf004-r1-reaction-burst {
    animation: hgGF004R1Reduced .72s ease-out both !important;
  }

  .hg-gf004-r1-particle,
  .hg-gf004-r1-halo {
    animation-duration: .62s !important;
    animation-iteration-count: 1 !important;
  }

  @keyframes hgGF004R1Reduced {
    0% {
      opacity: 0;
      transform: translateY(7px) scale(.9);
    }
    25% {
      opacity: 1;
      transform: translateY(0) scale(1);
    }
    72% {
      opacity: 1;
      transform: translateY(-12px) scale(1);
    }
    100% {
      opacity: 0;
      transform: translateY(-20px) scale(.96);
    }
  }
}
