Version. v0.1
Date. 2026-06-26
Type. Standing note (development principle). Operator-facing; governs every frontend change request from here forward.
Repository home. loomworks-record/standing-notes/
This records a settled principle for the Loomworks frontend: no hardcoded CSS values. Every visual value a component uses — a color, a font, a spacing, a corner radius — comes from a named token, never written directly into the component. The tokens live in one place (tokens.css); components refer to them by name.
Why this matters beyond tidiness. The goal is a product line of many custom Companions, each with its own look — and eventually a theme editor: a surface where someone tunes a Companion's appearance on a big screen and watches the interface re-skin live. That feature is only possible if every visual value is a token. A single hardcoded value is a pixel the editor can't reach — it would stay fixed while everything around it changes. So "no hardcoded CSS" is not hygiene for its own sake; it is the precondition that makes a live theme editor buildable at all.
What is decided now, and what is deferred. Color is tokenized repo-wide, now — it is small, regular, and the customization that matters most (brands care about color first). Typography and spacing are known debt, deferred: the app today has 16 arbitrary font sizes with no scale, and fixing that is a design exercise (collapse to a clean scale), not a mechanical sweep — it waits for a later, deliberate pass.
rgba(), no literal sizes in inline styles, no brand color or font written directly. Components consume tokens (via the framework's token classes); the values live in tokens.css.src/styles/tokens.css — the sole legitimate home for raw color (and font/spacing) values. This is where colors are defined; here a literal hex is correct.src/app/globals.css — the token-wiring home (binds tokens into the framework). No raw color of its own..tsx), where literal CSS is forbidden.TopBar and adds the two off-palette tokens the repo needs (--color-vellum-soft, a gold token). CR-2026-126 (repo-wide color sweep) tokenizes every remaining color in src/, including white and shadow as swappable tokens, leaving zero raw color outside tokens.css.
A static-scan test (the established vocabulary-wall pattern) over component files fails the build on raw hex / rgba() and on hardcoded brand literals outside the string registry. It reliably catches what a line-scan can catch (literal color, brand strings); finer rules (every user-facing string registered; no hardcoded spacing once the scale exists) remain review-enforced where a scan would be over-broad. The guard's scope grows with the work: scoped to new files in CR-2026-125, repo-wide for color in CR-2026-126.
DUNIN7 — Done In Seven LLC — Miami, Florida Standing note — No hardcoded CSS; the token set is the tunable surface — v0.1 — 2026-06-26