@@ -158,6 +174,10 @@ const SuccessStories = () => {
src={story.logo}
alt={story.org}
className='size-[60px] rounded-full bg-white object-contain p-1'
+ width={60}
+ height={60}
+ loading='lazy'
+ decoding='async'
/>
{story.org}
diff --git a/components/shadcn-studio/blocks/use-cases/use-cases-grid.tsx b/components/shadcn-studio/blocks/use-cases/use-cases-grid.tsx
index d540d34..865c5b3 100644
--- a/components/shadcn-studio/blocks/use-cases/use-cases-grid.tsx
+++ b/components/shadcn-studio/blocks/use-cases/use-cases-grid.tsx
@@ -208,6 +208,10 @@ const UseCasesGrid = () => {
src={logo.src}
alt={logo.alt}
className='h-6 w-auto max-w-[80px] object-contain opacity-70 grayscale transition-all duration-200 group-hover:opacity-100 group-hover:grayscale-0'
+ width={80}
+ height={24}
+ loading='lazy'
+ decoding='async'
/>
))}
diff --git a/components/ui/youtube-facade.tsx b/components/ui/youtube-facade.tsx
new file mode 100644
index 0000000..51390f3
--- /dev/null
+++ b/components/ui/youtube-facade.tsx
@@ -0,0 +1,74 @@
+import { PlayCircleIcon } from 'lucide-react'
+import { useState } from 'react'
+import { useTranslation } from 'react-i18next'
+
+interface YoutubeFacadeProps {
+ videoId: string
+ posterUrl: string
+ title: string
+ /** Extra CSS classes for the outer wrapper */
+ className?: string
+ /** autoplay=1 is passed to the iframe src when the facade activates (recommended) */
+ autoplay?: boolean
+}
+
+/**
+ * Builds a youtube-nocookie embed URL for the YouTube facade.
+ */
+export function buildYoutubeEmbedSrc(videoId: string, autoplay = true) {
+ return `https://www.youtube-nocookie.com/embed/${videoId}?rel=0&modestbranding=1${autoplay ? '&autoplay=1' : ''}`
+}
+
+/**
+ * A lightweight YouTube facade.
+ * Renders a poster image + play button on initial load.
+ * Swaps to a real