Duolingo — design system & UI screens
Centered hero pairs a clustered cast of chunky 3D Duolingo characters with the "free, fun, and effective way to learn a language!" headline and a green pill "GET STARTED" CTA above a blue outlined sign-in button. The signature device is the alternating left/right rhythm of oversized 3D character vignettes against pure white, each titled in Duolingo's heavy rounded display type in alternating green/navy, punctuated by a deep-indigo "SUPER DUOLINGO" band and a flag-row language picker. A vivid grass-green bottom CTA panel with a jar-and-coins illustration leads into a dense multi-column green footer.
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/duolingo.
Decoded design system
Duolingo's decoded design system: background #FFFFFF, text #777777, accent #100F3E, link #100F3E, primary #1CB0F6; type scale h1 32px / h2 48px / body 17px; 4px spacing base; 3px base radius. The single interactive/action color is #100F3E — used only on interactive or must-notice elements (buttons, links, key highlights), never on large fills.
Color roles
| Role | Value |
|---|---|
| bg | #FFFFFF |
| surface | #F6F6F6 |
| border | #EAEAEA |
| text | #777777 |
| text_muted | #AAAAAA |
| primary | #1CB0F6 |
| accent | #100F3E |
| link | #100F3E |
| secondary | #0000EE |
| button_bg | #100F3E |
| button_text | #000437 |
Using these colors
- Action color
#100F3E— the single interactive color; only on things you click or must notice, never large fills. accent,link,button_bgare all#100F3E— one role, not several (the action color).- accent
#100F3E— THE accent / action color — interactive & must-notice only (buttons, links, focus, one key highlight); never large fills or backgrounds. Scarcity is what makes it read as designed. - primary
#1CB0F6— a brand color — but the call-to-action uses #100F3E, not this. - secondary
#0000EE— 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: Duolingo Sans
- Body: Duolingo Sans
- h1: 32px
- h2: 48px
- body: 17px
Spacing
- base unit: 4px
- scale: 12px, 16px, 23px, 24px, 30px, 40px, 48px, 70px, 80px, 96px
Radii
- base: 3px
- button: 12px
Motion
Micro-interactions run at 200ms (dominant) with ease.
- durations: 200ms · 300ms · 400ms
- easings:
ease·cubic-bezier(0.22, 1, 0.36, 1) - animated properties: transform, border-color, filter
Native design tokens
| Token | Value |
|---|---|
--web-ui_button-border-radius | 16px |
--text-heading-weight-medium | 700 |
--text-label-weight-large | 700 |
--text-heading-weight-xsmall | 700 |
--text-heading-weight-small | 700 |
--text-body-weight-bold | 700 |
--text-caption-weight-bold | 700 |
--text-body-weight-spacious-bold | 700 |
--text-body-weight-spacious | 500 |
--text-label-weight-medium | 700 |
…and 29 more measured on the page.
Layout (measured)
- container max-width:
990px - nav: 900px
- common grid: 2 columns
Motion choreography (measured)
Scroll reveal: 3 elements rest at opacity 0, animate in over 400ms.
Responsive (measured)
- breakpoints: 530px · 550px · 699px · 768px · 896px · 1065px
- mobile (390px): hero 32px · nav hamburger
Full design system, per-section tokens & DESIGN.md / Tailwind / CSS exports →
Screens
Sections (12)
- Hero — Centered hero with 3D mascot cluster and dual CTAs
- Banner — Flag-row language picker strip
- Feature — 'free. fun. effective.' with phone screenshot
- Feature — 'backed by science' illustrated row
- Feature — 'stay motivated' illustrated row
- Feature — 'personalized learning' illustrated row
- Gallery / Showcase — 'learn anytime, anywhere' floating device scene
- Banner — 'SUPER DUOLINGO' dark promo band
- Feature — 'duolingo english test' row
- Feature — 'duolingo for schools' and 'duolingo abc' product rows
- CTA / Sign-up — Green grass closing CTA with coin-jar mascot
- Footer — Dense multi-column green footer