Skip to content

Brand · 2 min read

Visual identity

The Flagon mark, the palette, and the type, with the rules for using them. One vessel, one accent, one typeface family.

The visual system is deliberately small: one mark, one accent colour, one type family. Small systems are easier to keep consistent and harder to get wrong, and restraint reads as confidence. It should feel considered, a little technical, and never precious.

The mark

The mark is a flagon that is actually full. The brew is the mark; the vessel just holds it. It comes in three treatments. Reach for the one that fits the surface, and never redraw the vessel.

Full
Screen · gradient + sheen
The default. Teal brew gradient held in clear glass, with a soft sheen.
Flat
Print · matte, spot-colour
Solid brew, no gradient or gloss. Silkscreen, embroidery, signage.
Mono
Tiny / inline · one ink
A single currentColor in tonal fills. Tints to any context.

It has to hold from a favicon to a hero. It stays legible down to 16px; below that the sheen falls away gracefully and the silhouette still reads as a full flagon.

16px
20px
24px
32px
48px
96px

The mark isn't only a still image. Pouring is part of it: the brew fills in once, then keeps a slow living wave with a few rising bubbles. Reach for the motion where it earns attention, a hero or a loading state, and the still mark everywhere else. All of it is CSS, and it halts under reduced motion.

Held
In motion

Colour

A single accent, teal, on cool neutrals. The neutrals carry a faint cool bias so they read as chosen rather than default. Dark mode is true black, not a dark grey, so the teal has somewhere to glow. Every value is a design token, so swapping the token re-themes the whole system at once.

Brand#14b8a6
Brand bright#2dd4bf
Brew deep#0f766e
Highlight#d6fbf2
Light value, sits on a dark ground.
Ink#000000
Surface (dark)#0b0b0d
Paper#fbfbfc
Light value, sits on a dark ground.
Muted#a1a1aa

The one accessibility rule that bites: the brand teal is only about 3.6:1 on the light background, which fails AA for text. For links and small text on light surfaces, use the deeper #0f766e. The bright teal is for marks, fills, and large display only, never body text on white.

Type

Three roles, kept clean. Hanken Grotesk sets headlines: tight tracking, a touch heavier, the display voice. Geist carries body and UI, the neutral workhorse. JetBrains Mono handles labels, code, and data as its own separate thing. Uppercase captions get wide tracking; headings get tight.

Hanken Grotesk · headlines
Ag
Good software, on tap.
Geist · body & UI
The quick brown fox jumps over the lazy dog. 0123456789
JetBrains Mono · code & labels
Ag
const flagon = "on tap"; // 0123456789
Building in public · flagon.io

Using the mark

Four rules cover almost everything. When in doubt, give the mark room and keep it full.

Give it room
Leave clear space around the mark equal to the height of the lid. Let the vessel breathe.
Don't empty it
Never ship the outline alone. The brew is the mark; a hollow flagon isn’t the brand.
Recolour the whole mark
Use the mono cut to tint the entire mark to an accent in one colour.
Don't mix inks
Don’t pair an off-brand outline with the teal brew, or stretch, rotate, or reproportion the vessel.

For the actual files and formats, see brand assets. For applying all of this to real surfaces, see brand in practice.