Das META Design System, vollständig.
Diese Seite ist die lebende Dokumentation des Systems, aus dem meta.lu gebaut ist. Alles hier wird mit denselben Tokens gerendert wie der Rest der Website: rund 80 % Neutraltöne, 15 % Schwarz-Weiss-Kontrast, 5 % Orange. Keine Verläufe, keine schweren Schatten, Radien von 3 bis 4 Pixeln.
80 % neutral
Weiss, Grau und feine Linien tragen die Struktur. Neutral lässt Inhalt atmen und altert gut.
15 % Kontrast
Tiefes Schwarz und reines Weiss für Titel, Bänder und Footer. Kontrast erzeugt Hierarchie.
5 % Orange
Orange markiert eine Aktion, eine Kennzahl, einen aktiven Zustand. Sonst nichts. Selten, deshalb wirksam.
Keine Effekte
Kein Verlauf, kein starker Schlagschatten, Radien 3–4 px. Die Geometrie erledigt die Arbeit.
Die META Wortmarke
Das Logo ist typografisch: Manrope 800, enge Laufweite, ein einzelner oranger Punkt. Es ist dasselbe Markup, das der Header rendert — nie eine exportierte Bilddatei, nie nachgezeichnet.
- Auf hellen Flächen nutzt die Wortmarke den Ink-Token (foreground), der Punkt nutzt primary.
- Auf dunklen Flächen wird die Wortmarke reinweiss, der Punkt bleibt im selben Orange.
- Halten Sie ringsum mindestens eine Buchstabenhöhe Schutzraum frei.
- Die Wortmarke wird nie verzerrt, gedreht, umrandet oder mit Effekten versehen.
- Keine Umfärbung ausserhalb dieser Tokens; der orange Punkt entfällt nie.
Farb-Tokens, heller Modus
Jede Farbe der Website stammt aus einer CSS-Variablen in src/styles.css, die über @theme inline an Tailwind gereicht wird. Fest codierte Werte sind in Komponenten nicht erlaubt — genau das macht den Dark Mode kostenlos und globale Änderungen sofort wirksam.
- CSS-Variable
- --background, --card
- Wert
- oklch(1 0 0)
- Hex
- #ffffff
- Verwendung
- bg-background, bg-card
- CSS-Variable
- --foreground, --ink
- Wert
- oklch(0.1582 0.0072 258.37)
- Hex
- #0b0d10
- Verwendung
- text-foreground, bg-ink
- CSS-Variable
- --muted-fg
- Wert
- oklch(0.5092 0.0121 261.77)
- Hex
- #62666d
- Verwendung
- text-muted-foreground
- CSS-Variable
- --faint
- Wert
- oklch(0.5492 0.0121 261.77)
- Hex
- #6d7179
- Verwendung
- text-faint, ::placeholder
- CSS-Variable
- --line
- Wert
- oklch(0.9302 0.004 106.48)
- Hex
- #e8e8e5
- Verwendung
- border-line, border-border
- CSS-Variable
- --line-strong
- Wert
- oklch(0.89 0.0068 106.54)
- Hex
- #dbdbd6
- Verwendung
- border-line-strong, border-input
- CSS-Variable
- --band, --hover
- Wert
- oklch(0.9845 0.0026 106.45)
- Hex
- #fafaf8
- Verwendung
- bg-band, hover:bg-hover
- CSS-Variable
- --primary
- Wert
- oklch(0.7022 0.2004 45.1)
- Hex
- #ff6b00
- Verwendung
- bg-primary, text-primary, ring
- CSS-Variable
- --primary-hover
- Wert
- oklch(0.6516 0.1879 44.5)
- Hex
- #e85f00
- Verwendung
- hover:bg-primary-hover
- CSS-Variable
- --primary-foreground
- Wert
- oklch(1 0 0)
- Hex
- #ffffff
- Verwendung
- text-primary-foreground
- CSS-Variable
- --color-destructive
- Wert
- oklch(0.577 0.245 27.325)
- Hex
- #e7000b
- Verwendung
- text-destructive
- CSS-Variable
- --color-destructive-foreground
- Wert
- oklch(0.985 0 0)
- Hex
- #fafafa
- Verwendung
- text-destructive-foreground
- CSS-Variable
- --footer-bg
- Wert
- oklch(0.1582 0.0072 258.37)
- Hex
- #0b0d10
- Verwendung
- bg-footer
- CSS-Variable
- --footer-fg
- Wert
- oklch(1 0 0)
- Hex
- #ffffff
- Verwendung
- text-footer-foreground
- CSS-Variable
- --footer-muted
- Wert
- oklch(0.7461 0.0128 259.82)
- Hex
- #a8adb5
- Verwendung
- text-footer-muted
- CSS-Variable
- --footer-line
- Wert
- oklch(0.2799 0.0141 261.69)
- Hex
- #252930
- Verwendung
- border-footer-line
Der Header nutzt --header-bg = color-mix(in oklab, background 86%, transparent): ein transluzenter Grund, der die aktive Hintergrundfarbe automatisch übernimmt — hell wie dunkel.
--header-bg: color-mix(in oklab, var(--background) 86%, transparent);
Zwei Schriften, keine Ausnahmen
Manrope (variabel 200–800, selbst gehostet als woff2, Fallback Helvetica und Arial) trägt alle Texte. IBM Plex Mono (400 und 500) ist Kickern, Labels und Zahlen vorbehalten: Sie signalisiert Daten, niemals Fliesstext.
Manrope-Schnitte
IBM Plex Mono
Kicker, Formular-Labels, Abschnittsnummern und Kennzahlen. Zwei Schnitte genügen: 400 für Text, 500 für Betonung.
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
Typografische Skala
Digital, das sich rechnet.
- clamp(52px, 4.9vw, 72px)
- line-height 1.04
- letter-spacing -0.045em
- weight 700
- ≤720px: 40px / 1.12
Was wir bauen
- 46px
- line-height 1.12
- letter-spacing -0.035em
- weight 700
- ≤720px: 30px
01 — Grundlagen
- IBM Plex Mono
- 12px
- letter-spacing 0.16em
- uppercase
Fließtext steht in 16px mit einer Zeilenhöhe von 1.6; sekundäre Absätze nutzen die Farbe muted-fg.
- 16px
- line-height 1.6
- Manrope 400
- text-muted-foreground
::selection nutzt primary mit weisser Schrift. Formular-Platzhalter nutzen faint, nie muted-fg.
Strenge Geometrie
Vier Radien, ein Container, eine Headerhöhe. Diese Werte werden nicht von Seite zu Seite neu verhandelt — daraus entsteht die Ruhe der Website.
Radien
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)
Unaufdringlich, vorhersehbar, rücksichtsvoll
Bewegung dient dem Lesen, nie der Show. Übergänge sind kurz, Zustände sichtbar, und alles verschwindet, wenn Besucher weniger Animation verlangen.
Primärer Button
bg-primary → hover:bg-primary-hover, Radius 4px, Text primary-foreground, transition-colors.
Fokus-Ring
:focus-visible zeigt eine 2px-Kontur in primary mit 2px Abstand. Mausfokus erzeugt nie einen Ring.
- Theme hell / dunkel
- 0.25s auf background und color
- Cookie-Notice
- 200ms ease-in-out, ohne Bounce
- Scrolling
- scroll-behavior: smooth
- prefers-reduced-motion
- 0.01ms, eine Iteration, direktes Scrollen
Warum ein striktes Design System alles verändert
Ein Design System ist keine Designer-Spielerei. Es ist eine wirtschaftliche Entscheidung.
Konsistenz schafft Vertrauen. Besucher können nicht benennen, warum eine Website seriös wirkt — sie spüren es in drei Sekunden. Wenn jede Seite dasselbe Orange, dieselbe Titelstärke, denselben Buttonradius nutzt, hört das Gehirn auf zu arbeiten und konzentriert sich auf den Inhalt. Eine Seite, die in jedem Abschnitt die Regeln wechselt, sendet dagegen ein klares Signal: Hier achtet niemand auf Details. Wenn schon die Website nachlässig ist, warum sollte es die Leistung nicht sein?
Ein Token ist eine einmal getroffene Entscheidung. Ohne System wird die Wahl eines Textgraus auf jeder Seite, in jeder Komponente, bei jedem neuen Mitarbeiter wiederholt. Am Ende existieren vierzig fast identische Grautöne und niemand entscheidet. Mit System gibt es muted-fg, es hat einen Wert, und die Frage stellt sich nicht mehr. Ändert sich die Marke, ändern Sie eine Zeile in styles.css und die gesamte Website folgt — hell, dunkel, in allen Sprachen.
Die Entwicklung wird schneller, die Wartung billiger. Eine neue Seite zu bauen wird zum Zusammensetzen: Container .sec, ein Kicker, ein h-section-Titel, ein in line gerahmtes Raster, ein Primary-Button. Es gibt nichts zu erfinden, also nichts im Review zu korrigieren. Über die Lebensdauer einer Website übersteigt die Wartung die Erstellungskosten deutlich — genau dort zahlt sich das System zurück.
Barrierefreiheit ist eingebaut, nicht nachgerüstet. Kontraste sind an der Quelle geprüft: Haupttext erreicht auf Weiss ein sehr hohes Verhältnis, muted-fg bleibt für Fliesstext über der AA-Schwelle. Fokuszustände sind überall sichtbar und identisch, der orange 2px-Ring hängt nie von der Komponente ab. Und prefers-reduced-motion gilt global, nicht pro Komponente. Wer per Tastatur navigiert oder empfindlich auf Bewegung reagiert, ist kein Sonderfall für später.
Performance folgt derselben Logik. Die Schriften sind als woff2 selbst gehostet, nach Unicode-Bereichen zerlegt und mit font-display: swap ausgeliefert — keine Anfrage an Dritte, kein unsichtbarer Text beim Laden. Zwei Familien statt acht. Keine Komponentenbibliothek für drei Buttons. Das Ergebnis ist messbar: Seiten erscheinen in unter einer Sekunde, und diese Geschwindigkeit ist selbst ein Conversion-Argument.
Der Dark Mode entsteht aus der Struktur. Weil keine Komponente eine feste Farbe kennt, heisst dunkel schalten: acht Variablen neu definieren. Kein zweites Layout, keine verstreuten Korrekturen, kein Rückfall einen Monat später. Genau so eine Funktion kostet ein Vermögen, wenn sie improvisiert wird — und fast nichts, wenn das Fundament sauber ist.
Bleibt die Disziplin der Beschränkung, der schwierigste Teil. Es ist verführerisch, einen Verlauf hinzuzufügen, einen Schatten, eine zweite Akzentfarbe. Jede Ergänzung wirkt harmlos, und jede nimmt dem Ganzen Kraft. Fünf Prozent Orange auf einer Seite treffen; Orange überall sagt nichts mehr. Ein nützliches System ist eines, das Nein sagt — darin liegt sein Wert.
Diesen Standard wenden wir bei Kundenprojekten genauso an wie bei unserer eigenen Website. Das Ergebnis ist keine hübschere Seite an sich: Es ist eine Seite, die schneller weiterentwickelt, günstiger gewartet, barrierefreier und glaubwürdiger ist. Über drei Jahre gerechnet ist der Unterschied buchhalterisch sichtbar.
Denselben Standard für Ihre Website?
Beschreiben Sie Ihr Projekt in drei Schritten. Wir melden uns innerhalb eines Werktags mit einer ersten Einschätzung und einer Budget-Grössenordnung.