diff --git a/Overlord-Server/public/assets/main.css b/Overlord-Server/public/assets/main.css
index cc66a57..58a8efe 100644
--- a/Overlord-Server/public/assets/main.css
+++ b/Overlord-Server/public/assets/main.css
@@ -209,6 +209,15 @@
* {
box-sizing: border-box;
}
+
+html {
+ scrollbar-gutter: stable;
+}
+
+@view-transition {
+ navigation: auto;
+}
+
body {
margin: 0;
min-height: 100vh;
@@ -1626,6 +1635,15 @@ mark.search-current {
/* Dashboard polish */
#top-nav {
box-shadow: 0 10px 30px rgba(2, 6, 23, 0.45);
+ /* Reserve the topbar's height before nav.js mounts so the page below it
+ doesn't visibly jump when the nav HTML is injected. The min-height is
+ overridden by `body.sb-ready #top-nav` for sidebar mode, which has its
+ own explicit dimensions. */
+ position: sticky;
+ top: 0;
+ z-index: 10;
+ width: 100%;
+ min-height: 60px;
}
#top-nav nav a {
@@ -2014,17 +2032,26 @@ tbody tr:hover {
--sb-ease: cubic-bezier(0.4, 0, 0.2, 1);
}
-/* Offset body content so it sits beside the sidebar */
+/* Offset body content so it sits beside the sidebar.
+ `html.nav-pre-sidebar` is set by the inline pre-paint script in each
+ page
and triggers the sidebar layout before nav.js mounts;
+ `body.sb-ready` is what the JS controller adds afterward. Both
+ selectors fire the same rules so there's no layout shift between the
+ two states. The same pattern applies to the rules below. */
+html.nav-pre-sidebar body,
body.sb-ready {
padding-left: var(--sb-w);
transition: padding-left var(--sb-speed) var(--sb-ease);
}
+html.nav-pre-sidebar.nav-pre-collapsed body,
body.sb-ready.sb-collapsed {
padding-left: var(--sb-w-collapsed);
}
/* On mobile the sidebar becomes a drawer, not a persistent rail */
@media (max-width: 767px) {
+ html.nav-pre-sidebar body,
+ html.nav-pre-sidebar.nav-pre-collapsed body,
body.sb-ready,
body.sb-ready.sb-collapsed {
padding-left: 0;
@@ -2033,12 +2060,14 @@ body.sb-ready.sb-collapsed {
}
/* ---- The sidebar element (#top-nav) ---- */
+html.nav-pre-sidebar #top-nav,
body.sb-ready #top-nav {
position: fixed;
top: 0;
left: 0;
height: 100dvh;
width: var(--sb-w);
+ min-height: 0;
background: rgba(2, 8, 22, 0.97);
border-right: 1px solid rgba(255, 255, 255, 0.07);
backdrop-filter: blur(16px);
@@ -2050,10 +2079,12 @@ body.sb-ready #top-nav {
padding: 0;
transition: width var(--sb-speed) var(--sb-ease);
}
+html.nav-pre-sidebar.nav-pre-collapsed #top-nav,
body.sb-collapsed #top-nav {
width: var(--sb-w-collapsed);
}
@media (max-width: 767px) {
+ html.nav-pre-sidebar #top-nav,
body.sb-ready #top-nav {
width: var(--sb-w) !important;
transform: translateX(calc(-100% - 2px));
@@ -2066,6 +2097,11 @@ body.sb-collapsed #top-nav {
}
}
+/* Pre-paint nav-hidden: keep the nav from flashing in before JS removes it */
+html.nav-pre-hidden #top-nav {
+ visibility: hidden;
+}
+
/* ---- Sidebar header (logo row) ---- */
.sb-header {
display: flex;
diff --git a/Overlord-Server/public/assets/nav-prelude.js b/Overlord-Server/public/assets/nav-prelude.js
new file mode 100644
index 0000000..96979fb
--- /dev/null
+++ b/Overlord-Server/public/assets/nav-prelude.js
@@ -0,0 +1,8 @@
+(function () {
+ try {
+ var h = document.documentElement, L = localStorage;
+ h.classList.add(L.getItem("sb_mode") === "sidebar" ? "nav-pre-sidebar" : "nav-pre-topbar");
+ if (L.getItem("sb_collapsed") === "true") h.classList.add("nav-pre-collapsed");
+ if (L.getItem("nav_hidden") === "true") h.classList.add("nav-pre-hidden");
+ } catch (e) {}
+})();
diff --git a/Overlord-Server/public/build.html b/Overlord-Server/public/build.html
index ad471c1..df12ea4 100644
--- a/Overlord-Server/public/build.html
+++ b/Overlord-Server/public/build.html
@@ -3,6 +3,8 @@
+
+
Client Builder - Overlord
diff --git a/Overlord-Server/public/console.html b/Overlord-Server/public/console.html
index 30c71e0..660c69b 100644
--- a/Overlord-Server/public/console.html
+++ b/Overlord-Server/public/console.html
@@ -3,6 +3,8 @@
+
+
Overlord Console
diff --git a/Overlord-Server/public/deploy.html b/Overlord-Server/public/deploy.html
index ebcfb69..707db18 100644
--- a/Overlord-Server/public/deploy.html
+++ b/Overlord-Server/public/deploy.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Execution - Overlord
diff --git a/Overlord-Server/public/file-share.html b/Overlord-Server/public/file-share.html
index 199a12c..f1800b3 100644
--- a/Overlord-Server/public/file-share.html
+++ b/Overlord-Server/public/file-share.html
@@ -3,6 +3,11 @@
+
+
+
+
+
File Share - Overlord
diff --git a/Overlord-Server/public/filebrowser.html b/Overlord-Server/public/filebrowser.html
index c6e9ebf..169b1a1 100644
--- a/Overlord-Server/public/filebrowser.html
+++ b/Overlord-Server/public/filebrowser.html
@@ -3,6 +3,8 @@
+
+
File Browser - Overlord
diff --git a/Overlord-Server/public/hvnc.html b/Overlord-Server/public/hvnc.html
index 711b87c..649d8eb 100644
--- a/Overlord-Server/public/hvnc.html
+++ b/Overlord-Server/public/hvnc.html
@@ -3,6 +3,8 @@
+
+
Overlord Backstage
diff --git a/Overlord-Server/public/index.html b/Overlord-Server/public/index.html
index b703324..9715467 100644
--- a/Overlord-Server/public/index.html
+++ b/Overlord-Server/public/index.html
@@ -3,6 +3,8 @@
+
+
Overlord Dashboard
@@ -14,9 +16,9 @@
-
-
-
+
+
+
diff --git a/Overlord-Server/public/keylogger.html b/Overlord-Server/public/keylogger.html
index 7c7a6ac..ca2c733 100644
--- a/Overlord-Server/public/keylogger.html
+++ b/Overlord-Server/public/keylogger.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Keylogger - Overlord
diff --git a/Overlord-Server/public/logs.html b/Overlord-Server/public/logs.html
index 3150eb8..d480fca 100644
--- a/Overlord-Server/public/logs.html
+++ b/Overlord-Server/public/logs.html
@@ -3,6 +3,8 @@
+
+
Client Logs - Overlord
diff --git a/Overlord-Server/public/metrics.html b/Overlord-Server/public/metrics.html
index 2ec5a8b..6114fda 100644
--- a/Overlord-Server/public/metrics.html
+++ b/Overlord-Server/public/metrics.html
@@ -3,6 +3,8 @@
+
+
Metrics - Overlord
diff --git a/Overlord-Server/public/notifications.html b/Overlord-Server/public/notifications.html
index 5fcc4cc..e128541 100644
--- a/Overlord-Server/public/notifications.html
+++ b/Overlord-Server/public/notifications.html
@@ -3,6 +3,8 @@
+
+
Notifications - Overlord
diff --git a/Overlord-Server/public/plugins.html b/Overlord-Server/public/plugins.html
index 07c86b1..16539e5 100644
--- a/Overlord-Server/public/plugins.html
+++ b/Overlord-Server/public/plugins.html
@@ -3,6 +3,8 @@
+
+
Overlord Plugins
diff --git a/Overlord-Server/public/processes.html b/Overlord-Server/public/processes.html
index d3ee283..382140c 100644
--- a/Overlord-Server/public/processes.html
+++ b/Overlord-Server/public/processes.html
@@ -3,6 +3,8 @@
+
+
Process Manager - Overlord
diff --git a/Overlord-Server/public/purgatory.html b/Overlord-Server/public/purgatory.html
index b68caf9..8d63db1 100644
--- a/Overlord-Server/public/purgatory.html
+++ b/Overlord-Server/public/purgatory.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Purgatory - Overlord
diff --git a/Overlord-Server/public/remotedesktop.html b/Overlord-Server/public/remotedesktop.html
index 06c1532..20dd553 100644
--- a/Overlord-Server/public/remotedesktop.html
+++ b/Overlord-Server/public/remotedesktop.html
@@ -3,6 +3,8 @@
+
+
Overlord Remote Desktop
diff --git a/Overlord-Server/public/scripts.html b/Overlord-Server/public/scripts.html
index 7f02565..cc4ed8a 100644
--- a/Overlord-Server/public/scripts.html
+++ b/Overlord-Server/public/scripts.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Script Execution - Overlord
diff --git a/Overlord-Server/public/settings.html b/Overlord-Server/public/settings.html
index c02c569..10a5239 100644
--- a/Overlord-Server/public/settings.html
+++ b/Overlord-Server/public/settings.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Settings - Overlord
diff --git a/Overlord-Server/public/socks5-manager.html b/Overlord-Server/public/socks5-manager.html
index 5ef6a2e..31760a4 100644
--- a/Overlord-Server/public/socks5-manager.html
+++ b/Overlord-Server/public/socks5-manager.html
@@ -3,6 +3,11 @@
+
+
+
+
+
SOCKS5 Proxy Manager - Overlord
diff --git a/Overlord-Server/public/sol-publish.html b/Overlord-Server/public/sol-publish.html
index 30cba91..0073886 100644
--- a/Overlord-Server/public/sol-publish.html
+++ b/Overlord-Server/public/sol-publish.html
@@ -3,6 +3,8 @@
+
+
Solana Memo Publisher - Overlord
diff --git a/Overlord-Server/public/user-client-access.html b/Overlord-Server/public/user-client-access.html
index b59bcf8..a3d15bd 100644
--- a/Overlord-Server/public/user-client-access.html
+++ b/Overlord-Server/public/user-client-access.html
@@ -3,6 +3,11 @@
+
+
+
+
+
User Client Access - Overlord
diff --git a/Overlord-Server/public/users.html b/Overlord-Server/public/users.html
index c730905..7f2b7ae 100644
--- a/Overlord-Server/public/users.html
+++ b/Overlord-Server/public/users.html
@@ -3,6 +3,11 @@
+
+
+
+
+
User Management - Overlord
diff --git a/Overlord-Server/public/voice.html b/Overlord-Server/public/voice.html
index 9ab4386..1f9f880 100644
--- a/Overlord-Server/public/voice.html
+++ b/Overlord-Server/public/voice.html
@@ -3,6 +3,11 @@
+
+
+
+
+
Voice Support
diff --git a/Overlord-Server/public/webcam.html b/Overlord-Server/public/webcam.html
index 430463c..3e40c67 100644
--- a/Overlord-Server/public/webcam.html
+++ b/Overlord-Server/public/webcam.html
@@ -3,6 +3,8 @@
+
+
Overlord Webcam Viewer
diff --git a/Overlord-Server/public/winre.html b/Overlord-Server/public/winre.html
index 4fda29b..1de01f8 100644
--- a/Overlord-Server/public/winre.html
+++ b/Overlord-Server/public/winre.html
@@ -3,6 +3,11 @@
+
+
+
+
+
WinRE Persistence - Overlord