Brandbook v2.0
25 August 2026
Logo · Mark · Color · Typography · Buttons & forms · Tokens

Two shops.
One brand.

Me Gorgeous sells cosmetics and multicultural hair care since 2007. This is the visual system for megorgeous.nl and megorgeous.eu: logo and mark, color, typography, buttons and forms, and the tokens as code. Every combination shown passes WCAG 2.2 AA. A baseline for the next design pass, not a final identity.

The mark

The U, on its own

The knocked-out U is the wordmark’s most recognizable piece, so it becomes the compact mark for every place the full logo does not fit: favicon, social avatars, app icon, packing slips.

180 · app icon
48
32 · avatar
16 · favicon
on Ink
Color

One red, warm neutrals

The ramp is drawn from the logo artwork. Red 500 is the brand seen big, Red 600 is the same red made accessible for buttons and text, Red 700 handles hover states and text on tints. Neutrals are warm so they sit well next to it. Ratios are WCAG 2.2 contrast. AA means it passes for normal text; large text, 24 px and up or 19 px bold, needs 3:1.

Red 500 #E64938

The logo red. Display headlines from 24 px, illustration, accents. Too light for small text.

on white 3.9:1 large only white text 3.9:1 large only
Red 600 #D52D1B

The working red. Buttons, links, sale prices, any red text below 24 px.

on white 5.0:1 AA on paper 4.7:1 AA white text 5.0:1 AA
Red 700 #A32214

Hover and active states, red text on Blush badges.

on blush 6.2:1 AA white text 7.5:1 AA
Blush #FBE5E4

Tinted panels, sale badges, campaign cards. Already in use on both shops.

ink text 13.4:1 AA red 700 text 6.2:1 AA
Paper #FAF9F7

Page and section background.

ink text 15.3:1 AA red 600 text 4.7:1 AA
White #FFFFFF

Cards, product tiles, the header. The logo always sits on White, Paper or Blush.

ink text 16.1:1 AA
Ink #212121

All reading text and the footer background, on both shops.

white text 16.1:1 AA
Gray 600 #6E6963

Secondary text, old prices, captions. Warm, and passes AA on White, Paper and Blush.

on white 5.4:1 AA on blush 4.5:1 AA

Functional colors

A shop needs more than brand color: stock states, delivery promises, form feedback. Two pairs and one rule.

Success #2A6F47 · tint #E3F2E8
Op voorraad, morgen in huis

Stock and delivery promises, USP checks, success toasts. One green for text and icons, one tint for panels.

on white 6.1:1 AA on tint 5.2:1 AA
Warning #92400E · tint #FEF3C7
Nog 2 op voorraad

Low stock, delayed delivery, notice panels.

on white 7.1:1 AA on tint 6.4:1 AA
Error Red 600 + Red 700
Vul een e-mailadres in

No new color. Field borders in Red 600, message text in Red 700, always with an icon. Never plain brand red alone, otherwise errors and sale styling blur.

red 700 on white 7.5:1 AA red 700 on blush 6.2:1 AA
In use

Three reds, at work

€ 27,99 € 18,40 Bespaar 20% Footer · white on Ink Bekijk alle aanbiedingen

Primary action white on Red 600, hover Red 700, sale price Red 600 next to Gray 600, badge Red 700 on Blush, footer white on Ink, links Red 600 underlined. Every combination passes AA.

Typography

Optima Nova speaks, Inter works

Optima Nova carries the wordmark’s flared letterforms into headings, the wordmark itself is set in Optima Bold. Display only. Inter does everything else: body, navigation, prices, forms. The whole system is three variants, nothing more.

Me GorgeoUs!
ABCDEFGHIJKLMNOPQRSTUVWXYZ abcdefghijklmnopqrstuvwxyz 0123456789 €!?

Optima Nova, semibold. Headings and display only, in Ink or Red. One cut, one weight, by design. Never synthesize bold or light. The white U on a red block is the wordmark’s detail and may return in display headlines, never in running text.

Inter

Regular 400 carries all reading text at 16 px over 1.5 line height. Semibold 600 does everything that needs weight: buttons, prices, labels, eyebrows, emphasis. No bold, no italics. Self-hosted on .nl today, keep it that way.

Inter 400 · 600, latin subset, woff2

Display · 39/44Alles voor krullend haar
H1 · 31/38Haarproducten
H2 · 25/32Populaire producten
H3 · 20/28Verzorging per haartype
Body · 16/24Vind hier alle producten die scherp afgeprijsd zijn in ons assortiment.
Small · 13/20Gratis verzending vanaf € 35 binnen NL en BE.

Prices

Sale € 27,99 € 18,40 Regular € 12,95
Tabular figures in carts and totals € 6,99
€ 18,40
€ 127,50

All amounts in Inter 600. Old price Gray 600 with strikethrough, sale price Red 600, regular price Ink, red never marks a regular price. In carts, totals and tables set font-variant-numeric: tabular-nums so amounts align. Dutch notation: euro sign, non-breaking space, comma decimals.

Buttons & forms

One button, one field

One button for both shops, states defined. Every interactive element gets the same focus ring and a 44 px touch height.

Primary

default
hover
focus
loading
disabled

Secondary and text

default
hover

Input

Input, error

Vul een geldig e-mailadres in.
Tokens

Copy, paste, ship

The book as code. The Tailwind block drops into the Hyvä theme on .nl, the CSS variables cover everything custom. Spacing stays on the 4 px scale, radius is 4 for badges and 8 for the rest. One shadow, for the sticky header once it is scrolled and for the search panel. The page behind the search panel dims with the scrim.

CSS custom properties
:root {
  /* color */
  --red-500: #E64938;   /* logo red, display text from 24 px, accents */
  --red-600: #D52D1B;   /* buttons, links, sale prices */
  --red-700: #A32214;   /* hover, text on blush, error messages */
  --blush:   #FBE5E4;
  --paper:   #FAF9F7;
  --white:   #FFFFFF;
  --ink:     #212121;   /* reading text, footer bg */
  --gray:    #6E6963;   /* secondary text, old prices */
  --line:    #E9E2DB;   /* decorative hairlines only */
  --border:  #958E86;   /* input borders, 3.2:1 on white */
  --success: #2A6F47;  --success-tint: #E3F2E8;
  --warning: #92400E;  --warning-tint: #FEF3C7;

  /* type, three variants: display 600, body 400, strong 600 */
  --font-display: 'Optima Nova', Optima, Candara, sans-serif;
  --font-body: Inter, 'Helvetica Neue', Arial, sans-serif;
  --weight-body: 400; --weight-strong: 600; --weight-display: 600;
  --text-display: 39px; --text-h1: 31px; --text-h2: 25px;
  --text-h3: 20px; --text-body: 16px; --text-small: 13px;

  /* shape and space, 4 px scale */
  --radius-badge: 4px; --radius-ui: 8px; --radius-pill: 999px;
  --space-1: 4px;  --space-2: 8px;  --space-3: 12px; --space-4: 16px;
  --space-6: 24px; --space-8: 32px; --space-12: 48px; --space-16: 64px;
  --focus-ring: 0 0 0 2px var(--white), 0 0 0 4px var(--red-600);
  --shadow-header: 0 8px 24px rgba(33,33,33,.06);  /* the only shadow: the sticky header once scrolled, the search panel and the minicart */
  --scrim: rgba(33,33,33,.32);  /* Ink at 32 percent, dims the page behind the search panel and the minicart */
}
tailwind.config.js · theme.extend · Hyvä theme on .nl
colors: {
  primary:   { lighter: '#E64938', DEFAULT: '#D52D1B', darker: '#A32214' },
  secondary: { lighter: '#FAF9F7', DEFAULT: '#6E6963', darker: '#212121' },
  background: '#FAF9F7',
  blush: '#FBE5E4',
  line:  '#E9E2DB',
  scrim: 'rgba(33,33,33,0.32)',
  success: { DEFAULT: '#2A6F47', tint: '#E3F2E8' },
  warning: { DEFAULT: '#92400E', tint: '#FEF3C7' },
},
boxShadow: {
  header: '0 8px 24px rgba(33,33,33,.06)',
},
fontFamily: {
  sans:    ['Inter', 'Helvetica Neue', 'Arial', 'sans-serif'],
  display: ['"Optima Nova"', 'Optima', 'Candara', 'sans-serif'],
},

Adoption on .nl is one PR: merge the block above into the Hyvä theme’s tailwind.config.js, and buttons, links, sale prices, badges and the footer pick the system up through the primary, secondary and blush utilities.