Oatly — design system & UI screens
Chaotic DIY-zine editorial layout inside a faux browser window; a chunky uppercase manifesto beside hand-lettered 'PEE FOR THE PLANET' and 'Look Book Vol 3' NEWS tiles. Deliberately anti-slick oat-milk branding.
This is a static, crawlable rendering for search & AI engines. The interactive version — filters, live decode console, copy & export — is at https://mozaika.design/website/oatly.
Decoded design system
Oatly's decoded design system: background #FFFFFF, text #000000, accent #98C5D3, link #98C5D3, primary #E43E39; type scale h1 32px / h2 14px / body 16px; 8px spacing base; 6px base radius. The single interactive/action color is #000000 — used only on interactive or must-notice elements (buttons, links, key highlights), never on large fills.
Color roles
| Role | Value |
|---|---|
| bg | #FFFFFF |
| surface | #EFEFEF |
| border | #D8D8D8 |
| text | #000000 |
| text_muted | #606060 |
| primary | #E43E39 |
| accent | #98C5D3 |
| link | #98C5D3 |
| secondary | #F8C8D8 |
| button_bg | #000000 |
| button_text | #FFFFFF |
Using these colors
- Action color
#000000— the single interactive color; only on things you click or must notice, never large fills. accent,linkare all#98C5D3— one role, not several (the action color).- accent
#98C5D3— accent for emphasis — keep it rare on the page. - primary
#E43E39— a brand color — but the call-to-action uses #000000, not this. - secondary
#F8C8D8— optional secondary accent — LOW decode confidence; use rarely (a status color or a single decorative moment) or omit it entirely. Prefer one accent unless the reference clearly shows two.
Typography
- Heading: Margo Pro Bold
- Body: Margo Pro Regular
- h1: 32px
- h2: 14px
- body: 16px
Spacing
- base unit: 8px
- scale: 2px, 6px, 8px, 11px, 12px, 16px, 20px, 21px, 24px, 30px
Radii
- base: 6px
- button: 9999px
Shadows (elevation)
- card:
rgb(0, 0, 0) 2px 2px 0px 0px
Motion
Micro-interactions run at 300ms (dominant) with ease.
- durations: 300ms · 400ms
- easings:
ease·ease-in-out - animated properties: translate, color
Native design tokens
| Token | Value |
|---|---|
--color-primary-black | #000000 |
--color-primary-white | #ffffff |
--color-primary-blue | #98c5d3 |
--color-primary-pink | #f8c8d8 |
--color-primary-yellow | #fdcf85 |
--color-primary-purple | #a67eb1 |
--color-primary-gray | #c6c6c6 |
--color-primary-brown | #a0632d |
--color-secondary-medium-gray | #888888 |
--color-secondary-dark-gray | #444444 |
…and 90 more measured on the page.
Button states (measured)
- primary hover: color
#C6C6C6 - primary focus: outline
2px solid rgb(0, 0, 0)
Layout (measured)
- container max-width:
640px - nav: 900px fixed
Overlay recipe (measured)
dialog panel: #FFFFFF · radius 0px
Responsive (measured)
- breakpoints: 375px · 400px · 414px · 480px · 768px · 960px
- mobile (390px): hero 28px · nav hamburger
Full design system, per-section tokens & DESIGN.md / Tailwind / CSS exports →