# Yumi design system (`packages/design-system`)

The **canonical token source** for every Yumi surface. See `docs/YUMI_MASTER.md §5`.

## What this is
Yumi uses **one** design system — the letterbox system (`mmd-portal-letterbox-v1`, derived from
`flowmaster-theme-letterbox-v1`). `tokens.css` is the single source of truth for colors, ink,
hairlines, the baobab accent, and the Fraunces / PP Neue Machina / JetBrains Mono type stack.

## The contract (enforced)
Each surface carries a `scripts/check-design-system.mjs` linter (already in `mmd-cowork-mobile`
and `mmd-cowork-office`) that fails the build if:
- a local `styles.css` exists,
- markup contains inline `style=`, hex, `rgb(`, or `hsl(`,
- a class is used that is not in `design-system.manifest.json`.

Surfaces **consume** these tokens; they never redefine them.

## Adoption status
| Surface | Status |
|---|---|
| `mmd-cowork-mobile` (web/PWA) | ✅ on the DS (`_design-system/`, manifest-enforced) |
| `mmd-cowork-office` (add-in) | ✅ on the DS |
| `mmd-portal-shell` (MMD portal) | ✅ on the DS |
| `open-cowork-mmd` (desktop) | ❌ **migrate** — uses a bespoke Tailwind `--color-*` scheme + duplicated literal tokens (YUMI_MASTER §5.3.2) |

## To do
1. Point every surface's `_design-system/` at these canonical tokens.
2. Port the manifest linter into all surfaces' CI.
3. Migrate `open-cowork-mmd` desktop onto the manifest pattern.
4. Resolve PP Neue Machina licensing (or pick a documented fallback).

## Naming
At the Yumi rebrand (`docs/YUMI_MASTER.md §6`) the manifest `name` changes from
`mmd-portal-letterbox-v1` → `yumi-letterbox-v1`; the token contract is unchanged.
