/* ============================================
   404CTO V2 - Animated Grid Background
   ============================================ */

.grid-background {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    z-index: var(--z-bg);
    overflow: hidden;
}

/* ── Grid Lines ── */
.grid-background::before {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background-image:
        linear-gradient(var(--border-subtle) 1px, transparent 1px),
        linear-gradient(90deg, var(--border-subtle) 1px, transparent 1px);
    background-size: 60px 60px;
    animation: gridPulse 4s ease-in-out infinite;
}

/* ── Gradient Overlay on Grid ── */
.grid-background::after {
    content: '';
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    background:
        radial-gradient(ellipse at 20% 50%, rgba(0, 255, 136, 0.03) 0%, transparent 50%),
        radial-gradient(ellipse at 80% 20%, rgba(0, 212, 255, 0.02) 0%, transparent 50%),
        radial-gradient(ellipse at 50% 80%, rgba(0, 255, 136, 0.02) 0%, transparent 50%);
}

/* ── Floating Glow Orbs ── */
.grid-orb {
    position: fixed;
    border-radius: 50%;
    filter: blur(80px);
    opacity: 0.15;
    z-index: var(--z-bg);
    pointer-events: none;
}

.grid-orb-1 {
    width: 400px;
    height: 400px;
    background: var(--green);
    top: 10%;
    left: -5%;
    animation: orbFloat1 20s ease-in-out infinite;
}

.grid-orb-2 {
    width: 300px;
    height: 300px;
    background: var(--cyan);
    top: 60%;
    right: -5%;
    animation: orbFloat2 25s ease-in-out infinite;
}

.grid-orb-3 {
    width: 250px;
    height: 250px;
    background: var(--green);
    bottom: 10%;
    left: 30%;
    animation: orbFloat3 18s ease-in-out infinite;
}

/* ── Keyframes ── */
@keyframes gridPulse {

    0%,
    100% {
        opacity: 0.4;
    }

    50% {
        opacity: 0.6;
    }
}

@keyframes orbFloat1 {

    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    25% {
        transform: translate(30px, 50px) scale(1.1);
    }

    50% {
        transform: translate(-20px, 30px) scale(0.95);
    }

    75% {
        transform: translate(40px, -20px) scale(1.05);
    }
}

@keyframes orbFloat2 {

    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    33% {
        transform: translate(-40px, -30px) scale(1.1);
    }

    66% {
        transform: translate(20px, 40px) scale(0.9);
    }
}

@keyframes orbFloat3 {

    0%,
    100% {
        transform: translate(0, 0) scale(1);
    }

    50% {
        transform: translate(50px, -40px) scale(1.15);
    }
}