@four-leaf-studios/rl-overlay 1.0.4 → 1.1.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.
Files changed (51) hide show
  1. package/.github/copilot-instructions.md +70 -0
  2. package/dist/index.cjs.js +271 -10567
  3. package/dist/index.cjs.js.map +1 -1
  4. package/dist/index.esm.js +300 -10579
  5. package/dist/index.esm.js.map +1 -1
  6. package/dist/types/Overlay.d.ts +5 -6
  7. package/dist/types/OverlaySlot.d.ts +9 -0
  8. package/dist/types/index.d.ts +2 -0
  9. package/dist/types/registry.d.ts +2 -0
  10. package/package.json +12 -5
  11. package/src/Overlay.tsx +43 -41
  12. package/src/OverlaySlot.tsx +35 -0
  13. package/src/Player.tsx +1 -0
  14. package/src/PlayerBoost.tsx +4 -1
  15. package/src/Scoreboard.tsx +1 -0
  16. package/src/ScoreboardGameBox.tsx +2 -4
  17. package/src/ScoreboardSeriesBox.tsx +2 -3
  18. package/src/ScoreboardTeam.tsx +1 -0
  19. package/src/StatItem.tsx +4 -1
  20. package/src/TargetBoost.tsx +1 -0
  21. package/src/TargetPlayer.tsx +15 -3
  22. package/src/TargetPlayerLocation.tsx +1 -0
  23. package/src/TargetPlayerStats.tsx +1 -1
  24. package/src/Team.tsx +1 -0
  25. package/src/Timer.tsx +7 -4
  26. package/src/css/Florida_Tech.css +696 -0
  27. package/src/css/Horizon_Hues.css +618 -0
  28. package/src/css/Neo_Glass.css +674 -0
  29. package/src/css/Obsidian_Glide.css +646 -0
  30. package/src/css/RLCS_2024.css +566 -0
  31. package/src/css/RLCS_2025.css +524 -0
  32. package/src/css/Shaded_blocks.css +594 -0
  33. package/src/index.ts +2 -0
  34. package/src/registry.ts +19 -0
  35. package/src/types.d.ts +20 -0
  36. package/test-overlay/public/mock-css.css +294 -372
  37. package/test-overlay/src/App.jsx +28 -28
  38. package/tests/BroadcastContext.test.tsx +41 -0
  39. package/tests/Overlay.test.tsx +106 -0
  40. package/tests/OverlaySlot.test.tsx +79 -0
  41. package/tests/PlayerBoost.test.tsx +47 -0
  42. package/tests/Replay.test.tsx +29 -0
  43. package/tests/ScoreboardGameBox.test.tsx +35 -0
  44. package/tests/ScoreboardSeriesBox.test.tsx +48 -0
  45. package/tests/StatItem.test.tsx +33 -0
  46. package/tests/__mocks__/@four-leaf-studios/rl-socket-hook.ts +10 -0
  47. package/tests/fixtures.ts +96 -0
  48. package/tests/registry.test.ts +27 -0
  49. package/tests/setup.ts +1 -0
  50. package/tsconfig.json +16 -20
  51. package/vitest.config.ts +9 -0
@@ -0,0 +1,674 @@
1
+ /* ===============================
2
+ NeoGlass Neon Overlay (full)
3
+ — scoreboard cleaned up
4
+ — target boost kept from your original
5
+ — same HTML/classes; just drop in
6
+ =============================== */
7
+
8
+ /* Font — Rajdhani */
9
+ @font-face {
10
+ font-family: "Rajdhani";
11
+ font-style: normal;
12
+ font-weight: 500;
13
+ font-display: swap;
14
+ src: url(https://fonts.gstatic.com/s/rajdhani/v22/LDI2apCSOBg7S-QT7pasE8nG.woff2)
15
+ format("woff2");
16
+ unicode-range: U+0100-02FF, U+1E00-1EFF, U+2000-206F, U+20A0-20AB, U+20AD-20CF,
17
+ U+2113, U+2C60-2C7F, U+A720-A7FF;
18
+ }
19
+ @font-face {
20
+ font-family: "Rajdhani";
21
+ font-style: normal;
22
+ font-weight: 500;
23
+ font-display: swap;
24
+ src: url(https://fonts.gstatic.com/s/rajdhani/v22/LDI2apCSOBg7S-QT7pYsEw.woff2)
25
+ format("woff2");
26
+ unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA,
27
+ U+02DC, U+0304, U+0308, U+0329, U+2010-205E, U+20AC, U+2122;
28
+ }
29
+
30
+ /* ---------- Global / Vars ---------- */
31
+ .overlay {
32
+ --fallback-darker-mutual: #0b0f14;
33
+ --glass-bg: rgba(12, 16, 22, 0.55);
34
+ --glass-bg-strong: rgba(12, 16, 22, 0.75);
35
+ --glass-border: rgba(255, 255, 255, 0.18);
36
+ --shadow-1: 0 6px 20px rgba(0, 0, 0, 0.35);
37
+ --shadow-2: 0 2px 10px rgba(0, 0, 0, 0.35);
38
+
39
+ --neon-left: var(--team-left-secondary);
40
+ --neon-right: var(--team-right-secondary);
41
+ }
42
+
43
+ /* animations */
44
+ @keyframes slideInUp {
45
+ from {
46
+ transform: translateY(-12px);
47
+ opacity: 0;
48
+ }
49
+ to {
50
+ transform: translateY(0);
51
+ opacity: 1;
52
+ }
53
+ }
54
+ @keyframes fadeIn {
55
+ from {
56
+ opacity: 0;
57
+ }
58
+ to {
59
+ opacity: 1;
60
+ }
61
+ }
62
+ @keyframes fadeOut {
63
+ from {
64
+ opacity: 1;
65
+ }
66
+ to {
67
+ opacity: 0;
68
+ }
69
+ }
70
+
71
+ /* ===================================
72
+ SCOREBOARD (tidy split + aligned timer)
73
+ =================================== */
74
+
75
+ .scoreboard_box {
76
+ position: relative;
77
+ z-index: 20; /* under the timer */
78
+ width: 900px;
79
+ height: 88px;
80
+ margin: 0.75rem auto 0;
81
+ border-radius: 18px;
82
+ display: flex; /* true left/right halves */
83
+ box-shadow: 0 6px 18px rgba(0, 0, 0, 0.35);
84
+ background: linear-gradient(
85
+ 90deg,
86
+ color-mix(in oklab, var(--team-left-primary) 85%, #0b0f14 15%) 0%,
87
+ color-mix(
88
+ in oklab,
89
+ var(--team-left-primary) 60%,
90
+ var(--team-right-primary) 40%
91
+ )
92
+ 50%,
93
+ color-mix(in oklab, var(--team-right-primary) 85%, #0b0f14 15%) 100%
94
+ );
95
+ }
96
+
97
+ /* subtle center divider so scores read cleanly */
98
+ .scoreboard_box::after {
99
+ content: "";
100
+ position: absolute;
101
+ left: 50%;
102
+ top: 0;
103
+ bottom: 0;
104
+ width: 2px;
105
+ transform: translateX(-50%);
106
+ background: linear-gradient(
107
+ to bottom,
108
+ transparent,
109
+ rgba(255, 255, 255, 0.25),
110
+ transparent
111
+ );
112
+ opacity: 0.35;
113
+ pointer-events: none;
114
+ }
115
+
116
+ /* timer: centered, floating above bar with tight glow */
117
+ .time_box {
118
+ position: absolute;
119
+ margin: auto;
120
+ left: 0;
121
+ right: 0;
122
+ top: 8px;
123
+ width: 260px;
124
+ height: 66px;
125
+ border-radius: 999px;
126
+ background: var(--glass-bg-strong);
127
+ backdrop-filter: blur(6px);
128
+ -webkit-backdrop-filter: blur(6px);
129
+ border: 1px solid var(--glass-border);
130
+ z-index: 50;
131
+ display: flex;
132
+ flex-direction: column;
133
+ justify-content: center;
134
+ color: #fff;
135
+ text-align: center;
136
+ font-family: Rajdhani, system-ui, sans-serif;
137
+ font-weight: 700;
138
+ font-size: 40px;
139
+ letter-spacing: 1px;
140
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.06) inset,
141
+ 0 0 10px var(--neon-left), 0 0 10px var(--neon-right);
142
+ animation: slideInUp 420ms ease-out;
143
+ }
144
+
145
+ .main_bar {
146
+ height: 88px;
147
+ }
148
+ .top_bar {
149
+ display: none;
150
+ }
151
+ .bottom_bar {
152
+ display: flex;
153
+ justify-content: center;
154
+ align-items: center;
155
+ width: 100%;
156
+ }
157
+
158
+ /* halves */
159
+ .scoreboard_team_box {
160
+ width: 50%;
161
+ height: 100%;
162
+ border-radius: 0;
163
+ display: flex;
164
+ align-items: center;
165
+ background: linear-gradient(
166
+ 180deg,
167
+ rgba(255, 255, 255, 0.07),
168
+ rgba(255, 255, 255, 0.02)
169
+ );
170
+ backdrop-filter: blur(4px);
171
+ -webkit-backdrop-filter: blur(4px);
172
+ --horizontal-padding: 3.8rem;
173
+ }
174
+ .left_scoreboard_team_box {
175
+ justify-content: flex-start;
176
+ padding-left: var(--horizontal-padding);
177
+ box-shadow: inset 0 0 0 2px
178
+ color-mix(in oklab, var(--team-left-primary) 60%, #fff 8%);
179
+ }
180
+ .right_scoreboard_team_box {
181
+ justify-content: flex-end;
182
+ padding-right: var(--horizontal-padding);
183
+ box-shadow: inset 0 0 0 2px
184
+ color-mix(in oklab, var(--team-right-primary) 60%, #fff 8%);
185
+ }
186
+
187
+ /* team name tags */
188
+ .name_box {
189
+ position: absolute;
190
+ bottom: -30px;
191
+ z-index: 5;
192
+ padding: 2px 10px;
193
+ border-radius: 10px;
194
+ font-family: Rajdhani;
195
+ font-weight: 800;
196
+ font-size: 19px;
197
+ letter-spacing: 0.5px;
198
+ background: var(--glass-bg-strong);
199
+ border: 1px solid var(--glass-border);
200
+ backdrop-filter: blur(6px);
201
+ -webkit-backdrop-filter: blur(6px);
202
+ max-width: 92%;
203
+ text-overflow: ellipsis;
204
+ white-space: nowrap;
205
+ overflow: hidden;
206
+ animation: slideInUp 420ms ease-out;
207
+ }
208
+ .left_name_box {
209
+ left: 10px;
210
+ color: var(--team-left-secondary);
211
+ text-align: left;
212
+ }
213
+ .right_name_box {
214
+ right: 10px;
215
+ color: var(--team-right-secondary);
216
+ text-align: right;
217
+ }
218
+
219
+ /* logos & scores */
220
+ .logo_box {
221
+ height: 68%;
222
+ aspect-ratio: 1/1;
223
+ object-fit: contain;
224
+ padding: 0.5rem;
225
+ margin: 0 0.25rem;
226
+ border-radius: 10px;
227
+ background: rgba(0, 0, 0, 0.16);
228
+ }
229
+ .score_box {
230
+ height: 68%;
231
+ flex: 1;
232
+ display: flex;
233
+ flex-direction: column;
234
+ justify-content: center;
235
+ font-family: Rajdhani;
236
+ font-weight: 800;
237
+ font-size: 54px;
238
+ text-shadow: 0 4px 18px rgba(0, 0, 0, 0.35);
239
+ letter-spacing: 0.5px;
240
+ }
241
+ .left_score_box {
242
+ color: #fff;
243
+ order: 1;
244
+ padding-right: 14%;
245
+ }
246
+ .right_score_box {
247
+ color: #fff;
248
+ order: 0;
249
+ padding-left: 14%;
250
+ }
251
+
252
+ /* series pips */
253
+ .series_box {
254
+ position: absolute;
255
+ top: -80px;
256
+ width: 44px;
257
+ height: 66px;
258
+ border-radius: 12px;
259
+ background: var(--glass-bg);
260
+ border: 1px solid var(--glass-border);
261
+ display: flex;
262
+ flex-direction: column;
263
+ justify-content: center;
264
+ align-items: center;
265
+ gap: 8px;
266
+ box-shadow: var(--shadow-2);
267
+ }
268
+ .left_series_box {
269
+ left: 0.5rem;
270
+ }
271
+ .right_series_box {
272
+ right: 0.5rem;
273
+ }
274
+
275
+ .series_score_box {
276
+ width: 68%;
277
+ max-height: 9px;
278
+ flex: 1;
279
+ border-radius: 999px;
280
+ background: rgba(255, 255, 255, 0.18);
281
+ }
282
+ .series_score_box_point {
283
+ border-radius: 999px;
284
+ height: 100%;
285
+ }
286
+ .left_series_score_box_point {
287
+ background: var(--team-left-secondary);
288
+ box-shadow: 0 0 12px var(--team-left-secondary);
289
+ }
290
+ .right_series_score_box_point {
291
+ background: var(--team-right-secondary);
292
+ box-shadow: 0 0 12px var(--team-right-secondary);
293
+ }
294
+ .series_score_box_empty {
295
+ background: rgba(255, 255, 255, 0.14);
296
+ }
297
+
298
+ .game_box {
299
+ display: none;
300
+ }
301
+
302
+ /* ===============================
303
+ REPLAY
304
+ =============================== */
305
+ .replay_box {
306
+ position: absolute;
307
+ left: 0;
308
+ right: 0;
309
+ margin: auto;
310
+ z-index: 500;
311
+ top: 92px;
312
+ width: 460px;
313
+ height: 88px;
314
+ border-radius: 16px;
315
+ background: linear-gradient(135deg, #1b1f2a 0%, #10141b 100%);
316
+ border: 1px solid var(--glass-border);
317
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.03) inset, var(--shadow-1);
318
+ display: flex;
319
+ justify-content: center;
320
+ align-items: center;
321
+ gap: 12px;
322
+ }
323
+ .replay_text {
324
+ color: #ff5757;
325
+ font-family: Rajdhani;
326
+ font-weight: 800;
327
+ font-size: 42px;
328
+ letter-spacing: 2px;
329
+ }
330
+
331
+ /* ===============================
332
+ TEAMS / PLAYER LIST
333
+ =============================== */
334
+ .team_box {
335
+ position: absolute;
336
+ top: 60px;
337
+ display: flex;
338
+ flex-direction: column;
339
+ gap: 6px;
340
+ width: fit-content;
341
+ }
342
+ .left_team_box {
343
+ left: 10px;
344
+ align-items: flex-start;
345
+ }
346
+ .right_team_box {
347
+ right: 10px;
348
+ align-items: flex-end;
349
+ }
350
+
351
+ .player_box {
352
+ position: relative;
353
+ display: grid;
354
+ grid-template-columns: 1fr min-content;
355
+ gap: 0.5rem;
356
+ min-width: 340px;
357
+ padding: 0.35rem 0.85rem;
358
+ border-radius: 12px;
359
+ background: var(--glass-bg);
360
+ border: 1px solid var(--glass-border);
361
+ backdrop-filter: blur(6px);
362
+ -webkit-backdrop-filter: blur(6px);
363
+ box-shadow: var(--shadow-2);
364
+ }
365
+ .player_name {
366
+ font-family: Rajdhani;
367
+ font-size: 22px;
368
+ font-weight: 700;
369
+ letter-spacing: 0.4px;
370
+ text-transform: uppercase;
371
+ text-overflow: ellipsis;
372
+ white-space: nowrap;
373
+ overflow: hidden;
374
+ max-width: 300px;
375
+ color: #e9eef7;
376
+ }
377
+ .left_player_name {
378
+ grid-column: 1;
379
+ grid-row: 1;
380
+ text-align: left;
381
+ }
382
+ .right_player_name {
383
+ grid-column: 2;
384
+ text-align: right;
385
+ }
386
+
387
+ .player_boost {
388
+ font-family: Rajdhani;
389
+ font-size: 20px;
390
+ font-weight: 700;
391
+ text-transform: uppercase;
392
+ white-space: nowrap;
393
+ overflow: hidden;
394
+ }
395
+ .left_player_boost {
396
+ grid-column: 2;
397
+ text-align: right;
398
+ color: var(--team-left-secondary);
399
+ }
400
+ .right_player_boost {
401
+ grid-column: 1;
402
+ text-align: left;
403
+ color: var(--team-right-secondary);
404
+ }
405
+
406
+ .boost_meter {
407
+ margin: 0.2rem 0 0;
408
+ width: 100%;
409
+ height: 7px;
410
+ border-radius: 999px;
411
+ background: rgba(255, 255, 255, 0.14);
412
+ grid-column: -1/1;
413
+ overflow: hidden;
414
+ }
415
+ .left_boost_meter_bar {
416
+ height: 100%;
417
+ background: linear-gradient(
418
+ 90deg,
419
+ var(--team-left-primary),
420
+ var(--team-left-secondary)
421
+ );
422
+ }
423
+ .right_boost_meter_bar {
424
+ height: 100%;
425
+ background: linear-gradient(
426
+ 90deg,
427
+ var(--team-right-primary),
428
+ var(--team-right-secondary)
429
+ );
430
+ }
431
+
432
+ /* ===============================
433
+ STAT BOX
434
+ =============================== */
435
+ .stat_box {
436
+ position: absolute;
437
+ bottom: 0;
438
+ width: 700px;
439
+ height: 60px;
440
+ margin-left: 52px;
441
+ margin-bottom: 34px;
442
+ display: flex;
443
+ flex-direction: column;
444
+ justify-content: space-around;
445
+ align-items: flex-start;
446
+ padding: 0.45rem;
447
+ border-radius: 14px;
448
+ background: var(--glass-bg);
449
+ border: 1px solid var(--glass-border);
450
+ backdrop-filter: blur(6px);
451
+ -webkit-backdrop-filter: blur(6px);
452
+ box-shadow: var(--shadow-1);
453
+ }
454
+ .left_stat_box {
455
+ box-shadow: 0 0 0 2px
456
+ color-mix(in oklab, var(--team-left-primary) 45%, #fff 6%) inset,
457
+ var(--shadow-1);
458
+ color: var(--team-left-secondary);
459
+ }
460
+ .right_stat_box {
461
+ box-shadow: 0 0 0 2px
462
+ color-mix(in oklab, var(--team-right-primary) 45%, #fff 6%) inset,
463
+ var(--shadow-1);
464
+ color: var(--team-right-secondary);
465
+ }
466
+
467
+ .stat_box_player {
468
+ width: 42%;
469
+ font-family: Rajdhani;
470
+ font-size: 22px;
471
+ font-weight: 800;
472
+ text-align: right;
473
+ white-space: nowrap;
474
+ overflow: hidden;
475
+ text-overflow: ellipsis;
476
+ color: #eef3fb;
477
+ }
478
+
479
+ .stat_box_statistics {
480
+ position: absolute;
481
+ right: 0;
482
+ bottom: 0;
483
+ width: 370px;
484
+ height: 80px;
485
+ margin-bottom: 7px;
486
+ border-radius: 12px;
487
+ background: rgba(0, 0, 0, 0.35);
488
+ border: 1px solid var(--glass-border);
489
+ display: flex;
490
+ justify-content: space-between;
491
+ align-items: center;
492
+ padding: 6px 8px;
493
+ }
494
+ .stat_box_statistic {
495
+ flex: 1;
496
+ display: flex;
497
+ flex-direction: column;
498
+ align-items: center;
499
+ justify-content: center;
500
+ font-family: Rajdhani;
501
+ font-size: 20px;
502
+ font-weight: 800;
503
+ color: #fff;
504
+ }
505
+ .stat_box_statistic_name {
506
+ order: 0;
507
+ opacity: 0.75;
508
+ font-weight: 600;
509
+ font-size: 12px;
510
+ letter-spacing: 0.3px;
511
+ }
512
+ .stat_box_statistic_value {
513
+ font-size: 22px;
514
+ }
515
+
516
+ .stat_box_statistic_player_id,
517
+ .stat_box_statistic_player_team,
518
+ .stat_box_statistic_player_location,
519
+ .stat_box_statistic_player_touches {
520
+ display: none;
521
+ }
522
+
523
+ .stat_box_player_boost {
524
+ width: 100%;
525
+ }
526
+ .stat_box_player_boost .boost_meter {
527
+ display: block;
528
+ height: 9px;
529
+ width: 42%;
530
+ background: rgba(255, 255, 255, 0.18);
531
+ border-radius: 999px;
532
+ overflow: hidden;
533
+ }
534
+ .stat_box_player_boost .left_boost_meter_bar {
535
+ background: var(--team-left-secondary);
536
+ }
537
+ .stat_box_player_boost .right_boost_meter_bar {
538
+ background: var(--team-right-secondary);
539
+ }
540
+ .stat_box_player_boost .boost_meter,
541
+ .stat_box_player_boost .boost_meter_bar {
542
+ margin: unset;
543
+ }
544
+
545
+ /* ===============================
546
+ TARGET BOOST — EXACTLY AS YOUR ORIGINAL
547
+ =============================== */
548
+
549
+ .target_boost {
550
+ font-size: 3rem;
551
+ font-weight: bold;
552
+ position: absolute;
553
+ bottom: 0;
554
+ right: 0;
555
+ left: unset;
556
+ width: 200px;
557
+ height: 200px;
558
+ margin-bottom: 50px;
559
+ margin-right: 50px;
560
+ border-radius: 50%;
561
+ display: flex;
562
+ flex-direction: column;
563
+ align-items: center;
564
+ justify-content: center;
565
+ color: white;
566
+ overflow: hidden;
567
+ transition: opacity 0.3s ease, transform 0.3s ease;
568
+ }
569
+ .left_target_boost.target_boost {
570
+ color: var(--team-0-secondary);
571
+ }
572
+ .right_target_boost.target_boost {
573
+ color: var(--team-1-secondary);
574
+ }
575
+ .target_boost.entering {
576
+ animation: fadeIn 0.5s ease-in-out;
577
+ }
578
+ .target_boost.exiting {
579
+ animation: fadeOut 0.5s ease-in-out;
580
+ }
581
+ .left_target_boost {
582
+ }
583
+ .right_target_boost {
584
+ }
585
+ .target_boost_container {
586
+ width: 100%;
587
+ height: 100%;
588
+ display: flex;
589
+ flex-direction: column;
590
+ align-items: center;
591
+ justify-content: center;
592
+ border-radius: 50%;
593
+ }
594
+ .target_boost_meter {
595
+ position: absolute;
596
+ height: 100%;
597
+ width: 100%;
598
+ border-radius: 50%;
599
+ display: flex;
600
+ justify-content: center;
601
+ align-items: center;
602
+ transition: all 0.5s ease-in-out;
603
+ }
604
+
605
+ .left_target_boost_meter {
606
+ background: conic-gradient(
607
+ var(--team-left-primary-dark) calc(90deg * var(--target_boost) / 100),
608
+ var(--team-left-primary-light) calc(180deg * var(--target_boost) / 100),
609
+ var(--team-left-primary-light) calc(30deg * var(--target_boost) / 100),
610
+ var(--team-left-primary) calc(270deg * var(--target_boost) / 100),
611
+ var(--team-left-primary-dark) calc(360deg * var(--target_boost) / 100),
612
+ var(--glass-bg) calc(0deg * var(--target_boost) / 100)
613
+ ) !important;
614
+ transition: all 0.5s ease-in-out;
615
+ }
616
+
617
+ .right_target_boost_meter {
618
+ background: conic-gradient(
619
+ var(--team-right-primary-dark) calc(90deg * var(--target_boost) / 100),
620
+ var(--team-right-primary-light) calc(180deg * var(--target_boost) / 100),
621
+ var(--team-right-primary-light) calc(30deg * var(--target_boost) / 100),
622
+ var(--team-right-primary) calc(270deg * var(--target_boost) / 100),
623
+ var(--team-right-primary-dark) calc(360deg * var(--target_boost) / 100),
624
+ var(--glass-bg) calc(0deg * var(--target_boost) / 100)
625
+ ) !important;
626
+
627
+ transition: all 0.5s ease-in-out;
628
+ }
629
+ .target_boost_meter_inner {
630
+ position: absolute;
631
+ margin: auto;
632
+ width: 80%;
633
+ height: 80%;
634
+ border-radius: 50%;
635
+ z-index: 50;
636
+ }
637
+ .left_target_boost_meter_inner {
638
+ background: var(--team-left-mutual);
639
+ }
640
+ .right_target_boost_meter_inner {
641
+ background: var(--team-left-mutual);
642
+ }
643
+ .target_boost_svg {
644
+ position: absolute;
645
+ width: 100%;
646
+ height: 100%;
647
+ z-index: 500;
648
+ display: flex;
649
+ justify-content: center;
650
+ align-items: center;
651
+ }
652
+ .target_boost_svg_circle {
653
+ stroke-dasharray: 4 25%;
654
+ stroke-width: 41;
655
+ stroke-dashoffset: 18;
656
+ fill: transparent;
657
+ }
658
+ .left_target_boost_svg_circle {
659
+ stroke: var(--team-left-mutual);
660
+ }
661
+ .right_target_boost_svg_circle {
662
+ stroke: var(--team-left-mutual);
663
+ }
664
+ .target_boost_value {
665
+ position: absolute;
666
+ z-index: 500;
667
+ color: white;
668
+ }
669
+ .left_target_boost_value {
670
+ color: var(--team-left-secondary);
671
+ }
672
+ .right_target_boost_value {
673
+ color: var(--team-right-secondary);
674
+ }