* { margin: 0; padding: 0; box-sizing: border-box; }

#neuralBg {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 0;
  pointer-events: none;
  will-change: transform;
  transform: translateZ(0);
}

.bg-filter {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  opacity: 1;
  will-change: opacity;
  transform: translateZ(0);
}

.filter-3d {
  background-image:
    repeating-linear-gradient(
      0deg,
      transparent,
      transparent 29px,
      rgba(255, 255, 255, 0.04) 29px,
      rgba(255, 255, 255, 0.04) 30px
    ),
    repeating-linear-gradient(
      90deg,
      transparent,
      transparent 29px,
      rgba(255, 255, 255, 0.04) 29px,
      rgba(255, 255, 255, 0.04) 30px
    ),
    repeating-linear-gradient(
      45deg,
      transparent,
      transparent 42px,
      rgba(255, 255, 255, 0.03) 42px,
      rgba(255, 255, 255, 0.03) 43px
    ),
    repeating-linear-gradient(
      -45deg,
      transparent,
      transparent 42px,
      rgba(255, 255, 255, 0.03) 42px,
      rgba(255, 255, 255, 0.03) 43px
    );
  animation: meshMove 25s linear infinite;
}

@keyframes meshMove {
  0% { background-position: 0 0; }
  100% { background-position: 120px 80px; }
}

.vignette {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(
    ellipse at center,
    transparent 20%,
    rgba(0, 0, 0, 0.95) 100%
  );
  will-change: opacity;
  transform: translateZ(0);
}