This site, running on a Commodore 64. Not a CSS pastiche — the page draws a 384×272 framebuffer at real VIC-II resolution and pushes it through a WebGL CRT shader, so what you're looking at is a rendered picture tube rather than styled HTML.
The machine
Text is written through a cursor that wraps at column 40 and scrolls the display at row 25, exactly like printing through the KERNAL. Every character cell carries its own colour, so POKE 646,7 recolours new output and leaves what's already on screen alone. The glyphs are the 8×8 PETSCII uppercase/graphics set, and the palette is Pepto's measured PAL values for the VIC-II's 16 colours.
The picture tube
The shader models the composite signal path in order: barrel the sampling coordinates, bleed chroma sideways in YIQ — this is why a real C64 smears colour into neighbouring cells over composite — weight source rows by a gaussian beam profile, tint by an aperture grille in device pixels, then add halation and vignette. Scanlines and mask fade out automatically when there aren't enough device pixels to draw them without moiré, and the whole thing falls back to a nearest-neighbour blit if WebGL is unavailable.
It's a real prompt
DIR lists the projects as a disk directory. OPEN 1 through OPEN 4 loads one, or LOAD"COLLINEARITY",8,1 if you'd rather type it out.
CONTACT pulls up email and social links, SOUND ON turns on key clicks, SYS 64738 cold-resets the machine, and the POKE commands do what you'd expect to the border, screen, and text colours.
F1 F3 F5 F7 jump between pages, the arrow keys move the reverse-video selection, and RETURN runs it. Everything on screen is also clickable — pointer coordinates get pushed through the same barrel distortion as the shader, so clicks land on the character you can actually see under the glass.
Notes
Built with React and Vite, no game or emulator libraries — the font, screen RAM, colour RAM, cursor, and shader are all hand-rolled. The views were checked while building by driving the machine on a synthetic clock with no browser at all and dumping raw frames.
