Identity sheet
Three concepts, four iterations, one mark
Everything here is the file that ships — this page inlines the SVGs from
logo/ rather than copying them, so it cannot drift. The palette
switcher at the bottom right applies to this page too: the mark has to
survive all six.
Stage one — three concepts
Rendered side by side at 120px, 40px and 24px, because a mark that only works large is a poster, not an identity.
Stage two — four iterations of the winner
B had the best idea and the worst legibility, so the work was making the carousel survive small. Iteration 4 is kept here because the reason it failed is more useful than the fact that it did.
The mark
Ring r = 27 at (32,32), stroke 2.6
Lens true vesica, half-width 10 -> generating radius
R = 2*10/sqrt(3) = 11.547, so width:height = sqrt(3):1
Axis scale a cylinder axis runs 0-180 only, so the scale occupies
the UPPER half alone. Minor ticks every 30 deg
(r 21.5 -> 26), major at 0/90/180 (r 20 -> 26).
Datum the 150 deg tick is heavier and sits in the outer band
only (r 22 -> 26) so it never touches the lens: a real
cylinder axis reading, and the one asymmetry that
gives the mark a direction to be read in.
Stage three — the six variants
Size tests
The icon at 40, 24 and 16px, then the favicon — which is a redraw, not a reduction. At 32px the axis scale is noise and a 2.6-unit ring stroke falls below one device pixel, so the favicon drops the ticks, thickens the ring to 5 and widens the lens.
The shipped variant, and why it is that colour
A theme logo travels as logo: 'data:image/svg+xml;utf8,…' inside
an <img>. It cannot read page CSS, so
currentColor resolves to black and a mark tuned for one palette
disappears on another. #5C7AA5 was solved for rather than picked: it is
the slate blue that maximises the worst-case contrast across all six palette
backgrounds. Every swatch below is a real palette background from
tokens.css, with the shipped file on it.
Those six hex values are the only raw colours on this page, and they are here precisely because the point is to show the mark against literal palette backgrounds rather than against tokens that would move with the switcher.
The wordmark is drawn, not set
Same reason: an <img> pointing at a data URL cannot reach
the page's webfonts, so a <text> element would fall back to
whatever generic sans the browser has. Eleven glyphs are built from explicit
centrelines on one grid — cap height 48, monolinear stroke 7, bowl radii fixed
by their own depth so they land exactly on the glyph box edge.
The ampersand is the mark's own vesica. A lens standing in for and ties the wordmark to the symbol, and a geometric ampersand drawn to this grid would have been the weakest glyph in the set.