diff --git a/frontend/src/App.tsx b/frontend/src/App.tsx
index 5dc1d0c..cccc42e 100644
--- a/frontend/src/App.tsx
+++ b/frontend/src/App.tsx
@@ -912,8 +912,7 @@ export default function App() {
{/* Re-binds to the active page's scroll container on navigation (page or channel change). */}
- {/* DEV-ONLY live appearance tuner (localhost-gated; self-returns null on prod). Delete when
- the glass-consistency epic bakes the final values into index.css. */}
+ {/* Local-only live appearance tuner (renders only on localhost; null everywhere else). */}
);
diff --git a/frontend/src/components/GlassTuner.tsx b/frontend/src/components/GlassTuner.tsx
index eb59791..f922025 100644
--- a/frontend/src/components/GlassTuner.tsx
+++ b/frontend/src/components/GlassTuner.tsx
@@ -1,13 +1,12 @@
import { useEffect, useMemo, useState } from "react";
/**
- * DEV-ONLY live appearance tuner. Mounted at the App root so it stays reachable on every page.
- * It writes the glass CSS custom properties (index.css `:root`) inline on for instant,
- * build-free feedback, and persists to localStorage so tweaks survive an F5 during UAT.
+ * Local-only live appearance tuner. Mounted at the app root so it's reachable on every page; it
+ * writes the glass CSS custom properties (index.css `:root`) inline on the document element for
+ * instant, build-free feedback, and persists to localStorage.
*
- * Gated to localhost/127.0.0.1 so it renders on the :8080 UAT build and :5173 HMR but NEVER on
- * prod (siftlode.b1fr0st.eu). It is a scaffold for the glass-consistency epic: dial in values
- * here, hit "Copy CSS", hand them over to bake into index.css — then this component is deleted.
+ * Only active on localhost, so it never appears in a hosted build. A scratch tool for dialling in
+ * the surface values — "Copy CSS" exports them to paste into index.css.
*/
const DEV_TUNER =
typeof window !== "undefined" && /^(localhost|127\.0\.0\.1)$/.test(window.location.hostname);
diff --git a/frontend/src/index.css b/frontend/src/index.css
index f6f7381..233e523 100644
--- a/frontend/src/index.css
+++ b/frontend/src/index.css
@@ -6,10 +6,10 @@
--font-scale: 1.06;
/* ===== Glass tunables — every value that materially drives the look lives here so it can be
- tuned in ONE place (and live-driven by the dev GlassTuner during UAT). ===== */
+ tuned in ONE place. ===== */
/* GLOBAL baseline = "Adaptive": solid-enough dark glass that reads well on content-less chrome
(nav/header/dialogs/filters/settings — where there's nothing behind the glass to refract).
- Baked from UAT 2026-07-12. Rich-backdrop surfaces override these via `.glass-media` below. */
+ Rich-backdrop surfaces override these via `.glass-media` below. */
--glass-blur: 20px; /* backdrop blur radius */
--glass-saturate: 1.8; /* backdrop saturation */
--glass-dark-bright: 1.25; /* extra brightness lift applied to .glass/.glass-menu in dark mode only */
@@ -27,7 +27,7 @@
--bg-fade: 60%;
}
-/* ===== "Glass over image" — the translucent tier (UAT-tuned 2026-07-12). Applies whenever a
+/* ===== "Glass over image" — the translucent tier. Applies whenever a
real image sits behind the surfaces: app-wide when the per-scheme background image is on
(`html[data-backdrop="on"]`), and on the Plex art-backed detail views (`.glass-media`, which
have their own art backdrop even when the global image is off). When there's nothing behind the