@keyframes fadeIn{from{opacity:0}to{opacity:1}}@keyframes fadeInUp{from{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInDown{from{opacity:0;transform:translateY(-40px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeInLeft{from{opacity:0;transform:translateX(-40px)}to{opacity:1;transform:translateX(0)}}@keyframes fadeInRight{from{opacity:0;transform:translateX(40px)}to{opacity:1;transform:translateX(0)}}@keyframes scaleIn{from{opacity:0;transform:scale(0.8)}to{opacity:1;transform:scale(1)}}@keyframes rotateIn{from{opacity:0;transform:rotate(-10deg) scale(0.9)}to{opacity:1;transform:rotate(0) scale(1)}}@keyframes bounceIn{0%{opacity:0;transform:scale(0.3)}50%{transform:scale(1.05)}70%{transform:scale(0.95)}100%{opacity:1;transform:scale(1)}}@keyframes slideInUp{from{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.05)}}@keyframes shimmer{0%{background-position:-200% 0}100%{background-position:200% 0}}@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes countUp{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.animate-on-scroll{opacity:0;transition:opacity 0.6s ease,transform 0.6s ease}.animate-on-scroll.visible{opacity:1}.fade-up{transform:translateY(40px)}.fade-up.visible{transform:translateY(0)}.fade-down{transform:translateY(-40px)}.fade-down.visible{transform:translateY(0)}.fade-left{transform:translateX(-40px)}.fade-left.visible{transform:translateX(0)}.fade-right{transform:translateX(40px)}.fade-right.visible{transform:translateX(0)}.scale-in{transform:scale(0.85)}.scale-in.visible{transform:scale(1)}.rotate-in{transform:rotate(-5deg) scale(0.9)}.rotate-in.visible{transform:rotate(0) scale(1)}.delay-1{transition-delay:0.1s}.delay-2{transition-delay:0.2s}.delay-3{transition-delay:0.3s}.delay-4{transition-delay:0.4s}.delay-5{transition-delay:0.5s}.delay-6{transition-delay:0.6s}.hover-lift{transition:transform var(--transition-base),box-shadow var(--transition-base)}.hover-lift:hover{transform:translateY(-8px);box-shadow:var(--shadow-xl)}.hover-zoom{overflow:hidden}.hover-zoom img{transition:transform 0.5s ease}.hover-zoom:hover img{transform:scale(1.1)}.btn-shine{position:relative;overflow:hidden}.btn-shine::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.2),transparent);transition:left 0.5s ease}.btn-shine:hover::before{left:100%}.hover-underline{position:relative}.hover-underline::after{content:'';position:absolute;bottom:0;left:50%;width:0;height:2px;background:var(--color-primary);transition:all 0.3s ease;transform:translateX(-50%)}.hover-underline:hover::after{width:100%}.hover-rotate:hover .icon{transform:rotate(360deg);transition:transform 0.6s ease}.skeleton{background:linear-gradient(90deg,#eee 25%,#f5f5f5 50%,#eee 75%);background-size:200% 100%;animation:shimmer 1.5s infinite;border-radius:var(--border-radius)}.skeleton-text{height:16px;margin-bottom:8px;border-radius:4px}.skeleton-image{height:200px;border-radius:var(--border-radius)}.floating{animation:float 3s ease-in-out infinite}.pulsing{animation:pulse 2s ease-in-out infinite}.page-transition{animation:fadeIn 0.5s ease-out}@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:0.01ms!important;animation-iteration-count:1!important;transition-duration:0.01ms!important}.animate-on-scroll{opacity:1;transform:none}}