Skip to main content
JoshuaBriley.
Style guide

The parts that make up this site.

This page shows the colors, fonts, and pieces, like buttons and forms, that every page on this site is built from.

Colors / 01

Colors.

I use nine colors across the whole site. There are no bright colors and no gradients. Most pages are dark text on a light background, with one blue accent color used sparingly.

Joshua Briley sitting in a sunlit room. These colors come from this photo.

Where the colors come from

The colors come from a real photo.

I picked these colors from a single photo of me at home. The light from the window became the white background. The wood shelf and blanket became the warm tan color. The blue in the blanket became the one accent color used across the site.

--paper
Daylight through the window
--surface-warm
The blanket and wood shelf
--ink
The picture frame and dark shadows
--accent
The blue in the blanket
paper #FAFBFC

--paper

Page background

raised #FFFFFF

--raised

Cards and input boxes

surface-warm #F7F5F0

--surface-warm

Warm background for personal sections

ink #1A1B1E

--ink

Headings, text, and dark sections

ink-muted #565760

--ink-muted

Most body text

ink-faint #9A9AA1

--ink-faint

Decoration only, never for text you read

line #E5E7EB

--line

Thin borders and dividers

line-strong #D4D7DD

--line-strong

A slightly darker border

accent #2E5C8A

--accent

The one accent color, used sparingly

Easy to read

Text stays dark enough to read clearly on every background, light or dark. I follow standard accessibility guidelines so people with low vision can read the site too.

Fonts / 02

The fonts I use.

I use two fonts. Hanken Grotesk is for headings and paragraphs. Geist Mono, a monospace font, is for small labels.

Biggest

The biggest heading

Large

A large heading

Medium

A medium heading

Section

A section heading

Subsection

A subsection heading

Small

A small heading

Paragraph sizes

Extra large: for intro paragraphs.

Large: for secondary text.

Normal: everyday paragraph text.

Small: captions and notes.

Extra small: fine print.

Small labels

Colors / 01

A small label at the top of each section. The number helps you keep track of where you are.

const tokens = await build();

This font is also used to show code, like the line above.

JoshuaBriley. Logo: Style Script font

Basic parts / 03

The basic parts.

These are the small pieces, like buttons and icons, that make up every page. They look and work the same everywhere on the site.

Buttons

Solid buttons are for light backgrounds. On dark backgrounds, I switch to an outlined button instead.

Buttons on dark backgrounds

These versions are only used on dark backgrounds.

Links

Tags

Default With icon Accent tick Solid ink Small

Small tags I use to highlight or label something.

Logo

JoshuaBriley. JoshuaBriley. JoshuaBriley.

My name in a handwritten script. It's real text, so screen readers can read it aloud. The browser tab icon uses the same style.

Icons

Most icons are just decoration. When an icon means something on its own, I add a label so screen readers can announce it.

Groups / 04

Bigger pieces, built from small parts.

These are bigger pieces built from the parts above: a section header, a row of numbers, a code sample, and a list of questions and answers.

Numbers and results

9

colors used across the site

2

fonts used across the site

100%

parts work with a keyboard

6 1

way to build a button

These numbers are just examples.

Code samples

Field.astro ts
// Field.astro: accessibility wired in by construction.
// label[for], input id, aria-describedby (hint + error),
// aria-invalid and aria-required are all derived, never hand-set.
const hintId = hint ? `${id}-hint` : undefined;
const errorId = error ? `${id}-error` : undefined;
const describedBy =
  [hintId, errorId].filter(Boolean).join(' ') || undefined;
// You cannot create a mislabeled input through this API.
A real piece of code from this site.

Common questions

Why only one accent color?
One color stands out more than many. It keeps your eyes on the words instead of the design.
How do you make sure everyone can use the site?
Every button, link, and form field is built to work well with screen readers and keyboards, not just a mouse.
What moves on the page?
Sections fade in gently as you scroll. If your device is set to reduce motion, this turns off.

Forms / 05

Forms everyone can use.

Every field has a clear label. Hints and error messages are connected to the field, so screen readers announce them too.

Field examples

Only used to reply.

A few sentences is plenty.

Multiple choice

How would you rate this page?

Status messages

Thanks. Your message is on its way.

I’ll reply within one business day, usually sooner.

Movement & spacing / 06

Movement on the page.

Animations are small and simple. Nothing spins or loops forever, and the site turns them off if your device is set to reduce motion.

Scroll reveal

Sections fade in gently as you scroll down the page.

Smooth start

Used when something appears, like on hover or a button nudge.

Smooth start and stop

Used for motion that moves back and forth.

Spacing between sections

Pages use consistent spacing between sections. Extra whitespace, not boxes or lines, keeps everything easy to scan.