diff --git a/docs/CURRENT-STATE.md b/docs/CURRENT-STATE.md
index b22e9618b..f07cf2042 100644
--- a/docs/CURRENT-STATE.md
+++ b/docs/CURRENT-STATE.md
@@ -236,7 +236,9 @@ restoration and both Scope presentations. `QA_SCREENSHOT_DIR` saves screenshots.
Display > HUD > Layout offers Tactical, Minimal and Cyber; the `set_hud` voice
action accepts the same three. The Operator layout is retired. Share links
keep its enum code so older links still parse, and a link, scene or saved state
-that names Operator restores the default Tactical layout.
+that names Operator restores the default Tactical layout. Operator was the
+only layout that showed the HUD's top banner bar, so its markup and styles are
+removed too.
## Cyber HUD — September 30, 2026
diff --git a/scripts/qa-scope-hud.mjs b/scripts/qa-scope-hud.mjs
index 38444ca18..1607b2631 100644
--- a/scripts/qa-scope-hud.mjs
+++ b/scripts/qa-scope-hud.mjs
@@ -564,7 +564,7 @@ try {
);
});
const broadBackings = [
- ...hud.querySelectorAll('.hud-corner, .hud-top-bar, .hud-bottom-bar'),
+ ...hud.querySelectorAll('.hud-corner, .hud-bottom-bar'),
].filter(
(el) =>
el.offsetWidth > 0 &&
diff --git a/src/hud.js b/src/hud.js
index ce432a03f..198d34c7f 100644
--- a/src/hud.js
+++ b/src/hud.js
@@ -288,12 +288,6 @@ export class IntelHUD {
this._el.innerHTML = `
┌
diff --git a/src/overlays/worldOverlay.js b/src/overlays/worldOverlay.js
index ccf3cbd59..1fcfdd8dc 100644
--- a/src/overlays/worldOverlay.js
+++ b/src/overlays/worldOverlay.js
@@ -114,7 +114,6 @@ export const WORLD_OVERLAY_OCCLUDER_SELECTORS = Object.freeze([
'.hud-top-right',
'.hud-bottom-left',
'.hud-bottom-right',
- '.hud-top-bar',
'.hud-bottom-bar',
'#space-mission-panel',
'#space-mission-panel-host',
diff --git a/src/ui/cyberTheme.test.mjs b/src/ui/cyberTheme.test.mjs
index b75874390..266942a05 100644
--- a/src/ui/cyberTheme.test.mjs
+++ b/src/ui/cyberTheme.test.mjs
@@ -717,10 +717,7 @@ test('the Display selector, voice schema and final stylesheet expose Cyber', ()
assert.match(cyberStyles, /\.hud-top-left/);
assert.match(cyberStyles, /transparent 0 min\(40vw, 52vh\)/);
assert.match(cyberStyles, /\.hud-bottom-bar \{\s*display: none;/);
- assert.match(
- cyberStyles,
- /#intel-hud\[data-variant='cyber'\] \.hud-top-bar \{\s*display: none;/,
- );
+ assert.doesNotMatch(cyberStyles, /\.hud-top-bar/);
// Cyber shares the measured rail/credit keep-out rather than overriding it.
assert.doesNotMatch(
cyberStyles,
diff --git a/src/ui/panelLayoutController.js b/src/ui/panelLayoutController.js
index 25b4b3910..0c2a2ad3a 100644
--- a/src/ui/panelLayoutController.js
+++ b/src/ui/panelLayoutController.js
@@ -20,7 +20,6 @@ const LEFT_STACK_OBSTACLE_SELECTOR = [
'#intel-hud .hud-top-right',
'#intel-hud .hud-bottom-left',
'#intel-hud .hud-bottom-right',
- '#intel-hud .hud-top-bar',
'#intel-hud .hud-bottom-bar',
'#intel-hud .hud-left-edge',
'#intel-hud .hud-right-edge',
@@ -50,7 +49,6 @@ const RIGHT_STACK_OBSTACLE_SELECTOR = [
'#intel-hud .hud-top-right',
'#intel-hud .hud-bottom-left',
'#intel-hud .hud-bottom-right',
- '#intel-hud .hud-top-bar',
'#intel-hud .hud-bottom-bar',
'#intel-hud .hud-left-edge',
'#intel-hud .hud-right-edge',
diff --git a/src/ui/styles/cyber.css b/src/ui/styles/cyber.css
index e25bbae2d..d893b6cc7 100644
--- a/src/ui/styles/cyber.css
+++ b/src/ui/styles/cyber.css
@@ -1558,10 +1558,6 @@
clip-path: polygon(12px 0, 100% 0, calc(100% - 12px) 100%, 0 100%);
}
-#intel-hud[data-variant='cyber'] .hud-top-bar {
- display: none;
-}
-
/* Cyber keeps the useful style and locality readouts, not fictional IDs. */
#intel-hud[data-variant='cyber'] .hud-top-left .hud-classification,
#intel-hud[data-variant='cyber'] .hud-top-left .hud-system {
@@ -1861,7 +1857,6 @@
background-size: 78px 78px;
}
- #intel-hud[data-variant='cyber'] .hud-top-bar,
#intel-hud[data-variant='cyber'] .hud-bottom-bar {
display: none;
}
diff --git a/src/ui/styles/mobile-shell.css b/src/ui/styles/mobile-shell.css
index aecfdf8d4..a406b8f3b 100644
--- a/src/ui/styles/mobile-shell.css
+++ b/src/ui/styles/mobile-shell.css
@@ -107,7 +107,6 @@ body.mobile-shell #top-center-actions {
/* ── HUD: one compact readout under the top bar ────────────────────────── */
body.mobile-shell #intel-hud .hud-edge,
body.mobile-shell #intel-hud .hud-corner,
-body.mobile-shell #intel-hud .hud-top-bar,
body.mobile-shell #intel-hud .hud-bottom-bar {
display: none;
}
diff --git a/src/ui/styles/overlays.css b/src/ui/styles/overlays.css
index f406b1294..85aaafa06 100644
--- a/src/ui/styles/overlays.css
+++ b/src/ui/styles/overlays.css
@@ -124,7 +124,6 @@
line-height: 1.6;
}
-.hud-top-bar,
.hud-bottom-bar {
display: none;
position: absolute;
@@ -141,24 +140,11 @@
pointer-events: none;
}
-.hud-top-bar {
- top: 70px;
-}
-
.hud-bottom-bar {
bottom: 110px;
justify-content: center;
}
-.hud-top-bar-center {
- opacity: 0.84;
-}
-
-.hud-top-bar-left,
-.hud-top-bar-right {
- opacity: 0.6;
-}
-
/* Corner blocks */
.hud-corner {
position: absolute;
@@ -298,7 +284,6 @@
gap: 20px;
}
-#intel-hud[data-variant='tactical'] .hud-top-bar,
#intel-hud[data-variant='tactical'] .hud-bottom-bar {
display: none;
}
@@ -391,13 +376,13 @@
:root[data-scope-mask='off']
#intel-hud[data-variant='minimal']
- :is(.hud-top-bar, .hud-bottom-bar) {
+ .hud-bottom-bar {
background: transparent;
}
:root[data-scope-mask='off']
#intel-hud[data-variant='minimal']
- :is(.hud-top-bar, .hud-bottom-bar) {
+ .hud-bottom-bar {
width: fit-content;
max-width: calc(100vw - 120px);
gap: 24px;
@@ -405,7 +390,7 @@
:root[data-scope-mask='off']
#intel-hud[data-variant='minimal']
- :is(.hud-top-bar, .hud-bottom-bar)
+ .hud-bottom-bar
.hud-readout {
overflow: hidden;
white-space: nowrap;
diff --git a/src/ui/styles/responsive.css b/src/ui/styles/responsive.css
index 001c3ab3a..7a77eb665 100644
--- a/src/ui/styles/responsive.css
+++ b/src/ui/styles/responsive.css
@@ -98,18 +98,12 @@
display: none;
}
- .hud-top-bar,
.hud-bottom-bar {
width: calc(100vw - 24px);
left: 12px;
transform: none;
}
- .hud-top-bar {
- top: 54px;
- font-size: 9px;
- }
-
.hud-bottom-bar {
bottom: 90px;
font-size: 9px;