+ {/* Top gradient scrim */}
+
+
+ {/* Top hints bar */}
+
+ {playState === 'playing' ? 'Pause' : 'Resume'}
+ ·
+ −30s
+ ·
+ +30s
+ ·
+ −5min
+ ·
+ +5min
+ ·
+ Kapitel ←
+ ·
+ Kapitel →
+ ·
+ Kapitelmenü
+ ·
+ Stop
+
+
+ {/* Center play/pause button */}
+
+
+
+
+ {/* Double-tap skip feedback */}
+ {skipFeedback && (
+
+ {skipFeedback.side === 'left' ? '−10s' : '+10s'}
+
+ )}
+
+ {/* Bottom bar */}
+
+ {/* Channel info */}
+
+ {channelAvatar && (
+

+ )}
+
{channelName}
+ {isLive &&
LIVE}
+
+
+ {/* Video title */}
+ {title &&
{title}
}
+
+ {/* Progress row */}
+ {!isLive && durationSeconds > 0 ? (
+
+
{fmt(displayPosition)}
+
+
+
+
{fmt(durationSeconds)}
+
+ ) : isLive ? (
+
+
+ Live
+
+ ) : null}
+
+ {/* Stop button */}
+
+
+
+ {/* Bottom gradient scrim */}
+
+
+ )
+}
diff --git a/src/renderer/src/screens/ChannelScreen.tsx b/src/renderer/src/screens/ChannelScreen.tsx
index 651725e..5b511f2 100644
--- a/src/renderer/src/screens/ChannelScreen.tsx
+++ b/src/renderer/src/screens/ChannelScreen.tsx
@@ -1,5 +1,6 @@
import { useEffect, useRef, useState } from 'react'
import { GamepadHintItem, GamepadPrompt } from '../components/GamepadPrompt'
+import { PlaybackOverlay } from '../components/PlaybackOverlay'
import type { FollowedChannelInfo, PlaybackEvent, VodChapter, VodInfo, VodProgress } from '../types/t4sd'
interface Props {
@@ -72,6 +73,10 @@ export default function ChannelScreen({ channel, onBack }: Props): JSX.Element {
const [wasPlayingBeforeChapters, setWasPlayingBeforeChapters] = useState(false)
const [currentVod, setCurrentVod] = useState