# Bobby Talk Brand Book

**Brand version 1.0.1 — active.** Successor to brand 1.0.0 (superseded, preserved unchanged and checksum-sealed). Brand 1.0.1 is a wording-only correction: the canonical relying-party affordance label is `Continue with Bobby ID`. Identity, geometry, palettes, typography, themes, spacing, imagery style and tagline are unchanged from 1.0.0.

**Brand version 1.0.0 — superseded by 1.0.1.** Adopted beeldmerk: **Talk Pulse**. Adopted theme systems: **Night** and **Blush**.
Product Owner: Alex (alex@siteways.io). Canonical domain: `bobbytalk.com`.

This document is the governed authority for the Bobby Talk identity. Every asset in the registry derives from the canonical Talk Pulse vector in `src/brand/geometry.ts`. Changes to canonical geometry or to a core palette require new written Product Owner approval and a new brand version.

## 1. Brand introduction

Bobby Talk is an invitation-only realtime messenger for people who hold a Bobby ID. There is no public directory, no discovery feed and no standalone signup. A conversation cannot begin before an invitation has been accepted, and a block overrides every path to you.

The brand has to carry two things at once: the calm seriousness of a private communication system, and the warmth of talking to people you actually care about. Talk Pulse and the two theme systems exist to hold that balance.

## 2. Brand story

Most messengers were designed to grow. They optimise for reach: find everyone, be findable by everyone, and let the noise arrive by default. Bobby Talk starts from the opposite premise. You appear only where you chose to appear.

Talk Pulse expresses that premise as geometry. Two voice crescents face each other. Nothing enters from outside the pair. Between them, the negative space forms a heart — warmth that is earned by the relationship, not advertised by the product. At the centre, three pulse bars stand for the three ways people speak here: written messages, voice notes and live calls.

## 3. Bobby Talk for dummies

- You need a Bobby ID. That is the only door. The button always reads **Continue with Bobby ID**.
- Nobody can message you until you invite them and they accept.
- You label your own contacts — family, business, friend. Those labels are private to you and grant no authority to anyone.
- You can send text, voice notes, and start voice or video calls.
- You choose how the app looks: **Night**, **Blush**, or **Follow system**.
- Follow system is a preference, not a third look. It picks Night or Blush for you.

## 4. Mission and brand promise

**Mission.** Give people a private place to talk with the people they choose, on infrastructure whose readiness is proven before a single real message is accepted.

**Brand promise.** You are reachable only by invitation. What you call people is yours. Nothing is claimed as secure until it has passed the readiness gate.

## 5. Talk Pulse — meaning and construction

| Element | Meaning |
|---|---|
| Left crescent | The person listening |
| Right crescent | The person speaking |
| Negative space between crescents | Heart — warmth without dating-app signalling |
| Tall centre bar | Written message |
| Two flanking bars | Voice note and live call |
| Closed pair, no outer opening | Invitation-only by construction |

Construction rules:

- Drawn on a 32x32 grid so that whole-pixel rendering survives down to 16px.
- The right crescent is the exact mirror of the left about `x = 16`.
- Round line caps only. Never square, never mitre.
- Single colour. The mark inherits `currentColor` so both themes work without a second file.
- No letter B, no letter T, no BT monogram, no product name inside the mark.

## 6. Canonical SVG geometry

Source of truth: `src/brand/geometry.ts`.

```
viewBox            0 0 32 32
crescent left      M13.2 4.6C7.4 6.6 4 10.9 4 16s3.4 9.4 9.2 11.4
crescent right     M18.8 4.6C24.6 6.6 28 10.9 28 16s-3.4 9.4-9.2 11.4
stroke (full)      2.8
stroke (simplified) 3.6
bars (full)        x15 y12.5 w2 h7 r1 | x10.6 y14.4 w2 h3.2 r1 | x19.4 y14.4 w2 h3.2 r1
bars (simplified)  x14.4 y12 w3.2 h8 r1.6
```

## 7. Full and simplified marks

| Variant | Use | Files |
|---|---|---|
| Full | 28px and above | `svg/talk-pulse-full.svg` |
| Simplified | 24px and below, and all favicons | `svg/talk-pulse-simplified.svg` |

At 24px and below the two flanking bars merge optically; the simplified variant replaces all three bars with one weighted bar and thickens the crescents to 3.6. Rendering the full mark below 28px is a misuse.

## 8. Clear space and minimum sizes

- Clear space: 0.25x the mark height on all four sides. Nothing may enter it — not text, not a badge, not a container edge.
- Minimum size, full mark: 28px.
- Minimum size, simplified mark: 16px.
- Minimum size, horizontal lockup: 120px wide.
- Minimum size, stacked lockup: 88px wide.

## 9. Monochrome, transparent and reversed versions

| Version | File | Rule |
|---|---|---|
| Mono black | `svg/talk-pulse-mono-black.svg` | Print, fax, engraving, single-colour signage |
| Mono white | `svg/talk-pulse-mono-white.svg` | Over photography and dark print |
| Transparent Night | `svg/talk-pulse-transparent-night.svg` | Night surfaces, no container |
| Transparent Blush | `svg/talk-pulse-transparent-blush.svg` | Blush surfaces, no container |
| Reversed Night | `svg/talk-pulse-reversed-night.svg` | White mark in a Night primary container |
| Reversed Blush | `svg/talk-pulse-reversed-blush.svg` | White mark in a Blush primary container |

## 10. Wordmark

"Bobby Talk" in Inter SemiBold, -1.6 tracking at 58px, sentence case with both words capitalised. Never all caps, never "BobbyTalk", never "Bobby talk". Files: `svg/wordmark-night.svg`, `svg/wordmark-blush.svg`.

## 11. Lockups

- **Horizontal**: mark left, wordmark right, gap equal to 0.5x mark height, optical centre alignment. `svg/lockup-horizontal-{night,blush}.svg`
- **Stacked**: mark above, wordmark centred below, gap equal to 0.4x mark height. `svg/lockup-stacked-{night,blush}.svg`

The mark may always be used alone. The wordmark may be used alone in running text and email signatures. The lockups must not be rebuilt by hand.

## 12. Night theme

Near-black blue-shifted structure with a communication-blue accent. Night is the default and the canonical dark system. Its core: background `#0a0d13`, surface `#161b25`, primary `#005bd2`, foreground `#f9fafc`.

## 13. Blush theme

Pale lavender structure with violet primary and pink signal accents. Feminine-leaning, sweet, still serious. Its core: background `#f8f6fc`, surface `#fefdff`, primary `#633ae6`, foreground `#14121c`.

Night and Blush are complete independent semantic systems. Neither is derived from the other by inversion, opacity or filter.

## 14. Complete semantic token tables

Both themes define every token below. Night in `:root`, Blush in `html.blush`, both in `src/styles.css`.

| Group | Tokens |
|---|---|
| Structure | `bg`, `surface`, `sunken`, `nav`, `chatlist`, `chat-active`, `hover`, `selected`, `composer`, `input`, `border`, `divider` |
| Bubbles | `bubble-in`, `bubble-in-fg`, `bubble-out`, `bubble-out-fg`, `bubble-delegated`, `bubble-delegated-fg`, `system`, `system-fg` |
| Text | `text`, `text-secondary`, `text-muted`, `link` |
| Actions | `primary`, `primary-fg`, `secondary`, `secondary-fg`, `ring` |
| Realtime | `unread`, `unread-fg`, `presence`, `typing`, `recording`, `waveform`, `waveform-track`, `callctl`, `call-incoming`, `call-missed` |
| Status | `success`, `warning`, `danger`, `blocked`, `encryption` |
| Relationships | `relationship`, `family`, `business`, `friend` |

Components must reference the Tailwind semantic utility (`bg-surface`, `text-family`, `bg-bubble-out`) and must never hardcode a colour.

## 15. Contrast matrices

Measured from the shipped tokens by `scripts/brand/contrast.py` (oklch to sRGB, WCAG 2.1 relative luminance).

<!-- CONTRAST-MATRIX -->

## 16. Typography

| Role | Family | Treatment |
|---|---|---|
| Display / headings | Inter | 600, tracking -0.02em, balanced line breaks |
| Body | Inter | 400/500, 1.55 line height |
| Technical labels | Space Mono | 400, 0.18em tracking, uppercase, 11px |
| Numerals in call timers | Space Mono | Tabular |

No serif faces. No third family.

## 17. Iconography

Lucide, 1.75px optical stroke at 20px, round caps to match Talk Pulse. Icons are monochrome and take `currentColor`. Talk Pulse itself is never used as a UI icon inside the product; it identifies the product, not a function.

## 18. Chat bubbles

| Bubble | Tokens | Shape |
|---|---|---|
| Incoming | `bubble-in` / `bubble-in-fg` | 16px radius, 4px on the tail corner |
| Outgoing | `bubble-out` / `bubble-out-fg` | 16px radius, 4px on the tail corner |
| Delegated | `bubble-delegated` / `bubble-delegated-fg` | 16px radius plus a delegation label row |
| System | `system` / `system-fg` | Full radius, centred, no tail |

## 19. Reactions and replies

- Reactions sit half-overlapping the bubble's bottom edge on `surface` with a `border` hairline; the actor's own reaction uses `selected`.
- Replies render a quoted strip inside the bubble with a 2px `primary` left rule and the quoted author in `text-secondary`.
- Neither treatment may recolour the bubble itself.

## 20. Voice-note waveform

Bars of 2px width, 2px gap, `waveform-track` for unplayed and `waveform` for played, centre-anchored, minimum 12% height for silence. Duration in Space Mono. Recording state uses `recording` with a pulsing dot honouring `prefers-reduced-motion`.

## 21. Call controls and call states

| State | Token | Presentation |
|---|---|---|
| Idle control | `callctl` | Circular 44px control, `text` glyph |
| Incoming | `call-incoming` | Ringing row, accept control filled |
| Active | `presence` | Timer in Space Mono, mute and camera controls |
| Missed | `call-missed` | Log row, no filled control |
| Ended | `text-muted` | Duration only |

## 22. Relationship labels

Private, owner-set, non-authoritative. Rendered as a hairline chip on `sunken`, coloured by category token: `family`, `business`, `friend`, or neutral `relationship`. A label never grants message, call or delegation authority, and is never shown to the labelled person.

## 23. Family, business and friend priority treatments

| Category | Token | Priority treatment |
|---|---|---|
| Family | `family` | Chat list pin slot, notification always allowed |
| Business | `business` | Quiet hours respected, threads grouped |
| Friend | `friend` | Standard priority |

Priority affects ordering and notification policy only. It never changes encryption, delegation or access.

## 24. Delegated-message presentation

A delegated message always states the acting party in a label row above the body: "Sent by <delegate> for <owner>". The bubble uses the delegated tokens so it can never be mistaken for the owner's own voice. Delegation can never be inferred; it is always written.

## 25. Emoji system and Bobby Talk brand emoji

Platform-native emoji for user content. The product ships one brand emoji: the simplified Talk Pulse mark, used only for Bobby Talk system moments (invitation accepted, readiness gate passed). It is never used decoratively and never in marketing copy as a bullet.

## 26. Tone of voice

Plain, exact, unhurried. Bobby Talk explains what is true and what is not yet built. It never flatters, never hypes and never implies a security property it cannot demonstrate.

## 27. Approved and prohibited language

**Approved:** "Continue with Bobby ID", "Bobby ID", "invitation-only", "relationship label", "readiness gate", "voice note", "delegated message".

**Prohibited:** "verified" as a badge on a Bobby ID, "end-to-end encrypted" before the readiness gate passes, "military-grade", "secure by default", "sign up", "create account", "log in with email", "BobbyTalk", "BT", "Bobby Chat".

## 28. Correct usage and misuse

**Correct:** single-colour mark; full mark at 28px and above; simplified mark at 24px and below; canonical clear space; lockups from file.

**Misuse:** recolouring the mark with a gradient; adding a drop shadow; rotating or skewing; outlining; placing the mark inside a chat-bubble container; adding a letter, monogram or handset; mixing Talk Pulse with Heart Call or Close Connection; rebuilding geometry by hand; mixing Night and Blush tokens in one view.

## 29. Favicons

`icons/favicon.svg` (simplified, primary container) plus PNG rasters at 16, 20, 24, 32, 48, 64, 96 and a multi-resolution `icons/favicon.ico` (16/32/48).

## 30. PWA and maskable icons

`icons/pwa-192.png`, `icons/pwa-512.png` (rounded container) and `icons/pwa-maskable-512.png` (full-bleed container with 4-unit safe-area padding on the 32 grid, i.e. 12.5% inset).

## 31. iOS and Android application icons

- iOS: `icons/ios-app-icon-1024.png`, square, full-bleed, no built-in rounding, no transparency.
- Android legacy: `icons/android-app-icon-512.png`.
- Android adaptive foreground: `icons/android-adaptive-foreground-432.png`, background layer is Night primary.
- Apple touch: `icons/apple-touch-icon-180.png`.

## 32. Desktop application icons

`icons/desktop-app-icon-256.png`, `-512`, `-1024` for Windows, macOS and Linux packaging.

## 33. Social avatars and covers

Avatars: `social/avatar-400.png`, `social/avatar-1000.png`, `social/avatar-blush-1000.png`. Covers: `social/cover-1500x500-night.png`, `-blush.png`. Avatars always use the container version; the transparent mark must not be uploaded as an avatar.

## 34. Open Graph images

`social/og-1200x630-night.png` and `social/og-1200x630-blush.png`. Mark, product name and one sentence only. No screenshots, no feature lists.

## 35. Email identity

`social/email-header-1200x300.png` and `social/email-signature-600x160.png`. Sender name "Bobby Talk". Signature wordmark plus `bobbytalk.com`. No B-based mark anywhere in email assets.

## 36. Notification assets

`icons/notification-mono-96.png` — simplified mark, white, transparent background, for Android status-bar tinting. Notification copy never contains message content in the preview by default.

## 37. Business-card concepts

`applied/business-card-1050x600-night.png` and `-blush.png` at 3.5x2in, 300dpi. Front: mark and wordmark. Back: name, role, `bobbytalk.com`, contact address.

## 38. Presentations

`applied/presentation-cover-1920x1080.png`. Cover uses Night. Body slides use one theme throughout, Inter only, Space Mono for data labels.

## 39. Stickers

`applied/sticker-round-512.png` — die-cut round, container version, 4mm bleed at print.

## 40. Window stickers

`applied/window-sticker-1024.png` — single-colour cut vinyl, simplified silhouette permitted only at the mandated minimum size.

## 41. Merchandise

`applied/merchandise-print-2048.png` — single-colour mark for embroidery and screen print. Minimum embroidered size 25mm; below that the simplified mark is mandatory.

## 42. Signs

`applied/sign-2000x1000.png` — mark, wordmark and domain, Night palette, clear space doubled to 0.5x mark height at architectural scale.

## 43. Vehicle branding

`applied/vehicle-panel-2400x900.png` — horizontal lockup with domain, minimum lockup width 400mm on a panel, mark never placed across a body seam or door handle.

## 44. Print-safe outlined artwork

Send outlined artwork — never the web lockups — to any printer, sign maker,
vehicle wrapper, garment supplier or agency.

- Horizontal lockup: `/brand/outlined/lockup-horizontal-outlined-{variant}.svg`
- Stacked lockup: `/brand/outlined/lockup-stacked-outlined-{variant}.svg`
- Wordmark only: `/brand/outlined/wordmark-outlined-{variant}.svg`
- Variants: `night`, `blush`, `mono-black`, `mono-white`, `reversed-night`,
  `reversed-blush`
- PDF companions for the four most-requested variants sit beside the SVGs.

Every glyph is converted to a vector path at generation time from the vendored
`scripts/brand/fonts/Inter-SemiBold.ttf`. The delivered files contain no
`<text>`, no `font-family` and no `@font-face`, so they render identically
offline and on systems where Inter is absent. The typography is unchanged —
these are the approved letterforms, outlined.

Text-based lockups (`/brand/svg/lockup-*.svg`, `/brand/svg/wordmark-*.svg`) are
retained for web and accessibility use only. Do not send them to a vendor.

## 45. Documents and packages

- Canonical adoption record (single authority):
  `docs/governance/brand/BOBBYTALK-BRAND-1.0.0-PRODUCT-OWNER-ADOPTION.md`,
  copied verbatim into the package as
  `docs/BOBBYTALK-BRAND-1.0.0-PRODUCT-OWNER-ADOPTION.md`
- Markdown brand book: `docs/BOBBYTALK-BRAND-BOOK-1.0.0.md`
- Rendered PDF brand book: `docs/BOBBYTALK-BRAND-BOOK-1.0.0.pdf`
- Derived adoption exports: `docs/adoption-record-1.0.0.json` and `.md`
- ZIP packages: vectors, outlined print, icons, social, applied, docs, complete
- Machine-readable registry: `registry.json`
- Checksum manifest: `SHA256SUMS.txt`

## 46. Version and lifecycle history

| Version | State | Note |
|---|---|---|
| 0.1.0-rejected | rejected | B-based beeldmerk and single dark theme. Removed from every surface, icon and manifest. |
| 0.9.0-candidates | historical | Heart Call, Talk Pulse and Close Connection presented with Night and Blush. |
| 1.0.0 | active | Talk Pulse adopted. Night and Blush adopted. Governed registry established. |

Heart Call and Close Connection remain approved historical candidates, recorded at `/brand/candidates`. They are not alternate active identities and must not be mixed with Talk Pulse.
