myetv-player 1.2.0 → 1.3.0
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.
- package/css/myetv-player.css +131 -0
- package/css/myetv-player.min.css +1 -1
- package/dist/myetv-player.js +547 -102
- package/dist/myetv-player.min.js +486 -93
- package/package.json +35 -17
- package/plugins/twitch/myetv-player-twitch-plugin.js +125 -11
- package/plugins/vimeo/myetv-player-vimeo.js +80 -49
- package/plugins/youtube/README.md +5 -2
- package/plugins/youtube/myetv-player-youtube-plugin.js +766 -6
- package/.github/workflows/codeql.yml +0 -100
- package/.github/workflows/npm-publish.yml +0 -30
- package/SECURITY.md +0 -50
- package/build.js +0 -195
- package/scss/README.md +0 -161
- package/scss/_audio-player.scss +0 -21
- package/scss/_base.scss +0 -116
- package/scss/_controls.scss +0 -204
- package/scss/_loading.scss +0 -111
- package/scss/_menus.scss +0 -432
- package/scss/_mixins.scss +0 -112
- package/scss/_poster.scss +0 -8
- package/scss/_progress-bar.scss +0 -319
- package/scss/_resolution.scss +0 -68
- package/scss/_responsive.scss +0 -1368
- package/scss/_themes.scss +0 -30
- package/scss/_title-overlay.scss +0 -60
- package/scss/_tooltips.scss +0 -7
- package/scss/_variables.scss +0 -49
- package/scss/_video.scss +0 -221
- package/scss/_volume.scss +0 -122
- package/scss/_watermark.scss +0 -128
- package/scss/myetv-player.scss +0 -51
- package/scss/package.json +0 -16
- package/src/README.md +0 -560
- package/src/chapters.js +0 -521
- package/src/controls.js +0 -1242
- package/src/core.js +0 -1922
- package/src/events.js +0 -537
- package/src/fullscreen.js +0 -82
- package/src/i18n.js +0 -374
- package/src/playlist.js +0 -177
- package/src/plugins.js +0 -384
- package/src/quality.js +0 -963
- package/src/streaming.js +0 -346
- package/src/subtitles.js +0 -524
- package/src/utils.js +0 -65
- package/src/watermark.js +0 -246
package/scss/_responsive.scss
DELETED
|
@@ -1,1368 +0,0 @@
|
|
|
1
|
-
// ===================================
|
|
2
|
-
// RESPONSIVE
|
|
3
|
-
// ===================================
|
|
4
|
-
|
|
5
|
-
@use 'mixins' as *;
|
|
6
|
-
|
|
7
|
-
/* RESPONSIVE DESIGN - PROGRESSIVE DEGRADATION CON MENU A TENDINA */
|
|
8
|
-
|
|
9
|
-
/* Large tablets and small desktops */
|
|
10
|
-
@media (max-width: 768px) {
|
|
11
|
-
.controls-left,
|
|
12
|
-
.controls-right {
|
|
13
|
-
gap: 8px;
|
|
14
|
-
}
|
|
15
|
-
|
|
16
|
-
.volume-slider {
|
|
17
|
-
width: 50px; /* Reduce volume slider width */
|
|
18
|
-
}
|
|
19
|
-
|
|
20
|
-
.time-display {
|
|
21
|
-
font-size: 12px;
|
|
22
|
-
}
|
|
23
|
-
|
|
24
|
-
.icon {
|
|
25
|
-
font-size: 14px;
|
|
26
|
-
}
|
|
27
|
-
|
|
28
|
-
.control-btn {
|
|
29
|
-
padding: 6px;
|
|
30
|
-
}
|
|
31
|
-
|
|
32
|
-
.quality-btn {
|
|
33
|
-
min-height: 32px;
|
|
34
|
-
padding: 4px 6px;
|
|
35
|
-
}
|
|
36
|
-
|
|
37
|
-
.selected-quality {
|
|
38
|
-
font-size: 12px;
|
|
39
|
-
}
|
|
40
|
-
|
|
41
|
-
.current-quality {
|
|
42
|
-
font-size: 9px;
|
|
43
|
-
}
|
|
44
|
-
|
|
45
|
-
.seek-tooltip {
|
|
46
|
-
font-size: 11px;
|
|
47
|
-
padding: 4px 8px;
|
|
48
|
-
}
|
|
49
|
-
|
|
50
|
-
.title-overlay {
|
|
51
|
-
padding: 12px 15px 20px;
|
|
52
|
-
}
|
|
53
|
-
|
|
54
|
-
.title-text {
|
|
55
|
-
font-size: 16px;
|
|
56
|
-
}
|
|
57
|
-
|
|
58
|
-
.video-player::cue {
|
|
59
|
-
font-size: 16px;
|
|
60
|
-
padding: 6px 10px;
|
|
61
|
-
}
|
|
62
|
-
|
|
63
|
-
.controls-right .brand-logo {
|
|
64
|
-
height: 36px;
|
|
65
|
-
max-width: 100px;
|
|
66
|
-
margin-right: 8px;
|
|
67
|
-
}
|
|
68
|
-
}
|
|
69
|
-
|
|
70
|
-
/* Mobile phones */
|
|
71
|
-
@media (max-width: 480px) {
|
|
72
|
-
.controls-left,
|
|
73
|
-
.controls-right {
|
|
74
|
-
gap: 6px;
|
|
75
|
-
}
|
|
76
|
-
|
|
77
|
-
.progress-container {
|
|
78
|
-
margin-bottom: 10px;
|
|
79
|
-
}
|
|
80
|
-
|
|
81
|
-
.controls-main {
|
|
82
|
-
padding-top: 6px;
|
|
83
|
-
}
|
|
84
|
-
|
|
85
|
-
.volume-container {
|
|
86
|
-
/* Reduce volume slider width further instead of hiding */
|
|
87
|
-
flex-shrink: 3;
|
|
88
|
-
}
|
|
89
|
-
|
|
90
|
-
.volume-slider {
|
|
91
|
-
width: 35px; /* Further reduce volume slider */
|
|
92
|
-
}
|
|
93
|
-
|
|
94
|
-
.time-display span:nth-child(2) {
|
|
95
|
-
display: none; /* Hide the separator "/" */
|
|
96
|
-
}
|
|
97
|
-
|
|
98
|
-
.quality-btn {
|
|
99
|
-
min-height: 28px;
|
|
100
|
-
padding: 3px 5px;
|
|
101
|
-
}
|
|
102
|
-
|
|
103
|
-
.selected-quality {
|
|
104
|
-
font-size: 11px;
|
|
105
|
-
}
|
|
106
|
-
|
|
107
|
-
.current-quality {
|
|
108
|
-
font-size: 8px;
|
|
109
|
-
}
|
|
110
|
-
|
|
111
|
-
.seek-tooltip {
|
|
112
|
-
font-size: 10px;
|
|
113
|
-
padding: 3px 6px;
|
|
114
|
-
}
|
|
115
|
-
|
|
116
|
-
.title-overlay {
|
|
117
|
-
padding: 10px 12px 18px;
|
|
118
|
-
}
|
|
119
|
-
|
|
120
|
-
.title-text {
|
|
121
|
-
font-size: 14px;
|
|
122
|
-
}
|
|
123
|
-
|
|
124
|
-
.video-player::cue {
|
|
125
|
-
font-size: 14px;
|
|
126
|
-
padding: 4px 8px;
|
|
127
|
-
}
|
|
128
|
-
|
|
129
|
-
.controls-right .brand-logo {
|
|
130
|
-
height: 28px;
|
|
131
|
-
max-width: 80px;
|
|
132
|
-
margin-right: 5px;
|
|
133
|
-
}
|
|
134
|
-
}
|
|
135
|
-
|
|
136
|
-
/* SCHERMI MOLTO PICCOLI - ATTIVA MENU SETTINGS DROPDOWN */
|
|
137
|
-
@media (max-width: 350px) {
|
|
138
|
-
/* Mostra il menu Settings solo su schermi molto piccoli */
|
|
139
|
-
.settings-control {
|
|
140
|
-
display: block !important;
|
|
141
|
-
}
|
|
142
|
-
|
|
143
|
-
/* Nascondi i controlli individuali e spostali nel menu */
|
|
144
|
-
.pip-btn,
|
|
145
|
-
.speed-control,
|
|
146
|
-
.subtitles-control {
|
|
147
|
-
display: none !important;
|
|
148
|
-
}
|
|
149
|
-
|
|
150
|
-
/* Riduci ulteriormente gli spazi */
|
|
151
|
-
.controls-left,
|
|
152
|
-
.controls-right {
|
|
153
|
-
gap: 4px;
|
|
154
|
-
}
|
|
155
|
-
|
|
156
|
-
.control-btn {
|
|
157
|
-
padding: 4px;
|
|
158
|
-
}
|
|
159
|
-
|
|
160
|
-
.icon {
|
|
161
|
-
font-size: 12px;
|
|
162
|
-
}
|
|
163
|
-
|
|
164
|
-
.quality-btn {
|
|
165
|
-
min-height: 24px;
|
|
166
|
-
padding: 2px 4px;
|
|
167
|
-
}
|
|
168
|
-
|
|
169
|
-
.selected-quality {
|
|
170
|
-
font-size: 10px;
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
.current-quality {
|
|
174
|
-
font-size: 7px;
|
|
175
|
-
}
|
|
176
|
-
|
|
177
|
-
.controls-right .brand-logo {
|
|
178
|
-
height: 22px;
|
|
179
|
-
max-width: 50px;
|
|
180
|
-
margin-right: 3px;
|
|
181
|
-
}
|
|
182
|
-
|
|
183
|
-
.volume-slider {
|
|
184
|
-
width: 30px; /* Volume slider ancora più piccolo */
|
|
185
|
-
}
|
|
186
|
-
|
|
187
|
-
/* Riduci il menu settings per schermi ultra-piccoli */
|
|
188
|
-
.settings-menu {
|
|
189
|
-
min-width: 160px;
|
|
190
|
-
font-size: 12px;
|
|
191
|
-
}
|
|
192
|
-
|
|
193
|
-
.settings-option {
|
|
194
|
-
padding: 6px 12px;
|
|
195
|
-
font-size: 12px;
|
|
196
|
-
}
|
|
197
|
-
|
|
198
|
-
.settings-submenu {
|
|
199
|
-
min-width: 130px;
|
|
200
|
-
}
|
|
201
|
-
|
|
202
|
-
.settings-suboption {
|
|
203
|
-
padding: 6px 12px;
|
|
204
|
-
font-size: 11px;
|
|
205
|
-
}
|
|
206
|
-
}
|
|
207
|
-
|
|
208
|
-
/* Very small screens - ultra mobile */
|
|
209
|
-
@media (max-width: 280px) {
|
|
210
|
-
.controls-left,
|
|
211
|
-
.controls-right {
|
|
212
|
-
gap: 3px;
|
|
213
|
-
}
|
|
214
|
-
|
|
215
|
-
.control-btn {
|
|
216
|
-
padding: 3px;
|
|
217
|
-
}
|
|
218
|
-
|
|
219
|
-
.icon {
|
|
220
|
-
font-size: 10px;
|
|
221
|
-
}
|
|
222
|
-
|
|
223
|
-
.quality-btn {
|
|
224
|
-
min-height: 20px;
|
|
225
|
-
padding: 1px 3px;
|
|
226
|
-
}
|
|
227
|
-
|
|
228
|
-
.selected-quality {
|
|
229
|
-
font-size: 9px;
|
|
230
|
-
}
|
|
231
|
-
|
|
232
|
-
.current-quality {
|
|
233
|
-
font-size: 6px;
|
|
234
|
-
}
|
|
235
|
-
|
|
236
|
-
.controls-right .brand-logo {
|
|
237
|
-
height: 18px;
|
|
238
|
-
max-width: 40px;
|
|
239
|
-
margin-right: 2px;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
.volume-slider {
|
|
243
|
-
width: 25px;
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
/* Menu settings ultra-compatto */
|
|
247
|
-
.settings-menu {
|
|
248
|
-
min-width: 140px;
|
|
249
|
-
font-size: 11px;
|
|
250
|
-
}
|
|
251
|
-
|
|
252
|
-
.settings-option {
|
|
253
|
-
padding: 5px 10px;
|
|
254
|
-
font-size: 11px;
|
|
255
|
-
}
|
|
256
|
-
|
|
257
|
-
.settings-submenu {
|
|
258
|
-
min-width: 120px;
|
|
259
|
-
}
|
|
260
|
-
|
|
261
|
-
.settings-suboption {
|
|
262
|
-
padding: 5px 10px;
|
|
263
|
-
font-size: 10px;
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
|
|
267
|
-
/* OVERFLOW HANDLING - CRITICAL FIX */
|
|
268
|
-
@media (max-width: 600px) {
|
|
269
|
-
.controls-main {
|
|
270
|
-
/* Allow horizontal scrolling if absolutely necessary */
|
|
271
|
-
overflow-x: auto;
|
|
272
|
-
scrollbar-width: none; /* Firefox */
|
|
273
|
-
-ms-overflow-style: none; /* Internet Explorer 10+ */
|
|
274
|
-
}
|
|
275
|
-
|
|
276
|
-
.controls-main::-webkit-scrollbar {
|
|
277
|
-
display: none; /* Safari and Chrome */
|
|
278
|
-
}
|
|
279
|
-
|
|
280
|
-
.controls-left,
|
|
281
|
-
.controls-right {
|
|
282
|
-
/* Ensure buttons stay in a single line */
|
|
283
|
-
flex-wrap: nowrap;
|
|
284
|
-
white-space: nowrap;
|
|
285
|
-
/* Allow further shrinking */
|
|
286
|
-
flex-shrink: 1;
|
|
287
|
-
min-width: fit-content;
|
|
288
|
-
}
|
|
289
|
-
}
|
|
290
|
-
|
|
291
|
-
/* PLAYLIST CONTROLS */
|
|
292
|
-
.controls-right .playlist-prev-btn,
|
|
293
|
-
.controls-right .playlist-next-btn {
|
|
294
|
-
display: none; /* Hidden by default, shown only when playlist is detected */
|
|
295
|
-
}
|
|
296
|
-
|
|
297
|
-
.controls-right .playlist-prev-btn.playlist-active,
|
|
298
|
-
.controls-right .playlist-next-btn.playlist-active {
|
|
299
|
-
display: flex;
|
|
300
|
-
}
|
|
301
|
-
|
|
302
|
-
/* Playlist button styles */
|
|
303
|
-
.playlist-prev-btn .icon::before {
|
|
304
|
-
content: '⏮';
|
|
305
|
-
}
|
|
306
|
-
|
|
307
|
-
.playlist-next-btn .icon::before {
|
|
308
|
-
content: '⏭';
|
|
309
|
-
}
|
|
310
|
-
|
|
311
|
-
/* Disabled state for playlist buttons */
|
|
312
|
-
.playlist-prev-btn:disabled,
|
|
313
|
-
.playlist-next-btn:disabled {
|
|
314
|
-
opacity: 0.4;
|
|
315
|
-
cursor: not-allowed;
|
|
316
|
-
pointer-events: none;
|
|
317
|
-
}
|
|
318
|
-
|
|
319
|
-
.playlist-prev-btn:disabled .icon,
|
|
320
|
-
.playlist-next-btn:disabled .icon {
|
|
321
|
-
opacity: 0.5;
|
|
322
|
-
}
|
|
323
|
-
|
|
324
|
-
/* Responsive playlist buttons */
|
|
325
|
-
@media (max-width: 768px) {
|
|
326
|
-
.playlist-prev-btn .icon::before,
|
|
327
|
-
.playlist-next-btn .icon::before {
|
|
328
|
-
font-size: 16px;
|
|
329
|
-
}
|
|
330
|
-
}
|
|
331
|
-
|
|
332
|
-
@media (max-width: 480px) {
|
|
333
|
-
.playlist-prev-btn .icon::before,
|
|
334
|
-
.playlist-next-btn .icon::before {
|
|
335
|
-
font-size: 14px;
|
|
336
|
-
}
|
|
337
|
-
}
|
|
338
|
-
|
|
339
|
-
/* FULLSCREEN */
|
|
340
|
-
.video-container:fullscreen,
|
|
341
|
-
.video-container:-webkit-full-screen,
|
|
342
|
-
.video-container:-moz-full-screen {
|
|
343
|
-
width: 100vw;
|
|
344
|
-
height: 100vh;
|
|
345
|
-
border-radius: 0;
|
|
346
|
-
}
|
|
347
|
-
|
|
348
|
-
/* ANIMATIONS */
|
|
349
|
-
@keyframes qualityChange {
|
|
350
|
-
0% {
|
|
351
|
-
opacity: 0.7;
|
|
352
|
-
}
|
|
353
|
-
|
|
354
|
-
50% {
|
|
355
|
-
opacity: 0.3;
|
|
356
|
-
}
|
|
357
|
-
|
|
358
|
-
100% {
|
|
359
|
-
opacity: 1;
|
|
360
|
-
}
|
|
361
|
-
}
|
|
362
|
-
|
|
363
|
-
.quality-changing {
|
|
364
|
-
animation: qualityChange 0.5s ease-in-out;
|
|
365
|
-
}
|
|
366
|
-
|
|
367
|
-
/* FOCUS ACCESSIBILITY */
|
|
368
|
-
.control-btn:focus {
|
|
369
|
-
outline: 2px solid var(--player-primary-color);
|
|
370
|
-
outline-offset: 2px;
|
|
371
|
-
}
|
|
372
|
-
|
|
373
|
-
.volume-slider:focus {
|
|
374
|
-
outline: 2px solid var(--player-primary-color);
|
|
375
|
-
outline-offset: 2px;
|
|
376
|
-
}
|
|
377
|
-
|
|
378
|
-
/* THEME UTILITIES */
|
|
379
|
-
.player-large-controls {
|
|
380
|
-
--player-icon-size: 24px;
|
|
381
|
-
--player-button-padding: 12px;
|
|
382
|
-
--player-progress-height: 8px;
|
|
383
|
-
--player-progress-handle-size: 20px;
|
|
384
|
-
--player-title-overlay-padding: 18px 24px 30px;
|
|
385
|
-
}
|
|
386
|
-
|
|
387
|
-
.player-compact-controls {
|
|
388
|
-
--player-icon-size: 16px;
|
|
389
|
-
--player-button-padding: 4px;
|
|
390
|
-
--player-controls-padding: 15px 10px 10px;
|
|
391
|
-
--player-title-overlay-padding: 12px 16px 20px;
|
|
392
|
-
}
|
|
393
|
-
|
|
394
|
-
/* FIREFOX-SPECIFIC VOLUME SLIDER FIX */
|
|
395
|
-
@-moz-document url-prefix() {
|
|
396
|
-
.volume-slider::-moz-range-thumb {
|
|
397
|
-
/* Additional Firefox alignment correction */
|
|
398
|
-
transform: translateY(calc((var(--player-volume-height) - var(--player-volume-handle-size)) / 2 - 2px));
|
|
399
|
-
}
|
|
400
|
-
|
|
401
|
-
.volume-slider::-moz-range-thumb:hover {
|
|
402
|
-
transform: translateY(calc((var(--player-volume-height) - var(--player-volume-handle-size)) / 2 - 2px)) scale(1.1);
|
|
403
|
-
}
|
|
404
|
-
/* Ensure the track alignment is also correct */
|
|
405
|
-
.volume-slider::-moz-range-track {
|
|
406
|
-
height: var(--player-volume-height);
|
|
407
|
-
background: linear-gradient(to right, var(--player-primary-dark) 0%, var(--player-primary-dark) var(--player-volume-fill), var(--player-volume-bg) var(--player-volume-fill), var(--player-volume-bg) 100%);
|
|
408
|
-
border-radius: calc(var(--player-volume-height) / 2);
|
|
409
|
-
border: none;
|
|
410
|
-
transition: background var(--player-transition-fast);
|
|
411
|
-
margin: 0;
|
|
412
|
-
}
|
|
413
|
-
}
|
|
414
|
-
|
|
415
|
-
/* Alternative approach - using Firefox-specific selector */
|
|
416
|
-
@supports (-moz-appearance: none) {
|
|
417
|
-
.volume-slider {
|
|
418
|
-
/* Slight vertical adjustment for Firefox only */
|
|
419
|
-
margin-top: -1px;
|
|
420
|
-
}
|
|
421
|
-
|
|
422
|
-
.volume-slider::-moz-range-thumb {
|
|
423
|
-
transform: translateY(calc((var(--player-volume-height) - var(--player-volume-handle-size)) / 2 - 1.5px));
|
|
424
|
-
}
|
|
425
|
-
|
|
426
|
-
.volume-slider::-moz-range-thumb:hover {
|
|
427
|
-
transform: translateY(calc((var(--player-volume-height) - var(--player-volume-handle-size)) / 2 - 1.5px)) scale(1.1);
|
|
428
|
-
}
|
|
429
|
-
}
|
|
430
|
-
|
|
431
|
-
/* FIREFOX VOLUME CONTAINER POSITION FIX */
|
|
432
|
-
@-moz-document url-prefix() {
|
|
433
|
-
.volume-container {
|
|
434
|
-
position: relative;
|
|
435
|
-
top: 2px !important;
|
|
436
|
-
}
|
|
437
|
-
|
|
438
|
-
.volume-slider::-moz-range-thumb {
|
|
439
|
-
margin-top: -6px !important;
|
|
440
|
-
transform: translateY(-2px) !important;
|
|
441
|
-
}
|
|
442
|
-
|
|
443
|
-
.volume-slider::-moz-range-thumb:hover {
|
|
444
|
-
transform: translateY(-2px) scale(1.1) !important;
|
|
445
|
-
}
|
|
446
|
-
}
|
|
447
|
-
|
|
448
|
-
/* RESOLUTION CONTROL SYSTEM - Video resolution modes management */
|
|
449
|
-
|
|
450
|
-
/* Base styles for resolution control */
|
|
451
|
-
.video-player {
|
|
452
|
-
object-position: center center;
|
|
453
|
-
}
|
|
454
|
-
|
|
455
|
-
/* Normal (default) - maintain original aspect ratio */
|
|
456
|
-
.resolution-normal .video-player {
|
|
457
|
-
object-fit: contain;
|
|
458
|
-
object-position: center center;
|
|
459
|
-
}
|
|
460
|
-
|
|
461
|
-
/* 4:3 - Force 4:3 format */
|
|
462
|
-
.resolution-4-3 .video-player {
|
|
463
|
-
object-fit: fill;
|
|
464
|
-
aspect-ratio: 4/3;
|
|
465
|
-
}
|
|
466
|
-
|
|
467
|
-
.resolution-4-3 .video-wrapper {
|
|
468
|
-
aspect-ratio: 4/3;
|
|
469
|
-
}
|
|
470
|
-
|
|
471
|
-
/* 16:9 - Force 16:9 format */
|
|
472
|
-
.resolution-16-9 .video-player {
|
|
473
|
-
object-fit: fill;
|
|
474
|
-
aspect-ratio: 16/9;
|
|
475
|
-
}
|
|
476
|
-
|
|
477
|
-
.resolution-16-9 .video-wrapper {
|
|
478
|
-
aspect-ratio: 16/9;
|
|
479
|
-
}
|
|
480
|
-
|
|
481
|
-
/* Stretched - Stretch video to fill container completely */
|
|
482
|
-
.resolution-stretched .video-player {
|
|
483
|
-
object-fit: fill;
|
|
484
|
-
width: 100%;
|
|
485
|
-
height: 100%;
|
|
486
|
-
}
|
|
487
|
-
|
|
488
|
-
.resolution-stretched .video-wrapper {
|
|
489
|
-
height: auto;
|
|
490
|
-
min-height: 300px;
|
|
491
|
-
}
|
|
492
|
-
|
|
493
|
-
/* Fit to Screen - Adapt to screen without deforming, may crop parts */
|
|
494
|
-
.resolution-fit-to-screen .video-player {
|
|
495
|
-
object-fit: cover;
|
|
496
|
-
object-position: center center;
|
|
497
|
-
width: 100%;
|
|
498
|
-
height: 100%;
|
|
499
|
-
}
|
|
500
|
-
|
|
501
|
-
.resolution-fit-to-screen .video-wrapper {
|
|
502
|
-
height: 100vh;
|
|
503
|
-
max-height: 100vh;
|
|
504
|
-
}
|
|
505
|
-
|
|
506
|
-
/* Scale to Fit - PERFECT for smartphone videos! Scales to maximum size without distortion or cropping */
|
|
507
|
-
.resolution-scale-to-fit .video-player {
|
|
508
|
-
object-fit: contain;
|
|
509
|
-
object-position: center center;
|
|
510
|
-
width: 100%;
|
|
511
|
-
height: 100%;
|
|
512
|
-
max-width: 100vw;
|
|
513
|
-
max-height: 100vh;
|
|
514
|
-
}
|
|
515
|
-
|
|
516
|
-
.resolution-scale-to-fit .video-wrapper {
|
|
517
|
-
display: flex;
|
|
518
|
-
align-items: center;
|
|
519
|
-
justify-content: center;
|
|
520
|
-
height: 70vh;
|
|
521
|
-
min-height: 400px;
|
|
522
|
-
background: var(--player-bg-primary, #000);
|
|
523
|
-
}
|
|
524
|
-
|
|
525
|
-
/* Enhanced scale-to-fit for different viewport orientations */
|
|
526
|
-
@media (orientation: portrait) {
|
|
527
|
-
.resolution-scale-to-fit .video-wrapper {
|
|
528
|
-
height: 50vh;
|
|
529
|
-
min-height: 350px;
|
|
530
|
-
}
|
|
531
|
-
}
|
|
532
|
-
|
|
533
|
-
@media (orientation: landscape) {
|
|
534
|
-
.resolution-scale-to-fit .video-wrapper {
|
|
535
|
-
height: 80vh;
|
|
536
|
-
min-height: 450px;
|
|
537
|
-
}
|
|
538
|
-
}
|
|
539
|
-
|
|
540
|
-
/* Responsive adjustments for resolution modes */
|
|
541
|
-
@media (max-width: 768px) {
|
|
542
|
-
/* On mobile, some modes might need adjustments */
|
|
543
|
-
.resolution-fit-to-screen .video-wrapper {
|
|
544
|
-
height: 50vh;
|
|
545
|
-
min-height: 250px;
|
|
546
|
-
}
|
|
547
|
-
|
|
548
|
-
.resolution-4-3 .video-wrapper,
|
|
549
|
-
.resolution-16-9 .video-wrapper {
|
|
550
|
-
min-height: 200px;
|
|
551
|
-
}
|
|
552
|
-
|
|
553
|
-
.resolution-scale-to-fit .video-wrapper {
|
|
554
|
-
height: 45vh;
|
|
555
|
-
min-height: 300px;
|
|
556
|
-
}
|
|
557
|
-
}
|
|
558
|
-
|
|
559
|
-
@media (max-width: 480px) {
|
|
560
|
-
.resolution-fit-to-screen .video-wrapper {
|
|
561
|
-
height: 40vh;
|
|
562
|
-
min-height: 200px;
|
|
563
|
-
}
|
|
564
|
-
|
|
565
|
-
.resolution-4-3 .video-wrapper,
|
|
566
|
-
.resolution-16-9 .video-wrapper {
|
|
567
|
-
min-height: 180px;
|
|
568
|
-
}
|
|
569
|
-
|
|
570
|
-
.resolution-scale-to-fit .video-wrapper {
|
|
571
|
-
height: 40vh;
|
|
572
|
-
min-height: 250px;
|
|
573
|
-
}
|
|
574
|
-
}
|
|
575
|
-
|
|
576
|
-
/* Transitions for smooth changes */
|
|
577
|
-
.video-player {
|
|
578
|
-
transition: object-fit 0.3s ease, aspect-ratio 0.3s ease;
|
|
579
|
-
}
|
|
580
|
-
|
|
581
|
-
.video-wrapper {
|
|
582
|
-
transition: aspect-ratio 0.3s ease, height 0.3s ease;
|
|
583
|
-
}
|
|
584
|
-
|
|
585
|
-
/* Fallback for browsers that don't support aspect-ratio */
|
|
586
|
-
@supports not (aspect-ratio: 1) {
|
|
587
|
-
.resolution-4-3 .video-wrapper {
|
|
588
|
-
padding-bottom: 75%; /* 4:3 ratio fallback */
|
|
589
|
-
height: 0;
|
|
590
|
-
position: relative;
|
|
591
|
-
}
|
|
592
|
-
|
|
593
|
-
.resolution-4-3 .video-player {
|
|
594
|
-
position: absolute;
|
|
595
|
-
top: 0;
|
|
596
|
-
left: 0;
|
|
597
|
-
width: 100%;
|
|
598
|
-
height: 100%;
|
|
599
|
-
}
|
|
600
|
-
|
|
601
|
-
.resolution-16-9 .video-wrapper {
|
|
602
|
-
padding-bottom: 56.25%; /* 16:9 ratio fallback */
|
|
603
|
-
height: 0;
|
|
604
|
-
position: relative;
|
|
605
|
-
}
|
|
606
|
-
|
|
607
|
-
.resolution-16-9 .video-player {
|
|
608
|
-
position: absolute;
|
|
609
|
-
top: 0;
|
|
610
|
-
left: 0;
|
|
611
|
-
width: 100%;
|
|
612
|
-
height: 100%;
|
|
613
|
-
}
|
|
614
|
-
}
|
|
615
|
-
|
|
616
|
-
/* Quality changing state - show loading during quality change */
|
|
617
|
-
.quality-changing .video-player {
|
|
618
|
-
filter: brightness(0.7);
|
|
619
|
-
}
|
|
620
|
-
|
|
621
|
-
/* Utility classes for debugging */
|
|
622
|
-
.resolution-debug .video-wrapper::before {
|
|
623
|
-
content: 'Resolution: ' attr(data-resolution);
|
|
624
|
-
position: absolute;
|
|
625
|
-
top: 10px;
|
|
626
|
-
left: 10px;
|
|
627
|
-
background: rgba(0, 0, 0, 0.7);
|
|
628
|
-
color: white;
|
|
629
|
-
padding: 5px 10px;
|
|
630
|
-
border-radius: 4px;
|
|
631
|
-
font-size: 12px;
|
|
632
|
-
z-index: 1000;
|
|
633
|
-
pointer-events: none;
|
|
634
|
-
}
|
|
635
|
-
|
|
636
|
-
/* CRITICAL: Ensure all control containers can handle overflow gracefully */
|
|
637
|
-
.controls,
|
|
638
|
-
.controls-main,
|
|
639
|
-
.controls-left,
|
|
640
|
-
.controls-right {
|
|
641
|
-
overflow: visible !important;
|
|
642
|
-
}
|
|
643
|
-
|
|
644
|
-
/* Force buttons to stay in one line and allow flexible sizing */
|
|
645
|
-
.controls-left,
|
|
646
|
-
.controls-right {
|
|
647
|
-
flex-wrap: nowrap !important;
|
|
648
|
-
white-space: nowrap !important;
|
|
649
|
-
}
|
|
650
|
-
|
|
651
|
-
/* Allow buttons to shrink below their natural content size when absolutely necessary */
|
|
652
|
-
.control-btn {
|
|
653
|
-
min-width: 0 !important;
|
|
654
|
-
white-space: nowrap !important;
|
|
655
|
-
}
|
|
656
|
-
/* CSS for subtitles SRT */
|
|
657
|
-
video::cue {
|
|
658
|
-
background-color: rgba(0, 0, 0, 0.8);
|
|
659
|
-
color: white;
|
|
660
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
661
|
-
font-size: 18px;
|
|
662
|
-
font-weight: normal;
|
|
663
|
-
line-height: 1.2;
|
|
664
|
-
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
|
665
|
-
padding: 4px 8px;
|
|
666
|
-
border-radius: 4px;
|
|
667
|
-
white-space: pre-line;
|
|
668
|
-
}
|
|
669
|
-
|
|
670
|
-
/* Fix for browser WebKit (Chrome, Safari, Edge) */
|
|
671
|
-
video::-webkit-media-text-track-display {
|
|
672
|
-
color: white;
|
|
673
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
674
|
-
background-color: rgba(0, 0, 0, 0.8);
|
|
675
|
-
border-radius: 4px;
|
|
676
|
-
padding: 4px 8px;
|
|
677
|
-
font-size: 18px;
|
|
678
|
-
text-shadow: 1px 1px 1px rgba(0, 0, 0, 0.8);
|
|
679
|
-
}
|
|
680
|
-
/* Custom subtitle overlay responsive styles */
|
|
681
|
-
.custom-subtitle-overlay {
|
|
682
|
-
font-size: clamp(12px, 4vw, 18px);
|
|
683
|
-
}
|
|
684
|
-
|
|
685
|
-
/* Tablet responsiveness */
|
|
686
|
-
@media (max-width: 768px) {
|
|
687
|
-
.custom-subtitle-overlay {
|
|
688
|
-
font-size: 16px !important;
|
|
689
|
-
bottom: 70px !important;
|
|
690
|
-
max-width: 85% !important;
|
|
691
|
-
padding: 6px 12px !important;
|
|
692
|
-
line-height: 1.2 !important;
|
|
693
|
-
}
|
|
694
|
-
}
|
|
695
|
-
|
|
696
|
-
/* Mobile phone responsiveness */
|
|
697
|
-
@media (max-width: 480px) {
|
|
698
|
-
.custom-subtitle-overlay {
|
|
699
|
-
font-size: 14px !important;
|
|
700
|
-
bottom: 60px !important;
|
|
701
|
-
max-width: 90% !important;
|
|
702
|
-
padding: 5px 10px !important;
|
|
703
|
-
line-height: 1.15 !important;
|
|
704
|
-
}
|
|
705
|
-
}
|
|
706
|
-
|
|
707
|
-
/* Very small screens */
|
|
708
|
-
@media (max-width: 360px) {
|
|
709
|
-
.custom-subtitle-overlay {
|
|
710
|
-
font-size: 12px !important;
|
|
711
|
-
bottom: 50px !important;
|
|
712
|
-
max-width: 95% !important;
|
|
713
|
-
padding: 4px 8px !important;
|
|
714
|
-
}
|
|
715
|
-
}
|
|
716
|
-
|
|
717
|
-
/* Landscape mobile optimization */
|
|
718
|
-
@media (max-height: 500px) and (orientation: landscape) {
|
|
719
|
-
.custom-subtitle-overlay {
|
|
720
|
-
font-size: 13px !important;
|
|
721
|
-
bottom: 45px !important;
|
|
722
|
-
max-width: 85% !important;
|
|
723
|
-
padding: 4px 10px !important;
|
|
724
|
-
}
|
|
725
|
-
}
|
|
726
|
-
|
|
727
|
-
/* Scrollable dropdown menus for small player heights */
|
|
728
|
-
.speed-menu,
|
|
729
|
-
.quality-menu,
|
|
730
|
-
.subtitles-menu {
|
|
731
|
-
max-height: 200px;
|
|
732
|
-
overflow-y: auto;
|
|
733
|
-
scrollbar-width: thin;
|
|
734
|
-
scrollbar-color: var(--player-primary-color) rgba(255, 255, 255, 0.1);
|
|
735
|
-
}
|
|
736
|
-
|
|
737
|
-
/* Custom scrollbar for WebKit browsers */
|
|
738
|
-
.speed-menu::-webkit-scrollbar,
|
|
739
|
-
.quality-menu::-webkit-scrollbar,
|
|
740
|
-
.subtitles-menu::-webkit-scrollbar {
|
|
741
|
-
width: 6px;
|
|
742
|
-
}
|
|
743
|
-
|
|
744
|
-
.speed-menu::-webkit-scrollbar-track,
|
|
745
|
-
.quality-menu::-webkit-scrollbar-track,
|
|
746
|
-
.subtitles-menu::-webkit-scrollbar-track {
|
|
747
|
-
background: rgba(255, 255, 255, 0.1);
|
|
748
|
-
border-radius: 3px;
|
|
749
|
-
}
|
|
750
|
-
|
|
751
|
-
.speed-menu::-webkit-scrollbar-thumb,
|
|
752
|
-
.quality-menu::-webkit-scrollbar-thumb,
|
|
753
|
-
.subtitles-menu::-webkit-scrollbar-thumb {
|
|
754
|
-
background: var(--player-primary-color);
|
|
755
|
-
border-radius: 3px;
|
|
756
|
-
}
|
|
757
|
-
|
|
758
|
-
.speed-menu::-webkit-scrollbar-thumb:hover,
|
|
759
|
-
.quality-menu::-webkit-scrollbar-thumb:hover,
|
|
760
|
-
.subtitles-menu::-webkit-scrollbar-thumb:hover {
|
|
761
|
-
background: var(--player-primary-hover);
|
|
762
|
-
}
|
|
763
|
-
|
|
764
|
-
/* Responsive max-height for very small players */
|
|
765
|
-
@media (max-height: 400px) {
|
|
766
|
-
.speed-menu,
|
|
767
|
-
.quality-menu,
|
|
768
|
-
.subtitles-menu {
|
|
769
|
-
max-height: 150px;
|
|
770
|
-
}
|
|
771
|
-
}
|
|
772
|
-
|
|
773
|
-
@media (max-height: 300px) {
|
|
774
|
-
.speed-menu,
|
|
775
|
-
.quality-menu,
|
|
776
|
-
.subtitles-menu {
|
|
777
|
-
max-height: 120px;
|
|
778
|
-
}
|
|
779
|
-
}
|
|
780
|
-
|
|
781
|
-
/* Scrollbar for settings submenus on small screens */
|
|
782
|
-
.settings-submenu {
|
|
783
|
-
max-height: 180px;
|
|
784
|
-
overflow-y: auto;
|
|
785
|
-
scrollbar-width: thin;
|
|
786
|
-
scrollbar-color: var(--player-primary-color) rgba(255, 255, 255, 0.1);
|
|
787
|
-
}
|
|
788
|
-
|
|
789
|
-
/* Custom scrollbar for settings submenu in WebKit browsers */
|
|
790
|
-
.settings-submenu::-webkit-scrollbar {
|
|
791
|
-
width: 6px;
|
|
792
|
-
}
|
|
793
|
-
|
|
794
|
-
.settings-submenu::-webkit-scrollbar-track {
|
|
795
|
-
background: rgba(255, 255, 255, 0.1);
|
|
796
|
-
border-radius: 3px;
|
|
797
|
-
}
|
|
798
|
-
|
|
799
|
-
.settings-submenu::-webkit-scrollbar-thumb {
|
|
800
|
-
background: var(--player-primary-color);
|
|
801
|
-
border-radius: 3px;
|
|
802
|
-
}
|
|
803
|
-
|
|
804
|
-
.settings-submenu::-webkit-scrollbar-thumb:hover {
|
|
805
|
-
background: var(--player-primary-hover);
|
|
806
|
-
}
|
|
807
|
-
|
|
808
|
-
/* Responsive adjustments for settings submenu on very small screens */
|
|
809
|
-
@media (max-width: 350px) {
|
|
810
|
-
.settings-submenu {
|
|
811
|
-
max-height: 140px;
|
|
812
|
-
}
|
|
813
|
-
}
|
|
814
|
-
|
|
815
|
-
@media (max-height: 400px) {
|
|
816
|
-
.settings-submenu {
|
|
817
|
-
max-height: 120px;
|
|
818
|
-
}
|
|
819
|
-
}
|
|
820
|
-
|
|
821
|
-
/* Volume Slider Configuration - Base styles */
|
|
822
|
-
.volume-container {
|
|
823
|
-
position: relative;
|
|
824
|
-
display: flex;
|
|
825
|
-
align-items: center;
|
|
826
|
-
gap: var(--player-controls-gap);
|
|
827
|
-
}
|
|
828
|
-
|
|
829
|
-
/* Horizontal Volume Slider (default) - Base width reduced */
|
|
830
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
831
|
-
width: 80px;
|
|
832
|
-
height: var(--player-volume-height);
|
|
833
|
-
background: var(--player-volume-bg);
|
|
834
|
-
border-radius: calc(var(--player-volume-height) / 2);
|
|
835
|
-
transition: all 0.3s ease;
|
|
836
|
-
}
|
|
837
|
-
|
|
838
|
-
/* Responsive width reduction for horizontal slider */
|
|
839
|
-
@media (max-width: 1200px) {
|
|
840
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
841
|
-
width: 70px;
|
|
842
|
-
}
|
|
843
|
-
}
|
|
844
|
-
|
|
845
|
-
@media (max-width: 900px) {
|
|
846
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
847
|
-
width: 60px;
|
|
848
|
-
}
|
|
849
|
-
}
|
|
850
|
-
|
|
851
|
-
@media (max-width: 768px) {
|
|
852
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
853
|
-
width: 50px;
|
|
854
|
-
}
|
|
855
|
-
}
|
|
856
|
-
|
|
857
|
-
@media (max-width: 600px) {
|
|
858
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
859
|
-
width: 40px;
|
|
860
|
-
}
|
|
861
|
-
}
|
|
862
|
-
|
|
863
|
-
@media (max-width: 550px) {
|
|
864
|
-
/* Hide tooltip on mobile */
|
|
865
|
-
.volume-container[data-mobile-slider="show"] .volume-tooltip {
|
|
866
|
-
display: none !important;
|
|
867
|
-
}
|
|
868
|
-
|
|
869
|
-
/* Volume container */
|
|
870
|
-
.volume-container[data-mobile-slider="show"] {
|
|
871
|
-
pointer-events: auto !important;
|
|
872
|
-
position: relative;
|
|
873
|
-
}
|
|
874
|
-
|
|
875
|
-
/* Mute button */
|
|
876
|
-
.mute-btn {
|
|
877
|
-
position: relative;
|
|
878
|
-
z-index: 100;
|
|
879
|
-
pointer-events: auto !important;
|
|
880
|
-
}
|
|
881
|
-
|
|
882
|
-
/* Hide slider by default - stay open for 2 seconds */
|
|
883
|
-
.volume-container[data-mobile-slider="show"] .volume-slider {
|
|
884
|
-
position: absolute;
|
|
885
|
-
opacity: 0;
|
|
886
|
-
visibility: hidden;
|
|
887
|
-
pointer-events: none;
|
|
888
|
-
width: 0;
|
|
889
|
-
height: 0;
|
|
890
|
-
transform: translateX(-100%);
|
|
891
|
-
transition: opacity 0s ease, visibility 0s ease 2s, width 0s ease 2s;
|
|
892
|
-
}
|
|
893
|
-
|
|
894
|
-
/* Show slider on hover */
|
|
895
|
-
.controls-left:hover .volume-container[data-mobile-slider="show"] .volume-slider,
|
|
896
|
-
.mute-btn:hover ~ .volume-container[data-mobile-slider="show"] .volume-slider,
|
|
897
|
-
.volume-container[data-mobile-slider="show"]:hover .volume-slider,
|
|
898
|
-
.volume-slider:hover {
|
|
899
|
-
position: absolute;
|
|
900
|
-
opacity: 1;
|
|
901
|
-
visibility: visible;
|
|
902
|
-
pointer-events: auto !important;
|
|
903
|
-
width: 90px !important;
|
|
904
|
-
height: auto;
|
|
905
|
-
bottom: auto;
|
|
906
|
-
top: 50%;
|
|
907
|
-
left: 5px;
|
|
908
|
-
transform: translateY(-50%);
|
|
909
|
-
z-index: 19;
|
|
910
|
-
background: rgba(0, 0, 0, 0.92) !important;
|
|
911
|
-
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
912
|
-
border-radius: 8px;
|
|
913
|
-
padding: 10px 14px;
|
|
914
|
-
box-shadow: 0 4px 16px rgba(0, 0, 0, 0.6);
|
|
915
|
-
backdrop-filter: blur(10px);
|
|
916
|
-
transition: opacity 0.2s ease, visibility 0s ease, width 0.2s ease;
|
|
917
|
-
}
|
|
918
|
-
|
|
919
|
-
/* Keep slider open when hovering controls-left */
|
|
920
|
-
.controls-left:has(.volume-container[data-mobile-slider="show"]):hover {
|
|
921
|
-
pointer-events: auto !important;
|
|
922
|
-
}
|
|
923
|
-
|
|
924
|
-
/* Track styling */
|
|
925
|
-
.controls-left:hover .volume-slider::-webkit-slider-runnable-track,
|
|
926
|
-
.volume-container[data-mobile-slider="show"]:hover .volume-slider::-webkit-slider-runnable-track,
|
|
927
|
-
.volume-slider:hover::-webkit-slider-runnable-track {
|
|
928
|
-
width: 60px;
|
|
929
|
-
height: 4px !important;
|
|
930
|
-
background: linear-gradient(to right, var(--player-primary-color) 0%, var(--player-primary-color) var(--player-volume-fill, 50%), rgba(255, 255, 255, 0.4) var(--player-volume-fill, 50%), rgba(255, 255, 255, 0.4) 100%) !important;
|
|
931
|
-
border-radius: 2px;
|
|
932
|
-
}
|
|
933
|
-
|
|
934
|
-
/* Thumb styling */
|
|
935
|
-
.controls-left:hover .volume-slider::-webkit-slider-thumb,
|
|
936
|
-
.volume-container[data-mobile-slider="show"]:hover .volume-slider::-webkit-slider-thumb,
|
|
937
|
-
.volume-slider:hover::-webkit-slider-thumb {
|
|
938
|
-
opacity: 1 !important;
|
|
939
|
-
visibility: visible !important;
|
|
940
|
-
-webkit-appearance: none;
|
|
941
|
-
width: 14px;
|
|
942
|
-
height: 14px;
|
|
943
|
-
border-radius: 50%;
|
|
944
|
-
background: white;
|
|
945
|
-
cursor: pointer;
|
|
946
|
-
box-shadow: 0 2px 6px rgba(0, 0, 0, 0.5);
|
|
947
|
-
margin-top: -5px;
|
|
948
|
-
}
|
|
949
|
-
}
|
|
950
|
-
|
|
951
|
-
/* CHAPTER MARKERS SYSTEM */
|
|
952
|
-
|
|
953
|
-
/* Container for all chapter markers */
|
|
954
|
-
.chapter-markers-container {
|
|
955
|
-
position: absolute;
|
|
956
|
-
top: 0;
|
|
957
|
-
left: 0;
|
|
958
|
-
width: 100%;
|
|
959
|
-
height: 100%;
|
|
960
|
-
pointer-events: none;
|
|
961
|
-
z-index: 3;
|
|
962
|
-
}
|
|
963
|
-
|
|
964
|
-
/* Individual chapter marker */
|
|
965
|
-
.chapter-marker {
|
|
966
|
-
position: absolute;
|
|
967
|
-
top: 0;
|
|
968
|
-
height: 100%;
|
|
969
|
-
width: 3px;
|
|
970
|
-
background: var(--player-primary-color);
|
|
971
|
-
opacity: 0.7;
|
|
972
|
-
cursor: pointer;
|
|
973
|
-
pointer-events: auto;
|
|
974
|
-
transition: all var(--player-transition-fast);
|
|
975
|
-
border-radius: 2px;
|
|
976
|
-
transform: translateX(-50%);
|
|
977
|
-
}
|
|
978
|
-
|
|
979
|
-
/* Hover state for chapter marker */
|
|
980
|
-
.chapter-marker:hover {
|
|
981
|
-
opacity: 1;
|
|
982
|
-
width: 4px;
|
|
983
|
-
height: 120%;
|
|
984
|
-
top: -10%;
|
|
985
|
-
box-shadow: 0 0 8px var(--player-primary-color);
|
|
986
|
-
}
|
|
987
|
-
|
|
988
|
-
/* Active chapter marker (currently playing) */
|
|
989
|
-
.chapter-marker.active {
|
|
990
|
-
background: var(--player-primary-hover);
|
|
991
|
-
opacity: 1;
|
|
992
|
-
width: 4px;
|
|
993
|
-
}
|
|
994
|
-
|
|
995
|
-
/* Chapter tooltip */
|
|
996
|
-
.chapter-tooltip {
|
|
997
|
-
position: absolute;
|
|
998
|
-
bottom: 100%;
|
|
999
|
-
left: 0;
|
|
1000
|
-
background: rgba(0, 0, 0, 0.95);
|
|
1001
|
-
backdrop-filter: blur(10px);
|
|
1002
|
-
border-radius: 8px;
|
|
1003
|
-
padding: 0;
|
|
1004
|
-
margin-bottom: 12px;
|
|
1005
|
-
opacity: 0;
|
|
1006
|
-
visibility: hidden;
|
|
1007
|
-
transition: all 0.2s ease;
|
|
1008
|
-
transform: translateX(-50%) translateY(-8px);
|
|
1009
|
-
z-index: 1000;
|
|
1010
|
-
box-shadow: var(--player-shadow-tooltip);
|
|
1011
|
-
border: 1px solid rgba(255, 255, 255, 0.15);
|
|
1012
|
-
min-width: 200px;
|
|
1013
|
-
max-width: 300px;
|
|
1014
|
-
overflow: hidden;
|
|
1015
|
-
pointer-events: none;
|
|
1016
|
-
}
|
|
1017
|
-
|
|
1018
|
-
/* Tooltip arrow */
|
|
1019
|
-
.chapter-tooltip::after {
|
|
1020
|
-
content: '';
|
|
1021
|
-
position: absolute;
|
|
1022
|
-
top: 100%;
|
|
1023
|
-
left: 50%;
|
|
1024
|
-
transform: translateX(-50%);
|
|
1025
|
-
width: 0;
|
|
1026
|
-
height: 0;
|
|
1027
|
-
border-left: 6px solid transparent;
|
|
1028
|
-
border-right: 6px solid transparent;
|
|
1029
|
-
border-top: 6px solid rgba(0, 0, 0, 0.95);
|
|
1030
|
-
}
|
|
1031
|
-
|
|
1032
|
-
/* Chapter tooltip image */
|
|
1033
|
-
.chapter-tooltip-image {
|
|
1034
|
-
width: 100%;
|
|
1035
|
-
height: 150px;
|
|
1036
|
-
background-size: cover;
|
|
1037
|
-
background-position: center;
|
|
1038
|
-
background-repeat: no-repeat;
|
|
1039
|
-
display: none;
|
|
1040
|
-
border-bottom: 1px solid rgba(255, 255, 255, 0.1);
|
|
1041
|
-
}
|
|
1042
|
-
|
|
1043
|
-
/* Chapter tooltip title */
|
|
1044
|
-
.chapter-tooltip-title {
|
|
1045
|
-
padding: 10px 12px 6px;
|
|
1046
|
-
color: var(--player-text-color);
|
|
1047
|
-
font-size: 14px;
|
|
1048
|
-
font-weight: 600;
|
|
1049
|
-
line-height: 1.3;
|
|
1050
|
-
word-wrap: break-word;
|
|
1051
|
-
}
|
|
1052
|
-
|
|
1053
|
-
/* Chapter tooltip time */
|
|
1054
|
-
.chapter-tooltip-time {
|
|
1055
|
-
padding: 0 12px 10px;
|
|
1056
|
-
color: var(--player-text-secondary);
|
|
1057
|
-
font-size: 12px;
|
|
1058
|
-
font-weight: 400;
|
|
1059
|
-
font-variant-numeric: tabular-nums;
|
|
1060
|
-
}
|
|
1061
|
-
|
|
1062
|
-
/* RESPONSIVE ADJUSTMENTS FOR CHAPTERS */
|
|
1063
|
-
@media (max-width: 480px) {
|
|
1064
|
-
.chapter-marker {
|
|
1065
|
-
width: 2px;
|
|
1066
|
-
}
|
|
1067
|
-
|
|
1068
|
-
.chapter-marker:hover {
|
|
1069
|
-
width: 3px;
|
|
1070
|
-
}
|
|
1071
|
-
|
|
1072
|
-
.chapter-tooltip {
|
|
1073
|
-
min-width: 160px;
|
|
1074
|
-
max-width: 250px;
|
|
1075
|
-
}
|
|
1076
|
-
|
|
1077
|
-
.chapter-tooltip-image {
|
|
1078
|
-
height: 100px;
|
|
1079
|
-
}
|
|
1080
|
-
}
|
|
1081
|
-
/* VIDEO POSTER OVERLAY - THEMED VERSION */
|
|
1082
|
-
|
|
1083
|
-
/* Custom poster overlay to prevent disappearing */
|
|
1084
|
-
.video-poster-overlay {
|
|
1085
|
-
position: absolute;
|
|
1086
|
-
top: 0;
|
|
1087
|
-
left: 0;
|
|
1088
|
-
width: 100%;
|
|
1089
|
-
height: 100%;
|
|
1090
|
-
background-size: cover;
|
|
1091
|
-
background-position: center;
|
|
1092
|
-
background-repeat: no-repeat;
|
|
1093
|
-
z-index: 1;
|
|
1094
|
-
cursor: pointer;
|
|
1095
|
-
opacity: 0;
|
|
1096
|
-
visibility: hidden;
|
|
1097
|
-
transition: opacity 0.3s ease, visibility 0.3s ease;
|
|
1098
|
-
pointer-events: none;
|
|
1099
|
-
}
|
|
1100
|
-
|
|
1101
|
-
/* Visible state */
|
|
1102
|
-
.video-poster-overlay.visible {
|
|
1103
|
-
opacity: 1;
|
|
1104
|
-
visibility: visible;
|
|
1105
|
-
pointer-events: auto;
|
|
1106
|
-
}
|
|
1107
|
-
|
|
1108
|
-
/* Hidden state */
|
|
1109
|
-
.video-poster-overlay.hidden {
|
|
1110
|
-
opacity: 0;
|
|
1111
|
-
visibility: hidden;
|
|
1112
|
-
pointer-events: none;
|
|
1113
|
-
}
|
|
1114
|
-
|
|
1115
|
-
/* Hover effect on poster */
|
|
1116
|
-
.video-poster-overlay.visible:hover {
|
|
1117
|
-
opacity: 0.95;
|
|
1118
|
-
}
|
|
1119
|
-
|
|
1120
|
-
/* Play button overlay on poster - THEMED COLORS 🎨 */
|
|
1121
|
-
.video-poster-overlay::after {
|
|
1122
|
-
content: '';
|
|
1123
|
-
position: absolute;
|
|
1124
|
-
top: 50%;
|
|
1125
|
-
left: 50%;
|
|
1126
|
-
transform: translate(-50%, -50%);
|
|
1127
|
-
width: 80px;
|
|
1128
|
-
height: 80px;
|
|
1129
|
-
background: rgba(0, 0, 0, 0.7);
|
|
1130
|
-
border-radius: 50%;
|
|
1131
|
-
border: 3px solid var(--player-primary-color); /* THEMED BORDER ✨ */
|
|
1132
|
-
opacity: 0;
|
|
1133
|
-
transition: opacity 0.3s ease, transform 0.3s ease, border-color 0.3s ease;
|
|
1134
|
-
pointer-events: none;
|
|
1135
|
-
}
|
|
1136
|
-
|
|
1137
|
-
/* Show play button on hover with animation and themed glow */
|
|
1138
|
-
.video-poster-overlay.visible:hover::after {
|
|
1139
|
-
opacity: 1;
|
|
1140
|
-
transform: translate(-50%, -50%) scale(1.1);
|
|
1141
|
-
border-color: var(--player-primary-hover); /* THEMED HOVER COLOR 🌟 */
|
|
1142
|
-
box-shadow: 0 0 20px var(--player-primary-color); /* THEMED GLOW 💫 */
|
|
1143
|
-
}
|
|
1144
|
-
|
|
1145
|
-
/* Play icon triangle - THEMED COLOR 🎨 */
|
|
1146
|
-
.video-poster-overlay::before {
|
|
1147
|
-
content: '';
|
|
1148
|
-
position: absolute;
|
|
1149
|
-
top: 50%;
|
|
1150
|
-
left: 50%;
|
|
1151
|
-
transform: translate(-40%, -50%);
|
|
1152
|
-
width: 0;
|
|
1153
|
-
height: 0;
|
|
1154
|
-
border-style: solid;
|
|
1155
|
-
border-width: 15px 0 15px 25px;
|
|
1156
|
-
border-color: transparent transparent transparent var(--player-primary-color); /* THEMED TRIANGLE ✨ */
|
|
1157
|
-
z-index: 2;
|
|
1158
|
-
opacity: 0;
|
|
1159
|
-
transition: opacity 0.3s ease, border-color 0.3s ease;
|
|
1160
|
-
pointer-events: none;
|
|
1161
|
-
}
|
|
1162
|
-
|
|
1163
|
-
/* Show play icon on hover with themed color */
|
|
1164
|
-
.video-poster-overlay.visible:hover::before {
|
|
1165
|
-
opacity: 1;
|
|
1166
|
-
border-color: transparent transparent transparent var(--player-primary-hover); /* THEMED HOVER 🌟 */
|
|
1167
|
-
}
|
|
1168
|
-
|
|
1169
|
-
/* Responsive adjustments */
|
|
1170
|
-
@media (max-width: 768px) {
|
|
1171
|
-
.video-poster-overlay::after {
|
|
1172
|
-
width: 60px;
|
|
1173
|
-
height: 60px;
|
|
1174
|
-
}
|
|
1175
|
-
|
|
1176
|
-
.video-poster-overlay::before {
|
|
1177
|
-
border-width: 12px 0 12px 20px;
|
|
1178
|
-
}
|
|
1179
|
-
}
|
|
1180
|
-
|
|
1181
|
-
@media (max-width: 480px) {
|
|
1182
|
-
.video-poster-overlay::after {
|
|
1183
|
-
width: 50px;
|
|
1184
|
-
height: 50px;
|
|
1185
|
-
}
|
|
1186
|
-
|
|
1187
|
-
.video-poster-overlay::before {
|
|
1188
|
-
border-width: 10px 0 10px 16px;
|
|
1189
|
-
}
|
|
1190
|
-
}
|
|
1191
|
-
|
|
1192
|
-
/* Ensure smooth transition when poster hides */
|
|
1193
|
-
.video-poster-overlay.hidden {
|
|
1194
|
-
transition: opacity 0.5s ease, visibility 0s ease 0.5s;
|
|
1195
|
-
}
|
|
1196
|
-
|
|
1197
|
-
/* THEME-SPECIFIC OVERRIDES (optional fine-tuning) */
|
|
1198
|
-
|
|
1199
|
-
/* Blue theme 💙 */
|
|
1200
|
-
.player-theme-blue .video-poster-overlay::after {
|
|
1201
|
-
border-color: #2196F3;
|
|
1202
|
-
}
|
|
1203
|
-
|
|
1204
|
-
.player-theme-blue .video-poster-overlay.visible:hover::after {
|
|
1205
|
-
border-color: #1976D2;
|
|
1206
|
-
box-shadow: 0 0 20px #2196F3;
|
|
1207
|
-
}
|
|
1208
|
-
|
|
1209
|
-
.player-theme-blue .video-poster-overlay::before {
|
|
1210
|
-
border-color: transparent transparent transparent #2196F3;
|
|
1211
|
-
}
|
|
1212
|
-
|
|
1213
|
-
.player-theme-blue .video-poster-overlay.visible:hover::before {
|
|
1214
|
-
border-color: transparent transparent transparent #1976D2;
|
|
1215
|
-
}
|
|
1216
|
-
|
|
1217
|
-
/* Green theme 💚 */
|
|
1218
|
-
.player-theme-green .video-poster-overlay::after {
|
|
1219
|
-
border-color: #4CAF50;
|
|
1220
|
-
}
|
|
1221
|
-
|
|
1222
|
-
.player-theme-green .video-poster-overlay.visible:hover::after {
|
|
1223
|
-
border-color: #45a049;
|
|
1224
|
-
box-shadow: 0 0 20px #4CAF50;
|
|
1225
|
-
}
|
|
1226
|
-
|
|
1227
|
-
.player-theme-green .video-poster-overlay::before {
|
|
1228
|
-
border-color: transparent transparent transparent #4CAF50;
|
|
1229
|
-
}
|
|
1230
|
-
|
|
1231
|
-
.player-theme-green .video-poster-overlay.visible:hover::before {
|
|
1232
|
-
border-color: transparent transparent transparent #45a049;
|
|
1233
|
-
}
|
|
1234
|
-
|
|
1235
|
-
/* Red theme ❤️ */
|
|
1236
|
-
.player-theme-red .video-poster-overlay::after {
|
|
1237
|
-
border-color: #f44336;
|
|
1238
|
-
}
|
|
1239
|
-
|
|
1240
|
-
.player-theme-red .video-poster-overlay.visible:hover::after {
|
|
1241
|
-
border-color: #d32f2f;
|
|
1242
|
-
box-shadow: 0 0 20px #f44336;
|
|
1243
|
-
}
|
|
1244
|
-
|
|
1245
|
-
.player-theme-red .video-poster-overlay::before {
|
|
1246
|
-
border-color: transparent transparent transparent #f44336;
|
|
1247
|
-
}
|
|
1248
|
-
|
|
1249
|
-
.player-theme-red .video-poster-overlay.visible:hover::before {
|
|
1250
|
-
border-color: transparent transparent transparent #d32f2f;
|
|
1251
|
-
}
|
|
1252
|
-
|
|
1253
|
-
/* Dark theme 🖤 (uses default goldenrod) */
|
|
1254
|
-
.player-theme-dark .video-poster-overlay::after {
|
|
1255
|
-
background: rgba(0, 0, 0, 0.85); /* Slightly darker background for dark theme */
|
|
1256
|
-
}
|
|
1257
|
-
|
|
1258
|
-
/* screen height adjust */
|
|
1259
|
-
@media (max-height: 400px) {
|
|
1260
|
-
.video-player {
|
|
1261
|
-
min-height: 200px;
|
|
1262
|
-
}
|
|
1263
|
-
|
|
1264
|
-
.controls {
|
|
1265
|
-
min-height: 50px !important;
|
|
1266
|
-
padding: 10px 10px 8px !important;
|
|
1267
|
-
}
|
|
1268
|
-
|
|
1269
|
-
.progress-container {
|
|
1270
|
-
margin-bottom: 8px;
|
|
1271
|
-
}
|
|
1272
|
-
|
|
1273
|
-
.controls-main {
|
|
1274
|
-
min-height: 32px !important;
|
|
1275
|
-
}
|
|
1276
|
-
}
|
|
1277
|
-
|
|
1278
|
-
@media (max-height: 330px) {
|
|
1279
|
-
.video-player {
|
|
1280
|
-
min-height: 150px;
|
|
1281
|
-
}
|
|
1282
|
-
|
|
1283
|
-
.controls {
|
|
1284
|
-
min-height: 45px !important;
|
|
1285
|
-
padding: 8px 8px 6px !important;
|
|
1286
|
-
}
|
|
1287
|
-
|
|
1288
|
-
.progress-container {
|
|
1289
|
-
margin-bottom: 6px;
|
|
1290
|
-
height: 4px;
|
|
1291
|
-
}
|
|
1292
|
-
|
|
1293
|
-
.controls-main {
|
|
1294
|
-
min-height: 28px !important;
|
|
1295
|
-
}
|
|
1296
|
-
|
|
1297
|
-
.control-btn {
|
|
1298
|
-
padding: 4px !important;
|
|
1299
|
-
}
|
|
1300
|
-
|
|
1301
|
-
.icon {
|
|
1302
|
-
font-size: 14px !important;
|
|
1303
|
-
}
|
|
1304
|
-
|
|
1305
|
-
.time-display {
|
|
1306
|
-
font-size: 11px !important;
|
|
1307
|
-
}
|
|
1308
|
-
}
|
|
1309
|
-
|
|
1310
|
-
@media (max-height: 250px) {
|
|
1311
|
-
.video-player {
|
|
1312
|
-
min-height: 120px;
|
|
1313
|
-
}
|
|
1314
|
-
|
|
1315
|
-
.controls {
|
|
1316
|
-
min-height: 40px !important;
|
|
1317
|
-
padding: 6px 8px 5px !important;
|
|
1318
|
-
}
|
|
1319
|
-
|
|
1320
|
-
.progress-container {
|
|
1321
|
-
margin-bottom: 4px;
|
|
1322
|
-
height: 3px;
|
|
1323
|
-
}
|
|
1324
|
-
|
|
1325
|
-
.controls-main {
|
|
1326
|
-
min-height: 24px !important;
|
|
1327
|
-
}
|
|
1328
|
-
|
|
1329
|
-
.control-btn {
|
|
1330
|
-
padding: 2px !important;
|
|
1331
|
-
}
|
|
1332
|
-
|
|
1333
|
-
.icon {
|
|
1334
|
-
font-size: 12px !important;
|
|
1335
|
-
}
|
|
1336
|
-
|
|
1337
|
-
.time-display {
|
|
1338
|
-
font-size: 10px !important;
|
|
1339
|
-
}
|
|
1340
|
-
|
|
1341
|
-
.quality-btn {
|
|
1342
|
-
min-height: 20px !important;
|
|
1343
|
-
padding: 2px 4px !important;
|
|
1344
|
-
}
|
|
1345
|
-
|
|
1346
|
-
.selected-quality {
|
|
1347
|
-
font-size: 9px !important;
|
|
1348
|
-
}
|
|
1349
|
-
|
|
1350
|
-
.current-quality {
|
|
1351
|
-
display: none;
|
|
1352
|
-
}
|
|
1353
|
-
|
|
1354
|
-
.volume-slider {
|
|
1355
|
-
width: 40px !important;
|
|
1356
|
-
}
|
|
1357
|
-
}
|
|
1358
|
-
|
|
1359
|
-
.video-container,
|
|
1360
|
-
.video-wrapper {
|
|
1361
|
-
overflow: visible !important;
|
|
1362
|
-
}
|
|
1363
|
-
|
|
1364
|
-
.controls.show {
|
|
1365
|
-
position: absolute !important;
|
|
1366
|
-
bottom: 0 !important;
|
|
1367
|
-
overflow: visible !important;
|
|
1368
|
-
}
|