@keyframes slideInDown{0%{opacity:0;transform:translateY(-30px)}to{opacity:1;transform:translateY(0)}}.animate-slideInDown{animation:.6s ease-out forwards slideInDown}@keyframes slideInUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}.animate-slideInUp{animation:.6s ease-out forwards slideInUp}@keyframes fadeInScale{0%{opacity:0;transform:scale(.8)}to{opacity:1;transform:scale(1)}}.animate-fadeInScale{animation:.5s ease-out forwards fadeInScale}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-fadeInUp{animation:.5s ease-out forwards fadeInUp}@keyframes pulse{0%,to{opacity:1}50%{opacity:.7}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-bounce{animation:.6s ease-in-out bounce}@keyframes shimmer{0%{background-position:-1000px 0}to{background-position:1000px 0}}.animate-shimmer{animation:2s infinite shimmer}button{transition:all .3s cubic-bezier(.4,0,.2,1)}button:hover{transform:translateY(-2px)}.group{transition:all .4s cubic-bezier(.4,0,.2,1)}.group img{transition:transform .4s cubic-bezier(.4,0,.2,1)}.group:hover img{transform:scale(1.1)}@keyframes showcaseFloat{0%,to{transform:translate(0,0)}50%{transform:translateY(-16px)}}.animate-showcaseFloat{animation:8s ease-in-out infinite showcaseFloat}@keyframes showcaseReveal{0%{opacity:0;transform:translateY(14px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.animate-showcaseReveal{animation:.5s ease-out both showcaseReveal}@keyframes chatLauncherPulse{0%,to{box-shadow:0 0 #f59e0b5c}60%{box-shadow:0 0 0 14px #f59e0b00}}.animate-chatLauncherPulse{animation:2.2s ease-in-out infinite chatLauncherPulse}@keyframes galleryReveal{0%{opacity:0;transform:translateY(18px)scale(.99)}to{opacity:1;transform:translateY(0)scale(1)}}.animate-galleryReveal{animation:.7s ease-out both galleryReveal}@keyframes galleryDrift{0%,to{transform:translate(0,0)}50%{transform:translate(12px,-18px)}}.animate-galleryDrift{animation:10s ease-in-out infinite galleryDrift}
