Mirror

The name, the mark, how it moves, and the two things the identity may not introduce.


Concept name

Mirror

Shopping that knows you.

A personal shopping assistant that knows what you own, what fits, and what you have coming up.

Mirror is the system. Your Mirror is what it knows about you. Nothing else in the product is called a mirror.

That grammar lets the app be named after the thing doing the work without breaking the standing decision that there is exactly one memory concept. In code it stays profile, as it always has.


Logo

A bar, a plane, and the bar returned

Two primitives — rectangle and line — and one operation: reflect. Solid above is the thing; outline below is the thing as the Mirror has it. Exact, and still not the same as being it.

16px
24px
34px
64px
Mirror

Lockup — the entrance

Mirror

Wordmark

Mirror

Wordmark, label size — every masthead

Two constructions were rejected and both failed identically: a disc cut on its axis reads as a closed eye, and disc–rule–disc reads as an existing glyph, because circle-stem-circle is a crowded corner of symbol space. Rectangles have no such neighbours and hold their weight at 16px. The outline bar is inset by half a stroke so both bars share an outer edge — without it the reflection comes out larger than the thing it reflects, which is exactly the error the mark is about.


Animation

It trades. It does not spin.

A rotating mark is a spinner whatever is drawn on it, and this product replaced its spinners with named machine states on purpose. The two bars exchange solid and outline instead — the mark performing its own definition.

At rest

Allowed in exactly two places: the send button during a live model call, and the moment the app resets and starts over. Both are genuinely indeterminate waits. Every other wait in the product is a sequence of real states with names, and covering one of those with a brand animation would throw away the thing that makes them worth having. Under reduced motion the cycle stops dead.


Not the mark: MirrorPresence is the Mirror’s live state, where structure density is maturity. Two objects doing two jobs; neither stands in for the other.

unknown
learning
established
mature

Colour

No palette of its own

The mark takes currentColor, so the identity cannot introduce a colour. Photography supplies the colour; the interface stays quiet. One accent, reserved for four jobs and no others — active state, the Mirror signal, risk, and status.


Brand fonts

One family, extreme scale contrast

Instrument Sans, self-hosted, width axis pinned at 100. The wordmark is set in the interface’s own display face, so the identity cannot introduce a typeface either. The editorial feel comes from scale and tracking rather than a second family competing with the photography — and the tracking tightens as the type grows.