Each script rebuilds its output byte-for-byte from the data in data/. tokens.css is shared by every page, which is the mechanism that keeps them from drifting.
prep_data.pyJoins tree tip order, divergence and taxonomy into figures/moat_data.json, asserting all 156 tips resolve.2 KB
wiki_lookup.pyResolves every taxon against the Wikipedia API, recording exact matches and parent-species fallbacks separately.4 KB
build_moat.pyRenders the Moat's SVG server-side, so the figure needs no build step and no JavaScript to draw itself.10 KB
build_index.pyBuilds index.html, taking its headline numbers from moat_data.json so the page cannot go stale against the data.2 KB
build_pages.pyBuilds the four directory pages, including this one, from the manifests and data/citations.csv.14 KB
validate_palette.pyChecks the palette's contrast and separation in both light and dark, so a colour cannot be changed by eye alone.6 KB
tokens.cssThe design tokens. Inlined into every page at build time, which is why the pages cannot drift apart.6 KB
moat_template.htmlThe Moat's shell: layout, interaction and the tooltip.16 KB