diff --git a/docs/plans/2026-05-07-url-driven-section-routing-design.md b/docs/plans/2026-05-07-url-driven-section-routing-design.md
new file mode 100644
index 0000000..56528be
--- /dev/null
+++ b/docs/plans/2026-05-07-url-driven-section-routing-design.md
@@ -0,0 +1,86 @@
+# URL-Driven Section Routing — Design
+
+**Date:** 2026-05-07
+**Status:** Approved
+
+## Goal
+
+Replace the single-page client-state accordion with multi-page URL-driven routing. Each portfolio section gets its own static URL. The sections list remains visible at all times; clicking a section heading navigates to its page.
+
+## Route Structure
+
+Delete `app/page.tsx`. Create `app/[[...slug]]/page.tsx` (optional catchall).
+
+| URL | Active section |
+|---|---|
+| `/` | `sections[0].slug` (first section, URL stays `/`) |
+| `/intro` | `intro` |
+| `/bio` | `bio` |
+| `/skills` | `skills` |
+| `/experience` | `experience` |
+| `/projects` | `projects` |
+
+`generateStaticParams` emits one entry per section plus the root:
+```ts
+[{}, { slug: ['intro'] }, { slug: ['bio'] }, ...]
+```
+
+## Component Changes
+
+### `SectionAccordion` (entity)
+
+- Replace `onClick: () => void` prop with `href: string`
+- Inactive state: render `` instead of `