diff --git a/src/components/player/atoms/Settings.tsx b/src/components/player/atoms/Settings.tsx
index f5f72ff9..a7bad320 100644
--- a/src/components/player/atoms/Settings.tsx
+++ b/src/components/player/atoms/Settings.tsx
@@ -96,7 +96,12 @@ function SettingsOverlay({ id }: { id: string }) {
-
+
diff --git a/src/components/player/atoms/settings/CaptionsView.tsx b/src/components/player/atoms/settings/CaptionsView.tsx
index 902f9d69..d15d64cb 100644
--- a/src/components/player/atoms/settings/CaptionsView.tsx
+++ b/src/components/player/atoms/settings/CaptionsView.tsx
@@ -542,7 +542,9 @@ export function CaptionsView({
/>
{selectedCaptionId && (
- router.navigate("/transcript")}>
+ router.navigate("/captions/transcript")}
+ >
{t("player.menus.subtitles.transcriptChoice")}
)}
diff --git a/src/components/player/atoms/settings/TranscriptView.tsx b/src/components/player/atoms/settings/TranscriptView.tsx
index c30ede83..8f31412e 100644
--- a/src/components/player/atoms/settings/TranscriptView.tsx
+++ b/src/components/player/atoms/settings/TranscriptView.tsx
@@ -153,27 +153,15 @@ export function TranscriptView({ id }: { id: string }) {
const [didFirstScroll, setDidFirstScroll] = useState(false);
useEffect(() => {
if (!scrollTargetKey) return;
- // Find nearest scrollable parent
- const getScrollableParent = (node: HTMLElement | null): HTMLElement => {
- let el: HTMLElement | null = node;
- while (el && el.parentElement) {
- const style = window.getComputedStyle(el);
- if (/(auto|scroll)/.test(style.overflowY)) return el;
- el = el.parentElement as HTMLElement;
- }
- return (
- (document.scrollingElement as HTMLElement) ||
- (document.documentElement as HTMLElement)
- );
- };
-
const scrollToStablePoint = (target: HTMLElement) => {
- const container = getScrollableParent(target);
+ const container = carouselRef.current;
+ if (!container) return;
+
const containerRect = container.getBoundingClientRect();
const targetRect = target.getBoundingClientRect();
- const containerHeight = container.clientHeight || 452;
- const desiredOffsetFromTop = Math.floor(containerHeight * 0.85); // ~3/4 down
+ const containerHeight = container.clientHeight || 288; // 18rem = 288px
+ const desiredOffsetFromTop = Math.floor(containerHeight * 0.6); // half of the container height
// Current absolute position of target center within container's scroll space
const targetCenterAbs =