Josh Pindjak
WorkStudioNowWritingAboutWork together
WorkStudioNowWritingAboutWork together

Design System

Tokens, components, and patterns used across this site.

TypefaceFont sizesColorSpacingComponentsHTML elements

Typeface

--font-sans — Helvetica Neue, with Arial and system fonts as fallbacks.

AaBbCcDdEeFfGgHhIiJjKk
0123456789 &?!@#$%
The quick brown fox
--font-weight-normalNormal · 400
The quick brown fox
--font-weight-mediumMedium · 500
The quick brown fox
--font-weight-boldBold · 700

Font sizes

Semantic tokens components consume directly.

SampleTokenPrimitiveUsage
Ag--font-size-display-lg
--font-size-3xl3.052rem
Largest display text
Ag--font-size-display
--font-size-xl1.953rem
Page heroes, project headers
Ag--font-size-title
--font-size-xl1.953rem
Article / post titles
Ag--font-size-subheading
--font-size-md1.25rem
Subsection headings
Ag--font-size-lead
--font-size-lg1.563rem
Intro / lead paragraphs, blockquotes
Ag--font-size-case-study-title
--font-size-md1.25rem
Case study section titles
Ag--font-size-body
--font-size-base1rem→ --font-size-md at ≥1920px
Body copy, nav, buttons, cards
Ag--font-size-section-label
--font-size-base1remvia --font-size-body; → --font-size-md at ≥1920px
Left-column section labels
Ag--font-size-meta
--font-size-sm0.8rem
Dates, captions, attributions
Ag--font-size-code
--font-size-sm0.8rem
Inline code, pre blocks
Ag--font-size-chip
--font-size-xs0.64rem
Tags, pills, smallest labels

Primitive scale

Major Third (1.25) ratio. Reference only — consume via semantic tokens above.

SampleTokenValue
Ag--font-size-4xl3.815rem
Ag--font-size-3xl3.052rem
Ag--font-size-2xl2.441rem
Ag--font-size-xl1.953rem
Ag--font-size-lg1.563rem
Ag--font-size-md1.25rem
Ag--font-size-base1rem
Ag--font-size-sm0.8rem
Ag--font-size-xs0.64rem

Color

Radix-style 12-step scales plus the semantic tokens mapped from them.

BlueAccent / interactive (blue-9 primary)
1
2
3
4
5
6
7
8
9
10
11
12
GrayNeutral base UI
1
2
3
4
5
6
7
8
9
10
11
12
JadeSuccess / positive
1
2
3
4
5
6
7
8
9
10
11
12
TomatoError / destructive
1
2
3
4
5
6
7
8
9
10
11
12

Semantic tokens

Background--color-bg
Surface white--color-bg-white
Text--color-text
Text muted--color-text-muted
Text secondary--color-text-secondary
Accent--color-accent
Accent soft--color-accent-soft
Link--color-link
Border--color-border
Border emphasis--color-border-emphasis
Selection--color-selection-bg

Spacing

Radix-style spacing scale. Aliased to --spacing-* for component use.

--space-00.125rem
--space-10.25rem
--space-20.5rem
--space-30.75rem
--space-41rem
--space-52rem
--space-63rem
--space-74rem
--space-85rem
--space-96rem

Components

Atomic UI components from src/components/. Each entry shows the live component, its variants, and how to use it.

Button

Link-styled button. Renders an <a> with shared.btn base styles. Pass style for the variant (defaults to primary).

Primary
Primary

Main calls to action — project links, primary navigation.

style="primary"btn btn--primary
Secondary
Secondary

Supporting actions with a visible border, less emphasis than primary.

style="secondary"btn btn--secondary
Tertiary
Tertiary

Low-emphasis actions — text-link feel without an underline.

style="tertiary"btn btn--tertiary
Usage
---
import Button from '../components/Button.astro';
---

<Button href="/work/example" style="primary">View project</Button>
<Button href="/about" style="secondary">Learn more</Button>
<Button href="#details" style="tertiary">See details</Button>

Callout

Tinted aside for highlighted copy in prose. Pass variant for the background scale and an optional icon (info,sparkle). Slot content supports headings, links, and emphasis.

Blue

Default — informational asides in writing and case studies.

variant="blue"callout callout--blue

This is a blue callout with default styling.

Jade

Success, positive, or “go” messaging.

variant="jade" icon="info"callout callout--jade

This is a jade callout for positive notes.

Tomato

Warnings, errors, or cautionary notes.

variant="tomato"callout callout--tomato

This is a tomato callout for warnings.

Gray

Neutral secondary content blocks.

variant="gray" icon="sparkle"callout callout--gray

This is a gray callout for supporting detail.

Usage
---
import Callout from '../components/Callout.astro';
---

<Callout variant="blue" icon="info">
  <p>Highlighted note with an optional icon.</p>
</Callout>

Tag

Compact pill for labels and filters. Requires a label string; pass color to show a leading status dot.

Design
Default

Plain pill label — archive tags, filters, metadata.

label="Design".tag
Work
With dot

Optional 6×6 status dot for category or timeline filters.

label="Work" color="var(--color-accent)".tag
Usage
---
import Tag from '../components/Tag.astro';
---

<Tag label="Design" />
<Tag label="Work" color="var(--color-accent)" />

Separator

Horizontal divider between content blocks. Pass type for the visual style (defaults to dashes).

Dashes

Default — repeating monospace hyphen pattern.

type="dashes"separator separator--dashes
Line

Simple 1px horizontal rule between sections.

type="line"separator separator--line
Usage
---
import Separator from '../components/Separator.astro';
---

<Separator type="dashes" />
<Separator type="line" />

HTML elements

Core semantic elements rendered with their global base styles.

Body / paragraph

This is a standard paragraph of body text. It uses--font-size-body with a comfortable line height for reading. Paragraphs are capped at a readable measure so long-form copy stays legible across wide viewports.

A second paragraph shows the default spacing between blocks of text, along with a sample inline link and some bold emphasis for good measure.

Unordered list
  • First item in an unordered list
  • Second item, with a slightly longer line of text to show wrapping
  • Third item in the list
Ordered list
  1. First ordered step
  2. Second ordered step
  3. Third ordered step
Inline code

Reference tokens inline like --color-accent or a function such as color-mix() within a sentence.

Code block
.button {
  background: var(--color-accent);
  color: var(--color-accent-contrast);
  padding: var(--space-2) var(--space-4);
}
Blockquote
Design is not just what it looks like and feels like. Design is how it works.
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
→
© 2026joshpindjak@gmail.com
ColophonUsesAbout