HashiCorp
HashiCorp 以近黑色企业基础设施画布承载多个产品,并用 Terraform 紫、Vault 黄、Consul 粉等专属强调色区分产品线,形成统一而清晰的技术品牌体系。

primary
#000000
--color-primary
on primary
#FFFFFF
--color-on-primary
accent blue
#2B89FF
--color-accent-blue
ink
#FFFFFF
--color-ink
ink muted
#B2B6BD
--color-ink-muted
ink subtle
#656A76
--color-ink-subtle
canvas
#000000
--color-canvas
surface 1
#15181E
--color-surface-1
surface 2
#1F232B
--color-surface-2
surface 3
#3B3D45
--color-surface-3
hairline
#3B3D45
--color-hairline
hairline soft
#252830
--color-hairline-soft
inverse canvas
#FFFFFF
--color-inverse-canvas
inverse ink
#000000
--color-inverse-ink
product terraform
#7B42BC
--color-product-terraform
product terraform bright
#911CED
--color-product-terraform-bright
product vault
#FFCF25
--color-product-vault
product consul
#E62B1E
--color-product-consul
product waypoint
#14C6CB
--color-product-waypoint
product waypoint deep
#12B6BB
--color-product-waypoint-deep
product vagrant
#1868F2
--color-product-vagrant
product nomad
#00CA8E
--color-product-nomad
product boundary
#F24C53
--color-product-boundary
amber 100
#FBEABF
--color-amber-100
amber 200
#BB5A00
--color-amber-200
blue 7
#101A59
--color-blue-7
semantic success
#00CA8E
--color-semantic-success
semantic warning
#FFCF25
--color-semantic-warning
semantic error
#E62B1E
--color-semantic-error
semantic visited
#A737FF
--color-semantic-visited
字体家族
hashicorpSans
字重
备注
1 个字体家族,完整字阶、行高和字距见 DESIGN.md
品牌设计系统的完整 Markdown 文档
HashiCorp — Style Reference
> An enterprise-infrastructure marketing canvas built around a near-black ground (#000000) and a system of per-product accent colors — Terraform purple, Vault yellow, Consul pink, Waypoint cyan, Vagrant blue — that act as identity tokens rather than decorative palette. Display type is hashicorpSans set in 600/700 with tight 1.17–1.21 line-heights; body type runs the same family at 500 weight with relaxed 1.50–1.71 line-heights. Cards live as charcoal surfaces with 1px translucent gray borders; product showcase cards lift into per-product chromatic gradients. The system reads as confident, technical, and intentionally multi-product — every section quietly signals which HashiCorp tool it represents.
**Theme:** dark
**Source website:** [https://www.hashicorp.com/](https://www.hashicorp.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 | `#000000` | `--color-primary` | primary role extracted from the source design |
| on primary | `#ffffff` | `--color-on-primary` | on primary role extracted from the source design |
| accent blue | `#2b89ff` | `--color-accent-blue` | accent blue role extracted from the source design |
| ink | `#ffffff` | `--color-ink` | ink role extracted from the source design |
| ink muted | `#b2b6bd` | `--color-ink-muted` | ink muted role extracted from the source design |
| ink subtle | `#656a76` | `--color-ink-subtle` | ink subtle role extracted from the source design |
| canvas | `#000000` | `--color-canvas` | canvas role extracted from the source design |
| surface 1 | `#15181e` | `--color-surface-1` | surface 1 role extracted from the source design |
| surface 2 | `#1f232b` | `--color-surface-2` | surface 2 role extracted from the source design |
| surface 3 | `#3b3d45` | `--color-surface-3` | surface 3 role extracted from the source design |
| hairline | `#3b3d45` | `--color-hairline` | hairline role extracted from the source design |
| hairline soft | `#252830` | `--color-hairline-soft` | hairline soft role extracted from the source design |
| inverse canvas | `#ffffff` | `--color-inverse-canvas` | inverse canvas role extracted from the source design |
| inverse ink | `#000000` | `--color-inverse-ink` | inverse ink role extracted from the source design |
| product terraform | `#7b42bc` | `--color-product-terraform` | product terraform role extracted from the source design |
| product terraform bright | `#911ced` | `--color-product-terraform-bright` | product terraform bright role extracted from the source design |
| product vault | `#ffcf25` | `--color-product-vault` | product vault role extracted from the source design |
| product consul | `#e62b1e` | `--color-product-consul` | product consul role extracted from the source design |
| product waypoint | `#14c6cb` | `--color-product-waypoint` | product waypoint role extracted from the source design |
| product waypoint deep | `#12b6bb` | `--color-product-waypoint-deep` | product waypoint deep role extracted from the source design |
| product vagrant | `#1868f2` | `--color-product-vagrant` | product vagrant role extracted from the source design |
| product nomad | `#00ca8e` | `--color-product-nomad` | product nomad role extracted from the source design |
| product boundary | `#f24c53` | `--color-product-boundary` | product boundary role extracted from the source design |
| amber 100 | `#fbeabf` | `--color-amber-100` | amber 100 role extracted from the source design |
| amber 200 | `#bb5a00` | `--color-amber-200` | amber 200 role extracted from the source design |
| blue 7 | `#101a59` | `--color-blue-7` | blue 7 role extracted from the source design |
| semantic success | `#00ca8e` | `--color-semantic-success` | semantic success role extracted from the source design |
| semantic warning | `#ffcf25` | `--color-semantic-warning` | semantic warning role extracted from the source design |
| semantic error | `#e62b1e` | `--color-semantic-error` | semantic error role extracted from the source design |
| semantic visited | `#a737ff` | `--color-semantic-visited` | semantic visited role extracted from the source design |
Tokens — Typography
hashicorpSans · `--font-primary`
Type Scale
| Role | Size | Line Height | Letter Spacing | Token |
|---|---|---|---|---|
| display-xl | 80px | 1.17 | -2.5px | `--text-display-xl` |
| display-lg | 56px | 1.18 | -1.6px | `--text-display-lg` |
| display-md | 40px | 1.19 | -1.0px | `--text-display-md` |
| headline | 28px | 1.21 | -0.6px | `--text-headline` |
| card-title | 22px | 1.18 | -0.4px | `--text-card-title` |
| subhead | 20px | 1.35 | -0.2px | `--text-subhead` |
| body-lg | 18px | 1.69 | 0 | `--text-body-lg` |
| body | 16px | 1.5 | 0 | `--text-body` |
| body-sm | 14px | 1.71 | 0 | `--text-body-sm` |
| caption | 13px | 1.38 | 0.2px | `--text-caption` |
| button | 14px | 1.29 | 0 | `--text-button` |
| eyebrow | 12px | 1.23 | 0.6px | `--text-eyebrow` |
Tokens — Spacing & Shapes
**Density:** comfortable
Spacing Scale
| Name | Value | Token |
|---|---|---|
| hair | 1px | `--spacing-hair` |
| 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 | 96px | `--spacing-section` |
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 | 24px | `--radius-xxl` |
| pill | 9999px | `--radius-pill` |
| full | 9999px | `--radius-full` |
Layout
Components
button primary
**Role:** button primary component
button primary pressed
**Role:** button primary pressed component
button secondary
**Role:** button secondary component
button tertiary
**Role:** button tertiary component
button product terraform
**Role:** button product terraform component
button product vault
**Role:** button product vault component
button product waypoint
**Role:** button product waypoint component
product card
**Role:** product card component
product card terraform
**Role:** product card terraform component
product card vault
**Role:** product card vault component
product card waypoint
**Role:** product card waypoint component
feature card
**Role:** feature card component
pricing card
**Role:** pricing card component
pricing card featured
**Role:** pricing card featured component
resource card
**Role:** resource card component
text input
**Role:** text input component
text input focused
**Role:** text input focused component
product pill
**Role:** product pill component
top nav
**Role:** top nav component
comparison row
**Role:** comparison row component
cta banner
**Role:** cta banner 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.hashicorp.com/).