# Postie — Phase 2 sign-off (SIGNED OFF by the owner, 2026-09-20)

**Brand id:** `brand-001-postie` · **Written:** 2026-09-20 · **Owner's yes:** 2026-09-20T21:45:00Z · **Canvas:** https://claude.ai/artifact/ALc8s7pgpZMD5XzhCiHrh5 · **Colourway canvas:** https://claude.ai/artifact/139axTcdVJanAv4XuiU7Ri
**Direction:** D (chosen 2026-09-20; A and C not chosen, B rejected outright).
**Colour, as of 2026-09-20 (later the same day):** the forest/mint palette recorded under "Locked" below was **rejected by the owner** at review and replaced by **colourway 4 — charcoal + oxblood**, dark default, light alternate (light corrected to *dark chrome over paper* on the second pass). The letterform, shape, layout and named elements below stand; read the colour tokens as history. Current tokens: `BRIEF.md` §4a; pairings: `phase-2/pairings.md`.

> **What this sign-off is.** The owner answered *"does this feel like you?"* with a yes on 2026-09-20. That closes Phase 2: the locked list is the contract P3 builds against, and every P2 artifact row in `ledger.json` moves from `proposed` to `locked`. **It is NOT the P3 green-light.** The green-light ("yes — deliver it") is a separate gate asked at the end of P3, after iterations 1–4 are shown together and before Foundations are formalised; it is recorded as `ledger.greenlight` and nothing here sets it.

---

## Locked

### Direction
D — forest ground, mint hero, cream ink, heavy rounded wordmark, pill forms, high colour load on brand surfaces. The letterform is not up for change.

### The governing rule — `ground-role-split`
Forest green `#14312A` is **brand ground**: marketing pages, app chrome (top bar, primary buttons, agent card), hero moments, auth brand panel, email masthead. The **working surface** — mail list, message body, dense reading, tables — is `paper #F6F8F4` on the light theme and `dark-surface #161B19` on the dark theme. Saturated green is never behind dense text. This is the resolution of the owner's readability concern and every artifact honours it.

### Final tokens (contrast-clean, both themes)

**Brand ground (inherited from D, unchanged)**
| Token | Value | Role |
|---|---|---|
| `forest` | `#14312A` | brand ground · primary button fill · app chrome |
| `forest-deep` | `#0E241E` | support panel on forest · search well · chips on ground |
| `mint` | `#A8D9BA` | hero accent · primary CTA on ground · voice button |
| `ink-on-forest` | `#F1F5EE` | text on forest / forest-deep |
| `body-on-forest` | `#C9D8CD` | body on forest |
| `muted-on-forest` | `#8FB09C` | muted / eyebrow on forest; ghost-button edge |

**Light working surface (new in P2)**
| Token | Value | Role |
|---|---|---|
| `paper` | `#F6F8F4` | working canvas |
| `surface` | `#EDF1EA` | rail · tiles · tonal panels |
| `mint-tint` | `#E6F3EA` | selected row · triage band · quiet callout |
| `rule` | `#DCE4D9` | tonal separator (decorative, not a UI edge) |
| `edge` | `#6F8178` | input borders, dashed add-slot (≥3:1 UI edge) |
| `ink` | `#14251F` | text |
| `body` | `#3E5249` | body |
| `muted` | `#5E7066` | muted / captions / timestamps |
| `forest-accent` | `#2F6F50` | links · unread dot · live state · accent text on paper |

**Dark working surface (new in P2)**
| Token | Value | Role |
|---|---|---|
| `dark-surface` | `#161B19` | working canvas (dark theme) |
| `dark-raised` | `#1E2421` | selected row · panels · bottom bar |
| `ink-dark` | `#ECF1EC` | text |
| `body-dark` | `#C4CDC6` | body |
| `muted-dark` | `#8FA096` | muted |
| `forest-lift` | `#5BAA7A` | accent on dark surfaces only |

**Status (semantic, never the accent)**: `amber #8A5A00` / `red #9E2B25` on paper; `amber #E0A94A` / `red #F08A80` on dark-surface. State is always word + dot, never colour alone.

### Corrections made at token level (before → after)
| Brief token | Before | After | Why |
|---|---|---|---|
| light paper | `#F3F4F0` | `paper #F6F8F4` | cooler, green-cast near-white to sit with D; not pure white (never: clinical) |
| light ink | `#121816` | `ink #14251F` | green-cast to match paper; 14.95:1 |
| light body / muted | `#3C4642` / `#5F6C66` | `#3E5249` / `#5E7066` | re-cast toward forest; 7.84:1 / 4.93:1 |
| `forest-lift #5BAA7A` as accent text on light | 2.63:1 — **fails** | `forest-accent #2F6F50` — 5.60:1 | lift is now dark-surface-only |
| dark ground `#0F1412` | brief starting token | `forest #14312A` (brand) + `dark-surface #161B19` (working) | the P1 pick replaced the placeholder; ground-role-split needs two dark grounds |
| dark surface `#171D1A` | brief starting token | `dark-raised #1E2421` | one tonal step above dark-surface, 5.74:1 for muted |
| mint as a UI edge on paper | 1.48:1 — fails | mint is **fill-only** on light; edges use `edge #6F8178` | mint chips always carry forest ink |

### Legal pairings (all ≥ 4.5:1 unless marked large/edge)
`#F1F5EE`/`#14312A` 12.67 · `#C9D8CD`/`#14312A` 9.44 · `#8FB09C`/`#14312A` 5.90 · `#A8D9BA`/`#14312A` 8.85 · `#14312A`/`#A8D9BA` 8.85 · `#F1F5EE`/`#0E241E` 14.76 · `#8FB09C`/`#0E241E` 6.87 · `#14251F`/`#F6F8F4` 14.95 · `#3E5249`/`#F6F8F4` 7.84 · `#5E7066`/`#F6F8F4` 4.93 · `#5E7066`/`#EDF1EA` 4.61 · `#2F6F50`/`#F6F8F4` 5.60 · `#2F6F50`/`#EDF1EA` 5.23 · `#2F6F50`/`#E6F3EA` 5.23 · `#14251F`/`#E6F3EA` 13.98 · `#14251F`/`#A8D9BA` 10.12 · `#ECF1EC`/`#161B19` 15.24 · `#C4CDC6`/`#161B19` 10.70 · `#8FA096`/`#161B19` 6.34 · `#8FA096`/`#1E2421` 5.74 · `#A8D9BA`/`#161B19` 11.04 · `#5BAA7A`/`#161B19` 6.20 · `#8A5A00`/`#F6F8F4` 5.55 · `#9E2B25`/`#F6F8F4` 6.95 · `#E0A94A`/`#161B19` 8.25 · `#F08A80`/`#161B19` 7.18. Full list: `phase-2/pairings.md`.

### Typography — `nunito-pair`
Display and wordmark: **Nunito 800**, tracked −0.03 to −0.04em (D's letterform, unchanged). UI and body: **Nunito Sans 400 / 600 / 700** — same rounded humanist family, legible at 13px, tabular figures on. Heavy rounded weight is reserved for the wordmark, page titles, big numbers and tile figures; it never sets running text.

### Shape
`pill` for every button, chip and input; `12` for rows/tiles, `16` for panels and cards. Crisp edges, no shadow, no rule — separation is a tonal step.

### `never` list — as it stands
Unchanged from BRIEF.md §13: corporate blue/grotesk-flat · clinical white+thin-grey · brown (watch green→olive) · faceless-giant badge clutter and multi-hue marks · cold grey monochrome · mascots/springs/exclamation marks · speed clichés (bolts, rockets, motion lines).

---

## Proven
| Artifact | Size | Proved |
|---|---|---|
| Landing page (`Main.dc.html`) | 1440×1024 | The forest ground carries a hero at full colour load, and a paper inbox preview inside it shows ground-role-split in one frame. |
| Marketing site (`Site.dc.html`) | 1440×1720 | Paper cards on forest hold long copy; the pricing tier in mint with forest ink is the one loud moment. Prices are `[PRICE]` placeholders. |
| App desktop (`App.dc.html`) | 1440×1024 | The three-pane inbox reads: 52px forest chrome, surface rail, paper list and message. Account pebbles differentiate four accounts within the green ramp with no second hue. |
| Dashboard (`Dashboard.dc.html`) | 1440×1024 | Tables and tiles at packed density on paper; one forest tile as the hero figure; status by word + dot. |
| App mobile (`Mobile.dc.html`) | 390×844 | The dark working surface at 390px: forest header as masthead band, neutral dark list, mint "Hold to speak" pill at 56px. Small-surface pattern = masthead band. |
| Auth (`Auth.dc.html`) | 1440×1024 | The split ground: forest brand panel beside a paper form. Pill inputs at 52px, edge token at 1.5px. Formal set — no motif. |
| Transactional email (`Email.dc.html`) | 600×900 | The forwarded surface on light: forest masthead only, everything else paper. Web-font fallbacks declared (Helvetica/Arial). |

---

## Closed at sign-off (2026-09-20)
- **Owner's yes** — given 2026-09-20T21:45:00Z. Phase 2 is done.
- **Theme default** — `dark` default, `light` alternate. Closed on the colourway canvas 2026-09-20.
- **Light theme** — the first light pass ("weak… everything faded out") was rejected and replaced by *dark chrome over paper* (`BRIEF.md` §4a light correction); the corrected `C4L-*` boards were confirmed as part of this sign-off. Closed.
- **Colourway** — 4, charcoal + oxblood. Closed.

## Open (carried into P3 as build work, not decisions)
1. ~~**Owner's yes**~~ — closed above.
2. ~~**Dark-theme app-desktop / theme default**~~ — closed above. Colourway **4 — charcoal + oxblood** locked on the colourway canvas (`https://claude.ai/artifact/139axTcdVJanAv4XuiU7Ri`); the dark desktop inbox is proven on row 4 and the corrected light inversion on row "4 · light". Final palette: `BRIEF.md` §4a; pairings: `phase-2/pairings.md` (colourway 4 section). The forest/mint tokens above are superseded.
3. **Compose surface** — the desktop shows an inline reply, not a full compose window. P3 builds it from the same tokens.
4. **Signature shape** — still type-only. No pigeon/wing mark rendered; the pebble account initials do the visual work for now. Owner decides whether a mark is wanted at all.
5. **Marketing-site-mobile, marketing-email, template-email** — in the owner's surface list, not built in P2 (seven cap). P3 covers them from the locked tokens.
6. **Email rendering** — the email is a design artboard, not a tested HTML email; real client rendering (Outlook, Gmail) is a P3 check.
7. **Voice/agent iconography** — a single stroke microphone is used; no dedicated icon set was chosen. P3 picks the line-icon set.

---

## Named elements (anti-drift — every one gets a prop in P3)
See `phase-2/named-elements.md`. Short list: `ground-role-split` · `nunito-pair` · `account-pebble` · `triage-band` · `voice-pill` · `chrome-bar` · `unread-dot` · `state-chip` · `masthead-band` · `hero-tile` · `add-slot` · `edge` · `mint-fill-only` · `key-hint`.

## Sizes to test at in P3
1440×1024 (app, dashboard, auth, landing) · 1440×1720 (site) · 390×844 (mobile) · 600 wide (email). Small-surface pattern (masthead band): mobile, email.
