@keyframes float{0%,to{transform:translateZ(0) rotate(6deg)}50%{transform:translate3d(0,-20px,0) rotate(6deg)}}@keyframes float-delayed{0%,to{transform:translateZ(0) rotate(-3deg)}50%{transform:translate3d(0,-15px,0) rotate(-3deg)}}@keyframes shimmer{0%{transform:translate3d(-100%,0,0)}to{transform:translate3d(100%,0,0)}}@keyframes slide-up{0%{opacity:0;transform:translate3d(0,10px,0)}to{opacity:1;transform:translateZ(0)}}.animate-float{animation:float 6s ease-in-out infinite;will-change:transform;transform:translateZ(0);backface-visibility:hidden;perspective:1000px}.animate-float-delayed{animation:float-delayed 6s ease-in-out 1s infinite;will-change:transform;transform:translateZ(0);backface-visibility:hidden;perspective:1000px}.animate-shimmer{position:relative;overflow:hidden;transform:translateZ(0);backface-visibility:hidden}.animate-shimmer:after{content:"";position:absolute;top:0;left:0;right:0;bottom:0;background:linear-gradient(90deg,transparent 0%,hsl(var(--foreground) / .1) 50%,transparent 100%);animation:shimmer 2s infinite;will-change:transform;transform:translateZ(0);backface-visibility:hidden}.animate-slide-up{animation:slide-up .5s ease-out;animation-fill-mode:both;will-change:transform,opacity}.template-image-skeleton{background:linear-gradient(90deg,hsl(var(--muted)),hsl(var(--muted-foreground) / .1),hsl(var(--muted)));background-size:200% 100%;animation:skeleton-loading 1.5s ease-in-out infinite}@keyframes skeleton-loading{0%{background-position:200% 0}to{background-position:-200% 0}}
