.cheer{opacity:0;animation-delay:var(--delay);animation-duration:var(--duration);animation-timing-function:cubic-bezier(.2,.6,.3,1);animation-fill-mode:forwards;position:absolute;top:0}.cheer-rain{animation-name:cheer-rain}@keyframes cheer-rain{0%{opacity:1;transform:translateY(-30px)rotate(0)}15%{transform:translate(calc(var(--drift) * .2), 10px) rotate(calc(var(--spin) * .2))}to{opacity:0;transform:translate(var(--drift), 230px) rotate(var(--spin))}}.cheer-ribbon{animation-name:cheer-ribbon;animation-timing-function:cubic-bezier(.3,0,.4,1)}@keyframes cheer-ribbon{0%{opacity:1;transform:translateY(-40px)rotate(0)scaleX(1)}30%{transform:translate(calc(var(--drift) * .4), 30px) rotate(28deg) scaleX(.45)}60%{transform:translate(calc(var(--drift) * .7), 110px) rotate(-22deg) scaleX(1)}to{opacity:0;transform:translate(var(--drift), 210px) rotate(calc(var(--spin) * .1)) scaleX(.6)}}.cheer-sparks{animation-name:cheer-sparks;animation-timing-function:cubic-bezier(.1,.8,.2,1)}@keyframes cheer-sparks{0%{opacity:1;transform:translateY(90px)rotate(0)scale(.3)}to{opacity:0;transform:translate(var(--fx), calc(90px + var(--fy))) rotate(var(--spin)) scale(1)}}.sorrow{animation:1.9s forwards sorrow-enter}@keyframes sorrow-enter{0%{opacity:0;transform:translateY(-10px)scale(.85)}18%{opacity:1;transform:translateY(0)scale(1)}80%{opacity:1}to{opacity:0;transform:translateY(6px)scale(.97)}}.sorrow .mouth{stroke-dasharray:30;stroke-dashoffset:30px;animation:.5s ease-out .25s forwards mouth-draw}@keyframes mouth-draw{to{stroke-dashoffset:0}}.tear{opacity:0;animation:1.1s ease-in .6s forwards tear-fall}@keyframes tear-fall{0%{opacity:0;transform:translateY(0)scaleY(.6)}20%{opacity:1;transform:translateY(2px)scaleY(1)}to{opacity:0;transform:translateY(20px)scaleY(1.4)}}.sorrow-sigh .eye{transform-origin:50%;animation:1.7s ease-in-out .3s forwards eye-close}@keyframes eye-close{0%,30%{transform:scaleY(1)}45%,60%{transform:scaleY(.15)}75%{transform:scaleY(1)}to{transform:scaleY(.2)}}@media (prefers-reduced-motion:reduce){.cheer{display:none}.sorrow,.sorrow .mouth,.tear,.sorrow-sigh .eye{animation:none}.sorrow{opacity:1}.sorrow .mouth{stroke-dashoffset:0}.tear{opacity:1}}
