diff --git a/web/src/sections/Library/LibraryGrid.tsx b/web/src/sections/Library/LibraryGrid.tsx
index 89e31d97..f3584799 100644
--- a/web/src/sections/Library/LibraryGrid.tsx
+++ b/web/src/sections/Library/LibraryGrid.tsx
@@ -61,7 +61,13 @@ export const LibraryGrid: FC<{
>
{games.length === 0 ? (
-
+ {/* `flush`, not a bare `p-8`: the default `sm:pt-0` would survive the override
+ (tailwind-merge only resolves conflicts within a variant) and eat the top
+ inset at ≥640px — see the CardContent doc comment. */}
+
{m.library_empty()}
diff --git a/web/src/sections/Stats/Recordings.tsx b/web/src/sections/Stats/Recordings.tsx
index d96852b5..7f26b070 100644
--- a/web/src/sections/Stats/Recordings.tsx
+++ b/web/src/sections/Stats/Recordings.tsx
@@ -110,7 +110,10 @@ export const RecordingsCard: FC<{
refetch={recordings.refetch}
>
{rows.length === 0 ? (
-
+
{m.stats_recordings_empty()}
) : (
diff --git a/web/src/sections/Store/Browse.tsx b/web/src/sections/Store/Browse.tsx
index 43554e51..2c72edfa 100644
--- a/web/src/sections/Store/Browse.tsx
+++ b/web/src/sections/Store/Browse.tsx
@@ -93,7 +93,10 @@ export const BrowseTab: FC<{
>
{shown.length === 0 ? (
-
+
{entries.length === 0 ? m.store_empty() : m.store_no_match()}