Every building, every window, every blinking antenna, the plane crossing the sky — plain HTML and CSS. Scroll down for the construction notes.
Buildings are <div>s with set widths and heights. Each layer (back, mid, front) sits at a different bottom offset with decreasing opacity and blur to fake atmospheric depth.
Windows are layered radial-gradient background patterns — the dots-on-a-grid trick. Two offset layers per building give variation without templating each window manually.
Flicker is @keyframes at different tempos per building class. Antennae are CSS pseudo-elements with a blink on the red safety light at the top.
Clouds are blurred ellipses drifting horizontally at three different durations for parallax. The plane is a 3px red dot with a ghosted motion trail, keyframed to descend across the screen over 22 seconds.
The moon is a radial gradient with two pseudo-element craters and a soft outer glow. The sky is a stacked set of gradients faking the red-ish city-light haze on the horizon.
No bitmap images. No SVG. No canvas. Just the browser, rendering carefully-composed boxes.