diff --git a/web/src/pages/bot-profile.ts b/web/src/pages/bot-profile.ts
index 81e75b7..7dd93a0 100644
--- a/web/src/pages/bot-profile.ts
+++ b/web/src/pages/bot-profile.ts
@@ -180,12 +180,14 @@ function renderMatchItem(match: BotProfile['recent_matches'][number]): string {
const opponent = match.participants.find(p => p.bot_id !== match.winner_id);
const won = match.participants.some(p => p.won);
const resultClass = won ? 'match-won' : 'match-lost';
+ const enrichedBadge = match.enriched ? `Narrated` : '';
return `
${won ? 'W' : 'L'}
${opponent ? escapeHtml(opponent.name) : 'Unknown'}
${match.participants.map(p => p.score).join(' - ')}
+ ${enrichedBadge}
Watch
`;
diff --git a/web/src/styles/components.css b/web/src/styles/components.css
index 7a06a42..70fb5d4 100644
--- a/web/src/styles/components.css
+++ b/web/src/styles/components.css
@@ -166,6 +166,19 @@ tbody tr:hover {
.badge.error { background-color: rgba(239, 68, 68, 0.2); color: var(--error); }
.badge.info { background-color: rgba(59, 130, 246, 0.2); color: var(--accent); }
+/* Enriched replay badge (ยง13.3) */
+.enriched-badge {
+ display: inline-flex;
+ align-items: center;
+ padding: 2px var(--space-sm);
+ font-size: 0.7rem;
+ font-weight: 500;
+ border-radius: var(--radius-sm);
+ white-space: nowrap;
+ background-color: rgba(236, 72, 153, 0.2);
+ color: #ec4899;
+}
+
/* Loading Spinner */
.spinner {
display: inline-block;