行业: 设计与创意工具Website

Miro

Miro 以标志性亮黄色、活泼插画和大胆排版呈现 AI 视觉协作空间,通过画布式布局、便签元素和高对比色块,强化开放、共创与即时表达。

Light UIPlayfulDesign System
Miro 网站预览
设计系统
品牌色彩 · 40

primary

#1C1C1E

--color-primary

on primary

#FFFFFF

--color-on-primary

brand yellow

#FFD02F

--color-brand-yellow

brand yellow deep

#FCB900

--color-brand-yellow-deep

yellow light

#FFF4C4

--color-yellow-light

yellow dark

#746019

--color-yellow-dark

brand blue

#4262FF

--color-brand-blue

blue 450

#5B76FE

--color-blue-450

blue pressed

#2A41B6

--color-blue-pressed

brand coral

#FF9999

--color-brand-coral

coral light

#FFC6C6

--color-coral-light

coral dark

#600000

--color-coral-dark

brand rose

#FFD8F4

--color-brand-rose

rose light

#FDE0F0

--color-rose-light

brand pink

#FDE0F0

--color-brand-pink

brand teal

#0FBCB0

--color-brand-teal

teal light

#C3FAF5

--color-teal-light

moss dark

#187574

--color-moss-dark

brand orange light

#FFE6CD

--color-brand-orange-light

brand red

#FBD4D4

--color-brand-red

brand red dark

#E3C5C5

--color-brand-red-dark

success accent

#00B473

--color-success-accent

canvas

#FFFFFF

--color-canvas

surface

#F7F8FA

--color-surface

surface soft

#FAFBFC

--color-surface-soft

surface yellow

#FFF8E0

--color-surface-yellow

surface pricing featured

#F5F3FF

--color-surface-pricing-featured

hairline

#E0E2E8

--color-hairline

hairline soft

#EEF0F3

--color-hairline-soft

hairline strong

#C7CAD5

--color-hairline-strong

ink deep

#050038

--color-ink-deep

ink

#1C1C1E

--color-ink

charcoal

#2C2C34

--color-charcoal

slate

#555A6A

--color-slate

steel

#6B6F7E

--color-steel

stone

#8E91A0

--color-stone

muted

#A5A8B5

--color-muted

on dark

#FFFFFF

--color-on-dark

on dark muted

#A5A8B5

--color-on-dark-muted

footer bg

#1C1C1E

--color-footer-bg

字体系统

字体家族

Roobert PRO

字重

500400600

备注

1 个字体家族,完整字阶、行高和字距见 DESIGN.md

标签
Light UIPlayfulDesign System
设计文档

品牌设计系统的完整 Markdown 文档

Miro — Style Reference

> Miro presents itself as the AI-powered visual workspace through a confident, almost playful brand voice — anchored by its signature canary yellow ({colors.brand-yellow}) wordmark over white canvas, broken open by colorful pastel feature tints (rose, teal, coral, orange, mint) that echo the actual sticky-note color palette used on the live whiteboard. Black-pill primary buttons dominate marketing, real Miro-board mockups serve as feature illustrations, and a 4-tier pricing grid leads into a dense comparison table. Roobert PRO carries display headlines; the system supports homepage, pricing, AI Workflows product page, agile vertical, and customer stories surfaces.

**Theme:** light

**Source website:** [https://miro.com/](https://miro.com/)

Use the live official website to compare and validate this extracted snapshot. The current source website remains authoritative.

Tokens — Colors

| Name | Value | Token | Role |

|---|---|---|---|

| primary | `#1c1c1e` | `--color-primary` | primary role extracted from the source design |

| on primary | `#ffffff` | `--color-on-primary` | on primary role extracted from the source design |

| brand yellow | `#ffd02f` | `--color-brand-yellow` | brand yellow role extracted from the source design |

| brand yellow deep | `#fcb900` | `--color-brand-yellow-deep` | brand yellow deep role extracted from the source design |

| yellow light | `#fff4c4` | `--color-yellow-light` | yellow light role extracted from the source design |

| yellow dark | `#746019` | `--color-yellow-dark` | yellow dark role extracted from the source design |

| brand blue | `#4262ff` | `--color-brand-blue` | brand blue role extracted from the source design |

| blue 450 | `#5b76fe` | `--color-blue-450` | blue 450 role extracted from the source design |

| blue pressed | `#2a41b6` | `--color-blue-pressed` | blue pressed role extracted from the source design |

| brand coral | `#ff9999` | `--color-brand-coral` | brand coral role extracted from the source design |

| coral light | `#ffc6c6` | `--color-coral-light` | coral light role extracted from the source design |

| coral dark | `#600000` | `--color-coral-dark` | coral dark role extracted from the source design |

| brand rose | `#ffd8f4` | `--color-brand-rose` | brand rose role extracted from the source design |

| rose light | `#fde0f0` | `--color-rose-light` | rose light role extracted from the source design |

| brand pink | `#fde0f0` | `--color-brand-pink` | brand pink role extracted from the source design |

| brand teal | `#0fbcb0` | `--color-brand-teal` | brand teal role extracted from the source design |

| teal light | `#c3faf5` | `--color-teal-light` | teal light role extracted from the source design |

| moss dark | `#187574` | `--color-moss-dark` | moss dark role extracted from the source design |

| brand orange light | `#ffe6cd` | `--color-brand-orange-light` | brand orange light role extracted from the source design |

| brand red | `#fbd4d4` | `--color-brand-red` | brand red role extracted from the source design |

| brand red dark | `#e3c5c5` | `--color-brand-red-dark` | brand red dark role extracted from the source design |

| success accent | `#00b473` | `--color-success-accent` | success accent role extracted from the source design |

| canvas | `#ffffff` | `--color-canvas` | canvas role extracted from the source design |

| surface | `#f7f8fa` | `--color-surface` | surface role extracted from the source design |

| surface soft | `#fafbfc` | `--color-surface-soft` | surface soft role extracted from the source design |

| surface yellow | `#fff8e0` | `--color-surface-yellow` | surface yellow role extracted from the source design |

| surface pricing featured | `#f5f3ff` | `--color-surface-pricing-featured` | surface pricing featured role extracted from the source design |

| hairline | `#e0e2e8` | `--color-hairline` | hairline role extracted from the source design |

| hairline soft | `#eef0f3` | `--color-hairline-soft` | hairline soft role extracted from the source design |

| hairline strong | `#c7cad5` | `--color-hairline-strong` | hairline strong role extracted from the source design |

| ink deep | `#050038` | `--color-ink-deep` | ink deep role extracted from the source design |

| ink | `#1c1c1e` | `--color-ink` | ink role extracted from the source design |

| charcoal | `#2c2c34` | `--color-charcoal` | charcoal role extracted from the source design |

| slate | `#555a6a` | `--color-slate` | slate role extracted from the source design |

| steel | `#6b6f7e` | `--color-steel` | steel role extracted from the source design |

| stone | `#8e91a0` | `--color-stone` | stone role extracted from the source design |

| muted | `#a5a8b5` | `--color-muted` | muted role extracted from the source design |

| on dark | `#ffffff` | `--color-on-dark` | on dark role extracted from the source design |

| on dark muted | `#a5a8b5` | `--color-on-dark-muted` | on dark muted role extracted from the source design |

| footer bg | `#1c1c1e` | `--color-footer-bg` | footer bg role extracted from the source design |

Tokens — Typography

Roobert PRO · `--font-primary`

  • **Substitute:** Inter, system-ui, sans-serif
  • **Weights:** 500, 400, 600
  • **Sizes:** 80px, 60px, 48px, 36px, 28px, 22px, 18px, 16px, 14px, 13px, 12px, 11px, 64px
  • **Line height:** 1.05, 1.1, 1.15, 1.2, 1.25, 1.3, 1.4, 1.5
  • **Letter spacing:** -2px, -1.5px, -1px, -0.5px, 0, 0.5px
  • **Role:** Brand typography family observed across the documented type scale.
  • Type Scale

    | Role | Size | Line Height | Letter Spacing | Token |

    |---|---|---|---|---|

    | hero-display | 80px | 1.05 | -2px | `--text-hero-display` |

    | display-lg | 60px | 1.1 | -1.5px | `--text-display-lg` |

    | heading-1 | 48px | 1.15 | -1px | `--text-heading-1` |

    | heading-2 | 36px | 1.2 | -0.5px | `--text-heading-2` |

    | heading-3 | 28px | 1.25 | 0 | `--text-heading-3` |

    | heading-4 | 22px | 1.3 | 0 | `--text-heading-4` |

    | heading-5 | 18px | 1.4 | 0 | `--text-heading-5` |

    | subtitle | 18px | 1.5 | 0 | `--text-subtitle` |

    | body-md | 16px | 1.5 | 0 | `--text-body-md` |

    | body-md-medium | 16px | 1.5 | 0 | `--text-body-md-medium` |

    | body-sm | 14px | 1.5 | 0 | `--text-body-sm` |

    | body-sm-medium | 14px | 1.5 | 0 | `--text-body-sm-medium` |

    | caption | 13px | 1.4 | 0 | `--text-caption` |

    | caption-bold | 13px | 1.4 | 0 | `--text-caption-bold` |

    | micro | 12px | 1.4 | 0 | `--text-micro` |

    | micro-uppercase | 11px | 1.4 | 0.5px | `--text-micro-uppercase` |

    | button-md | 14px | 1.3 | 0 | `--text-button-md` |

    | stat-display | 64px | 1.1 | -1.5px | `--text-stat-display` |

    Tokens — Spacing & Shapes

    **Density:** comfortable

    Spacing Scale

    | Name | Value | Token |

    |---|---|---|

    | xxs | 4px | `--spacing-xxs` |

    | xs | 8px | `--spacing-xs` |

    | sm | 12px | `--spacing-sm` |

    | md | 16px | `--spacing-md` |

    | lg | 20px | `--spacing-lg` |

    | xl | 24px | `--spacing-xl` |

    | xxl | 32px | `--spacing-xxl` |

    | xxxl | 40px | `--spacing-xxxl` |

    | section-sm | 48px | `--spacing-section-sm` |

    | section | 64px | `--spacing-section` |

    | section-lg | 96px | `--spacing-section-lg` |

    | hero | 120px | `--spacing-hero` |

    Border Radius

    | Name | Value | Token |

    |---|---|---|

    | xs | 4px | `--radius-xs` |

    | sm | 6px | `--radius-sm` |

    | md | 8px | `--radius-md` |

    | lg | 12px | `--radius-lg` |

    | xl | 16px | `--radius-xl` |

    | xxl | 20px | `--radius-xxl` |

    | xxxl | 28px | `--radius-xxxl` |

    | feature | 32px | `--radius-feature` |

    | full | 9999px | `--radius-full` |

    Layout

  • **Section gap:** 64px
  • **Card padding:** 20px
  • **Element gap:** 16px
  • **Max content width:** 1200px
  • Components

    button primary

    **Role:** button primary component

  • **backgroundColor:** `{colors.primary}`
  • **textColor:** `{colors.on-primary}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.full}`
  • **padding:** `12px 24px`
  • button primary pressed

    **Role:** button primary pressed component

  • **backgroundColor:** `{colors.charcoal}`
  • **textColor:** `{colors.on-primary}`
  • button primary disabled

    **Role:** button primary disabled component

  • **backgroundColor:** `{colors.hairline}`
  • **textColor:** `{colors.muted}`
  • button yellow

    **Role:** button yellow component

  • **backgroundColor:** `{colors.brand-yellow}`
  • **textColor:** `{colors.primary}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.full}`
  • **padding:** `12px 24px`
  • button blue

    **Role:** button blue component

  • **backgroundColor:** `{colors.brand-blue}`
  • **textColor:** `{colors.on-primary}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.full}`
  • **padding:** `12px 24px`
  • button secondary

    **Role:** button secondary component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.full}`
  • **padding:** `12px 24px`
  • **border:** `1px solid {colors.hairline-strong}`
  • button on dark

    **Role:** button on dark component

  • **backgroundColor:** `{colors.on-dark}`
  • **textColor:** `{colors.primary}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.full}`
  • **padding:** `12px 24px`
  • button ghost

    **Role:** button ghost component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.button-md}`
  • **rounded:** `{rounded.md}`
  • **padding:** `8px 12px`
  • button link

    **Role:** button link component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.brand-blue}`
  • **typography:** `{typography.body-sm-medium}`
  • **padding:** `0`
  • button icon circular

    **Role:** button icon circular component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **rounded:** `{rounded.full}`
  • **size:** `36px`
  • **border:** `1px solid {colors.hairline}`
  • card base

    **Role:** card base component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.xl}`
  • **border:** `1px solid {colors.hairline-soft}`
  • card feature

    **Role:** card feature component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `{spacing.xxl}`
  • **border:** `1px solid {colors.hairline-soft}`
  • card feature yellow

    **Role:** card feature yellow component

  • **backgroundColor:** `{colors.brand-yellow}`
  • **textColor:** `{colors.primary}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `{spacing.xxl}`
  • card feature coral

    **Role:** card feature coral component

  • **backgroundColor:** `{colors.coral-light}`
  • **textColor:** `{colors.primary}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `{spacing.xxl}`
  • card feature teal

    **Role:** card feature teal component

  • **backgroundColor:** `{colors.teal-light}`
  • **textColor:** `{colors.primary}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `{spacing.xxl}`
  • card feature rose

    **Role:** card feature rose component

  • **backgroundColor:** `{colors.rose-light}`
  • **textColor:** `{colors.primary}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `{spacing.xxl}`
  • card customer story

    **Role:** card customer story component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xxxl}`
  • **padding:** `0`
  • **border:** `1px solid {colors.hairline-soft}`
  • card stat

    **Role:** card stat component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.stat-display}`
  • **padding:** `{spacing.lg}`
  • pricing card

    **Role:** pricing card component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.xxl}`
  • **border:** `1px solid {colors.hairline}`
  • pricing card featured

    **Role:** pricing card featured component

  • **backgroundColor:** `{colors.surface-pricing-featured}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.xxl}`
  • **border:** `2px solid {colors.brand-blue}`
  • pricing card enterprise

    **Role:** pricing card enterprise component

  • **backgroundColor:** `{colors.primary}`
  • **textColor:** `{colors.on-primary}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.xxl}`
  • text input

    **Role:** text input component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.body-md}`
  • **rounded:** `{rounded.md}`
  • **padding:** `{spacing.sm} {spacing.md}`
  • **border:** `1px solid {colors.hairline-strong}`
  • **height:** `44px`
  • text input focused

    **Role:** text input focused component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **border:** `2px solid {colors.brand-blue}`
  • search pill

    **Role:** search pill component

  • **backgroundColor:** `{colors.surface}`
  • **textColor:** `{colors.steel}`
  • **typography:** `{typography.body-sm}`
  • **rounded:** `{rounded.md}`
  • **padding:** `{spacing.xs} {spacing.md}`
  • **height:** `40px`
  • **border:** `1px solid {colors.hairline}`
  • filter dropdown

    **Role:** filter dropdown component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.body-sm-medium}`
  • **rounded:** `{rounded.full}`
  • **padding:** `{spacing.xs} {spacing.md}`
  • **border:** `1px solid {colors.hairline-strong}`
  • pill tab

    **Role:** pill tab component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.steel}`
  • **typography:** `{typography.body-sm-medium}`
  • **rounded:** `{rounded.full}`
  • **padding:** `{spacing.xs} {spacing.md}`
  • **border:** `1px solid {colors.hairline}`
  • pill tab active

    **Role:** pill tab active component

  • **backgroundColor:** `{colors.primary}`
  • **textColor:** `{colors.on-primary}`
  • **rounded:** `{rounded.full}`
  • **border:** `1px solid {colors.primary}`
  • toggle monthly yearly

    **Role:** toggle monthly yearly component

  • **backgroundColor:** `{colors.surface}`
  • **textColor:** `{colors.ink}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px`
  • badge promo

    **Role:** badge promo component

  • **backgroundColor:** `{colors.brand-yellow}`
  • **textColor:** `{colors.primary}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px 10px`
  • badge tag yellow

    **Role:** badge tag yellow component

  • **backgroundColor:** `{colors.surface-yellow}`
  • **textColor:** `{colors.yellow-dark}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px 10px`
  • badge tag purple

    **Role:** badge tag purple component

  • **backgroundColor:** `{colors.surface-pricing-featured}`
  • **textColor:** `{colors.brand-blue}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px 10px`
  • badge tag coral

    **Role:** badge tag coral component

  • **backgroundColor:** `{colors.coral-light}`
  • **textColor:** `{colors.coral-dark}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px 10px`
  • badge success

    **Role:** badge success component

  • **backgroundColor:** `{colors.success-accent}`
  • **textColor:** `{colors.on-primary}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.full}`
  • **padding:** `4px 10px`
  • badge discount

    **Role:** badge discount component

  • **backgroundColor:** `{colors.brand-yellow}`
  • **textColor:** `{colors.primary}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.sm}`
  • **padding:** `2px 6px`
  • promo banner

    **Role:** promo banner component

  • **backgroundColor:** `{colors.primary}`
  • **textColor:** `{colors.on-primary}`
  • **typography:** `{typography.body-sm-medium}`
  • **padding:** `{spacing.sm} {spacing.md}`
  • comparison table

    **Role:** comparison table component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.body-sm}`
  • **rounded:** `{rounded.md}`
  • **border:** `1px solid {colors.hairline}`
  • comparison row

    **Role:** comparison row component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **padding:** `{spacing.md} {spacing.lg}`
  • **border:** `0 0 1px {colors.hairline-soft} solid`
  • template card

    **Role:** template card component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.md}`
  • **border:** `1px solid {colors.hairline}`
  • whiteboard mockup

    **Role:** whiteboard mockup component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `0`
  • **border:** `1px solid {colors.hairline-soft}`
  • **shadow:** `rgba(5, 0, 56, 0.08) 0px 12px 32px -4px`
  • faq accordion item

    **Role:** faq accordion item component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.md}`
  • **padding:** `{spacing.xl}`
  • **border:** `0 0 1px {colors.hairline} solid`
  • logo wall item

    **Role:** logo wall item component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.steel}`
  • **typography:** `{typography.body-md-medium}`
  • **padding:** `{spacing.lg}`
  • hero band marketing

    **Role:** hero band marketing component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.hero-display}`
  • **rounded:** `0`
  • **padding:** `{spacing.hero}`
  • cta banner dark

    **Role:** cta banner dark component

  • **backgroundColor:** `{colors.primary}`
  • **textColor:** `{colors.on-primary}`
  • **rounded:** `{rounded.feature}`
  • **padding:** `{spacing.section}`
  • industry tile

    **Role:** industry tile component

  • **backgroundColor:** `{colors.canvas}`
  • **rounded:** `{rounded.xl}`
  • **padding:** `{spacing.xl}`
  • **border:** `1px solid {colors.hairline-soft}`
  • capterra badge

    **Role:** capterra badge component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.ink}`
  • **typography:** `{typography.caption}`
  • **rounded:** `{rounded.md}`
  • **padding:** `{spacing.sm} {spacing.md}`
  • **border:** `1px solid {colors.hairline}`
  • footer region

    **Role:** footer region component

  • **backgroundColor:** `{colors.footer-bg}`
  • **textColor:** `{colors.on-dark}`
  • **typography:** `{typography.body-sm}`
  • **padding:** `{spacing.section} {spacing.xxl}`
  • footer link

    **Role:** footer link component

  • **backgroundColor:** `transparent`
  • **textColor:** `{colors.on-dark-muted}`
  • **typography:** `{typography.body-sm}`
  • **padding:** `{spacing.xxs} 0`
  • app store badge

    **Role:** app store badge component

  • **backgroundColor:** `{colors.canvas}`
  • **textColor:** `{colors.primary}`
  • **typography:** `{typography.caption-bold}`
  • **rounded:** `{rounded.md}`
  • **padding:** `{spacing.sm} {spacing.md}`
  • Do's and Don'ts

    Do

  • Use `--color-primary` for the brand's primary interaction treatment.
  • Keep page surfaces anchored to `--color-canvas`.
  • Preserve every typography style's documented size, line height, and letter spacing.
  • Compare major implementation decisions against [the live Miro website](https://miro.com/).
  • Don't

  • Do not introduce colors outside the documented color token set.
  • Do not replace `--color-brand-pink` with an arbitrary neutral.
  • Do not flatten documented component states or spacing relationships.
  • Do not treat this extracted snapshot as newer than the live source website.
  • Layout

    Use the documented spacing scale and component geometry as the implementation baseline. Validate responsive composition and current page rhythm against [the live source](https://miro.com/).

    同类品牌推荐
    Miro 设计系统 | 品牌模板 · ViboDesign