| Age | Commit message (Collapse) | Author | Files | Lines |
|
|
|
the mockup
|
|
|
|
interactive
|
|
|
|
is the only allowed comment
|
|
Fonts (SIL Open Font License; licenses preserved alongside the files):
static/fonts/Literata-Regular.ttf body — 400 weight
static/fonts/Literata-Italic.ttf body — 400 italic
static/fonts/Literata-Medium.ttf body — 500 weight
static/fonts/Inter-Regular.ttf UI chrome — 400 weight
static/fonts/Inter-Medium.ttf UI chrome — 500 weight
static/fonts/Literata.OFL.txt
static/fonts/Inter.OFL.txt
Google Fonts' Inter distribution is optical-size-tiered — the 18pt
variants are tuned for the 13–18px range our UI uses, so they're
aliased as the base "Inter" family. Crimson Pro (memoir body) is not
yet sourced; its @font-face block and preload hint both drop out of
app.css / app.html for now and land when the memoir screen is built.
app.css swaps the woff2 references for ttf (format: 'truetype'), and
the @font-face comment now reflects the reality of what's on disk.
app.html preloads the ttf variants.
svelte.config.js drops the prerender handleHttpError shim that was
tolerating missing /fonts/ 404s — the files exist now, so the build
should fail loudly if any preloaded font goes missing.
Title-screen audio:
static/audio/title/piano-relaxing.mp3 — "Piano Relaxing"
by atlasaudio,
Pixabay Content
License
static/audio/title/piano-relaxing.license.txt — Pixabay license
certificate
Note on design: docs/17-first-hour.md said "no menu music" on the
title screen. Running with this addition per the director's current
direction (the design docs reflect an earlier stage of thinking).
|
|
The single source of truth for colors, fonts, spacing, type scale,
line height, and transition timing — applied as CSS custom properties
on :root per rules/01-code-style.md. Component styles reference these
via var(), never hex literals.
body.crisis-mode swaps --color-bg, --color-text, and --color-accent
to the tighter palette from docs/22-crisis-mode.md. The transition
runs at --transition-ceremonial so the shift is felt rather than
flashed.
Global reset: no-select everywhere (the reading surface is not a
document), .selectable escape hatch for input fields, smooth scroll,
minimal scrollbars hidden on coarse pointers, prefers-reduced-motion
respected. The oncontextmenu handler in app/app.html suppresses
right-click.
Font-face declarations point at static/fonts/ with font-display: swap
and relative URLs so they resolve correctly under the GitHub Pages
base path. Font files land separately.
|
|
SvelteKit 2 with adapter-static, Svelte 5, TypeScript 6 strict mode.
Design decisions follow ARCHITECTURE.md §2 and technical/01-file-structure.md:
no src/ wrapper, implementation folders sit at the project root alongside
the design corpus in .claude/, and each top-level folder is its own import
alias (engine/, events/, flow/, scene/, etc.) configured in svelte.config.js.
Framework configuration routes SvelteKit away from the default src/ layout:
templates live in app/, hooks in hooks/, routes in routes/, assets in
static/. The favicon is a quiet amber dot on #13100E; .nojekyll keeps
GitHub Pages from stripping the _app/ build folder.
Deploy target is GitHub Pages. adapter-static uses fallback: '404.html'
(the GH Pages SPA convention) and kit.paths.base reads BASE_PATH from
the environment so dev serves at the root while the deploy workflow
builds under /<repo>/.
Prerender tolerates missing /fonts/ files so the build doesn't block
until font files land — see static/css/app.css @font-face block.
Licensed MIT.
|