diff --git a/src/components/moderation/ModerationMenu.tsx b/src/components/moderation/ModerationMenu.tsx
index ce9dc97e..21eaea9d 100644
--- a/src/components/moderation/ModerationMenu.tsx
+++ b/src/components/moderation/ModerationMenu.tsx
@@ -552,7 +552,14 @@ export function ModerationMenu({ className, ...rest }: ModerationMenuProps) {
{rest.surface === 'campaign' && (
- <>
+ // The campaign card wraps everything in a . Radix dialogs portal
+ // their DOM out of the card, but React synthetic events still bubble
+ // through the component tree to the Link — so clicks inside the dialog
+ // would navigate to the campaign page. Stop propagation here.
+ e.stopPropagation()}
+ onPointerDown={(e) => e.stopPropagation()}
+ >
- >
+
)}
>
);