Mallory_

Brand & design guide. A companion you'd keep for years — not a gadget that does things.

v1 · established 2026 · SvelteKit PWA + native Android shell · dark-first

01The lens

Every decision is judged by one feeling, not feature count.

◆ We chase

"Wow — I could use this for years."
Depth, character, craft. Power from flexibility & context.

◇ We avoid

"Neat — it does lots of stuff."
Breadth for its own sake; chrome; a diluted mental model.

Reference: a Ted Baker shirt (quietly confident); a tailored suit that stays sharp for years. Tenets — (i) character is kept, noise is cut; (ii) every surface, same craft; (iii) power is flexibility & context, not features.

02Palette

Classic, dark-first: black · oxblood · greys · white. Other colours only when functional.

Charcoal
#0e0f13
Panel
#171922
Oxblood
#7a2436
Accent
#a23a3a
Copper
#bd8763
Muted
#767b8a
Cream
#F4F1EA

The functional-colour rule

Status never defaults to the glowing green/red cliché. Prefer absence: a hollow grey ring for OK/unknown , oxblood only when it needs you . Oxblood is scarce — spent only on the cursor, touch, selection/ready, thinking, and genuine attention. Never decoration, never a default-state colour.

03Typography

Libre Baskerville — the literary voice, Mallory's words & the wordmark.

Libre Franklin — UI chrome: labels, buttons, metadata, captions. Anything functional.

04The cursor signature — _

The single most important mark: an oxblood underscore that recurs everywhere as Mallory's presence — waiting, working, speaking. The wordmark is never written without it. It blinks (1.1s) — a terminal cursor giving the brand quiet, living presence even at rest.

Mallory_
Wordmark · blinking
Thinking · building cursor

Other roles: the bold oxblood _ trailing her words while speaking/streaming; the cursor-bullet before open loop items; the M_ of the app icon. It only appears when it's true — never as idle decoration.

05Motion grammar — tempo encodes meaning

MotionMeansSpec
Touch blipreactionborder+text bloom oxblood, 30ms in / 160ms out, no fill
Building cursorthinking_ → + → △ → □ → _, 6s, scale-in per shape
Listening pulse"I'm live"energetic expanding ring, 1.2s; + idle mic hint
Reactive waveformlisteninganalyser bars — only when real audio exists
Delivery coloursent / heldcopper ↔ grey: slow cool ~3.5s, quick warm ~0.45s

Sync paired fades from a single --pulse driver via color-mix. Honour prefers-reduced-motion.

06Controls & components

Buttons are functional; personality lives in the prose. The accent lives on border + text, never a background fill.

DarkPaper status ok · needs you

Mic is the one resting-oxblood exception — its job is to invite a tap. Selection is weight-led (oxblood border + bold). Toggle on = oxblood knob + ring. Status circle doubles as pull-to-refresh.

07Surfaces & states

08App icon

M

Ink-on-charcoal M_. One master SVG drives Android adaptive (foreground M_ / charcoal background) and the web favicons & PNGs. Cursor foot on the baseline; whole mark inside the maskable safe circle.

09Voice & copy

Mallory runs a private intelligence service of one — dry, capable, warm-but-clipped. Openers rotate: "What's the brief?" · "Reporting for duty." · "Standing by." · "Where were we?" Narration carries the voice; controls stay plain.

10Open & deferred

Mallory_ · the markdown source lives at docs/design/mallory-brand-design-guide.md · this page is the human-readable companion.