diff --git a/backend/main.py b/backend/main.py
index 3ce196a..d145e80 100644
--- a/backend/main.py
+++ b/backend/main.py
@@ -406,7 +406,7 @@ async def serve_media(path: str, request: _Request):
raise _HE(404, "Nicht gefunden.")
return _media_response(filepath)
-APP_VER = "941" # muss mit APP_VER in app.js übereinstimmen
+APP_VER = "942" # muss mit APP_VER in app.js übereinstimmen
@app.get("/.well-known/assetlinks.json")
async def assetlinks():
diff --git a/backend/static/js/app.js b/backend/static/js/app.js
index d585465..b2802bd 100644
--- a/backend/static/js/app.js
+++ b/backend/static/js/app.js
@@ -3,7 +3,7 @@
Router, State-Management, Navigation, Initialisierung.
============================================================ */
-const APP_VER = '941'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
+const APP_VER = '942'; // ← bei jedem Deploy mit Frontend-Änderungen erhöhen
const APP_VERSION = '1.5.1'; // ← semantische Version, wird bei make release gesetzt
const IS_STAGING = location.hostname === 'staging.banyaro.app';
// Cache-Bust-Parameter nach Update-Reload sofort entfernen
diff --git a/backend/static/js/pages/admin.js b/backend/static/js/pages/admin.js
index 00a19e8..34b7ccd 100644
--- a/backend/static/js/pages/admin.js
+++ b/backend/static/js/pages/admin.js
@@ -3519,55 +3519,65 @@ window.Page_admin = (() => {
const pending = rows.filter(r => !r.fulfilled_at);
const done = rows.filter(r => r.fulfilled_at);
- const _row = (r, showBtn) => `
+ // Offene Anfragen als Cards (mobile-freundlich, Button immer sichtbar)
+ const _pendingCard = r => `
+
+
+
+
${_esc(r.name)}
+
${_esc(r.email)}
+
+ ${tierBadge(r.tier)}
+ ${r.created_at?.slice(0,10) || ''}
+
+ ${r.message ? `
+ ${_esc(r.message)}
+
` : ''}
+
+
+
+
`;
+
+ // Erledigte als kompakte Tabellenzeilen
+ const _doneRow = r => `
- ${_esc(r.name)}
+ | ${_esc(r.name)}
${_esc(r.email)} |
${tierBadge(r.tier)} |
-
- ${r.message ? _esc(r.message) : '—'} |
-
- ${r.created_at?.slice(0,10) || ''} |
-
- ${showBtn
- ? ``
- : `✓ ${r.fulfilled_at?.slice(0,10)}`}
- |
+
+ ✓ ${r.fulfilled_at?.slice(0,10) || ''} |
`;
- const thead = `
- ${['Nutzer','Tarif','Nachricht','Datum','Aktion'].map(h =>
- `| ${h} | `
- ).join('')}
`;
-
el.innerHTML = `
-