Brand wordmark

The name, set as a mark rather than as a label. It is the one string that is the same on all 57 grey pages and all 57 coloured ones, and until 2026-08-12 it was drawn by the app bar, which is an organism and had no business painting it.

Atom55 coloured pages54 grey pages2 sizesno states

Anatomy

One text slot and one drawing inside it, which is the whole component. Everything below is drawn by design/system/components/brand-wordmark.css through the same entry point a product screen loads.

The live specimen stands where the component has ground. The word takes its ink by inheritance and its place from the app bar, so a specimen floating on a blank canvas would be measuring neither. This is the bar on all 57 coloured pages.

Tendd Hi, Emma

Variants and sizes

Two sizes, and the axis under them is where the word stands rather than how loud it should be. The concept locked four rules for the coloured letter and the product carries the first of them today; the rest are listed with the host each is waiting for, because a variant with no host is an invention.

Where it stands

There is no condition on it any more. The last letter is petrol wherever the word appears, at any size, with or without the mark beside it. The concept had three conditions and the product satisfied none of them, so the rule would have been unbuilt and untested until stage 12

Tokens Where it stands
In the lockup .wordmark --type-sub
800 / -0.02em
ink, inherited
.hi --text-action
The app bar on all 57 coloured pages, the landing's own bar among them. The last d is petrol here as it is everywhere
Tendd
The signature .wordmark.large --type-head
800 / -0.02em
ink, inherited
.hi --text-action
Added 2026-08-16, on the founder's "сделаем поинтереснее подвал?". One host: the foot of the public page, where the word is the subject of its block rather than a label on a bar. At 16px it closed the page at the size of the sentence beside it. Only the size changes: weight and tracking stay on the base rule. The tracking is not re-derived either, and it would be easy to - the concept gives -0.02em for a bar and -0.035em for a hero, 24px is neither, and inventing a third between them would be a value with no source
Tendd
Three conditions the concept wrote - Overruled 2026-08-12, by the founder, in the product. The concept made the coloured letter conditional: petrol when the word stands alone, above 20px, and all ink beside the mark, because the mark already carries the petrol. Looked at on a real screen, what is there is a 22px mark and one 16px glyph 46px to its right, and the pair reads as one lockup rather than as two claims. The conditions are gone and the letter is petrol everywhere. The sentence they came from is left standing on the concept page: that page records how the mark was found, and it is not a live spec
On a photograph or a partner page - Ink or white, and never petrol. The one condition that survives, because it is about a ground this system does not own. No host in the product, and the rule is written down so the first person to need it does not have to decide it

-0.02em here and -0.035em on the concept page, and the difference is not a compromise. Tracking is an optical correction, and the tighter a setting is the more of it a large size can carry. The concept sets the hero at -0.035em and its own bar plate at -0.02em; at 16px the hero's value starts closing the counters. Both numbers are read from that page and neither is chosen here.

The trailing pull is measured and it is kept. Letter-spacing lands after EVERY character in a span, the last one included, so the pair's -0.09em also pulls the word's right edge in by 1.44px at 16px. It costs nothing: the lockup is followed by margin-right: auto on all 32 screens, so nothing sits against that edge. The second d does now carry a span of its own, for the colour, so a positive correction could be hung on it. It is not: the pull is invisible against an auto margin, and a correction that fixes nothing a person can see is a value the next reader has to explain.

When to use it

Once per screen, in the app bar, inside the lockup, and once more at the foot of the public page, where it wears .large and stands alone. If the name appears anywhere else, in a sentence, a heading or a legal line, that is type and it belongs to whatever component owns the text around it. A wordmark inside a paragraph is a logo somebody pasted into prose.

It is a mark, and the test is whether it is being read or recognised. A person reads "Your subscriptions" and recognises "Tendd". That is the whole reason the tracking reversed direction: a word set for reading needs air between the letters, and a word set for recognition needs the opposite, because what it has to be is one shape.

Its copy comes from nowhere and is not in voice/docs/microcopy.md: the product's name is not a string that anybody writes. It is the only text in this system with no owner in the copy inventory, which is correct and worth saying once.

The rule, and the anti-rule

The pair closes
TenddFree

The two d's track further in than the rest of the word, until the bowls almost meet. It is the same move the mark makes: the identity is a letter that has been crowded on purpose, and the word repeats it. Two d's at the word's own spacing look like a typing mistake somebody kept.

The pair left open
TenddFree

The same class with the span left out, drawn here for real rather than mocked. Everything is right except the drawing: 800, -0.02em, and the coloured letter is still there because .hi does not depend on .dd. What is missing is 1.44px, and it is the difference between a name set boldly and a name that has been designed.

The name as a mark
Tendd

In the bar, beside the mark, once. This is the only place the component belongs, and the count is one per screen on all 28.

The name as words

Tendd

is keeping an eye on 14 subscriptions

When the product's name is part of something a person reads, it takes the type of whatever it is inside, here a label. Setting it as the wordmark would put a second identity inside the content of a screen, and the whole point of the bar is that the identity lives in one place and stays out of the way of the numbers.

Limits

U14, context. The brand moves once, on one surface, and the modifier is the fence. The mark’s window opens to the whole letter and closes into crop A over --dur-signature on --ease-settle, and the wordmark’s last letter takes petrol as it lands. It runs on the public page’s bar only, once per load. the 54 app pages that carry a lockup do not carry .signature and must not: a mark that moves every time you open the product is not a signature, it is a fidget. The hover is the other half of U14 and it is not fenced: on every lockup in the product, hovering it PLAYS the crop - out to --crop-whole and back into crop A over --dur-signature - and holds no pose at either end, because the only good resting crop this drawing has is A. The mark’s own animation fills backwards and never both, or it outranks that hover and kills it, and the two animations sit in two slots of the animation list through --sig-name, because sharing one slot replayed the arrival every time a pointer left the public page’s lockup; the word’s half fills the same way for a narrower reason - its forwards half held a colour the base rule already paints, so it shadowed the property for nothing. Full table with sources: Usage rules; the language it sits beside is on Motion.

States

None, and it is a finding. It is a span on all 57 coloured pages and all 57 grey ones, never an anchor, so there is no hover to declare and no ring to draw. Drawing four cells here would document something the product cannot do.

If it becomes the way home at stage 12, the anchor takes the ring and this atom keeps its type. That split is the same one the merchant tile already lives with: the row is the link, the mark inside it is not.

The technical half

ReadsWhich tokenGrowing from
the size--type-sub16px, primitive, straight. The step the bar always set, and the one value in this component that did not move
the word's inknoneinherited. --text-primary inside the bar, 17.4:1 light and 15.0:1 dark. Four of the five letters carry no colour of their own, so nothing here can be broken by editing this file
the last letter--text-action--petrol, and --petrol-dark in the dark theme. 6.2:1 light and 6.8:1 dark on the bar, measured against the 4.5:1 ink threshold with the large-text allowance unused. WCAG 1.4.3 would exempt a logotype outright; this system does not take the exemption, because this glyph is half the name
the weight and both trackingsliterals800, -0.02em, -0.09em. Em tracking follows the type step it sits on, so it has nothing to override and no theme can want it different
statesnonenot interactive, see above

Was to became, and it is the fifth named source of a visual change in this stage. The setting was 700 at +0.02em and is now 800 at -0.02em with the pair at -0.09em. app-bar.css said out loud why the old value was right, and DESIGN.md said the same: at 16px in a bar the letters need air, and a wordmark set solid reads as a word rather than as a mark. Both were describing a product with no mark in it, where the word was the identity and had to hold the bar alone. It is not a drift and it is not a correction of a mistake: the premise changed, the sentence in DESIGN.md was rewritten the same day, and the row is in docs/tokens-audit.md.

Measured, both in the same document by the same engine. The word was 50.703px wide and is now 45.938px, narrower by 4.765px. The slot it sits in went the other way, from 50.703px to 75.938px, because the mark adds 22px and the gap 8: 25.235px wider. That figure is the whole of what the brand did to the layout of 28 screens, and it lands entirely in the auto margins that were already absorbing free space in that bar.

Lives in design/system/components/brand-wordmark.css. Stands on all 57 coloured pages, 59 places because the landing carries it twice, and on 56 grey ones, which is every page in wireframes/ except the landing and the stage hub. The grey carries the word alone at the old setting, because wireframes/ is frozen and Voice was the last stage allowed to edit text there.

<span class="wordmark">Ten<span class="dd">dd</span></span>