diff --git a/.replit b/.replit
index cd990cf..0a1ce02 100644
--- a/.replit
+++ b/.replit
@@ -23,6 +23,10 @@ externalPort = 3001
localPort = 35637
externalPort = 3000
+[[ports]]
+localPort = 40943
+externalPort = 3002
+
[env]
PORT = "5000"
diff --git a/client/src/components/HeaderAd.tsx b/client/src/components/HeaderAd.tsx
index 6032bb0..25fc7a9 100644
--- a/client/src/components/HeaderAd.tsx
+++ b/client/src/components/HeaderAd.tsx
@@ -22,9 +22,9 @@ export default function HeaderAd() {
return (
- {/* Fixed Small Header Ad */}
+ {/* Desktop: Hidden on mobile, Mobile: 320x50px */}
+
+ {/* Desktop: 728x90px, Hidden on mobile */}
+
);
}
\ No newline at end of file
diff --git a/client/src/components/MobileInlineAd.tsx b/client/src/components/MobileInlineAd.tsx
new file mode 100644
index 0000000..0e1a226
--- /dev/null
+++ b/client/src/components/MobileInlineAd.tsx
@@ -0,0 +1,38 @@
+import { useEffect, useRef } from 'react';
+
+export default function MobileInlineAd() {
+ const adRef = useRef(null);
+
+ useEffect(() => {
+ const initializeAd = () => {
+ const insElement = adRef.current?.querySelector('ins');
+ if (!insElement || insElement.dataset.adsbygoogleStatus === 'done') return;
+
+ try {
+ // @ts-ignore
+ (window.adsbygoogle = window.adsbygoogle || []).push({});
+ } catch (error) {
+ console.error('Mobile Inline AdSense initialization error:', error);
+ }
+ };
+
+ // Initialize the ad immediately
+ initializeAd();
+ }, []);
+
+ return (
+
+ {/* Mobile only inline ad */}
+
+
+ );
+}
\ No newline at end of file
diff --git a/client/src/components/netflix-grid.tsx b/client/src/components/netflix-grid.tsx
index 88800b8..0222a8d 100644
--- a/client/src/components/netflix-grid.tsx
+++ b/client/src/components/netflix-grid.tsx
@@ -3,6 +3,7 @@ import { useLocation } from "wouter";
import { type Video } from "@shared/schema";
import VideoCard from "./video-card";
import BunnyVideoModal from "./bunny-video-modal";
+import MobileInlineAd from "./MobileInlineAd";
import { Button } from "@/components/ui/button";
import { ChevronLeft, ChevronRight } from "lucide-react";
@@ -422,35 +423,50 @@ function CategoryRow({ category, onVideoClick, hideScrollButtons = false }: Cate
onTouchEnd={handleTouchEnd}
>
{category.videos.map((video, index) => (
- setClickedVideoId(video.id)}
- >
- {/* Top 10 Number overlay for "Meist Angesehen" category - visible on all devices */}
- {category.title.includes("Meist Angesehen") && index < 10 && clickedVideoId !== video.id && (
-
- {(index + 1).toString()}
+ <>
+
setClickedVideoId(video.id)}
+ >
+ {/* Top 10 Number overlay for "Meist Angesehen" category - visible on all devices */}
+ {category.title.includes("Meist Angesehen") && index < 10 && clickedVideoId !== video.id && (
+
+ {(index + 1).toString()}
+
+ )}
+
{
+ setClickedVideoId(video.id);
+ onVideoClick(video);
+ }}
+ className="w-full hover:scale-102 md:hover:scale-105 hover:z-50 transition-all duration-300 md:duration-500 hover:shadow-2xl rounded-lg overflow-hidden"
+ />
+
+
+ {/* Mobile inline ads after video 4 and 8 in "Meist Angesehen" category only */}
+ {category.title.includes("Meist Angesehen") && (index === 3 || index === 7) && (
+
+
)}
-
{
- setClickedVideoId(video.id);
- onVideoClick(video);
- }}
- className="w-full hover:scale-102 md:hover:scale-105 hover:z-50 transition-all duration-300 md:duration-500 hover:shadow-2xl rounded-lg overflow-hidden"
- />
-
+ >
))}
diff --git a/client/src/pages/home.tsx b/client/src/pages/home.tsx
index a4a6a4a..69c59e3 100644
--- a/client/src/pages/home.tsx
+++ b/client/src/pages/home.tsx
@@ -5,8 +5,8 @@ import NetflixGrid from "@/components/netflix-grid";
import { Link } from "wouter";
import { Input } from "@/components/ui/input";
import { Search, Menu, X } from "lucide-react";
-import AdSenseAd from "@/components/adsense-ad";
import HeaderAd from "@/components/HeaderAd";
+import AdSenseAd from "@/components/adsense-ad";
interface VideosResponse {
videos: Video[];
@@ -221,8 +221,8 @@ export default function Home() {
- {/* Bottom Banner Ad */}
-
+ {/* Desktop Bottom Banner Ad */}
+