# Colophon
How this site grows
Static HTML, hand-written CSS, and a few small modules. No framework, no trackers, no requests to anyone else's servers.
01 Stack
Small on purpose
- Generator
- Python and Jinja, 900 lines, writing plain HTML files
- Type
- Manrope and Fira Code, self-hosted variable fonts (81 KB)
- CSS
- 15.9 KB compressed, organised in cascade layers
- JavaScript
- 6.2 KB core, plus 6.7 KB loaded only where needed
- Requests to third parties
- None. A strict Content Security Policy enforces it.
- Cookies
- None
- Works without JavaScript
- Yes. Navigation, content, filters, and the demo all render server-side.
- Build
d28b7ac, Oct 31, 2026
02 Platform
What your browser brings
Every feature below is a progressive enhancement. Where one is missing, the page falls back quietly. This list is checked live, in your browser.
Turn on JavaScript to run the checks.
- Cross-document view transitionsPages morph into each other, with direction-aware slides. Not checked
- View transition typesForward, backward, and deeper navigations animate differently. Not checked
- Scroll-driven animationsThe manifesto, the project rail, and reading progress follow your scroll. Not checked
- Anchor positioningThe navigation pill and copy hints are tethered to their targets. Not checked
- Popover APIFootnotes, the menu drawer, and hints live in the top layer. Not checked
- @starting-styleDialogs and popovers animate in from their closed state. Not checked
- Discrete transitionsElements animate out before they are hidden. Not checked
- Scroll-state queriesThe header condenses once the page scrolls. Not checked
- Scroll target groupsTables of contents highlight the section you are reading. Not checked
- Custom Highlight APISearch matches are highlighted without touching the DOM. Not checked
- Speculation rulesLikely next pages are prerendered on hover. Not checked
- Registered custom propertiesColours, angles, and weights interpolate smoothly. Not checked
- OKLCH colourThe aurora palette is defined in a perceptual colour space. Not checked
- Relational :has()The phone demo and tag filter run without JavaScript. Not checked
- Exclusive accordionsQuestions open one at a time. Not checked
- ::details-contentAccordions animate their height. Not checked
- hidden=until-foundCollapsed releases are still found by find-in-page. Not checked
- Text box trimDisplay type sits exactly on its grid. Not checked
- field-sizingThe message box grows as you type. Not checked
- sibling-index()Staggered effects without per-element styles. Not checked
- Trusted TypesThe page refuses to turn strings into code. Not checked
- WebGL2The home page terrain is drawn on the GPU. Not checked