Shared by every brand
Core
The layer no brand owns. Geometry, and the rules for setting words in it. Space, Agōn and Seed each dress this differently; none of them change it.
01 — Readability
Measure
A container has a width. Text in it has a measure — how many characters land on a line — and the two are only the same number by accident. Every figure below is measured from the loaded fonts at render time, so it follows the type rather than a rule of thumb.
Body — target 60–72
Tolerance 50–75; below 40 line breaks start splitting phrases. The 75 ceiling is not taste: WCAG 1.4.8 Visual Presentation (AAA) caps width at 80 characters. Space and Agōn are dark, and light-on-dark blooms — a long line tires the eye sooner there than it would on paper, so this system sits at the lower end of any published range.
Titles — target 20–40
Headlines are scanned, not read, so the prose range does not apply. Past roughly 50 characters a headline stops arriving as one unit. Note that 30px reads as legal body at 942 and as a bad title at the same width — the job decides, not the size.
Agōn runs narrower
Mono advances are uniform at 0.6em against Inter's ~0.48, so the same container holds roughly a quarter fewer characters. Agōn's legal widths are its own.
(942 − 24) ÷ 2 = 459 each. 459 is not
a rung. Two columns at 942 break the scale, so nesting wins on constraint rather
than preference.
1.4.12 Text Spacing (AA) is the one to test: layout must not break when a reader forces line-height 1.5, letter-spacing 0.12em, word-spacing 0.16em and paragraph spacing 2em. Fixed-height cards are where this fails. See Space → Accessibility.
02 — Editorial
Writing that survives the measure
Measure is a budget. What follows is how it gets spent. A 66-character line of clutter reads worse than an 80-character line of clean prose — the tables above make good writing legible, they do not rescue bad writing. After Zinsser, On Writing Well, kept to the principles that change a layout.
03 — Scale
Spatial scale
04 — Containers
Container widths
138+222=360, 360+582=942, 582+942=1524,
942+1524=2466. That run is also the proof the 9xl label was the typo
and not its value: 942+1524 lands exactly on 2466, and 942+1542 would not.
10xl is now a container.
Container/Natural/3xl [2466] aliases the rung in Figma, so the set no
longer stops at the frame. gabrielkroll.com already built against it —
.work-panels is min(2466px, 100%), running full-bleed with
square corners until the viewport clears 2466, where it rounds and becomes an object.
See 05 — Alignment for how the stage centres the frame.
05 — Alignment
Alignment map
Containers answer how wide. This answers where the edges land. Every sanctioned width, centered in the 1524 frame, generates two alignment stops — and content only ever aligns to a stop.
Every container width, centered in the frame. Lines are the stops it generates.
A composite is centered, so its outer edges always land on stops by construction. Internal seams do not follow automatically — the decompositions marked below are the ones that also align inside, and those are the ones to reach for first.
The full stop set. Each pair mirrors about the centre at 762.
Above the frame — the display stage
C-3xl · 2466 is not a container inside the frame; it is the stage the
frame sits on. Its stops cannot come from (1524 − W) ÷ 2 — that goes
negative — so the display tier centres the frame instead.
471 either side. The margin is not an
arbitrary gutter — it is the next rung down, which is why the stage reads as part
of the same system rather than as letterboxing.
Building against the map
Four things the geometry does not tell you, each one learned the expensive way on gabrielkroll.com. The map is a drawing; these are what it costs to build from it.
C-360 + C-942 was built at 1302 — the drawn total — so with
a 24 gap the still collapsed to 918 and never reached the token it was
specified at. The row is 360 + 24 + 942 = 1326. Add the gutters to
the composite, or accept that a segment lands off-scale.
min(1164px, 100vw − 48px), centered, 24 outer padding. The map is
drawn at frame width because that is where the stops are derived, not because
anything is built there.
DESIGN-DIRECTION.md. Alignment is a
property of the system only when edges are shared.
Two classes of stop. Solid lines are edge stops — a centered container's own edges. The faint pair at 360 and 1164 are seam stops: no container edge lands there, but composite seams do, so content may align to them. The centre axis at 762 is drawn here and is not in the Figma map.
06 — Aspect Ratios
Ratio tokens
07 — Easing
Power easing
08 — Duration
Duration tokens
09 — Radius
Border radius
10 — Borders
Border width
11 — Blur
Backdrop blur
12 — Z-Index
Layer scale
13 — Iconography
The icon set
Core carries one icon set: Iconoir. Every brand inherits it — there is no Space set, no Agōn set, no Seed set. One family, drawn on one grid, at one stroke weight.
Iconoir is MIT-licensed and ships as an npm package, so unlike colour and type it needs no export pipeline. Figma mirrors it for design; code installs it directly. Both sides must name the same version.
Specimens
Rendered from the package at 24×24 with no fill and no stroke colour of their own. They are the colour of this paragraph because they inherit it.
Sizes
Iconoir strokes 1.5 at 24. Scale the box and the stroke scales with it — a 16px icon draws a 1px line, a 48px icon draws 3px. The effective weight below is computed, not chosen.
Rules
The colour rule, rendered
Known drift
The Figma library and the npm package are not currently the same vintage. Until they are reconciled, a designer can specify an icon a developer cannot install.
Reference Library
Space
Dark-mode system. Metropolis · Inter · IBM Plex Mono. Built for high-contrast digital products on dark surfaces. House language of Open Orbit Studio; also worn by gabrielkroll.com.
A — Brand
Positioning
Space is the house language of Open Orbit Studio: near-black ground, one signal accent, and structure you feel rather than see. The frontier metaphor is about vantage — going far enough out to see the whole problem — not about sci-fi decoration.
Primary property
Open Orbit Studio
AI-enhanced product sprints for teams that move fast. One problem, shaped and shipped in two weeks.
Second property
gabrielkroll.com
Personal portfolio and studio-facing home. Same theme, warmer register — personal warmth inside a space-tech system.
Sibling brand
Agōn
Worn by Meso+. Draws on the same core as Space and answers to none of its brand rules. See the Agōn tab.
Register
Warm, exacting, cinematic
Confident about the work without becoming self-promotional. Technical without losing the human point of view.
openorbit-site/CLAUDE.md says “two-week product sprint studio for sustainability ventures”, FabaOrigin/CLAUDE.md says “AI Design Sprint agency”. This page follows the shipped homepage headline. Pick one; the voice section inherits from it.
B — Brand
Voice
Direct, spacefaring, warm under the precision. Space states the claim, then gets shorter.
- Claim, then a shorter line. The headline makes one claim; the line beneath it is plainer and shorter. “AI-enhanced product sprints for teams that move fast” → “One problem, shaped and shipped in two weeks.”
- Spaceflight describes distance and vantage. Orbit, frontier, lightyears, vantage point — used for how far the work travels or what it lets you see. Never set dressing, never rocket imagery for its own sake.
- Evidence over adjectives. Two weeks. A working prototype in customers’ hands. WCAG AAA from day one. Specifics carry the confidence; “world-class” and “cutting-edge” do not.
- No performed enthusiasm. No exclamation marks, no “we’re thrilled to announce”, no emoji in product surfaces.
- The person stays present. First-person plural for the studio, first-person singular on gabrielkroll.com. Capable, curious, approachable — never anonymous corporate.
- Show the work before the process. Outcome and artefact lead; method appears only where it explains the outcome.
In voice — shipped lines
One problem, shaped and shipped in two weeks.
Sprint to gain the new vantage point.
At Open Orbit, we care about the Earth and the life on it.
Product in your customers’ hands in two weeks.
Out of voice
We’re excited to announce our revolutionary AI-powered platform!
Blast off into a galaxy of endless possibilities 🚀
Best-in-class, cutting-edge design solutions.
Our proven 7-step methodology unlocks stakeholder value.
C — Brand
Design language
Six rules govern every Space surface. They are the reason two different properties read as one system.
- One axis, two registers. A single invisible column governs everything. A section is either editorial — text-led, tight rhythm, measure within reading width — or cinematic — image or statement-led, generous air, content may widen past the reading column. Utility sections stay quiet.
- The grid is felt, not drawn. Composition comes from the centered content field and the sanctioned composite widths. No decorative rules, no visible gridlines.
- Air is the hierarchy. Sections are separated by space, not borders. The 1px rule is rare and deliberate. Vertical rhythm runs in two gears — 84 for editorial, 138 for cinematic — and the change between them is what signals a register change.
- One image system. Every image obeys the scale, one of the sanctioned aspect ratios and one radius, aligned to column edges, with behaviour defined per breakpoint. No floating max-widths, no ad-hoc px.
- Motion earns attention. Slow, eased, few. Entrance and scroll reveal only.
prefers-reduced-motionis honoured everywhere; no new motion patterns without a reason. - Restraint is the brand. One accent at a time, lots of near-black, generous measure. When a surface feels weak, add space — not colour.
D — Brand
Accent doctrine
Accent is information, never atmosphere. One accent decides a view; the rest support it or stay out.
#0f0f0f is the void the system sits in; #fbfbfb is everything written on it. Text steps down through the transparency ladder (98 / 74 / 52), never through a different hue.Enforced in F — Usage rules: Nebula and Ion Tail become private names, and there is exactly one accent slot, so a view cannot address two accents without typing a private token.
E — Brand
Anti-references
What Space is defined against. If a screen starts drifting toward one of these, the drift is the bug.
- Generic agency-template pages built from repeated card grids, decorative gradients, glass panels, or interchangeable SaaS sections.
- Case studies that bury the work in process theatre, or inflate weak evidence with large vanity metrics.
- Cold space-tech spectacle with no personal warmth — and magazine styling used as decoration rather than as a consequence of the content.
- Excess animation, visible layout grids, or ornamental rules that compete with the work itself.
F — Brand
Usage rules
Everything above is intent. This section is the part that has to bite — the names a product may type, the labels it may set in mono, and two failures rendered rather than described.
The public API
A product reaches for a semantic name, never a brand hue. There is exactly one
accent slot, so “one accent per view” stops being a rule anyone has to remember.
A --_ name appearing in product code is a bug.
--space-accent
The accent. Photon. Primary action, active state, the one thing the eye reaches. One slot — if a second colour is carrying meaning, the layout is wrong, not the palette.
--space-accent-quiet
The same hue at 22%. Backing wash behind an accented element. Never text.
--space-accent-commerce
Ia Nova. Sales CTA and nav hover only. Never appears as a primary action in the same view as --space-accent.
--space-surface-0/1/2
Ground, component, overlay. Three steps, no fourth.
--space-text-1/2/3
98% / 74% / 52% Lunar. Text steps down through opacity, never through a different hue.
--space-line
Hairline. The only border value.
--_space-nebula
--_space-ion-tail
--_space-m-type
Private. Illustration and orbital artwork only. Not a UI state, not a text colour, not a card border, not a category marker.
PIPELINE.md.
Three roles that are not the same role
Mono became the default for everything small because the type rule said what an Eye Brow must look like and never when it may be used. Small labels do several different jobs, and — since Core 2.0 — none of the common ones is mono.
--space-text-3. Names the section the reader is entering. Sits above the h2 that opens a section — nowhere else. Budget: one per section. Changed in Core 2.0: the eye brow was IBM Plex Mono and is not any more. At eye-brow size the mono made compositions read clunky and heavy — mono's wide, even rhythm fights a label whose whole job is to sit quietly above a heading. Inter carries the same uppercase tracking without the weight.
--space-text-3. 01 / 02 / 03 when the order itself is information the reader needs. Never mono, never accented, never one colour per item.--space-text-3. Dates, ranges, captions, bylines, statuses. Unlimited, because it is quiet. Never mono, never uppercase, never accented.--space-text-3 and nothing else — which removes the
whole class of small accented uppercase labels at the root.
Enumerating peers
Four parallel items with no differentiator feel under-designed, and the palette is the nearest thing to grab. Position and index carry the sequence; colour carries state.
Don’t
01
Discover
02
Design
03
Develop
04
Deliver
Nine mono labels in one view. Four accents spent on an order that 01–04 already states. A gradient built from brand colours. Glows with no offset. The palette is gone and nothing has been said.
Do
01
Discover
02
Design
03
Develop
04
Deliver
Zero mono. Index in the display face, dates in Inter. One Photon mark, spent on the only thing that is actually information — which step you are on.
Accent as atmosphere
A surface that feels empty invites glow, haze and drawn connectors. Space answers emptiness with space.
Don’t
From an idea to evidence that it matters.
Brand hue as mood lighting. The eye lands on the haze, not the sentence.
Do
From an idea to evidence that it matters.
One eye brow. Ground stays ground. The sentence is the loudest thing on the surface, which is correct.
01 — Colors
Color tokens
Brand
Primary scale
Neutrals — on-dark (opaque)
Neutrals — on-bright (opaque)
02 — Accessibility
WCAG 2.2
Conformance is a property of the tokens or it is a promise nobody keeps. The three criteria below are the ones a design system can actually own — contrast, focus and target size. Everything else in WCAG is decided in markup, not here.
Contrast · 1.4.3 AA
Every ratio below is computed from the token values on this page, not typed in. Change a hex and the verdicts change with it — a contrast table that can be edited independently of the palette is a table that will eventually be wrong.
Translucent carries alpha so the surface beneath shines through — for overlays and anything sitting on varying ground. Its rendered colour, and therefore its contrast, is a function of what is behind it: text-3 passes at 5.34 on the page ground and fails at 3.35 on
surface-2. Same token, opposite verdict.
That is the ramp behaving correctly, not a defect — but it means a translucent token
is only certified against the surfaces measured above.
Opaque is a solid true-tone value that renders identically on any surface, so its contrast is fixed and can be checked once.
The rule. Reach for translucent when the tone should pick up what is behind it. Reach for opaque when it must not shift. If a translucent token lands on a surface it was not certified against, either step up a rung or use the opaque equivalent — do not assume the ratio travelled with it.
What the numbers do settle is a usage limit: Ia Nova is 4.01 and fails AA as body text; M-Type is 5.50 and passes. So Ia Nova is a fill and large-text colour, never small text on dark — which costs nothing, since it is the commercial accent and lives on buttons and CTAs. M-Type keeps its own role as warm editorial support. Neither hex changes.
Focus · 2.4.11 AA · 2.4.13 AAA · 1.4.11 AA
Space had no focus token at all, which is the largest WCAG 2.2 gap in the system — most of what 2.2 added is about focus. Tab into the buttons below to see the ring.
--space-focus-ring
Photon. 16.38:1 on the ground, far past the 3:1 that 1.4.11 asks of a focus indicator. Agōn substitutes Signal Green at 5.65:1; both clear it comfortably.
--space-focus-width
2px. 2.4.13 wants a perimeter of at least 2px around the component — 1px is the common default and it does not qualify.
--space-focus-offset
2px. Separates the ring from the control so it reads against both the control and the surface behind it.
Standing rule. Never
outline: none without a
replacement indicator in the same rule. 2.4.11 also requires that a focused element is
not hidden behind sticky headers or footers — Space's fixed sidebar and any future
sticky bar have to leave the focused control visible.
Target size · 2.5.8 AA
New in WCAG 2.2, and the scale already answers it: the 24 minimum is a rung.
--space-target-min
24px — the lg rung. The AA floor for any pointer target. Not a new number; the rung that was already there, given a name.
--space-target-touch
44px — the floor for touch-primary surfaces. Above WCAG, matching platform guidance. Meso+ already mandates it, so Agōn inherits this as its default rather than 24.
03 — Typography
Type scale
04 — Elevation
Surface elevation
Reference Library
Agōn
A precision training instrument with the physical charge of the gym floor. Mono type, one green signal, one gold rest signal, flat construction. Shares the core scale and geometry; everything expressive is its own. Worn by Meso+.
A — Brand
Positioning
Meso+ is for serious resistance-training athletes who already think in sets, RIR, microcycles and mesocycles. They are not looking for motivation, accountability, or a beginner plan. They want a quieter, sharper instrument that remembers the work and helps them make the next training decision.
North star
The Workset Record
A training record made physical: a checked set on a clipboard, the knurling of a bar, the calm decision between attempts.
Point of view
Progress is a signal, not a streak
Read across sessions, readiness and training blocks. Meso+ suggests progression; it never automates judgment.
Personality
Precise, physical, insider
The calm authority of a measuring instrument with the tactile energy of a working strength gym. It never performs enthusiasm for the athlete.
Why dark
Fluorescent gym light
Dark because it lives beside an athlete checking the next set without wanting glare — not to signal “premium” or “technical”.
B — Brand
Voice
Agōn speaks the athlete’s language, exactly. Same restraint as its siblings, no lift, no lyricism.
- Use the real vocabulary. RIR, microcycle, deload, top set, back-off. Never translate a term the reader already owns; the vocabulary is the proof you built this for them.
- State the reading, not the verdict. Report what the data says and let the athlete decide. “Volume down 12% on this block” — not “You’re slacking”.
- No motivation, ever. No streaks, badges, leaderboards, congratulation copy, or encouragement. The work is its own reason.
- Specific over broad. A named detail beats a performance claim. Concrete beats aspirational, every time.
- No spaceflight metaphors. Agōn inherits Space structure, not Space imagery. Its metaphors are chalk, steel, rubber and the pause before a hard set.
- Labels use the source data’s case. Uppercase only when the underlying data is uppercase — not for styling.
In voice
Week 3 of 5. Volume is holding; RIR is drifting down.
Last top set: 142.5 kg × 5 @ RIR 2.
Deload suggested. Your call.
Progress is a signal read across blocks, not a streak.
Out of voice
Crush your goals! 💪 7-day streak unlocked!
A “mesocycle” is a training block lasting 4–6 weeks.
You’re falling behind. Get back on track.
Launch into your next training orbit.
mesoplus-site/PRODUCT.md; they are not shipped copy. Approve or replace before they get quoted as canon.
C — Brand
Design language
Precision comes from the core structure and real product data. Energy comes from hard crops, direct photography and a few abrupt changes in scale — not from decorative motion.
- Show the instrument working. Product data and interaction carry the argument. No ornamental device renders, no floating phones.
- Earn the athlete’s recognition. Real training language and specific details instead of broad performance claims.
- Quiet at rest, forceful in emphasis. Controlled and exact, with a few decisive moments of scale, photography and green signal.
- The athlete stays in command. Meso+ suggests progression; it does not automate judgment.
- Make the work physical. Texture, crop and rhythm evoke chalk, steel, rubber, and the pause before a hard set.
D — Brand
The two standing rules
E — Brand
Anti-references
- Generic fitness transformation marketing with before/after promises.
- Neon bodybuilding, supplement, or cyberpunk gym branding.
- Polished corporate SaaS pages made from floating devices, glowing orbits, gradient atmosphere and interchangeable feature cards.
- Influencer-led community apps — streaks, badges, leaderboards, motivational hype.
- Editorial-serif mannerisms used as decoration: oversized italic manifestos, ticker strips, repeated tiny labels, numbered feature scaffolds.
01 — Inheritance
What Agōn shares, and what is its own
Agōn is a brand in its own right, a peer of Space and Seed rather than a child of either. What it shares is the core — the geometry every FOOO brand is built on. Everything expressive is its own, and answers to no other brand's rules.
#779632, plus the gold Rest pair. Muted on purpose: Photon reads as studio energy, Signal Green reads as instrument readout. The resemblance is a shared taste for one loud colour, not a lineage.4px and 8px only — tighter than the other brands, closer to a printed record than a soft app surface.mesoplus-site/DESIGN.md front-matter, not in FOOO. There is no tokens/agon.json and no dist/clean/agon.json — this tab documents a theme whose tokens are still hand-copied into mesoplus-site/index.html. Adding Agōn to the token build is the fix.
02 — Colors
Color tokens
Signal
Rest — the breathing orb, core to edge
Neutrals — chalk, steel, rubber
#ffe8a0 at the lit core, #f5c842 at the edge. Both are read
from the running app rather than specified at it — the orb was designed in code,
so the code is the source.
Contrast. 15.18:1 and 11.60:1 on gym black; both clear AA and AAA as text. They read against the ground, not against Signal: gold to green is 2.14:1, under the 3:1 that 1.4.11 asks of adjacent meaningful colours, so the two must never sit edge to edge as the only thing telling two states apart. They never need to — see the rule in D — Standing rules.
03 — Typography
Type scale
Reference Library
Seed
Organic, earth-toned system. Exo 2 · Inter · IBM Plex Mono. For nature-aligned, regenerative product contexts. Worn by fabaorigin.com.
A — Brand
Brand & design language
In the works
Coming soon
Seed has a token foundation but no brand definition yet — fabaorigin.com is the least developed of the three properties. Positioning, voice, design language and anti-references get written once the offer behind the site is settled.
01 — Colors
Color tokens
Brand
Primary scale
Secondary scale
Accents — Elm
02 — Typography
Type scale
03 — Shadows