// vue/app/temp.styl .page-slide-enter-active transition all 0.3s ease-out .page-slide-leave-active transition all 0.3s ease-in .page-slide-enter-from opacity 0 transform translateX(30px) .page-slide-leave-to opacity 0 transform translateX(-30px) // Глобальные стили и анимации для всего проекта // Анимации для плавного появления элементов @keyframes fadeInUp 0% opacity: 0 transform: translateY(40px) 100% opacity: 1 transform: translateY(0) @keyframes fadeIn from opacity: 0 to opacity: 1 @keyframes slideIn from opacity: 0 transform: translateX(-100px) to opacity: 1 transform: translateX(0) @keyframes pulse 0%, 100% opacity: 1 50% opacity: 0.7 // Глобальные классы анимаций .animate-fade-in-up animation: fadeInUp 0.6s ease-out forwards .animate-fade-in animation: fadeIn 0.5s ease-out forwards .animate-slide-in animation: slideIn 0.5s ease-out forwards .animate-pulse-slow animation: pulse 2s infinite // Задержки для анимаций .animation-delay-100 animation-delay: 100ms .animation-delay-200 animation-delay: 200ms .animation-delay-300 animation-delay: 300ms .animation-delay-400 animation-delay: 400ms // Кастомная полоса прокрутки ::-webkit-scrollbar width: 8px ::-webkit-scrollbar-track background: #f1f1f1 .dark ::-webkit-scrollbar-track background: #374151 ::-webkit-scrollbar-thumb background: #cbd5e0 border-radius: 4px .dark ::-webkit-scrollbar-thumb background: #4b5563 // Глобальные утилиты .card-hover transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1) &:hover transform: translateY(-8px) box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.25) .line-clamp-2 display: -webkit-box -webkit-line-clamp: 2 -webkit-box-orient: vertical overflow: hidden .line-clamp-3 display: -webkit-box -webkit-line-clamp: 3 -webkit-box-orient: vertical overflow: hidden // Состояния загрузки .loading-skeleton background: linear-gradient(90deg, #f0f0f0 25%, #e0e0e0 50%, #f0f0f0 75%) background-size: 200% 100% animation: loading 1.5s infinite .dark .loading-skeleton background: linear-gradient(90deg, #374151 25%, #4b5563 50%, #374151 75%) background-size: 200% 100% @keyframes loading 0% background-position: 200% 0 100% background-position: -200% 0 // Анимации для Vue переходов .modal-fade-enter-active, .modal-fade-leave-active transition: opacity 0.3s ease .modal-fade-enter-from, .modal-fade-leave-to opacity: 0 .page-slide-enter-active transition: all 0.3s ease-out .page-slide-leave-active transition: all 0.3s ease-in .page-slide-enter-from opacity: 0 transform: translateX(30px) .page-slide-leave-to opacity: 0 transform: translateX(-30px)