The runedeck website. Static HTML, no build system, no external requests: every page is self-contained with system font stacks and vendored assets only.
public/: everything the edge serves.wrangler.jsoncpointsassets.directoryhere, so repository files outside it never reach a browser.index.html,start/,trust/,apps/runeseer/,apps/runewright/,404.html: the site.guide/: the field guide, with its ownguide.cssandrail.js.designs/: the archived design explorations, kept with the old palette indesigns/tokens.cssand markednoindex.shared/tokens.css,shared/fonts.css,shared/chrome.css,shared/code.css: the palette, the vendored fonts, the header and buttons, and the code windows with their syntax colours. Every page loads them, the guide included.shared/site.css: the layout for every page outside the guide and the archive.shared/site.jsadds the copy button to shell blocks.shared/fonts/: JetBrains Mono, IBM Plex Sans and Serif, and Noto Sans Runic, each under the SIL OFL 1.1 with its licence file.brand/: generated images. Run the script below to produce them._headers,_redirects: security headers, the www to apex redirect, and thefirst-contacttostartredirect.
scripts/brand-images.py: writes the rune row, the slab WebPs, the header mark, the favicons, andog.pngintopublic/brand/. It reads the originals from a checkout of the privaterunedeck/brandrepository, abrand/directory beside this one by default. Needs Pillow.scripts/highlight-code.py: writes the syntax spans into every<code class="language-*">block underpublic/. Run it after you edit a code block. With--checkit exits 1 when a block is stale.
uv run --with pillow python -I scripts/brand-images.py ../brand
python3 -m http.server 8118 --directory public
open http://127.0.0.1:8118/_headers and _redirects apply only at the edge. Use wrangler dev to check them.
EUPL-1.2, matching the rest of runedeck.