
primary
#1C69D4
--color-primary
primary active
#0653B6
--color-primary-active
primary disabled
#D6D6D6
--color-primary-disabled
ink
#262626
--color-ink
body
#3C3C3C
--color-body
body strong
#1A1A1A
--color-body-strong
muted
#6B6B6B
--color-muted
muted soft
#9A9A9A
--color-muted-soft
hairline
#E6E6E6
--color-hairline
hairline strong
#CCCCCC
--color-hairline-strong
canvas
#FFFFFF
--color-canvas
surface soft
#F7F7F7
--color-surface-soft
surface card
#FAFAFA
--color-surface-card
surface strong
#EBEBEB
--color-surface-strong
surface dark
#1A2129
--color-surface-dark
surface dark elevated
#262E38
--color-surface-dark-elevated
on primary
#FFFFFF
--color-on-primary
on dark
#FFFFFF
--color-on-dark
on dark soft
#BBBBBB
--color-on-dark-soft
m blue light
#0066B1
--color-m-blue-light
m blue dark
#1C69D4
--color-m-blue-dark
m red
#E22718
--color-m-red
success
#22C55E
--color-success
warning
#F59E0B
--color-warning
error
#DC2626
--color-error
字体家族
'BMW Type Next Latin', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif / 'BMW Type Next Latin', sans-serif
字重
备注
2 个字体家族,完整字阶、行高和字距见 DESIGN.md
品牌设计系统的完整 Markdown 文档
BMW — Style Reference
> BMW's corporate site — distinct from BMW M's motorsport-bombastic variant, this is a measured and settled corporate-automotive interface. On a light (cream-tinted white) canvas, BMW corporate blue (#1c69d4) carries every primary CTA; dark navy hero bands frame model photography. BMW Type Next Latin sets the entire hierarchy on two weights — heavy 700 display and Light 300 body. Configuration and reservation flows ride a card-based 4-up grid, where each card holds a model render, a name, and a "Learn More" link.
**Theme:** light
**Source website:** [https://www.bmw.com/](https://www.bmw.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 | `#1c69d4` | `--color-primary` | primary role extracted from the source design |
| primary active | `#0653b6` | `--color-primary-active` | primary active role extracted from the source design |
| primary disabled | `#d6d6d6` | `--color-primary-disabled` | primary disabled role extracted from the source design |
| ink | `#262626` | `--color-ink` | ink role extracted from the source design |
| body | `#3c3c3c` | `--color-body` | body role extracted from the source design |
| body strong | `#1a1a1a` | `--color-body-strong` | body strong role extracted from the source design |
| muted | `#6b6b6b` | `--color-muted` | muted role extracted from the source design |
| muted soft | `#9a9a9a` | `--color-muted-soft` | muted soft role extracted from the source design |
| hairline | `#e6e6e6` | `--color-hairline` | hairline role extracted from the source design |
| hairline strong | `#cccccc` | `--color-hairline-strong` | hairline strong role extracted from the source design |
| canvas | `#ffffff` | `--color-canvas` | canvas role extracted from the source design |
| surface soft | `#f7f7f7` | `--color-surface-soft` | surface soft role extracted from the source design |
| surface card | `#fafafa` | `--color-surface-card` | surface card role extracted from the source design |
| surface strong | `#ebebeb` | `--color-surface-strong` | surface strong role extracted from the source design |
| surface dark | `#1a2129` | `--color-surface-dark` | surface dark role extracted from the source design |
| surface dark elevated | `#262e38` | `--color-surface-dark-elevated` | surface dark elevated role extracted from the source design |
| on primary | `#ffffff` | `--color-on-primary` | on primary role extracted from the source design |
| on dark | `#ffffff` | `--color-on-dark` | on dark role extracted from the source design |
| on dark soft | `#bbbbbb` | `--color-on-dark-soft` | on dark soft role extracted from the source design |
| m blue light | `#0066b1` | `--color-m-blue-light` | m blue light role extracted from the source design |
| m blue dark | `#1c69d4` | `--color-m-blue-dark` | m blue dark role extracted from the source design |
| m red | `#e22718` | `--color-m-red` | m red role extracted from the source design |
| success | `#22c55e` | `--color-success` | success role extracted from the source design |
| warning | `#f59e0b` | `--color-warning` | warning role extracted from the source design |
| error | `#dc2626` | `--color-error` | error role extracted from the source design |
Tokens — Typography
'BMW Type Next Latin', system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif · `--font-primary`
'BMW Type Next Latin', sans-serif · `--font-family-2`
Type Scale
| Role | Size | Line Height | Letter Spacing | Token |
|---|---|---|---|---|
| display-xl | 64px | 1.05 | 0 | `--text-display-xl` |
| display-lg | 48px | 1.1 | 0 | `--text-display-lg` |
| display-md | 32px | 1.15 | 0 | `--text-display-md` |
| display-sm | 24px | 1.25 | 0 | `--text-display-sm` |
| title-lg | 20px | 1.3 | 0 | `--text-title-lg` |
| title-md | 18px | 1.4 | 0 | `--text-title-md` |
| title-sm | 16px | 1.4 | 0 | `--text-title-sm` |
| body-md | 16px | 1.55 | 0 | `--text-body-md` |
| body-sm | 14px | 1.55 | 0 | `--text-body-sm` |
| caption | 12px | 1.4 | 0.5px | `--text-caption` |
| label-uppercase | 13px | 1.3 | 1.5px | `--text-label-uppercase` |
| button | 14px | 1 | 0.5px | `--text-button` |
| nav-link | 14px | 1.4 | 0.3px | `--text-nav-link` |
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 | 24px | `--spacing-lg` |
| xl | 32px | `--spacing-xl` |
| xxl | 48px | `--spacing-xxl` |
| section | 80px | `--spacing-section` |
Border Radius
| Name | Value | Token |
|---|---|---|
| none | 0px | `--radius-none` |
| xs | 2px | `--radius-xs` |
| sm | 4px | `--radius-sm` |
| md | 8px | `--radius-md` |
| lg | 12px | `--radius-lg` |
| pill | 9999px | `--radius-pill` |
| full | 9999px | `--radius-full` |
Layout
Components
top nav
**Role:** top nav component
button primary
**Role:** button primary component
button primary active
**Role:** button primary active component
button primary disabled
**Role:** button primary disabled component
button secondary
**Role:** button secondary component
button secondary on dark
**Role:** button secondary on dark component
button text link
**Role:** button text link component
text link
**Role:** text link component
hero band dark
**Role:** hero band dark component
hero photo band
**Role:** hero photo band component
model card
**Role:** model card component
model card photo
**Role:** model card photo component
feature photo card
**Role:** feature photo card component
spec cell
**Role:** spec cell component
inventory card
**Role:** inventory card component
filter chip
**Role:** filter chip component
filter chip active
**Role:** filter chip active component
configurator option tile
**Role:** configurator option tile component
configurator option tile selected
**Role:** configurator option tile selected component
text input
**Role:** text input component
cookie consent card
**Role:** cookie consent card component
category tab
**Role:** category tab component
category tab active
**Role:** category tab active component
m stripe divider
**Role:** m stripe divider component
cta band photo
**Role:** cta band photo component
footer
**Role:** footer component
Do's and Don'ts
Do
Don't
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://www.bmw.com/).