The META design system, in full.
This page is the living documentation of the system meta.lu is built from. Everything here renders with the same tokens as the rest of the site: roughly 80% neutrals, 15% black and white contrast, 5% orange. No gradients, no heavy shadows, radii of 3 to 4 pixels.
80% neutral
Whites, greys and hairlines carry the structure. Neutral lets content breathe and ages well.
15% contrast
Deep black and pure white for headings, bands and the footer. Contrast creates hierarchy.
5% orange
Orange marks an action, a key figure, an active state. Nothing else. Rare, therefore effective.
Zero effects
No gradients, no heavy drop shadows, radii of 3–4px. Geometry does the work.
The META wordmark
The logo is typographic: Manrope 800, tight tracking, and a single orange full stop. It is the same markup the header renders — never an exported bitmap, never redrawn.
- On light surfaces the wordmark uses the ink token (foreground), the dot uses primary.
- On dark surfaces the wordmark turns pure white, the dot stays the same orange.
- Keep clear space of at least the height of one letter on every side.
- Never stretch, rotate, outline or add effects to the wordmark.
- Never recolour it outside these tokens; the orange dot is never dropped.
Colour tokens, light mode
Every colour on the site comes from a CSS variable declared in src/styles.css and exposed to Tailwind through @theme inline. Hardcoded values are not allowed in components — that is what makes dark mode free and global changes instant.
- CSS variable
- --background, --card
- Value
- oklch(1 0 0)
- Hex
- #ffffff
- Usage
- bg-background, bg-card
- CSS variable
- --foreground, --ink
- Value
- oklch(0.1582 0.0072 258.37)
- Hex
- #0b0d10
- Usage
- text-foreground, bg-ink
- CSS variable
- --muted-fg
- Value
- oklch(0.5092 0.0121 261.77)
- Hex
- #62666d
- Usage
- text-muted-foreground
- CSS variable
- --faint
- Value
- oklch(0.5492 0.0121 261.77)
- Hex
- #6d7179
- Usage
- text-faint, ::placeholder
- CSS variable
- --line
- Value
- oklch(0.9302 0.004 106.48)
- Hex
- #e8e8e5
- Usage
- border-line, border-border
- CSS variable
- --line-strong
- Value
- oklch(0.89 0.0068 106.54)
- Hex
- #dbdbd6
- Usage
- border-line-strong, border-input
- CSS variable
- --band, --hover
- Value
- oklch(0.9845 0.0026 106.45)
- Hex
- #fafaf8
- Usage
- bg-band, hover:bg-hover
- CSS variable
- --primary
- Value
- oklch(0.7022 0.2004 45.1)
- Hex
- #ff6b00
- Usage
- bg-primary, text-primary, ring
- CSS variable
- --primary-hover
- Value
- oklch(0.6516 0.1879 44.5)
- Hex
- #e85f00
- Usage
- hover:bg-primary-hover
- CSS variable
- --primary-foreground
- Value
- oklch(1 0 0)
- Hex
- #ffffff
- Usage
- text-primary-foreground
- CSS variable
- --color-destructive
- Value
- oklch(0.577 0.245 27.325)
- Hex
- #e7000b
- Usage
- text-destructive
- CSS variable
- --color-destructive-foreground
- Value
- oklch(0.985 0 0)
- Hex
- #fafafa
- Usage
- text-destructive-foreground
- CSS variable
- --footer-bg
- Value
- oklch(0.1582 0.0072 258.37)
- Hex
- #0b0d10
- Usage
- bg-footer
- CSS variable
- --footer-fg
- Value
- oklch(1 0 0)
- Hex
- #ffffff
- Usage
- text-footer-foreground
- CSS variable
- --footer-muted
- Value
- oklch(0.7461 0.0128 259.82)
- Hex
- #a8adb5
- Usage
- text-footer-muted
- CSS variable
- --footer-line
- Value
- oklch(0.2799 0.0141 261.69)
- Hex
- #252930
- Usage
- border-footer-line
The header uses --header-bg = color-mix(in oklab, background 86%, transparent): a translucent surface that automatically picks up the active background colour, light or dark.
--header-bg: color-mix(in oklab, var(--background) 86%, transparent);
Two families, no exceptions
Manrope (variable 200–800, self-hosted woff2, falling back to Helvetica then Arial) carries all text. IBM Plex Mono (400 and 500) is reserved for kickers, labels and numbers: it signals data, never prose.
Manrope weights
IBM Plex Mono
Kickers, form labels, section numbers and figures. Two weights are enough: 400 for text, 500 for emphasis.
IBM Plex Mono 400 — 0123456789
IBM Plex Mono 500 — 0123456789
Manrope
--font-sans: Manrope, Helvetica, Arial, sans-serif;
--font-mono: "IBM Plex Mono", ui-monospace, monospace;
font-display: swap; woff2, latin + latin-ext
Type ramp
Digital that pays off.
- clamp(52px, 4.9vw, 72px)
- line-height 1.04
- letter-spacing -0.045em
- weight 700
- ≤720px: 40px / 1.12
What we build
- 46px
- line-height 1.12
- letter-spacing -0.035em
- weight 700
- ≤720px: 30px
01 — Foundations
- IBM Plex Mono
- 12px
- letter-spacing 0.16em
- uppercase
Body copy runs at 16px with a line height of 1.6; secondary paragraphs use the muted-fg colour.
- 16px
- line-height 1.6
- Manrope 400
- text-muted-foreground
::selection uses primary with white text. Form placeholders use faint, never muted-fg.
Strict geometry
Four radii, one container, one header height. These values are not renegotiated page by page — that is where the site's calm comes from.
Radii
Container .sec
- max-width
- 1240px
- padding-inline
- 48px
- ≤ 1024px
- 32px
- ≤ 720px
- 20px
- margin-inline
- auto
Header
- --header-h
- 73px
- ≥ 1024px
- 85px
- position
- sticky
- scroll-padding-top
- var(--header-h)
Quiet, predictable, respectful
Motion serves reading, never spectacle. Transitions are short, states are visible, and everything stands still when a visitor asks for less animation.
Primary button
bg-primary → hover:bg-primary-hover, radius 4px, primary-foreground text, transition-colors.
Focus ring
:focus-visible draws a 2px primary outline with a 2px offset. Mouse focus never shows a ring.
- Light / dark theme
- 0.25s on background and color
- Cookie notice
- 200ms ease-in-out, no bounce
- Scrolling
- scroll-behavior: smooth
- prefers-reduced-motion
- 0.01ms, single iteration, instant scrolling
Why a strict design system changes everything
A design system is not a designer's indulgence. It is a business decision.
Consistency builds trust. Visitors cannot explain why a site feels credible, but they feel it within three seconds. When every page uses the same orange, the same heading weight, the same button radius, the brain stops working and focuses on the content. A page that changes its rules in every section sends the opposite signal: nobody watches the details here. If the website is careless, why would the service be any different?
A token is a decision made once. Without a system, choosing a text grey is repeated on every page, in every component, with every new team member. You end up with forty near-identical greys and nobody to arbitrate. With a system, muted-fg exists, it has a value, and the question never returns. The day the brand evolves, you change one line in styles.css and the whole site follows — light, dark, in every language.
Development gets faster and maintenance gets cheaper. Building a new page becomes assembly: the .sec container, a kicker, an h-section heading, a grid framed in line, a primary button. There is nothing to invent, so nothing to correct in review. Over the lifetime of a website, maintenance far exceeds the cost of the initial build — that is exactly where the system pays for itself.
Accessibility is built in, not bolted on. Contrast is validated at the source: body text hits a very high ratio on white, and muted-fg stays above the AA threshold for running text. Focus states are visible and identical everywhere; the 2px orange ring never depends on the component. And prefers-reduced-motion is honoured globally rather than component by component. Someone navigating by keyboard or sensitive to motion is not an edge case to handle later.
Performance follows the same logic. Fonts are self-hosted as woff2, split by Unicode range and served with font-display: swap — no third-party request, no invisible text while loading. Two families, not eight. No component library imported for three buttons. The result is measurable: pages render in under a second, and that speed is itself a conversion argument.
Dark mode comes free from the structure. Because no component knows a hardcoded colour, going dark means redefining eight variables. No second mockup, no scattered patches, no regression a month later. This is exactly the kind of feature that costs a fortune when improvised and almost nothing when the foundation is clean.
Then there is the discipline of constraint, the hardest part. It is tempting to add a gradient, a shadow, a second accent colour. Every addition looks harmless, and every one drains a little strength from the whole. Five percent orange on a page lands; orange everywhere says nothing at all. A useful system is one that says no — that is precisely its value.
We apply this standard to client projects exactly as we apply it to our own site. The result is not a prettier website in the abstract: it is a website that is faster to evolve, cheaper to maintain, more accessible and more credible. Over three years, the difference shows up in the accounts.
Want the same standard for your site?
Describe your project in three steps. We reply within one business day with a first assessment and a budget range.