/* Animation Styles */

@keyframes titleUnderline {
    0%, 100% {
        width: 60px;
        opacity: 1;
    }
    50% {
        width: 80px;
        opacity: 0.8;
    }
}

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

.fade-in-up {
    animation: fadeInUp 0.6s ease-out;
}

/* Finance-themed animations */
@keyframes marketPulse {
    0%, 100% {
        opacity: 0.3;
    }
    50% {
        opacity: 0.6;
    }
}

@keyframes dataFlow {
    0% {
        transform: translateX(-100%);
        opacity: 0;
    }
    50% {
        opacity: 1;
    }
    100% {
        transform: translateX(100%);
        opacity: 0;
    }
}

@keyframes typing {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes blink-caret {
    from, to { border-color: transparent; }
    50% { border-color: #1e40af; }
}

/* Glowing text effect */
.glow-text {
    text-shadow: 0 0 5px currentColor;
    animation: glow 3s ease-in-out infinite alternate;
}

@keyframes glow {
    from { text-shadow: 0 0 5px currentColor; }
    to { text-shadow: 0 0 10px currentColor, 0 0 15px currentColor; }
}

/* Skill Animation Styles */
@keyframes skillSlideIn {
    from {
        opacity: 0;
        transform: translateY(20px) scale(0.8);
    }
    to {
        opacity: 1;
        transform: translateY(0) scale(1);
    }
}

.skill-animated {
    animation: skillSlideIn 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards;
}

@keyframes dataFlow {
    0% {
        left: -100%;
        opacity: 0;
    }
    50% {
        opacity: 1;
    }
    100% {
        left: 100%;
        opacity: 0;
    }
}

.data-flow-effect {
    animation: dataFlow 1.5s ease-in-out;
}

/* Parallax effect for capable devices */
@media (prefers-reduced-motion: no-preference) {
    .parallax-enabled {
        transition: transform 0.1s ease-out;
    }
}

/* Code typing animation */
@keyframes typing {
    from { width: 0; }
    to { width: 100%; }
}

@keyframes blink {
    0%, 50% { border-color: var(--fintech-primary); }
    51%, 100% { border-color: transparent; }
}

.typing-cursor {
    border-right: 2px solid var(--fintech-primary);
    animation: blink 1s infinite;
}

/* Skill item hover pulse */
.skill-item {
    transition: all 0.3s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.skill-item:hover {
    transform: scale(1.1) translateY(-5px);
}

/* Staggered reveal for tech stack */
.tech-stack-item {
    opacity: 0;
    transform: translateY(20px);
    transition: all 0.5s cubic-bezier(0.34, 1.56, 0.64, 1);
}

.tech-stack-item.revealed {
    opacity: 1;
    transform: translateY(0);
}

/* Micro-interactions */
@keyframes pulse {
    0%, 100% {
        transform: scale(1);
        opacity: 1;
    }
    50% {
        transform: scale(1.05);
        opacity: 0.9;
    }
}

.pulse-on-hover:hover {
    animation: pulse 2s ease-in-out infinite;
}

/* Scroll reveal with blur */
@keyframes revealWithBlur {
    from {
        opacity: 0;
        transform: translateY(30px);
        filter: blur(10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
        filter: blur(0);
    }
}

.reveal-blur {
    animation: revealWithBlur 0.8s ease-out forwards;
}

