@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:fadeIn .3s ease-in-out}@keyframes scaleIn{0%{opacity:0;transform:scale(.9)}to{opacity:1;transform:scale(1)}}.animate-scale-in{animation:scaleIn .3s ease-out}@keyframes slideInRight{0%{opacity:0;transform:translateX(20px)}to{opacity:1;transform:translateX(0)}}.animate-slide-in-right{animation:slideInRight .3s ease-out}@keyframes slideInLeft{0%{opacity:0;transform:translateX(-20px)}to{opacity:1;transform:translateX(0)}}.animate-slide-in-left{animation:slideInLeft .3s ease-out}@keyframes slideInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-slide-in-up{animation:slideInUp .3s ease-out}@keyframes bounce{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}.animate-bounce-slow{animation:bounce 2s ease-in-out infinite}@keyframes pulse{0%,to{opacity:1}50%{opacity:.5}}.animate-pulse-fast{animation:pulse 1s ease-in-out infinite}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}.animate-spin-slow{animation:spin 2s linear infinite}@keyframes ping{75%,to{transform:scale(2);opacity:0}}.animate-ping-slow{animation:ping 2s cubic-bezier(0,0,.2,1) infinite}@keyframes shake{0%,to{transform:translateX(0)}10%,30%,50%,70%,90%{transform:translateX(-5px)}20%,40%,60%,80%{transform:translateX(5px)}}.animate-shake{animation:shake .5s ease-in-out}@keyframes zoomIn{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.animate-zoom-in{animation:zoomIn .3s ease-out}@keyframes zoomOut{0%{opacity:1;transform:scale(1)}to{opacity:0;transform:scale(.5)}}.animate-zoom-out{animation:zoomOut .3s ease-in}.dragging{opacity:.5;cursor:grabbing;transform:rotate(2deg);z-index:1000}.drag-over{background:rgba(59,130,246,.1);border-color:#3b82f6;transform:scale(1.02)}.drag-over,.drop-zone{transition:all .2s ease}.drop-zone{position:relative}.drop-zone:before{content:"";position:absolute;inset:0;border:2px dashed transparent;border-radius:.75rem;transition:all .2s ease}.drop-zone.active:before{border-color:#3b82f6;background:rgba(59,130,246,.05)}.card-hover{transition:all .2s cubic-bezier(.4,0,.2,1)}.card-hover:hover{transform:translateY(-4px);box-shadow:0 20px 25px -5px rgba(0,0,0,.1),0 10px 10px -5px rgba(0,0,0,.04)}.btn-transition{transition:all .2s ease}.btn-transition:hover{transform:scale(1.05)}.btn-transition:active{transform:scale(.95)}.scroll-snap-x{scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch}.scroll-snap-item{scroll-snap-align:start}.hide-scrollbar{-ms-overflow-style:none;scrollbar-width:none}.hide-scrollbar::-webkit-scrollbar{display:none}.custom-scrollbar::-webkit-scrollbar{width:8px;height:8px}.custom-scrollbar::-webkit-scrollbar-track{background:#f1f1f1;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb{background:#888;border-radius:10px}.custom-scrollbar::-webkit-scrollbar-thumb:hover{background:#555}@keyframes skeleton{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton{background:linear-gradient(90deg,#f0f0f0 25%,#e0e0e0 50%,#f0f0f0 75%);background-size:200% 100%;animation:skeleton 1.5s ease-in-out infinite;border-radius:.5rem}@keyframes shimmer{0%{transform:translateX(-100%)}to{transform:translateX(100%)}}.shimmer{position:relative;overflow:hidden}.shimmer:after{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(90deg,transparent,hsla(0,0%,100%,.4),transparent);animation:shimmer 2s infinite}.image-zoom{overflow:hidden;border-radius:.5rem}.image-zoom img{transition:transform .3s ease}.image-zoom:hover img{transform:scale(1.1)}.image-brightness{transition:filter .3s ease}.image-brightness:hover{filter:brightness(1.1)}.image-overlay{position:relative}.image-overlay:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(0,0,0,.6) 0,transparent 50%);opacity:0;transition:opacity .3s ease}.image-overlay:hover:after{opacity:1}.badge-pulse{position:relative}.badge-pulse:before{content:"";position:absolute;inset:-2px;border-radius:inherit;background:inherit;z-index:-1;animation:pulse 2s ease-in-out infinite}.grid-auto-fit{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:1rem}.grid-auto-fill{display:grid;grid-template-columns:repeat(auto-fill,minmax(250px,1fr));gap:1rem}.backdrop-blur-md{backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.glass{background:hsla(0,0%,100%,.1);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border:1px solid hsla(0,0%,100%,.2)}.text-gradient{background:linear-gradient(90deg,#3b82f6,#06b6d4);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}@media (max-width:640px){.hide-mobile{display:none!important}}@media (min-width:641px){.hide-desktop{display:none!important}}