diff --git a/docs/superpowers/plans/2026-06-09-responsive-master-detail.md b/docs/superpowers/plans/2026-06-09-responsive-master-detail.md
new file mode 100644
index 0000000..3aeb37b
--- /dev/null
+++ b/docs/superpowers/plans/2026-06-09-responsive-master-detail.md
@@ -0,0 +1,425 @@
+# Responsive Master/Detail (vocab/search/fields) — Implementation Plan
+
+> **For agentic workers:** REQUIRED SUB-SKILL: Use superpowers:subagent-driven-development (recommended) or superpowers:executing-plans to implement this plan task-by-task. Steps use checkbox (`- [ ]`) syntax for tracking.
+
+**Goal:** Bring the Vocabularies, Search, and Fields master/detail screens to the responsive behavior the Objects screen already has — preserving wide side-by-side, collapsing to single-column + a slide-in Drawer (vocab/search) or a stack (fields) on narrow — via one shared `DetailDrawer`.
+
+**Architecture:** Generalize the objects-specific drawer into a reusable `components/detail-drawer.tsx` and retrofit Objects onto it (Task 1). Make vocabularies + search responsive with `useMediaQuery("(min-width: 1024px)")` + `useMatch` + the shared drawer (Tasks 2-3). Make fields a pure-CSS responsive stack (Task 4) + full gate. Behavior-preserving on wide; only narrow changes.
+
+**Tech Stack:** React 19 + TS + pnpm, React Router 7, Base UI Drawer, Tailwind v4, Vitest 4 (jsdom) + RTL + MSW.
+
+**Conventions:** pnpm; **no `any`/`eslint-disable`/`@ts-ignore`**; no codename; double-quote+semicolon; token classes only. Breakpoint **1024px** (`useMediaQuery("(min-width: 1024px)")` / Tailwind `lg:`), matching Objects. Run a single test pass per task.
+
+**Spec:** `docs/superpowers/specs/2026-06-09-responsive-master-detail-design.md`
+
+**Key facts:**
+- `lib/use-media-query.ts`: `useMediaQuery(query): boolean` (SSR-safe matchMedia).
+- `objects/object-detail-drawer.tsx` (to be generalized + deleted) is: `{if(!n)onClose()}} swipeDirection="right">
}>
`. `Drawer`/`DrawerClose`/`DrawerContent` from `@/components/ui/drawer`.
+- `objects/objects-page.tsx` currently `lazy()`-loads `ObjectDetailDrawer` + wraps in ``; narrow branch renders `{open && }`. The WIDE pane has its own close `` — keep it (`X` import stays).
+- Existing i18n (no new keys): `objects.detailTitle` ("Object detail"), `vocab.terms` ("Terms"), `actions.closeDetail` ("Close detail").
+- `vocabularies-page.tsx`: `