.noise-grain {
  position: relative;
  background-color: #f8fafc;
  min-height: 100%;
}

.noise-grain::after {
  content: "";
  position: absolute;
  inset: 0;
  pointer-events: none;
  opacity: 0.18;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.6 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
  background-size: 160px 160px;
}

.noise-grain.noise-grain-dark {
  background-color: #0f172a;
}
.noise-grain.noise-grain-dark::after {
  mix-blend-mode: screen;
  opacity: 0.12;
}
