.patron-aura {
  position: relative;
}
.patron-spark {
  position: absolute;
  left: var(--px, 50%);
  bottom: var(--pb, 8%);
  width: var(--psz, 7px);
  height: var(--psz, 7px);
  margin-left: -3px;
  border-radius: 50%;
  pointer-events: none;
  z-index: 9;
  background: radial-gradient(circle, #fff4d0 0%, #e8c070 28%, #c9a0ff 55%, #6a30c0 82%, transparent 100%);
  box-shadow:
    0 0 10px rgba(255, 220, 140, 0.95),
    0 0 16px rgba(160, 90, 255, 1),
    0 0 22px rgba(200, 140, 255, 0.55);
  opacity: 0;
  animation: patronSparkRise var(--pdur, 2.2s) ease-in-out infinite;
  animation-delay: var(--pdelay, 0s);
}
@keyframes patronSparkRise {
  0% {
    opacity: 0;
    transform: translate(0, 6px) scale(0.45);
  }
  12% { opacity: 1; }
  55% {
    opacity: 0.85;
    transform: translate(var(--pdrift, 8px), -52px) scale(1);
  }
  100% {
    opacity: 0;
    transform: translate(calc(var(--pdrift, 8px) * 1.25), -88px) scale(0.25);
  }
}
