Overview
Miro positions itself as the AI-powered visual workspace through a confident, slightly playful brand voice. The homepage opens with a stark white canvas anchored by a small canary-yellow Miro wordmark in the top-left, a black-pill primary CTA "Get started free" and a secondary "Book a demo" outline pill — then dramatic real-Miro-board mockup imagery (sticky notes, kanban, mind maps) carries the visual weight. Across deeper surfaces, the system breaks open: pastel feature cards (rose, teal, coral, yellow) echo the actual sticky-note color palette of the live whiteboard product, and customer story cards reuse those tints to differentiate brand vignettes.
Roobert PRO — Miro's custom display face — anchors every typographic surface, from the 80px hero display down to 11px micro labels. The face's slightly rounded, geometric character pairs naturally with the playful product photography and the friendly product positioning. Black-pill primary buttons ({rounded.full}) dominate marketing CTAs; the brand color, signature canary yellow ({colors.brand-yellow}), is reserved for the wordmark, top promo banners, and "yellow tag" feature pills — never as a primary CTA. The 4-tier pricing comparison (Free / Starter / Business / Enterprise) leads into the densest surface in the system: a feature comparison table that runs ~80 rows deep across multiple section dividers.
Key Characteristics:
- Stark white canvas + Miro wordmark in canary yellow ({colors.brand-yellow}) as the recognizable opening signature
- Black-pill primary CTAs ({colors.primary} +
{rounded.full}) as the dominant interactive element
- Pastel feature cards (yellow, rose, coral, teal, mint) that echo the actual sticky-note palette
- Roobert PRO across every UI surface; geometric, slightly rounded character
- Real Miro-board mockup imagery used as feature illustrations
- 4-tier pricing card grid + dense feature comparison table
- Massive dark footer ({colors.footer-bg}) with multi-column links + app-store badges
Colors
Source pages: miro.com/ (homepage), /pricing/ (4-tier comparison), /products/ai-workflows/ (AI product), /agile/ (vertical landing), /customers/ (story directory). Token coverage was identical across all five pages.
Brand & Accent
- Miro Yellow ({colors.brand-yellow}): The brand's recognizable canary yellow — wordmark color, top promo banner, "yellow tag" pills
- Yellow Deep ({colors.brand-yellow-deep}): Darker variant for hover states and emphasis
- Yellow Light ({colors.yellow-light}): Pale yellow background tint for tag chips
- Yellow Dark ({colors.yellow-dark}): Yellow-tag text color (dark olive) for chip foreground
- Brand Blue ({colors.brand-blue}): Action blue for inline links and featured-pricing-tier border
- Blue Pressed ({colors.blue-pressed}): Pressed-state blue
- Brand Coral ({colors.brand-coral}): Coral accent for warm callouts
- Coral Light ({colors.coral-light}): Pale coral for feature card backgrounds
- Coral Dark ({colors.coral-dark}): Coral-tag text color (deep wine)
- Brand Rose ({colors.brand-rose}): Soft rose-pink for feature card variants
- Brand Teal ({colors.brand-teal}): Brand teal
- Teal Light ({colors.teal-light}): Pale teal for feature card backgrounds
- Moss Dark ({colors.moss-dark}): Deep teal-green text color
- Brand Pink ({colors.brand-pink}): Pale pink for soft callouts
- Brand Orange Light ({colors.brand-orange-light}): Soft orange for feature card backgrounds
Surface
- Canvas White ({colors.canvas}): Page background and primary card surface
- Surface ({colors.surface}): Subtle section backgrounds, search-pill rest
- Surface Soft ({colors.surface-soft}): Quieter section divisions
- Surface Yellow ({colors.surface-yellow}): Pale yellow-tinted surface for tag chip
- Surface Pricing Featured ({colors.surface-pricing-featured}): Pale lavender for featured pricing tier
- Hairline ({colors.hairline}): 1px borders and primary dividers
- Hairline Soft ({colors.hairline-soft}): Quieter table-row dividers
- Hairline Strong ({colors.hairline-strong}): Stronger 1px border for inputs
Text
- Ink Deep ({colors.ink-deep}): Headlines on lighter feature cards
- Ink ({colors.ink}): Primary headlines and body text
- Charcoal ({colors.charcoal}): Body emphasis text
- Slate ({colors.slate}): Secondary text, metadata
- Steel ({colors.steel}): Tertiary text, footer links
- Stone ({colors.stone}): Captions, muted labels
- Muted ({colors.muted}): Disabled labels, input placeholders
- On Dark ({colors.on-dark}): White text on dark surfaces
- On Dark Muted ({colors.on-dark-muted}): Reduced-opacity white on dark
Semantic
- Success Accent ({colors.success-accent}): Confirmation/success indicator green
- Brand Red ({colors.brand-red}): Soft red for error backgrounds
- Brand Red Dark ({colors.brand-red-dark}): Stronger red for error borders
Typography
Font Family
Roobert PRO (primary): Miro's custom geometric sans-serif typeface. Used across every UI surface from oversized 80px hero displays to 11px micro labels. The face has a slightly rounded, friendly character that matches the brand's playful product positioning. Fallbacks: Noto Sans, -apple-system, BlinkMacSystemFont, sans-serif.
Hierarchy
| Token |
Size |
Weight |
Line Height |
Letter Spacing |
Use |
{typography.hero-display} |
80px |
500 |
1.05 |
-2px |
Marketing hero ("See how teams get great done with Miro") |
{typography.display-lg} |
60px |
500 |
1.10 |
-1.5px |
Major section openers |
{typography.heading-1} |
48px |
500 |
1.15 |
-1px |
Page-level headlines |
{typography.heading-2} |
36px |
500 |
1.20 |
-0.5px |
Subsection headlines |
{typography.heading-3} |
28px |
500 |
1.25 |
0 |
Card titles |
{typography.heading-4} |
22px |
500 |
1.30 |
0 |
Feature tile titles |
{typography.heading-5} |
18px |
500 |
1.40 |
0 |
FAQ questions, smaller cards |
{typography.subtitle} |
18px |
400 |
1.50 |
0 |
Hero subtitle |
{typography.body-md} |
16px |
400 |
1.50 |
0 |
Primary body text |
{typography.body-md-medium} |
16px |
500 |
1.50 |
0 |
Logo wall labels |
{typography.body-sm} |
14px |
400 |
1.50 |
0 |
Secondary body, table cells |
{typography.body-sm-medium} |
14px |
500 |
1.50 |
0 |
Filter dropdowns, button labels |
{typography.caption} |
13px |
400 |
1.40 |
0 |
Helper text |
{typography.caption-bold} |
13px |
600 |
1.40 |
0 |
Badge labels, tag chips |
{typography.micro} |
12px |
500 |
1.40 |
0 |
Footer microcopy |
{typography.micro-uppercase} |
11px |
600 |
1.40 |
0.5px |
Section dividers in tables |
{typography.button-md} |
14px |
500 |
1.30 |
0 |
Pill button labels |
{typography.stat-display} |
64px |
500 |
1.10 |
-1.5px |
"100M+ users" stat callouts |
Principles
- Tight hero leading (1.05) creates magazine-grade display headlines on the 80px hero
- Negative letter-spacing progression — display sizes use -2px to -1.5px; smaller headings relax to 0
- Stat-display token (64px / 500) for marketing stat callouts
- Single weight scale — 400 (body), 500 (medium emphasis + headings), 600 (badges and uppercase). Roobert PRO does not use 700 in this system.
Layout
Spacing System
- Base unit: 4px (8px primary increment)
- Tokens:
{spacing.xxs} (4px) · {spacing.xs} (8px) · {spacing.sm} (12px) · {spacing.md} (16px) · {spacing.lg} (20px) · {spacing.xl} (24px) · {spacing.xxl} (32px) · {spacing.xxxl} (40px) · {spacing.section-sm} (48px) · {spacing.section} (64px) · {spacing.section-lg} (96px) · {spacing.hero} (120px)
- Section rhythm: Marketing pages use
{spacing.section-lg} (96px); pricing comparison tightens to {spacing.section} (64px); customer story stack uses {spacing.xxl} (32px)
- Card internal padding:
{spacing.xl} (24px) for compact cards; {spacing.xxl} (32px) for feature panels
Grid & Container
- Marketing pages use 1280px max-width with 32px gutters
- Pricing page renders 4-tier card row at desktop (Free / Starter / Business / Enterprise)
- Customer stories page uses 2-column grid with filter dropdowns
- AI Workflows page uses 2-column hero, then 3-up feature grid
Whitespace Philosophy
Marketing surfaces give content generous breathing room — {spacing.hero} (120px) hero padding gives the small wordmark room to breathe. Pricing surfaces tighten dramatically.
Elevation & Depth
The system runs predominantly flat with strategic depth on hero mockups.
| Level |
Treatment |
Use |
| 0 (flat) |
No shadow; {colors.hairline-soft} border |
Default cards, table rows, form inputs |
| 1 (subtle) |
rgba(5, 0, 56, 0.04) 0px 1px 2px 0px |
Subtle hover-elevated tiles |
| 2 (card) |
rgba(5, 0, 56, 0.06) 0px 4px 12px 0px |
Standard feature cards |
| 3 (mockup) |
rgba(5, 0, 56, 0.08) 0px 12px 32px -4px |
Hero whiteboard mockup framing |
| 4 (modal) |
rgba(5, 0, 56, 0.12) 0px 16px 48px -8px |
Modals, dropdowns |
Decorative Depth
- The atmospheric depth on Miro's hero comes from the live-product-board mockup illustrations — sticky notes layered at z-offsets, color-block tints behind whiteboard frames
- Pastel feature cards carry their own visual weight via saturated background color
- Customer-story cards layer dark photographic content with overlay scrims
Shapes
Border Radius Scale
| Token |
Value |
Use |
{rounded.xs} |
4px |
Small chips, micro-controls |
{rounded.sm} |
6px |
Discount badges |
{rounded.md} |
8px |
Inputs, search-pill |
{rounded.lg} |
12px |
Standard cards, table containers |
{rounded.xl} |
16px |
Pricing cards, feature panels |
{rounded.xxl} |
20px |
Larger feature cards |
{rounded.xxxl} |
28px |
Pastel feature cards (yellow, rose, coral, teal) |
{rounded.feature} |
32px |
Hero CTA banner cards |
{rounded.full} |
9999px |
All buttons, pill tabs, badges |
Photography Geometry
- Real Miro board mockups render with
{rounded.xl} (16px) corners and a subtle drop shadow
- Customer story cards use
{rounded.xxxl} (28px) corners with full-bleed photography
- Template card thumbnails use
{rounded.xl} (16px) with photographic content
- Customer logos wall presents wordmarks inline at consistent 100px height
Components
Per the no-hover policy, hover states are NOT documented. Default and pressed/active states only.
Buttons
button-primary — Black pill primary CTA, the dominant action ("Get started free").
- Background
{colors.primary}, text {colors.on-primary}, typography {typography.button-md}, padding 12px 24px, rounded {rounded.full}.
- Pressed state
button-primary-pressed lifts to {colors.charcoal}.
- Disabled state
button-primary-disabled uses {colors.hairline} background and {colors.muted} text.
button-yellow — Brand-yellow pill for moments of brand emphasis.
- Background
{colors.brand-yellow}, text {colors.primary}, typography {typography.button-md}, padding 12px 24px, rounded {rounded.full}.
button-blue — Brand-blue pill for inline action callouts.
- Background
{colors.brand-blue}, text {colors.on-primary}, typography {typography.button-md}, padding 12px 24px, rounded {rounded.full}.
button-secondary — Outlined pill for secondary actions ("Book a demo").
- Background transparent, text
{colors.ink}, border 1px solid {colors.hairline-strong}, typography {typography.button-md}, padding 12px 24px, rounded {rounded.full}.
button-on-dark — White pill for dark CTA banners.
- Background
{colors.on-dark}, text {colors.primary}, typography {typography.button-md}, padding 12px 24px, rounded {rounded.full}.
button-ghost — Quieter rectangular ghost button.
- Background transparent, text
{colors.ink}, typography {typography.button-md}, padding 8px 12px, rounded {rounded.md}.
button-link — Inline text link.
- Background transparent, text
{colors.brand-blue}, typography {typography.body-sm-medium}, padding 0.
button-icon-circular — 36×36px circular utility button.
- Background
{colors.canvas}, text {colors.ink}, border 1px solid {colors.hairline}, rounded {rounded.full}.
Cards & Containers
card-base — Standard content card.
- Background
{colors.canvas}, rounded {rounded.xl}, padding {spacing.xl}, border 1px solid {colors.hairline-soft}.
card-feature — White feature card with larger 28px corners.
- Background
{colors.canvas}, rounded {rounded.xxxl}, padding {spacing.xxl}, border 1px solid {colors.hairline-soft}.
card-feature-yellow — Pastel-yellow feature card.
- Background
{colors.brand-yellow}, text {colors.primary}, rounded {rounded.xxxl}, padding {spacing.xxl}.
card-feature-coral — Pastel-coral feature card variant.
- Background
{colors.coral-light}, text {colors.primary}, rounded {rounded.xxxl}, padding {spacing.xxl}.
card-feature-teal — Pastel-teal feature card variant.
- Background
{colors.teal-light}, text {colors.primary}, rounded {rounded.xxxl}, padding {spacing.xxl}.
card-feature-rose — Pastel-rose feature card variant.
- Background
{colors.rose-light}, text {colors.primary}, rounded {rounded.xxxl}, padding {spacing.xxl}.
card-customer-story — Customer story card.
- Background
{colors.canvas}, rounded {rounded.xxxl}, padding 0 (image fills the card), border 1px solid {colors.hairline-soft}.
card-stat — Stat-row cell for "100M+ users".
- Background transparent, text
{colors.ink}, typography {typography.stat-display}, padding {spacing.lg}.
pricing-card — Standard pricing tier card.
- Background
{colors.canvas}, rounded {rounded.xl}, padding {spacing.xxl}, border 1px solid {colors.hairline}.
pricing-card-featured — Featured pricing tier (Business — lavender background + blue border).
- Background
{colors.surface-pricing-featured}, rounded {rounded.xl}, padding {spacing.xxl}, border 2px solid {colors.brand-blue}.
pricing-card-enterprise — Dark-canvas enterprise tier card.
- Background
{colors.primary}, text {colors.on-primary}, rounded {rounded.xl}, padding {spacing.xxl}.
Inputs & Forms
text-input — Standard text field.
- Background
{colors.canvas}, text {colors.ink}, border 1px solid {colors.hairline-strong}, rounded {rounded.md}, padding {spacing.sm} {spacing.md}, height 44px.
text-input-focused — Activated state.
- Border switches to
2px solid {colors.brand-blue}.
search-pill — Search bar.
- Background
{colors.surface}, text {colors.steel}, typography {typography.body-sm}, rounded {rounded.md}, height 40px, border 1px solid {colors.hairline}.
filter-dropdown — Pill-shaped filter dropdown ("Company use" / "Industry" / "Use case").
- Background
{colors.canvas}, text {colors.ink}, typography {typography.body-sm-medium}, rounded {rounded.full}, padding {spacing.xs} {spacing.md}, border 1px solid {colors.hairline-strong}.
Tabs
pill-tab + pill-tab-active — Pill-style tab nav.
- Inactive: background
{colors.canvas}, text {colors.steel}, border 1px solid {colors.hairline}, padding {spacing.xs} {spacing.md}, rounded {rounded.full}.
- Active: background
{colors.primary}, text {colors.on-primary}.
toggle-monthly-yearly — Two-state pill toggle (Monthly / Annual on pricing).
- Background
{colors.surface}, rounded {rounded.full}, padding 4px.
Badges & Status
badge-promo — Yellow promo banner badge.
- Background
{colors.brand-yellow}, text {colors.primary}, typography {typography.caption-bold}, rounded {rounded.full}, padding 4px 10px.
badge-tag-yellow — Soft-yellow feature tag chip ("Yellow" tag on AI Workflows page).
- Background
{colors.surface-yellow}, text {colors.yellow-dark}, typography {typography.caption-bold}, rounded {rounded.full}, padding 4px 10px.
badge-tag-purple — Lavender feature tag chip ("AI agent" tag).
- Background
{colors.surface-pricing-featured}, text {colors.brand-blue}, typography {typography.caption-bold}, rounded {rounded.full}, padding 4px 10px.
badge-tag-coral — Coral feature tag chip variant.
- Background
{colors.coral-light}, text {colors.coral-dark}, typography {typography.caption-bold}, rounded {rounded.full}, padding 4px 10px.
badge-success — Green success indicator.
- Background
{colors.success-accent}, text {colors.on-primary}, typography {typography.caption-bold}, rounded {rounded.full}, padding 4px 10px.
badge-discount — Yellow rectangular discount pill ("Save 15%").
- Background
{colors.brand-yellow}, text {colors.primary}, typography {typography.caption-bold}, rounded {rounded.sm}, padding 2px 6px.
promo-banner — Sticky black promo strip ABOVE the top nav.
- Background
{colors.primary}, text {colors.on-primary}, typography {typography.body-sm-medium}, padding {spacing.sm} {spacing.md}. Carries inline yellow "GET YOUR SPOT" pill.
Tables
comparison-table — Pricing feature comparison table.
- Background
{colors.canvas}, text {colors.ink}, typography {typography.body-sm}, rounded {rounded.md}, border 1px solid {colors.hairline}.
comparison-row — Individual feature row.
- Background
{colors.canvas}, text {colors.ink}, padding {spacing.md} {spacing.lg}, bottom border 1px solid {colors.hairline-soft}.
Documentation Components
whiteboard-mockup — Real Miro-board UI rendered as feature illustration.
- Background
{colors.canvas}, rounded {rounded.xl}, border 1px solid {colors.hairline-soft}, shadow rgba(5, 0, 56, 0.08) 0px 12px 32px -4px.
template-card — Template thumbnail card.
- Background
{colors.canvas}, rounded {rounded.xl}, padding {spacing.md}, border 1px solid {colors.hairline}.
industry-tile — Industry-vertical tile.
- Background
{colors.canvas}, rounded {rounded.xl}, padding {spacing.xl}, border 1px solid {colors.hairline-soft}.
faq-accordion-item — FAQ panel item.
- Background
{colors.canvas}, rounded {rounded.md}, padding {spacing.xl}, bottom border 1px solid {colors.hairline}.
logo-wall-item — Customer logo wordmark cell.
- Background transparent, text
{colors.steel}, typography {typography.body-md-medium}, padding {spacing.lg}.
capterra-badge — Review/rating badge in the footer.
- Background
{colors.canvas}, text {colors.ink}, typography {typography.caption}, rounded {rounded.md}, padding {spacing.sm} {spacing.md}, border 1px solid {colors.hairline}.
app-store-badge — App store / Google Play download pill.
- Background
{colors.canvas}, text {colors.primary}, typography {typography.caption-bold}, rounded {rounded.md}, padding {spacing.sm} {spacing.md}.
Navigation
Top Navigation (Marketing) — Sticky white bar with yellow Miro wordmark + horizontal links + right-side CTAs.
- Background
{colors.canvas}, height ~64px.
- Left: Yellow square Miro wordmark + horizontal link list (Product, Solutions, Resources).
- Right: "Login / Pricing / Contact sales" links + black-pill "Get started free".
Signature Components
hero-band-marketing — Marketing hero band.
- Background
{colors.canvas}, padding {spacing.hero}.
- Layout: centered headline in
{typography.hero-display}, centered subtitle, centered button row, then whiteboard mockup illustration below.
cta-banner-dark — Dark CTA banner at the bottom of feature pages.
- Background
{colors.primary}, text {colors.on-primary}, rounded {rounded.feature}, padding {spacing.section}. Centered headline + subtitle + button-on-dark "Get started free".
footer-region — Massive multi-column dark footer.
- Background
{colors.footer-bg}, padding {spacing.section} {spacing.xxl}.
- 6-column link grid (Product / Solutions / Tools / Resources / Company / Plans & Pricing).
- Section headings in
{typography.body-md-medium} {colors.on-dark}.
footer-link — Individual link in the footer.
- Background transparent, text
{colors.on-dark-muted}, typography {typography.body-sm}, padding {spacing.xxs} 0.
Do's and Don'ts
Do
- Reserve
{colors.brand-yellow} for the wordmark, top promo banner, and "yellow tag" chips
- Use
{colors.primary} (black) as the dominant CTA on all surfaces
- Pair pastel feature cards (yellow, rose, coral, teal) with white feature cards in the same viewport
- Apply
{rounded.full} to every button, every pill tab, every status badge
- Apply
{rounded.xxxl} (28px) to pastel feature cards
- Use real Miro-board mockups as feature illustrations
- Maintain Roobert PRO across every UI surface
Don't
- Don't use
{colors.brand-yellow} on standard CTAs or large background surfaces
- Don't introduce additional accent colors beyond yellow + brand pastels
- Don't soften corners on buttons; the pill is a brand signature
- Don't reduce hero leading below 1.05
- Don't apply heavy shadows on flat documentation cards; reserve elevation for whiteboard mockups
- Don't use stock photography — show the live product board UI
Responsive Behavior
Breakpoints
| Name |
Width |
Key Changes |
| Mobile (small) |
< 480px |
Single column. Hero scales to 36px. Pill nav collapses to hamburger. Pricing tiers stack 1-up. |
| Mobile (large) |
480 – 767px |
Feature tiles 2-up. Hero scales to 48px. |
| Tablet |
768 – 1023px |
2-column feature grids. Pill-tab nav returns. |
| Desktop |
1024 – 1279px |
4-tier pricing card row. Customer story grid 2-up. Hero at 64px. |
| Wide Desktop |
≥ 1280px |
Full hero presentation, 80px hero display. |
Touch Targets
- Pill buttons render at 40–44px effective height — at WCAG AAA floor
- Circular icon buttons: 36×36px desktop → 44×44px mobile
- Form inputs render at 44px height
- Filter dropdowns render at ~36px tall — bumps to 44px on mobile
Collapsing Strategy
- Promo banner stays full-width; truncates at < 480px
- Top nav below 1024px collapses to hamburger
- Hero band: 2-column hero collapses to stacked at < 1024px
- Pricing comparison: 4-column tiers → 2-column tablet → 1-column mobile; comparison table becomes horizontal-scroll
- Customer story grid: 2-up → 1-up at < 768px
- Hero typography: 80px → 60px tablet → 48px mobile-large → 36px mobile-small
- Footer: 6-column desktop → 3-column tablet → 2-column mobile → accordion at small mobile
Image Behavior
- Whiteboard mockups maintain aspect ratio; lazy-loaded below the fold
- Customer story photography uses 16:9 ratio with full-bleed scaling
- Logo wall presents wordmarks at consistent 100px height
Iteration Guide
- Focus on ONE component at a time
- Reference component names and tokens directly
- Run
npx @google/design.md lint DESIGN.md after edits
- Add new variants as separate
components: entries
- Default to
{typography.body-md} for body and {typography.subtitle} for emphasis
- Keep
{colors.brand-yellow} confined to wordmark, promo banner, and yellow-tag chips
- Pill-shaped buttons (
{rounded.full}) always
- When showing the product, use a real Miro-board mockup with sticky-note color tints
Known Gaps
- Specific dark-mode token values not surfaced
- Animation/transition timings not extracted; recommend 150–200ms ease
- Form validation success state not explicitly captured beyond defaults
- Sticky note color tints inside the actual whiteboard product are richer than what marketing surfaces capture
1---2name: miro-design-analysis3description: Documents Miro's brand design system including colors, typography, layout, and component patterns for visual consistency.4---56## Overview78Miro positions itself as the AI-powered visual workspace through a confident, slightly playful brand voice. The homepage opens with a stark white canvas anchored by a small canary-yellow Miro wordmark in the top-left, a black-pill primary CTA "Get started free" and a secondary "Book a demo" outline pill — then dramatic real-Miro-board mockup imagery (sticky notes, kanban, mind maps) carries the visual weight. Across deeper surfaces, the system breaks open: pastel feature cards (rose, teal, coral, yellow) echo the actual sticky-note color palette of the live whiteboard product, and customer story cards reuse those tints to differentiate brand vignettes.910Roobert PRO — Miro's custom display face — anchors every typographic surface, from the 80px hero display down to 11px micro labels. The face's slightly rounded, geometric character pairs naturally with the playful product photography and the friendly product positioning. Black-pill primary buttons (`{rounded.full}`) dominate marketing CTAs; the brand color, signature canary yellow ({colors.brand-yellow}), is reserved for the wordmark, top promo banners, and "yellow tag" feature pills — never as a primary CTA. The 4-tier pricing comparison (Free / Starter / Business / Enterprise) leads into the densest surface in the system: a feature comparison table that runs ~80 rows deep across multiple section dividers.1112**Key Characteristics:**13- Stark white canvas + Miro wordmark in canary yellow ({colors.brand-yellow}) as the recognizable opening signature14- Black-pill primary CTAs ({colors.primary} + `{rounded.full}`) as the dominant interactive element15- Pastel feature cards (yellow, rose, coral, teal, mint) that echo the actual sticky-note palette16- Roobert PRO across every UI surface; geometric, slightly rounded character17- Real Miro-board mockup imagery used as feature illustrations18- 4-tier pricing card grid + dense feature comparison table19- Massive dark footer ({colors.footer-bg}) with multi-column links + app-store badges2021## Colors2223> Source pages: miro.com/ (homepage), /pricing/ (4-tier comparison), /products/ai-workflows/ (AI product), /agile/ (vertical landing), /customers/ (story directory). Token coverage was identical across all five pages.2425### Brand & Accent26- **Miro Yellow** ({colors.brand-yellow}): The brand's recognizable canary yellow — wordmark color, top promo banner, "yellow tag" pills27- **Yellow Deep** ({colors.brand-yellow-deep}): Darker variant for hover states and emphasis28- **Yellow Light** ({colors.yellow-light}): Pale yellow background tint for tag chips29- **Yellow Dark** ({colors.yellow-dark}): Yellow-tag text color (dark olive) for chip foreground30- **Brand Blue** ({colors.brand-blue}): Action blue for inline links and featured-pricing-tier border31- **Blue Pressed** ({colors.blue-pressed}): Pressed-state blue32- **Brand Coral** ({colors.brand-coral}): Coral accent for warm callouts33- **Coral Light** ({colors.coral-light}): Pale coral for feature card backgrounds34- **Coral Dark** ({colors.coral-dark}): Coral-tag text color (deep wine)35- **Brand Rose** ({colors.brand-rose}): Soft rose-pink for feature card variants36- **Brand Teal** ({colors.brand-teal}): Brand teal37- **Teal Light** ({colors.teal-light}): Pale teal for feature card backgrounds38- **Moss Dark** ({colors.moss-dark}): Deep teal-green text color39- **Brand Pink** ({colors.brand-pink}): Pale pink for soft callouts40- **Brand Orange Light** ({colors.brand-orange-light}): Soft orange for feature card backgrounds4142### Surface43- **Canvas White** ({colors.canvas}): Page background and primary card surface44- **Surface** ({colors.surface}): Subtle section backgrounds, search-pill rest45- **Surface Soft** ({colors.surface-soft}): Quieter section divisions46- **Surface Yellow** ({colors.surface-yellow}): Pale yellow-tinted surface for tag chip47- **Surface Pricing Featured** ({colors.surface-pricing-featured}): Pale lavender for featured pricing tier48- **Hairline** ({colors.hairline}): 1px borders and primary dividers49- **Hairline Soft** ({colors.hairline-soft}): Quieter table-row dividers50- **Hairline Strong** ({colors.hairline-strong}): Stronger 1px border for inputs5152### Text53- **Ink Deep** ({colors.ink-deep}): Headlines on lighter feature cards54- **Ink** ({colors.ink}): Primary headlines and body text55- **Charcoal** ({colors.charcoal}): Body emphasis text56- **Slate** ({colors.slate}): Secondary text, metadata57- **Steel** ({colors.steel}): Tertiary text, footer links58- **Stone** ({colors.stone}): Captions, muted labels59- **Muted** ({colors.muted}): Disabled labels, input placeholders60- **On Dark** ({colors.on-dark}): White text on dark surfaces61- **On Dark Muted** ({colors.on-dark-muted}): Reduced-opacity white on dark6263### Semantic64- **Success Accent** ({colors.success-accent}): Confirmation/success indicator green65- **Brand Red** ({colors.brand-red}): Soft red for error backgrounds66- **Brand Red Dark** ({colors.brand-red-dark}): Stronger red for error borders6768## Typography6970### Font Family71**Roobert PRO** (primary): Miro's custom geometric sans-serif typeface. Used across every UI surface from oversized 80px hero displays to 11px micro labels. The face has a slightly rounded, friendly character that matches the brand's playful product positioning. Fallbacks: Noto Sans, -apple-system, BlinkMacSystemFont, sans-serif.7273### Hierarchy7475| Token | Size | Weight | Line Height | Letter Spacing | Use |76|---|---|---|---|---|---|77| `{typography.hero-display}` | 80px | 500 | 1.05 | -2px | Marketing hero ("See how teams get great done with Miro") |78| `{typography.display-lg}` | 60px | 500 | 1.10 | -1.5px | Major section openers |79| `{typography.heading-1}` | 48px | 500 | 1.15 | -1px | Page-level headlines |80| `{typography.heading-2}` | 36px | 500 | 1.20 | -0.5px | Subsection headlines |81| `{typography.heading-3}` | 28px | 500 | 1.25 | 0 | Card titles |82| `{typography.heading-4}` | 22px | 500 | 1.30 | 0 | Feature tile titles |83| `{typography.heading-5}` | 18px | 500 | 1.40 | 0 | FAQ questions, smaller cards |84| `{typography.subtitle}` | 18px | 400 | 1.50 | 0 | Hero subtitle |85| `{typography.body-md}` | 16px | 400 | 1.50 | 0 | Primary body text |86| `{typography.body-md-medium}` | 16px | 500 | 1.50 | 0 | Logo wall labels |87| `{typography.body-sm}` | 14px | 400 | 1.50 | 0 | Secondary body, table cells |88| `{typography.body-sm-medium}` | 14px | 500 | 1.50 | 0 | Filter dropdowns, button labels |89| `{typography.caption}` | 13px | 400 | 1.40 | 0 | Helper text |90| `{typography.caption-bold}` | 13px | 600 | 1.40 | 0 | Badge labels, tag chips |91| `{typography.micro}` | 12px | 500 | 1.40 | 0 | Footer microcopy |92| `{typography.micro-uppercase}` | 11px | 600 | 1.40 | 0.5px | Section dividers in tables |93| `{typography.button-md}` | 14px | 500 | 1.30 | 0 | Pill button labels |94| `{typography.stat-display}` | 64px | 500 | 1.10 | -1.5px | "100M+ users" stat callouts |9596### Principles97- **Tight hero leading** (1.05) creates magazine-grade display headlines on the 80px hero98- **Negative letter-spacing progression** — display sizes use -2px to -1.5px; smaller headings relax to 099- **Stat-display token** (64px / 500) for marketing stat callouts100- **Single weight scale** — 400 (body), 500 (medium emphasis + headings), 600 (badges and uppercase). Roobert PRO does not use 700 in this system.101102## Layout103104### Spacing System105- **Base unit**: 4px (8px primary increment)106- **Tokens**: `{spacing.xxs}` (4px) · `{spacing.xs}` (8px) · `{spacing.sm}` (12px) · `{spacing.md}` (16px) · `{spacing.lg}` (20px) · `{spacing.xl}` (24px) · `{spacing.xxl}` (32px) · `{spacing.xxxl}` (40px) · `{spacing.section-sm}` (48px) · `{spacing.section}` (64px) · `{spacing.section-lg}` (96px) · `{spacing.hero}` (120px)107- **Section rhythm**: Marketing pages use `{spacing.section-lg}` (96px); pricing comparison tightens to `{spacing.section}` (64px); customer story stack uses `{spacing.xxl}` (32px)108- **Card internal padding**: `{spacing.xl}` (24px) for compact cards; `{spacing.xxl}` (32px) for feature panels109110### Grid & Container111- Marketing pages use 1280px max-width with 32px gutters112- Pricing page renders 4-tier card row at desktop (Free / Starter / Business / Enterprise)113- Customer stories page uses 2-column grid with filter dropdowns114- AI Workflows page uses 2-column hero, then 3-up feature grid115116### Whitespace Philosophy117Marketing surfaces give content generous breathing room — `{spacing.hero}` (120px) hero padding gives the small wordmark room to breathe. Pricing surfaces tighten dramatically.118119## Elevation & Depth120121The system runs predominantly flat with strategic depth on hero mockups.122123| Level | Treatment | Use |124|---|---|---|125| 0 (flat) | No shadow; `{colors.hairline-soft}` border | Default cards, table rows, form inputs |126| 1 (subtle) | `rgba(5, 0, 56, 0.04) 0px 1px 2px 0px` | Subtle hover-elevated tiles |127| 2 (card) | `rgba(5, 0, 56, 0.06) 0px 4px 12px 0px` | Standard feature cards |128| 3 (mockup) | `rgba(5, 0, 56, 0.08) 0px 12px 32px -4px` | Hero whiteboard mockup framing |129| 4 (modal) | `rgba(5, 0, 56, 0.12) 0px 16px 48px -8px` | Modals, dropdowns |130131### Decorative Depth132- The atmospheric depth on Miro's hero comes from the live-product-board mockup illustrations — sticky notes layered at z-offsets, color-block tints behind whiteboard frames133- Pastel feature cards carry their own visual weight via saturated background color134- Customer-story cards layer dark photographic content with overlay scrims135136## Shapes137138### Border Radius Scale139140| Token | Value | Use |141|---|---|---|142| `{rounded.xs}` | 4px | Small chips, micro-controls |143| `{rounded.sm}` | 6px | Discount badges |144| `{rounded.md}` | 8px | Inputs, search-pill |145| `{rounded.lg}` | 12px | Standard cards, table containers |146| `{rounded.xl}` | 16px | Pricing cards, feature panels |147| `{rounded.xxl}` | 20px | Larger feature cards |148| `{rounded.xxxl}` | 28px | Pastel feature cards (yellow, rose, coral, teal) |149| `{rounded.feature}` | 32px | Hero CTA banner cards |150| `{rounded.full}` | 9999px | All buttons, pill tabs, badges |151152### Photography Geometry153- Real Miro board mockups render with `{rounded.xl}` (16px) corners and a subtle drop shadow154- Customer story cards use `{rounded.xxxl}` (28px) corners with full-bleed photography155- Template card thumbnails use `{rounded.xl}` (16px) with photographic content156- Customer logos wall presents wordmarks inline at consistent 100px height157158## Components159160> Per the no-hover policy, hover states are NOT documented. Default and pressed/active states only.161162### Buttons163164**`button-primary`** — Black pill primary CTA, the dominant action ("Get started free").165- Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.166- Pressed state `button-primary-pressed` lifts to `{colors.charcoal}`.167- Disabled state `button-primary-disabled` uses `{colors.hairline}` background and `{colors.muted}` text.168169**`button-yellow`** — Brand-yellow pill for moments of brand emphasis.170- Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.171172**`button-blue`** — Brand-blue pill for inline action callouts.173- Background `{colors.brand-blue}`, text `{colors.on-primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.174175**`button-secondary`** — Outlined pill for secondary actions ("Book a demo").176- Background transparent, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.177178**`button-on-dark`** — White pill for dark CTA banners.179- Background `{colors.on-dark}`, text `{colors.primary}`, typography `{typography.button-md}`, padding `12px 24px`, rounded `{rounded.full}`.180181**`button-ghost`** — Quieter rectangular ghost button.182- Background transparent, text `{colors.ink}`, typography `{typography.button-md}`, padding `8px 12px`, rounded `{rounded.md}`.183184**`button-link`** — Inline text link.185- Background transparent, text `{colors.brand-blue}`, typography `{typography.body-sm-medium}`, padding `0`.186187**`button-icon-circular`** — 36×36px circular utility button.188- Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline}`, rounded `{rounded.full}`.189190### Cards & Containers191192**`card-base`** — Standard content card.193- Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.194195**`card-feature`** — White feature card with larger 28px corners.196- Background `{colors.canvas}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline-soft}`.197198**`card-feature-yellow`** — Pastel-yellow feature card.199- Background `{colors.brand-yellow}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.200201**`card-feature-coral`** — Pastel-coral feature card variant.202- Background `{colors.coral-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.203204**`card-feature-teal`** — Pastel-teal feature card variant.205- Background `{colors.teal-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.206207**`card-feature-rose`** — Pastel-rose feature card variant.208- Background `{colors.rose-light}`, text `{colors.primary}`, rounded `{rounded.xxxl}`, padding `{spacing.xxl}`.209210**`card-customer-story`** — Customer story card.211- Background `{colors.canvas}`, rounded `{rounded.xxxl}`, padding `0` (image fills the card), border `1px solid {colors.hairline-soft}`.212213**`card-stat`** — Stat-row cell for "100M+ users".214- Background transparent, text `{colors.ink}`, typography `{typography.stat-display}`, padding `{spacing.lg}`.215216**`pricing-card`** — Standard pricing tier card.217- Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`, border `1px solid {colors.hairline}`.218219**`pricing-card-featured`** — Featured pricing tier (Business — lavender background + blue border).220- Background `{colors.surface-pricing-featured}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`, border `2px solid {colors.brand-blue}`.221222**`pricing-card-enterprise`** — Dark-canvas enterprise tier card.223- Background `{colors.primary}`, text `{colors.on-primary}`, rounded `{rounded.xl}`, padding `{spacing.xxl}`.224225### Inputs & Forms226227**`text-input`** — Standard text field.228- Background `{colors.canvas}`, text `{colors.ink}`, border `1px solid {colors.hairline-strong}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, height 44px.229230**`text-input-focused`** — Activated state.231- Border switches to `2px solid {colors.brand-blue}`.232233**`search-pill`** — Search bar.234- Background `{colors.surface}`, text `{colors.steel}`, typography `{typography.body-sm}`, rounded `{rounded.md}`, height 40px, border `1px solid {colors.hairline}`.235236**`filter-dropdown`** — Pill-shaped filter dropdown ("Company use" / "Industry" / "Use case").237- Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.body-sm-medium}`, rounded `{rounded.full}`, padding `{spacing.xs} {spacing.md}`, border `1px solid {colors.hairline-strong}`.238239### Tabs240241**`pill-tab`** + **`pill-tab-active`** — Pill-style tab nav.242- Inactive: background `{colors.canvas}`, text `{colors.steel}`, border `1px solid {colors.hairline}`, padding `{spacing.xs} {spacing.md}`, rounded `{rounded.full}`.243- Active: background `{colors.primary}`, text `{colors.on-primary}`.244245**`toggle-monthly-yearly`** — Two-state pill toggle (Monthly / Annual on pricing).246- Background `{colors.surface}`, rounded `{rounded.full}`, padding `4px`.247248### Badges & Status249250**`badge-promo`** — Yellow promo banner badge.251- Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.252253**`badge-tag-yellow`** — Soft-yellow feature tag chip ("Yellow" tag on AI Workflows page).254- Background `{colors.surface-yellow}`, text `{colors.yellow-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.255256**`badge-tag-purple`** — Lavender feature tag chip ("AI agent" tag).257- Background `{colors.surface-pricing-featured}`, text `{colors.brand-blue}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.258259**`badge-tag-coral`** — Coral feature tag chip variant.260- Background `{colors.coral-light}`, text `{colors.coral-dark}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.261262**`badge-success`** — Green success indicator.263- Background `{colors.success-accent}`, text `{colors.on-primary}`, typography `{typography.caption-bold}`, rounded `{rounded.full}`, padding `4px 10px`.264265**`badge-discount`** — Yellow rectangular discount pill ("Save 15%").266- Background `{colors.brand-yellow}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.sm}`, padding `2px 6px`.267268**`promo-banner`** — Sticky black promo strip ABOVE the top nav.269- Background `{colors.primary}`, text `{colors.on-primary}`, typography `{typography.body-sm-medium}`, padding `{spacing.sm} {spacing.md}`. Carries inline yellow "GET YOUR SPOT" pill.270271### Tables272273**`comparison-table`** — Pricing feature comparison table.274- Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.body-sm}`, rounded `{rounded.md}`, border `1px solid {colors.hairline}`.275276**`comparison-row`** — Individual feature row.277- Background `{colors.canvas}`, text `{colors.ink}`, padding `{spacing.md} {spacing.lg}`, bottom border `1px solid {colors.hairline-soft}`.278279### Documentation Components280281**`whiteboard-mockup`** — Real Miro-board UI rendered as feature illustration.282- Background `{colors.canvas}`, rounded `{rounded.xl}`, border `1px solid {colors.hairline-soft}`, shadow `rgba(5, 0, 56, 0.08) 0px 12px 32px -4px`.283284**`template-card`** — Template thumbnail card.285- Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.md}`, border `1px solid {colors.hairline}`.286287**`industry-tile`** — Industry-vertical tile.288- Background `{colors.canvas}`, rounded `{rounded.xl}`, padding `{spacing.xl}`, border `1px solid {colors.hairline-soft}`.289290**`faq-accordion-item`** — FAQ panel item.291- Background `{colors.canvas}`, rounded `{rounded.md}`, padding `{spacing.xl}`, bottom border `1px solid {colors.hairline}`.292293**`logo-wall-item`** — Customer logo wordmark cell.294- Background transparent, text `{colors.steel}`, typography `{typography.body-md-medium}`, padding `{spacing.lg}`.295296**`capterra-badge`** — Review/rating badge in the footer.297- Background `{colors.canvas}`, text `{colors.ink}`, typography `{typography.caption}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`, border `1px solid {colors.hairline}`.298299**`app-store-badge`** — App store / Google Play download pill.300- Background `{colors.canvas}`, text `{colors.primary}`, typography `{typography.caption-bold}`, rounded `{rounded.md}`, padding `{spacing.sm} {spacing.md}`.301302### Navigation303304**Top Navigation (Marketing)** — Sticky white bar with yellow Miro wordmark + horizontal links + right-side CTAs.305- Background `{colors.canvas}`, height ~64px.306- Left: Yellow square Miro wordmark + horizontal link list (Product, Solutions, Resources).307- Right: "Login / Pricing / Contact sales" links + black-pill "Get started free".308309### Signature Components310311**`hero-band-marketing`** — Marketing hero band.312- Background `{colors.canvas}`, padding `{spacing.hero}`.313- Layout: centered headline in `{typography.hero-display}`, centered subtitle, centered button row, then whiteboard mockup illustration below.314315**`cta-banner-dark`** — Dark CTA banner at the bottom of feature pages.316- Background `{colors.primary}`, text `{colors.on-primary}`, rounded `{rounded.feature}`, padding `{spacing.section}`. Centered headline + subtitle + `button-on-dark` "Get started free".317318**`footer-region`** — Massive multi-column dark footer.319- Background `{colors.footer-bg}`, padding `{spacing.section} {spacing.xxl}`.320- 6-column link grid (Product / Solutions / Tools / Resources / Company / Plans & Pricing).321- Section headings in `{typography.body-md-medium}` `{colors.on-dark}`.322323**`footer-link`** — Individual link in the footer.324- Background transparent, text `{colors.on-dark-muted}`, typography `{typography.body-sm}`, padding `{spacing.xxs} 0`.325326## Do's and Don'ts327328### Do329- Reserve `{colors.brand-yellow}` for the wordmark, top promo banner, and "yellow tag" chips330- Use `{colors.primary}` (black) as the dominant CTA on all surfaces331- Pair pastel feature cards (yellow, rose, coral, teal) with white feature cards in the same viewport332- Apply `{rounded.full}` to every button, every pill tab, every status badge333- Apply `{rounded.xxxl}` (28px) to pastel feature cards334- Use real Miro-board mockups as feature illustrations335- Maintain Roobert PRO across every UI surface336337### Don't338- Don't use `{colors.brand-yellow}` on standard CTAs or large background surfaces339- Don't introduce additional accent colors beyond yellow + brand pastels340- Don't soften corners on buttons; the pill is a brand signature341- Don't reduce hero leading below 1.05342- Don't apply heavy shadows on flat documentation cards; reserve elevation for whiteboard mockups343- Don't use stock photography — show the live product board UI344345## Responsive Behavior346347### Breakpoints348| Name | Width | Key Changes |349|---|---|---|350| Mobile (small) | < 480px | Single column. Hero scales to 36px. Pill nav collapses to hamburger. Pricing tiers stack 1-up. |351| Mobile (large) | 480 – 767px | Feature tiles 2-up. Hero scales to 48px. |352| Tablet | 768 – 1023px | 2-column feature grids. Pill-tab nav returns. |353| Desktop | 1024 – 1279px | 4-tier pricing card row. Customer story grid 2-up. Hero at 64px. |354| Wide Desktop | ≥ 1280px | Full hero presentation, 80px hero display. |355356### Touch Targets357- Pill buttons render at 40–44px effective height — at WCAG AAA floor358- Circular icon buttons: 36×36px desktop → 44×44px mobile359- Form inputs render at 44px height360- Filter dropdowns render at ~36px tall — bumps to 44px on mobile361362### Collapsing Strategy363- **Promo banner** stays full-width; truncates at < 480px364- **Top nav** below 1024px collapses to hamburger365- **Hero band**: 2-column hero collapses to stacked at < 1024px366- **Pricing comparison**: 4-column tiers → 2-column tablet → 1-column mobile; comparison table becomes horizontal-scroll367- **Customer story grid**: 2-up → 1-up at < 768px368- **Hero typography**: 80px → 60px tablet → 48px mobile-large → 36px mobile-small369- **Footer**: 6-column desktop → 3-column tablet → 2-column mobile → accordion at small mobile370371### Image Behavior372- Whiteboard mockups maintain aspect ratio; lazy-loaded below the fold373- Customer story photography uses 16:9 ratio with full-bleed scaling374- Logo wall presents wordmarks at consistent 100px height375376## Iteration Guide3773781. Focus on ONE component at a time3792. Reference component names and tokens directly3803. Run `npx @google/design.md lint DESIGN.md` after edits3814. Add new variants as separate `components:` entries3825. Default to `{typography.body-md}` for body and `{typography.subtitle}` for emphasis3836. Keep `{colors.brand-yellow}` confined to wordmark, promo banner, and yellow-tag chips3847. Pill-shaped buttons (`{rounded.full}`) always3858. When showing the product, use a real Miro-board mockup with sticky-note color tints386387## Known Gaps388389- Specific dark-mode token values not surfaced390- Animation/transition timings not extracted; recommend 150–200ms ease391- Form validation success state not explicitly captured beyond defaults392- Sticky note color tints inside the actual whiteboard product are richer than what marketing surfaces capture