/* Animations - animations.css */

/* Grid Move Animation */
@keyframes grid-move {
    0% { transform: perspective(500px) rotateX(60deg) translateY(0); }
    100% { transform: perspective(500px) rotateX(60deg) translateY(100px); }
}

/* Gradient Animation */
@keyframes gradient-move {
    0% { background-position: 0% 50%; }
    100% { background-position: 100% 50%; }
}

/* Text Glow Animation */
@keyframes text-glow {
    0% { filter: drop-shadow(0 0 20px rgba(0, 212, 255, 0.5)); }
    100% { filter: drop-shadow(0 0 30px rgba(0, 212, 255, 0.8)); }
}

/* Fade In Up Animation */
@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(30px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* Orbital Rotation */
@keyframes rotate {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Pulse Animation */
@keyframes pulse {
    0%, 100% { 
        transform: translate(-50%, -50%) scale(1);
        opacity: 0.8;
    }
    50% { 
        transform: translate(-50%, -50%) scale(1.2);
        opacity: 0.4;
    }
}

/* Star Trail Animation */
@keyframes star-fade {
    0% {
        opacity: 1;
        transform: scale(0) rotate(0deg);
        filter: blur(0px);
    }
    50% {
        opacity: 0.8;
        filter: blur(0px);
    }
    100% {
        opacity: 0;
        transform: scale(2) rotate(360deg);
        filter: blur(3px);
    }
}

/* Float Animation */
@keyframes float {
    0% {
        transform: translateY(100vh) translateX(0);
        opacity: 0;
    }
    10% { opacity: 0.3; }
    90% { opacity: 0.3; }
    100% {
        transform: translateY(-100px) translateX(100px);
        opacity: 0;
    }
}

/* Icon Float Animation */
@keyframes icon-float {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-10px); }
}

/* Node Float Animation */
@keyframes float-node {
    0% {
        transform: translate(0, 0);
        opacity: 0;
    }
    10% {
        opacity: 0.6;
    }
    90% {
        opacity: 0.6;
    }
    100% {
        transform: translate(50px, -50px);
        opacity: 0;
    }
}

/* Shimmer Effect */
@keyframes shimmer {
    0% { left: -100%; }
    100% { left: 100%; }
}

/* Bounce Animation */
@keyframes bounce {
    0%, 100% { transform: translateY(0); }
    50% { transform: translateY(-20px); }
}

/* Spin Animation */
@keyframes spin {
    0% { transform: rotate(0deg); }
    100% { transform: rotate(360deg); }
}

/* Scale Pulse */
@keyframes scale-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

/* Fade In */
@keyframes fadeIn {
    from { opacity: 0; }
    to { opacity: 1; }
}

/* Slide In from Right */
@keyframes slideInRight {
    from {
        opacity: 0;
        transform: translateX(30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Slide In from Left */
@keyframes slideInLeft {
    from {
        opacity: 0;
        transform: translateX(-30px);
    }
    to {
        opacity: 1;
        transform: translateX(0);
    }
}

/* Cursor Effects */
.cursor-pointer {
    position: fixed;
    width: 8px;
    height: 8px;
    background: var(--white);
    border-radius: 50%;
    pointer-events: none;
    z-index: 999;
    box-shadow: 0 0 10px var(--white), 0 0 20px var(--accent);
    will-change: transform;
    top: 0;
    left: 0;
    transition: opacity var(--transition-normal);
}

.cursor-pointer.clicking {
    background: var(--accent);
    transition: background 0.05s ease;
}

.cursor-pointer.hovering {
    width: 20px;
    height: 20px;
    background: transparent;
    border: 2px solid var(--accent);
    box-shadow: 0 0 15px var(--accent), 0 0 30px var(--accent);
    transition: width var(--transition-fast), height var(--transition-fast), 
                border var(--transition-fast), background var(--transition-fast);
}

/* Star Trail */
.star-trail {
    position: fixed;
    pointer-events: none;
    z-index: 9999;
    width: 4px;
    height: 4px;
    background: #FFFFFF;
    border-radius: 50%;
    opacity: 0;
    will-change: transform, opacity;
    top: 0;
    left: 0;
}

.star-trail.active {
    animation: star-fade 1.5s ease-out forwards;
}

.star-trail::before {
    content: '✦';
    position: absolute;
    top: 50%;
    left: 50%;
    transform: translate(-50%, -50%);
    font-size: 12px;
    color: #00D4FF; 
    text-shadow: 0 0 10px #00D4FF; 
}

.star-trail:nth-child(odd)::before {
    content: '✧';
    color: var(--primary);
    text-shadow: 0 0 10px var(--primary);
}

.star-trail:nth-child(3n)::before {
    content: '✦';
    color: var(--purple);
    text-shadow: 0 0 10px var(--purple);
    font-size: 8px;
}

.star-trail:nth-child(4n)::before {
    content: '·';
    color: var(--white);
    text-shadow: 0 0 5px var(--white);
    font-size: 16px;
}

/* Cursor Glow */
.cursor-glow {
    position: fixed;
    width: 200px;
    height: 200px;
    pointer-events: none;
    z-index: var(--z-normal);
    opacity: 0.3;
    background: radial-gradient(circle, var(--accent) 0%, transparent 50%);
    border-radius: 50%;
    filter: blur(30px);
    will-change: transform;
    top: 0;
    left: 0;
    transition: opacity var(--transition-normal);
}

/* Scroll Fade In Animation */
.fade-in-section {
    opacity: 0;
    transform: translateY(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-section.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Variations for different directions */
.fade-in-left {
    opacity: 0;
    transform: translateX(-30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-left.visible {
    opacity: 1;
    transform: translateX(0);
}

.fade-in-right {
    opacity: 0;
    transform: translateX(30px);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-right.visible {
    opacity: 1;
    transform: translateX(0);
}

/* Scale fade in for cards */
.fade-in-scale {
    opacity: 0;
    transform: scale(0.9);
    transition: opacity 0.8s ease-out, transform 0.8s ease-out;
}

.fade-in-scale.visible {
    opacity: 1;
    transform: scale(1);
}

/* Stagger effect for multiple items */
.fade-in-stagger {
    opacity: 0;
    transform: translateY(20px);
    transition: opacity 0.6s ease-out, transform 0.6s ease-out;
}

.fade-in-stagger.visible {
    opacity: 1;
    transform: translateY(0);
}

/* Delay classes for staggered animations */
.delay-100 { transition-delay: 0.1s; }
.delay-200 { transition-delay: 0.2s; }
.delay-300 { transition-delay: 0.3s; }
.delay-400 { transition-delay: 0.4s; }
.delay-500 { transition-delay: 0.5s; }