Design Language

Brand

The mark, the wordmark, and how Phloom talks.

The Tight Rosette

Five rounded petals turning clockwise around a central squircle. It is a bloom and a device screen at the same time, which is the whole idea: the centre is a phone home button. That reading is what makes the mark Phloom's rather than any wellness brand's, and it is why the squircle's squareness is an invariant rather than a style choice.

The mark carries one flat colour and inherits currentColor. No gradients, no per-petal colours, no outlines, no shadows, no bevels. The creases are cut out of the petals by a mask rather than drawn on top, which is why they stay perfectly registered at every size and why a growing petal appears to draw its own crease.

the mark, at the sizes it ships at
16
20
24
32
48
64
96
144

The creases close up below roughly 24px, which is why the browser tab uses a separate optical variant with stronger tapers rather than this master shrunk down.

on light

Brand pink on cream. The negative-space ring between the clearance and the home button shows the page through it, so it is paler here.

reversed

On a dark plate the mark takes the light colour, not a tinted one. One flat colour, always.

the invariants
  • Five petalsNot four, not six. The count is the identity.
  • ClockwiseThe rotation order is 0, 72, 144, 216, 288 degrees.
  • One central squircleIt reads as a phone home button. Its squareness is meaning, not styling: round it toward a circle and the mark becomes a generic flower.
  • Five continuous tapered creasesOne closed ribbon each, never a stroke.
  • No stemThe mark is the bloom alone.
  • No inner whorl, seed, dot, or glyphNothing in the middle but the home button.
  • UprightOne canonical orientation.

The wordmark is live text

"Phloom" is always set in Instrument Serif as real text, never as an outlined graphic. That is a rule, and it buys three things: the letters can animate individually, a screen reader announces the brand from the actual word, and the wordmark stays crisp at any size without a second asset.

It also means the symbol beside it is always aria-hidden. Two elements naming the same brand would have a screen reader say "Phloom Phloom".

Instrument Serif has a left side bearing of 0.019em, so a left-aligned heading's ink starts that far inside its layout box. The hero pulls itself back by exactly that much so the ink, not the box, sits on the column edge. A centred lockup needs the opposite treatment, because there the "P" is pulled in by its bearing while the "m" overhangs: measured at 72px, the ink centre sits 1.97px right of the box centre, so the word shifts 0.027emleft to put the pair's ink on the axis.

the wordmark at catalog scale, with its per-letter bloom

This is the same component the marketing hero and the login card use, at its largest variant. Reload the page to see the entrance again.

The mark leads, the wordmark names

In every lockup the symbol comes first and the word follows: stacked on the auth card, side by side everywhere else. The pair is centred by ink, not by layout box, because both boxes carry their ink low.

The correction is one number for every lockup, and it was measured rather than eyeballed. The rosette's ink centre sits 3.2% of its box below the box centre, and Instrument Serif's sits about 3% of its font size above its line-box centre, so a naively centred mark reads low by roughly 6% of its own height. Measured before the fix: 3.01px at 52px in the sidebar, 1.67px at 28px in the marketing nav, 6.24px at 100px in the colophon. That is 5.8%, 6.0%, 6.2% of the mark, so a single translate: 0 -6% serves all three and any future lockup, with no per-surface magic number.

It uses the translate property rather than transform on purpose, so it composes with hover scales and with keyframes that own transform instead of silently cancelling them.

side by side · nav, sidebar, footer
Phloom

The .phloom-lockup-mark class carries the -6% ink correction.

stacked · auth

The real PhloomWordmark with mark enabled, so the mark's unfurl and the word's bloom are choreographed as one arrival.

It breathes, it does not spin

The brand loading indicator blooms. Continuous rotation is forbidden outright by the logo rules, and it would be the wrong choice anyway: a five-fold radially symmetric form spinning at spinner speed reads as a smear.

So each cycle presses the home button and unfurls the petals out of it, clockwise, then closes them again. It is a picture of what the mark is.

Where it belongs:page-scale and panel-scale waits. Not the inline spinners inside buttons and table cells. A breath does not read as progress at 16px, and the creases close up below about 24px, so a spinning icon is the right signal for "this button is working" and the brand moment belongs to the full-panel wait.

sm

Panel-scale wait.

md

The default.

lg, with its label
Connecting to the device

PhloomLoader owns a role=status live region. PhloomLoaderMark does not, for call sites that already have one.

Voice

The audience is VAs and agency operators doing a job, not admiring an interface. So copy is plain, specific, and short. Page titles are Title Case; everything else is sentence case. A label says what the thing is; a description says what it does or what will happen.

The product is Phloom in every user-facing string. The wire protocol and backend are still GADS, and that name never surfaces in the interface.

no em dashes in user-facing copy
Device is offline — check the provider host.
Device is offline. Check the provider host.
Device is offline: the provider host is not reporting.

A hard rule, not a preference. Two short sentences almost always read better, and a comma, colon, or pair of parentheses covers the rest. En dashes and double hyphens are not substitutes. The one exception is the standalone empty-value placeholder.

say what happens, not that something happened
An error occurred.
That team name is already taken. Try another.
Loading...
Connecting to the device

Every string a person reads while something is going wrong should tell them what to do next.

no accent hairline under a title

Provider hosts

Not this.

Provider hosts

This.

A short brand rule under a heading is not part of this language. FormDialogShell carries an opt-out for exactly this reason, and no page in the catalog draws one.

Misuse

These are the mistakes the rules exist to prevent, drawn with the real component so the difference is visible rather than described. Every tile is deliberately wrong.

Two bans cannot be shown here at all, and their unshowability is the point: the mark takes currentColor, so it is structurally incapable of carrying a gradient or a per-petal colour. Producing either would mean building a second copy of the artwork, which is itself the first thing the rules forbid.

Do not stretch

The mark is 1:1 at every size. Size it with one dimension or a size-* class, never two.

Do not rotate

One canonical upright orientation. The petals turn clockwise; the mark does not.

Do not shadow

No drop shadows, bevels, or outlines. The halo behind the loader is a separate background element, not a shadow on the artwork.

Do not shrink the master

At 14px the creases have closed and the home button has swallowed the centre. Below about 24px use the favicon variant, which is drawn with stronger tapers for exactly this reason.

Do not sit it on its own colour

Brand pink on brand pink. The mark needs contrast against its field to read as a shape at all.

Do not let it get crowded
PhloomDevice farm

Clear space is part of the asset. Keep at least the width of one petal free on every side.