*,*:before,*:after{margin:0;padding:0;box-sizing:border-box}body{font-family:Poppins,sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bg-app-gradient{background:linear-gradient(to bottom,#fdf2f8,#fce7f3,#fbcfe8);min-height:100vh}::-webkit-scrollbar{width:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:#f9a8d4;border-radius:3px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}@keyframes heartFloat{0%{transform:translateY(0) scale(1);opacity:1}to{transform:translateY(-100px) scale(.5);opacity:0}}@keyframes bounce{0%,to{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes pulse{0%,to{transform:scale(1)}50%{transform:scale(1.1)}}.animate-float{animation:float 3s ease-in-out infinite}.animate-fadeIn{animation:fadeIn .5s ease-out}.animate-scaleIn{animation:scaleIn .3s ease-out}.animate-bounce{animation:bounce 2s ease-in-out infinite}.animate-pulse{animation:pulse 1.5s ease-in-out infinite}@keyframes modalOverlayIn{0%{opacity:0}to{opacity:1}}@keyframes modalContentIn{0%{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}@keyframes toastSlideIn{0%{opacity:0;transform:translate(100%) scale(.95)}to{opacity:1;transform:translate(0) scale(1)}}
