vidply 1.0.8 → 1.0.10

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -96,10 +96,20 @@ export const translations = {
96
96
  settings: 'Transcript settings. Press Enter to open menu, or D to enable drag mode',
97
97
  keyboardDragMode: 'Toggle keyboard drag mode with arrow keys. Shortcut: D key',
98
98
  keyboardDragActive: '⌨️ Keyboard Drag Mode Active (Arrow keys to move, Shift+Arrows for large steps, D or ESC to exit)',
99
+ dragResizePrompt: 'Press D to drag or R to resize. Use Home to reset position, Esc to close.',
100
+ dragModeEnabled: 'Keyboard drag mode enabled. Use arrow keys to move, Shift+Arrow for larger steps. Press D or Esc to exit.',
101
+ dragModeDisabled: 'Keyboard drag mode disabled.',
99
102
  resizeWindow: 'Resize Window',
103
+ disableResizeWindow: 'Disable Resize Mode',
104
+ resizeModeHint: 'Resize handles enabled. Drag edges or corners to adjust. Press Esc or R to exit.',
105
+ resizeModeEnabled: 'Resize mode enabled. Drag edges or corners to adjust. Press Esc or R to exit.',
106
+ resizeModeDisabled: 'Resize mode disabled.',
107
+ positionReset: 'Transcript position reset.',
100
108
  styleTranscript: 'Open transcript style settings',
101
109
  closeMenu: 'Close Menu',
102
- styleTitle: 'Transcript Style'
110
+ styleTitle: 'Transcript Style',
111
+ autoscroll: 'Autoscroll',
112
+ settingsMenu: 'Settings menu'
103
113
  },
104
114
  settings: {
105
115
  title: 'Settings',
@@ -218,10 +228,20 @@ export const translations = {
218
228
  settings: 'Transkript-Einstellungen. Eingabetaste zum Öffnen des Menüs drücken oder D zum Aktivieren des Verschiebemodus',
219
229
  keyboardDragMode: 'Tastatur-Verschiebemodus mit Pfeiltasten umschalten. Tastenkombination: D-Taste',
220
230
  keyboardDragActive: '⌨️ Tastatur-Verschiebemodus aktiv (Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für große Schritte, D oder ESC zum Beenden)',
231
+ dragResizePrompt: 'Drücken Sie D zum Verschieben oder R zur Größenänderung. Home setzt die Position zurück, Esc schließt.',
232
+ dragModeEnabled: 'Tastatur-Verschiebemodus aktiviert. Pfeiltasten zum Bewegen, Umschalt+Pfeiltasten für größere Schritte. D oder Esc zum Beenden.',
233
+ dragModeDisabled: 'Tastatur-Verschiebemodus deaktiviert.',
221
234
  resizeWindow: 'Fenster vergrößern/verkleinern',
235
+ disableResizeWindow: 'Resize-Modus deaktivieren',
236
+ resizeModeHint: 'Griffe aktiviert. Ziehen Sie Kanten oder Ecken zum Anpassen. Esc oder R zum Beenden.',
237
+ resizeModeEnabled: 'Resize-Modus aktiviert. Kanten oder Ecken ziehen; Esc oder R beendet.',
238
+ resizeModeDisabled: 'Resize-Modus deaktiviert.',
239
+ positionReset: 'Transkriptposition zurückgesetzt.',
222
240
  styleTranscript: 'Transkript-Stileinstellungen öffnen',
223
241
  closeMenu: 'Menü schließen',
224
- styleTitle: 'Transkript-Stil'
242
+ styleTitle: 'Transkript-Stil',
243
+ autoscroll: 'Automatisches Scrollen',
244
+ settingsMenu: 'Einstellungsmenü'
225
245
  },
226
246
  settings: {
227
247
  title: 'Einstellungen',
@@ -340,10 +360,20 @@ export const translations = {
340
360
  settings: 'Configuración de transcripción. Presione Enter para abrir el menú o D para activar el modo de arrastre',
341
361
  keyboardDragMode: 'Alternar modo de arrastre con teclado usando teclas de flecha. Atajo: tecla D',
342
362
  keyboardDragActive: '⌨️ Modo de Arrastre con Teclado Activo (Teclas de flecha para mover, Mayús+Flechas para pasos grandes, D o ESC para salir)',
363
+ dragResizePrompt: 'Pulsa D para mover o R para cambiar el tamaño. Home restablece la posición; Esc cierra.',
364
+ dragModeEnabled: 'Modo de arrastre con teclado activado. Usa flechas para mover, Mayús+Flechas para pasos grandes. Pulsa D o Esc para salir.',
365
+ dragModeDisabled: 'Modo de arrastre con teclado desactivado.',
343
366
  resizeWindow: 'Cambiar tamaño de ventana',
367
+ disableResizeWindow: 'Desactivar modo de cambio de tamaño',
368
+ resizeModeHint: 'Controladores habilitados. Arrastra bordes o esquinas para ajustar. Pulsa Esc o R para salir.',
369
+ resizeModeEnabled: 'Modo de cambio de tamaño activado. Arrastra bordes o esquinas. Pulsa Esc o R para salir.',
370
+ resizeModeDisabled: 'Modo de cambio de tamaño desactivado.',
371
+ positionReset: 'Posición de la transcripción restablecida.',
344
372
  styleTranscript: 'Abrir configuración de estilo de transcripción',
345
373
  closeMenu: 'Cerrar menú',
346
- styleTitle: 'Estilo de Transcripción'
374
+ styleTitle: 'Estilo de Transcripción',
375
+ autoscroll: 'Desplazamiento automático',
376
+ settingsMenu: 'Menú de configuración'
347
377
  },
348
378
  settings: {
349
379
  title: 'Configuración',
@@ -462,10 +492,20 @@ export const translations = {
462
492
  settings: 'Paramètres de transcription. Appuyez sur Entrée pour ouvrir le menu ou D pour activer le mode glissement',
463
493
  keyboardDragMode: 'Basculer le mode glissement avec les touches fléchées. Raccourci: touche D',
464
494
  keyboardDragActive: '⌨️ Mode Glissement Clavier Actif (Touches fléchées pour déplacer, Maj+Fléchées pour grands pas, D ou Échap pour quitter)',
495
+ dragResizePrompt: 'Appuyez sur D pour déplacer ou R pour redimensionner. Home réinitialise la position, Échap ferme.',
496
+ dragModeEnabled: 'Mode glissement clavier activé. Utilisez les flèches pour déplacer, Maj+Flèches pour de grands pas. Appuyez sur D ou Échap pour quitter.',
497
+ dragModeDisabled: 'Mode glissement clavier désactivé.',
465
498
  resizeWindow: 'Redimensionner la fenêtre',
499
+ disableResizeWindow: 'Désactiver le mode de redimensionnement',
500
+ resizeModeHint: 'Poignées activées. Faites glisser les bords ou les coins pour ajuster. Appuyez sur Échap ou R pour quitter.',
501
+ resizeModeEnabled: 'Mode redimensionnement activé. Faites glisser les bords ou coins. Appuyez sur Échap ou R pour quitter.',
502
+ resizeModeDisabled: 'Mode redimensionnement désactivé.',
503
+ positionReset: 'Position de la transcription réinitialisée.',
466
504
  styleTranscript: 'Ouvrir les paramètres de style de transcription',
467
505
  closeMenu: 'Fermer le menu',
468
- styleTitle: 'Style de Transcription'
506
+ styleTitle: 'Style de Transcription',
507
+ autoscroll: 'Défilement automatique',
508
+ settingsMenu: 'Menu des paramètres'
469
509
  },
470
510
  settings: {
471
511
  title: 'Paramètres',
@@ -584,10 +624,20 @@ export const translations = {
584
624
  settings: '文字起こし設定。Enterキーでメニューを開く、またはDキーでドラッグモードを有効にする',
585
625
  keyboardDragMode: '矢印キーでキーボードドラッグモードを切り替え。ショートカット:Dキー',
586
626
  keyboardDragActive: '⌨️ キーボードドラッグモード有効(矢印キーで移動、Shift+矢印キーで大きく移動、DまたはESCで終了)',
627
+ dragResizePrompt: 'Dキーで移動、Rキーでサイズ変更。Homeで位置をリセット、Escで閉じます。',
628
+ dragModeEnabled: 'キーボードドラッグモードを有効にしました。矢印キーで移動、Shift+矢印キーで大きく移動できます。終了するには D または Esc を押します。',
629
+ dragModeDisabled: 'キーボードドラッグモードを無効にしました。',
587
630
  resizeWindow: 'ウィンドウのサイズ変更',
631
+ disableResizeWindow: 'サイズ変更モードを無効にする',
632
+ resizeModeHint: 'リサイズハンドルが有効になりました。辺や角をドラッグして調整します。Esc または R で終了します。',
633
+ resizeModeEnabled: 'サイズ変更モードを有効にしました。辺や角をドラッグして調整します。Esc または R で終了します。',
634
+ resizeModeDisabled: 'サイズ変更モードを無効にしました。',
635
+ positionReset: '文字起こしの位置をリセットしました。',
588
636
  styleTranscript: '文字起こしスタイル設定を開く',
589
637
  closeMenu: 'メニューを閉じる',
590
- styleTitle: '文字起こしスタイル'
638
+ styleTitle: '文字起こしスタイル',
639
+ autoscroll: '自動スクロール',
640
+ settingsMenu: '設定メニュー'
591
641
  },
592
642
  settings: {
593
643
  title: '設定',
@@ -71,9 +71,9 @@ const iconPaths = {
71
71
 
72
72
  transcript: `<path d="M14 2H6c-1.1 0-1.99.9-1.99 2L4 20c0 1.1.89 2 1.99 2H18c1.1 0 2-.9 2-2V8l-6-6zm2 16H8v-2h8v2zm0-4H8v-2h8v2zm-3-5V3.5L18.5 9H13z"/>`,
73
73
 
74
- audioDescription: `<rect x="2" y="5" width="20" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="currentColor">AD</text>`,
74
+ audioDescription: `<rect x="2" y="5" width="20" height="14" rx="2" fill="#ffffff" stroke="#ffffff" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="#1a1a1a">AD</text>`,
75
75
 
76
- audioDescriptionOn: `<rect x="2" y="5" width="20" height="14" rx="2" fill="#1a1a1a" stroke="#1a1a1a" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="#ffffff">AD</text>`,
76
+ audioDescriptionOn: `<rect x="2" y="5" width="20" height="14" rx="2" fill="none" stroke="currentColor" stroke-width="2"/><text x="12" y="16" font-family="Arial, sans-serif" font-size="10" font-weight="bold" text-anchor="middle" fill="currentColor">AD</text>`,
77
77
 
78
78
  signLanguage: `<g transform="scale(1.5)"><path d="M16 11.3c-.1-.9-4.8 1.3-5.4 1.1-2.6-1 5.8-1.3 5.1-2.9s-5.1 1.5-6 1.4C6.5 9.4 16.5 9.1 13.5 8c-1.9-.6-8.8 2.9-6.8.4.7-.6.7-1.9-.7-1.7-9.7 7.2-.7 12.2 8.8 7 0-1.3-3.5.4-4.1.4-2.6 0 5.6-2 5.4-3ZM3.9 7.8c3.2-4.2 3.7 1.2 6 .1s.2-.2.2-.3c.7-2.7 2.5-7.5-1.5-1.3-1.6 0 1.1-4 1-4.6C8.9-1 7.3 4.4 7.2 4.9c-1.6.7-.9-1.4-.7-1.5 3-6-.6-3.1-.9.4-2.5 1.8 0-2.8 0-3.5C2.8-.9 4 9.4 1.1 4.9S.1 4.6 0 5c-.4 2.7 2.6 7.2 3.9 2.8Z"/></g>`,
79
79
 
@@ -35,27 +35,32 @@
35
35
  --vidply-border-hover: var(--vidply-white-30);
36
36
  --vidply-border-light: var(--vidply-white-10);
37
37
  --vidply-focus-outline: 2px solid var(--vidply-primary);
38
+ --vidply-focus-outline-player: 3px solid var(--vidply-primary-light);
38
39
  --vidply-focus-outline-white: 2px solid var(--vidply-primary-light);
39
40
  --vidply-hover-bg: var(--vidply-white-10);
40
41
  --vidply-primary: #0a406e;
41
42
  --vidply-primary-10: rgb(var(--vidply-primary-rgb), 0.1);
42
43
  --vidply-primary-15: rgb(var(--vidply-primary-rgb), 0.15);
43
-
44
- /* Black Color Variations */
45
44
  --vidply-primary-20: rgb(var(--vidply-primary-rgb), 0.2);
46
45
  --vidply-primary-25: rgb(var(--vidply-primary-rgb), 0.25);
47
46
  --vidply-primary-30: rgb(var(--vidply-primary-rgb), 0.3);
48
47
  --vidply-primary-40: rgb(var(--vidply-primary-rgb), 0.4);
49
48
  --vidply-primary-50: rgb(var(--vidply-primary-rgb), 0.5);
49
+
50
+ /* Black Color Variations */
50
51
  --vidply-primary-60: rgb(var(--vidply-primary-rgb), 0.6);
51
52
  --vidply-primary-70: rgb(var(--vidply-primary-rgb), 0.7);
52
53
  --vidply-primary-80: rgb(var(--vidply-primary-rgb), 0.8);
53
54
  --vidply-primary-dark: #083358;
54
-
55
- /* UI Background Colors */
56
55
  --vidply-primary-dark-rgb: 8, 51, 88;
57
56
  --vidply-primary-light: #71b7e2;
58
57
  --vidply-primary-rgb: 10, 64, 110;
58
+ --vidply-scrollbar-thumb: var(--vidply-white);
59
+ --vidply-scrollbar-thumb-hover: var(--vidply-white-90);
60
+
61
+ /* UI Background Colors */
62
+ --vidply-scrollbar-track: #404040;
63
+ --vidply-scrollbar-track-transcript: #555;
59
64
  --vidply-shadow-lg: 0 12px 48px var(--vidply-black-80);
60
65
  --vidply-shadow-md: 0 4px 12px var(--vidply-black-40);
61
66
  --vidply-shadow-sm: 0 2px 4px var(--vidply-black-30);
@@ -64,6 +69,7 @@
64
69
  --vidply-text-primary: var(--vidply-white);
65
70
  --vidply-text-secondary: var(--vidply-white-90);
66
71
  --vidply-text-subtle: var(--vidply-white-50);
72
+ --vidply-transition-default: all 0.2s ease;
67
73
 
68
74
  /* Border Colors */
69
75
  --vidply-white: #fff;
@@ -110,16 +116,11 @@
110
116
 
111
117
  /* Player Focus Outline */
112
118
  .vidply-player:focus {
113
- outline: 3px solid var(--vidply-primary-light);
114
- outline-offset: 4px;
115
- }
116
-
117
- .vidply-player:focus:not(:focus-visible) {
118
119
  outline: none;
119
120
  }
120
121
 
121
122
  .vidply-player:focus-visible {
122
- outline: 3px solid var(--vidply-primary-light);
123
+ outline: var(--vidply-focus-outline-player);
123
124
  outline-offset: 4px;
124
125
  }
125
126
 
@@ -192,6 +193,17 @@
192
193
  z-index: 1; /* Base video layer */
193
194
  }
194
195
 
196
+ .vidply-video-wrapper.vidply-forced-poster {
197
+ background-image: var(--vidply-poster-image);
198
+ background-position: center;
199
+ background-repeat: no-repeat;
200
+ background-size: cover;
201
+ }
202
+
203
+ .vidply-video-wrapper.vidply-forced-poster > video {
204
+ opacity: 0;
205
+ }
206
+
195
207
  /* Mobile: Simplify video wrapper */
196
208
  @media (width <= 640px) {
197
209
  .vidply-video-wrapper {
@@ -311,9 +323,6 @@
311
323
  .vidply-progress-container:hover,
312
324
  .vidply-progress-container:focus {
313
325
  height: 8px;
314
- }
315
-
316
- .vidply-progress-container:focus {
317
326
  outline: var(--vidply-focus-outline-white);
318
327
  outline-offset: 2px;
319
328
  }
@@ -421,10 +430,6 @@
421
430
  outline-offset: 2px;
422
431
  }
423
432
 
424
- .vidply-button:focus:not(:focus-visible) {
425
- outline: none;
426
- }
427
-
428
433
  .vidply-button:disabled {
429
434
  cursor: not-allowed;
430
435
  opacity: 0.5;
@@ -1310,12 +1315,16 @@
1310
1315
  }
1311
1316
  }
1312
1317
 
1313
- /* Focus Visible Polyfill */
1314
- .vidply-player :focus:not(:focus-visible) {
1315
- outline: none;
1316
- }
1317
-
1318
- .vidply-player :focus-visible {
1318
+ /* Focus Visible */
1319
+ .vidply-player :focus-visible,
1320
+ .vidply-player button:hover,
1321
+ .vidply-player a:hover,
1322
+ .vidply-player input:hover,
1323
+ .vidply-player select:hover,
1324
+ .vidply-player textarea:hover,
1325
+ .vidply-player [role="button"]:hover,
1326
+ .vidply-player [role="link"]:hover,
1327
+ .vidply-player [tabindex]:not([tabindex="-1"]):hover {
1319
1328
  outline: var(--vidply-focus-outline-white);
1320
1329
  outline-offset: 2px;
1321
1330
  }
@@ -1402,7 +1411,7 @@
1402
1411
  gap: 12px;
1403
1412
  padding: 12px 16px;
1404
1413
  position: relative;
1405
- transition: all 0.2s ease;
1414
+ transition: var(--vidply-transition-default);
1406
1415
  }
1407
1416
 
1408
1417
  .vidply-playlist-item:hover {
@@ -1413,19 +1422,14 @@
1413
1422
  .vidply-playlist-item:focus {
1414
1423
  background: var(--vidply-white-08);
1415
1424
  border-left-color: var(--vidply-primary);
1416
- outline: 2px solid var(--vidply-primary-light);
1417
- outline-offset: -2px;
1418
- z-index: 1;
1419
- }
1420
-
1421
- .vidply-playlist-item:focus:not(:focus-visible) {
1422
1425
  outline: none;
1426
+ z-index: 1;
1423
1427
  }
1424
1428
 
1425
1429
  .vidply-playlist-item:focus-visible {
1426
1430
  background: var(--vidply-white-08);
1427
1431
  border-left-color: var(--vidply-primary);
1428
- outline: 2px solid var(--vidply-primary-light);
1432
+ outline: var(--vidply-focus-outline-white);
1429
1433
  outline-offset: -2px;
1430
1434
  z-index: 1;
1431
1435
  }
@@ -1439,10 +1443,14 @@
1439
1443
  background: var(--vidply-primary-20);
1440
1444
  }
1441
1445
 
1442
- .vidply-playlist-item-active:focus,
1446
+ .vidply-playlist-item-active:focus {
1447
+ background: var(--vidply-primary-20);
1448
+ outline: none;
1449
+ }
1450
+
1443
1451
  .vidply-playlist-item-active:focus-visible {
1444
1452
  background: var(--vidply-primary-20);
1445
- outline: 2px solid var(--vidply-primary-light);
1453
+ outline: var(--vidply-focus-outline-white);
1446
1454
  outline-offset: -2px;
1447
1455
  }
1448
1456
 
@@ -1464,7 +1472,7 @@
1464
1472
  .vidply-playlist-thumbnail-icon {
1465
1473
  color: var(--vidply-text-subtle);
1466
1474
  height: 32px;
1467
- transition: all 0.2s ease;
1475
+ transition: var(--vidply-transition-default);
1468
1476
  width: 32px;
1469
1477
  }
1470
1478
 
@@ -1525,21 +1533,26 @@
1525
1533
  }
1526
1534
 
1527
1535
  /* Playlist Scrollbar */
1536
+ .vidply-playlist-panel {
1537
+ scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track);
1538
+ scrollbar-width: thin;
1539
+ }
1540
+
1528
1541
  .vidply-playlist-panel::-webkit-scrollbar {
1529
1542
  width: 8px;
1530
1543
  }
1531
1544
 
1532
1545
  .vidply-playlist-panel::-webkit-scrollbar-track {
1533
- background: var(--vidply-black-30);
1546
+ background: var(--vidply-scrollbar-track);
1534
1547
  }
1535
1548
 
1536
1549
  .vidply-playlist-panel::-webkit-scrollbar-thumb {
1537
- background: var(--vidply-white-20);
1550
+ background: var(--vidply-scrollbar-thumb);
1538
1551
  border-radius: 4px;
1539
1552
  }
1540
1553
 
1541
1554
  .vidply-playlist-panel::-webkit-scrollbar-thumb:hover {
1542
- background: var(--vidply-border-hover);
1555
+ background: var(--vidply-scrollbar-thumb-hover);
1543
1556
  }
1544
1557
 
1545
1558
  /* Audio Player with Playlist */
@@ -1570,7 +1583,7 @@
1570
1583
  flex-direction: column;
1571
1584
  max-width: 400px;
1572
1585
  order: 4; /* After video-wrapper (1), track-info (2), and playlist-panel (3) */
1573
- position: absolute;
1586
+ position: fixed;
1574
1587
  top: 0;
1575
1588
  width: 400px;
1576
1589
  z-index: 5;
@@ -1583,7 +1596,7 @@
1583
1596
 
1584
1597
  .vidply-transcript-header {
1585
1598
  align-items: center;
1586
- background: var(--vidply-active-bg);
1599
+ background: #282828;
1587
1600
  border-bottom: 1px solid var(--vidply-border-light);
1588
1601
  border-radius: 8px 8px 0 0;
1589
1602
  cursor: move;
@@ -1593,11 +1606,24 @@
1593
1606
  user-select: none;
1594
1607
  }
1595
1608
 
1609
+ .vidply-transcript-header:focus,
1610
+ .vidply-transcript-header:focus-visible {
1611
+ box-shadow: 0 0 0 4px rgb(91 144 255 / 35%);
1612
+ outline: 3px solid var(--vidply-primary-light);
1613
+ outline-offset: 2px;
1614
+ }
1615
+
1596
1616
  .vidply-transcript-header h3 {
1617
+ /* Visually hidden but accessible to screen readers */
1597
1618
  color: var(--vidply-white);
1598
1619
  font-size: 16px;
1599
1620
  font-weight: 600;
1621
+ height: 1px;
1622
+ left: -10000px;
1600
1623
  margin: 0;
1624
+ overflow: hidden;
1625
+ position: absolute;
1626
+ width: 1px;
1601
1627
  }
1602
1628
 
1603
1629
  .vidply-transcript-close {
@@ -1611,7 +1637,7 @@
1611
1637
  height: 28px;
1612
1638
  justify-content: center;
1613
1639
  padding: 4px;
1614
- transition: all 0.2s ease;
1640
+ transition: var(--vidply-transition-default);
1615
1641
  width: 28px;
1616
1642
  }
1617
1643
 
@@ -1714,31 +1740,92 @@
1714
1740
  }
1715
1741
 
1716
1742
  /* Transcript Scrollbar */
1743
+ .vidply-transcript-content {
1744
+ scrollbar-color: var(--vidply-scrollbar-thumb) var(--vidply-scrollbar-track-transcript);
1745
+ scrollbar-width: thin;
1746
+ }
1747
+
1717
1748
  .vidply-transcript-content::-webkit-scrollbar {
1718
1749
  width: 8px;
1719
1750
  }
1720
1751
 
1721
1752
  .vidply-transcript-content::-webkit-scrollbar-track {
1722
- background: var(--vidply-black-30);
1753
+ background: var(--vidply-scrollbar-track-transcript);
1723
1754
  }
1724
1755
 
1725
1756
  .vidply-transcript-content::-webkit-scrollbar-thumb {
1726
- background: var(--vidply-white-20);
1757
+ background: var(--vidply-scrollbar-thumb);
1727
1758
  border-radius: 4px;
1728
1759
  }
1729
1760
 
1730
1761
  .vidply-transcript-content::-webkit-scrollbar-thumb:hover {
1731
- background: var(--vidply-border-hover);
1762
+ background: var(--vidply-scrollbar-thumb-hover);
1732
1763
  }
1733
1764
 
1734
1765
  /* Transcript Header Left Side (Settings Button + Title) */
1735
1766
  .vidply-transcript-header-left {
1736
1767
  align-items: center;
1737
1768
  display: flex;
1738
- gap: 8px;
1769
+ gap: 16px;
1739
1770
  position: relative;
1740
1771
  }
1741
1772
 
1773
+ /* Transcript Autoscroll Checkbox */
1774
+ .vidply-transcript-autoscroll-label {
1775
+ align-items: center;
1776
+ cursor: pointer;
1777
+ display: flex;
1778
+ gap: 6px;
1779
+ user-select: none;
1780
+ white-space: nowrap;
1781
+ }
1782
+
1783
+ .vidply-transcript-autoscroll-label input[type="checkbox"] {
1784
+ cursor: pointer;
1785
+ height: 16px;
1786
+ margin: 0;
1787
+ width: 16px;
1788
+ }
1789
+
1790
+ .vidply-transcript-autoscroll-text {
1791
+ color: var(--vidply-text-muted);
1792
+ font-size: 13px;
1793
+ transition: color 0.2s ease;
1794
+ }
1795
+
1796
+ .vidply-transcript-autoscroll-label:hover .vidply-transcript-autoscroll-text {
1797
+ color: var(--vidply-white);
1798
+ }
1799
+
1800
+ /* Transcript Language Selector */
1801
+ .vidply-transcript-language-select {
1802
+ background: var(--vidply-white-10);
1803
+ border: 1px solid var(--vidply-white-20);
1804
+ border-radius: 4px;
1805
+ color: var(--vidply-white);
1806
+ cursor: pointer;
1807
+ font-size: 13px;
1808
+ padding: 4px 8px;
1809
+ transition: var(--vidply-transition-default);
1810
+ }
1811
+
1812
+ .vidply-transcript-language-select:hover {
1813
+ background: var(--vidply-white-15);
1814
+ border-color: var(--vidply-border-hover);
1815
+ }
1816
+
1817
+ .vidply-transcript-language-select:focus {
1818
+ background: var(--vidply-white-15);
1819
+ border-color: var(--vidply-border-focus);
1820
+ box-shadow: 0 0 0 3px var(--vidply-primary-20);
1821
+ outline: none;
1822
+ }
1823
+
1824
+ .vidply-transcript-language-select option {
1825
+ background: #1a1a1a;
1826
+ color: var(--vidply-white);
1827
+ }
1828
+
1742
1829
  /* Transcript Settings Button */
1743
1830
  .vidply-transcript-settings {
1744
1831
  align-items: center;
@@ -1752,7 +1839,7 @@
1752
1839
  justify-content: center;
1753
1840
  padding: 4px;
1754
1841
  position: relative;
1755
- transition: all 0.2s ease;
1842
+ transition: var(--vidply-transition-default);
1756
1843
  width: 28px;
1757
1844
  }
1758
1845
 
@@ -1762,7 +1849,7 @@
1762
1849
  }
1763
1850
 
1764
1851
  .vidply-transcript-settings:focus {
1765
- outline: 2px solid var(--vidply-primary-light);
1852
+ outline: var(--vidply-focus-outline-white);
1766
1853
  outline-offset: 2px;
1767
1854
  }
1768
1855
 
@@ -2006,6 +2093,22 @@
2006
2093
  z-index: 1000;
2007
2094
  }
2008
2095
 
2096
+ .vidply-transcript-resize-tooltip {
2097
+ animation: fadeInDown 0.3s ease;
2098
+ background: var(--vidply-primary);
2099
+ border-radius: 4px;
2100
+ color: var(--vidply-white);
2101
+ font-size: 12px;
2102
+ left: 50%;
2103
+ padding: 6px 12px;
2104
+ position: absolute;
2105
+ text-align: center;
2106
+ top: 100%;
2107
+ transform: translateX(-50%);
2108
+ white-space: nowrap;
2109
+ z-index: 1000;
2110
+ }
2111
+
2009
2112
  @keyframes fadeInDown {
2010
2113
  from {
2011
2114
  opacity: 0;
@@ -2084,7 +2187,7 @@
2084
2187
  font-size: 13px;
2085
2188
  outline: none;
2086
2189
  padding: 6px 10px;
2087
- transition: all 0.2s ease;
2190
+ transition: var(--vidply-transition-default);
2088
2191
  width: 100%;
2089
2192
  }
2090
2193
 
@@ -2112,7 +2215,7 @@
2112
2215
  height: 32px;
2113
2216
  outline: none;
2114
2217
  padding: 4px;
2115
- transition: all 0.2s ease;
2218
+ transition: var(--vidply-transition-default);
2116
2219
  width: 100%;
2117
2220
  }
2118
2221
 
@@ -2196,7 +2299,7 @@
2196
2299
  font-weight: 600;
2197
2300
  margin-top: 12px;
2198
2301
  padding: 8px 16px;
2199
- transition: all 0.2s ease;
2302
+ transition: var(--vidply-transition-default);
2200
2303
  width: 100%;
2201
2304
  }
2202
2305
 
@@ -2218,9 +2321,8 @@
2218
2321
  .vidply-sign-language-wrapper {
2219
2322
  background: transparent;
2220
2323
  height: auto;
2221
- max-width: 400px;
2324
+ max-width: none;
2222
2325
  min-height: 100px;
2223
- min-width: 150px;
2224
2326
  position: absolute;
2225
2327
  transition: opacity 0.3s ease;
2226
2328
  width: 280px;
@@ -2228,7 +2330,7 @@
2228
2330
  }
2229
2331
 
2230
2332
  .vidply-fullscreen .vidply-sign-language-wrapper {
2231
- max-width: 600px;
2333
+ max-width: none;
2232
2334
  }
2233
2335
 
2234
2336
  .vidply-sign-language-wrapper:focus {