@jjlmoya/utils-streaming 1.9.0 → 1.10.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.
@@ -0,0 +1,924 @@
1
+ .sorteo-container {
2
+ --sorteo-primary: #6366f1;
3
+ --sorteo-secondary: #a855f7;
4
+ --sorteo-accent: #ec4899;
5
+ --sorteo-success: #10b981;
6
+ --sorteo-warning: #fbbf24;
7
+ --sorteo-danger: #ef4444;
8
+ --sorteo-bg: #f8fafc;
9
+ --sorteo-card: #fff;
10
+ --sorteo-border: #e2e8f0;
11
+ --sorteo-text: #1e293b;
12
+ --sorteo-text-muted: #64748b;
13
+ --sorteo-studio-bg: #0f172a;
14
+
15
+ width: 100%;
16
+ max-width: 80rem;
17
+ margin: 0 auto;
18
+ padding: 1.5rem;
19
+ }
20
+
21
+ :global(.theme-dark) .sorteo-container {
22
+ --sorteo-bg: #020617;
23
+ --sorteo-card: #0f172a;
24
+ --sorteo-border: #1e293b;
25
+ --sorteo-text: #f1f5f9;
26
+ --sorteo-text-muted: #94a3b8;
27
+ }
28
+
29
+ .sorteo-grid {
30
+ display: grid;
31
+ grid-template-columns: 1fr;
32
+ gap: 1.5rem;
33
+ }
34
+
35
+ @media (min-width: 1280px) {
36
+ .sorteo-grid {
37
+ grid-template-columns: repeat(12, 1fr);
38
+ }
39
+ }
40
+
41
+ .sorteo-sidebar {
42
+ grid-column: span 1;
43
+ display: flex;
44
+ flex-direction: column;
45
+ gap: 1.5rem;
46
+ height: 800px;
47
+ transition: all 0.5s ease;
48
+ }
49
+
50
+ @media (min-width: 1280px) {
51
+ .sorteo-sidebar {
52
+ grid-column: span 4;
53
+ }
54
+ }
55
+
56
+ .sorteo-sidebar.hidden {
57
+ display: none;
58
+ }
59
+
60
+ .sorteo-stats-card {
61
+ background: var(--sorteo-card);
62
+ border-radius: 1.5rem;
63
+ padding: 1.5rem;
64
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
65
+ border: 1px solid var(--sorteo-border);
66
+ position: relative;
67
+ overflow: hidden;
68
+ flex-shrink: 0;
69
+ }
70
+
71
+ .sorteo-stats-icon {
72
+ position: absolute;
73
+ top: 0;
74
+ right: 0;
75
+ padding: 1rem;
76
+ opacity: 0.1;
77
+ transition: opacity 0.3s;
78
+ }
79
+
80
+ .sorteo-stats-card:hover .sorteo-stats-icon {
81
+ opacity: 0.2;
82
+ }
83
+
84
+ .sorteo-stats-icon [data-icon] {
85
+ width: 6rem;
86
+ height: 6rem;
87
+ color: var(--sorteo-primary);
88
+ }
89
+
90
+ .sorteo-stats-label {
91
+ font-size: 0.75rem;
92
+ font-weight: 700;
93
+ text-transform: uppercase;
94
+ letter-spacing: 0.05em;
95
+ color: var(--sorteo-text-muted);
96
+ margin: 0;
97
+ }
98
+
99
+ .sorteo-stats-value-wrapper {
100
+ display: flex;
101
+ align-items: baseline;
102
+ gap: 0.5rem;
103
+ margin-top: 0.25rem;
104
+ }
105
+
106
+ .sorteo-count {
107
+ font-size: 3rem;
108
+ font-weight: 900;
109
+ color: var(--sorteo-text);
110
+ letter-spacing: -0.05em;
111
+ }
112
+
113
+ .sorteo-badge {
114
+ font-size: 0.75rem;
115
+ font-weight: 600;
116
+ color: var(--sorteo-success);
117
+ background: rgba(16, 185, 129, 0.1);
118
+ padding: 0.125rem 0.5rem;
119
+ border-radius: 9999px;
120
+ }
121
+
122
+ .sorteo-panel-tabs {
123
+ flex: 1;
124
+ background: var(--sorteo-card);
125
+ border-radius: 1.5rem;
126
+ box-shadow: 0 10px 15px -3px rgba(0, 0, 0, 0.1);
127
+ border: 1px solid var(--sorteo-border);
128
+ display: flex;
129
+ flex-direction: column;
130
+ overflow: hidden;
131
+ min-height: 0;
132
+ }
133
+
134
+ .sorteo-tabs-header {
135
+ display: flex;
136
+ border-bottom: 1px solid var(--sorteo-border);
137
+ }
138
+
139
+ .sorteo-tab-btn {
140
+ flex: 1;
141
+ padding: 1rem;
142
+ font-size: 0.875rem;
143
+ font-weight: 600;
144
+ text-align: center;
145
+ border: none;
146
+ border-bottom: 2px solid transparent;
147
+ background: transparent;
148
+ color: var(--sorteo-text-muted);
149
+ cursor: pointer;
150
+ transition: all 0.2s;
151
+ outline: none;
152
+ }
153
+
154
+ .sorteo-tab-btn.active {
155
+ border-bottom-color: var(--sorteo-primary);
156
+ color: var(--sorteo-primary);
157
+ background: rgba(99, 102, 241, 0.05);
158
+ }
159
+
160
+ .sorteo-tab-view {
161
+ flex: 1;
162
+ display: flex;
163
+ flex-direction: column;
164
+ min-height: 0;
165
+ }
166
+
167
+ .sorteo-tab-view.hidden {
168
+ display: none;
169
+ }
170
+
171
+ .sorteo-view-actions {
172
+ padding: 0.5rem 1rem;
173
+ border-bottom: 1px solid var(--sorteo-border);
174
+ display: flex;
175
+ justify-content: space-between;
176
+ align-items: center;
177
+ gap: 0.5rem;
178
+ }
179
+
180
+ .sorteo-upload-label {
181
+ cursor: pointer;
182
+ padding: 0.375rem 0.75rem;
183
+ border-radius: 0.5rem;
184
+ font-size: 0.75rem;
185
+ font-weight: 700;
186
+ background: rgba(99, 102, 241, 0.05);
187
+ color: var(--sorteo-primary);
188
+ display: flex;
189
+ align-items: center;
190
+ gap: 0.5rem;
191
+ transition: background 0.2s;
192
+ }
193
+
194
+ .sorteo-upload-label:hover {
195
+ background: rgba(99, 102, 241, 0.1);
196
+ }
197
+
198
+ .sorteo-icon-btn {
199
+ color: var(--sorteo-text-muted);
200
+ padding: 0.5rem;
201
+ border-radius: 0.5rem;
202
+ border: none;
203
+ background: transparent;
204
+ cursor: pointer;
205
+ transition: all 0.2s;
206
+ }
207
+
208
+ .sorteo-icon-btn:hover {
209
+ color: var(--sorteo-danger);
210
+ background: rgba(239, 68, 68, 0.05);
211
+ }
212
+
213
+ .sorteo-textarea-wrapper {
214
+ flex: 1;
215
+ position: relative;
216
+ min-height: 0;
217
+ }
218
+
219
+ .sorteo-textarea {
220
+ width: 100%;
221
+ height: 100%;
222
+ padding: 1rem;
223
+ border: none;
224
+ background: transparent;
225
+ resize: none;
226
+ font-size: 0.875rem;
227
+ line-height: 1.5;
228
+ color: var(--sorteo-text);
229
+ outline: none;
230
+ }
231
+
232
+ .sorteo-textarea-fade {
233
+ position: absolute;
234
+ bottom: 0;
235
+ left: 0;
236
+ width: 100%;
237
+ height: 2rem;
238
+ background: linear-gradient(to top, var(--sorteo-card), transparent);
239
+ pointer-events: none;
240
+ }
241
+
242
+ .sorteo-view-footer {
243
+ padding: 0.5rem 1rem;
244
+ border-top: 1px solid var(--sorteo-border);
245
+ font-size: 0.625rem;
246
+ color: var(--sorteo-text-muted);
247
+ display: flex;
248
+ justify-content: space-between;
249
+ }
250
+
251
+ .sorteo-settings-content {
252
+ flex: 1;
253
+ padding: 1.5rem;
254
+ overflow-y: auto;
255
+ display: flex;
256
+ flex-direction: column;
257
+ gap: 2rem;
258
+ }
259
+
260
+ .sorteo-section-title {
261
+ font-size: 0.75rem;
262
+ font-weight: 700;
263
+ text-transform: uppercase;
264
+ color: var(--sorteo-text-muted);
265
+ display: flex;
266
+ align-items: center;
267
+ gap: 0.5rem;
268
+ margin-bottom: 1rem;
269
+ }
270
+
271
+ .sorteo-options-list {
272
+ display: flex;
273
+ flex-direction: column;
274
+ gap: 1rem;
275
+ }
276
+
277
+ .sorteo-option-item {
278
+ display: flex;
279
+ align-items: center;
280
+ justify-content: space-between;
281
+ padding: 0.75rem;
282
+ background: rgba(0,0,0,0.02);
283
+ border: 1px solid var(--sorteo-border);
284
+ border-radius: 0.75rem;
285
+ cursor: pointer;
286
+ }
287
+
288
+ :global(.theme-dark) .sorteo-option-item {
289
+ background: rgba(255,255,255,0.02);
290
+ }
291
+
292
+ .sorteo-option-label {
293
+ font-size: 0.875rem;
294
+ font-weight: 500;
295
+ color: var(--sorteo-text);
296
+ }
297
+
298
+ .sorteo-switch {
299
+ position: relative;
300
+ width: 2.25rem;
301
+ height: 1.25rem;
302
+ }
303
+
304
+ .sorteo-switch-slider {
305
+ position: absolute;
306
+ inset: 0;
307
+ background: #cbd5e1;
308
+ border-radius: 9999px;
309
+ transition: all 0.3s;
310
+ }
311
+
312
+ :global(.theme-dark) .sorteo-switch-slider {
313
+ background: #334155;
314
+ }
315
+
316
+ .sorteo-switch-slider::after {
317
+ content: "";
318
+ position: absolute;
319
+ top: 2px;
320
+ left: 2px;
321
+ width: 1rem;
322
+ height: 1rem;
323
+ background: white;
324
+ border-radius: 50%;
325
+ transition: all 0.3s;
326
+ }
327
+
328
+ .sorteo-switch input:checked + .sorteo-switch-slider {
329
+ background: var(--sorteo-primary);
330
+ }
331
+
332
+ .sorteo-switch input:checked + .sorteo-switch-slider.success {
333
+ background: var(--sorteo-success);
334
+ }
335
+
336
+ .sorteo-switch input:checked + .sorteo-switch-slider.primary {
337
+ background: var(--sorteo-secondary);
338
+ }
339
+
340
+ .sorteo-switch input:checked + .sorteo-switch-slider::after {
341
+ transform: translateX(1rem);
342
+ }
343
+
344
+ .sorteo-number-input {
345
+ width: 4rem;
346
+ text-align: center;
347
+ background: var(--sorteo-card);
348
+ border: 1px solid var(--sorteo-border);
349
+ border-radius: 0.5rem;
350
+ padding: 0.25rem;
351
+ font-weight: 700;
352
+ color: var(--sorteo-text);
353
+ outline: none;
354
+ }
355
+
356
+ .sorteo-field-group {
357
+ display: flex;
358
+ flex-direction: column;
359
+ gap: 0.5rem;
360
+ }
361
+
362
+ .sorteo-field-label {
363
+ font-size: 0.875rem;
364
+ font-weight: 500;
365
+ color: var(--sorteo-text);
366
+ }
367
+
368
+ .sorteo-textarea-small {
369
+ width: 100%;
370
+ height: 8rem;
371
+ padding: 0.75rem;
372
+ border-radius: 0.75rem;
373
+ background: rgba(0,0,0,0.02);
374
+ border: 1px solid var(--sorteo-border);
375
+ color: var(--sorteo-text);
376
+ font-size: 0.75rem;
377
+ outline: none;
378
+ resize: none;
379
+ }
380
+
381
+ .sorteo-field-info {
382
+ font-size: 0.625rem;
383
+ color: var(--sorteo-text-muted);
384
+ margin: 0;
385
+ }
386
+
387
+ .sorteo-stage {
388
+ grid-column: span 1;
389
+ height: 800px;
390
+ position: relative;
391
+ transition: all 0.5s ease-in-out;
392
+ }
393
+
394
+ @media (min-width: 1280px) {
395
+ .sorteo-stage {
396
+ grid-column: span 8;
397
+ }
398
+ }
399
+
400
+ .sorteo-stage.zen-active {
401
+ grid-column: span 12;
402
+ }
403
+
404
+ .sorteo-zen-btn {
405
+ position: absolute;
406
+ top: 1.5rem;
407
+ left: 1.5rem;
408
+ z-index: 50;
409
+ padding: 0.5rem;
410
+ border-radius: 9999px;
411
+ border: none;
412
+ background: rgba(255, 255, 255, 0.05);
413
+ color: #94a3b8;
414
+ backdrop-filter: blur(8px);
415
+ cursor: pointer;
416
+ opacity: 0;
417
+ transition: all 0.3s;
418
+ }
419
+
420
+ .sorteo-stage:hover .sorteo-zen-btn {
421
+ opacity: 1;
422
+ }
423
+
424
+ .sorteo-zen-btn:hover {
425
+ background: white;
426
+ color: var(--sorteo-primary);
427
+ }
428
+
429
+ :global(.theme-dark) .sorteo-zen-btn:hover {
430
+ background: black;
431
+ }
432
+
433
+ .sorteo-studio {
434
+ height: 100%;
435
+ background: var(--sorteo-studio-bg);
436
+ border-radius: 2rem;
437
+ border: 4px solid #1e293b;
438
+ box-shadow: 0 25px 50px -12px rgba(0, 0, 0, 0.5), 0 0 0 1px rgba(255, 255, 255, 0.1);
439
+ display: flex;
440
+ flex-direction: column;
441
+ overflow: hidden;
442
+ position: relative;
443
+ }
444
+
445
+ .sorteo-studio-header {
446
+ height: 3rem;
447
+ background: #020617;
448
+ display: flex;
449
+ align-items: center;
450
+ padding: 0 1.5rem;
451
+ gap: 0.5rem;
452
+ }
453
+
454
+ .sorteo-dots {
455
+ display: flex;
456
+ gap: 0.375rem;
457
+ }
458
+
459
+ .dot {
460
+ width: 0.75rem;
461
+ height: 0.75rem;
462
+ border-radius: 50%;
463
+ }
464
+
465
+ .dot.red {
466
+ background: #ef4444;
467
+ opacity: 0.5;
468
+ }
469
+ .dot.yellow {
470
+ background: #f59e0b;
471
+ opacity: 0.5;
472
+ }
473
+ .dot.green {
474
+ background: #10b981;
475
+ opacity: 0.5;
476
+ }
477
+
478
+ .sorteo-version {
479
+ margin-left: auto;
480
+ font-size: 0.75rem;
481
+ color: #475569;
482
+ text-transform: uppercase;
483
+ letter-spacing: 0.2em;
484
+ }
485
+
486
+ .sorteo-arena {
487
+ flex: 1;
488
+ position: relative;
489
+ background: radial-gradient(circle at center, #1e1b4b, #020617);
490
+ display: flex;
491
+ align-items: center;
492
+ justify-content: center;
493
+ overflow: hidden;
494
+ }
495
+
496
+ .sorteo-grid-bg {
497
+ position: absolute;
498
+ inset: 0;
499
+ background-image:
500
+ linear-gradient(rgba(255,255,255,0.02) 1px, transparent 1px),
501
+ linear-gradient(90deg, rgba(255,255,255,0.02) 1px, transparent 1px);
502
+ background-size: 4rem 4rem;
503
+ mask-image: radial-gradient(circle at center, black 40%, transparent 80%);
504
+ }
505
+
506
+ .sorteo-glow {
507
+ position: absolute;
508
+ top: 0;
509
+ left: 50%;
510
+ transform: translateX(-50%);
511
+ width: 800px;
512
+ height: 500px;
513
+ background: rgba(99, 102, 241, 0.15);
514
+ filter: blur(120px);
515
+ border-radius: 50%;
516
+ pointer-events: none;
517
+ }
518
+
519
+ .sorteo-content {
520
+ position: relative;
521
+ z-index: 10;
522
+ width: 100%;
523
+ max-width: 56rem;
524
+ text-align: center;
525
+ padding: 1rem;
526
+ }
527
+
528
+ .sorteo-state-empty {
529
+ transition: all 0.5s ease;
530
+ }
531
+
532
+ .sorteo-state-empty.hidden-anim {
533
+ opacity: 0;
534
+ transform: translateY(1rem);
535
+ pointer-events: none;
536
+ }
537
+
538
+ .sorteo-empty-icon {
539
+ width: 6rem;
540
+ height: 6rem;
541
+ background: rgba(30, 41, 59, 0.5);
542
+ border: 1px solid rgba(51, 65, 85, 0.5);
543
+ border-radius: 50%;
544
+ display: inline-flex;
545
+ align-items: center;
546
+ justify-content: center;
547
+ margin-bottom: 1.5rem;
548
+ animation: pulse 2s infinite;
549
+ }
550
+
551
+ .sorteo-empty-icon [data-icon] {
552
+ width: 2.5rem;
553
+ height: 2.5rem;
554
+ color: #64748b;
555
+ }
556
+
557
+ .sorteo-empty-title {
558
+ font-size: 1.875rem;
559
+ font-weight: 700;
560
+ color: #475569;
561
+ margin: 0;
562
+ }
563
+
564
+ .sorteo-state-countdown {
565
+ position: absolute;
566
+ inset: 0;
567
+ display: flex;
568
+ align-items: center;
569
+ justify-content: center;
570
+ z-index: 50;
571
+ pointer-events: none;
572
+ }
573
+
574
+ .sorteo-countdown-text {
575
+ font-size: 15rem;
576
+ font-weight: 900;
577
+ color: rgba(255,255,255,0.1);
578
+ transform: scale(1.5);
579
+ filter: blur(2px);
580
+ }
581
+
582
+ .sorteo-state-active {
583
+ display: flex;
584
+ flex-direction: column;
585
+ align-items: center;
586
+ gap: 2rem;
587
+ }
588
+
589
+ .sorteo-active-label {
590
+ color: #818cf8;
591
+ font-size: 0.875rem;
592
+ letter-spacing: 0.5em;
593
+ text-transform: uppercase;
594
+ opacity: 0.7;
595
+ }
596
+
597
+ .sorteo-winner-display {
598
+ padding: 3rem 0;
599
+ }
600
+
601
+ .sorteo-winner-name {
602
+ font-size: clamp(3rem, 15vw, 8rem);
603
+ font-weight: 900;
604
+ color: white;
605
+ letter-spacing: -0.02em;
606
+ margin: 0;
607
+ text-shadow: 0 0 50px rgba(99, 102, 241, 0.5);
608
+ word-break: break-all;
609
+ line-height: 1.1;
610
+ }
611
+
612
+ .sorteo-winner-name.winner-success {
613
+ color: #34d399;
614
+ text-shadow: 0 0 40px rgba(52, 211, 153, 0.8), 0 0 80px rgba(52, 211, 153, 0.4);
615
+ }
616
+
617
+ .sorteo-winner-name.scale-up {
618
+ transform: scale(1.1);
619
+ transition: transform 0.5s;
620
+ }
621
+
622
+ .sorteo-multi-results {
623
+ display: grid;
624
+ grid-template-columns: 1fr;
625
+ gap: 1rem;
626
+ width: 100%;
627
+ max-height: 400px;
628
+ overflow-y: auto;
629
+ padding: 1rem;
630
+ }
631
+
632
+ @media (min-width: 768px) {
633
+ .sorteo-multi-results { grid-template-columns: repeat(2, 1fr); }
634
+ }
635
+
636
+ @media (min-width: 1024px) {
637
+ .sorteo-multi-results { grid-template-columns: repeat(3, 1fr); }
638
+ }
639
+
640
+ .sorteo-result-card {
641
+ background: rgba(30, 41, 59, 0.8);
642
+ border: 1px solid rgba(51, 65, 85, 0.5);
643
+ padding: 1rem;
644
+ border-radius: 0.75rem;
645
+ position: relative;
646
+ display: flex;
647
+ align-items: center;
648
+ justify-content: center;
649
+ transition: all 0.3s;
650
+ }
651
+
652
+ .sorteo-result-card:hover {
653
+ background: rgba(16, 185, 129, 0.1);
654
+ border-color: rgba(16, 185, 129, 0.3);
655
+ }
656
+
657
+ .sorteo-result-name {
658
+ font-size: 1.25rem;
659
+ font-weight: 700;
660
+ color: white;
661
+ word-break: break-all;
662
+ }
663
+
664
+ .sorteo-result-idx {
665
+ position: absolute;
666
+ top: 0.375rem;
667
+ left: 0.375rem;
668
+ font-size: 0.625rem;
669
+ color: #64748b;
670
+ }
671
+
672
+ .sorteo-winner-actions {
673
+ margin-top: 3rem;
674
+ display: flex;
675
+ justify-content: center;
676
+ }
677
+
678
+ .sorteo-reroll-btn {
679
+ background: #1e293b;
680
+ color: white;
681
+ padding: 0.75rem 1.5rem;
682
+ border-radius: 9999px;
683
+ font-weight: 700;
684
+ font-size: 0.875rem;
685
+ border: 1px solid #334155;
686
+ cursor: pointer;
687
+ transition: background 0.2s;
688
+ }
689
+
690
+ .sorteo-reroll-btn:hover {
691
+ background: #334155;
692
+ }
693
+
694
+ .sorteo-studio-footer {
695
+ height: 6rem;
696
+ background: #0f172a;
697
+ border-top: 1px solid #1e293b;
698
+ display: flex;
699
+ align-items: center;
700
+ justify-content: center;
701
+ padding: 0 2rem;
702
+ }
703
+
704
+ .sorteo-main-btn {
705
+ width: 100%;
706
+ max-width: 28rem;
707
+ position: relative;
708
+ border: none;
709
+ background: transparent;
710
+ cursor: pointer;
711
+ padding: 0;
712
+ outline: none;
713
+ }
714
+
715
+ .sorteo-btn-glow {
716
+ position: absolute;
717
+ inset: 0;
718
+ background: linear-gradient(90deg, #6366f1, #a855f7, #ec4899);
719
+ border-radius: 0.75rem;
720
+ filter: blur(8px);
721
+ opacity: 0.25;
722
+ transition: opacity 0.5s;
723
+ }
724
+
725
+ .sorteo-main-btn:hover:not(:disabled) .sorteo-btn-glow {
726
+ opacity: 0.75;
727
+ }
728
+
729
+ .sorteo-main-btn:disabled .sorteo-btn-glow {
730
+ display: none;
731
+ }
732
+
733
+ .sorteo-btn-content {
734
+ position: relative;
735
+ height: 3.5rem;
736
+ background: white;
737
+ border-radius: 0.75rem;
738
+ border: 1px solid #e2e8f0;
739
+ display: flex;
740
+ align-items: center;
741
+ justify-content: center;
742
+ gap: 0.75rem;
743
+ transition: transform 0.1s;
744
+ }
745
+
746
+ :global(.theme-dark) .sorteo-btn-content {
747
+ background: #020617;
748
+ border-color: #1e293b;
749
+ }
750
+
751
+ .sorteo-main-btn:active:not(:disabled) .sorteo-btn-content {
752
+ transform: scale(0.98);
753
+ }
754
+
755
+ .sorteo-btn-content span {
756
+ font-size: 1.25rem;
757
+ font-weight: 900;
758
+ text-transform: uppercase;
759
+ letter-spacing: 0.05em;
760
+ background: linear-gradient(90deg, #4f46e5, #9333ea);
761
+ -webkit-background-clip: text;
762
+ -webkit-text-fill-color: transparent;
763
+ }
764
+
765
+ :global(.theme-dark) .sorteo-btn-content span {
766
+ background: linear-gradient(90deg, #818cf8, #c084fc);
767
+ -webkit-background-clip: text;
768
+ -webkit-text-fill-color: transparent;
769
+ }
770
+
771
+ .sorteo-main-btn:disabled .sorteo-btn-content span {
772
+ background: none;
773
+ -webkit-text-fill-color: #475569;
774
+ color: #475569;
775
+ }
776
+
777
+ .sorteo-btn-content [data-icon] {
778
+ width: 1.5rem;
779
+ height: 1.5rem;
780
+ color: #a855f7;
781
+ }
782
+
783
+ .sorteo-main-btn:disabled .sorteo-btn-content [data-icon] {
784
+ color: #475569;
785
+ }
786
+
787
+ .sorteo-history {
788
+ margin-top: 3rem;
789
+ }
790
+
791
+ .sorteo-history-container {
792
+ border-top: 1px solid var(--sorteo-border);
793
+ padding-top: 2rem;
794
+ }
795
+
796
+ .sorteo-history-title {
797
+ font-size: 1.125rem;
798
+ font-weight: 700;
799
+ color: var(--sorteo-text);
800
+ display: flex;
801
+ align-items: center;
802
+ gap: 0.5rem;
803
+ margin-bottom: 1.5rem;
804
+ }
805
+
806
+ .sorteo-history-title [data-icon] {
807
+ width: 1.25rem;
808
+ height: 1.25rem;
809
+ opacity: 0.5;
810
+ }
811
+
812
+ .sorteo-history-list {
813
+ display: flex;
814
+ flex-wrap: wrap;
815
+ gap: 0.75rem;
816
+ }
817
+
818
+ .sorteo-no-winners {
819
+ font-size: 0.875rem;
820
+ font-style: italic;
821
+ color: var(--sorteo-text-muted);
822
+ }
823
+
824
+ .sorteo-history-item {
825
+ background: var(--sorteo-card);
826
+ border: 1px solid var(--sorteo-border);
827
+ border-radius: 9999px;
828
+ padding: 0.375rem 1rem;
829
+ font-size: 0.875rem;
830
+ font-weight: 500;
831
+ color: var(--sorteo-text);
832
+ display: flex;
833
+ align-items: center;
834
+ gap: 0.5rem;
835
+ box-shadow: 0 1px 2px rgba(0,0,0,0.05);
836
+ animation: zoom-in 0.3s ease-out;
837
+ }
838
+
839
+ .sorteo-history-dot {
840
+ width: 0.5rem;
841
+ height: 0.5rem;
842
+ border-radius: 50%;
843
+ background: var(--sorteo-success);
844
+ }
845
+
846
+ .sr-only {
847
+ position: absolute;
848
+ width: 1px;
849
+ height: 1px;
850
+ padding: 0;
851
+ margin: -1px;
852
+ overflow: hidden;
853
+ clip-path: inset(50%);
854
+ white-space: nowrap;
855
+ border-width: 0;
856
+ }
857
+
858
+ .hidden { display: none; }
859
+
860
+ @keyframes pulse {
861
+ 0%, 100% { opacity: 1; }
862
+ 50% { opacity: 0.5; }
863
+ }
864
+
865
+ @keyframes ping-slow {
866
+ 0% {
867
+ transform: scale(1);
868
+ opacity: 0.5;
869
+ }
870
+ 100% {
871
+ transform: scale(1.5);
872
+ opacity: 0;
873
+ }
874
+ }
875
+
876
+ .animate-ping-slow {
877
+ animation: ping-slow 1s cubic-bezier(0, 0, 0.2, 1) infinite;
878
+ }
879
+
880
+ @keyframes zoom-in {
881
+ 0% {
882
+ opacity: 0;
883
+ transform: scale(0.95);
884
+ }
885
+ 100% {
886
+ opacity: 1;
887
+ transform: scale(1);
888
+ }
889
+ }
890
+
891
+ .animate-zoom-in {
892
+ animation: zoom-in 0.5s ease-out both;
893
+ }
894
+
895
+ .sorteo-confetti-particle {
896
+ position: absolute;
897
+ width: 8px;
898
+ height: 8px;
899
+ border-radius: 50%;
900
+ z-index: 50;
901
+ left: 50%;
902
+ top: 50%;
903
+ opacity: 1;
904
+ transform: translate(0, 0) rotate(0deg) scale(0.5);
905
+ animation: confetti-fly 1.5s cubic-bezier(0.1, 1, 0.2, 1) forwards;
906
+ }
907
+
908
+ @keyframes confetti-fly {
909
+ to {
910
+ transform: translate(var(--tx), var(--ty)) rotate(var(--rot)) scale(1);
911
+ opacity: 0;
912
+ }
913
+ }
914
+
915
+ .custom-scrollbar::-webkit-scrollbar {
916
+ width: 4px;
917
+ }
918
+ .custom-scrollbar::-webkit-scrollbar-track {
919
+ background: transparent;
920
+ }
921
+ .custom-scrollbar::-webkit-scrollbar-thumb {
922
+ background: var(--sorteo-border);
923
+ border-radius: 10px;
924
+ }