eb-player 2.0.0 → 2.0.2

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