#tv-sneeuw-root {
  position: fixed;
  inset: 0;
  pointer-events: none;
  z-index: 2147483000; /* bovenop alles */
  display: none;
}

#tv-sneeuw-root.tv-on {
  display: block;
}

#tv-noise-canvas {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.35;
  mix-blend-mode: screen;
  filter: contrast(125%) brightness(115%);
}

#tv-testbeeld {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  opacity: 0.38;
  filter: blur(10px) saturate(120%);
  transform: scale(1.01);
}

.tv-scanlines::before {
  content: "";
  position: absolute;
  inset: 0;
  background: repeating-linear-gradient(
    to bottom,
    rgba(0,0,0,0.0),
    rgba(0,0,0,0.0) 2px,
    rgba(0,0,0,0.10) 3px
  );
  opacity: 0.35;
}

@keyframes tv-jitter {
  0%   { transform: translate(0,0); }
  20%  { transform: translate(1px,-1px); }
  40%  { transform: translate(-2px,1px); }
  60%  { transform: translate(2px,0px); }
  80%  { transform: translate(-1px,2px); }
  100% { transform: translate(0,0); }
}

#tv-sneeuw-root.tv-glitch {
  animation: tv-jitter 120ms steps(2, end) infinite;
}
