/* Neon glow, animated background grid */
body::before {
    content: '';
    position: fixed;
    inset: 0;
    z-index: -1;
    background-image: linear-gradient(90deg, rgba(0, 255, 255, 0.03) 1px, transparent 1px), linear-gradient(180deg, rgba(255, 23, 68, 0.02) 1px, transparent 1px);
    background-size: 60px 60px, 60px 60px;
    animation: moveGrid 20s linear infinite;
    opacity: 0.6;
}

@keyframes moveGrid {
    from {
        background-position: 0 0, 0 0
    }

    to {
        background-position: 600px 600px, -600px -600px
    }
}

.title {
    animation: neonGlow 2s ease-in-out infinite alternate
}

@keyframes neonGlow {
    from {
        text-shadow: 0 0 6px rgba(0, 255, 255, 0.2)
    }

    to {
        text-shadow: 0 0 30px rgba(0, 255, 255, 0.9)
    }
}

.download-button {
    position: relative;
    overflow: visible
}

.download-button:after {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: 12px;
    box-shadow: 0 0 40px rgba(0, 255, 255, 0.08);
    opacity: 0;
    transition: opacity .25s
}

.download-button:hover:after {
    opacity: 1
}