The launch manifest for a spaceport, on the week two vehicles hold overlapping windows on the same downrange corridor and the range can only clear one.
The fifth and last brand specimen, and the one that forced the generator's final mechanism.
Where the style comes from
Transcribed from awesome-design-md/design-md/spacex/DESIGN.md, read 2026-09-16, and emitted by:
python3 tools/brand_tokens.py spacex-brand > systems/spacex-brand/tokens.css
python3 tools/brand_tokens.py spacex-brand --check
python3 tools/brand_tokens.py --self-test
| Decision | Transcribed |
|---|---|
| Ramp | #ffffff #f0f0fa #e0e0e8 #5a5a5f #3a3a3f #0a0a0a #000000 |
| Chromatic | none |
| Type | 80 · 60 · 48 · 16 · 13 · 12 px |
| Tracking | positive at every size — 1.6px at 80, 1.17px at 13, 0.32px at 16 |
| Weights | 400 and 700 |
| Radii | none. Nothing that is not a circle carries one |
| Depth | none. A near-black panel on black is the only lift |
| Modes | night first, with a full daylight palette beside it |
| Motion | not published |
It is the only monochrome brand in this family, and that is not a simplification of the reference — it is the reference. Its primary is #000000, its link on dark is #ffffff, and the single chromatic value anywhere in the file is the browser's own default link blue, listed as a fallback. What marks a primary action here is an INVERSION rather than a hue.
That broke an assumption in the generator, which had treated the accent as one value shared by every theme. accent, on-accent and accent-text are now pinned per theme, and — the part that actually failed — the accent tint is solved from the pinned value rather than the declared one, because mixing black into a black canvas produces no visible wash and the solver correctly raised rather than returning something invisible.
The finding worth carrying. This palette has no legible mid-grey on dark. Its published ink-mute #5a5a5f reads 2.91:1 against the near-black panel — under what even a control outline owes, let alone body text — so the tertiary text tier on the night setting is the pale hairline colour instead. The dark page therefore has two text weights where the light one has three, and the design-notes panel says so.
The direction
- Archetype. Index.
- Data stance. Tile-first.
- Density. Wide, display-led.
- The one bold decision. The conflict is marked by inverting the tile, not by colouring it. With no red, no amber and nothing else available, the loudest move this language has is to swap the ink and the ground — so the contested missions and the band explaining them are all inverted, and the word "Contested" is in each tile as well, so the inversion is a second signal rather than the only one.
The second state
The corridor conflict. An index's promise is that its entries are independent; this is the case where two of them are not, and neither is wrong. Both windows are valid, both vehicles are ready, and the range clears one vehicle at a time on that heading — so the page states the overlap, the next clear slot and the hour by which somebody owes a decision, rather than showing two rows that each look fine.
The pair it makes with ferrari-brand
Both references set an 80px display step. Ferrari closes the tracking to −0.028em; this one opens it to +0.02em and sets the whole thing in capitals. Same size, opposite decision, and the two pages do not look remotely alike because of it. It is the clearest thing this family says about what a type decision is actually worth.
Deviations from CONTRACT.md
- §2, the typefaces. D-DIN is proprietary. Saira Condensed and Saira are substituted — a squarish industrial grotesque that holds at 700 in capitals with the tracking opened.
- §5, motion. The reference publishes no duration or easing. The two rungs in
tokens.cssare the portfolio's, and the emitted file says so.
Findings kept, with reasons
craft_lint·disabled-unstyled— styled by.btn[disabled], witharia-describedbynaming what would make it live; the rule looks for utility-class variants.craft_lint·hover-no-transitionon.btn-ghost— it always rides with.btn, which declares the transition, and the rule reads one class at a time.audit_page·apple-touch-icon-missing,manifest-missing— portfolio-wide.copy_lint·name-drift— seecopy-lint.ignore.
What the gates changed
craft_lint's no-press-state caught a mission tile that lit up on hover and did nothing when clicked, which is a card telling the reader a lie. The mission name is now a real link with its hit area stretched over the tile, so there is one link per mission rather than six, the hover belongs to something, and the focus ring is drawn on the tile rather than on four words inside it.