Build a flat grid background (two overlapping linear-gradients as ruled lines), then give the parent a perspective and lay the grid itself back with transform: rotateX(). The lines now converge toward the horizon like a real floor.
Keep animating background-position in one direction (say, vertically) and the floor appears to scroll endlessly toward the camera. Fading the grid's far edge into the background colour with a gradient overlay sells the horizon disappearing into haze.
It's the same idea as tilting a real 3D mesh in three.js for a synthwave grid, but this version is a much lighter CSS trick — just one 2D background layer and a transform.
When to use
Use for synthwave/Y2K hero backgrounds and event pages. If placing text over it, add a dark overlay so the grid lines don't hurt legibility.