/* ==========================================================================
   MOTION & AMBIENT ANIMATIONS
   ========================================================================== */

@media (prefers-reduced-motion: no-preference) {
    .hero__availability-dot {
        animation: availability-pulse 2.4s ease-in-out infinite;
    }

    .hero__orb {
        animation: orb-drift 18s ease-in-out infinite;
    }

    .hero__orb--2 {
        animation-duration: 22s;
        animation-delay: -6s;
    }

    .text-accent {
        background: linear-gradient(
            120deg,
            var(--accent) 0%,
            color-mix(in srgb, var(--accent) 70%, #a5b4fc) 50%,
            var(--accent) 100%
        );
        background-size: 200% auto;
        -webkit-background-clip: text;
        background-clip: text;
        color: transparent;
        animation: accent-shimmer 6s ease-in-out infinite;
    }

    .proj-card__link i {
        transition: transform 0.25s cubic-bezier(0.16, 1, 0.3, 1);
    }

    .proj-card__link:hover i {
        transform: translateX(4px);
    }

    .site-header-shell:not(.is-scrolled) .site-header {
        animation: header-enter 0.55s cubic-bezier(0.16, 1, 0.3, 1) both;
    }

    .scroll-hidden {
        opacity: 0;
        transform: translateY(28px);
        will-change: opacity, transform;
    }

    .scroll-hidden.scroll-from-left {
        transform: translateX(-24px);
    }

    .scroll-hidden.scroll-scale {
        transform: translateY(20px) scale(0.97);
    }
}

.hero__ambient {
    position: absolute;
    inset: -10% 0 auto;
    height: 70%;
    pointer-events: none;
    overflow: hidden;
    z-index: 0;
}

.hero {
    position: relative;
}

.hero__grid {
    position: relative;
    z-index: 1;
}

.hero__orb {
    position: absolute;
    border-radius: 50%;
    filter: blur(60px);
    opacity: 0.35;
}

.hero__orb--1 {
    width: min(420px, 55vw);
    height: min(420px, 55vw);
    top: -5%;
    right: 5%;
    background: radial-gradient(circle, rgba(99, 102, 241, 0.45) 0%, transparent 70%);
}

.hero__orb--2 {
    width: min(320px, 45vw);
    height: min(320px, 45vw);
    bottom: 10%;
    left: -5%;
    background: radial-gradient(circle, rgba(79, 70, 229, 0.25) 0%, transparent 70%);
}

@keyframes availability-pulse {
    0%, 100% {
        box-shadow: 0 0 0 3px rgba(34, 197, 94, 0.25);
        transform: scale(1);
    }
    50% {
        box-shadow: 0 0 0 6px rgba(34, 197, 94, 0.12);
        transform: scale(1.08);
    }
}

@keyframes orb-drift {
    0%, 100% {
        transform: translate(0, 0) scale(1);
    }
    33% {
        transform: translate(12px, -18px) scale(1.05);
    }
    66% {
        transform: translate(-8px, 10px) scale(0.98);
    }
}

@keyframes accent-shimmer {
    0%, 100% {
        background-position: 0% center;
    }
    50% {
        background-position: 100% center;
    }
}

@keyframes header-enter {
    from {
        opacity: 0;
        transform: translateY(-10px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

@media (prefers-reduced-motion: reduce) {
    .site-header {
        animation: none;
    }
}
