Kitchen Guide · Design System · v1.0 · 7 August 2026

Überall.
Sicher.
Gesetzt.

One place for every colour, size and component the website, the print files and the app all draw from. Built with the system it documents — the headings on this page are the same variable typeface, at the same widths, that the card and the site now use.

TypefaceArchivo — SIL OFL 1.1
HandwritingCaveat — SIL OFL 1.1
Licence costNone, anywhere
Contrast floorWCAG AA on every pair

Foundations

Colour

Three card colours, each in three steps. The light and dark steps are derived from your base colour in OkLCH at constant hue, so the same step means the same thing in all three — and every dark step lands on exactly 7:1 against white.

Brand surfaces — the whole website palette

White #FFFFFFPage ground
Off-white #F7F4ECAlternating band
Green light #EAF6E9Tint, step circles
Green #80A57DFills only, never small text
Green dark #3D623BText, buttons, borders

Off-white is a warm neutral, not a green tint — it gives the cool greens something to sit against and reads as paper rather than as a weak green.

The rule

Green shades appear only with white and off-white. Pink and blue are card and illustration colours only — they never appear as site chrome, buttons, links, headings or section bands. The card the customer is designing must be the most colourful thing on the screen.

Card + illustration colours — not site chrome

Pink light#FFECF1
Pink#ED93B0
Pink dark#913C5B
Blue light#E5F4FF
Blue#94C7EA
Blue dark#2A5E7E
Name blue #322F82The printed name, identical on all three cards

The base row is the colour behind the logo on the printed card. The dark step exists so a pink or blue card can still carry a legible outline or label on the card itself.

Neutrals and the one semantic colour

Ink#1C211CBody text
Muted#677067Secondary, captions
Line#DAE0D9Hairlines, borders
Alert#E32226Allergy warnings only
NeverAlert red is never decorative. It carries EU 1169/2011 meaning and nothing else.

Ink, muted and line each carry a trace of the green hue rather than being pure grey, so the neutrals read as part of the family instead of borrowed.

Foundations

Colour + text

Which text colour is allowed on which surface. Every combination marked AA passes WCAG at body-text size; lg passes only at 24px or 19px bold and above.

Texton Whiteon Off-whiteon Green lighton Green dark
Ink #1C211C16.36:1 AA14.88:1 AA14.69:1 AA2.34:1 no
Muted #6770675.13:1 AA4.67:1 AA4.61:1 AA1.42:1 no
Green dark #3D623B6.98:1 AA6.35:1 AA6.27:1 AA
White #FFFFFF6.98:1 AA
Alert #E322264.64:1 AA4.22:1 lg4.17:1 lg1.50:1 no
Green #80A57D2.76:1 fills only2.51:1 fills only2.48:1 fills only2.53:1 fills only

Two things this table decides for you

Base green #80A57D never carries text at any size — it is a fill colour. And alert red belongs on white; on the tinted surfaces keep it for icons and large text, never a sentence.

The approved pairs, in use

Ink on white

Zeige beim Bestellen deinen Kitchen Guide vor und gib ihn mit in die Küche.

Green dark on off-white

Gut und sicher essen.

Ink and muted on green light

Deine Allergene

Wähle die Lebensmittelallergene aus.

White on green dark

Jetzt bestellen — in zwei Minuten konfiguriert.

Typography

Two typefaces, no licence

Archivo does the work of a whole family. It is one variable file carrying weight 100–900 and width 62–125 %, so text can be compressed to fit a fixed box on the card without changing typeface — the thing Acumin Variable Concept was being used for, under a licence that costs nothing and can be handed to a printer.

The width axis — one font, set at four widths

Überall. Sicher. Essen.wdth 62
Überall. Sicher. Essen.wdth 80 — display default
Überall. Sicher. Essen.wdth 100 — body default
Überall. Sicher.wdth 125

Same file, same size, same weight. On the card this is how a long name is made to fit its box — dial the width down rather than shrinking the type or switching to a condensed family.

Weight

Dein Allergiepass für unterwegs — 300 Light
Dein Allergiepass für unterwegs — 400 Regular
Dein Allergiepass für unterwegs — 600 Semibold
Dein Allergiepass für unterwegs — 700 Bold

Four weights are enough for the whole system. Umlauts and ß are covered — Archivo carries 641 glyphs across 200+ languages, so German needs no fallback.

Caveat — the printed name, and nothing else

Helene R. / Klasse 2a

Caveat replaces the Adobe-hosted dolce. It is a variable handwriting face (weight 400–700) with full German coverage, legible at card size, and free to embed in a print file. It is used for the customer's name on the card only — never for web copy, never for headings.

The name is always #322F82, on all three card colours. It is the one element that does not take its colour from the card — holding it constant is what makes a green, a blue and a pink card read as the same document rather than three different products.

Typography

Every font size on the site

Most sizes are fluid — they scale continuously with the window between a minimum and a maximum, so a single number would be wrong more often than right. Both ends are given. Where desktop and phone use different scales, both are listed.

Claim 26 → 82 px desktop
26 → 44 px phone
700 · wdth 80 · lh 1.05
Überall. Sicher. Essen.
Hero subline 17 → 30 px desktop
15 → 22 px phone
400 · wdth 100 · lh 1.4
Dein Allergiepass für unterwegs.
Section heading 28 → 36 px
700 · wdth 80 · lh 1.15
So einfach funktioniert’s:
Label 12 px fixed
600 · wdth 100 · +0.09em · uppercase
Gut und sicher essen.
Lead paragraph 17 → 20 px
400 · wdth 100 · lh 1.55
Zeige beim Bestellen deinen Kitchen Guide vor und gib ihn mit in die Küche. So vermeidest du lange Erklärungen und Übertragungsfehler.
Step number 22 → 28 px
700 · wdth 80 · tabular
01
Step title 15 → 18 px
600 · wdth 90 · lh 1.2
Immer dabeihaben
Configurator heading 20 → 26 px
600 · wdth 85 · lh 1.2
Deine Allergene
Explanatory text 14 px fixed
400 · wdth 100 · lh 1.5
Wähle die Lebensmittelallergene aus, die auf deinem Kitchen Guide stehen sollen.
Body 16 px fixed
400 · wdth 100 · lh 1.65
Standard running text. Every paragraph on the site that is not a lead or a caption sits at this size.
Micro label 10 px fixed
600 · wdth 100 · +0.1em · uppercase
Vorderseite  ·  Rückseite
Button 15 px fixed
600 · wdth 100 · +0.015em
Printed name 54 px on the card
Caveat 600
Helene R. / Klasse 2a

Components

Components and their states

Every interactive element in its resting, selected, focused and unavailable state. Focus is shown as a permanent state here; in use it appears on keyboard navigation only. Hover is the only state that changes colour: primary darkens to ink, secondary lifts into the green tint, pills and chips take a green edge. Focus never moves the fill — it adds a soft green halo hugging the edge, and it is the only state that does, so a focused pill can never be mistaken for a selected one. The quiet button is the single exception: it focuses by filling with light green rather than by halo.

Button — primary

Button — secondary

Button — quiet

Pill — package choice

Chip — allergen, unselected + selected

Field — default, focus, error

Bitte gib einen Namen ein.

Card colour selector — the only place pink and blue appear

Click a card to select it

Selected takes a thicker border in its own dark step — never a green ring around a blue card. These are live — click one and it takes its own dark step: green #3D623B, blue #2A5E7E, pink #913C5B, never a green ring around a blue card. Unselected takes the same soft line the allergen chips rest on, so the two controls read as one system. Selecting thickens that same line rather than adding a second one, which is why the swatch never changes size between states. Each dark step sits at 7:1 against the white behind it, which is what makes the selection read from across the row; against its own fill the green is the weakest of the three at 2.52:1, so it leans on that outer edge more than blue or pink do.

Step marker

01

Immer dabeihaben

Die Karte passt in jede Brieftasche und ist sofort zur Hand.

Safety note — the only use of alert red

Achtung, der Verzehr hier aufgeführter Allergene kann auch in kleinsten Mengen lebensbedrohlich für mich sein.

Red is reserved for allergy meaning under EU 1169/2011. It is never used for a delete button, a sale badge or an accent.

Handover

Tokens

Drop-in for the website today, and the same names carry over to the app. Nothing here is platform-specific.

/* Kitchen Guide — design tokens v1.0 */
:root {
  /* Surfaces — website chrome */
  --kg-white:       #FFFFFF;
  --kg-offwhite:    #F7F4EC;
  --kg-green-light: #EAF6E9;
  --kg-green:       #80A57D;  /* fills only, never text */
  --kg-green-dark:  #3D623B;  /* text, buttons, borders  */

  /* Card + illustration only — never site chrome */
  --kg-pink-light:  #FFECF1;
  --kg-pink:        #ED93B0;
  --kg-pink-dark:   #913C5B;
  --kg-blue-light:  #E5F4FF;
  --kg-blue:        #94C7EA;
  --kg-blue-dark:   #2A5E7E;
  --kg-name-blue:   #322F82;  /* printed name, all 3 cards */

  /* Neutrals + semantic */
  --kg-ink:         #1C211C;
  --kg-muted:       #677067;
  --kg-line:        #DAE0D9;
  --kg-alert:       #E32226;  /* allergy meaning only */

  /* Type */
  --kg-font:        'Archivo', Helvetica, Arial, sans-serif;
  --kg-font-hand:   'Caveat', cursive;

  --kg-text-claim-d:   clamp(26px, 4.6vw, 82px);
  --kg-text-claim-m:   clamp(26px, 8vw,   44px);
  --kg-text-hero-sub-d:clamp(17px, 2.3vw, 30px);
  --kg-text-hero-sub-m:clamp(15px, 4.4vw, 22px);
  --kg-text-h2:        clamp(28px, 4vw,   36px);
  --kg-text-h3:        clamp(20px, 2.2vw, 26px);
  --kg-text-step-num:  clamp(22px, 2.4vw, 28px);
  --kg-text-step-ttl:  clamp(15px, 1.6vw, 18px);
  --kg-text-lead:      clamp(17px, 2vw,   20px);
  --kg-text-body:      16px;
  --kg-text-btn:       15px;
  --kg-text-ui:        14px;
  --kg-text-label:     12px;
  --kg-text-micro:     10px;

  /* Width axis — the display/body split is a width, not a family */
  --kg-wdth-display: 80;
  --kg-wdth-title:   90;
  --kg-wdth-body:    100;

  --kg-radius-btn:  8px;
  --kg-radius-card: 10px;
  --kg-radius-pill: 100px;
}

Loading the fonts

Both faces are on Google Fonts under the SIL Open Font License — free for the website, the print files, the app, and to hand to a printer or to anyone else. Request Archivo with both axes so the width axis is actually available: family=Archivo:wdth,wght@62..125,100..900. Asking for the weight alone silently gives you a fixed-width font.