Skip to content
Pathwise

Pathwise

Pathwise design system

A decision engine for education choices, designed so the thing that decides the choice is the first thing you read — on a white page where space, type and tonal fills do the separating.

What it believes

Principles

  • “A white page where space, type and tonal fills do the separating.”
  • “No borders, no shadows, no glass. One teal. One typeface: Hanken Grotesk.”
  • “Prominence = importance: the thing that decides the choice is the biggest thing on the screen.”
  • “State before words: status reads from a coloured dot before you read the label.”
  • “A projection never looks like a fact: every career read says whether it was researched, and cites its sources.”
  • “Zone 2: the one thing to do next. ONE job — answer "what now?".”

How it looks and moves

Brand & voice

Mode

Light on :root, dark under prefers-color-scheme: dark.

Accent

--accent: #05616d — teal text + links

Type

--font-sans: var(--font-hanken), ui-sans-serif, system-ui, sans-serif

Surfaces

Section container: .ds-card (tonal panel); .ds-row for ledger rows that alternate bands.

Depth

Elevation: flat by design

Motion

Motion: --ease cubic-bezier(0.22, 1, 0.36, 1); --dur-fast 140ms, --dur 220ms, --dur-enter 420ms, --dur-meter 600ms.

Tokens the app runs

Foundations

Color

Each swatch shows light (left) and dark (right), resolved from the token file this app runs.

Surfaces

--bg

#ffffff · dark #111313

the page

--surface

#f4f6f6 · dark #1a1d1d

tonal panel / alternating ledger row

--sunken

#eef1f1 · dark #161818

inputs, quiet buttons, hover

--track

#e4e8e8 · dark #2a2e2e

meter + ring tracks, quiet hover

Text

--ink

#141a1c · dark #ededed

--ink-muted

#525d62 · dark #a9b0b1

--ink-faint

#5b6569 · dark #8f9798

AA 4.5:1+ on every surface and tint

Accent

--accent

#05616d · dark #62c9d2

teal text + links

--accent-strong

#044e58 · dark #8adbe2

hover / pressed teal text

--accent-tint

color-mix(in srgb, #078b9c 10%, var(--bg)) · dark color-mix(in srgb, #2bb3c0 14%, var(--bg))

primary button at rest, selected

--accent-tint-strong

color-mix(in srgb, #078b9c 18%, var(--bg)) · dark color-mix(in srgb, #2bb3c0 22%, var(--bg))

primary button hover

--accent-fill

#05616d · dark #1d6d76

solid fill under white text (7.0:1)

--on-accent

#ffffff

Semantic

--ok

#256b43 · dark #71c79a

--warn

#875100 · dark #e3ae62

--bad

#b42318 · dark #f2907f

Overlay

--scrim

rgba(20, 26, 28, 0.45) · dark rgba(0, 0, 0, 0.6)

Borders and charts: none. Separation is space and tone, so the border tokens resolve to transparent; Pathwise draws no charts.

Typography

One family, Hanken Grotesk, doing every job — var(--font-hanken), ui-sans-serif, system-ui, sans-serif.

Display

Explore Programs

Section title

Your applications

Verdict

A design-leadership degree with real AI depth.

Row title

Example University

Lede

Ranked by career fit, then by match.

Body

Every projection says whether it was researched, and cites its sources.

Small

Hybrid · Cambridge, MA

Eyebrow

Fits your goals?

Spacing

A 4px rhythm; 72px between ledger sections.

--space-14px
--space-28px
--space-312px
--space-416px
--space-520px
--space-624px
--space-832px
--space-1040px
--space-1248px
--space-1872px

Radius

--radius-card

6px

--radius-control

8px

--radius-pill

999px

Elevation

Flat by design. There are no shadow levels: panels separate by tone, and overlays sit on the scrim.

Page
Panel
Sunken
Scrim

Motion

Easing --ease · cubic-bezier(0.22, 1, 0.36, 1). Click a row to play it.

Contrast

WCAG AA, computed from the token file for both modes. Text needs 4.5:1; the focus ring is a non-text indicator and needs 3:1.

PairNeedsLightDark
--ink on --bg4.5:117.58:1 pass15.92:1 pass
--ink on --surface4.5:116.21:1 pass14.50:1 pass
--ink on --sunken4.5:115.48:1 pass15.23:1 pass
--ink-muted on --bg4.5:16.77:1 pass8.46:1 pass
--ink-muted on --surface4.5:16.24:1 pass7.70:1 pass
--ink-muted on --sunken4.5:15.96:1 pass8.09:1 pass
--ink-faint on --bg4.5:15.98:1 pass6.26:1 pass
--ink-faint on --surface4.5:15.52:1 pass5.70:1 pass
--ink-faint on --sunken4.5:15.27:1 pass5.98:1 pass
--accent on --bg4.5:17.15:1 pass9.59:1 pass
--accent on --surface4.5:16.59:1 pass8.73:1 pass
--accent on --sunken4.5:16.29:1 pass9.17:1 pass
--accent on --accent-tint (primary)4.5:16.32:1 pass7.78:1 pass
--accent on --accent-tint-strong (hover)4.5:15.71:1 pass6.64:1 pass
--on-accent on --accent-fill4.5:17.15:1 pass6.00:1 pass
--ok on its own tint4.5:15.57:1 pass7.76:1 pass
--warn on its own tint4.5:15.65:1 pass7.88:1 pass
--bad on its own tint4.5:15.57:1 pass6.93:1 pass
Focus ring --accent vs --bg3:17.15:1 pass9.59:1 pass

One component per job

Components

Button

One primary, one quiet, one text and one destructive action — nothing in between.

Use when

  • An action changes something: start, save, open, refresh.
  • Primary for the one action a row or page is for.

Don't

  • Two primaries side by side.
  • A button styled as a link, or a link styled as a button.
VariantDefaultHoverFocusPressedDisabledLoading
Primary
Secondary
Text
Destructive

More versions

Live — try it

Text field

A tonal fill you type into — never a box with a border.

Use when

  • Free text: search, notes, profile fields.

Don't

  • Fields without a visible or screen-reader label.
VariantDefaultFocusDisabled
Input
Textarea

Live — try it

Select

Native selects on a tonal fill; filter-select is the compact one for filter rows.

Use when

  • Choosing one value from a short known list.

Don't

  • Custom listboxes — the native control is the accessible one.
VariantDefaultHoverFocusDisabled
Filter
Form

Live — try it

Chip

A toggle or a tag. Tonal at rest, teal when selected.

Use when

  • Multi-select options (reminder days, goals, formats).
  • Tags that describe a program.

Don't

  • Status — that is a dot and text.
VariantDefaultHoverFocusPressedSelectedDisabled
Toggle

More versions

HCIStudioPart-time

Live — try it

Status

State you read before the words: a coloured dot and plain text, never a pill.

Use when

  • Tracker state, verdicts, research provenance, sync results.

Don't

  • Wrapping status in a filled pill.
  • Colour alone — the text always says it.

More versions

ResearchedTo closeUnreachableIn ProgressNot Started

Live — try it

Researched · 4 sources

Callout

A note or message as a tinted block — the tone is the fill, never a border.

Use when

  • Honesty notes, sync results, gentle warnings.

Don't

  • Stacking callouts — one per message.

More versions

Re-checked against sources — every program is current.

Some figures are estimated or derived.

Program refresh failed. Please retry.

Tracker created from Explore.

Live — try it

Some figures are estimated or derived.

Surface

Grouping by tone, not by line: a panel, a sunken well, and ledger rows that alternate bands.

Use when

  • A section that belongs together (card).
  • A list of comparable things (rows).

Don't

  • A card inside a card.
  • Borders or shadows to separate.
VariantDefaultHover
Card
Panel
Panel
Row
Row one
Row two
Row one
Row two

More versions

Sunken well

Live — try it

First row
Second row
Third row

Progress

How far along a tracker is.

Use when

  • Completed tasks out of total.

Don't

  • Implying a forecast — progress is a count, never a prediction.

More versions

Live — try it

Pathwise only

MatchRing

The one match gauge: how well a profile meets a program’s requirements.

Use when

  • Beside a program, as the "can I get in" read.

Don't

  • As the career read — that leads in words.
  • Any second gauge style.

More versions

Live — try it

Program row

One decision unit per program: the career verdict and four questions lead; match sits beside them.

Use when

  • Ranking programs on Explore.

Don't

  • Adding copy the projection doesn’t contain — every answer is lifted from it.

Live — try it

Match

Rhode Island School of Design

Graphic Design

In-Person · Providence, RI

Due 1/5/2027

A respected graphic design MFA that deepens your visual and critical craft, but it teaches no leadership and no AI, and costs two years out of work.

Researched · 4 sources · some figures estimatedSee the full projection →
Program site ↗

App nav

Wordmark left, text links right; the active section carries a teal underline.

Use when

  • Once, at the top of every page.

Don't

  • Icon-only navigation.

Live — try it

Live at the top of this page — Program and tracker pages light up their section.

How to use it

Rules

Do

  • Use a primitive first; add utilities only for layout gaps and sizing.

  • Every value comes from a token, motion included.

  • Lead with the career read; the match ring sits beside it as the "can I get in" number.

Don’t

  • Separate with space and tonal fills, never with a border or a shadow.

  • Status is a dot and text; a pill is only ever a toggle, a tag, or a button.

Values set by this spec

Spec decisions

None. Every value on this page comes from Pathwise's own token file — the system defines all of them itself.