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

html, body {
   width: 100%;
   height: 100%;
   overflow: hidden;
   background: #0a0e1a;
   touch-action: none;
   -webkit-user-select: none;
   user-select: none;
}

#surface {
   display: block;
   width: 100%;
   height: 100%;
}

#grain-overlay {
   position: fixed;
   top: 0;
   left: 0;
   width: 100%;
   height: 100%;
   pointer-events: none;
   opacity: 0.15;
   background-image: url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="256" height="256"><filter id="n"><feTurbulence type="fractalNoise" baseFrequency="0.85" numOctaves="4" stitchTiles="stitch"/><feColorMatrix type="saturate" values="0"/></filter><rect width="100%" height="100%" filter="url(%23n)" opacity="0.6"/></svg>');
   background-size: 256px 256px;
   mix-blend-mode: overlay;
}
