diff --git a/.planning/intel/brand-decisions-v1.md b/.planning/intel/brand-decisions-v1.md
new file mode 100644
index 0000000..66230b8
--- /dev/null
+++ b/.planning/intel/brand-decisions-v1.md
@@ -0,0 +1,50 @@
+# Mokosh Brand Decisions v1 (2026-05-17)
+
+Snapshot of the 9 brand/design decisions resolved against the designer team's
+handoff (delivered to `.planning/intel/design-incoming/`). User reviewed the
+Decision Brief in browser; accepted designer's recommendations on D-01..06,
+D-08, D-09; overrode D-07.
+
+## Resolutions
+
+| # | Decision | Owner | Designer recommendation | User pick | Note |
+|---|---|---|---|---|---|
+| D-01 | Mark concept | Design | A · Loom (2×2 weave intersection) | **A** (accepted) | Unlocks PNG icon rasterization from `mokosh-mark.svg` |
+| D-02 | Welcome layout | Design | A · Hero + Loom dial (text left, dial right) | **A** (accepted) | Unlocks Plan 01-10 (`src/welcome/` build) |
+| D-03 | Voice register | Brand | A · Sober (short commands, periods, no extra) | **A** (accepted) | Carries to all i18n strings |
+| D-04 | Palette | Design | A · Loom (warm linen + natural dyes: madder/moss/amber/brick) | **A** (accepted) | `tokens.css` palette is canonical |
+| D-05 | Type pairing | Design | A · Newsreader (serif display) + IBM Plex Sans (UI body, Cyrillic) + IBM Plex Mono (diagnostic) | **A** (accepted) | All three OFL; unlocks WOFF2 self-hosting (replaces Google Fonts `@import` in `tokens.css:12`) |
+| D-06 | Icon strategy | Design | A · Neutral mark + dynamic badge (`chrome.action.setBadgeBackgroundColor`) | **A** (accepted) | Matches engineering's current arch; NO A-06 per-state PNG set |
+| **D-07** | **Display name (`manifest.json:name`)** | Brand | A · `Mokosh` | **B · `Mokosh — Session Capture`** | **OVERRIDE** — operator-facing name surfaces capture purpose |
+| D-08 | Tagline (RU+EN parallel) | Brand | A · `«Тридцать секунд назад, всегда под рукой.»` / `"Thirty seconds ago, always at hand."` | **A** (accepted) | `manifest.json:description` + welcome hero copy |
+| D-09 | Smoke shipping | Eng + Both | A · Dev-only (behind VITE_DEV flag) | **A** (accepted) | Current production bundle accidentally ships smoke page — Plan 01-12 task to gate it |
+
+## 8 i18n copy strings (deferred per-string)
+
+Designer flagged 8 operator strings in Brief §02 (popup CTA, badge tooltips,
+notification titles + messages, welcome copy, etc.) that need final wording.
+These **INHERIT the D-03 Sober register default** unless user overrides on a
+per-string basis. Plan 01-12 (Design Integration) will surface each for ack
+as it lands.
+
+## Implementation handoff (what Plan 01-12 must do)
+
+- **D-01 + D-06**: Rasterize `mokosh-mark.svg` to `icons/icon{16,48,128}.png` (PNG required by Chrome notification API; SVG ≠ acceptable). Preserve neutral mark across all states; no per-state variants.
+- **D-04**: Ingest `tokens.css` `--mks-*` color palette as authoritative; rewire `src/popup/`, `src/welcome/`, smoke.sh to use these tokens. Replace engineering placeholder palette (`#212121`/`#00C853`/etc.) entirely.
+- **D-05**: Self-host Newsreader (variable) + IBM Plex Sans (4 weights) + IBM Plex Mono (2 weights), Latin + Cyrillic subsets, WOFF2 only. Remove Google Fonts `@import` from `tokens.css:12` (MV3 CSP). Bundle via Vite asset pipeline.
+- **D-07**: Update `manifest.json:name` to `"Mokosh — Session Capture"`. Consider i18n via `_locales/` if RU variant differs from EN (per Chrome MV3 best practice — manifest:name = `"__MSG_extName__"` with `default_locale`).
+- **D-08**: Update `manifest.json:description` to the tagline (one of the RU/EN per default_locale). Carry to welcome hero copy.
+- **D-02**: Plan 01-10 builds welcome tab with Hero + Loom dial layout (designer's Surface Kit §05 option A).
+- **D-09**: Gate smoke page behind `VITE_DEV` flag in `vite.config.ts` so production `npm run build` excludes it. Current state ships smoke unintentionally.
+
+## Source artifacts
+
+- `.planning/intel/design-incoming/mokosh/dist/Decision Brief (standalone).html` — full Brief with options + recommendations
+- `.planning/intel/design-incoming/mokosh/dist/Mokosh Surface Kit (standalone).html` — interactive design canvas
+- `.planning/intel/design-incoming/system/bundle/mokosh-handoff/tokens.css` — production token system
+- `.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-mark.svg` — 32×32 brand mark
+- `.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-lockup.svg` — 240×56 mark + wordmark lockup
+- `.planning/intel/design-incoming/system/bundle/mokosh-handoff/handoff.html` — designer's memo
+- `.planning/intel/brand-identity.md` — original engineering brief (now resolved per this doc)
+- `.planning/intel/design-system.md` — engineering's prior visual sketch (superseded for tokens; tokens.css is canonical)
+- `.planning/intel/assets-spec.md` — deliverables spec (icon dimensions/floors still binding)
diff --git a/.planning/intel/brand-identity.md b/.planning/intel/brand-identity.md
index f99b9fb..d53d370 100644
--- a/.planning/intel/brand-identity.md
+++ b/.planning/intel/brand-identity.md
@@ -257,6 +257,10 @@ any conflict and we'll resolve it together.
## Open creative questions (non-exhaustive)
+> **RESOLVED 2026-05-17** per designer handoff + user ack. See
+> `brand-decisions-v1.md` for the 9 resolutions (D-01..D-09). The list below
+> remains as historical context for what was open before the handoff.
+
For both teams to work through in whichever order makes sense. None are
blocking engineering today (placeholders ship), but each unlocks a polish
pass when answered.
diff --git a/.planning/intel/design-incoming/system/bundle/mokosh-handoff/README.txt b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/README.txt
new file mode 100644
index 0000000..b48925c
--- /dev/null
+++ b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/README.txt
@@ -0,0 +1,43 @@
+MOKOSH · HANDOFF BUNDLE
+========================
+
+Date 17 May 2026
+From Design system (engineering-authored)
+To Design team · brand team
+Status draft — every choice is reversible
+
+WHAT IS IN HERE
+----------------
+handoff.html The memo. Open in any browser. Self-contained — no
+ network requests except the dev font CDN (Google
+ Fonts) which one of the asks in §02 is to replace.
+tokens.css The complete token system in production form. Drop
+ it next to your build's stylesheets to spec colours
+ and type from the real values.
+assets/
+ mokosh-mark.svg The proposed brand mark. 2x2 weave intersection.
+ mokosh-lockup.svg Mark + wordmark lockup.
+
+HOW TO USE
+----------
+1. Read handoff.html top-to-bottom (~5 min).
+2. Reply on each of the 8 decisions in §01. Accept, override, or rewrite.
+3. Drop the files I'm asking for in §02 into the project repo.
+4. If anything in tokens.css needs to change, point at the token name —
+ it's one edit, the rest of the system re-threads automatically.
+
+WHAT IS NOT IN HERE
+-------------------
+- The full preview cards. Those live in the design-system project under
+ preview/*.html — open the project for the 23 foundation cards split
+ across Type / Colors / Spacing / Components / Brand.
+- The UI kit. Same project, under ui_kits/extension/.
+- The original briefs from engineering — brand-identity.md, design-
+ system.md, assets-spec.md. Read them too if you have not seen them;
+ this handoff sits on top of them.
+
+QUESTIONS
+---------
+Whatever's clearest. A reply inline on the .html, an updated tokens.css,
+a Figma link, a screenshot, an angry voice memo. The system is wired to
+accept overrides as small atomic edits, so partial answers are fine.
diff --git a/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-lockup.svg b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-lockup.svg
new file mode 100644
index 0000000..130d46e
--- /dev/null
+++ b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-lockup.svg
@@ -0,0 +1,22 @@
+
+
\ No newline at end of file
diff --git a/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-mark.svg b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-mark.svg
new file mode 100644
index 0000000..6e9bd8f
--- /dev/null
+++ b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/assets/mokosh-mark.svg
@@ -0,0 +1,25 @@
+
+
\ No newline at end of file
diff --git a/.planning/intel/design-incoming/system/bundle/mokosh-handoff/handoff.html b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/handoff.html
new file mode 100644
index 0000000..60873c7
--- /dev/null
+++ b/.planning/intel/design-incoming/system/bundle/mokosh-handoff/handoff.html
@@ -0,0 +1,601 @@
+
+
+
+ From Design system (this project)
+ To Design team · brand team
+ Date 17 May 2026
+ Status draft — every choice is reversible
+
+
+
+
+
I committed to a creative direction so the system would run. Eight decisions in that direction need a yes / override from you, and six files need to land in this repo before the extension can stop loading fonts from a CDN and stop shipping the placeholder square-and-dot PNG.
+
Nothing here is locked. Override anything; the tokens are wired so a re-skin is a single-file edit.
+
+
+
+
+
+ § 01
+
Decisions to confirm or override
+ 8 items
+
+
Each one currently has a proposed direction shipping in colors_and_type.css and the UI kit. Tick the box if you accept; replace inline if you want a different answer.
+
+
+
+
+
+
+
D-01 · Public display name
+
Is "Mokosh" the right manifest.json:name?
+
Proposing the codename surfaces externally as the public name. Alternative is keeping "AI Call Recorder" for store discoverability, or coining something new.
Confirm «Тридцать секунд назад, всегда под рукой.»
+
EN parallel: Thirty seconds ago, always within reach. Used on welcome hero + manifest.json:description.
+
+ brand
+
+
+
+
+
+
D-03 · Voice register
+
Two-register copy — terse RU on toolbar / popup / notification; bilingual RU+EN on welcome only.
+
Calm, operationally serious. Sentence case. Periods. No emoji. No exclamation marks. Address with «вы» on welcome; imperative verbs in popup.
+
+ brand
+
+
+
+
+
+
D-04 · Palette direction
+
"Loom" — linen + ink + dye-named accents. Light-primary with dark sibling.
+
Madder rust for REC is the boldest call. Alt is conventional material-red (#D32F2F) if rust reads off-brand.
+
override → flag the WCAG-AA-validated hex you'd prefer for any of madder / moss / amber / brick
+
+ design
+
+
+
+
+
+
D-05 · Type pairing
+
Newsreader (display) · IBM Plex Sans (UI) · IBM Plex Mono (mono).
+
All three OFL, all three cover Cyrillic. If a licensed face is preferred (e.g. an in-house family), name it and I'll rethread.
+
+ design
+
+
+
+
+
+
D-06 · Mark concept
+
2×2 weave intersection — see assets/mokosh-mark.svg.
+
References the goddess-of-weaving etymology without being illustrative. Holds at 16 px. Override with anything from a wordmark-only lockup to an illustrated scene.
+
+ design
+
+
+
+
+
+
D-07 · Iconography
+
Lucide — line, 1.5 stroke, 24 grid.
+
Open-licensed (ISC). Bundle locally for MV3. Alternative is a custom set or Phosphor / Heroicons. Tabler is the other strong line option.
+
+ design
+
+
+
+
+
+
D-08 · Per-state icon swap
+
Stick with neutral mark + dynamic badge, or commission per-state PNG sets?
+
Per-state requires 9 additional PNGs (3 sizes × 3 states) and a perf-costed chrome.action.setIcon swap on every state change. Default direction stays with the badge.
+
see assets-spec.md A-06 for the deliverable list if you pick swap
+
+ design
+
+
+
+
+
+
+
+
+ § 02
+
Files I need landed in this repo
+ 6 deliverables
+
+
Priorities map to the engineering plan in the original assets-spec.md. P0 unblocks shipping a real branded build; P1 finishes the welcome surface; P2 is polish.
+
+
+
+
+ P0
+ fonts/newsreader-{400,500,600}.woff2 fonts/ibm-plex-sans-{400,500,600,700}.woff2 fonts/ibm-plex-mono-{400,500}.woff2
+ Webfont WOFF2 files. Currently loaded from Google Fonts via @import. MV3 CSP forbids remote @font-face at runtime — production must bundle. I'll rewire colors_and_type.css to local rules once these land.
+ Cyrillic ✓ · WOFF2
+
+
+
+ P0
+ assets/extension-icons/icon16.png assets/extension-icons/icon48.png assets/extension-icons/icon128.png
+ Branded extension icons. The three files currently in that folder are the upstream engineering placeholders (dark square + green dot). Rasterise from assets/mokosh-mark.svg — or supply a different mark if D-06 is overridden.
+ ≥ 200 B · 500 B · 1 KB
+
+
+
+ P1
+ assets/extension-icons/icon192.png
+ Hi-DPI notification icon. Optional but recommended for retina rendering of chrome.notifications.create.
+ ≥ 2 KB
+
+
+
+ P1
+ copy/welcome.ru.md
+ Final RU copy review. Hero title, three step bodies, three privacy cards. My draft in ui_kits/extension/Welcome.jsx is a working strawman.
+ brand sign-off
+
+
+
+ P1
+ copy/welcome.en.md
+ English parallel-text subhead. One line under the hero title. Brand decides whether to extend bilingual treatment to the step bodies.
+ brand sign-off
+
+
+
+ P2
+ assets/icon-{rec,off,err}-{16,48,128}.png
+ Per-state icon variants — only if D-08 lands on the swap direction. 9 files total.
+ conditional
+
+
+
+
+
+
+
+
+ § 03
+
Acceptance criteria
+ non-creative · binding
+
+
These are engineering / accessibility floors, not creative direction. Anything you ship has to clear them.
+
+
+
WCAG AA4.5 : 1 normal text, 3 : 1 large. Current palette is pre-validated; overrides need re-validation.
+
Cyrillic ✓Every chosen face renders Russian glyphs without fallback. Plex + Newsreader currently pass.
+
MV3 CSPNo remote font / script loads at runtime. Bundle everything locally in dist/.
Badge floorBadge text ≤ 4 characters. Chrome truncates beyond. "REC" / "ERR" both fit.
+
Reduced-motionAll transitions collapse to 0 ms under prefers-reduced-motion. Wired in colors_and_type.css.
+
Colour-independenceEvery state pairs colour with text or shape. Badge carries REC / ERR text alongside the colour.
+
Focus visible3 px halo on all interactive elements. --mks-shadow-focus works on any surface.
+
+
+
+
+
+
+ § 04
+
What I will do once you reply
+ turnaround
+
+
Round-trip cost so you can scope a review window.
+
+
+ + 0 h
+ Acknowledge each decision. If overridden, re-thread the token in colors_and_type.css and re-render every preview card + UI-kit surface that depends on it.
+
+ + 1 h
+ Swap the font import to local @font-face once the WOFF2 files arrive in fonts/. Verify Cyrillic specimen still renders in preview/type-ui.html.
+
+ + 1 h
+ Replace the placeholder PNGs in assets/extension-icons/ the moment the rasterised versions arrive. Re-shoot preview/brand-extension-icons.html so the card stops carrying the substitution flag.
+
+ + 2 h
+ Inline final RU + EN copy in ui_kits/extension/Welcome.jsx. Lock badge tooltips and notification strings in a single source-of-truth file for engineering to wire.
+
+ + ?
+ Optional follow-on: dark-theme popup variant, smoke-test diagnostic overlay re-skin, animated icon (if D-08 chooses swap), and a tone audit of every Russian string in the original codebase against the agreed register.
+