/**
 * Unified Animation Definitions
 * 중복 제거된 통합 애니메이션 파일
 * Created: 2024-12-19
 */

/* ================================
   FADE ANIMATIONS
   ================================ */
@keyframes fadeIn {
    from {
        opacity: 0;
    }
    to {
        opacity: 1;
    }
}

@keyframes fadeOut {
    from {
        opacity: 1;
    }
    to {
        opacity: 0;
    }
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(20px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ================================
   MOVEMENT ANIMATIONS
   ================================ */
@keyframes float {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-10px);
    }
}

@keyframes floatProtein {
    0%, 100% {
        transform: translate(0, 0) scale(1);
        opacity: 0.8;
    }
    50% {
        transform: translate(10px, -15px) scale(1.1);
        opacity: 1;
    }
}

@keyframes floatDisease {
    0%, 100% {
        transform: translate(0, 0) rotate(0deg);
        opacity: 0.6;
    }
    50% {
        transform: translate(-10px, -20px) rotate(5deg);
        opacity: 0.9;
    }
}

@keyframes bounce {
    0%, 100% {
        transform: translateY(0);
    }
    50% {
        transform: translateY(-20px);
    }
}

@keyframes slideInLeft {
    from {
        transform: translateX(-100%);
        opacity: 0;
    }
    to {
        transform: translateX(0);
        opacity: 1;
    }
}

/* ================================
   ROTATION ANIMATIONS
   ================================ */
@keyframes rotate {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

@keyframes spin {
    from {
        transform: rotate(0deg);
    }
    to {
        transform: rotate(360deg);
    }
}

@keyframes wobble {
    0%, 100% {
        transform: rotate(0deg);
    }
    25% {
        transform: rotate(3deg);
    }
    75% {
        transform: rotate(-3deg);
    }
}

/* ================================
   PULSE ANIMATIONS
   ================================ */
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.05);
        opacity: 0.8;
    }
}

@keyframes compressionPulse {
    0%, 100% {
        transform: scale(1);
        box-shadow: 0 0 0 0 rgba(255, 255, 255, 0.4);
    }
    50% {
        transform: scale(0.95);
        box-shadow: 0 0 0 10px rgba(255, 255, 255, 0);
    }
}

/* ================================
   SPECIAL EFFECTS
   ================================ */
@keyframes shake {
    0%, 100% {
        transform: translateX(0);
    }
    10%, 30%, 50%, 70%, 90% {
        transform: translateX(-2px);
    }
    20%, 40%, 60%, 80% {
        transform: translateX(2px);
    }
}

@keyframes shimmer {
    0% {
        background-position: -1000px 0;
    }
    100% {
        background-position: 1000px 0;
    }
}

@keyframes shockwave {
    0% {
        transform: scale(0);
        opacity: 1;
    }
    100% {
        transform: scale(4);
        opacity: 0;
    }
}

/* ================================
   STAR & SPACE ANIMATIONS
   ================================ */
@keyframes twinkle {
    0%, 100% {
        opacity: 0.3;
        transform: scale(1);
    }
    50% {
        opacity: 1;
        transform: scale(1.2);
    }
}

@keyframes starTwinkle {
    0%, 100% {
        opacity: 0.2;
    }
    50% {
        opacity: 1;
    }
}

@keyframes meteorFall {
    0% {
        transform: translateY(-100vh) translateX(0) rotate(45deg);
        opacity: 0;
    }
    10% {
        opacity: 1;
    }
    90% {
        opacity: 1;
    }
    100% {
        transform: translateY(100vh) translateX(50px) rotate(45deg);
        opacity: 0;
    }
}

/* ================================
   COMPLEX ANIMATIONS
   ================================ */
@keyframes volcanoTrajectory {
    0% {
        transform: translate(0, 0) scale(0);
        opacity: 0;
    }
    20% {
        transform: translate(-20px, -40px) scale(0.8);
        opacity: 1;
    }
    40% {
        transform: translate(-40px, -60px) scale(1);
    }
    60% {
        transform: translate(-60px, -40px) scale(1);
    }
    80% {
        transform: translate(-80px, 0) scale(0.8);
        opacity: 0.5;
    }
    100% {
        transform: translate(-100px, 40px) scale(0.5);
        opacity: 0;
    }
}

@keyframes ubiquitinTagging {
    0% {
        transform: scale(0) rotate(0deg);
        opacity: 0;
    }
    50% {
        transform: scale(1.2) rotate(180deg);
        opacity: 1;
    }
    100% {
        transform: scale(1) rotate(360deg);
        opacity: 0.8;
    }
}

/* ================================
   UTILITY CLASSES
   ================================ */

/* Animation speed modifiers */
.anim-slow {
    animation-duration: 3s !important;
}

.anim-normal {
    animation-duration: 1.5s !important;
}

.anim-fast {
    animation-duration: 0.5s !important;
}

/* Animation delay modifiers */
.delay-100 {
    animation-delay: 0.1s !important;
}

.delay-200 {
    animation-delay: 0.2s !important;
}

.delay-300 {
    animation-delay: 0.3s !important;
}

.delay-400 {
    animation-delay: 0.4s !important;
}

.delay-500 {
    animation-delay: 0.5s !important;
}

/* Animation state */
.paused {
    animation-play-state: paused !important;
}

.running {
    animation-play-state: running !important;
}

/* Iteration modifiers */
.once {
    animation-iteration-count: 1 !important;
}

.infinite {
    animation-iteration-count: infinite !important;
}

/* Easing functions */
.ease-in-out-bounce {
    animation-timing-function: cubic-bezier(0.68, -0.55, 0.265, 1.55) !important;
}

.ease-smooth {
    animation-timing-function: cubic-bezier(0.4, 0, 0.2, 1) !important;
}