diff --git a/frontend/index.html b/frontend/index.html
index 380c08c..5e8af46 100644
--- a/frontend/index.html
+++ b/frontend/index.html
@@ -7,7 +7,13 @@
Cluedo Sheet
-
+
+
diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx
index 84b88dd..8d4e48e 100644
--- a/frontend/src/App.jsx
+++ b/frontend/src/App.jsx
@@ -342,6 +342,14 @@ export default function App() {
setThemeKey(key);
applyTheme(key);
+ // ✅ sofort für nächsten Start merken (verhindert Flash)
+ try {
+ localStorage.setItem(`hpTheme:${(me?.email || "guest").toLowerCase()}`, key);
+ localStorage.setItem("hpTheme:guest", key); // fallback, falls noch nicht eingeloggt
+ } catch {
+ // ignore
+ }
+
try {
await api("/auth/theme", {
method: "PATCH",
@@ -351,6 +359,7 @@ export default function App() {
// theme locally already applied; ignore backend error
}
};
+
// ===== Stats (always fresh on open) =====
const openStatsModal = async () => {
diff --git a/frontend/src/main.jsx b/frontend/src/main.jsx
index 19def02..9bd8180 100644
--- a/frontend/src/main.jsx
+++ b/frontend/src/main.jsx
@@ -1,9 +1,17 @@
import React from "react";
-import { createRoot } from "react-dom/client";
+import ReactDOM from "react-dom/client";
import App from "./App.jsx";
+import { applyTheme, DEFAULT_THEME_KEY } from "./styles/themes";
import { registerSW } from "virtual:pwa-register";
-createRoot(document.getElementById("root")).render();
+try {
+ const key = localStorage.getItem("hpTheme:guest") || DEFAULT_THEME_KEY;
+ applyTheme(key);
+} catch {
+ applyTheme(DEFAULT_THEME_KEY);
+}
+
+ReactDOM.createRoot(document.getElementById("root")).render();
registerSW({ immediate: true });
const updateSW = registerSW({
immediate: true,