@keyframes magicSpin{0%{transform:rotateX(0)rotateY(0)rotate(0)scale(1)}15%{transform:rotateX(120deg)rotateY(-60deg)rotate(45deg)scale(1.15)}30%{transform:rotateX(-90deg)rotateY(180deg)rotate(-30deg)scale(.9)}50%{transform:rotateX(200deg)rotateY(-120deg)rotate(90deg)scale(1.2)}65%{transform:rotateX(-45deg)rotateY(270deg)rotate(-60deg)scale(.95)}80%{transform:rotateX(160deg)rotateY(-200deg)rotate(120deg)scale(1.1)}to{transform:rotateX(360deg)rotateY(360deg)rotate(0)scale(1)}}@keyframes magicGlow{0%{box-shadow:0 0 10px #8b5cf666,0 0 25px #8b5cf626,inset 0 0 8px #a855f71a}15%{box-shadow:0 0 25px #8b5cf6cc,0 0 60px #7c3aed80,0 0 100px #a855f74d,0 0 160px #fbbf2414,inset 0 0 20px #a855f740}35%{box-shadow:0 0 40px #a855f7e6,0 0 90px #8b5cf6a6,0 0 140px #6366f166,0 0 200px #fbbf241f,0 0 50px #ec489933,inset 0 0 30px #8b5cf659}55%{box-shadow:0 0 30px #ec489980,0 0 70px #a855f7b3,0 0 120px #8b5cf680,0 0 180px #6366f140,inset 0 0 25px #ec489933}75%{box-shadow:0 0 35px #7c3aedcc,0 0 80px #8b5cf68c,0 0 150px #a855f74d,0 0 40px #fbbf2426,inset 0 0 25px #a855f74d}to{box-shadow:0 0 50px #a855f7,0 0 100px #8b5cf6b3,0 0 180px #6366f166,0 0 250px #ec489926,0 0 60px #fbbf241a,inset 0 0 40px #a855f766}}@keyframes magicParticleBurst{0%{opacity:1;filter:brightness(2)blur();transform:translate(0)scale(.5)rotate(0);box-shadow:0 0 6px,0 0 12px}20%{transform:translate(calc(var(--tx)*.15),calc(var(--ty)*.15))scale(1.8)rotate(90deg);opacity:1;filter:brightness(2.5)blur();box-shadow:0 0 10px,0 0 20px,0 0 35px}60%{transform:translate(calc(var(--tx)*.65),calc(var(--ty)*.65))scale(1.2)rotate(200deg);opacity:.7;filter:brightness(1.5)blur(.5px);box-shadow:0 0 6px,0 0 12px}to{transform:translate(var(--tx),var(--ty))scale(0)rotate(360deg);opacity:0;filter:brightness()blur(2px);box-shadow:0 0}}@keyframes magicStarBurst{0%{opacity:1;filter:brightness(3);transform:translate(0)scale(.3)rotate(0)}15%{transform:translate(calc(var(--tx)*.1),calc(var(--ty)*.1))scale(2.2)rotate(72deg);opacity:1;filter:brightness(3.5)}40%{transform:translate(calc(var(--tx)*.4),calc(var(--ty)*.4))scale(1.5)rotate(180deg);opacity:.85;filter:brightness(2)}to{transform:translate(var(--tx),var(--ty))scale(0)rotate(360deg);opacity:0;filter:brightness()blur(1px)}}@keyframes magicTrail{0%{opacity:1;filter:brightness(2.5);transform:scale(1)rotate(0)translateY(0);box-shadow:0 0 8px,0 0 16px}30%{opacity:.9;filter:brightness(2);transform:scale(1.6)rotate(90deg)translateY(-4px);box-shadow:0 0 12px,0 0 25px,0 0 40px}60%{opacity:.5;filter:brightness(1.5);transform:scale(.8)rotate(200deg)translateY(2px);box-shadow:0 0 6px,0 0 12px}to{opacity:0;filter:brightness()blur(2px);transform:scale(0)rotate(360deg)translateY(6px);box-shadow:0 0}}@keyframes magicTrailDrift{0%{opacity:.9;filter:brightness(2)blur();transform:scale(1.2)rotate(0)}50%{opacity:.5;filter:brightness(1.8)blur(.5px);transform:scale(1.8)rotate(180deg)}to{opacity:0;filter:brightness()blur(3px);transform:scale(0)rotate(400deg)}}@keyframes magicVanish{0%{opacity:1;filter:blur()brightness()saturate();transform:scale(1)}25%{opacity:1;filter:blur()brightness(2)saturate(1.5);transform:scale(1.25)}45%{opacity:.95;filter:blur(1px)brightness(3)saturate(2);transform:scale(1.4);box-shadow:0 0 40px #a855f7e6,0 0 80px #8b5cf699,0 0 120px #ec48994d}65%{opacity:.7;filter:blur(4px)brightness(2)saturate(1.5);transform:scale(.6);box-shadow:0 0 60px #a855f7b3,0 0 100px #fbbf2433}to{opacity:0;filter:blur(16px)brightness()saturate(.5);transform:scale(0);box-shadow:0 0 #0000}}@keyframes magicVanishParticle{0%{opacity:1;filter:brightness(3);transform:translate(0)scale(1.5)rotate(0);box-shadow:0 0 8px,0 0 16px}20%{transform:translate(calc(var(--tx)*-.4),calc(var(--ty)*-.4))scale(2)rotate(60deg);opacity:1;filter:brightness(3.5);box-shadow:0 0 12px,0 0 24px,0 0 40px}40%{transform:translate(calc(var(--tx)*-.15),calc(var(--ty)*-.15))scale(2.5)rotate(120deg);opacity:1;filter:brightness(4);box-shadow:0 0 16px,0 0 32px,0 0 50px}55%{transform:translate(calc(var(--tx)*.3),calc(var(--ty)*.3))scale(1.5)rotate(200deg);opacity:.8;filter:brightness(2.5);box-shadow:0 0 10px,0 0 20px}to{transform:translate(var(--tx),var(--ty))scale(0)rotate(360deg);opacity:0;filter:brightness()blur(2px);box-shadow:0 0}}@keyframes magicRing{0%{opacity:.8;border-width:3px;transform:translate(-50%,-50%)scale(0)}50%{opacity:.5;border-width:2px}to{opacity:0;border-width:.5px;transform:translate(-50%,-50%)scale(1)}}.magic-particle{width:var(--size,6px);height:var(--size,6px);color:#a855f7cc;pointer-events:none;z-index:9999;will-change:transform,opacity,filter;background:radial-gradient(circle,#a855f7 0%,#8b5cf6e6 30%,#6366f180 70%,#0000 100%);border-radius:50%;position:absolute;box-shadow:0 0 4px #a855f799,0 0 8px #8b5cf64d}.magic-particle--gold{color:#fbbf24cc;background:radial-gradient(circle,#fbbf24 0%,#f59e0be6 30%,#d9770680 70%,#0000 100%);box-shadow:0 0 4px #fbbf2499,0 0 8px #f59e0b4d}.magic-particle--white{color:#fffc;background:radial-gradient(circle,#fff 0%,#e9d5ffe6 30%,#a855f766 70%,#0000 100%);box-shadow:0 0 4px #ffffffb3,0 0 8px #e9d5ff66}.magic-particle--pink{color:#ec4899cc;background:radial-gradient(circle,#ec4899 0%,#db2777e6 30%,#be185d80 70%,#0000 100%);box-shadow:0 0 4px #ec489999,0 0 8px #db27774d}.magic-particle--star{clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%);color:#fbbf24e6;box-shadow:none;filter:drop-shadow(0 0 4px #fbbf24cc);background:radial-gradient(circle,#fff 0%,#fbbf24e6 40%,#f59e0b80 100%);border-radius:0}.magic-ring{width:var(--ring-size,120px);height:var(--ring-size,120px);pointer-events:none;z-index:9999;will-change:transform,opacity;animation:magicRing var(--ring-duration,.5s)cubic-bezier(.25,.46,.45,.94)forwards;background:0 0;border:3px solid #a855f799;border-radius:50%;position:fixed}.magic-ring--gold{border-color:#fbbf2480}.magic-ring--pink{border-color:#ec489966}.magic-spinning{transform-style:preserve-3d;animation:.6s cubic-bezier(.36,.07,.19,.97) forwards magicSpin,.6s ease-in-out forwards magicGlow}.magic-flying{z-index:10000;pointer-events:none;will-change:transform,left,top;transform-style:preserve-3d;position:fixed}.magic-vanishing{animation:.45s cubic-bezier(.55,.085,.68,.53) forwards magicVanish}
