.celebration-overlay{background-color:rgba(0,0,0,.6);backdrop-filter:blur(8px);animation:overlay-fade-in .3s ease-out forwards}@keyframes overlay-fade-in{0%{opacity:0}to{opacity:1}}.celebration-content{animation:content-enter .3s ease-out forwards}@keyframes content-enter{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.cannon-container{position:absolute;bottom:10%;z-index:20;will-change:transform}.cannon-container.cannon-left{left:5%;transform:rotate(45deg);--recoil-direction:-1}.cannon-container.cannon-right{right:5%;transform:rotate(-45deg) scaleX(-1);--recoil-direction:1}.cannon-enter{animation:cannon-enter .3s cubic-bezier(.34,1.56,.64,1) forwards}@keyframes cannon-enter{0%{opacity:0;transform:translateY(100px) rotate(var(--rotation,45deg))}to{opacity:1;transform:translateY(0) rotate(var(--rotation,45deg))}}.cannon-firing{animation:cannon-fire .15s ease-out}@keyframes cannon-fire{0%{transform:translateX(0) rotate(var(--rotation,45deg))}30%{transform:translateX(calc(var(--recoil-direction, -1) * 15px)) rotate(var(--rotation,45deg))}to{transform:translateX(0) rotate(var(--rotation,45deg))}}.cannon-flash{position:absolute;top:-20px;left:50%;transform:translateX(-50%);width:40px;height:40px;background:radial-gradient(circle,#fff 0,#ffd93d 30%,transparent 70%);border-radius:50%;opacity:0;pointer-events:none}.cannon-firing .cannon-flash{animation:flash .15s ease-out forwards}@keyframes flash{0%{opacity:0;transform:translateX(-50%) scale(.5)}30%{opacity:1;transform:translateX(-50%) scale(1.2)}to{opacity:0;transform:translateX(-50%) scale(1)}}.confetti-container{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:150}.confetti-x{will-change:transform,opacity;animation:move-x var(--duration,2.5s) cubic-bezier(.2,0,.8,1) forwards,fade-out var(--duration,2.5s) ease-in forwards}@keyframes move-x{0%{transform:translateX(0)}18%{transform:translateX(calc(var(--launch-x, 15vw) * .65))}35%{transform:translateX(calc(var(--launch-x, 15vw) * .88))}50%{transform:translateX(calc(var(--launch-x, 15vw) * 1))}70%{transform:translateX(calc(var(--launch-x, 15vw) * 1.15))}85%{transform:translateX(calc(var(--launch-x, 15vw) * 1.25))}to{transform:translateX(calc(var(--launch-x, 15vw) * 1.35))}}@keyframes fade-out{0%,65%{opacity:1}85%{opacity:.5}to{opacity:0}}.confetti-y{will-change:transform;animation:move-y var(--duration,2.5s) linear forwards}@keyframes move-y{0%{transform:translateY(0) scale(.2)}2%{transform:translateY(calc(var(--launch-y, -35vh) * .12)) scale(.9)}4%{transform:translateY(calc(var(--launch-y, -35vh) * .28)) scale(1)}7%{transform:translateY(calc(var(--launch-y, -35vh) * .48)) scale(1)}11%{transform:translateY(calc(var(--launch-y, -35vh) * .65)) scale(1)}15%{transform:translateY(calc(var(--launch-y, -35vh) * .78)) scale(1)}19%{transform:translateY(calc(var(--launch-y, -35vh) * .88)) scale(1)}23%{transform:translateY(calc(var(--launch-y, -35vh) * .94)) scale(1)}27%{transform:translateY(calc(var(--launch-y, -35vh) * .98)) scale(1)}30%{transform:translateY(var(--launch-y,-35vh)) scale(1)}33%{transform:translateY(calc(var(--launch-y, -35vh) * .99)) scale(1)}37%{transform:translateY(calc(var(--launch-y, -35vh) * .94)) scale(1)}41%{transform:translateY(calc(var(--launch-y, -35vh) * .85)) scale(1)}46%{transform:translateY(calc(var(--launch-y, -35vh) * .7)) scale(1)}51%{transform:translateY(calc(var(--launch-y, -35vh) * .48)) scale(1)}56%{transform:translateY(calc(var(--launch-y, -35vh) * .2)) scale(1)}61%{transform:translateY(6vh) scale(1)}67%{transform:translateY(18vh) scale(1)}74%{transform:translateY(35vh) scale(1)}81%{transform:translateY(55vh) scale(1)}88%{transform:translateY(78vh) scale(1)}95%{transform:translateY(100vh) scale(1)}to{transform:translateY(120vh) scale(1)}}.confetti-spin{will-change:transform;animation:spin-3d var(--duration,2.5s) linear forwards}@keyframes spin-3d{0%{transform:rotateX(0deg) rotateY(0deg) rotate(0deg)}to{transform:rotateX(calc(var(--rotation, 2turn) * .5)) rotateY(calc(var(--rotation, 2turn) * .3)) rotate(var(--rotation,2turn))}}.confetti-circle{border-radius:50%}.confetti-circle,.confetti-square{width:var(--size,12px);height:var(--size,12px);background-color:var(--color,#ffd93d)}.confetti-triangle{width:0;height:0;border-left:calc(var(--size, 12px) / 2) solid transparent;border-right:calc(var(--size, 12px) / 2) solid transparent;border-bottom:var(--size,12px) solid var(--color,#ffd93d)}.confetti-ribbon{width:calc(var(--size, 12px) / 3);height:var(--size,12px);background-color:var(--color,#ffd93d);border-radius:2px}.cannon-container,.celebration-content,.celebration-overlay,.confetti{transform:translateZ(0);backface-visibility:hidden}.confetti-container *{contain:layout style}