/* Ambient background glow pulse */
@keyframes pulseGlow {
    0%, 100% { transform: translate(-50%, -50%) scale(0.9); opacity: 0.5; }
    50%       { transform: translate(-50%, -50%) scale(1.2); opacity: 1; }
}

.glow-bg {
    animation: pulseGlow var(--duration-ambient) infinite ease-in-out;
}

/* Card entrance */
@keyframes fadeInScale {
    0%   { opacity: 0; transform: scale(0.82) translateY(36px); }
    100% { opacity: 1; transform: scale(1) translateY(0); }
}

.card {
    animation: fadeInScale var(--duration-slow) var(--ease-spring) forwards;
}

/* Projects staggered drop-in */
@keyframes fallIn {
    0%   { opacity: 0; transform: translateY(-28px); }
    100% { opacity: 1; transform: translateY(0); }
}

.projects-title {
    animation: fallIn var(--duration-slow) var(--ease-spring) forwards;
    animation-delay: 0.75s;
}

.project-card {
    animation: fallIn var(--duration-slow) var(--ease-spring) forwards;
}

/* Divider pulse */
@keyframes dividerPulse {
    0%, 100% { opacity: 0.25; box-shadow: 0 0 3px rgba(139, 92, 246, 0.4); }
    50%       { opacity: 1;    box-shadow: 0 0 12px rgba(139, 92, 246, 0.8); }
}

.divider {
    animation: dividerPulse var(--duration-ambient) infinite ease-in-out;
}

/* Gateway input error shake */
@keyframes pocShake {
    0%, 100% { transform: translateX(0); }
    20%       { transform: translateX(-6px); }
    40%       { transform: translateX(6px); }
    60%       { transform: translateX(-4px); }
    80%       { transform: translateX(4px); }
}

.poc-input.poc-error {
    animation: pocShake 0.45s ease;
}

/* Respect reduced motion preference */
@media (prefers-reduced-motion: reduce) {
    .glow-bg,
    .divider,
    .card,
    .projects-title,
    .project-card {
        animation: none;
    }

    .divider { opacity: 1; }

    .card { opacity: 1; }
    .projects-title { opacity: 1; }
    .project-card { opacity: 1; }
}
