diff --git a/DESIGN.md b/DESIGN.md
index d2c2a34..330cd0f 100644
--- a/DESIGN.md
+++ b/DESIGN.md
@@ -1,171 +1,160 @@
-# DESIGN.md — typst-leaf UI Rehaul
+# DESIGN.md — typst-leaf UI
-This document is the aesthetic reference for the next chunk in `PLAN.md`. Every UI decision in `PLAN.md` should match this guide. Direction is "document editor" — warmth, restraint, a thin layer of leaf.
+## Vision
+
+**"A fresh sheet of paper on a warm desk."** Refined editorial-paper aesthetic with a deep teal accent and warm cream neutrals. The app chrome (sidebar, topbar, statusbar) is a warm cream; editor and preview surfaces are a brighter near-white — so reading and writing happen on a sheet of paper that lifts off the desk.
## Brand
-- Name: **typst-leaf** — warm, organic, paper-and-ink.
-- Personality: quiet, considered, a serious editor for prose, papers, and beautiful documents.
-- Not "developer marketing." Not "dashboard SaaS." Closer to a focused notebook.
+- **Name:** typst-leaf — warm, organic, paper-and-ink.
+- **Mark:** A teal `Leaf` icon (lucide) beside the wordmark.
+- **Personality:** Quiet, considered, a serious editor for prose, papers, and beautiful documents. Like a focused notebook, not a dashboard.
-## Aesthetic Pillars
+## Palette (Tailwind v4 `@theme`)
-1. **Paper, not glass.**
- Surfaces are warm off-white, not slate. Borders separate panels; we don't blur or float.
-2. **Functional color, decorative restraint.**
- Greens only when communicating success/active/leaf. Use amber for warnings, slate for muted text, rose for errors. No gradients on chrome.
-3. **Typography is the interface.**
- System sans for chrome, monospace for paths/git/lsp status. We say things in words, not icons.
-4. **A whisper, not a shout.**
- Rounded corners are subtle (`rounded-md`). Focus rings are visible but quiet.
+Custom tokens in `src/index.css`:
-## Palette (Tailwind v4 via CSS-first)
-
-| Token | Use | Tailwind class |
+| Token | Value | Use |
|---|---|---|
-| Page background | Shell chrome | `bg-stone-50` |
-| Panel surface | Cards, panels | `bg-white` |
-| Sidebar | Activity + sections | `bg-stone-50` with inner panels `bg-white` |
-| Text primary | Body | `text-zinc-800` |
-| Text muted | Meta | `text-zinc-500` |
-| Text subtle | File paths | `text-zinc-400` |
-| Divider | 1px borders | `border-zinc-200` |
-| Hover surface | Buttons/list rows | `hover:bg-stone-100` |
-| Accent (primary) | Save, commit | `bg-emerald-600 hover:bg-emerald-700 text-white` |
-| Accent (soft) | Active file, focus | `bg-emerald-50 text-emerald-800 ring-emerald-200` |
-| Warning | Behind | `text-amber-600` |
-| Error | Dirty error | `text-rose-600` |
-| Pill bg (status) | Status chips | `bg-white border-zinc-200` |
+| `canvas` | `#faf8f4` | App chrome (sidebar, topbar, statusbar, app bg) |
+| `surface` | `#fdfdfb` | Editor, preview, raised panels, inputs |
+| `surface-hover` | `#f3f1ec` | Hover backgrounds |
+| `ink` | `#1c1917` | Primary body text |
+| `ink-muted` | `#78716c` | Secondary text, meta |
+| `ink-subtle` | `#a8a29e` | Placeholders, subtle meta |
+| `line` | `#e7e5e4` | Hairline borders, dividers |
+| `line-strong` | `#d6d3d1` | Input borders |
-We do not introduce dark classes. Tailwind v4 is in CSS-first mode (`@import "tailwindcss"`); tokens live in plain CSS, not `tailwind.config.js`.
+| Token | Value | Use |
+|---|---|---|
+| `teal-50` | `#f0f9f8` | Active row tints, soft accents |
+| `teal-100` | `#d5edea` | Focus ring, highlights |
+| `teal-500` | `#14b8a6` | Status dots, focus border |
+| `teal-600` | `#0f766e` | Primary actions, active text |
+| `teal-700` | `#115e59` | Primary hover |
+
+Functional: `amber-*` (warnings, dirty, behind), `rose-*` (errors, destructive). Monaco defaults (`zinc-*` border, body text) are left as-is.
+
+No dark classes. Tailwind v4 CSS-first only.
## Typography
-- UI: `font-sans` (system stack already from Tailwind).
-- Monospace: `font-mono` for paths, git refs, LSP logs, status messages.
-- Toolbar/header: `text-sm font-medium tracking-tight`.
-- Meta and toasts: `text-xs text-zinc-500`.
-- File names: `text-sm font-mono`.
+- **UI:** `font-sans` → Inter Variable (via `@fontsource-variable/inter`).
+- **Mono:** `font-mono` → JetBrains Mono Variable (via `@fontsource-variable/jetbrains-mono`).
+- **Monaco editor** also uses JetBrains Mono for consistency.
+- Brand wordmark: `font-semibold tracking-tight`.
+- Section headers: `text-[11px] uppercase tracking-wider text-ink-subtle`.
+- File paths: `font-mono text-ink-muted`.
+- Meta: `text-xs text-ink-subtle`.
+
+## Icons
+
+lucide-react, tree-shakeable. Wrapped via `Icon` component with `size-4 stroke-[1.5] text-current`. Curated set: `Leaf`, `Plus`, `FolderPlus`, `Pencil`, `Trash2`, `ChevronDown`, `ChevronRight`, `X`, `Settings`, `RotateCw`, `GitBranch`, `ArrowUp`, `ArrowDown`, `Files`, `GitGraph`.
## Layout Skeleton
```
┌──────────────────────────────────────────────────────────────────────┐
-│ TopBar: leaf · [project ▾] · main.typ · Save · ●LSP ◌PRV │
+│ TopBar: # typst-leaf · project · main.typ Save LSP PRV @ │
├──────────┬───────────────────────────────────────────────────────────┤
│ Sidebar │ │
│ Files │ │
-│ ▣ main │ Monaco Editor │
+│ ─────── │ Monaco Editor │
+│ ▣ main │ (typst-leaf-light theme) │
│ ▣ lib/ │ │
│ Git │ │
-│ ⚙ set │ │
-│ ├─────────────────────────────────────┬─────────────────────┤
+│ Settings├─────────────────────────────────────┬─────────────────────┤
│ │ Editor (resizable) │ Preview │
│ │ │ (iframe) │
│ │ │ │
└──────────┴─────────────────────────────────────┴─────────────────────┘
-│ StatusBar: main · clean · ready · vim:n · 1:23 │
+│ StatusBar: main · clean · LSP · Preview · vim · saving… │
└──────────────────────────────────────────────────────────────────────┘
```
-## Component Specs (Tailwind)
+## Component Specs
### TopBar
-```tsx
-