diff --git a/.changes/ui-live-panel-toggles.md b/.changes/ui-live-panel-toggles.md
new file mode 100644
index 000000000..d530d9a52
--- /dev/null
+++ b/.changes/ui-live-panel-toggles.md
@@ -0,0 +1,10 @@
+---
+type: feature
+area: ui
+issues: [1118]
+---
+
+Live TV now remembers Groups and Channels visibility independently across M3U,
+Xtream, Stalker, Favorites, and Recently Viewed. Consistent accessible controls
+restore each panel, while Cmd/Ctrl+B temporarily clears the viewing area
+without overwriting those choices. Guide toggles now appear only when usable.
diff --git a/CLAUDE.md b/CLAUDE.md
index 534b5bac8..9a3b42114 100644
--- a/CLAUDE.md
+++ b/CLAUDE.md
@@ -929,6 +929,23 @@ engine` (restart required) or
- Keyboard shortcuts: ArrowUp/ArrowDown (volume), M (mute)
- Component: `libs/ui/playback/src/lib/audio-player/audio-player.component.ts`
+**Live Panel Controls**:
+
+- Groups and Channels keep independent persisted intent through
+ `LiveLayoutPanelStateService` in `@iptvnator/portal/shared/data-access`;
+ missing new values migrate per panel from the legacy
+ `live-sidebar-state`.
+- M3U, Xtream, Stalker, Favorites, and Recently Viewed use the same
+ header-hide/boundary-restore pattern with retained `inert` panels, ARIA
+ relationships, focus transfer, and 40px minimum targets.
+- `Cmd/Ctrl+B` temporarily suppresses applicable left panels without changing
+ their saved combination. Responsive suppression also preserves intent and
+ omits unfulfillable restore controls.
+- Guide disclosure appears only beside a working inline player. External
+ MPV/VLC keeps a static EPG heading, and radio has no Guide panel.
+- Canonical UX and ownership contract:
+ `docs/architecture/iptvnator-ui-guidelines.md` ("Live Panel Disclosures").
+
**EPG (Electronic Program Guide)**:
- XMLTV format support
diff --git a/docs/architecture/iptvnator-ui-guidelines.md b/docs/architecture/iptvnator-ui-guidelines.md
index e0082a268..6d84645f7 100644
--- a/docs/architecture/iptvnator-ui-guidelines.md
+++ b/docs/architecture/iptvnator-ui-guidelines.md
@@ -214,48 +214,68 @@ remain local when the meaning is explicit.
- Keep the EPG content mounted while collapsed so current-program state can
continue updating.
-### Collapsible Live Sidebar
+### Live Panel Disclosures
-- M3U, Xtream, and Stalker live layouts share a single sidebar collapse toggle
- that hides the channels rail to give the player and EPG full width.
-- Xtream Live TV's root view (`/live` with no selected category) follows the
- same paginated `All Items` shell as VOD and Series: a widget header with the
- total channel count, page-size controls, and page navigation above the shared
- `app-grid-list`. Use the grid list's logo-oriented live variant so channel
- logos stay contained in 16:9 thumbnails instead of being cropped like
- VOD/series posters. Selecting a channel from that root grid starts playback,
- selects the channel's category, highlights the active category and channel,
- and scrolls the category rail plus virtual channels list to the selected rows
- when those rails are visible.
-- In Xtream and Stalker live TV, the same toggle also collapses the workspace
- shell context sidebar (the "Live Categories" rail rendered by
- `WorkspaceShellContextSidebarComponent`), matching M3U's "everything quiets"
- behaviour. The shell categories rail only collapses when the active section
- is `live` (Xtream) or `itv`/`radio` (Stalker); movies, series, favorites,
- and recent routes leave it untouched.
-- Collapsed state is owned by `LiveLayoutSidebarStateService`
- (`providedIn: 'root'`) in `@iptvnator/portal/shared/util`. Every surface that
- participates injects the service and reads `isCollapsed`; any toggle calls
- `service.toggle()`. Persistence delegates to the existing
- `live-sidebar-state` helpers, so the localStorage key stays unchanged and
- missing/invalid values restore to expanded.
-- A `mat-icon-button` with `chevron_left` lives in the sidebar header and
- toggles state. While collapsed, a floating `chevron_right` mini-fab appears
- at the left edge of `.content-container` to restore the rail (and the
- categories rail, in Xtream/Stalker live).
-- Keyboard shortcut: `Cmd/Ctrl+B`. The handler ignores events that originate
- inside ``, `