- Logo (993x217) als Base64 in public_frontend() und public_detail()
- Ersetzt 🎲 BSN Community Text-Logo durch Brettspiel News Bild-Logo
- PROJEKT-BRIEFING.md: Vollständige Projektdokumentation für AGB/Datenschutz
- Architektur, Datenflüsse, DSGVO-Relevanz, Feature-Stand
- /api/submit gibt jetzt submission_id + delete_hint zurück
- Frontend zeigt nach erfolgreichem Submit eine Erfolgsmeldung mit ID
- '📋 Kopieren'-Button speichert die ID in die Zwischenablage
- Hinweis, dass die ID für spätere Löschung notiert werden soll
- Overlay schließt nach 8s (statt 2.5s) — Zeit zum Kopieren
- Text-only cards now use .story-time-overlay like media cards
- Overlay positioned top-right within .card-content (position:relative)
- Cards wrapped in <a> link → klick öffnet /beitrag/ID
- .card-link styles mit hover-Effekt (gleicher Lift wie .story-card)
- left:auto für Text-Overlay (resetet left:8px der Basis-Regel)
- Runde Buttons (68×68px, border-radius:50%) statt rechteckig
- Monochrome SVG-Icons in BSN-Blau (#20228a) statt bunter Emojis
- Alle drei gleich groß, zentriert in der Reihe
- Datei-Vorschau-Balken unter den Buttons:
'🖼️ foto.jpg (2.3 MB) — wird mitgesendet'
erscheint sofort nach Auswahl/Aufnahme, verschwindet beim Absenden
- onchange-Listener auf allen 4 Inputs
- Drei große Touch-Buttons (min 64px, flex-row) statt einem Dateifeld
- capture='environment' für Foto/Video → Kamera-App öffnet direkt
- capture (ohne Wert) für Audio → Sprachrekorder öffnet direkt
- 'Choose File' als Galerie-Fallback für bestehende Dateien
- Overlay max-height erhöht (85vh Desktop, 90vh Mobile)
damit alle Buttons ohne Scrollen sichtbar sind
- JavaScript prüft alle 4 Inputs auf Dateien
- Zeit („heute 12:27 Uhr") wandert aus card-content nach oben
über das Bild/Thumbnail als absolutes Overlay
- Milchglas-Effekt: rgba(255,255,255,0.28) + backdrop-filter blur(10px)
- Rote Schrift (#dc3545) für gute Lesbarkeit auf hellem Grund
- Abgerundete Ecken (10px), dezenter Schatten
- Spart Platz in der Karte, sieht edler aus
- Text-only-Karten behalten die Zeit inline im card-content
Der erste <script>-Block (Submit-IIFE) wurde nie mit </script>
geschlossen. Das zweite <script> wurde als Teil des ersten JS-Blocks
interpretiert → Syntax-Fehler → addEventListener nie registriert.