diff --git a/docs/EDITOR.md b/docs/EDITOR.md
index efe32c0..5391e94 100644
--- a/docs/EDITOR.md
+++ b/docs/EDITOR.md
@@ -33,7 +33,7 @@ Route: `/edit/:section` or `/{lang}/edit/:section`.
| Widgets | `widgets-section` | homepage widget configuration — typed editors for hero/categories/product-collection, JSON fallback for everything else |
| Marketplace Features | `features-section` | feature flags, catalog navigation mode, search suggestions/history, recently viewed, reviews/questions/recommendations |
| Languages | `languages-section` | add/remove supported locale, set default locale; syncs translation keys across static pages and nav labels via `LocaleSyncService` |
-| Navigation | `navigation-section` | header nav: add/remove/reorder/edit label/URL/visibility. Flat footer nav: same. Grouped (column-based) footer nav is read-only here — edit via Footer tab. |
+| Navigation | `navigation-section` | header nav: add/remove/reorder/edit label/URL/visibility, per-locale via `app-locale-tabs`. Flat footer nav: same. Grouped (column-based) footer nav is read-only here — edit via Footer tab. |
| Preview | `preview-section` | export/import JSON, in-memory runtime preview without full reload |
## Save / publish / draft / reset model
@@ -54,6 +54,21 @@ Route: `/edit/:section` or `/{lang}/edit/:section`.
Admin login shares the exact same Telegram QR/session backend and `TelegramLoginComponent` as customer login (`mode: 'admin'` vs `'customer'`) — only the cookie name/`SameSite` policy, token storage keys, and guard differ. **Backend gap:** because both flows hit the same session endpoint, the backend cannot distinguish an admin scan from a customer scan today — real admin authorization must be enforced server-side. Full detail: `docs/BACKEND.md` item 1.
+## Design system primitives (post-Sprint 30 redesign)
+
+All 11 section components (`sections/*.component.html`) share these 6 `shared/ui/*` primitives instead of copy-pasted markup. They mirror the existing `InputComponent` CVA idiom (standalone, `OnPush`, `NG_VALUE_ACCESSOR` where they're form controls):
+
+| Primitive | Selector | Replaces | Used in |
+|---|---|---|---|
+| `ToggleComponent` | `app-toggle` | raw `` + `$any($event.target).checked` | header, homepage, widgets, navigation, features |
+| `SelectComponent` | `app-select` | raw `