diff --git a/app.py b/app.py index 77421d1..1689a62 100644 --- a/app.py +++ b/app.py @@ -2895,12 +2895,12 @@ def public_frontend(): body { font-family:'Inter',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif; background:#E8E4DC; color:#1a1a2e; min-height:100vh; } /* Header — dark bar like SPIEL Essen */ - .site-header { background:#20228a; padding:1rem 2rem; display:flex; align-items:center; gap:1rem; position:sticky; top:0; z-index:100; box-shadow:0 2px 12px rgba(0,0,0,0.15); } - .site-logo { display:flex; align-items:center; gap:0.6rem; text-decoration:none; color:#fff; } - .site-logo .logo-icon { width:40px; height:40px; background:#20228a; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:1.3rem; } - .site-logo .logo-text { font-weight:800; font-size:1.15rem; letter-spacing:-0.01em; color:#fff; } + .site-header { background:#20228a; padding:0.75rem 1.2rem; display:flex; align-items:center; flex-wrap:wrap; gap:0.5rem; position:sticky; top:0; z-index:100; box-shadow:0 2px 12px rgba(0,0,0,0.15); } + .site-logo { display:flex; align-items:center; gap:0.5rem; text-decoration:none; color:#fff; min-width:0; flex-shrink:1; } + .site-logo .logo-icon { width:36px; height:36px; background:#20228a; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:1.3rem; flex-shrink:0; } + .site-logo .logo-text { font-weight:800; font-size:1.05rem; letter-spacing:-0.01em; color:#fff; white-space:nowrap; } .site-logo .logo-sub { font-weight:400; color:#888; font-size:0.75rem; } - .site-logo-sub { font-size:0.7rem; font-weight:500; color:rgba(255,255,255,0.7); letter-spacing:0.03em; margin-left:0.5rem; white-space:nowrap; } + .site-logo-sub { font-size:0.68rem; font-weight:500; color:rgba(255,255,255,0.7); letter-spacing:0.03em; margin-left:0.3rem; white-space:normal; word-break:break-word; } .site-header .header-right { margin-left:auto; } .site-header .header-right a { color:#aaa; text-decoration:none; font-size:0.8rem; transition:color 0.2s; } .site-header .header-right a:hover { color:#fff; } @@ -3022,7 +3022,10 @@ def public_frontend(): @media(max-width:500px) { .main-grid { column-count:1; padding:0 0.8rem; } .story-card { margin-bottom:1rem; } - .site-header { padding:0.8rem 1rem; } + .site-header { padding:0.6rem 0.8rem; gap:0.4rem; } + .site-logo-sub { font-size:0.62rem; } + .header-right { display:flex; align-items:center; gap:0.3rem; } + .header-right a { font-size:0.7rem !important; } .submit-bubble { bottom:1rem; right:5rem; } .chat-overlay { bottom:5rem; right:0.5rem; width:calc(100vw - 1rem); max-height:60vh; } .chat-bubble { bottom:1rem; right:1rem; } @@ -3031,19 +3034,20 @@ def public_frontend(): .chat-bubble { position:fixed; bottom:1.5rem; right:1.5rem; z-index:9999; width:56px; height:56px; border-radius:50%; background:#20228a; color:#fff; border:none; cursor:pointer; font-size:1.6rem; - box-shadow:0 6px 24px rgba(0,0,0,0.25); transition:transform 0.2s,box-shadow 0.2s; + box-shadow:0 6px 24px rgba(0,0,0,0.25); transition:transform 0.2s,box-shadow 0.2s,opacity 0.2s; display:flex; align-items:center; justify-content:center; } + .chat-bubble.hidden { opacity:0; pointer-events:none; } .chat-bubble:hover { transform:scale(1.08); box-shadow:0 8px 32px rgba(0,0,0,0.35); } .chat-bubble:active { transform:scale(0.95); } .chat-bubble .bubble-dot { position:absolute; top:6px; right:6px; width:12px; height:12px; background:#28a745; border-radius:50%; border:2px solid #fff; } - .chat-overlay { position:fixed; bottom:5.5rem; right:1.5rem; z-index:9998; + .chat-overlay { position:fixed; bottom:5.5rem; right:1.5rem; z-index:10001; width:380px; max-width:calc(100vw - 2rem); max-height:520px; background:#fff; border-radius:18px; box-shadow:0 12px 48px rgba(0,0,0,0.22); display:none; flex-direction:column; overflow:hidden; } .chat-overlay.open { display:flex; } - .chat-backdrop { position:fixed; inset:0; z-index:9997; background:rgba(0,0,0,0.25); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); display:none; } + .chat-backdrop { position:fixed; inset:0; z-index:10000; background:rgba(0,0,0,0.25); backdrop-filter:blur(4px); -webkit-backdrop-filter:blur(4px); display:none; } .chat-backdrop.open { display:block; } .chat-header { background:#20228a; color:#fff; padding:0.9rem 1.2rem; font-weight:700; font-size:0.9rem; display:flex; align-items:center; justify-content:space-between; } @@ -3075,12 +3079,13 @@ def public_frontend(): .submit-bubble { position:fixed; bottom:1.5rem; right:5.5rem; z-index:9999; width:56px; height:56px; border-radius:50%; background:#20228a; color:#fff; border:none; cursor:pointer; font-size:1.8rem; font-weight:300; line-height:1; - box-shadow:0 6px 24px rgba(0,0,0,0.25); transition:transform 0.2s,box-shadow 0.2s; + box-shadow:0 6px 24px rgba(0,0,0,0.25); transition:transform 0.2s,box-shadow 0.2s,opacity 0.2s; display:flex; align-items:center; justify-content:center; } + .submit-bubble.hidden { opacity:0; pointer-events:none; } .submit-bubble:hover { transform:scale(1.08); box-shadow:0 8px 32px rgba(0,0,0,0.35); } .submit-bubble:active { transform:scale(0.95); } - .submit-overlay { position:fixed; bottom:5.5rem; right:1.5rem; z-index:9998; + .submit-overlay { position:fixed; bottom:5.5rem; right:1.5rem; z-index:10001; width:400px; max-width:calc(100vw - 2rem); max-height:85vh; background:#fff; border-radius:18px; box-shadow:0 12px 48px rgba(0,0,0,0.22); display:none; flex-direction:column; overflow:hidden; } @@ -3257,6 +3262,7 @@ def public_frontend(): const sClose = document.getElementById('submitClose'); const sSend = document.getElementById('submitSend'); const sStatus = document.getElementById('submitStatus'); + const chatBubble = document.getElementById('chatBubble'); let sOpen = false; const sBackdrop = document.getElementById('chatBackdrop'); @@ -3265,6 +3271,9 @@ def public_frontend(): sOpen = !sOpen; sOverlay.classList.toggle('open', sOpen); if (sBackdrop) sBackdrop.classList.toggle('open', sOpen); + // Bubbles verstecken wenn Overlay offen + if (sBubble) sBubble.classList.toggle('hidden', sOpen); + if (chatBubble) chatBubble.classList.toggle('hidden', sOpen); const chatO = document.getElementById('chatOverlay'); if (chatO) chatO.classList.remove('open'); }); @@ -3272,6 +3281,8 @@ def public_frontend(): sOpen = false; sOverlay.classList.remove('open'); if (sBackdrop) sBackdrop.classList.remove('open'); + if (sBubble) sBubble.classList.remove('hidden'); + if (chatBubble) chatBubble.classList.remove('hidden'); }); sSend.addEventListener('click', async () => { @@ -3441,11 +3452,15 @@ def public_frontend(): let open = false; const backdrop = document.getElementById('chatBackdrop'); + const sBubble = document.getElementById('submitBubble'); function toggle() { open = !open; overlay.classList.toggle('open', open); if (backdrop) backdrop.classList.toggle('open', open); + // Bubbles verstecken wenn Overlay offen, damit man nicht versehentlich darunter klickt + if (bubble) bubble.classList.toggle('hidden', open); + if (sBubble) sBubble.classList.toggle('hidden', open); if (open) setTimeout(() => input.focus(), 100); } @@ -3454,6 +3469,8 @@ def public_frontend(): open = false; overlay.classList.remove('open'); if (backdrop) backdrop.classList.remove('open'); + if (bubble) bubble.classList.remove('hidden'); + if (sBubble) sBubble.classList.remove('hidden'); }); // Click backdrop to close either overlay @@ -3462,6 +3479,8 @@ def public_frontend(): open = false; overlay.classList.remove('open'); backdrop.classList.remove('open'); + if (bubble) bubble.classList.remove('hidden'); + if (sBubble) sBubble.classList.remove('hidden'); // Also close submit overlay if open const sO = document.getElementById('submitOverlay'); if (sO) { sO.classList.remove('open'); }