Brand kit
One brand, one hexagon
Naming, logo, symbol and voice: the decisions the rest of the system follows.
Logo
Six functions on the hexagon: Product, Acquisition, Lifetime value above the waterline; Team, Technology, Finance below.
Symbol
The hexagon on its own is the favicon.
Naming
One brand, written Solid Growth.
- Solid GrowthRight
- SolidGrowthWrong
- Solid growthWrong
- SOLID GROWTHWrong
Colours
Orange is the brand: the hexagon's gradient and the one call to action. Ink is the colour of every other action. Deep ink blue is its quiet partner.
Orange
Primary ink
Ink
Foreground
Background
Typography
- AaGeistBody text and controls
- AaGeist headingsTitles and display lines
- AaGeist MonoLabels, numbers and code
Tone of voice
Tone of voice is a decision too: a brand book is a set of slots, and each slot is filled by a decision.
Every token, in one table
Colour roles light and dark, surfaces, radius, shadow, spacing and type, all from one stylesheet: packages/ui/src/tokens/tokens.css.
Surfaces
The off-white page, the white card on it, and the quiet fills inside cards.
background
The page
LightSite theme- Aa11.03AAA
foreground on background
- Aa7.02AAA
muted-foreground on background
Dark- Aa19.16AAA
foreground on background
- Aa9.79AAA
muted-foreground on background
card
Panels, stages, popovers
LightSite theme- Aa12.21AAA
foreground on card
- Aa7.76AAA
muted-foreground on card
Dark- Aa16.14AAA
foreground on card
- Aa8.25AAA
muted-foreground on card
muted
Quiet fills, hover rows
LightSite theme- Aa6.39AA
muted-foreground on muted
Dark- Aa8.96AAA
muted-foreground on muted
accent
Menu and list highlight, a warm orange tint
LightSite theme- Aa11.09AAA
accent-foreground on accent
- 1.10No minimum
On background
Dark- Aa13.95AAA
accent-foreground on accent
- 1.09No minimum
On background
border
Hairlines, rails, dividers
LightSite theme- 1.19No minimum
On background
Dark- 1.25No minimum
On background
invert
Dark band on a light page; the neutral button
LightSite theme- Aa15.94AAA
invert-foreground on invert
Dark- Aa11.53AAA
invert-foreground on invert
Text
Two greys carry all copy: foreground for titles and body, muted for support.
foreground
Titles and body copy
LightSite theme- Aa11.03AAA
On background
Dark- Aa19.16AAA
On background
muted-foreground
Descriptions, captions, eyebrows
LightSite theme- Aa7.02AAA
On background
Dark- Aa9.79AAA
On background
Ink scale
The brand's ink blue in five steps of one hue, like a grey scale for hierarchy: 900 is the header band, bar and footer, each step up a visibly lighter blue; 100 is the light grey-blue the layer card's light tone stands on. The dark tone is 900.
ink-900
Header band, bar, footer (surface-ink)
LightSite themeDarkink-800
One shade lighter
LightSite themeDarkink-700
Two shades lighter
LightSite themeDarkink-600
Fills and marks
LightSite themeDarkink-500
Lightest step
LightSite themeDark
Brand and accent
The ink is the action colour: the main button of a view, links, ticked controls and progress. Orange, from the logo, is the brand's: the one call to action (Start the free audit), the logo and the illustrations, and nothing else. Ink blue is the partner of both.
primary
Primary buttons, links, ticked controls, progress ยท ink
LightSite theme- Aa12.21AAA
primary-foreground on primary
- Aa11.03AAA
On background
- Aa12.21AAA
On card
Dark- Aa18.57AAA
primary-foreground on primary
- Aa19.16AAA
On background
- Aa16.14AAA
On card
brand
The brand call to action (Button variant brand), the logo, illustrations ยท orange
LightSite theme- Aa5.69AA
brand-foreground on brand
Dark- Aa8.44AAA
brand-foreground on brand
secondary
Soft buttons and chips ยท ink blue
LightSite theme- Aa10.65AAA
secondary-foreground on secondary
Dark- Aa11.44AAA
secondary-foreground on secondary
ring
Focus ring, a soft blue
LightSite theme- 3.28AA large
On background
- 3.63AA large
On card
Dark- 8.23AAA
On background
- 6.93AA
On card
Accents
Ink is for action and orange for the brand; accents are for meaning (which factory). Never use an accent for a button. One hue per factory, each a family: tint (soft washes behind stages and sections), soft (fills, pill hover), base (illustrations, chart series; 3:1 on the card) and text (labels and pills; 4.5:1 on the page, the card, the tint and the soft fill).
accent-product
Product factory ยท violet
LightSite themetint
soft
base
text
- Aa6.63AA
accent-product-text on accent-product-tint
- Aa7.52AAA
accent-product-text on card
- 5.10AA
accent-product-base on card
Darktint
soft
base
text
- Aa9.12AAA
accent-product-text on accent-product-tint
- Aa10.26AAA
accent-product-text on card
- 6.16AA
accent-product-base on card
accent-acquisition
Acquisition factory ยท teal
LightSite themetint
soft
base
text
- Aa6.14AA
accent-acquisition-text on accent-acquisition-tint
- Aa6.89AA
accent-acquisition-text on card
- 3.78AA large
accent-acquisition-base on card
Darktint
soft
base
text
- Aa9.68AAA
accent-acquisition-text on accent-acquisition-tint
- Aa11.10AAA
accent-acquisition-text on card
- 7.18AAA
accent-acquisition-base on card
accent-lifetime-value
Lifetime value factory ยท berry
LightSite themetint
soft
base
text
- Aa6.49AA
accent-lifetime-value-text on accent-lifetime-value-tint
- Aa7.39AAA
accent-lifetime-value-text on card
- 4.82AA
accent-lifetime-value-base on card
Darktint
soft
base
text
- Aa9.38AAA
accent-lifetime-value-text on accent-lifetime-value-tint
- Aa10.50AAA
accent-lifetime-value-text on card
- 6.51AA
accent-lifetime-value-base on card
accent-team
Team factory ยท ochre
LightSite themetint
soft
base
text
- Aa6.20AA
accent-team-text on accent-team-tint
- Aa6.92AA
accent-team-text on card
- 3.39AA large
accent-team-base on card
Darktint
soft
base
text
- Aa10.51AAA
accent-team-text on accent-team-tint
- Aa11.92AAA
accent-team-text on card
- 9.12AAA
accent-team-base on card
accent-technology
Technology factory ยท ink blue
LightSite themetint
soft
base
text
- Aa8.18AAA
accent-technology-text on accent-technology-tint
- Aa9.23AAA
accent-technology-text on card
- 5.56AA
accent-technology-base on card
Darktint
soft
base
text
- Aa9.55AAA
accent-technology-text on accent-technology-tint
- Aa10.84AAA
accent-technology-text on card
- 6.40AA
accent-technology-base on card
accent-finance
Finance factory ยท green
LightSite themetint
soft
base
text
- Aa6.63AA
accent-finance-text on accent-finance-tint
- Aa7.43AAA
accent-finance-text on card
- 4.08AA large
accent-finance-base on card
Darktint
soft
base
text
- Aa10.03AAA
accent-finance-text on accent-finance-tint
- Aa11.51AAA
accent-finance-text on card
- 7.78AAA
accent-finance-base on card
Status
Only for state. Each fill carries a deep label of its own hue; reUI's solid badges use it too.
success
Done, healthy, growth
LightSite theme- Aa5.71AA
success-foreground on success
- Aa12.25AAA
success-foreground on success/10
Dark- Aa5.71AA
success-foreground on success
- Aa5.65AA
success-foreground on success/10
warning
Needs attention
LightSite theme- Aa7.03AAA
warning-foreground on warning
- Aa11.76AAA
warning-foreground on warning/10
Dark- Aa7.03AAA
warning-foreground on warning
- Aa6.99AA
warning-foreground on warning/10
destructive
Errors, delete
LightSite theme- Aa6.08AA
destructive-foreground on destructive
- Aa5.16AA
On destructive/10
Dark- Aa6.82AA
destructive-foreground on destructive
- Aa4.77AA
On destructive/10
info
Neutral information
LightSite theme- Aa5.17AA
info-foreground on info
- Aa11.69AAA
info-foreground on info/10
Dark- Aa5.17AA
info-foreground on info
- Aa5.39AA
info-foreground on info/10
Charts
The five series colours, also the painted colour fades: the technology blue, the logo orange, the acquisition teal, ink and the lifetime-value berry. Three are factory accents, so charts and fades share the family.
chart-1
Series 1 ยท technology blue
LightSite theme- 5.56AA
On card
Dark- 6.40AA
On card
chart-2
Series 2 ยท logo orange
LightSite theme- 3.60AA large
On card
Dark- 4.75AA
On card
chart-3
Series 3 ยท acquisition teal
LightSite theme- 3.78AA large
On card
Dark- 7.18AAA
On card
chart-4
Series 4 ยท ink blue
LightSite theme- 5.97AA
On card
Dark- 5.11AA
On card
chart-5
Series 5 ยท lifetime-value berry
LightSite theme- 4.82AA
On card
Dark- 6.51AA
On card
All 192 checks meet their WCAG minimum
Every pair below is measured in light and dark from the token file. The orange is deep ember on light surfaces, so white button labels and orange links pass on the page and on panels; dark surfaces lift it to the logo's orange with dark labels. Status fills carry a deep label of their own hue, and the soft badges use that label on a 10% tint (light) or the fill on a 15% tint (dark). Each factory accent's label passes on its own tint and soft fill, the card and the page; its base keeps 3:1 for graphics. Hairlines, panel edges and the menu tint are decorative: rings and shadows carry those edges, so they have no minimum.
Copy on surfaces
foreground on background
Titles and body on the page ยท Body text ยท AA 4.5:1
Aa11.03AAAAa19.16AAAforeground on card
Copy inside panels ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on background
Descriptions on the page ยท Body text ยท AA 4.5:1
Aa7.02AAAAa9.79AAAmuted-foreground on card
Descriptions in panels ยท Body text ยท AA 4.5:1
Aa7.76AAAAa8.25AAAmuted-foreground on muted
Captions on quiet fills (measured over the page, the darker case) ยท Body text ยท AA 4.5:1
Aa6.39AAAa8.96AAAaccent-foreground on accent
Highlighted menu item ยท Body text ยท AA 4.5:1
Aa11.09AAAAa13.95AAAinvert-foreground on invert
Copy on a dark band; the neutral button ยท Body text ยท AA 4.5:1
Aa15.94AAAAa11.53AAA
Brand and actions
brand-foreground on brand
Brand button label (the audit call to action) ยท Body text ยท AA 4.5:1
Aa5.69AAAa8.44AAAprimary-foreground on primary
Primary button label (the ink) ยท Body text ยท AA 4.5:1
Aa12.21AAAAa18.57AAAprimary on card
Links inside panels ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAprimary on background
Links on the page ยท Body text ยท AA 4.5:1
Aa11.03AAAAa19.16AAAsecondary-foreground on secondary
Secondary badge and ink-tint fills (the secondary button is on the card, below) ยท Body text ยท AA 4.5:1
Aa10.65AAAAa11.44AAAdestructive-foreground on destructive
Destructive button label ยท Body text ยท AA 4.5:1
Aa6.08AAAa6.82AAdestructive on card
Error text in a form ยท Body text ยท AA 4.5:1
Aa6.08AAAa5.93AAdestructive on background
Error text on the page ยท Body text ยท AA 4.5:1
Aa5.49AAAa7.03AAA
Status
success-foreground on success/10
Soft badge (reUI success-light; dark uses text-success on success/15) ยท Body text ยท AA 4.5:1
Aa12.25AAAAa5.65AAwarning-foreground on warning/10
Soft badge (reUI warning-light; dark uses text-warning on warning/15) ยท Body text ยท AA 4.5:1
Aa11.76AAAAa6.99AAinfo-foreground on info/10
Soft badge (reUI info-light; dark uses text-info on info/15) ยท Body text ยท AA 4.5:1
Aa11.69AAAAa5.39AAdestructive on destructive/10
Soft badge (reUI destructive-light, ui badge destructive) ยท Body text ยท AA 4.5:1
Aa5.16AAAa4.77AAprimary on primary/10
Soft badge (reUI primary-light) ยท Body text ยท AA 4.5:1
Aa10.23AAAAa10.29AAAsuccess-foreground on success
Solid fill and reUI solid badge ยท Body text ยท AA 4.5:1
Aa5.71AAAa5.71AAwarning-foreground on warning
Solid fill and reUI solid badge ยท Body text ยท AA 4.5:1
Aa7.03AAAAa7.03AAAinfo-foreground on info
Solid fill and reUI solid badge ยท Body text ยท AA 4.5:1
Aa5.17AAAa5.17AA
Page ending
foreground on surface-cta
Titles and body on the white call to action band ยท Body text ยท AA 4.5:1
Aa12.21AAAAa17.76AAAmuted-foreground on surface-cta
Descriptions and footer links on the call to action band ยท Body text ยท AA 4.5:1
Aa7.76AAAAa9.08AAAprimary-shade on surface-cta
Orange links on the call to action band ยท Body text ยท AA 4.5:1
Aa12.21AAAAa17.76AAAprimary on surface-cta
Orange button edge and icons on the call to action band ยท Graphics ยท 3:1
12.21AAA17.76AAAfooter-foreground on surface-footer
Titles and body on the human footer (the nav bar's ink) ยท Body text ยท AA 4.5:1
14.68AAA14.68AAAfooter-muted on surface-footer
Descriptions and footer links on the human footer ยท Body text ยท AA 4.5:1
8.58AAA8.58AAAfooter-link on surface-footer
Orange links on the human footer ยท Body text ยท AA 4.5:1
7.20AAA7.20AAAbrand-orange-light on surface-footer
Orange button edge and icons on the human footer ยท Graphics ยท 3:1
6.87AA6.87AAfooter-foreground on surface-footer-seo
Titles and body on the SEO footer (a step lighter ink) ยท Body text ยท AA 4.5:1
12.95AAA12.29AAAfooter-muted on surface-footer-seo
Descriptions and footer links on the SEO footer ยท Body text ยท AA 4.5:1
7.57AAA7.18AAAfooter-link on surface-footer-seo
Orange links on the SEO footer ยท Body text ยท AA 4.5:1
6.35AA6.02AAbrand-orange-light on surface-footer-seo
Orange button edge and icons on the SEO footer ยท Graphics ยท 3:1
6.06AA5.75AA
Hero surfaces
ink-foreground on surface-ink
Titles and body on the ink index hero (an option on trial) ยท Body text ยท AA 4.5:1
Aa15.11AAAAa15.11AAAink-muted on surface-ink
The eyebrow and lede on the ink index hero (an option on trial) ยท Body text ยท AA 4.5:1
Aa10.46AAAAa10.46AAAink-primary-foreground on ink-primary
Primary button label on the nav bar, ink bands and footers ยท Body text ยท AA 4.5:1
Aa4.62AAAa4.62AAink-primary on surface-ink
Primary button fill on the ink (its white label carries it) ยท Decorative ยท no minimum
3.47No minimum3.47No minimum
Secondary button on every surface
control-foreground on control-fill
Secondary button label on its fill, on every light surface ยท Body text ยท AA 4.5:1
Aa12.21AAAAa17.77AAAcontrol-border on stage-sage-deep
Secondary button edge on the sage hero ยท Graphics ยท 3:1
3.55AA large4.27AA largecontrol-border on stage-dawn-deep
Secondary button edge on the dawn hero ยท Graphics ยท 3:1
3.55AA large4.27AA largecontrol-border on surface-cta
Secondary button edge on the call to action band ยท Graphics ยท 3:1
4.85AA3.88AA largeink-control-border on surface-ink
Secondary button edge on the ink nav bar and the ink hero ยท Graphics ยท 3:1
4.77AA4.77AAfooter-control-border on surface-footer
Secondary button edge on the human footer and the footer hero ยท Graphics ยท 3:1
4.68AA4.68AAfooter-control-border on surface-footer-seo
Secondary button edge on the SEO footer ยท Graphics ยท 3:1
4.39AA large4.27AA largesurface-footer on footer-foreground
Secondary button label on its light fill, on the human footer ยท Body text ยท AA 4.5:1
14.68AAA14.68AAAsurface-footer-seo on footer-foreground
Secondary button label on its light fill, on the SEO footer ยท Body text ยท AA 4.5:1
12.95AAA12.29AAA
Factory accents
accent-product-text on accent-product-tint
Product pill and badge label ยท Body text ยท AA 4.5:1
Aa6.63AAAa9.12AAAaccent-product-text on accent-product-soft
Product pill on hover ยท Body text ยท AA 4.5:1
Aa5.70AAAa7.47AAAaccent-product-text on card
Product label inside panels ยท Body text ยท AA 4.5:1
Aa7.52AAAAa10.26AAAaccent-product-text on background
Product label on the page ยท Body text ยท AA 4.5:1
Aa6.80AAAa12.18AAAaccent-product-base on card
Product illustration fill and chart series ยท Graphics ยท 3:1
5.10AA6.16AAaccent-acquisition-text on accent-acquisition-tint
Acquisition pill and badge label ยท Body text ยท AA 4.5:1
Aa6.14AAAa9.68AAAaccent-acquisition-text on accent-acquisition-soft
Acquisition pill on hover ยท Body text ยท AA 4.5:1
Aa5.36AAAa7.76AAAaccent-acquisition-text on card
Acquisition label inside panels ยท Body text ยท AA 4.5:1
Aa6.89AAAa11.10AAAaccent-acquisition-text on background
Acquisition label on the page ยท Body text ยท AA 4.5:1
Aa6.22AAAa13.17AAAaccent-acquisition-base on card
Acquisition illustration fill and chart series ยท Graphics ยท 3:1
3.78AA large7.18AAAaccent-lifetime-value-text on accent-lifetime-value-tint
Lifetime value pill and badge label ยท Body text ยท AA 4.5:1
Aa6.49AAAa9.38AAAaccent-lifetime-value-text on accent-lifetime-value-soft
Lifetime value pill on hover ยท Body text ยท AA 4.5:1
Aa5.55AAAa7.73AAAaccent-lifetime-value-text on card
Lifetime value label inside panels ยท Body text ยท AA 4.5:1
Aa7.39AAAAa10.50AAAaccent-lifetime-value-text on background
Lifetime value label on the page ยท Body text ยท AA 4.5:1
Aa6.68AAAa12.46AAAaccent-lifetime-value-base on card
Lifetime value illustration fill and chart series ยท Graphics ยท 3:1
4.82AA6.51AAaccent-team-text on accent-team-tint
Team pill and badge label ยท Body text ยท AA 4.5:1
Aa6.20AAAa10.51AAAaccent-team-text on accent-team-soft
Team pill on hover ยท Body text ยท AA 4.5:1
Aa5.46AAAa8.53AAAaccent-team-text on card
Team label inside panels ยท Body text ยท AA 4.5:1
Aa6.92AAAa11.92AAAaccent-team-text on background
Team label on the page ยท Body text ยท AA 4.5:1
Aa6.25AAAa14.15AAAaccent-team-base on card
Team illustration fill and chart series ยท Graphics ยท 3:1
3.39AA large9.12AAAaccent-technology-text on accent-technology-tint
Technology pill and badge label ยท Body text ยท AA 4.5:1
Aa8.18AAAAa9.55AAAaccent-technology-text on accent-technology-soft
Technology pill on hover ยท Body text ยท AA 4.5:1
Aa7.08AAAAa7.75AAAaccent-technology-text on card
Technology label inside panels ยท Body text ยท AA 4.5:1
Aa9.23AAAAa10.84AAAaccent-technology-text on background
Technology label on the page ยท Body text ยท AA 4.5:1
Aa8.34AAAAa12.87AAAaccent-technology-base on card
Technology illustration fill and chart series ยท Graphics ยท 3:1
5.56AA6.40AAaccent-finance-text on accent-finance-tint
Finance pill and badge label ยท Body text ยท AA 4.5:1
Aa6.63AAAa10.03AAAaccent-finance-text on accent-finance-soft
Finance pill on hover ยท Body text ยท AA 4.5:1
Aa5.79AAAa8.05AAAaccent-finance-text on card
Finance label inside panels ยท Body text ยท AA 4.5:1
Aa7.43AAAAa11.51AAAaccent-finance-text on background
Finance label on the page ยท Body text ยท AA 4.5:1
Aa6.71AAAa13.66AAAaccent-finance-base on card
Finance illustration fill and chart series ยท Graphics ยท 3:1
4.08AA large7.78AAA
Stage surfaces
foreground on stage-dawn
Copy on the dawn stage ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on stage-dawn-deep
Muted copy where the dawn stage deepens ยท Body text ยท AA 4.5:1
Aa5.68AAAa9.99AAAforeground on stage-dusk
Copy on the dusk stage ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on stage-dusk-deep
Muted copy where the dusk stage deepens ยท Body text ยท AA 4.5:1
Aa5.68AAAa9.99AAAforeground on stage-mist
Copy on the mist stage ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on stage-mist-deep
Muted copy where the mist stage deepens ยท Body text ยท AA 4.5:1
Aa5.68AAAa9.99AAAforeground on stage-sand
Copy on the sand stage ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on stage-sand-deep
Muted copy where the sand stage deepens ยท Body text ยท AA 4.5:1
Aa5.68AAAa9.99AAAforeground on stage-sage
Copy on the sage stage ยท Body text ยท AA 4.5:1
Aa12.21AAAAa16.14AAAmuted-foreground on stage-sage-deep
Muted copy where the sage stage deepens ยท Body text ยท AA 4.5:1
Aa5.68AAAa9.99AAA
Graphics and edges
ring on background
Focus ring on the page ยท Graphics ยท 3:1
3.28AA large8.23AAAring on card
Focus ring inside panels ยท Graphics ยท 3:1
3.63AA large6.93AAchart-1 on card
Chart series on a panel ยท Graphics ยท 3:1
5.56AA6.40AAchart-2 on card
Chart series on a panel ยท Graphics ยท 3:1
3.60AA large4.75AAchart-3 on card
Chart series on a panel ยท Graphics ยท 3:1
3.78AA large7.18AAAchart-4 on card
Chart series on a panel ยท Graphics ยท 3:1
5.97AA5.11AAchart-5 on card
Chart series on a panel ยท Graphics ยท 3:1
4.82AA6.51AAaccent on background
Menu highlight against the page; a tint, not an edge ยท Decorative ยท no minimum
1.10No minimum1.09No minimumborder on background
Hairlines and rails (decorative) ยท Decorative ยท no minimum
1.19No minimum1.25No minimumcontrol-border on background
The edge of a button, input or toggle on the page ยท Graphics ยท 3:1
4.38AA large4.18AA largecontrol-border on card
The edge of a button, input or toggle in a panel ยท Graphics ยท 3:1
4.85AA3.52AA largecard on background
White card against the light page: at least 1.08:1 (contrast.test.ts); the ring and shadow carry the edge ยท Decorative ยท no minimum
1.11No minimum1.19No minimum
text-7xl
72px / 1
Decisions become fuel
Display: the largest hero headline
text-6xl
60px / 1
Decisions become fuel
Page hero title (desktop)
text-5xl
48px / 1
Decisions become fuel
h1: page hero title (phone)
text-4xl
36px / 40px
Decisions become fuel
h2: section title (desktop)
text-3xl
30px / 36px
Decisions become fuel
h2: section title (phone)
text-2xl
24px / 32px
Decisions become fuel
h3: big numbers, card titles
text-xl
20px / 28px
Decisions become fuel
h4: sub-heads in long text
text-lg
18px / 28px
Decisions become fuel
Lead: the paragraph under a title
text-base
16px / 24px
Decisions become fuel
Body copy
text-sm
14px / 20px
Decisions become fuel
UI, buttons; mono eyebrow
text-xs
12px / 16px
Decisions become fuel
Captions, badges, table meta
rounded-xs ยท 4px
Inner chips
rounded-sm ยท 6px
Badges
rounded-md ยท 8px
Buttons, inputs, selects
rounded-lg ยท 10px
The base (--radius)
rounded-xl ยท 11px
Cards, the inner card of a stack
rounded-2xl ยท 12px
Panel, Stage, CardStack
rounded-3xl ยท 14px
Large feature frames
rounded-4xl ยท 16px
FrameTop
rounded-full ยท 9999px
Pills, avatars, dots
shadow-card
A card at rest
shadow-card-hover
A card on hover
shadow-overlay
A menu, popover, dialog or the front card of a stack
One column, one rhythm
Content sits in a single column, max-w-7xl 2xl:max-w-[100rem] px-6, with no rails on the page edges. Every section pads py-16 md:py-24.
max-w-7xl ยท 1280px (1600px on 2xl)
The 4px step
Every padding, margin, gap and size is a multiple of --spacing: 0.25rem. Stay on these steps.
- 14px
- 28px
- 312px
- 416px
- 624px
- 832px
- 1248px
- 1664px
- 2496px
Every primitive, its variants and states
One row per primitive from packages/ui, rendered live: actions, inputs, navigation, overlays, feedback and data display.
variant="default"
Primary, in the ink: the main action of a view
variant="brand"
The one brand call to action (Start the free audit), in orange
variant="secondary"
Its partner beside it (Book a call next to the audit)
variant="outline"
A quiet action on the card colour
variant="ghost"
Toolbar and quiet actions
variant="link"
Inline action in running text
variant="destructive"
Delete, cancel a plan
variant="default"
Primary, in the ink: the main action of a view
variant="brand"
The one brand call to action (Start the free audit), in orange
variant="secondary"
Its partner beside it (Book a call next to the audit)
variant="outline"
A quiet action on the card colour
variant="ghost"
Toolbar and quiet actions
variant="link"
Inline action in running text
variant="destructive"
Delete, cancel a plan
Sizes
Default (h-9) everywhere; xs and sm in dense toolbars and tables, lg for a single hero action.
Pairing
At most one primary (the ink) per view. Its partner is outline, never a second primary. The orange brand button appears only for the audit.
Colour
Orange means act: the one primary button, links and focus. Ink blue is the quiet partner for soft buttons and chips. Status colours only ever mean state. Text reaches 4.5:1 and graphics 3:1 on every surface, in light and dark.
Link arrows
A horizontal arrow goes somewhere on this site. An arrow up and to the right opens another site in a new tab. Never mix them up.
badge ยท plain
badge ยท status ยท light (preferred)
badge ยท status ยท solid
badge ยท plain
badge ยท status ยท light (preferred)
badge ยท status ยท solid
The components, live
One tile per component in packages/ui/src/components, with the site's own logo, books and tools.
- logo
- The operating system for an autonomous businesseyebrow
A section of a detail page
Its anchor, a title with a hairline, then the content.
content-part- detail-record-skeleton
- crumbs
- detail-tabs
Find the value your client pays for
Name the outcome the client buys before you name a price.
article-rowBrowse the docs
docs-nav0 pages
Nothing here yetdocs-cardsWhat it does
A readable section, in full.
Matching rules
Log in to read this section.
docs-sections- How it works
Decisions become the fuel for agents
section - pager
- theme-switch
- Brand kit
One brand
The hero text of every page type, with the breadcrumb inside.
hero-text - hero-backdrop
On this pageLogo
on-this-pageYour six factory scores
- Value creation
- Client acquisition
- Value delivery
- People
- Technology
- Finance
factory-score-preview- site-nav-menus
tool-logo
tool-logo-plate- tool-card
- tool-index-card
- affiliate-note
- YesNotool-facts
- book-actions
- book-cover
A review in Markdown.
- With a list
- And bold text
prose- video-card
- video-slot
- visit-button
- Yes
- No
- Not known yet
tool-spec-card- lead-gate
- collection-toolbar
- cover-fan
- book-card
- EBCAAClient acquisitionrecord-parts
- operator-match
Pricing page layout
Asked byBABuild agentShould the pricing page lead with the platform or the AI employees?
Most visitors arrive from the audit and already know the platform.decision-question-card- Only in the side cardEJ
- In the review too
decision-parts- Only in the side card
- Tool prices live only in the side cardproduct-window
- Rule
Prices appear only in a tool page's side card.
story-card - Value creationAll six factoriesfactory-mark
- skeletons
- One button style everywhere5 Oct
Four variants on one size scale
- Every page ends dark5 Oct
The footers in dark teal
record-lists- EB
Ewoud Boogaard commented ยท 5 Oct
The secondary navbar is what I created.
- C
Claude Moved the section bar to plain links. ยท 5 Oct
record-activity- EB
- side-panel
- chat-panel
Dark blue Due this week
Three tasks, one owner each
3- Send the Q4 proposal
- Review the onboarding checklist
- Confirm the renewal with Acme
Decisions waiting
Ready for you to decide
2- Hire a second engineer
- Move to annual billing
Revenue
Last six weeks
Up 12 percent on the six weeks before.
At risk
Goals behind plan
- Reach 50 customers
- Ship the onboarding flow
General
How this workspace is set up.
AirtableAirtable
Light Due this week
Three tasks, one owner each
3- Send the Q4 proposal
- Review the onboarding checklist
- Confirm the renewal with Acme
Decisions waiting
Ready for you to decide
2- Hire a second engineer
- Move to annual billing
Revenue
Last six weeks
Up 12 percent on the six weeks before.
At risk
Goals behind plan
- Reach 50 customers
- Ship the onboarding flow
General
How this workspace is set up.
AirtableAirtable
layer-cardDark blue Log in to Solid Growth
Welcome back.
Light Log in to Solid Growth
Welcome back.
message-screen- Build
property-values- property-editors
- property-field
- property-list
- property-pill
- stage-icon
- priority-icon
- column-chart
- bar-list
- Organic traffic62%Direct traffic18%share-bar
Revenue
Per year, in millions
chart-card- radar-chart
Revenue donut-chart- trend-chart
- radial-chart
- stacked-bar
- 62%segmented-arc
- target-chart
- Created
- Finished
chart-parts- lazy-charts
- โฌ12.4Kโโฌ1.2K46%stat-tile
- view-bar
- data-engine-demo
- SGADNswitcher
- choice-menu
HubSpot
Read your contacts and deals.
connection-tilePreferences
Choose how the product looks.
Appearance
ThemeChoose a theme for this device.
settings-parts- switcher-pill
- ask-button
Lists: one table for every list
The tools bar, the table and the record card as one block, on 2,000 made-up contacts held in your browser. Filter, sort, group and choose columns in the bar; click a name to open the card beside the table; edit in a cell or in the card and undo with Cmd or Ctrl + Z. Nothing is saved.
Properties: every kind
One record card's property list with every kind of property the lists have, each once with a value and once empty. Click a value to edit it where it stands; Backspace or Delete clears it. The list is read from the catalogue, so a new kind shows up here by itself. Nothing is saved.
One card per thing
Every kind of thing the site shows, as the card its pages use, with real content. Each is one of the card archetypes: a stage, a pill, a title, a description and a meta line.
ToolCard

Identifies in-market accounts and predicts their buying journey using intent data and account-based marketing AI.
- Yes
BookCard

Teaches founders how to structure compelling business offers that customers find irresistible by focusing on value, risk reversal, and clear outcomes.
PlaybookHubCard
Outbound
Going directly to prospects is often the fastest way to close early revenue. Outbound sales works best when you know who to call and why they should listen.
FactoryPartCard
ChapterRow
A list of fifty, not fifty thousand
A list of fifty chosen prospects shows you know the role, company shape and reason to care. Fifty thousand shows you have not decided.
DocsPageRow
Connect a tool with an API key
Some tools do not offer a sign-in button.
VideoCard
PersonaTile
RelatedTermCard
CardCompact
Side panels: A, B or C
Click a row, the bell or the chat button in the miniature. The same panel opens with a record, the notifications or the chat; switch how it behaves.
Deliverables
| Deliverable | Stage | Owner | Due |
|---|---|---|---|
| Trust rebuild: customer letter | In progress | Ewoud | Fri 9 Oct |
| Weekly cash review | In review | Finance agent | Mon 12 Oct |
| Free audit follow-up delay | To do | Acquisition agent | Wed 14 Oct |
| Onboarding checklist v2 | To do | Ewoud | Fri 16 Oct |
| Outbound budget for Q4 | Done | Finance agent | Tue 6 Oct |
- A: you can keep working on the page and in the bar while the panel is open, and clicking the next row just swaps what the panel shows.
- B: the page goes dim and locked until you close the panel, so you look at one thing at a time but cannot click a second row.
- C: the panel covers everything, the bar included, so you cannot reach the menu or switch workspace until you close it.
Recommended: the chat is the same panel, opened from the bar, and knows the page you are on. A record's own conversation stays a section on the record.
Properties card: which frame?
Scroll inside each miniature detail page. Option 1 is a light card whose shadow grows when it sticks, Option 2 is a plain card that gets a blue outline once it has scrolled off the header band, and Today is the dark frame.
Scroll inside each frame: the card sticks, folds to its compact version and, in the two options, answers once it has left the header band.
Option 1: light card, stronger shadow when stuck
A white card with a thin quiet edge and no dark frame. When it sticks while you scroll, its shadow gets a little stronger.
Start with one flat plan for the first year
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
Pricing for the first year
Option 2: blue outline once scrolled
A plain white card while it overlaps the header band. Once it has scrolled onto the light page, a thin dark-blue rounded outline appears around it.
Start with one flat plan for the first year
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
Pricing for the first year
Today: dark frame
The card as every detail page has it now: a dark-blue surface around the white panel.
Start with one flat plan for the first year
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
The team compared the two ways of pricing the first year and agreed to start with a single flat plan, so that the first customers do not have to choose between tiers before they have seen the product.
Usage based pricing stays on the list for later. It needs the metering to be trusted, and the first invoices will be written by hand until the agents handle them.
The decision is logged here with its reasons, so the agents that prepare quotes can read it and follow it without asking again. A later change is a new decision that replaces this one.
Open points are tracked as work under the goal. None of them blocks the launch, but two of them need an owner before the end of the month.
Customers who joined during the pilot keep the price they were promised. This is written into the letter that goes out on Friday, and the finance agent checks every invoice against it.
The next review is in three months, or earlier when the average discount given in sales calls goes above one in five deals.
Pricing for the first year
Numbers and charts
The stat row and one chart per question a report asks of its data, with the figures of a real audit: over time, ranking, comparison, part of a whole. One blue, a pale step for the contrast, orange only on the one mark a chart is about.
A company
Level per factory, from its audit
A person
Where their work went this cycle, in hours
An agent
Decisions it handled per factory
Revenue per year
Over time, a few points
Website sessions per month
Over time, many points
Who comes back when a certificate expires
Ranking
What the CRM sees of the revenue
Comparison
194 companies make two thirds of the revenue
Part of a whole
The largest drops in spend
Ranking, a drop
The isometric set
Line-drawn, striped sides, token colours, gentle motion that stops for reduced-motion users.
<FactoriesHexagon /> motifs? label?
The six factories as the hexagon logo; each kite lifts in turn.
<DecisionMap /> value? label?
Decisions filling the hexagon; leave value out to let it loop.
<FactoryScene /> motif="product"
One factory: its motif standing on a plate.
<LineScene /> motif="acquisition" index={1} count={4}
One production line: a conveyor, this line's station lit.
<ConveyorScene /> motif="acquisition" count={6} highlight?={2}
A production line as a conveyor belt: one machine per playbook. Without highlight the machines light in turn; with it, that playbook's machine stands taller in the accent.
<GrowthCurve /> label?
Two curves pulling apart: with and without the system.
<IsoSlab /> ยท lit ยท accent tone ยท ghost
The building block of every scene; drawn inside an IsoCanvas.
Rules the code enforces
Each decision lives in a class, a token, a component or a test, so every page gets it and none can break it.
Gradients behind cards run from the factory's accent to a darker shade of it, never to white, so white cards pop. The Biome plugin design-roles forbids a gradient that ends in white.
Every page ends dark: the page, the call to action (S05c, the audit's first question inline), then the human footer on dark teal and the SEO footer a step deeper (PageEnding, rendered once by the layout, with the design system's SiteFooter). Text stays at WCAG AA on every step; system-rules.test.ts and the Page ending table below check it, light and dark.
A clickable card shows an arrow button in its bottom right, and a count carries an icon. Each archetype renders both itself; a page never adds them.
Every index (playbooks, tools, books, glossary) has one header: the six factories as folder tabs (P01a: icon, label, count), then the sort, the Filters menu, the gallery/list segmented control and the search on the same row, every control as high as a tab. It is the only filter style; every index uses the shared toolbar from @solid-growth/ui, and there is no count line: the count lives in the tabs. See /playbooks.
The hero fills the first screen and ends on the section bar: items centred, no background until it sticks to the top, a round arrow down at its end. The hero carries a bouncing arrow instead of a call to action (it stops under reduced motion).
The nav bar is S09a, Surfe-like: four dropdowns (Product, Factories, Library, Company) centred; Log in, Book a call and the dark audit pill on the right. The menu hides on the way down and shows on the way up. Search is an icon button and Cmd/Ctrl + K, and opens the one Command K dialog (the app's too) over the page, with the site's actions and shortcuts; /search stays for the full list and as where a shared search link lands.
Search the site
Search the six factories and their production lines, every playbook, chapter, tool and book in the library, the glossary and the docs.
Opens with Ctrl or Cmd + K.
Isometric illustrations run from the bottom left to the top right, towards the audit button. Every one of the 24 production lines stands on the same floor with a composition of four machines no other line has, from the table in line-machine.tsx. A single-belt scene is cut to its belt so it fills its stage.
Every heading (h1 to h4) in the content family names a type role. The Biome plugin design-roles fails on a heading without one, and on raw text sizes and shadows.
This is what the brand kit looks like
The app keeps every company's brand like this: logo, colours light and dark, type, shape and voice, in one place. Agents read it before they make anything for you.
Solid Growth brand kit
The operating system for an autonomous business.
Preview
A small interface in the brand's colours, fonts and corners, light beside dark.
The operating system for an autonomous business.
Solid Growth is one brand with several lines of business: agency, software and media.
The operating system for an autonomous business.
Solid Growth is one brand with several lines of business: agency, software and media.
Colours
Each token with its light and dark value and what it is for.
Surfaces
Pages, panels and quiet fills.
--background
The page, off-white
--card
Panels, stages, popovers
--muted
Quiet fills, hover rows
--border
Hairlines, rails, dividers
Text
The colours copy is set in.
--foreground
Titles and body copy
--muted-foreground
Descriptions, captions, eyebrows
Brand and accent
Action colours and their labels.
--primary
Main actions, links, focus ยท orange
--primary-foreground
Labels on orange
--secondary
Soft buttons and chips ยท ink blue
--secondary-foreground
Labels on ink blue
Status
Only for state: success, warning, error, information.
--success
Done, healthy
--warning
Needs attention
--destructive
Errors, removing
Charts
Series colours for charts and illustrations.
--chart-1
Technology blue
--chart-2
Orange
--chart-3
Acquisition teal
--chart-4
Ink
--chart-5
Lifetime value pink
Typography
Typefaces and a scale from a 16px base at a ratio of 1.25.
Aa
Geist
body ยท 400, 500, 600 ยท Headings and body text
Aa
Geist Mono
mono ยท 400, 500 ยท Labels, numbers and code
Solid Growth
Solid Growth
Solid Growth
Solid Growth
Solid Growth ยท The operating system for an autonomous business.
Solid Growth ยท The operating system for an autonomous business.
Solid Growth ยท The operating system for an autonomous business.
Solid Growth ยท The operating system for an autonomous business.
Radius and spacing
One base radius drives every corner; spacing stays on the grid.
Radius ยท 10px
Spacing ยท 4px grid
Logo
Each file on the brand's light and dark background.
logo
on-light ยท The Solid Growth logo: the orange hexagon and the wordmark
Voice
How the brand writes its name and sounds, and what it always and never does.
Name: One brand, written Solid Growth.
Plain, direct and calm. Short sentences, concrete words, no hype. Tone of voice is a decision too: a brand book is a set of slots, and each slot is filled by a decision.
Do
- Write the name as two capitalised words: Solid Growth.โSolid Growthโnaming
- Draw the hexagon with its orange gradient everywhere, app and website included.logo
- Use the hexagon on its own as the favicon.logo
- Use orange (primary) for action; keep status colours for state only.colour
- Say what something does in plain words, in short sentences.voice
Donโt
- Join, lower-case or shout the name.โSolidGrowth, Solid growth, SOLID GROWTHโnaming
- Use hype, buzzwords or exclamation marks.voice
Want this for your company?
Sign up and record your brand once. Every page, deck and asset made after that follows it.



