/* ============ ANALOG — Neural Storm sfondo animato (condiviso) ============ */
/* Lo sfondo vive SOTTO il contenuto: fisso, pieno schermo, z-index negativi.
   Il contenuto resta nel flusso normale e viene dipinto sopra, quindi testo
   e immagini restano davanti all'animazione. */

#neural-bg,
.neural-vignette,
.neural-grain,
.neural-veil {
  position: fixed;
  inset: 0;
  width: 100vw;
  height: 100vh;
  z-index: -1;
  pointer-events: none; /* lo sfondo non blocca click/selezione */
}

#neural-bg {
  overflow: hidden;
  background: #050412;
}
#neural-bg canvas {
  display: block;
  width: 100vw;
  height: 100vh;
}

/* Vignettatura ai bordi (come nell'originale) */
.neural-vignette {
  background: radial-gradient(
    120% 95% at 50% 42%,
    transparent 52%,
    rgba(1, 2, 8, 0.82) 100%
  );
}

/* Grana sottile per dare profondità */
.neural-grain {
  opacity: 0.07;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='140' height='140'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/></filter><rect width='140' height='140' filter='url(%23n)' opacity='0.55'/></svg>");
}

/* Velo scuro semi-trasparente per la LEGGIBILITÀ del testo sopra l'animazione.
   È l'ultimo layer: scurisce l'animazione ma lascia il testo nitido. */
.neural-veil {
  background: rgba(3, 6, 14, 0.58);
}

/* Il body non deve coprire lo sfondo col suo colore di fondo */
html,
body {
  background: #050412 !important;
}