Video · 20 sec
The dot field reacting to the cursor
Decisions
- No framework and no bundler. The index page opens from disk and looks identical in production.
- Pure grayscale. Hierarchy comes from type, spacing, and dot density, not color.
- Dots respect
prefers-reduced-motionand the dark theme redraws from the same CSS variables. - Sub-pages share two small stylesheets and a twelve-line script. Media placeholders are one component reused everywhere.
What it taught me
Constraints produce a look. Removing color forced every other decision to carry weight, and the result reads as deliberate instead of templated.