Brand guide

Radical Fanatics.
The visual rulebook.

One page that puts the entire brand on screen - logo, color, typography, signature details. Built for designers, partners and colleagues working with our visual identity. Every value here is pulled straight from our design tokens, so this page stays in sync with the live site automatically.

02 - Color

Color palette

Four primary families (navy, orange, teal, cream) plus an ink scale for neutral text. Every stop is a design token. Prefer the semantic name (--color-action-primary) over the raw stop (--color-orange-500) - that way the whole system shifts together if we ever revisit the choice.

Navy #044a91 --color-navy-500
Orange #ff6e1d --color-orange-500
Teal #69c4c4 --color-teal-400
Cream #f4f4ed --color-cream-500

Navy

Primary brand: headings, links, navy surfaces
50 #f0f5fb
100 #d9e3f3
200 #b3c7e7
300 #6088c0
400 #2966a8
500 #044a91
600 #033b75
700 #033672
800 #022a59
900 #012552
950 #001a3a

Orange

Action: primary CTAs, eyebrows, accents on cream
50 #fff5ec
100 #fde4d4
200 #fcc4a3
300 #fa9d6b
400 #fa823f
500 #ff6e1d
600 #e15813
700 #b34108
800 #8a3309
900 #6e2a0c

Teal

Accent: brand shadow, tertiary buttons, badges
50 #eef9f9
100 #d4eded
200 #aedede
300 #87cece
400 #69c4c4
500 #4ea5a5
600 #3d8585
700 #316969
800 #2a5454
900 #244545

Cream

Page backgrounds: cream-500 is the default page bg
50 #fefefb
100 #fdfcf7
200 #faf8ef
300 #f7f5e6
400 #f4f4ed
500 #f4f4ed
600 #ebe9d8
700 #d8d6c5
800 #b8b5a0

Ink

Neutral text, for places where navy would dominate
50 #f6f6f5
100 #e8e8e6
200 #c8c8c4
300 #a0a098
400 #6b6b65
500 #2a2a26
600 #1a1a1a
700 #111111
900 #0a0a0a

03 - Typography

Typography

Two families. Helvetica Neue for everything that gets read (headings and body alike). IBM Plex Mono for labels, eyebrows, badges and code - anywhere we want a system-meta feel.

Sans

Aa Bb 123

Helvetica Neue

Roman 400 · Medium 500 · Bold 700 · self-hosted woff2

Mono

Aa Bb 123

IBM Plex Mono

Regular 400 · Bold 700 · open source · self-hosted woff2

Scale

Aa
--text-7xl 96px
Aa
--text-5xl 56px
Aa
--text-3xl 32px
Aa
--text-2xl 24px
Aa
--text-xl 20px
Aa
--text-lg 18px
Aa
--text-base 16px
Aa
--text-sm 14px
Aa
--text-xs 12px

04 - Signatures

Brand signatures

Visual tells that make a page feel like Fanatics, even with the logo removed.

Pill buttons with stroked outline

Every button sits on top of an offset stroke, our signature.

Brand shadow: 12px offset

Solid teal or orange shadow, no blur. Gives cards a tactile, slightly-off-the-page feel.

Teal shadow
Orange shadow

Orange chevron as bullet

Lists use an orange chevron-right instead of a dot. Direct, forward-pointing.

  • Odoo without detours
  • Standard where it works
  • People who stay until it runs

Mono eyebrow in orange

Section intros set in IBM Plex Mono, uppercase, with wide letter-spacing. Signals "this section belongs here".

Free Quickscan

Are you paying more for software than it’s worth to you?

Badges

Short status labels in mono - navy, orange, teal or outline.

Odoo Gold New Live Beta

Grid pattern on dark surfaces

Subtle 40px grid in 4% navy. Texture, not decoration - only used on cream or inverse navy.

05 - Document covers

Cover pages for PDFs and documents

Every PDF that leaves the building - solution assessments, checklists, proposals - opens with the same blueprint cover. Calm, technical, and unmistakably ours.

Blueprint cover archetype: dark navy page with a fine grid, orange mono eyebrow, large white title, teal subtitle, the white logo lockup and a metadata table
The archetype in use: the implementation-checklist PDF.

Hard rules - non-negotiable

  • The cover is a full A4 page of its own, edge to edge night-blue. Never shrink it to a banner, hero card or header block above content.
  • Page 1 contains nothing but the cover. Content - including any "vooraf" or intro section - starts on page 2.
  • The white logo asset is mandatory on every cover. A cover without the logo image is wrong, full stop.
  • The metadata block is a single-column label/value table with hairlines, bottom of the page. Never a multi-column grid.

Anatomy, top to bottom

  1. Doc-type eyebrow - mono, uppercase, letterspaced, orange-500. Names the document type: SOLUTION ASSESSMENT, GRATIS CHECKLIST.
  2. Title - Helvetica Neue Bold, ±42pt, pure white, max three lines.
  3. Subtitle hook - teal-400, regular, 13pt. The document’s promise in plain words.
  4. Deliberate empty middle - no cards, no illustrations. The calm is the design.
  5. Logo lockup - the white logo asset (/brand/logo-white-360.png), ±170pt wide. Never set the wordmark as text.
  6. Metadata table - mono labels (8pt, teal-400) with white values, separated by hairlines at 20% white. DATUM · VOOR · VAN · OMVANG · STATUS.

Values

  • Cover background #012452 - deeper than navy-500, covers only.
  • Blueprint grid #092b58, 1px lines on a 30pt raster.
  • Content x-margin on the grid: 64pt. Inner pages stay cream.
  • Hard offset shadows are web-UI signatures - never on covers.

Living examples: NL · EN · DE · Samenvatting (WeasyPrint)

Implementation notes - PDF generation (WeasyPrint)

Grid rendering. Do not use CSS repeating-linear-gradient for the blueprint grid - WeasyPrint renders it at the wrong scale (oversized squares). Use the pre-rendered tile:

.cover {
  background-color: #012452;
  background-image: url('/brand/grid-tile-30pt.png');
  background-size: 30pt 30pt;
  background-repeat: repeat;
}

The tile (/brand/grid-tile-30pt.png) is 120×120px: background #012452 with 3px lines #092b58 on the top and left edges, used at 30pt × 30pt.

Verification (required before sending). Rasterize page 1 of the output PDF at 72 dpi and confirm the grid lines sit exactly 30px apart. Wrong pitch = wrong implementation.

Cover layout. Flex column, padding 64pt: doc-type eyebrow (mono, uppercase, letterspaced, orange-500) → title (Helvetica Neue Bold ±42pt, pure white, max 3 lines) → subtitle hook (teal-400 #69c4c4, 13pt) → deliberate empty middle (flex: 1) → white logo /brand/logo-white-360.png at 170pt → metadata table (mono labels 8pt teal-400, white values, hairlines rgba(255,255,255,0.2)).

Inner pages. Background cream #f4f4ed; callouts as white cards with an orange left border and a hard offset shadow (#d8d6c5). No offset shadows on covers.

Body text - documents differ from the web on purpose. On the site body copy is navy-700 (--color-text-primary). In a document it is ink-500 #2a2a26, with meta and footers in ink-400 #6b6b65. Both are tokens from primitive.css; this is a medium rule, not a deviation. A web page carries short paragraphs surrounded by whitespace, so navy body reads as one calm voice. A dense A4 full of tables, callouts and bold navy lead-ins does not: set everything in navy and the page turns into one blue mass where headings stop reading as headings. Ink body against navy headings keeps the hierarchy scannable, which is what a document is for. Never use #6B7280 for muted text - that is a Tailwind grey that slipped into an early template, not a Fanatics token.

List bullets. Same orange chevron-right as the .chevron-list utility in global.css, but WeasyPrint does not support mask-image. Inline the Lucide path as a background SVG with the colour baked in - never substitute a square, a dot or an arrow:

ul li { padding-left: 1.5em; position: relative; }
ul li::before {
  content: ''; position: absolute; left: 0; top: 0.35em;
  width: 1em; height: 1em;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg'
    viewBox='0 0 24 24' fill='none' stroke='%23ff6e1d' stroke-width='3'
    stroke-linecap='round' stroke-linejoin='round'><polyline points='9 18 15 12 9 6'/></svg>");
  background-repeat: no-repeat; background-size: contain;
}

Page footers. Give the page box a fixed height and position the footer absolutely (bottom: 13mm). Left in the text flow it rides up and sticks to the last paragraph on short pages.

Living example: living-example-samenvatting.pdf - generated, not designed. The HTML source next to it is the reference implementation.

06 - Document interior pages

Every page after the cover

The cover (section 05) is half the document. The interior pages follow one fixed recipe too - a document that nails the cover but improvises the inside is still off-brand. If you are generating a document, follow this list literally, top to bottom.

The page recipe

  1. Background - cream-500 #f4f4ed on every interior page. Never pure white, never navy.
  2. Numbered section labels - every section opens with a mono, uppercase, letterspaced label in orange-500, numbered: 01 - WAT WE HEBBEN GEHOORD, 02 - WAAR HET WRINGT. This is the document's backbone.
  3. Section headings - directly under the label: Helvetica Neue Bold, ±16-19pt, navy-500. Written as a claim or the reader's question, never a generic noun ("Het bedrijf groeide mee. De systemen niet.").
  4. Body text - Helvetica Neue regular, ±10.5pt, near-black on cream. Flowing paragraphs; bullets only where a genuine list exists.
  5. Tables - mono uppercase column headers in navy, a heavier navy top rule, thin hairlines between rows, first column bold navy as the row label. No filled cell backgrounds, no zebra striping.
  6. Callout blocks - orange-500 left bar (±3pt), mono uppercase label in navy or orange, body on a subtly tinted panel. Use for the one thing the reader must remember.
  7. Lists that sell - chevron in orange-500, lead-in words bold navy, rest regular.
  8. Footer on every page - mono, ±8pt, muted: Radical Fanatics · Amsterdam · fanatics.nl - [document] · pagina N. The footer is anchored to the bottom of the page at a fixed position - never placed directly under the last line of text. A page that is half empty still has its footer at the very bottom.
  9. Never - hard offset shadows (web-UI only), colored heading backgrounds, more than two type families (Helvetica Neue + mono), content on the cover page.

The living examples under section 05 show cover and interior: checklist NL · samenvatting (WeasyPrint). Reproduce those pages, swap the content.

Keep exploring

The full component library

Buttons in every variant and size, forms, cards, badges, inputs, video embeds - everything we ship on the site, on one page, ready to copy.

To /dev/components