feat(viz): bring the memory web assets onto the published brand - #210
Merged
Conversation
viz.html and workbench.html had drifted into a look of their own. They now use the same tokens as the site (ferrosa-docs docs/site.css), so the product and the marketing surface read as one system. ## The monogram was an invented product element Both assets rendered "Fm" with atomic number 100 — Fermium, invented for Ferrosa Memory — in the header mark and the favicon. The brand rules forbid exactly this, twice: the Fe monogram is locked to the company mark, "products do not get element tiles of their own", and under Don't, "swap element symbol or atomic number for products". Both now carry the company Fe/26 mark with the brand gradient that ends in Blued Steel, matching logo.svg. ## Tokens Names now match the site: --primary is Core Blue and --accent is Electric Cyan (the assets had --accent holding Core Blue and --accent-warm holding cyan). Invented tokens --accent-cool and --accent-purple are retired onto --primary and --steel. Blued Steel, Pale Cyan and the border/hairline scale were missing entirely and are now present. ## The graph palette extends the brand rather than inventing beside it 31 ad-hoc hues encoded entity and edge types — hot pink #ff7eb3, coral #ff6b6b, violet #c97eff, sky #87ceeb, and 20 more with no relationship to the brand. They are replaced by a categorical ramp built from the cool family (Electric Cyan -> Core Blue -> Blued Steel), with the semantic colours reserved for MEANING rather than spent on categories. Edges sit closer to steel than nodes do, so relationships recede behind the entities they connect instead of competing with them — which is also what brand guidance means by keeping Blued Steel to fills and strokes. The colours resolve from CSS tokens at render time instead of being duplicated in JS, so the graph follows the theme instead of painting dark-ground hues onto a light ground. ## Light theme Neither asset had one. Both now support an explicit data-theme and the host's preference. Light values are DARKENED counterparts rather than the dark values reused, the same way the site handles --accent and --primary; a hue picked for #05070c does not survive on #f4f8fd. Composite values became tokens for the reason the site documents: an rgba() or gradient literal cannot flip, because its alpha sits over a different ground in each theme. That covers the chrome gradients, menus, inputs, films and shadows — including shadows that were pure black, which the brand says never to use, and several neutral greys that were not brand colours at all. ## Other conformance Focus ring is 3px Electric Cyan with an offset, not a 1px hairline. All 41 border-radius declarations sit on the 4/8/12/16 scale (6px alone appeared 11 times). Pure-white selection rings and on-accent text became --text and --on-primary, which flip. ## Guard scripts/check-viz-theme.py fails on three things: the two light blocks drifting, a dark token with no light counterpart, and a colour literal painted in a rule. The first is not hypothetical — while writing this, --film was added to the explicit block and the media-query copy silently kept the old palette. Wired into `make test-unit`. The workbench branding test asserted the old state, including the Fm mark. It now asserts the brand contract and the ABSENCE of the invented tile. 109 http tests pass; ferrosa-memory-core builds; check-viz-theme clean.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
viz.htmlandworkbench.htmlhad drifted into a look of their own. They now use the same tokens as the site (ferrosa-docs docs/site.css), so the product and the marketing surface read as one system.The monogram was an invented product element
Both assets rendered
Fmwith atomic number 100 — Fermium, invented for "Ferrosa Memory" — in the header mark and the favicon. The brand rules forbid this twice:Both now carry the company Fe / 26 mark with the brand gradient ending in Blued Steel, matching
logo.svg.Tokens
Names now match the site:
--primaryis Core Blue and--accentis Electric Cyan. The assets had--accentholding Core Blue and--accent-warmholding cyan. Invented tokens--accent-cooland--accent-purpleare retired onto--primaryand--steel. Blued Steel, Pale Cyan and the border/hairline scale were missing entirely.The graph palette extends the brand rather than inventing beside it
31 ad-hoc hues encoded entity and edge types — hot pink
#ff7eb3, coral#ff6b6b, violet#c97eff, sky#87ceeb, and 20 more with no relationship to the brand. They are replaced by a categorical ramp built from the cool family (Electric Cyan → Core Blue → Blued Steel), with the semantic colours reserved for meaning rather than spent on categories.Edges sit closer to steel than nodes do, so relationships recede behind the entities they connect instead of competing with them — which is also what brand guidance means by keeping Blued Steel to fills and strokes.
Colours resolve from CSS tokens at render time instead of being duplicated in JS, so the graph follows the theme rather than painting dark-ground hues onto a light ground.
Light theme
Neither asset had one. Both now support an explicit
data-themeand the host's preference. Light values are darkened counterparts, not the dark values reused — a hue picked for#05070cdoes not survive on#f4f8fd, which is why the site darkens--accentto#0e7ea3rather than reusing it.Composite values became tokens for the reason the site documents: an
rgba()or gradient literal cannot flip, because its alpha sits over a different ground in each theme. That covers chrome gradients, menus, inputs, films and shadows — including shadows that were pure black, which the brand says never to use, and several neutral greys that were not brand colours at all.Other conformance
6pxalone appeared 11 times)--text/--on-primary, which flipGuard
scripts/check-viz-theme.pyfails on three things: the two light blocks drifting, a dark token with no light counterpart, and a colour literal painted in a rule.The first is not hypothetical — while writing this,
--filmwas added to the explicit block and theprefers-color-schemecopy silently kept the old palette. That is invisible until someone views the page on a light-preference host with no saved choice. CSS cannot alias one block from the other, so the guard is the only thing keeping them honest. Wired intomake test-unit.The workbench branding test asserted the old state, including the
Fmmark. It now asserts the brand contract and the absence of the invented tile.Verification
Both assets rendered in both themes via headless Chrome, and exercised against a real 14,404-node / 54,510-edge graph — see ferrosadb/ferrosa-docs#25, which reshoots the homepage image from this build.
109 http tests pass;
ferrosa-memory-corebuilds;check-viz-themeclean;cargo fmt --checkclean.Not merging this myself: standing rule is no auto-merge on public repos.