01 — Foundations

Core web foundations

Brand primitives are frozen. Components reference semantic tokens only — that's how light and dark stay in sync.

Logo lockups

Wordmark + mascot. Six valid lockups.

astry

Wordmark / blue on light

astry

Wordmark / knockout

Mark / on light

Mark / on brand

astry

Combined / horizontal

astry

Combined / stacked

astry

Combined / dark surface

Color

Primitives never used in components. Semantic tokens flip with the theme.

Brand primitives

--astry-blue

#0051FF

Primary brand · CTA · marketing surfaces

--astry-blue-2

#2D6BFF

Lighter brand · gradients

--deep-navy

#0B1F3A

Marketing accent · charts

--charcoal

#111111

Inverse surfaces · light body text

--paper-white

#F4F4F2

Default canvas (light)

--cloud-blue

#E0EAFF

Soft brand bg

Semantic tokens

TokenLightDarkNote

Surfaces

--bg#F4F4F2#0A0A0B
--canvas#FFFFFF#0F0F11
--subtle#F2F4F8#16171A
--surface#FFFFFF#16171A
--surface-raised#FFFFFF#1C1D21

Borders

--border#E2E5EA#26282E
--border-strong#C9CFD8#3A3D45

Text

--text#111111#F2F3F5
--text-muted#4F5560#B0B5BD
--text-subtle#7A818D#7C8290

Brand

--brand#0051FF#5577FFLifted in dark for AA
--brand-hover#0042D6#708EFF
--brand-soft#E0EAFFrgba(85,119,255,.18)

Status

--success#16A34A#22C55E
--warning#D97706#F59E0B
--danger#DC2626#F87171

Typography

Neue Haas Display Pro for everything. Inter as the secondary / UI face.

Display · headings & body

Neue Haas Display

200 / 300 / 400 / 500 / 700 / 900

Secondary · UI, tokens

Inter

400 / 500 / 600 / 700

TokenSize / LhSample
display96 / 100Embedded intelligence where work happens.
5xl72 / 75Embedded intelligence where work happens.
4xl56 / 60Embedded intelligence where work happens.
3xl40 / 44Embedded intelligence where work happens.
2xl32 / 38Embedded intelligence where work happens.
xl24 / 30Embedded intelligence where work happens.
lg20 / 30Embedded intelligence where work happens.
md18 / 28Embedded intelligence where work happens.
base16 / 25Embedded intelligence where work happens.
sm14 / 20Embedded intelligence where work happens.
xs12 / 18Embedded intelligence where work happens.

Spacing

4 px scale. Restrictive on purpose.

1·4px
2·8px
3·12px
4·16px
5·20px
6·24px
8·32px
10·40px
12·48px
16·64px
20·80px
24·96px

Radius

Astry runs sharp. All sizes = 0 except pill for circular-by-nature elements.

xs0all sizes = 0
sm0
md0default
lg0
xl0
2xl0
pill9999pxswitch · dots · thumb

Elevation

Astry stays flat. Use shadow with intent.

shadow-xs
shadow-sm
shadow-md
shadow-lg

Motion

Snappy. 200 ms is the default.

instant

Color shifts on click

80ms

fast

Hover, focus

140ms

base

Default

200ms

slow

Drawer slides, entries

320ms

Easing — cubic-bezier(0.4, 0, 0.2, 1)

Container & grid

Marketing surfaces use 12-col grid with 24 px gutter, 1440 px max.

1
2
3
4
5
6
7
8
9
10
11
12
max-width: 1440·gutter: 24·columns: 12

Visual signatures

Two things that read as Astry instantly.

Signature 01

Section eyebrow

The eyebrow

Uppercase, 12 px, Astry Blue. Sits above every section title.

Signature 02

Corner angles

SVG L-shapes in Astry Blue. Mark KPIs, hero panels, key quotes. Sparingly.

Mascot library

The Astry character has its own catalog — searchable, filterable, 57 entries.

Open the mascot library →

9 categories · poses · roles · moods · gestures · alerts.

Accessibility

WCAG 2.2 AA is the floor. Most components clear AAA.

Focus visible

2 px brand ring, 2 px offset, only via :focus-visible.

Touch targets

44 × 44 minimum hit area on every interactive primitive.

Reduced motion

All transitions killed under prefers-reduced-motion: reduce.

Forced colors

Components keep visible 1 px borders under Windows High Contrast.

Color independence

Status badges always pair color with a dot or icon.

Semantics

Inputs labeled. Errors role=alert. Switches expose aria-checked.

Sample · brand on bg (light)

8.34 : 1

AAA

Sample · text on bg (light)

17.4 : 1

AAA

Sample · text-subtle on bg

4.7 : 1

AA — non-essential metadata only