diff --git a/.planning/research/v1427-r3c-mobile-settings-admin.md b/.planning/research/v1427-r3c-mobile-settings-admin.md
new file mode 100644
index 000000000..db31260c8
--- /dev/null
+++ b/.planning/research/v1427-r3c-mobile-settings-admin.md
@@ -0,0 +1,198 @@
+---
+file: .planning/research/v1427-r3c-mobile-settings-admin.md
+purpose: Mobile capability audit — Settings + Admin surface
+created: 2026-05-15
+auditor: MA6
+---
+
+# Mobile audit — Settings and Admin
+
+## Summary
+
+Reviewed 23 settings components and 23 admin components across `/settings/[section]` and `/admin/[section]`. The two shells (`settings-shell.tsx`, `admin-shell.tsx`) already carry the mobile chip strip with 44px tap floors, and several wide tables (`account` passkeys, `admin/users`, `admin/api-tokens`) already ship `md:hidden` mobile card-list fallbacks. The remaining mobile-hostile patterns are concentrated in (a) the user-facing `/settings/api` token tables, which still force horizontal scroll, (b) the admin tables that never received the card-list treatment (`login-overview`, `feedback`, `backups`, `app-logs`, `ai-quality`, `coach-feedback`), and (c) input fields that universally lack `inputMode` / `enterKeyHint` mobile-keyboard hints. 19 findings; 0 Critical, 7 High, 7 Medium, 5 Low.
+
+## Findings
+
+### F1 — `/settings/api` tables force horizontal scroll on mobile
+- Severity: High
+- Axis: visual
+- File: `src/components/settings/api-section.tsx:73-104,239-345,362-403`
+- Symptom: Three tables (endpoint docs, active tokens, revoked tokens) carry hard `min-w-[760px]` / `min-w-[860px]` widths with no `md:hidden` card-list fallback. At 320-414 px the user has to swipe horizontally to see the "Last used", "Created", and "Revoke" cells; the Trash2 revoke button sits in the rightmost column and is invisible on first paint.
+- Evidence: grep — `api-section.tsx:74 className="w-full min-w-[760px] text-xs md:min-w-0"`; `:240 min-w-[860px]`; `:363 min-w-[760px]`. No `md:hidden` mobile list, unlike the admin `api-token-overview` and `user-management` sections which already adopted the dual-table pattern.
+- Recommended fix: Mirror `admin/api-token-overview-section.tsx`'s pattern — keep the `hidden md:block` desktop table, add a `md:hidden` card list (name + permissions + status badge + last-used line + revoke icon button per card).
+- Effort: M
+
+### F2 — Admin tables without card-list fallback
+- Severity: High
+- Axis: visual
+- File: `src/components/admin/login-overview-section.tsx:371`, `feedback-inbox-section.tsx:123`, `backups-section.tsx:471`, `app-log-preview-section.tsx:207`, `ai-quality-section.tsx:134`, `coach-feedback-section.tsx:119`
+- Symptom: Six admin tables sit inside `overflow-x-auto` with no mobile card-list. `login-overview` has 7 columns (status / user / action / provider / IP / location / timestamp), `feedback` 5, `backups` 5, `app-logs` 5, `ai-quality` 7, `coach-feedback` 7. At 393 px the user must horizontally scroll to see anything past the second column. The pattern was already adopted in three other admin tables (`users`, `api-tokens`, `account/passkeys`) — it's a symmetry gap.
+- Evidence: grep `overflow-x-auto`+`
` finds 6 admin sections without the matching `md:hidden
` block. `login-overview-section.tsx:371-477` renders the full table verbatim with no breakpoint switch. `ai-quality` and `coach-feedback` were just added in v1.4.23+ — newer tables, same mobile-hostile shape.
+- Recommended fix: Per-table mobile card list. For `login-overview`: per-entry card with status icon + user + action + timestamp; collapsed IP/provider/location under an expander. For `feedback`: subject + category badge + user + date; click opens the existing detail dialog. For `backups`: per-row card with user + size + age + Download/Restore buttons. `app-logs`, `ai-quality`, `coach-feedback` can share the same skeleton.
+- Effort: L
+
+### F3 — Carrier chip stacks under provider in narrow column, no truncation
+- Severity: Medium
+- Axis: visual
+- File: `src/components/admin/login-overview-section.tsx:437-463`
+- Symptom: B3 just landed the carrier chip as a `block` element underneath the provider icon+label. The wrapper `
` has no `min-w-0`, so on a 320 px viewport (which forces horizontal scroll anyway per F2) the carrier label `Telekom`/`Vodafone` adds a second line to the row, increasing row height by ~14 px and pushing the table taller than expected. When the eventual mobile card-list lands per F2, the carrier chip needs to be planned as a sibling chip, not a second line, so the card stays compact.
+- Evidence: `login-overview-section.tsx:455-462`: `{carrierShortLabel(entry.carrier)}`. The provider cell already has 3-4 lines worth of content; adding a fourth pushes row height past the 44 px tap-comfort floor.
+- Recommended fix: When implementing the F2 card-list, render carrier as an inline secondary chip next to the provider chip (gap-1, both `text-[10px]`) instead of a stacked block. On desktop, the existing block layout is fine because the row already has 7 columns of horizontal real estate.
+- Effort: S (folds into F2 patch)
+
+### F4 — CSV-export and pagination buttons hidden behind table scroll on mobile
+- Severity: High
+- Axis: logic
+- File: `src/components/admin/login-overview-section.tsx:330-339,478-509`
+- Symptom: The Export-CSV button sits inside the same `overflow-x-auto` wrapper as the table, but the toolbar row (`mt-3 flex flex-wrap items-center justify-between`) only renders after the empty-state check — so on a mobile viewport the user scrolls horizontally through 7 columns to reach the prev/next pagination at the table's right edge. The CSV download itself works (it's above the table), but the per-page selector and pagination disappear off-screen.
+- Evidence: `login-overview-section.tsx:478-509`: pagination lives inside the same `overflow-x-auto` wrapper as the 7-column table. At 393 px the wrapper paints a scrollbar; the pagination row is pushed to the wrapper's intrinsic width.
+- Recommended fix: Move the `mt-3 flex flex-wrap` pagination row out of the `overflow-x-auto` wrapper so it always renders at viewport width. Same fix applies to `app-log-preview-section.tsx:254-261`.
+- Effort: S
+
+### F5 — Native `