prismdinstrument
EXTRACTED · 10 SECTIONS · 12 COLORS · GRADE B

vitejs.dev

Accent #5e6ad2 · Inter — every value below measured via getComputedStyle(), not asserted by hand.

12
colors
4
faces
2
shadows
8
keyframes
vitejs.dev
real render · source of truth

vitejs.dev is built on a near-black canvas (rgb(22, 23, 29)). The system uses rgb(255, 255, 255) as the singular interactive color. Sharp 0px corners on CTAs — architectural restraint, engineering precision alongside APK Protocol as the primary typeface. APK Protocol is paired with KH Teka Mono for secondary roles. A restrained elevation system (2 distinct shadows) — shadows reserved for the few elements that must lift off the page. Motion is a first-class concern — 8 keyframe animations plus transition-driven interactions.

01

Color — roles, semantics & the full census

12 colors measured · click any swatch to copy

Canvas
#16171d
AAA 17.88:1
Ink
#ffffff
AAA 17.88:1
Accent
#ffffff
AAA 17.88:1
Line
#6a6a71
AA·lg 3.33:1
Semantic states
error#ef5350success#3dd68cwarning#f9b44e

3 semantic roles found.

12 colors mined from the live renderexpand
02

Type — the ladder, in the real face

6 roles · rendered live in the real Inter (captured woff2) · lines are editable, click any spec to copy

display xl
display-xl60px · 500
display md
display-md40px · 500 · ×1.50
headline
headline24px · 500 · ×1.67
body
body14px · 400 · ×1.71
body sm
body-sm16px · 400 · ×0.88
button
button16px · 500 · ×1.00
04

Depth — elevation is extracted, not invented

2 box-shadows measured on the live page · click a tile to copy its raw value

shadow-1
05

Motion — easings, transitions & live keyframes

5 easing curves · 8 keyframes · hover a tile to preview

Easing & transitions
transition-2cubic-bezier(0.4, 0, 0.2, 1)
default-transition-timing-functioncubic-bezier(.4, 0, .2, 1)
ease-outcubic-bezier(0, 0, .2, 1)
ease-smoothcubic-bezier(.25,.8,.4,1)
ease-fastcubic-bezier(.45,.15,.6,.9)
8 keyframe animations extracted
fadeIn-d05aa6b7
scroll-horizontal-0d857a7f
event-card-hover
fade-in
slideDown
shimmerText
fadeIn
pulse
03

Spacing & radius, made spatial

9 spacing steps · 7 radii · bars are exact px widths

Spacing scale
xxs · 2px
xs · 8px
sm · 20px
md · 24px
base · 32px
lg · 40px
xl · 60px
2xl · 64px
3xl · 96px
Radius
none
0px
xs
4px
sm
8px
md
14px
lg
20px
xl
32px
full
9999px
06

Components — the closed vocabulary

14 component families · 39 variants counted on the live DOM

ComponentVariants found
buttons×8
cards×5
testimonial×5
links×4
nav Links×3
footer Links×3
heading H2×3
code Block×2
inputs×1
tabs×1
heading H1×1
heading H3×1
heading H5×1
heading H6×1
Component style specs (§4)expand

Buttons

Icon Button

  • Background: transparent
  • Text: #ffffff {colors.primary}
  • Padding: 8px
  • Radius: 0px
  • Font: 16px weight 400
  • Use: Toolbar/UI icons
  • Focus: outline: rgb(16, 16, 16) auto 4px

Ghost

  • Background: transparent
  • Text: #ffffff {colors.primary}
  • Padding: 8px 12px
  • Radius: 0px
  • Font: 16px weight 400
  • Use: Subtle action, toolbar, nav button
  • Focus: outline: rgb(16, 16, 16) auto 4px

Dark / Solid

  • Background: #14121a
  • Text: #98989f {colors.ink-muted}
  • Padding: 8px 12px
  • Radius: 8px
  • Font: 14px weight 400
  • Use: Solid dark CTA
  • Focus: outline: rgb(16, 16, 16) auto 4px

Ghost

  • Background: transparent
  • Text: #ffffff {colors.primary}
  • Padding: 8px 16px
  • Radius: 8px
  • Font: 16px weight 500
  • Use: Subtle action, toolbar, nav button
  • Focus: outline: rgb(16, 16, 16) auto 4px

Icon Button

  • Background: #14121a
  • Text: #ffffff {colors.primary}
  • Padding: 0px
  • Radius: 4px
  • Border: 1px solid rgb(46, 46, 50)
  • Font: 16px weight 400
  • Use: Toolbar/UI icons
  • Focus: outline: rgb(16, 16, 16) auto 4px

Light / Invert

  • Background: #ffffff {colors.primary}
  • Text: #16171d {colors.canvas}
  • Padding: 8px 16px
  • Radius: 8px
  • Font: 16px weight 500
  • Use: Bright CTA on dark sections
  • Focus: outline: rgb(16, 16, 16) auto 4px

Cards & Containers

Standard Card

07

Layout — structure & dimensions

5 layout metrics measured

header 81px 1440px max-width
max Width1440px
header Height81px
sidebar Width0px
gap16px
container Padding24px
08

Responsive — real breakpoints

fluid system — no hard stops

No distinct @media breakpoints captured at the desktop/mobile pass — this layout is fluid, adapting by ratio rather than hard stops.

09

Do's & Don'ts

23 enforceable rules pulled verbatim from the spec

Do
Use dark background (`#16171d`) as the foundation — this is a dark-mode-native design
Use Inter as the primary typeface — it defines the brand personality
Keep font weights between 400-600 — the system uses a narrow weight range for subtle hierarchy
Use negative letter-spacing (-3px) at display sizes for compressed, editorial headlines
Use the extracted shadow patterns for elevation — they are tuned to match the brand palette
Use White (`#ffffff`) as the primary accent — it's the brand's signature interactive color
Use 8px border-radius on buttons — the standard corner rounding for interactive elements
Apply 40px 32px padding inside cards — matches the design system's content breathing room
Use 8px border-radius on cards — consistent with the grid card corners
Maintain nav height at 40px — consistent vertical space for the navigation bar
Include exactly 2 CTAs in the hero (primary + secondary) — this design pattern is multi-action, not single-purpose
Each card includes a top image — imagery is part of the card identity, not optional
Show person avatars with testimonials — social proof is human-centric here
Lay out testimonials in a grid (9+ items) — quantity signals scale and trust
Don't
Don't use light backgrounds — the dark canvas is the native medium
Don't substitute with generic sans-serif or serif — the custom font carries the brand
Don't use weight 700 (bold) or above — 600 is the maximum weight in this system
Don't increase letter-spacing on headings — the type is designed to run tight at scale
Don't invent new shadow values — use only the extracted shadow levels
Don't introduce additional saturated accent colors — the palette is intentionally controlled
Don't collapse or hide the nav on scroll without an explicit scroll-triggered animation — the design uses fixed nav presence
Don't make the nav sticky — this design lets it scroll away to maximize content focus
Don't put a CTA button in the nav — this design uses links only at the top
10

Agent guide & export

Paste-ready prompt + the real files behind this page

Build a UI in the vitejs.dev design system. Canvas #16171d · ink #ffffff · accent #ffffff. Type: Inter — respect the size/weight ladder in §3. Radius, spacing, shadow: use only the extracted scales (no magic numbers). Full spec follows — paste the DESIGN.md below into your agent.
Every value above was getComputedStyle-verified.
$ npx prismd add vitejs
DESIGN.md · narrative spec tokens.json
A · InstrumentB · Press