diff --git a/docs/superpowers/specs/2026-03-19-apply-split-pane-design.md b/docs/superpowers/specs/2026-03-19-apply-split-pane-design.md
index bfdc84b..1149e7a 100644
--- a/docs/superpowers/specs/2026-03-19-apply-split-pane-design.md
+++ b/docs/superpowers/specs/2026-03-19-apply-split-pane-design.md
@@ -15,7 +15,7 @@ Refactor the Apply view for desktop: replace the centered 760px list → full-pa
| Decision | Choice | Future option |
|---|---|---|
-| Split ratio | 28% list / 72% workspace (fixed) | Resizable drag handle (Option C) |
+| Split ratio | 28% list / 72% workspace (fixed) | Resizable drag handle |
| Panel open animation | Expand from list divider edge (~200ms) | — |
| URL routing | Local state only — URL stays at `/apply` | URL-synced selection for deep linking |
| List row density | Option A: title + company + score badge, truncated | C (company+score only), D (wrapped/taller) via future layout selector |
@@ -24,7 +24,9 @@ Refactor the Apply view for desktop: replace the centered 760px list → full-pa
## Layout
-### Desktop (≥ 768px)
+### Desktop (≥ 1024px)
+
+The split pane activates at 1024px — the same breakpoint where the app nav sidebar collapses (`App.vue` `max-width: 1023px`). This ensures the two-column layout never renders without its sidebar, avoiding an uncomfortably narrow list column.
```
┌──────────────────────────────────────────────────────────────────┐
@@ -38,13 +40,12 @@ Refactor the Apply view for desktop: replace the centered 760px list → full-pa
└──────────────────────────────────────────────────────────────────┘
```
-- App nav sidebar (220px fixed, existing) + split pane fills the remainder
-- No job selected → right panel shows a warm empty state: `← Select a job to open the workspace`
-- The `max-width: 760px` constraint on `.apply-list` is removed for desktop; it remains (full-width) on mobile
+- No job selected → right panel shows a warm empty state: `← Select a job to open the workspace` (desktop-only — the empty state element is conditionally rendered only inside the split layout, not the mobile list)
+- The `max-width: 760px` constraint on `.apply-list` is removed for desktop
-### Mobile (< 768px)
+### Mobile (< 1024px)
-No changes. Existing styles, full-width list, `RouterLink` navigation to `/apply/:id`.
+No changes. Existing full-width list + `RouterLink` navigation to `/apply/:id`. All existing mobile breakpoint styles are preserved.
---
@@ -61,13 +62,18 @@ ApplyWorkspaceView.vue → full page, reads :id from route params
```
ApplyView.vue → split pane (desktop) OR list (mobile)
- ├─ [left] NarrowJobList (inline, not a separate component — kept in ApplyView)
- └─ [right] ApplyWorkspace.vue (new component, accepts :jobId prop)
+ ├─ [left] Narrow job list (inline in ApplyView — not a separate component)
+ └─ [right] ApplyWorkspace.vue (new component, :job-id prop)
-ApplyWorkspaceView.vue → unchanged route wrapper; renders
+ApplyWorkspaceView.vue → thin wrapper:
+ApplyWorkspace.vue → extracted workspace content; accepts jobId: number prop
```
-**Why extract `ApplyWorkspace.vue`?** The workspace is now rendered in two contexts: the split pane (inline) and the existing `/apply/:id` route (for mobile and any future deep-link support). Extracting it as a prop-driven component avoids duplication.
+**Why extract `ApplyWorkspace.vue`?** The workspace now renders in two contexts: the split pane (inline, `jobId` from local state) and the existing `/apply/:id` route (for mobile + future deep links). Extracting it as a prop-driven component avoids duplication.
+
+**`jobId` prop type:** `number`. The wrapper in `ApplyWorkspaceView.vue` does `Number(route.params.id)` before passing it. `ApplyWorkspace.vue` receives a `number` and never touches `route.params` directly.
+
+**`declare module` augmentation:** The `declare module '@/stores/review'` block in the current `ApplyWorkspaceView.vue` (if present) moves into `ApplyWorkspace.vue`, not the thin wrapper.
---
@@ -78,43 +84,73 @@ ApplyWorkspaceView.vue → unchanged route wrapper; renders `-based 🦅 streaks horizontally across the panel area (left → right, 600ms), followed by a brief "you're on the hunt" toast (2s, bottom-right)
-- **`prefers-reduced-motion`:** Toast only, no canvas animation
+- **Effect:** A `