diff --git a/frontend/public/bg/marauders-map.jpg b/frontend/public/bg/marauders-map-blur.jpg similarity index 100% rename from frontend/public/bg/marauders-map.jpg rename to frontend/public/bg/marauders-map-blur.jpg diff --git a/frontend/src/App.jsx b/frontend/src/App.jsx index d53202c..c25c16a 100644 --- a/frontend/src/App.jsx +++ b/frontend/src/App.jsx @@ -90,7 +90,10 @@ function AdminPanel() { {open && (
-
e.stopPropagation()}> +
e.stopPropagation()} + >
Neuen User anlegen @@ -119,14 +122,25 @@ function AdminPanel() { type="password" style={styles.input} /> - setRole(e.target.value)} + style={styles.input} + > {msg &&
{msg}
} -
+
-
2) i / m / s Button (Notiz)
+
+ 2) i / m / s Button (Notiz) +
- Rechts pro Zeile gibt es einen Button, der durch diese Werte rotiert: + Rechts pro Zeile gibt es einen Button, der durch diese Werte + rotiert:
i -
i = „Ich habe diese Geheimkarte“
+
+ i = „Ich habe diese Geheimkarte“ +
m -
m = „Geheimkarte aus dem mittleren Deck“
+
+ m = „Geheimkarte aus dem mittleren Deck“ +
s -
s = „Ein anderer Spieler hat diese Karte“
+
+ s = „Ein anderer Spieler hat diese Karte“ +
-
= keine Notiz
+
+ = keine Notiz +
@@ -598,7 +660,6 @@ export default function App() {
)} - {/* Sheet */}
{sections.map((sec) => (
@@ -614,14 +675,18 @@ export default function App() { style={{ ...styles.row, background: getRowBg(e.status), - animation: pulseId === e.entry_id ? "rowPulse 220ms ease-out" : "none", + animation: + pulseId === e.entry_id + ? "rowPulse 220ms ease-out" + : "none", }} >
cycleStatus(e)} style={{ ...styles.name, - textDecoration: e.status === 1 ? "line-through" : "none", + textDecoration: + e.status === 1 ? "line-through" : "none", color: getNameColor(e.status), opacity: e.status === 1 ? 0.75 : 1, }} @@ -670,6 +735,8 @@ const styles = { margin: 0, padding: 0, background: "transparent", + position: "relative", + zIndex: 1, }, shell: { @@ -697,7 +764,8 @@ const styles = { overflow: "hidden", border: "1px solid rgba(0,0,0,0.16)", background: "rgba(255,255,255,0.26)", - boxShadow: "0 18px 40px rgba(0,0,0,0.16), inset 0 1px 0 rgba(255,255,255,0.55)", + boxShadow: + "0 18px 40px rgba(0,0,0,0.16), inset 0 1px 0 rgba(255,255,255,0.55)", }, cardBody: { @@ -790,7 +858,8 @@ const styles = { padding: "10px 12px", borderRadius: 12, border: "1px solid rgba(0,0,0,0.22)", - background: "linear-gradient(180deg, rgba(246,226,179,0.95), rgba(202,164,90,0.95))", + background: + "linear-gradient(180deg, rgba(246,226,179,0.95), rgba(202,164,90,0.95))", fontWeight: 1000, cursor: "pointer", boxShadow: "inset 0 1px 0 rgba(255,255,255,0.55)", @@ -806,7 +875,6 @@ const styles = { boxShadow: "inset 0 1px 0 rgba(255,255,255,0.55)", }, - // Admin adminWrap: { marginTop: 14, padding: 12, @@ -835,7 +903,6 @@ const styles = { border: "1px solid rgba(0,0,0,0.08)", }, - // Modal modalOverlay: { position: "fixed", inset: 0, @@ -852,7 +919,8 @@ const styles = { maxWidth: 560, borderRadius: 18, border: "1px solid rgba(0,0,0,0.25)", - background: "linear-gradient(180deg, rgba(255,255,255,0.72), rgba(255,255,255,0.42))", + background: + "linear-gradient(180deg, rgba(255,255,255,0.72), rgba(255,255,255,0.42))", boxShadow: "0 18px 50px rgba(0,0,0,0.35)", padding: 14, backdropFilter: "blur(6px)", @@ -876,7 +944,6 @@ const styles = { textAlign: "center", }, - // Help helpBody: { marginTop: 10, paddingTop: 4, @@ -933,7 +1000,6 @@ const styles = { background: "rgba(0,0,0,0.12)", }, - // Login loginPage: { minHeight: "100dvh", display: "flex", @@ -943,6 +1009,7 @@ const styles = { overflow: "hidden", padding: 20, background: "transparent", + zIndex: 1, }, loginCard: { width: "100%", @@ -990,7 +1057,8 @@ const styles = { padding: "12px 14px", borderRadius: 14, border: "1px solid rgba(0,0,0,0.26)", - background: "linear-gradient(180deg, rgba(246,226,179,0.95), rgba(202,164,90,0.95))", + background: + "linear-gradient(180deg, rgba(246,226,179,0.95), rgba(202,164,90,0.95))", fontWeight: 1000, fontSize: 16, cursor: "pointer", @@ -1046,26 +1114,32 @@ const styles = { padding: 0, }, - // Background + // ✅ Background (FIXED) — unter Content (zIndex -1) und ohne blur() Filter bgFixed: { position: "fixed", inset: 0, - zIndex: 0, + zIndex: -1, pointerEvents: "none", }, + // ✅ WICHTIG: Nutze ein vorab geblurrtes Bild, sonst kriegst du wieder Nähte. + // Lege ab: /public/bg/marauders-map-blur.jpg bgMap: { position: "absolute", inset: 0, - // >>> HIER dein Bildpfad (public/...) - backgroundImage: 'url("/marauders-map.jpg")', + backgroundImage: 'url("/bg/marauders-map-blur.jpg")', backgroundSize: "cover", backgroundPosition: "center", backgroundRepeat: "no-repeat", - // Map weicher + “unter Pergament” - filter: "blur(7px) saturate(0.9) contrast(1.05)", - transform: "scale(1.05)", // verhindert Ränder durch Blur + // KEIN blur() hier! + filter: "saturate(0.95) contrast(1.05) brightness(0.98)", + + // GPU / Seam-Fix + transform: "translate3d(0,0,0) scale(1.04)", + willChange: "transform", + backfaceVisibility: "hidden", + opacity: 0.95, }, @@ -1074,17 +1148,16 @@ const styles = { inset: 0, background: ` radial-gradient(circle at 50% 45%, - rgba(0,0,0,0.08) 0%, - rgba(0,0,0,0.18) 48%, - rgba(0,0,0,0.55) 78%, - rgba(0,0,0,0.72) 100% + rgba(0,0,0,0.10) 0%, + rgba(0,0,0,0.22) 55%, + rgba(0,0,0,0.55) 82%, + rgba(0,0,0,0.70) 100% ), linear-gradient(180deg, - rgba(245, 226, 185, 0.42), - rgba(214, 180, 120, 0.32) + rgba(245, 226, 185, 0.38), + rgba(214, 180, 120, 0.28) ) `, mixBlendMode: "multiply", }, - };