If you encounter any problems with this design system, welcome to feedback by raising GitHub issues.

Caution: This design system is currently under development. The specifications are unstable.

Token
Value*
Description
color-ink-primary
hsl(240deg, 15%, 15%)
Primary ink color
color-ink-secondary
hsl(240deg, 15%, 55%)
Secondary ink color
color-bg-primary
hsl(240deg, 15%, 100%)
Primary (normal) background
color-bg-secondary
hsl(240deg, 15%, 97%)
Secondary (darker) background
color-line-primary
hsl(240deg, 15%, 95%)
Primary (normal) line color, suitable with primary background
color-line-secondary
hsl(240deg, 15%, 92%)
Secondary (darker) line color, suitable with secondary background
color-accent-primary
hsl( 24deg, 100%, 50%)
Primary accent color
color-accent-secondary
hsl( 48deg, 100%, 50%)
Secondary accent color
color-accent-bg
hsl( 24deg, 100%, 97%)
Background with accent color tint
color-error-primary
hsl(350deg, 100%, 40%)
Primary error color
color-error-bg
hsl(350deg, 100%, 97%)
Background with error color tint

* Text are usually specified with ink colors. Also, ink colors can be widely used as foreground element tints.

Color values should be set in HSL model, of which the value logic is comprehensible for both designers and engineers.

Elementary token*

Value

Description

font-family-basic
Public Sans + fallback

Universal custom font family

font-family-code
Fira Code + fallback

Custom font family for program languages

em-display
32px

Display font size

em-headline
24px

Headline font size

em-body
16px

Body font size

em-note
14px

Note font size

em-caption
12px

Caption font size

leading-display
48px

Display line height

leading-headline
32px

Headline line height

leading-body
24px

Body line height

leading-note
20px

Note line height

leading-caption
16px

Caption line height

font-weight-rg
400

Regular weight

font-weight-md
500

Medium weight

font-weight-sb
600

Semibold weight

font-weight-eb
800

Extrabold weight

Compound token
Value§
Description
text-display-rg
em-display
leading-display
font-weight-rg

Regular display scale

text-display-sb
em-display
leading-display
font-weight-sb

Semibold display scale

text-display-eb
em-display
leading-display
font-weight-eb

Extrabold display scale

text-headline-rg
em-headline
leading-headline
font-weight-rg

Regular headline scale

text-headline-sb
em-headline
leading-headline
font-weight-sb

Semibold headline scale

text-headline-eb
em-headline
leading-headline
font-weight-eb

Extrabold headline scale

text-body-rg
em-body
leading-body
font-weight-rg

Regular body scale

text-body-sb
em-body
leading-body
font-weight-sb

Semibold body scale

text-body-eb
em-body
leading-body
font-weight-eb

Extrabold body scale

text-note-rg
em-note
leading-note
font-weight-rg

Regular note scale

text-note-sb
em-note
leading-note
font-weight-sb

Semibold note scale

text-note-eb
em-note
leading-note
font-weight-eb

Extrabold note scale

text-caption-rg
em-caption
leading-caption
font-weight-rg

Regular caption scale

text-caption-sb
em-caption
leading-caption
font-weight-sb

Semibold caption scale

text-caption-eb
em-caption
leading-caption
font-weight-eb

Extrabold caption scale

text-body-rg--tnum
text-display-rg
tnum + lnum

Regular body scale with tabular figures

text-body-sb--tnum
text-display-sb
tnum + lnum

Semibod body scale with tabular figures

text-body-eb--tnum
text-display-sb
tnum + lnum

Extrabold body scale with tabular figures

text-caption-sb--caps
text-caption-sb
uppercase

Semibod caption scale with all capitals

* An elementary token is usually defined by a simple attribution with a specific value.

Font weights set by numeric values are future-proof for variable fonts.

An compound token can be composed of several elementary tokens, or can be generated by extending another token.

§ Tokens of text-* are defaultly based on font-family-basic.

Elementary token

Value

Description

elevation-shadow-color
240deg, 15%, 15%

HSL color value of shadows

elevation-shadow-1
0px 3px 8px hsla(elevation-shadow-color, 6%)
0px 1.5px 4px hsla(elevation-shadow-color, 6%)
0px 1px 2px hsla(elevation-shadow-color, 6%)
0px 0.5px 1px hsla(elevation-shadow-color, 6%)
0px 0px 0.5px hsla(elevation-shadow-color, 8%)

Shadows* for elevation level 1

elevation-shadow-2
0px 8px 16px hsla(elevation-shadow-color, 4%)
0px 4px 12px hsla(elevation-shadow-color, 4%)
0px 2px 8px hsla(elevation-shadow-color, 4%)
0px 1px 4px hsla(elevation-shadow-color, 4%)
0px 0px 0.5px hsla(elevation-shadow-color, 8%)

Shadows* for elevation level 2

elevation-shadow-3
0px 16px 24px hsla(elevation-shadow-color, 2%)
0px 8px 12px hsla(elevation-shadow-color, 2%)
0px 6px 8px hsla(elevation-shadow-color, 2%)
0px 4px 6px hsla(elevation-shadow-color, 3%)
0px 0px 0.5px hsla(elevation-shadow-color, 8%)

Shadows* for elevation level 3

zindex-0
0

Z-axis level 0

zindex-1
100

Z-axis level 1

zindex-2
200

Z-axis level 2

zindex-3
300

Z-axis level 3

zindex-4
400

Z-axis level 4

zindex-5
500

Z-axis level 5

zindex-6
600

Z-axis level 6

zindex-7
700

Z-axis level 7

zindex-8
800

Z-axis level 8

zindex-9
900

Z-axis level 9

Compound token
Value
Description
elevation-1
box-shadow: elevation-shadow-1

Elevation level 1

elevation-2
box-shadow: elevation-shadow-2

Elevation level 2

elevation-3
box-shadow: elevation-shadow-3

Elevation level 3

* Multiple shadow layers are used for generating smoother shadows as a CSS trick.

The zindex-* tokens are used as a CSS value convention for z-index property.

Currently, elevations mainly depend on CSS box-shadow with appropriate z-index.

Token

Value

Description

border-line-primary
1px solid
color-line-primary

Thin (default) primary border line

border-line-secondary
1px solid
color-line-secondary

Thin (default) secondary border line

border-accent
1px solid
color-accent-primary

Thin (default) accent border line

border-accent--medium
2px solid
color-accent-primary

Medium accent border line

border-accent--thick
4px solid
color-accent-primary

Thick accent border line

border-corner-sm
4px*

Small border corner

border-corner-md
8px*

Medium border corner

border-corner-pill
999em

Pill-shaped border corner

* The values of border-corner-* tokens are the corner radius sizes.

A very large radius size, e.g. 999em, can be used to generate pill-shaped border corner according to border radii overlapping.