diff --git a/src/components/content/AiDisclosureBadge.tsx b/src/components/content/AiDisclosureBadge.tsx
index 411852f..f33feeb 100644
--- a/src/components/content/AiDisclosureBadge.tsx
+++ b/src/components/content/AiDisclosureBadge.tsx
@@ -30,7 +30,7 @@ export function AiDisclosureBadge({ value, className }: AiDisclosureBadgeProps)
);
}
diff --git a/src/components/feed/PostDetailDialog.tsx b/src/components/feed/PostDetailDialog.tsx
index c4d95cb..3a0b775 100644
--- a/src/components/feed/PostDetailDialog.tsx
+++ b/src/components/feed/PostDetailDialog.tsx
@@ -244,14 +244,18 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD
);
const mediaContent = post.type === "VIDEO" && post.videoPost ? (
-
+
) : images.length > 0 && (
isCarousel ? (
+
{images.map((img) => (
@@ -260,7 +264,8 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD
src={getMediaUrl(img.storageKey) ?? ""}
blurhash={img.blurhash}
alt={currentCaption ?? `${pet.name}'s post`}
- className="max-h-full max-w-full object-contain"
+ className="block max-h-full max-w-full object-contain"
+ wrapperClassName="relative block h-auto w-auto"
/>
))}
@@ -283,12 +288,16 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD
) : (
-
+
)
);
@@ -312,7 +321,6 @@ export function PostDetailDialog({ post, open, onClose, onDeleted }: PostDetailD
{/* Image column — fixed 45dvh strip on mobile, flex-1 full-height on desktop */}
{/* Right panel: desktop header + scrollable body + sticky input */}
diff --git a/src/components/stories/StoryViewer.tsx b/src/components/stories/StoryViewer.tsx
index c6ca849..89dc27d 100644
--- a/src/components/stories/StoryViewer.tsx
+++ b/src/components/stories/StoryViewer.tsx
@@ -155,21 +155,28 @@ export function StoryViewer({
))}
- {/* Story image */}
+ {/* Story image — inline-flex wrapper shrinks to the actual rendered
+ image box (not the full-screen overlay) so both the centering
+ and the badge overlay track the real image bounds. BlurImage's
+ own wrapper defaults to w-full/h-full (fine for fill-container
+ usages like feed thumbnails), so it's overridden here via
+ wrapperClassName. */}
{mediaUrl && (
-
+
)}
-
-
{/* Pet info — bottom left */}