@keyframes confetti-fall{0%{transform:translateY(-100vh) rotate(0deg);opacity:1}to{transform:translateY(100vh) rotate(2turn);opacity:.7}}@keyframes balloon-rise{0%{transform:translateY(100vh) translateX(0);opacity:1}20%{transform:translateY(60vh) translateX(15px)}40%{transform:translateY(20vh) translateX(-10px)}60%{transform:translateY(-20vh) translateX(12px)}80%{transform:translateY(-60vh) translateX(-8px)}to{transform:translateY(-120vh) translateX(5px);opacity:.9}}@keyframes crown-sparkle{0%,to{filter:drop-shadow(0 0 2px rgba(255,215,0,.4));transform:scale(1)}50%{filter:drop-shadow(0 0 8px rgba(255,215,0,.9)) drop-shadow(0 0 15px rgba(255,215,0,.5));transform:scale(1.05)}}@keyframes rainbow-text{0%{color:#ffd700}25%{color:#daa520}50%{color:#b8860b}75%{color:#f5deb3}to{color:#ffd700}}@keyframes scale-bounce{0%{transform:scale(0) rotate(-10deg);opacity:0}50%{transform:scale(1.2) rotate(5deg)}70%{transform:scale(.95) rotate(-2deg)}to{transform:scale(1) rotate(0deg);opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes pulse-glow{0%,to{box-shadow:0 0 20px rgba(255,215,0,.3),0 0 40px rgba(255,107,107,.2)}50%{box-shadow:0 0 40px rgba(255,215,0,.5),0 0 80px rgba(255,107,107,.4)}}.birthday-confetti{animation:confetti-fall linear forwards;pointer-events:none}.birthday-balloon{animation:balloon-rise 6s ease-in-out forwards;pointer-events:none}.birthday-crown{animation:crown-sparkle 2s ease-in-out infinite}.birthday-greeting{animation:rainbow-text 3s linear infinite}.birthday-title{animation:scale-bounce .8s ease-out forwards}.birthday-float{animation:float 3s ease-in-out infinite}.birthday-glow{animation:pulse-glow 2s ease-in-out infinite}.birthday-gradient-text{background:linear-gradient(90deg,#ffd700,#daa520,#f5deb3,#b8860b,#d4af37,#ffd700);background-size:200% auto;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;animation:gradient-shift 3s linear infinite}@keyframes gradient-shift{0%{background-position:0}to{background-position:200%}}@keyframes star-burst{0%{transform:scale(0) rotate(0deg);opacity:0}50%{opacity:1}to{transform:scale(2) rotate(180deg);opacity:0}}.birthday-star{animation:star-burst 1.5s ease-out forwards}

/*! tailwindcss v4.1.18 | MIT License | https://tailwindcss.com */@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,::backdrop,:after,:before{--tw-animation-delay:0s;--tw-animation-direction:normal;--tw-animation-duration:initial;--tw-animation-fill-mode:none;--tw-animation-iteration-count:1;--tw-enter-blur:0;--tw-enter-opacity:1;--tw-enter-rotate:0;--tw-enter-scale:1;--tw-enter-translate-x:0;--tw-enter-translate-y:0;--tw-exit-blur:0;--tw-exit-opacity:1;--tw-exit-rotate:0;--tw-exit-scale:1;--tw-exit-translate-x:0;--tw-exit-translate-y:0}}}@property --tw-animation-delay{syntax:"*";inherits:false;initial-value:0s}@property --tw-animation-direction{syntax:"*";inherits:false;initial-value:normal}@property --tw-animation-duration{syntax:"*";inherits:false}@property --tw-animation-fill-mode{syntax:"*";inherits:false;initial-value:none}@property --tw-animation-iteration-count{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-enter-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-enter-translate-y{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-blur{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-opacity{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-rotate{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-scale{syntax:"*";inherits:false;initial-value:1}@property --tw-exit-translate-x{syntax:"*";inherits:false;initial-value:0}@property --tw-exit-translate-y{syntax:"*";inherits:false;initial-value:0}