# S01: Dedicated Sub-Topic Pages

**Goal:** Dedicated sub-topic pages at /topics/:category/:subtopic showing techniques grouped by creator with breadcrumb navigation
**Demo:** After this: Clicking 'Compression' on Topics page loads /topics/mixing/compression with techniques grouped by creator, description, breadcrumbs

## Tasks
- [x] **T01: Added GET /topics/{category_slug}/{subtopic_slug} endpoint filtering techniques by tag within a category, with 3 passing integration tests** — Add a new endpoint to routers/topics.py that returns paginated techniques filtered by sub-topic tag. The endpoint matches the subtopic_slug against the topic_tags ARRAY column (case-insensitive). Also normalizes category_slug to verify the technique belongs to the correct category. Returns PaginatedResponse with TechniquePageRead items, eager-loading the creator relation for creator_name/creator_slug fields. Add integration test to test_public_api.py covering: happy path with known tags, empty result for nonexistent sub-topic, pagination params.
  - Estimate: 45m
  - Files: backend/routers/topics.py, backend/tests/test_public_api.py
  - Verify: cd backend && python -m pytest tests/test_public_api.py -k 'subtopic' -v --timeout=30
- [x] **T02: Added SubTopicPage with breadcrumbs and creator-grouped technique list, wired /topics/:category/:subtopic route, updated TopicsBrowse links to dedicated pages** — Create the SubTopicPage React component at frontend/src/pages/SubTopicPage.tsx following the CreatorDetail pattern. Add fetchSubTopicTechniques function to public-client.ts that calls GET /topics/{category}/{subtopic}. Register route /topics/:category/:subtopic in App.tsx (before the /topics catch-all). Update TopicsBrowse.tsx sub-topic links from /search?q=... to /topics/{cat}/{subtopic}. Add CSS for breadcrumbs and creator-grouped layout to App.css.

SubTopicPage must:
- Extract category and subtopic from URL params
- Fetch techniques via the new API client function
- Group techniques by creator_name and render sections per creator
- Show breadcrumbs: Topics > {Category Name} > {Sub-topic Name} (Topics links to /topics, category name is non-link text, sub-topic is current page)
- Handle loading, error, and empty states
- Each technique links to /techniques/{slug}

Slug-to-display-name conversion: replace hyphens with spaces, title-case. E.g. 'sound-design' → 'Sound Design', 'hi-hat' → 'Hi Hat'.
  - Estimate: 1h
  - Files: frontend/src/pages/SubTopicPage.tsx, frontend/src/api/public-client.ts, frontend/src/App.tsx, frontend/src/pages/TopicsBrowse.tsx, frontend/src/App.css
  - Verify: cd frontend && npx tsc --noEmit && npm run build
