diff --git a/frontend/collection.html b/frontend/collection.html
index 6a2610d..165676f 100644
--- a/frontend/collection.html
+++ b/frontend/collection.html
@@ -365,7 +365,7 @@
LS.sidebar?.init();
lucide.createIcons();
const feats = await LS.loadFeatures();
- if (feats.collection === false) { window.location.replace('/403'); return; }
+ if (feats.collection === false && user?.role !== 'admin') { window.location.replace('/403'); return; }
LS.hideDisabledFeatures?.();
await loadCollection();
})();
diff --git a/frontend/knowledge-map.html b/frontend/knowledge-map.html
index 1737cd8..ce54048 100644
--- a/frontend/knowledge-map.html
+++ b/frontend/knowledge-map.html
@@ -585,7 +585,7 @@ let _dashOffset = 0; // animated dash offset for link flow
LS.notif.init();
lucide.createIcons();
const feats = await LS.loadFeatures();
- if (feats.knowledge_map === false) { window.location.replace('/403'); return; }
+ if (feats.knowledge_map === false && user?.role !== 'admin') { window.location.replace('/403'); return; }
LS.hideDisabledFeatures?.();
document.querySelector('.sb-toggle')?.addEventListener('click', () => {
diff --git a/frontend/red-book.html b/frontend/red-book.html
index 3ed34ad..67477c7 100644
--- a/frontend/red-book.html
+++ b/frontend/red-book.html
@@ -792,7 +792,7 @@ const XP_MAP = { CR: 50, EN: 40, VU: 30, NT: 20, LC: 10 };
async function init() {
lucide.createIcons();
const feats = await LS.loadFeatures().catch(() => ({}));
- if (feats.red_book === false) { window.location.replace('/403'); return; }
+ if (feats.red_book === false && LS.getUser()?.role !== 'admin') { window.location.replace('/403'); return; }
LS.hideDisabledFeatures?.();
// Auth (sidebar)
diff --git a/frontend/sim-builder.html b/frontend/sim-builder.html
index 71daaa4..5d6aaef 100644
--- a/frontend/sim-builder.html
+++ b/frontend/sim-builder.html
@@ -196,7 +196,8 @@
if (!(ip.isTeacher || ip.isAdmin)) { location.href = '/dashboard'; return; }
// Фича-гейт: «Конструктор симуляций» можно отключить в админке (feature_sim_builder_enabled).
- if (LS.loadFeatures) {
+ // Админ имеет доступ всегда (он управляет модулями) — для него гейт не срабатывает.
+ if (LS.loadFeatures && !ip.isAdmin) {
LS.loadFeatures().then(function (feats) {
if (feats && feats.sim_builder === false) { LS.toast && LS.toast('Конструктор симуляций отключён', 'warn'); location.href = '/dashboard'; }
}).catch(function () {});