.followerEl {
    position: absolute;
    top: 0;
    left: 0;
    visibility: hidden;
    opacity: 0;
    pointer-events: none;
    transition: opacity 400ms ease-in-out, visibility 400ms ease-in-out;
    width: 100px;
    height: 100px;
    transform: translate(-50%, -50%);
    filter: drop-shadow(0 0 8px #fff) blur(4px);
}

.followerEl.followerActive:not(.followerFade) {
    opacity: 1;
    visibility: visible;
}

.followSparkle {
    position: absolute !important;
    aspect-ratio: 1 / 1;
    background-color: #fff;
    clip-path: polygon(50% 0%, 63% 40%, 100% 50%, 63% 60%, 50% 100%, 37% 60%, 0 50%, 37% 40%);
    opacity: 0;
}

.followSparkle1 {
    top: 0;
    left: 0;
    width: 20px;
    height: 20px;
    animation: starfade 14.2s reverse infinite !important;
}

.followSparkle2 {
    top: 20px;
    right: 0;
    width: 30px;
    height: 30px;
    animation: starfade 19.3s linear infinite !important;
    animation-delay: 1500ms !important;
}

.followSparkle3 {
    bottom: 29px;
    left: 9px;
    width: 40px;
    height: 40px;
    animation: starfade 12.4s reverse infinite !important;
    animation-delay: 2200ms !important;
}

.followSparkle4 {
    bottom: 25px;
    right: 31px;
    width: 10px;
    height: 10px;
    animation: starfade 17.7s linear infinite !important;
    animation-delay: 2200ms !important;
}

.followSparkle5 {
    bottom: 9px;
    left: 3px;
    width: 16px;
    height: 16px;
    animation: starfade 22.8s reverse infinite !important;
    animation-delay: 4000ms !important;
}

.followSparkle6 {
    top: 9px;
    right: 32px;
    width: 22px;
    height: 22px;
    animation: starfade 15.1s linear infinite !important;
    animation-delay: 5100ms !important;
}

@keyframes starfade {
    0%   {opacity: 0;}
    20%  {opacity: 1;}
    36%  {opacity: 0.2;}
    43%  {opacity: 0.9;}
    61%  {opacity: 0;}
    77%  {opacity: 1;}
    82%  {opacity: 0.4;}
    91%  {opacity: 0.8;}
    100% {opacity: 0;}
}