diff --git a/apps/backoffice/app/components/MetadataSearchModal.tsx b/apps/backoffice/app/components/MetadataSearchModal.tsx
index e329d4e..ad9a5d1 100644
--- a/apps/backoffice/app/components/MetadataSearchModal.tsx
+++ b/apps/backoffice/app/components/MetadataSearchModal.tsx
@@ -683,13 +683,6 @@ export function MetadataSearchModal({
{existingLink && existingLink.status === "approved" ? t("metadata.metadataButton") : t("metadata.searchButton")}
- {/* Inline badge when linked */}
- {existingLink && existingLink.status === "approved" && initialMissing && initialMissing.missing_count > 0 && (
-
- {t("series.missingCount", { count: initialMissing.missing_count, plural: initialMissing.missing_count !== 1 ? "s" : "" })}
-
- )}
-
{existingLink && existingLink.status === "approved" && (
diff --git a/apps/backoffice/app/libraries/[id]/series/[name]/page.tsx b/apps/backoffice/app/libraries/[id]/series/[name]/page.tsx
index 5c0a0a0..5a37ce5 100644
--- a/apps/backoffice/app/libraries/[id]/series/[name]/page.tsx
+++ b/apps/backoffice/app/libraries/[id]/series/[name]/page.tsx
@@ -142,7 +142,7 @@ export default async function SeriesDetailPage({
{t("series.readCount", { read: String(booksReadCount), total: String(booksPage.total), plural: booksPage.total !== 1 ? "s" : "" })}
- {/* Progress bar */}
+ {/* Reading progress bar */}
+
+ {/* Collection progress bar (owned / expected) */}
+ {missingData && missingData.total_external > 0 && (
+ <>
+
+
+ {booksPage.total}/{missingData.total_external} — {t("series.missingCount", { count: missingData.missing_count, plural: missingData.missing_count !== 1 ? "s" : "" })}
+
+
+ >
+ )}
@@ -172,16 +188,16 @@ export default async function SeriesDetailPage({
currentStatus={seriesMeta?.status ?? null}
currentLockedFields={seriesMeta?.locked_fields ?? {}}
/>
+
-