/* ===== RESET ===== */
*{
    margin:0;
    padding:0;
    box-sizing:border-box;
    font-family: "Segoe UI", system-ui, sans-serif;
}

/* ===== BASE ===== */
body{
    height:100vh;
    background:#0a0f1a;
    color:#9fd6ff;
    overflow:hidden;
    display:flex;
    align-items:center;
    justify-content:center;
}

/* ===== GRID FUTURISTA ===== */
body::before{
    content:"";
    position:absolute;
    inset:0;
    background:
        linear-gradient(rgba(0,140,255,.05) 1px, transparent 1px),
        linear-gradient(90deg, rgba(0,140,255,.05) 1px, transparent 1px);
    background-size:40px 40px;
    animation:gridMove 20s linear infinite;
}

@keyframes gridMove{
    from{transform:translateY(0)}
    to{transform:translateY(40px)}
}

/* ===== CONTENEDOR ===== */
.container{
    text-align:center;
    z-index:2;
}

/* ===== 404 GLOW ===== */
.code{
    font-size:120px;
    font-weight:800;
    letter-spacing:8px;
    color:#4fc3ff;
    text-shadow:
        0 0 10px #1e90ff,
        0 0 30px #1e90ff,
        0 0 60px #0b4d9b;
    animation:glow 2s ease-in-out infinite alternate;
}

@keyframes glow{
    from{opacity:.7}
    to{opacity:1}
}

.title{
    font-size:28px;
    margin-top:10px;
    color:#c7ecff;
}

.subtitle{
    margin-top:10px;
    color:#7aaed6;
    font-size:14px;
    letter-spacing:1px;
}

/* ===== BOTÓN ===== */
.btn{
    margin-top:40px;
    padding:12px 28px;
    border:1px solid #1e90ff;
    background:transparent;
    color:#9fd6ff;
    cursor:pointer;
    border-radius:6px;
    transition:.25s;
}

.btn:hover{
    background:#1e90ff;
    color:#000;
    box-shadow:0 0 15px #1e90ff;
}

/* ===== EFECTO GLITCH ===== */
.glitch{
    position:relative;
}

.glitch::before,
.glitch::after{
    content:attr(data-text);
    position:absolute;
    left:0;
    width:100%;
    overflow:hidden;
}

.glitch::before{
    animation:glitchTop 2s infinite linear alternate-reverse;
    color:#00e5ff;
}

.glitch::after{
    animation:glitchBot 2s infinite linear alternate-reverse;
    color:#2979ff;
}

@keyframes glitchTop{
    0%{clip-path:inset(0 0 85% 0); transform:translate(-2px,-2px);}
    50%{clip-path:inset(0 0 40% 0); transform:translate(2px,2px);}
    100%{clip-path:inset(0 0 85% 0);}
}

@keyframes glitchBot{
    0%{clip-path:inset(80% 0 0 0); transform:translate(2px,2px);}
    50%{clip-path:inset(40% 0 0 0); transform:translate(-2px,-2px);}
    100%{clip-path:inset(80% 0 0 0);}
}

/* ===== PARTÍCULAS ===== */
canvas{
    position:absolute;
    inset:0;
    z-index:1;
}