eb-player 2.0.1 → 2.0.4

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.
Files changed (42) hide show
  1. package/dist/build/eb-player.css +792 -9
  2. package/dist/build/ebplayer.bundle.js +215 -60
  3. package/dist/build/ebplayer.bundle.js.map +1 -1
  4. package/dist/build/theme-forja.css +1 -1
  5. package/dist/build/theme-lequipe.css +767 -0
  6. package/dist/build/theme-modern.css +1 -1
  7. package/dist/build/theme-v2.css +1 -1
  8. package/dist/build/types/core/config.d.ts +14 -2
  9. package/dist/build/types/core/config.d.ts.map +1 -1
  10. package/dist/build/types/core/i18n.d.ts.map +1 -1
  11. package/dist/build/types/core/index.d.ts +1 -1
  12. package/dist/build/types/core/index.d.ts.map +1 -1
  13. package/dist/build/types/core/lifecycle.d.ts.map +1 -1
  14. package/dist/build/types/eb-player-standalone.d.ts +14 -3
  15. package/dist/build/types/eb-player-standalone.d.ts.map +1 -1
  16. package/dist/build/types/engines/hls.d.ts +1 -0
  17. package/dist/build/types/engines/hls.d.ts.map +1 -1
  18. package/dist/build/types/engines/snapshot/hls.d.ts +1 -1
  19. package/dist/build/types/engines/snapshot/hls.d.ts.map +1 -1
  20. package/dist/build/types/integrations/p2p-manager.d.ts.map +1 -1
  21. package/dist/build/types/skin/controls/seekbar.d.ts.map +1 -1
  22. package/dist/build/types/skin/controls/settings-panel.d.ts +8 -0
  23. package/dist/build/types/skin/controls/settings-panel.d.ts.map +1 -1
  24. package/dist/dev/default.js +734 -508
  25. package/dist/dev/default.js.map +1 -1
  26. package/dist/dev/easybroadcast.js +266 -88
  27. package/dist/dev/easybroadcast.js.map +1 -1
  28. package/dist/dev/equipe.js +6683 -0
  29. package/dist/dev/equipe.js.map +1 -0
  30. package/dist/eb-player.css +792 -9
  31. package/dist/players/easybroadcast/easybroadcast.js +397 -0
  32. package/dist/players/easybroadcast/index.html +1 -0
  33. package/dist/players/equipe/EB_lequipe-preprod.js +385 -0
  34. package/dist/players/equipe/equipe.js +385 -0
  35. package/dist/players/equipe/index.html +1 -0
  36. package/dist/players/forja/forja.js +198 -111
  37. package/dist/players/forja/index.html +1 -1
  38. package/dist/theme-forja.css +1 -1
  39. package/dist/theme-lequipe.css +767 -0
  40. package/dist/theme-modern.css +1 -1
  41. package/dist/theme-v2.css +1 -1
  42. package/package.json +8 -73
@@ -0,0 +1,767 @@
1
+ /**
2
+ * L'Equipe theme — v2 layout with L'Equipe red (#d61e00) accent
3
+ *
4
+ * Applied when the container has [data-theme="lequipe"].
5
+ * Dark UI with red accent, Inter font, rounded container,
6
+ * backdrop-blur panels, expandable volume, single-row bottom bar,
7
+ * gradient overlays, centered frosted-glass transport circles,
8
+ * and refined slide/fade animations.
9
+ */
10
+
11
+ /* ============================================================
12
+ Google Fonts (Inter 300-700)
13
+ ============================================================ */
14
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&display=swap');
15
+
16
+ /* ============================================================
17
+ Root vars & container
18
+ ============================================================ */
19
+ [data-theme="lequipe"] .eb-player {
20
+ --eb-color-primary: #d61e00;
21
+ --eb-color-progress: #d61e00;
22
+ --eb-color-background: rgba(10, 10, 20, 0.85);
23
+ --eb-accent: #d61e00;
24
+ --eb-color-text: #fff;
25
+ --eb-font-family: 'Inter', -apple-system, sans-serif;
26
+ --eb-font-size-base: 14px;
27
+ --eb-radius-control: 8px;
28
+ --eb-duration-transition: 200ms;
29
+ font-family: 'Inter', -apple-system, sans-serif;
30
+ border-radius: 0;
31
+ box-shadow: none;
32
+ color: #fff;
33
+ }
34
+
35
+ /* ============================================================
36
+ Icons: bolder stroke weight to match filled-style target
37
+ ============================================================ */
38
+ [data-theme="lequipe"] .eb-player .eb-icon {
39
+ stroke-width: 2.5;
40
+ }
41
+
42
+ /* Fullscreen: fill viewport, drop card styling */
43
+ [data-theme="lequipe"] .eb-player:fullscreen,
44
+ [data-theme="lequipe"] .eb-player:-webkit-full-screen {
45
+ border-radius: 0;
46
+ box-shadow: none;
47
+ }
48
+
49
+ /* ============================================================
50
+ Gradients (top & bottom)
51
+ ============================================================ */
52
+ [data-theme="lequipe"] .eb-player .eb-top-bar {
53
+ background: linear-gradient(to bottom, rgba(0,0,0,.72), transparent);
54
+ height: 110px;
55
+ padding: 14px 16px;
56
+ gap: 6px;
57
+ }
58
+
59
+ [data-theme="lequipe"] .eb-player .eb-bottom-bar__gradient {
60
+ height: 150px;
61
+ background: linear-gradient(to top, rgba(0,0,0,.9), transparent);
62
+ }
63
+
64
+ /* ============================================================
65
+ Top bar: slide-in from above
66
+ ============================================================ */
67
+ [data-theme="lequipe"] .eb-player.eb-controls-visible .eb-top-bar {
68
+ opacity: 1;
69
+ transform: translateY(0);
70
+ transition: opacity .3s, transform .3s;
71
+ }
72
+
73
+ [data-theme="lequipe"] .eb-player.eb-controls-hidden .eb-top-bar {
74
+ opacity: 0;
75
+ transform: translateY(-6px);
76
+ transition: opacity .3s, transform .3s;
77
+ }
78
+
79
+ [data-theme="lequipe"] .eb-player .eb-top-bar__actions {
80
+ gap: 6px;
81
+ }
82
+
83
+ /* Logo */
84
+ [data-theme="lequipe"] .eb-player .eb-top-bar__logo {
85
+ max-height: 32px;
86
+ max-width: 120px;
87
+ opacity: .85;
88
+ }
89
+
90
+ /* ============================================================
91
+ Bottom bar: slide-up animation + spacing
92
+ ============================================================ */
93
+ [data-theme="lequipe"] .eb-player .eb-bottom-bar__controls-row {
94
+ padding: 0 14px 12px;
95
+ gap: 8px;
96
+ }
97
+
98
+ [data-theme="lequipe"] .eb-player.eb-controls-visible .eb-bottom-bar {
99
+ opacity: 1;
100
+ transform: translateY(0);
101
+ transition: opacity .3s, transform .3s;
102
+ }
103
+
104
+ [data-theme="lequipe"] .eb-player.eb-controls-hidden .eb-bottom-bar {
105
+ opacity: 0;
106
+ transform: translateY(8px);
107
+ transition: opacity .3s, transform .3s;
108
+ }
109
+
110
+ /* ============================================================
111
+ Middle bar: glassmorphism transport circles
112
+ ============================================================ */
113
+ [data-theme="lequipe"] .eb-player .eb-middle-bar {
114
+ gap: 28px;
115
+ }
116
+
117
+ [data-theme="lequipe"] .eb-player.eb-controls-visible .eb-middle-bar {
118
+ opacity: 1;
119
+ transition: opacity .3s;
120
+ }
121
+
122
+ [data-theme="lequipe"] .eb-player.eb-controls-hidden .eb-middle-bar {
123
+ opacity: 0;
124
+ transition: opacity .3s;
125
+ }
126
+
127
+ /* Central play/pause — large frosted circle */
128
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__play-btn {
129
+ width: 80px;
130
+ height: 80px;
131
+ border-radius: 50%;
132
+ display: flex;
133
+ align-items: center;
134
+ justify-content: center;
135
+ background: rgba(255,255,255,.15);
136
+ backdrop-filter: blur(8px);
137
+ -webkit-backdrop-filter: blur(8px);
138
+ border: 2px solid rgba(255,255,255,.25);
139
+ color: #fff;
140
+ padding: 0;
141
+ transition: background .15s, transform .25s, opacity .25s;
142
+ }
143
+
144
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__play-btn:hover {
145
+ background: rgba(255,255,255,.25);
146
+ }
147
+
148
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__play-btn:active {
149
+ transform: scale(.92);
150
+ }
151
+
152
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__play-btn .eb-icon {
153
+ width: 32px;
154
+ height: 32px;
155
+ stroke-width: 2.5;
156
+ }
157
+
158
+ /* Seek buttons — smaller frosted circles */
159
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__seek-btn {
160
+ width: 56px;
161
+ height: 56px;
162
+ border-radius: 50%;
163
+ display: flex;
164
+ flex-direction: column;
165
+ align-items: center;
166
+ justify-content: center;
167
+ background: rgba(255,255,255,.15);
168
+ backdrop-filter: blur(8px);
169
+ -webkit-backdrop-filter: blur(8px);
170
+ border: 2px solid rgba(255,255,255,.25);
171
+ color: #fff;
172
+ gap: 1px;
173
+ padding: 0;
174
+ transition: background .15s;
175
+ }
176
+
177
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__seek-btn:hover {
178
+ background: rgba(255,255,255,.25);
179
+ }
180
+
181
+ [data-theme="lequipe"] .eb-player .eb-seek-circle {
182
+ width: 24px;
183
+ height: 24px;
184
+ color: rgba(255,255,255,.85);
185
+ fill: currentColor;
186
+ stroke: none;
187
+ }
188
+
189
+ [data-theme="lequipe"] .eb-player .eb-seek-label {
190
+ font-size: .75em;
191
+ font-weight: 700;
192
+ color: rgba(255,255,255,.9);
193
+ line-height: 1;
194
+ }
195
+
196
+ /* ============================================================
197
+ Buttons: rounded, soft color, scale on press
198
+ ============================================================ */
199
+ [data-theme="lequipe"] .eb-player .eb-button:not(.eb-middle-bar__seek-btn):not(.eb-middle-bar__play-btn),
200
+ [data-theme="lequipe"] .eb-player .eb-play-pause,
201
+ [data-theme="lequipe"] .eb-player .eb-fullscreen,
202
+ [data-theme="lequipe"] .eb-player .eb-pip,
203
+ [data-theme="lequipe"] .eb-player .eb-cast,
204
+ [data-theme="lequipe"] .eb-player .eb-volume-mute,
205
+ [data-theme="lequipe"] .eb-player .eb-live-sync {
206
+ color: rgba(255,255,255,.82);
207
+ border-radius: 8px;
208
+ width: 38px;
209
+ height: 38px;
210
+ transition: background .15s, color .15s, transform .1s;
211
+ flex-shrink: 0;
212
+ }
213
+
214
+ [data-theme="lequipe"] .eb-player .eb-button:not(.eb-middle-bar__seek-btn):not(.eb-middle-bar__play-btn):hover,
215
+ [data-theme="lequipe"] .eb-player .eb-play-pause:hover,
216
+ [data-theme="lequipe"] .eb-player .eb-fullscreen:hover,
217
+ [data-theme="lequipe"] .eb-player .eb-pip:hover,
218
+ [data-theme="lequipe"] .eb-player .eb-cast:hover,
219
+ [data-theme="lequipe"] .eb-player .eb-volume-mute:hover,
220
+ [data-theme="lequipe"] .eb-player .eb-live-sync:hover {
221
+ background: rgba(255,255,255,.12);
222
+ color: #fff;
223
+ }
224
+
225
+ [data-theme="lequipe"] .eb-player .eb-button:not(.eb-middle-bar__seek-btn):not(.eb-middle-bar__play-btn):active,
226
+ [data-theme="lequipe"] .eb-player .eb-play-pause:active,
227
+ [data-theme="lequipe"] .eb-player .eb-fullscreen:active,
228
+ [data-theme="lequipe"] .eb-player .eb-pip:active,
229
+ [data-theme="lequipe"] .eb-player .eb-cast:active,
230
+ [data-theme="lequipe"] .eb-player .eb-volume-mute:active,
231
+ [data-theme="lequipe"] .eb-player .eb-live-sync:active {
232
+ transform: scale(.88);
233
+ }
234
+
235
+ /* Icon size inside buttons (not middle bar transport) */
236
+ [data-theme="lequipe"] .eb-player .eb-button:not(.eb-middle-bar__seek-btn):not(.eb-middle-bar__play-btn) .eb-icon,
237
+ [data-theme="lequipe"] .eb-player .eb-play-pause .eb-icon,
238
+ [data-theme="lequipe"] .eb-player .eb-fullscreen .eb-icon,
239
+ [data-theme="lequipe"] .eb-player .eb-pip .eb-icon,
240
+ [data-theme="lequipe"] .eb-player .eb-cast .eb-icon,
241
+ [data-theme="lequipe"] .eb-player .eb-volume-mute .eb-icon {
242
+ width: 22px;
243
+ height: 22px;
244
+ }
245
+
246
+ /* Top bar icons slightly larger */
247
+ [data-theme="lequipe"] .eb-player .eb-top-bar .eb-icon {
248
+ width: 24px;
249
+ height: 24px;
250
+ }
251
+
252
+ /* Play/pause icons should be filled (solid), not stroke outlines */
253
+ [data-theme="lequipe"] .eb-player .eb-play-pause .eb-icon,
254
+ [data-theme="lequipe"] .eb-player .eb-middle-bar__play-btn .eb-icon {
255
+ fill: currentColor;
256
+ stroke: none;
257
+ }
258
+
259
+ /* Volume icon: fill the speaker body, keep stroke for sound waves */
260
+ [data-theme="lequipe"] .eb-player .eb-volume-mute .eb-icon path:first-child {
261
+ fill: currentColor;
262
+ }
263
+
264
+ /* Cast button active state */
265
+ [data-theme="lequipe"] .eb-player .eb-cast-active {
266
+ color: #1eb6d4 !important;
267
+ background: rgba(30, 182, 212, .15) !important;
268
+ }
269
+
270
+ [data-theme="lequipe"] .eb-player .eb-cast-active .eb-icon {
271
+ filter: drop-shadow(0 0 4px rgba(30, 182, 212, .6));
272
+ }
273
+
274
+ /* ============================================================
275
+ Seekbar
276
+ ============================================================ */
277
+ [data-theme="lequipe"] .eb-player .eb-seekbar-track {
278
+ height: 3px;
279
+ background: rgba(255,255,255,.22);
280
+ border-radius: 3px;
281
+ transition: height .15s;
282
+ }
283
+
284
+ [data-theme="lequipe"] .eb-player .eb-seekbar:hover .eb-seekbar-track {
285
+ height: 5px;
286
+ }
287
+
288
+ [data-theme="lequipe"] .eb-player .eb-seekbar-buffered {
289
+ background: rgba(255,255,255,.28);
290
+ border-radius: 3px;
291
+ transition: height .15s;
292
+ }
293
+
294
+ /* Solid red fill */
295
+ [data-theme="lequipe"] .eb-player .eb-seekbar-progress {
296
+ background: #d61e00;
297
+ border-radius: 3px;
298
+ transition: height .15s;
299
+ }
300
+
301
+ [data-theme="lequipe"] .eb-player .eb-seekbar-thumb {
302
+ width: 14px;
303
+ height: 14px;
304
+ right: -7px;
305
+ background: #fff;
306
+ box-shadow: 0 0 0 3px rgba(214,30,0,.45);
307
+ }
308
+
309
+ /* ============================================================
310
+ Seekbar tooltip & preview
311
+ ============================================================ */
312
+ [data-theme="lequipe"] .eb-player .eb-seekbar-tooltip {
313
+ bottom: 28px;
314
+ background: rgba(0,0,0,.88);
315
+ border: 1px solid rgba(255,255,255,.12);
316
+ border-radius: 7px;
317
+ font-size: 11px;
318
+ font-weight: 500;
319
+ padding: 0;
320
+ overflow: hidden;
321
+ box-shadow: 0 4px 16px rgba(0,0,0,.5);
322
+ display: flex;
323
+ flex-direction: column;
324
+ align-items: center;
325
+ }
326
+
327
+ [data-theme="lequipe"] .eb-player .eb-seekbar-preview {
328
+ width: 160px;
329
+ height: 90px;
330
+ background: #111;
331
+ border: none;
332
+ border-radius: 0;
333
+ margin: 0;
334
+ }
335
+
336
+ /* ============================================================
337
+ Chapter markers
338
+ ============================================================ */
339
+ [data-theme="lequipe"] .eb-player .eb-chapter-marker {
340
+ width: 2px;
341
+ height: 7px;
342
+ background: rgba(0,0,0,.45);
343
+ border-radius: 1px;
344
+ top: 50%;
345
+ transform: translate(-50%, -50%);
346
+ }
347
+
348
+ /* ============================================================
349
+ Volume: expandable slider, white fill
350
+ ============================================================ */
351
+ [data-theme="lequipe"] .eb-player .eb-volume-control {
352
+ flex-direction: row;
353
+ gap: 0;
354
+ margin-right: 0;
355
+ }
356
+
357
+ [data-theme="lequipe"] .eb-player .eb-volume-track {
358
+ width: 0;
359
+ height: 3px;
360
+ background: rgba(255,255,255,.22);
361
+ border-radius: 3px;
362
+ overflow: hidden;
363
+ transition: width .25s ease, margin .25s ease;
364
+ margin: 0;
365
+ }
366
+
367
+ [data-theme="lequipe"] .eb-player .eb-volume-control:hover .eb-volume-track,
368
+ [data-theme="lequipe"] .eb-player .eb-volume-control:focus-within .eb-volume-track {
369
+ width: 66px;
370
+ margin: 0 6px 0 2px;
371
+ }
372
+
373
+ [data-theme="lequipe"] .eb-player .eb-volume-fill {
374
+ background: var(--eb-color-primary, #d61e00);
375
+ }
376
+
377
+ [data-theme="lequipe"] .eb-player .eb-volume-thumb {
378
+ width: 11px;
379
+ height: 11px;
380
+ background: #fff;
381
+ box-shadow: 0 0 0 2px rgba(255,255,255,.35);
382
+ transform: translate(-50%, -50%) scale(0);
383
+ transition: transform .15s;
384
+ }
385
+
386
+ [data-theme="lequipe"] .eb-player .eb-volume-control:hover .eb-volume-thumb {
387
+ transform: translate(-50%, -50%) scale(1);
388
+ }
389
+
390
+ /* ============================================================
391
+ Time display
392
+ ============================================================ */
393
+ [data-theme="lequipe"] .eb-player .eb-time-display {
394
+ font-size: 13px;
395
+ color: rgba(255,255,255,.85);
396
+ font-weight: 500;
397
+ letter-spacing: .02em;
398
+ }
399
+
400
+ /* ============================================================
401
+ Live badge — text badge with blinking dot (not icon)
402
+ ============================================================ */
403
+ [data-theme="lequipe"] .eb-player .eb-live-sync {
404
+ width: auto;
405
+ height: auto;
406
+ padding: 4px 10px;
407
+ border-radius: 6px;
408
+ font-size: 11px;
409
+ font-weight: 700;
410
+ letter-spacing: .08em;
411
+ text-transform: uppercase;
412
+ gap: 5px;
413
+ }
414
+
415
+ /* Hide icon, show dot + label */
416
+ [data-theme="lequipe"] .eb-player .eb-live-sync__icon {
417
+ display: none;
418
+ }
419
+
420
+ [data-theme="lequipe"] .eb-player .eb-live-sync__dot {
421
+ display: block;
422
+ width: 6px;
423
+ height: 6px;
424
+ border-radius: 50%;
425
+ background: #fff;
426
+ flex-shrink: 0;
427
+ }
428
+
429
+ [data-theme="lequipe"] .eb-player .eb-live-sync__label {
430
+ display: block;
431
+ }
432
+
433
+ /* Synced state — red background with blinking dot */
434
+ [data-theme="lequipe"] .eb-player .eb-live-synced {
435
+ background: rgba(214,30,0,.9);
436
+ color: #fff;
437
+ box-shadow: 0 2px 8px rgba(214,30,0,.4);
438
+ }
439
+
440
+ [data-theme="lequipe"] .eb-player .eb-live-synced .eb-live-sync__dot {
441
+ animation: eb-lequipe-blink 1.2s ease infinite;
442
+ }
443
+
444
+ /* Delayed / not-at-live-edge */
445
+ [data-theme="lequipe"] .eb-player .eb-live-sync:not(.eb-live-synced) {
446
+ background: rgba(60,60,80,.75);
447
+ color: rgba(255,255,255,.7);
448
+ box-shadow: none;
449
+ }
450
+
451
+ [data-theme="lequipe"] .eb-player .eb-live-sync:not(.eb-live-synced) .eb-live-sync__dot {
452
+ background: rgba(255,255,255,.5);
453
+ animation: none;
454
+ }
455
+
456
+ [data-theme="lequipe"] .eb-player .eb-live-sync:not(.eb-live-synced):hover {
457
+ background: rgba(214,30,0,.7);
458
+ color: #fff;
459
+ }
460
+
461
+ @keyframes eb-lequipe-blink {
462
+ 0%, 100% { opacity: 1; }
463
+ 50% { opacity: .15; }
464
+ }
465
+
466
+ /* ============================================================
467
+ Settings panel: glassmorphism dropdown
468
+ ============================================================ */
469
+ [data-theme="lequipe"] .eb-player .eb-settings-panel {
470
+ background: rgba(30,30,45,.6);
471
+ backdrop-filter: blur(24px) saturate(160%);
472
+ -webkit-backdrop-filter: blur(24px) saturate(160%);
473
+ border-radius: 14px;
474
+ width: min(340px, 80vw);
475
+ max-height: 60vh;
476
+ overflow-y: auto;
477
+ overflow-x: hidden;
478
+ box-shadow: 0 16px 48px rgba(0,0,0,.6), 0 0 0 1px rgba(255,255,255,.08);
479
+ }
480
+
481
+ /* Small viewports: compact rows */
482
+ @media (max-height: 400px) {
483
+ [data-theme="lequipe"] .eb-player .eb-settings-category { padding: 12px 14px; font-size: 13px; gap: 10px; }
484
+ [data-theme="lequipe"] .eb-player .eb-settings-item { padding: 11px 14px; font-size: 13px; }
485
+ [data-theme="lequipe"] .eb-player .eb-settings-header { padding: 10px 14px; }
486
+ [data-theme="lequipe"] .eb-player .eb-settings-panel { min-width: 220px; border-radius: 10px; }
487
+ [data-theme="lequipe"] .eb-player .eb-settings-back { width: 30px; height: 30px; }
488
+ }
489
+
490
+ [data-theme="lequipe"] .eb-player .eb-settings-menu {
491
+ padding: 0;
492
+ }
493
+
494
+ /* Root menu category rows — icon | label | value | chevron */
495
+ [data-theme="lequipe"] .eb-player .eb-settings-category {
496
+ display: flex;
497
+ align-items: center;
498
+ gap: 14px;
499
+ padding: 18px 20px;
500
+ font-size: 14px;
501
+ color: rgba(255,255,255,.95);
502
+ border-bottom: 1px solid rgba(255,255,255,.06);
503
+ transition: background .12s;
504
+ width: 100%;
505
+ border: none;
506
+ background: none;
507
+ cursor: pointer;
508
+ text-align: left;
509
+ }
510
+
511
+ [data-theme="lequipe"] .eb-player .eb-settings-category:last-child {
512
+ border-bottom: none;
513
+ }
514
+
515
+ [data-theme="lequipe"] .eb-player .eb-settings-category:hover {
516
+ background: rgba(255,255,255,.05);
517
+ }
518
+
519
+ [data-theme="lequipe"] .eb-player .eb-settings-category__icon {
520
+ flex-shrink: 0;
521
+ display: flex;
522
+ align-items: center;
523
+ justify-content: center;
524
+ color: rgba(255,255,255,.6);
525
+ }
526
+
527
+ [data-theme="lequipe"] .eb-player .eb-settings-category__icon .eb-icon {
528
+ width: 22px;
529
+ height: 22px;
530
+ }
531
+
532
+ [data-theme="lequipe"] .eb-player .eb-settings-category__label {
533
+ flex: 1;
534
+ font-weight: 400;
535
+ }
536
+
537
+ [data-theme="lequipe"] .eb-player .eb-settings-category__value {
538
+ color: rgba(255,255,255,.45);
539
+ font-size: 13px;
540
+ font-weight: 400;
541
+ }
542
+
543
+ [data-theme="lequipe"] .eb-player .eb-settings-category__chevron {
544
+ flex-shrink: 0;
545
+ display: flex;
546
+ align-items: center;
547
+ color: rgba(255,255,255,.3);
548
+ }
549
+
550
+ [data-theme="lequipe"] .eb-player .eb-settings-category__chevron .eb-icon {
551
+ width: 16px;
552
+ height: 16px;
553
+ }
554
+
555
+ /* Sub-menu header — circular back button + title */
556
+ [data-theme="lequipe"] .eb-player .eb-settings-header {
557
+ display: flex;
558
+ align-items: center;
559
+ gap: 12px;
560
+ padding: 14px 18px;
561
+ border-bottom: 1px solid rgba(255,255,255,.08);
562
+ }
563
+
564
+ [data-theme="lequipe"] .eb-player .eb-settings-header__title {
565
+ font-size: 15px;
566
+ font-weight: 600;
567
+ color: #fff;
568
+ }
569
+
570
+ [data-theme="lequipe"] .eb-player .eb-settings-back {
571
+ width: 36px;
572
+ height: 36px;
573
+ border-radius: 50%;
574
+ background: rgba(255,255,255,.12);
575
+ border: none;
576
+ cursor: pointer;
577
+ display: flex;
578
+ align-items: center;
579
+ justify-content: center;
580
+ padding: 0;
581
+ transition: background .15s;
582
+ flex-shrink: 0;
583
+ color: #fff;
584
+ }
585
+
586
+ [data-theme="lequipe"] .eb-player .eb-settings-back:hover {
587
+ background: rgba(255,255,255,.2);
588
+ }
589
+
590
+ [data-theme="lequipe"] .eb-player .eb-settings-back .eb-icon {
591
+ width: 18px;
592
+ height: 18px;
593
+ }
594
+
595
+ /* Sub-menu items */
596
+ [data-theme="lequipe"] .eb-player .eb-settings-item {
597
+ display: flex;
598
+ align-items: center;
599
+ justify-content: space-between;
600
+ padding: 16px 20px;
601
+ font-size: 14px;
602
+ color: rgba(255,255,255,.7);
603
+ border-bottom: 1px solid rgba(255,255,255,.06);
604
+ transition: background .12s;
605
+ width: 100%;
606
+ border-left: none;
607
+ border-right: none;
608
+ border-top: none;
609
+ background: none;
610
+ cursor: pointer;
611
+ text-align: left;
612
+ }
613
+
614
+ [data-theme="lequipe"] .eb-player .eb-settings-item:last-child {
615
+ border-bottom: none;
616
+ }
617
+
618
+ [data-theme="lequipe"] .eb-player .eb-settings-item:hover {
619
+ background: rgba(255,255,255,.05);
620
+ }
621
+
622
+ /* Selected item text — brighter */
623
+ [data-theme="lequipe"] .eb-player .eb-settings-item--selected {
624
+ color: #fff;
625
+ font-weight: 500;
626
+ }
627
+
628
+ /* Active selection dot (filled accent) */
629
+ [data-theme="lequipe"] .eb-player .eb-settings-item--selected::after {
630
+ content: '';
631
+ width: 12px;
632
+ height: 12px;
633
+ border-radius: 50%;
634
+ background: var(--eb-accent, #d61e00);
635
+ flex-shrink: 0;
636
+ }
637
+
638
+ /* Non-selected items: hollow dot */
639
+ [data-theme="lequipe"] .eb-player .eb-settings-item:not(.eb-settings-item--selected)::after {
640
+ content: '';
641
+ width: 12px;
642
+ height: 12px;
643
+ border-radius: 50%;
644
+ border: 2px solid rgba(255,255,255,.2);
645
+ flex-shrink: 0;
646
+ }
647
+
648
+ /* ============================================================
649
+ Loading spinner
650
+ ============================================================ */
651
+ [data-theme="lequipe"] .eb-player .eb-loading .eb-icon {
652
+ width: 52px;
653
+ height: 52px;
654
+ color: rgba(255,255,255,.7);
655
+ filter: drop-shadow(0 1px 6px rgba(0,0,0,.5));
656
+ animation: eb-spin .75s linear infinite;
657
+ }
658
+
659
+ /* ============================================================
660
+ Error overlay
661
+ ============================================================ */
662
+ [data-theme="lequipe"] .eb-player .eb-error {
663
+ background: rgba(10,10,20,.85);
664
+ backdrop-filter: blur(12px);
665
+ -webkit-backdrop-filter: blur(12px);
666
+ }
667
+
668
+ [data-theme="lequipe"] .eb-player .eb-error-message {
669
+ font-weight: 400;
670
+ letter-spacing: .01em;
671
+ }
672
+
673
+ [data-theme="lequipe"] .eb-player .eb-error-retry {
674
+ border-radius: 8px;
675
+ background: rgba(255,255,255,.1);
676
+ border-color: rgba(255,255,255,.15);
677
+ transition: background .2s, color .2s;
678
+ }
679
+
680
+ [data-theme="lequipe"] .eb-player .eb-error-retry:hover {
681
+ background: rgba(255,255,255,.18);
682
+ }
683
+
684
+ /* ============================================================
685
+ Toast (keyboard hints, status messages)
686
+ ============================================================ */
687
+ [data-theme="lequipe"] .eb-player .eb-toast {
688
+ background: rgba(0,0,0,.72);
689
+ backdrop-filter: blur(10px);
690
+ -webkit-backdrop-filter: blur(10px);
691
+ border-radius: 10px;
692
+ font-size: 13px;
693
+ padding: 8px 16px;
694
+ }
695
+
696
+ /* ============================================================
697
+ Info & socials overlays
698
+ ============================================================ */
699
+ [data-theme="lequipe"] .eb-player .eb-info-overlay,
700
+ [data-theme="lequipe"] .eb-player .eb-socials-overlay {
701
+ background: rgba(10,10,20,.85);
702
+ backdrop-filter: blur(12px);
703
+ -webkit-backdrop-filter: blur(12px);
704
+ }
705
+
706
+ [data-theme="lequipe"] .eb-player .eb-info-close,
707
+ [data-theme="lequipe"] .eb-player .eb-socials-close {
708
+ border-radius: 8px;
709
+ background: rgba(255,255,255,.07);
710
+ border-color: rgba(255,255,255,.08);
711
+ transition: background .2s, color .2s;
712
+ }
713
+
714
+ [data-theme="lequipe"] .eb-player .eb-info-close:hover,
715
+ [data-theme="lequipe"] .eb-player .eb-socials-close:hover {
716
+ background: rgba(255,255,255,.13);
717
+ color: #fff;
718
+ }
719
+
720
+ [data-theme="lequipe"] .eb-player .eb-socials-link {
721
+ background: rgba(255,255,255,.07);
722
+ border: 1px solid rgba(255,255,255,.08);
723
+ border-radius: 8px;
724
+ transition: background .2s, color .2s, border-color .2s;
725
+ }
726
+
727
+ [data-theme="lequipe"] .eb-player .eb-socials-link:hover {
728
+ background: rgba(214,30,0,.15);
729
+ border-color: rgba(214,30,0,.35);
730
+ color: #ff8a75;
731
+ }
732
+
733
+ /* ============================================================
734
+ Poster
735
+ ============================================================ */
736
+ [data-theme="lequipe"] .eb-player .eb-poster {
737
+ background: linear-gradient(135deg, #0f0c29, #302b63, #24243e);
738
+ }
739
+
740
+ /* ============================================================
741
+ Radio overlay
742
+ ============================================================ */
743
+ [data-theme="lequipe"] .eb-player .eb-radio-overlay {
744
+ background: linear-gradient(135deg, #0f0c29, #302b63, #24243e);
745
+ }
746
+
747
+ [data-theme="lequipe"] .eb-player .eb-radio-bar {
748
+ background: rgba(214,30,0,.8);
749
+ }
750
+
751
+ /* ============================================================
752
+ Chapter skip button
753
+ ============================================================ */
754
+ [data-theme="lequipe"] .eb-player .eb-chapter-skip {
755
+ background: rgba(10,10,20,.55);
756
+ backdrop-filter: blur(12px);
757
+ -webkit-backdrop-filter: blur(12px);
758
+ border: 1px solid rgba(255,255,255,.15);
759
+ border-radius: 8px;
760
+ font-size: 12px;
761
+ font-weight: 500;
762
+ transition: background .15s;
763
+ }
764
+
765
+ [data-theme="lequipe"] .eb-player .eb-chapter-skip:hover {
766
+ background: rgba(255,255,255,.12);
767
+ }