diff --git a/frontend/app.js b/frontend/app.js
index 892e885..c84a380 100755
--- a/frontend/app.js
+++ b/frontend/app.js
@@ -9674,6 +9674,21 @@ async function renderSettings() {
`;
c.appendChild(wrap);
+ const definitions = [
+ ['appearance', 'Appearance', 'Listening', () => `${data.settings.theme || 'dark'} · ${data.settings.fontScale || 'normal'} text`, ''],
+ ['playback', 'Playback & sound', 'Listening', () => `${data.settings.quality || 'auto'} quality · ${Level.enabled() ? 'Levelled volume' : 'Original volume'}`, ''],
+ ['sharing', 'Sharing', 'Library & storage', () => data.settings.p2pShare !== false ? 'Sharing saved videos' : 'Sharing off', ''],
+ ['offline', 'Offline storage', 'Library & storage', () => `${SaveSlots.limit ? SaveSlots.limit() : Number(data.settings.parallelSaves) || 4} at once · ${$('cacheTotal')?.textContent || 'Checking storage'}`, ''],
+ ['searches', 'Saved searches', 'Library & storage', () => `${SearchLibrary.list().length} saved searches`, ''],
+ ['playlists', 'Playlists', 'Library & storage', () => `${data.playlists.length} playlists`, ''],
+ ['backup', 'Backup & restore', 'Account & sync', () => data.settings.autoBackupEnabled ? 'Scheduled backup on' : 'Manual backups', ''],
+ ['reset', 'Refresh & reset', 'Advanced & about', () => 'Refresh the app or clear device data', ''],
+ ['profile', 'Profile & sync', 'Account & sync', () => data.profile?.name || 'Not linked', ''],
+ ['about', 'About', 'Advanced & about', () => `Version ${APP_VERSION}`, ''],
+ ];
+ const groups = [...wrap.querySelectorAll(':scope > .set-group')];
+ definitions.forEach(([id, title, cluster, summary, icon], i) => SettingsSections.register({ id, title, cluster, summary, icon, render(container) { container.append(groups[i]); } }));
+ SettingsSections.mount(wrap, { settings: data.settings, data, persist, toast });
// ---- Wire appearance / accessibility ----
$('setTheme').addEventListener('change', (e) => { data.settings.theme = e.target.value; applyAppearance(); persist(); });
diff --git a/frontend/index.html b/frontend/index.html
index 1ea9d50..e765010 100755
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -27,6 +27,7 @@
+
@@ -652,6 +653,7 @@
+