@keyframes drop{from{opacity:0;transform:translateY(-60px) rotate(-12deg)}to{opacity:1;transform:none}}
h1 span{animation:drop .6s cubic-bezier(.3,1.6,.5,1) backwards}
@keyframes rise{from{transform:translateY(105vh) rotate(0)}to{transform:translateY(-10vh) rotate(25deg)}}
#hearts span{position:absolute;bottom:0;opacity:.5;animation:rise linear forwards}
@keyframes flicker{0%,100%{transform:scale(1,1) rotate(-2deg)}50%{transform:scale(.92,1.08) rotate(2deg)}}
.flame{animation:flicker .5s ease-in-out infinite;transition:opacity .3s,transform .3s}
@keyframes smoke{to{transform:translateY(-50px) scale(2);opacity:0}}
@keyframes bob{50%{transform:translateY(-8px) rotate(1.5deg)}}
@keyframes wiggle{25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}}
@keyframes pop{from{opacity:0;transform:scale(.85)}to{opacity:1;transform:none}}
.trail{animation:fade .9s ease-out forwards}
@keyframes fade{to{opacity:0;transform:translate(-50%,-120%) scale(.4)}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}
@keyframes drift{from{transform:translateY(110vh) rotate(var(--r))}50%{transform:translateY(40vh) translateX(24px) rotate(calc(var(--r) * -1))}to{transform:translateY(-60vh) rotate(var(--r))}}
