reqct-gamehub-module 0.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.
package/dist/index.css ADDED
@@ -0,0 +1,2581 @@
1
+ /* src/games/Snake/SnakeGame.css */
2
+ .snake-game {
3
+ width: 100%;
4
+ height: 100%;
5
+ display: flex;
6
+ flex-direction: column;
7
+ background: white;
8
+ color: #333;
9
+ font-family:
10
+ -apple-system,
11
+ BlinkMacSystemFont,
12
+ "Segoe UI",
13
+ sans-serif;
14
+ overflow: hidden;
15
+ }
16
+ .game-header {
17
+ display: flex;
18
+ justify-content: space-between;
19
+ align-items: center;
20
+ padding: 12px 16px;
21
+ border-bottom: 1px solid #e1e5e9;
22
+ flex-shrink: 0;
23
+ }
24
+ .game-header h2 {
25
+ margin: 0;
26
+ font-size: 18px;
27
+ color: #333;
28
+ font-weight: 600;
29
+ }
30
+ .game-controls {
31
+ display: flex;
32
+ gap: 8px;
33
+ }
34
+ .control-btn {
35
+ padding: 6px 12px;
36
+ border: none;
37
+ border-radius: 6px;
38
+ font-size: 11px;
39
+ font-weight: 600;
40
+ cursor: pointer;
41
+ transition: all 0.2s;
42
+ display: flex;
43
+ align-items: center;
44
+ gap: 4px;
45
+ text-transform: uppercase;
46
+ letter-spacing: 0.5px;
47
+ }
48
+ .start-btn {
49
+ background:
50
+ linear-gradient(
51
+ 45deg,
52
+ #00b09b,
53
+ #96c93d);
54
+ color: white;
55
+ }
56
+ .pause-btn {
57
+ background:
58
+ linear-gradient(
59
+ 45deg,
60
+ #ff9966,
61
+ #ff5e62);
62
+ color: white;
63
+ }
64
+ .game-stats {
65
+ display: grid;
66
+ grid-template-columns: repeat(4, 1fr);
67
+ gap: 8px;
68
+ padding: 12px 16px;
69
+ border-bottom: 1px solid #e1e5e9;
70
+ flex-shrink: 0;
71
+ }
72
+ .stat-box {
73
+ background: #f8f9fa;
74
+ border-radius: 8px;
75
+ padding: 8px;
76
+ text-align: center;
77
+ border: 1px solid #e1e5e9;
78
+ }
79
+ .stat-label {
80
+ font-size: 10px;
81
+ color: #666;
82
+ margin-bottom: 4px;
83
+ text-transform: uppercase;
84
+ letter-spacing: 0.5px;
85
+ }
86
+ .stat-value {
87
+ font-size: 16px;
88
+ font-weight: 700;
89
+ color: #667eea;
90
+ }
91
+ .game-board-container {
92
+ flex: 1;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: center;
96
+ padding: 10px;
97
+ min-height: 0;
98
+ position: relative;
99
+ overflow: hidden;
100
+ }
101
+ .start-screen {
102
+ width: 100%;
103
+ max-width: 320px;
104
+ background: white;
105
+ border-radius: 12px;
106
+ padding: 20px;
107
+ text-align: center;
108
+ }
109
+ .instructions h3 {
110
+ color: #667eea;
111
+ margin-bottom: 12px;
112
+ font-size: 16px;
113
+ font-weight: 600;
114
+ }
115
+ .instructions ul {
116
+ list-style: none;
117
+ padding: 0;
118
+ margin-bottom: 20px;
119
+ text-align: left;
120
+ }
121
+ .instructions li {
122
+ padding: 6px 0;
123
+ font-size: 12px;
124
+ color: #666;
125
+ display: flex;
126
+ align-items: center;
127
+ gap: 8px;
128
+ }
129
+ .start-instruction-btn {
130
+ width: 100%;
131
+ padding: 10px;
132
+ background:
133
+ linear-gradient(
134
+ 45deg,
135
+ #667eea,
136
+ #764ba2);
137
+ color: white;
138
+ border: none;
139
+ border-radius: 8px;
140
+ font-size: 13px;
141
+ font-weight: 600;
142
+ cursor: pointer;
143
+ transition: all 0.2s;
144
+ text-transform: uppercase;
145
+ letter-spacing: 1px;
146
+ }
147
+ .start-instruction-btn:hover {
148
+ transform: translateY(-1px);
149
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
150
+ }
151
+ .paused-screen {
152
+ position: absolute;
153
+ top: 0;
154
+ left: 0;
155
+ right: 0;
156
+ bottom: 0;
157
+ background: rgba(255, 255, 255, 0.95);
158
+ display: flex;
159
+ flex-direction: column;
160
+ align-items: center;
161
+ justify-content: center;
162
+ z-index: 10;
163
+ }
164
+ .paused-screen h3 {
165
+ font-size: 18px;
166
+ color: #667eea;
167
+ margin-bottom: 8px;
168
+ font-weight: 600;
169
+ }
170
+ .paused-screen p {
171
+ color: #666;
172
+ font-size: 12px;
173
+ }
174
+ .game-board {
175
+ display: block;
176
+ border: 2px solid #e1e5e9;
177
+ border-radius: 6px;
178
+ background: white;
179
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
180
+ position: relative;
181
+ margin: 0 auto;
182
+ }
183
+ .grid-row {
184
+ display: flex;
185
+ }
186
+ .grid-cell {
187
+ width: 20px;
188
+ height: 20px;
189
+ border: 1px solid #f0f0f0;
190
+ position: relative;
191
+ }
192
+ .grid-cell.snake-head {
193
+ background:
194
+ linear-gradient(
195
+ 45deg,
196
+ #00b09b,
197
+ #96c93d);
198
+ border-radius: 50%;
199
+ }
200
+ .grid-cell.snake-body {
201
+ background:
202
+ linear-gradient(
203
+ 45deg,
204
+ #4cc9f0,
205
+ #4361ee);
206
+ border-radius: 3px;
207
+ }
208
+ .grid-cell.food {
209
+ background:
210
+ linear-gradient(
211
+ 45deg,
212
+ #ff5e62,
213
+ #ff9966);
214
+ border-radius: 50%;
215
+ animation: pulse 1s infinite;
216
+ }
217
+ @keyframes pulse {
218
+ 0%, 100% {
219
+ transform: scale(1);
220
+ opacity: 1;
221
+ }
222
+ 50% {
223
+ transform: scale(1.1);
224
+ opacity: 0.9;
225
+ }
226
+ }
227
+ .game-over-overlay {
228
+ position: absolute;
229
+ top: 0;
230
+ left: 0;
231
+ right: 0;
232
+ bottom: 0;
233
+ background: rgba(255, 255, 255, 0.98);
234
+ display: flex;
235
+ align-items: center;
236
+ justify-content: center;
237
+ z-index: 10;
238
+ }
239
+ .game-over-content {
240
+ background: white;
241
+ padding: 20px;
242
+ border-radius: 12px;
243
+ text-align: center;
244
+ border: 2px solid #e1e5e9;
245
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
246
+ max-width: 280px;
247
+ width: 90%;
248
+ }
249
+ .game-over-content h3 {
250
+ font-size: 16px;
251
+ color: #ff5e62;
252
+ margin-bottom: 12px;
253
+ font-weight: 600;
254
+ }
255
+ .final-stats {
256
+ background: #f8f9fa;
257
+ padding: 12px;
258
+ border-radius: 8px;
259
+ margin: 12px 0;
260
+ border: 1px solid #e1e5e9;
261
+ }
262
+ .final-stats p {
263
+ margin: 6px 0;
264
+ font-size: 12px;
265
+ color: #666;
266
+ display: flex;
267
+ justify-content: space-between;
268
+ }
269
+ .final-stats strong {
270
+ color: #667eea;
271
+ font-size: 14px;
272
+ }
273
+ .play-again-btn {
274
+ background:
275
+ linear-gradient(
276
+ 45deg,
277
+ #667eea,
278
+ #764ba2);
279
+ color: white;
280
+ border: none;
281
+ padding: 10px 20px;
282
+ border-radius: 8px;
283
+ font-size: 12px;
284
+ font-weight: 600;
285
+ cursor: pointer;
286
+ transition: all 0.2s;
287
+ display: flex;
288
+ align-items: center;
289
+ gap: 6px;
290
+ margin: 0 auto;
291
+ text-transform: uppercase;
292
+ letter-spacing: 0.5px;
293
+ }
294
+ .play-again-btn:hover {
295
+ transform: translateY(-1px);
296
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
297
+ }
298
+ .mobile-controls {
299
+ display: none;
300
+ flex-direction: column;
301
+ align-items: center;
302
+ padding: 10px;
303
+ gap: 4px;
304
+ flex-shrink: 0;
305
+ border-top: 1px solid #e1e5e9;
306
+ }
307
+ .horizontal-controls {
308
+ display: flex;
309
+ gap: 30px;
310
+ align-items: center;
311
+ }
312
+ .mobile-btn {
313
+ width: 40px;
314
+ height: 40px;
315
+ border: none;
316
+ border-radius: 8px;
317
+ background: #667eea;
318
+ color: white;
319
+ font-size: 16px;
320
+ font-weight: bold;
321
+ cursor: pointer;
322
+ transition: all 0.2s;
323
+ display: flex;
324
+ align-items: center;
325
+ justify-content: center;
326
+ }
327
+ .mobile-btn:active {
328
+ transform: scale(0.95);
329
+ background: #764ba2;
330
+ }
331
+ .center-space {
332
+ width: 40px;
333
+ }
334
+ .game-instructions {
335
+ padding: 12px 16px;
336
+ border-top: 1px solid #e1e5e9;
337
+ display: flex;
338
+ flex-wrap: wrap;
339
+ gap: 12px;
340
+ flex-shrink: 0;
341
+ font-size: 11px;
342
+ color: #666;
343
+ }
344
+ .game-instructions p {
345
+ margin: 2px 0;
346
+ }
347
+ .game-instructions strong {
348
+ color: #333;
349
+ }
350
+ .legend {
351
+ display: flex;
352
+ gap: 12px;
353
+ align-items: center;
354
+ }
355
+ .legend-item {
356
+ display: flex;
357
+ align-items: center;
358
+ gap: 6px;
359
+ }
360
+ .legend-color {
361
+ width: 12px;
362
+ height: 12px;
363
+ border-radius: 2px;
364
+ }
365
+ .legend-color.snake-head {
366
+ background:
367
+ linear-gradient(
368
+ 45deg,
369
+ #00b09b,
370
+ #96c93d);
371
+ }
372
+ .legend-color.snake-body {
373
+ background:
374
+ linear-gradient(
375
+ 45deg,
376
+ #4cc9f0,
377
+ #4361ee);
378
+ }
379
+ .legend-color.food {
380
+ background:
381
+ linear-gradient(
382
+ 45deg,
383
+ #ff5e62,
384
+ #ff9966);
385
+ }
386
+ @media (max-width: 768px) {
387
+ .game-stats {
388
+ grid-template-columns: repeat(2, 1fr);
389
+ }
390
+ .mobile-controls {
391
+ display: flex;
392
+ }
393
+ .game-instructions {
394
+ flex-direction: column;
395
+ gap: 8px;
396
+ }
397
+ .legend {
398
+ justify-content: center;
399
+ }
400
+ .grid-cell {
401
+ width: 18px;
402
+ height: 18px;
403
+ }
404
+ }
405
+ @media (max-width: 480px) {
406
+ .grid-cell {
407
+ width: 16px;
408
+ height: 16px;
409
+ }
410
+ }
411
+ .difficulty-selector {
412
+ padding: 8px 16px;
413
+ border-bottom: 1px solid #e1e5e9;
414
+ display: flex;
415
+ align-items: center;
416
+ gap: 12px;
417
+ flex-shrink: 0;
418
+ background: #f8f9fa;
419
+ }
420
+ .difficulty-label {
421
+ font-size: 11px;
422
+ color: #666;
423
+ font-weight: 600;
424
+ }
425
+ .difficulty-btn {
426
+ padding: 6px 12px;
427
+ background: #f8f9fa;
428
+ border: 1px solid #e1e5e9;
429
+ border-radius: 6px;
430
+ font-size: 10px;
431
+ color: #666;
432
+ cursor: pointer;
433
+ transition: all 0.2s;
434
+ text-transform: uppercase;
435
+ letter-spacing: 0.5px;
436
+ }
437
+ .difficulty-btn.active {
438
+ color: white;
439
+ border-color: transparent;
440
+ }
441
+ .difficulty-btn:hover:not(.active) {
442
+ background: #e1e5e9;
443
+ }
444
+ .difficulty-info {
445
+ display: grid;
446
+ grid-template-columns: repeat(3, 1fr);
447
+ gap: 8px;
448
+ padding: 8px 16px;
449
+ border-bottom: 1px solid #e1e5e9;
450
+ background: white;
451
+ flex-shrink: 0;
452
+ }
453
+ .info-item {
454
+ text-align: center;
455
+ font-size: 11px;
456
+ }
457
+ .info-item span {
458
+ display: block;
459
+ color: #666;
460
+ margin-bottom: 2px;
461
+ }
462
+ .info-item strong {
463
+ color: #667eea;
464
+ font-weight: 600;
465
+ }
466
+ .game-board {
467
+ display: grid;
468
+ border: 2px solid #e1e5e9;
469
+ border-radius: 6px;
470
+ background: white;
471
+ box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
472
+ position: relative;
473
+ margin: 0 auto;
474
+ max-width: 400px;
475
+ max-height: 400px;
476
+ }
477
+ .grid-cell {
478
+ border: 1px solid #f0f0f0;
479
+ position: relative;
480
+ box-sizing: border-box;
481
+ }
482
+ @media (max-width: 768px) {
483
+ .difficulty-selector {
484
+ flex-wrap: wrap;
485
+ justify-content: center;
486
+ }
487
+ .difficulty-info {
488
+ grid-template-columns: repeat(3, 1fr);
489
+ }
490
+ .game-board {
491
+ max-width: 350px;
492
+ max-height: 350px;
493
+ }
494
+ }
495
+ @media (max-width: 480px) {
496
+ .game-board {
497
+ max-width: 300px;
498
+ max-height: 300px;
499
+ }
500
+ .difficulty-btn {
501
+ padding: 4px 8px;
502
+ font-size: 9px;
503
+ }
504
+ .info-item {
505
+ font-size: 10px;
506
+ }
507
+ }
508
+
509
+ /* src/games/Game2048/Game2048.css */
510
+ .game-2048 {
511
+ width: 100%;
512
+ height: 100%;
513
+ display: flex;
514
+ flex-direction: column;
515
+ background: white;
516
+ color: #333;
517
+ overflow: hidden;
518
+ }
519
+ .game-header {
520
+ padding: 12px 16px;
521
+ border-bottom: 1px solid #e1e5e9;
522
+ }
523
+ .game-header h2 {
524
+ margin: 0 0 8px 0;
525
+ font-size: 18px;
526
+ color: #333;
527
+ font-weight: 600;
528
+ }
529
+ .game-subtitle {
530
+ font-size: 16px;
531
+ color: #666;
532
+ }
533
+ .score-display {
534
+ background: #f8f9fa;
535
+ border-radius: 8px;
536
+ padding: 10px;
537
+ text-align: center;
538
+ border: 1px solid #e1e5e9;
539
+ margin-bottom: 12px;
540
+ }
541
+ .score-label {
542
+ font-size: 10px;
543
+ color: #666;
544
+ text-transform: uppercase;
545
+ letter-spacing: 0.5px;
546
+ margin-bottom: 4px;
547
+ }
548
+ .score-value {
549
+ font-size: 24px;
550
+ font-weight: 700;
551
+ color: #667eea;
552
+ }
553
+ .game-controls {
554
+ display: flex;
555
+ gap: 8px;
556
+ }
557
+ .control-btn {
558
+ flex: 1;
559
+ padding: 8px;
560
+ background:
561
+ linear-gradient(
562
+ 45deg,
563
+ #667eea,
564
+ #764ba2);
565
+ color: white;
566
+ border: none;
567
+ border-radius: 6px;
568
+ font-size: 11px;
569
+ font-weight: 600;
570
+ cursor: pointer;
571
+ transition: all 0.2s;
572
+ text-transform: uppercase;
573
+ letter-spacing: 0.5px;
574
+ }
575
+ .control-btn:hover {
576
+ transform: translateY(-1px);
577
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
578
+ }
579
+ .instructions {
580
+ padding: 8px 16px;
581
+ font-size: 11px;
582
+ color: #666;
583
+ text-align: center;
584
+ border-bottom: 1px solid #e1e5e9;
585
+ }
586
+ .instructions p {
587
+ margin: 4px 0;
588
+ }
589
+ .instructions strong {
590
+ color: #333;
591
+ font-weight: 600;
592
+ }
593
+ .game-area {
594
+ flex: 1;
595
+ display: flex;
596
+ flex-direction: column;
597
+ align-items: center;
598
+ justify-content: center;
599
+ padding: 16px;
600
+ gap: 16px;
601
+ min-height: 0;
602
+ }
603
+ .board-container {
604
+ max-width: 100%;
605
+ max-height: 100%;
606
+ }
607
+ .board {
608
+ background: #bbada0;
609
+ border-radius: 6px;
610
+ padding: 8px;
611
+ display: inline-block;
612
+ }
613
+ .row {
614
+ display: flex;
615
+ margin-bottom: 8px;
616
+ }
617
+ .row:last-child {
618
+ margin-bottom: 0;
619
+ }
620
+ .cell {
621
+ width: 50px;
622
+ height: 50px;
623
+ background: rgba(238, 228, 218, 0.35);
624
+ border-radius: 3px;
625
+ margin-right: 8px;
626
+ position: relative;
627
+ }
628
+ .cell:last-child {
629
+ margin-right: 0;
630
+ }
631
+ .tile {
632
+ position: absolute;
633
+ top: 0;
634
+ left: 0;
635
+ width: 100%;
636
+ height: 100%;
637
+ display: flex;
638
+ align-items: center;
639
+ justify-content: center;
640
+ border-radius: 3px;
641
+ font-weight: bold;
642
+ z-index: 1;
643
+ font-size: 18px;
644
+ }
645
+ .tile-2 {
646
+ background: #eee4da;
647
+ color: #776e65;
648
+ }
649
+ .tile-4 {
650
+ background: #ede0c8;
651
+ color: #776e65;
652
+ }
653
+ .tile-8 {
654
+ background: #f2b179;
655
+ color: #f9f6f2;
656
+ }
657
+ .tile-16 {
658
+ background: #f59563;
659
+ color: #f9f6f2;
660
+ }
661
+ .tile-32 {
662
+ background: #f67c5f;
663
+ color: #f9f6f2;
664
+ }
665
+ .tile-64 {
666
+ background: #f65e3b;
667
+ color: #f9f6f2;
668
+ }
669
+ .tile-128 {
670
+ background: #edcf72;
671
+ color: #f9f6f2;
672
+ font-size: 16px;
673
+ }
674
+ .tile-256 {
675
+ background: #edcc61;
676
+ color: #f9f6f2;
677
+ font-size: 16px;
678
+ }
679
+ .tile-512 {
680
+ background: #edc850;
681
+ color: #f9f6f2;
682
+ font-size: 16px;
683
+ }
684
+ .tile-1024 {
685
+ background: #edc53f;
686
+ color: #f9f6f2;
687
+ font-size: 14px;
688
+ }
689
+ .tile-2048 {
690
+ background: #edc22e;
691
+ color: #f9f6f2;
692
+ font-size: 14px;
693
+ animation: glow 2s infinite;
694
+ }
695
+ @keyframes glow {
696
+ 0%, 100% {
697
+ box-shadow: 0 0 10px rgba(237, 194, 46, 0.5);
698
+ }
699
+ 50% {
700
+ box-shadow: 0 0 20px rgba(237, 194, 46, 0.8);
701
+ }
702
+ }
703
+ .mobile-controls {
704
+ display: none;
705
+ width: 100%;
706
+ max-width: 200px;
707
+ }
708
+ .control-row {
709
+ display: flex;
710
+ justify-content: center;
711
+ gap: 40px;
712
+ margin: 4px 0;
713
+ }
714
+ .mobile-control-btn {
715
+ width: 50px;
716
+ height: 50px;
717
+ background: #667eea;
718
+ border: none;
719
+ border-radius: 8px;
720
+ color: white;
721
+ font-size: 20px;
722
+ font-weight: bold;
723
+ cursor: pointer;
724
+ display: flex;
725
+ align-items: center;
726
+ justify-content: center;
727
+ transition: all 0.2s;
728
+ }
729
+ .mobile-control-btn:active {
730
+ transform: scale(0.95);
731
+ background: #764ba2;
732
+ }
733
+ .spacer {
734
+ width: 50px;
735
+ }
736
+ .game-over-overlay,
737
+ .win-overlay {
738
+ position: absolute;
739
+ top: 0;
740
+ left: 0;
741
+ right: 0;
742
+ bottom: 0;
743
+ background: rgba(255, 255, 255, 0.95);
744
+ display: flex;
745
+ align-items: center;
746
+ justify-content: center;
747
+ z-index: 10;
748
+ }
749
+ .game-over-content,
750
+ .win-content {
751
+ background: white;
752
+ padding: 20px;
753
+ border-radius: 12px;
754
+ text-align: center;
755
+ border: 2px solid #e1e5e9;
756
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
757
+ max-width: 280px;
758
+ width: 90%;
759
+ }
760
+ .game-over-content h3 {
761
+ color: #ff5e62;
762
+ font-size: 16px;
763
+ margin-bottom: 12px;
764
+ font-weight: 600;
765
+ }
766
+ .win-content h3 {
767
+ color: #00b09b;
768
+ font-size: 16px;
769
+ margin-bottom: 12px;
770
+ font-weight: 600;
771
+ }
772
+ .final-score {
773
+ background: #f8f9fa;
774
+ padding: 12px;
775
+ border-radius: 8px;
776
+ margin: 12px 0;
777
+ border: 1px solid #e1e5e9;
778
+ }
779
+ .final-score p {
780
+ margin: 6px 0;
781
+ font-size: 12px;
782
+ color: #666;
783
+ display: flex;
784
+ justify-content: space-between;
785
+ }
786
+ .final-score strong {
787
+ color: #667eea;
788
+ font-size: 14px;
789
+ }
790
+ .play-again-btn,
791
+ .continue-btn,
792
+ .restart-btn {
793
+ padding: 8px 16px;
794
+ border: none;
795
+ border-radius: 6px;
796
+ font-size: 11px;
797
+ font-weight: 600;
798
+ cursor: pointer;
799
+ transition: all 0.2s;
800
+ text-transform: uppercase;
801
+ letter-spacing: 0.5px;
802
+ margin: 4px;
803
+ }
804
+ .play-again-btn {
805
+ background:
806
+ linear-gradient(
807
+ 45deg,
808
+ #667eea,
809
+ #764ba2);
810
+ color: white;
811
+ }
812
+ .continue-btn {
813
+ background:
814
+ linear-gradient(
815
+ 45deg,
816
+ #00b09b,
817
+ #96c93d);
818
+ color: white;
819
+ }
820
+ .restart-btn {
821
+ background:
822
+ linear-gradient(
823
+ 45deg,
824
+ #ff9966,
825
+ #ff5e62);
826
+ color: white;
827
+ }
828
+ .win-buttons {
829
+ display: flex;
830
+ gap: 8px;
831
+ justify-content: center;
832
+ margin-top: 12px;
833
+ }
834
+ @media (max-width: 768px) {
835
+ .cell {
836
+ width: 40px;
837
+ height: 40px;
838
+ }
839
+ .tile {
840
+ font-size: 14px;
841
+ }
842
+ .tile-128,
843
+ .tile-256,
844
+ .tile-512 {
845
+ font-size: 12px;
846
+ }
847
+ .tile-1024,
848
+ .tile-2048 {
849
+ font-size: 10px;
850
+ }
851
+ .mobile-controls {
852
+ display: block;
853
+ }
854
+ }
855
+ @media (max-width: 480px) {
856
+ .cell {
857
+ width: 35px;
858
+ height: 35px;
859
+ }
860
+ .board {
861
+ padding: 6px;
862
+ }
863
+ .row {
864
+ margin-bottom: 6px;
865
+ }
866
+ .cell {
867
+ margin-right: 6px;
868
+ }
869
+ .mobile-control-btn {
870
+ width: 40px;
871
+ height: 40px;
872
+ font-size: 16px;
873
+ }
874
+ .spacer {
875
+ width: 40px;
876
+ }
877
+ }
878
+
879
+ /* src/games/Memory/MemoryGame.css */
880
+ .memory-game {
881
+ width: 100%;
882
+ height: 100%;
883
+ display: flex;
884
+ flex-direction: column;
885
+ background: white;
886
+ color: #333;
887
+ font-family:
888
+ -apple-system,
889
+ BlinkMacSystemFont,
890
+ "Segoe UI",
891
+ sans-serif;
892
+ overflow: hidden;
893
+ }
894
+ .memory-game h2 {
895
+ padding: 12px 16px;
896
+ margin: 0;
897
+ font-size: 18px;
898
+ color: #333;
899
+ font-weight: 600;
900
+ border-bottom: 1px solid #e1e5e9;
901
+ flex-shrink: 0;
902
+ }
903
+ .game-stats {
904
+ display: grid;
905
+ grid-template-columns: repeat(3, 1fr);
906
+ gap: 8px;
907
+ padding: 12px 16px;
908
+ border-bottom: 1px solid #e1e5e9;
909
+ flex-shrink: 0;
910
+ }
911
+ .stat {
912
+ background: #f8f9fa;
913
+ border-radius: 8px;
914
+ padding: 10px;
915
+ text-align: center;
916
+ border: 1px solid #e1e5e9;
917
+ }
918
+ .stat span {
919
+ font-size: 10px;
920
+ color: #666;
921
+ text-transform: uppercase;
922
+ letter-spacing: 0.5px;
923
+ display: block;
924
+ margin-bottom: 4px;
925
+ }
926
+ .stat strong {
927
+ font-size: 18px;
928
+ color: #667eea;
929
+ font-weight: 700;
930
+ }
931
+ .difficulty-selector {
932
+ padding: 8px 16px;
933
+ border-bottom: 1px solid #e1e5e9;
934
+ display: flex;
935
+ align-items: center;
936
+ justify-content: center;
937
+ gap: 12px;
938
+ flex-shrink: 0;
939
+ }
940
+ .difficulty-label {
941
+ font-size: 11px;
942
+ color: #666;
943
+ font-weight: 600;
944
+ }
945
+ .difficulty-btn {
946
+ padding: 6px 12px;
947
+ background: #f8f9fa;
948
+ border: 1px solid #e1e5e9;
949
+ border-radius: 6px;
950
+ font-size: 10px;
951
+ color: #666;
952
+ cursor: pointer;
953
+ transition: all 0.2s;
954
+ text-transform: uppercase;
955
+ letter-spacing: 0.5px;
956
+ }
957
+ .difficulty-btn.active {
958
+ background:
959
+ linear-gradient(
960
+ 45deg,
961
+ #667eea,
962
+ #764ba2);
963
+ color: white;
964
+ border-color: #667eea;
965
+ }
966
+ .difficulty-btn:hover:not(.active) {
967
+ background: #e1e5e9;
968
+ }
969
+ .memory-board-container {
970
+ flex: 1;
971
+ display: flex;
972
+ align-items: center;
973
+ justify-content: center;
974
+ padding: 16px;
975
+ min-height: 0;
976
+ position: relative;
977
+ overflow: hidden;
978
+ }
979
+ .memory-board {
980
+ display: grid;
981
+ gap: 8px;
982
+ padding: 8px;
983
+ align-items: center;
984
+ justify-items: center;
985
+ width: fit-content;
986
+ height: fit-content;
987
+ max-width: 100%;
988
+ max-height: 100%;
989
+ margin: 0 auto;
990
+ }
991
+ .memory-board.easy {
992
+ grid-template-columns: repeat(4, 1fr);
993
+ grid-template-rows: repeat(4, 1fr);
994
+ }
995
+ .memory-board.medium {
996
+ grid-template-columns: repeat(6, 1fr);
997
+ grid-template-rows: repeat(4, 1fr);
998
+ }
999
+ .memory-board.hard {
1000
+ grid-template-columns: repeat(8, 1fr);
1001
+ grid-template-rows: repeat(4, 1fr);
1002
+ }
1003
+ .memory-card {
1004
+ width: 70px;
1005
+ height: 70px;
1006
+ perspective: 1000px;
1007
+ cursor: pointer;
1008
+ position: relative;
1009
+ transform-style: preserve-3d;
1010
+ transition: transform 0.3s;
1011
+ aspect-ratio: 1;
1012
+ }
1013
+ .memory-card.flipped {
1014
+ transform: rotateY(180deg);
1015
+ }
1016
+ .card-front,
1017
+ .card-back {
1018
+ position: absolute;
1019
+ width: 100%;
1020
+ height: 100%;
1021
+ backface-visibility: hidden;
1022
+ border-radius: 8px;
1023
+ display: flex;
1024
+ align-items: center;
1025
+ justify-content: center;
1026
+ font-size: 24px;
1027
+ transition: transform 0.6s;
1028
+ box-sizing: border-box;
1029
+ }
1030
+ .card-front {
1031
+ background:
1032
+ linear-gradient(
1033
+ 45deg,
1034
+ #667eea,
1035
+ #764ba2);
1036
+ color: white;
1037
+ font-weight: bold;
1038
+ transform: rotateY(0deg);
1039
+ box-shadow: 0 2px 6px rgba(102, 126, 234, 0.2);
1040
+ }
1041
+ .card-back {
1042
+ background: white;
1043
+ border: 2px solid #667eea;
1044
+ color: #667eea;
1045
+ transform: rotateY(180deg);
1046
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.1);
1047
+ }
1048
+ .card-back.matched {
1049
+ background:
1050
+ linear-gradient(
1051
+ 45deg,
1052
+ #00b09b,
1053
+ #96c93d);
1054
+ color: white;
1055
+ border-color: #00b09b;
1056
+ }
1057
+ .game-controls {
1058
+ padding: 12px 16px;
1059
+ border-top: 1px solid #e1e5e9;
1060
+ flex-shrink: 0;
1061
+ display: flex;
1062
+ gap: 8px;
1063
+ justify-content: center;
1064
+ }
1065
+ .restart-btn {
1066
+ padding: 8px 16px;
1067
+ background:
1068
+ linear-gradient(
1069
+ 45deg,
1070
+ #667eea,
1071
+ #764ba2);
1072
+ color: white;
1073
+ border: none;
1074
+ border-radius: 6px;
1075
+ font-size: 11px;
1076
+ font-weight: 600;
1077
+ cursor: pointer;
1078
+ transition: all 0.2s;
1079
+ text-transform: uppercase;
1080
+ letter-spacing: 0.5px;
1081
+ }
1082
+ .restart-btn:hover {
1083
+ transform: translateY(-1px);
1084
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
1085
+ }
1086
+ .game-instructions {
1087
+ padding: 8px 16px;
1088
+ font-size: 10px;
1089
+ color: #666;
1090
+ text-align: center;
1091
+ border-top: 1px solid #e1e5e9;
1092
+ flex-shrink: 0;
1093
+ }
1094
+ .game-instructions p {
1095
+ margin: 4px 0;
1096
+ }
1097
+ @keyframes match {
1098
+ 0%, 100% {
1099
+ transform: scale(1);
1100
+ }
1101
+ 50% {
1102
+ transform: scale(1.1);
1103
+ }
1104
+ }
1105
+ .memory-card.matched .card-back {
1106
+ animation: match 0.5s ease;
1107
+ }
1108
+ @media (max-width: 1024px) {
1109
+ .memory-card {
1110
+ width: 60px;
1111
+ height: 60px;
1112
+ }
1113
+ .card-front,
1114
+ .card-back {
1115
+ font-size: 20px;
1116
+ }
1117
+ .memory-board.medium {
1118
+ grid-template-columns: repeat(5, 1fr);
1119
+ grid-template-rows: repeat(5, 1fr);
1120
+ }
1121
+ .memory-board.hard {
1122
+ grid-template-columns: repeat(6, 1fr);
1123
+ grid-template-rows: repeat(6, 1fr);
1124
+ }
1125
+ }
1126
+ @media (max-width: 768px) {
1127
+ .memory-board-container {
1128
+ padding: 10px;
1129
+ }
1130
+ .memory-card {
1131
+ width: 50px;
1132
+ height: 50px;
1133
+ }
1134
+ .card-front,
1135
+ .card-back {
1136
+ font-size: 18px;
1137
+ }
1138
+ .memory-board {
1139
+ gap: 6px;
1140
+ padding: 6px;
1141
+ }
1142
+ .memory-board.easy {
1143
+ grid-template-columns: repeat(4, 1fr);
1144
+ grid-template-rows: repeat(4, 1fr);
1145
+ }
1146
+ .memory-board.medium {
1147
+ grid-template-columns: repeat(4, 1fr);
1148
+ grid-template-rows: repeat(6, 1fr);
1149
+ }
1150
+ .memory-board.hard {
1151
+ grid-template-columns: repeat(4, 1fr);
1152
+ grid-template-rows: repeat(8, 1fr);
1153
+ }
1154
+ }
1155
+ @media (max-width: 480px) {
1156
+ .memory-card {
1157
+ width: 45px;
1158
+ height: 45px;
1159
+ min-width: 40px;
1160
+ min-height: 40px;
1161
+ }
1162
+ .card-front,
1163
+ .card-back {
1164
+ font-size: 16px;
1165
+ }
1166
+ .memory-board {
1167
+ gap: 5px;
1168
+ padding: 5px;
1169
+ }
1170
+ .memory-card {
1171
+ width: 40px;
1172
+ height: 40px;
1173
+ }
1174
+ .card-front,
1175
+ .card-back {
1176
+ font-size: 14px;
1177
+ }
1178
+ .difficulty-selector {
1179
+ flex-wrap: wrap;
1180
+ gap: 8px;
1181
+ }
1182
+ .difficulty-btn {
1183
+ padding: 4px 8px;
1184
+ font-size: 9px;
1185
+ }
1186
+ }
1187
+
1188
+ /* src/games/Clicker/ClickerGame.css */
1189
+ .clicker-game {
1190
+ width: 100%;
1191
+ height: 100%;
1192
+ display: flex;
1193
+ flex-direction: column;
1194
+ background: white;
1195
+ color: #333;
1196
+ font-family:
1197
+ -apple-system,
1198
+ BlinkMacSystemFont,
1199
+ "Segoe UI",
1200
+ sans-serif;
1201
+ overflow: hidden;
1202
+ }
1203
+ .game-header {
1204
+ display: flex;
1205
+ justify-content: space-between;
1206
+ align-items: center;
1207
+ padding: 12px 16px;
1208
+ border-bottom: 1px solid #e1e5e9;
1209
+ flex-shrink: 0;
1210
+ }
1211
+ .game-header h2 {
1212
+ margin: 0;
1213
+ font-size: 18px;
1214
+ color: #333;
1215
+ font-weight: 600;
1216
+ }
1217
+ .header-controls {
1218
+ display: flex;
1219
+ gap: 8px;
1220
+ }
1221
+ .shop-toggle {
1222
+ padding: 6px 12px;
1223
+ background:
1224
+ linear-gradient(
1225
+ 45deg,
1226
+ #667eea,
1227
+ #764ba2);
1228
+ color: white;
1229
+ border: none;
1230
+ border-radius: 6px;
1231
+ font-size: 11px;
1232
+ font-weight: 600;
1233
+ cursor: pointer;
1234
+ transition: all 0.2s;
1235
+ display: flex;
1236
+ align-items: center;
1237
+ gap: 4px;
1238
+ }
1239
+ .shop-toggle.active {
1240
+ background:
1241
+ linear-gradient(
1242
+ 45deg,
1243
+ #ff9966,
1244
+ #ff5e62);
1245
+ }
1246
+ .shop-toggle:hover {
1247
+ transform: translateY(-1px);
1248
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
1249
+ }
1250
+ .game-stats {
1251
+ display: grid;
1252
+ grid-template-columns: repeat(4, 1fr);
1253
+ gap: 8px;
1254
+ padding: 12px 16px;
1255
+ border-bottom: 1px solid #e1e5e9;
1256
+ flex-shrink: 0;
1257
+ }
1258
+ .stat-box {
1259
+ background: #f8f9fa;
1260
+ border-radius: 8px;
1261
+ padding: 8px;
1262
+ text-align: center;
1263
+ border: 1px solid #e1e5e9;
1264
+ }
1265
+ .stat-label {
1266
+ font-size: 10px;
1267
+ color: #666;
1268
+ margin-bottom: 4px;
1269
+ text-transform: uppercase;
1270
+ letter-spacing: 0.5px;
1271
+ }
1272
+ .stat-value {
1273
+ font-size: 16px;
1274
+ font-weight: 700;
1275
+ color: #667eea;
1276
+ }
1277
+ .click-count {
1278
+ font-size: 18px;
1279
+ color: #00b09b;
1280
+ }
1281
+ .multiplier {
1282
+ color: #ff9966;
1283
+ animation: pulse 2s infinite;
1284
+ }
1285
+ @keyframes pulse {
1286
+ 0%, 100% {
1287
+ transform: scale(1);
1288
+ }
1289
+ 50% {
1290
+ transform: scale(1.1);
1291
+ }
1292
+ }
1293
+ .main-game-area {
1294
+ flex: 1;
1295
+ display: flex;
1296
+ overflow: hidden;
1297
+ min-height: 0;
1298
+ }
1299
+ .clicker-container {
1300
+ flex: 2;
1301
+ display: flex;
1302
+ flex-direction: column;
1303
+ align-items: center;
1304
+ justify-content: center;
1305
+ padding: 20px;
1306
+ border-right: 1px solid #e1e5e9;
1307
+ }
1308
+ .click-button {
1309
+ width: 200px;
1310
+ height: 200px;
1311
+ border: none;
1312
+ border-radius: 50%;
1313
+ background:
1314
+ linear-gradient(
1315
+ 45deg,
1316
+ #667eea,
1317
+ #764ba2);
1318
+ color: white;
1319
+ cursor: pointer;
1320
+ transition: all 0.1s;
1321
+ display: flex;
1322
+ align-items: center;
1323
+ justify-content: center;
1324
+ margin-bottom: 30px;
1325
+ box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);
1326
+ }
1327
+ .click-button:active {
1328
+ transform: scale(0.95);
1329
+ box-shadow: 0 5px 10px rgba(102, 126, 234, 0.2);
1330
+ }
1331
+ .click-button-text {
1332
+ text-align: center;
1333
+ }
1334
+ .click-power {
1335
+ font-size: 28px;
1336
+ font-weight: bold;
1337
+ margin-bottom: 8px;
1338
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
1339
+ }
1340
+ .click-label {
1341
+ font-size: 18px;
1342
+ font-weight: 600;
1343
+ margin-bottom: 4px;
1344
+ }
1345
+ .click-hint {
1346
+ font-size: 12px;
1347
+ opacity: 0.8;
1348
+ }
1349
+ .abilities {
1350
+ width: 100%;
1351
+ max-width: 400px;
1352
+ }
1353
+ .abilities h3 {
1354
+ margin: 0 0 12px 0;
1355
+ font-size: 14px;
1356
+ color: #333;
1357
+ text-align: center;
1358
+ }
1359
+ .abilities-grid {
1360
+ display: grid;
1361
+ grid-template-columns: repeat(3, 1fr);
1362
+ gap: 8px;
1363
+ }
1364
+ .ability-btn {
1365
+ padding: 8px;
1366
+ background:
1367
+ linear-gradient(
1368
+ 45deg,
1369
+ #4cc9f0,
1370
+ #4361ee);
1371
+ color: white;
1372
+ border: none;
1373
+ border-radius: 6px;
1374
+ cursor: pointer;
1375
+ transition: all 0.2s;
1376
+ display: flex;
1377
+ flex-direction: column;
1378
+ align-items: center;
1379
+ gap: 4px;
1380
+ }
1381
+ .ability-btn:hover:not(:disabled) {
1382
+ transform: translateY(-2px);
1383
+ box-shadow: 0 4px 8px rgba(76, 201, 240, 0.3);
1384
+ }
1385
+ .ability-btn:disabled {
1386
+ opacity: 0.5;
1387
+ cursor: not-allowed;
1388
+ }
1389
+ .ability-btn.cooldown {
1390
+ background:
1391
+ linear-gradient(
1392
+ 45deg,
1393
+ #666,
1394
+ #999);
1395
+ }
1396
+ .ability-name {
1397
+ font-size: 10px;
1398
+ font-weight: 600;
1399
+ text-align: center;
1400
+ line-height: 1.2;
1401
+ }
1402
+ .ability-cost {
1403
+ font-size: 9px;
1404
+ opacity: 0.9;
1405
+ }
1406
+ .ability-cooldown {
1407
+ font-size: 8px;
1408
+ font-weight: bold;
1409
+ }
1410
+ .shop-panel {
1411
+ flex: 1;
1412
+ padding: 16px;
1413
+ background: #f8f9fa;
1414
+ overflow-y: auto;
1415
+ border-left: 1px solid #e1e5e9;
1416
+ }
1417
+ .shop-panel h3 {
1418
+ margin: 0 0 16px 0;
1419
+ font-size: 14px;
1420
+ color: #333;
1421
+ text-align: center;
1422
+ }
1423
+ .upgrades-grid {
1424
+ display: grid;
1425
+ grid-template-columns: repeat(2, 1fr);
1426
+ gap: 10px;
1427
+ }
1428
+ .upgrade-item {
1429
+ background: white;
1430
+ border-radius: 8px;
1431
+ padding: 10px;
1432
+ border: 2px solid #e1e5e9;
1433
+ display: flex;
1434
+ flex-direction: column;
1435
+ gap: 8px;
1436
+ transition: all 0.2s;
1437
+ }
1438
+ .upgrade-item.purchased {
1439
+ border-color: #00b09b;
1440
+ background: rgba(0, 176, 155, 0.05);
1441
+ }
1442
+ .upgrade-item.affordable:not(.purchased) {
1443
+ border-color: #667eea;
1444
+ }
1445
+ .upgrade-content {
1446
+ flex: 1;
1447
+ }
1448
+ .upgrade-name {
1449
+ font-size: 11px;
1450
+ font-weight: 600;
1451
+ margin-bottom: 6px;
1452
+ color: #333;
1453
+ }
1454
+ .upgrade-stats {
1455
+ font-size: 10px;
1456
+ color: #667eea;
1457
+ margin-bottom: 6px;
1458
+ }
1459
+ .upgrade-stats span {
1460
+ display: block;
1461
+ }
1462
+ .upgrade-cost {
1463
+ font-size: 12px;
1464
+ font-weight: bold;
1465
+ color: #ff9966;
1466
+ }
1467
+ .buy-btn {
1468
+ padding: 6px;
1469
+ background:
1470
+ linear-gradient(
1471
+ 45deg,
1472
+ #00b09b,
1473
+ #96c93d);
1474
+ color: white;
1475
+ border: none;
1476
+ border-radius: 4px;
1477
+ font-size: 10px;
1478
+ font-weight: 600;
1479
+ cursor: pointer;
1480
+ transition: all 0.2s;
1481
+ text-transform: uppercase;
1482
+ letter-spacing: 0.5px;
1483
+ }
1484
+ .buy-btn:disabled {
1485
+ background: #ccc;
1486
+ cursor: not-allowed;
1487
+ }
1488
+ .buy-btn:not(:disabled):hover {
1489
+ transform: translateY(-1px);
1490
+ box-shadow: 0 2px 4px rgba(0, 176, 155, 0.3);
1491
+ }
1492
+ .achievements {
1493
+ padding: 12px 16px;
1494
+ border-top: 1px solid #e1e5e9;
1495
+ flex-shrink: 0;
1496
+ }
1497
+ .achievements h3 {
1498
+ margin: 0 0 12px 0;
1499
+ font-size: 14px;
1500
+ color: #333;
1501
+ text-align: center;
1502
+ }
1503
+ .achievements-grid {
1504
+ display: grid;
1505
+ grid-template-columns: repeat(4, 1fr);
1506
+ gap: 8px;
1507
+ }
1508
+ .achievement {
1509
+ background: #f8f9fa;
1510
+ border-radius: 6px;
1511
+ padding: 8px;
1512
+ display: flex;
1513
+ align-items: center;
1514
+ gap: 8px;
1515
+ border: 1px solid #e1e5e9;
1516
+ transition: all 0.2s;
1517
+ }
1518
+ .achievement.achieved {
1519
+ background: rgba(255, 215, 0, 0.1);
1520
+ border-color: #ffd700;
1521
+ }
1522
+ .achievement-icon {
1523
+ font-size: 16px;
1524
+ flex-shrink: 0;
1525
+ }
1526
+ .achievement-info {
1527
+ flex: 1;
1528
+ }
1529
+ .achievement-name {
1530
+ font-size: 10px;
1531
+ font-weight: 600;
1532
+ color: #333;
1533
+ margin-bottom: 2px;
1534
+ }
1535
+ .achievement-progress {
1536
+ font-size: 8px;
1537
+ color: #666;
1538
+ }
1539
+ .game-instructions {
1540
+ padding: 8px 16px;
1541
+ font-size: 10px;
1542
+ color: #666;
1543
+ text-align: center;
1544
+ border-top: 1px solid #e1e5e9;
1545
+ flex-shrink: 0;
1546
+ }
1547
+ .game-instructions p {
1548
+ margin: 4px 0;
1549
+ }
1550
+ @media (max-width: 768px) {
1551
+ .main-game-area {
1552
+ flex-direction: column;
1553
+ }
1554
+ .clicker-container {
1555
+ border-right: none;
1556
+ border-bottom: 1px solid #e1e5e9;
1557
+ padding: 15px;
1558
+ }
1559
+ .click-button {
1560
+ width: 150px;
1561
+ height: 150px;
1562
+ margin-bottom: 20px;
1563
+ }
1564
+ .abilities-grid {
1565
+ grid-template-columns: repeat(3, 1fr);
1566
+ }
1567
+ .upgrades-grid {
1568
+ grid-template-columns: 1fr;
1569
+ }
1570
+ .achievements-grid {
1571
+ grid-template-columns: repeat(2, 1fr);
1572
+ }
1573
+ .shop-panel {
1574
+ max-height: 200px;
1575
+ }
1576
+ }
1577
+
1578
+ /* src/games/Pong/Pong.css */
1579
+ .pong-game {
1580
+ width: 100%;
1581
+ height: 100%;
1582
+ display: flex;
1583
+ flex-direction: column;
1584
+ background: white;
1585
+ color: #333;
1586
+ font-family:
1587
+ -apple-system,
1588
+ BlinkMacSystemFont,
1589
+ "Segoe UI",
1590
+ sans-serif;
1591
+ overflow: hidden;
1592
+ }
1593
+ .game-header {
1594
+ display: flex;
1595
+ justify-content: space-between;
1596
+ align-items: center;
1597
+ padding: 12px 16px;
1598
+ border-bottom: 1px solid #e1e5e9;
1599
+ flex-shrink: 0;
1600
+ }
1601
+ .game-header h2 {
1602
+ margin: 0;
1603
+ font-size: 18px;
1604
+ color: #333;
1605
+ font-weight: 600;
1606
+ }
1607
+ .game-controls .control-btn {
1608
+ padding: 8px 16px;
1609
+ background:
1610
+ linear-gradient(
1611
+ 45deg,
1612
+ #667eea,
1613
+ #764ba2);
1614
+ color: white;
1615
+ border: none;
1616
+ border-radius: 8px;
1617
+ font-size: 12px;
1618
+ font-weight: 600;
1619
+ cursor: pointer;
1620
+ transition: all 0.2s;
1621
+ }
1622
+ .control-btn:hover {
1623
+ transform: translateY(-1px);
1624
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
1625
+ }
1626
+ .game-stats {
1627
+ display: grid;
1628
+ grid-template-columns: repeat(4, 1fr);
1629
+ gap: 8px;
1630
+ padding: 12px 16px;
1631
+ border-bottom: 1px solid #e1e5e9;
1632
+ flex-shrink: 0;
1633
+ }
1634
+ .stat-box {
1635
+ background: #f8f9fa;
1636
+ border-radius: 8px;
1637
+ padding: 10px;
1638
+ text-align: center;
1639
+ border: 1px solid #e1e5e9;
1640
+ }
1641
+ .stat-label {
1642
+ font-size: 10px;
1643
+ color: #666;
1644
+ margin-bottom: 4px;
1645
+ text-transform: uppercase;
1646
+ letter-spacing: 0.5px;
1647
+ }
1648
+ .stat-value {
1649
+ font-size: 18px;
1650
+ font-weight: 700;
1651
+ }
1652
+ .player-score {
1653
+ color: #667eea;
1654
+ }
1655
+ .computer-score {
1656
+ color: #ff5e62;
1657
+ }
1658
+ .time-value {
1659
+ color: #667eea;
1660
+ font-family: "Courier New", monospace;
1661
+ font-size: 16px;
1662
+ }
1663
+ .game-area {
1664
+ flex: 1;
1665
+ display: flex;
1666
+ flex-direction: column;
1667
+ align-items: center;
1668
+ justify-content: center;
1669
+ padding: 16px;
1670
+ min-height: 0;
1671
+ gap: 20px;
1672
+ }
1673
+ .pong-container {
1674
+ width: 100%;
1675
+ max-width: 400px;
1676
+ height: 300px;
1677
+ position: relative;
1678
+ border: 2px solid #e1e5e9;
1679
+ border-radius: 12px;
1680
+ overflow: hidden;
1681
+ background: #1a1a2e;
1682
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
1683
+ }
1684
+ .pong-canvas {
1685
+ width: 100%;
1686
+ height: 100%;
1687
+ display: block;
1688
+ }
1689
+ .start-screen,
1690
+ .game-over-screen {
1691
+ position: absolute;
1692
+ top: 0;
1693
+ left: 0;
1694
+ right: 0;
1695
+ bottom: 0;
1696
+ display: flex;
1697
+ align-items: center;
1698
+ justify-content: center;
1699
+ z-index: 20;
1700
+ }
1701
+ .start-screen {
1702
+ background: rgba(26, 26, 46, 0.95);
1703
+ }
1704
+ .game-over-screen {
1705
+ background: rgba(26, 26, 46, 0.95);
1706
+ }
1707
+ .start-message,
1708
+ .game-over-message {
1709
+ background: white;
1710
+ padding: 25px;
1711
+ border-radius: 12px;
1712
+ text-align: center;
1713
+ max-width: 320px;
1714
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
1715
+ }
1716
+ .start-message h3,
1717
+ .game-over-message h3 {
1718
+ color: #667eea;
1719
+ margin-bottom: 15px;
1720
+ font-size: 20px;
1721
+ }
1722
+ .game-over-message h3 {
1723
+ color: #ff5e62;
1724
+ }
1725
+ .start-message p,
1726
+ .game-over-message p {
1727
+ margin: 8px 0;
1728
+ color: #666;
1729
+ font-size: 14px;
1730
+ }
1731
+ .game-tip {
1732
+ color: #ff9966 !important;
1733
+ font-weight: 600 !important;
1734
+ margin: 10px 0 !important;
1735
+ }
1736
+ .start-btn-big,
1737
+ .play-again-btn {
1738
+ padding: 12px 24px;
1739
+ background:
1740
+ linear-gradient(
1741
+ 45deg,
1742
+ #667eea,
1743
+ #764ba2);
1744
+ color: white;
1745
+ border: none;
1746
+ border-radius: 8px;
1747
+ font-size: 14px;
1748
+ font-weight: bold;
1749
+ cursor: pointer;
1750
+ margin-top: 15px;
1751
+ transition: all 0.2s;
1752
+ text-transform: uppercase;
1753
+ letter-spacing: 1px;
1754
+ }
1755
+ .start-btn-big:hover,
1756
+ .play-again-btn:hover {
1757
+ transform: translateY(-2px);
1758
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
1759
+ }
1760
+ .final-score {
1761
+ background: #f8f9fa;
1762
+ padding: 15px;
1763
+ border-radius: 8px;
1764
+ margin: 15px 0;
1765
+ border: 1px solid #e1e5e9;
1766
+ }
1767
+ .final-score p {
1768
+ margin: 8px 0;
1769
+ font-size: 14px;
1770
+ color: #666;
1771
+ display: flex;
1772
+ justify-content: space-between;
1773
+ }
1774
+ .final-score strong {
1775
+ color: #667eea;
1776
+ font-size: 16px;
1777
+ }
1778
+ .speed-info {
1779
+ width: 100%;
1780
+ max-width: 400px;
1781
+ padding: 15px;
1782
+ background: #f8f9fa;
1783
+ border-radius: 10px;
1784
+ border: 1px solid #e1e5e9;
1785
+ text-align: center;
1786
+ }
1787
+ .speed-display {
1788
+ font-size: 14px;
1789
+ color: #666;
1790
+ margin-bottom: 8px;
1791
+ }
1792
+ .speed-label {
1793
+ font-weight: 600;
1794
+ }
1795
+ .speed-value {
1796
+ font-weight: bold;
1797
+ color: #00b09b;
1798
+ font-size: 16px;
1799
+ }
1800
+ .speed-hint {
1801
+ font-size: 11px;
1802
+ color: #888;
1803
+ line-height: 1.4;
1804
+ }
1805
+ .record-info {
1806
+ color: #ff9966;
1807
+ font-weight: bold;
1808
+ margin: 10px 0 !important;
1809
+ }
1810
+ .streak-message {
1811
+ color: #00b09b;
1812
+ font-weight: bold;
1813
+ margin-top: 10px !important;
1814
+ animation: pulse 1.5s infinite;
1815
+ }
1816
+ @keyframes pulse {
1817
+ 0%, 100% {
1818
+ opacity: 1;
1819
+ }
1820
+ 50% {
1821
+ opacity: 0.7;
1822
+ }
1823
+ }
1824
+ @keyframes speedUp {
1825
+ 0% {
1826
+ transform: scale(1);
1827
+ }
1828
+ 50% {
1829
+ transform: scale(1.1);
1830
+ }
1831
+ 100% {
1832
+ transform: scale(1);
1833
+ }
1834
+ }
1835
+ .speed-up-animation {
1836
+ animation: speedUp 0.5s ease;
1837
+ }
1838
+ .game-instructions {
1839
+ padding: 12px 16px;
1840
+ border-top: 1px solid #e1e5e9;
1841
+ flex-shrink: 0;
1842
+ display: flex;
1843
+ flex-direction: column;
1844
+ gap: 12px;
1845
+ }
1846
+ .instructions-row {
1847
+ display: flex;
1848
+ justify-content: space-between;
1849
+ font-size: 11px;
1850
+ color: #666;
1851
+ }
1852
+ .instructions-row p {
1853
+ margin: 0;
1854
+ }
1855
+ .instructions-row strong {
1856
+ color: #333;
1857
+ }
1858
+ .legend {
1859
+ display: flex;
1860
+ justify-content: center;
1861
+ gap: 20px;
1862
+ margin-top: 5px;
1863
+ }
1864
+ .legend-item {
1865
+ display: flex;
1866
+ align-items: center;
1867
+ gap: 6px;
1868
+ font-size: 10px;
1869
+ color: #666;
1870
+ }
1871
+ .legend-color {
1872
+ width: 12px;
1873
+ height: 12px;
1874
+ border-radius: 2px;
1875
+ }
1876
+ .player-color {
1877
+ background: #667eea;
1878
+ }
1879
+ .computer-color {
1880
+ background: #ff5e62;
1881
+ }
1882
+ .ball-color {
1883
+ background: #00b09b;
1884
+ border-radius: 50%;
1885
+ }
1886
+ @media (max-width: 768px) {
1887
+ .pong-container {
1888
+ height: 250px;
1889
+ max-width: 350px;
1890
+ }
1891
+ .game-stats {
1892
+ grid-template-columns: repeat(2, 1fr);
1893
+ }
1894
+ .instructions-row {
1895
+ flex-direction: column;
1896
+ gap: 5px;
1897
+ text-align: center;
1898
+ }
1899
+ .legend {
1900
+ flex-wrap: wrap;
1901
+ gap: 10px;
1902
+ }
1903
+ .speed-info {
1904
+ padding: 12px;
1905
+ }
1906
+ .speed-hint {
1907
+ font-size: 10px;
1908
+ }
1909
+ }
1910
+ @media (max-width: 480px) {
1911
+ .pong-container {
1912
+ height: 200px;
1913
+ max-width: 300px;
1914
+ }
1915
+ .start-message,
1916
+ .game-over-message {
1917
+ padding: 20px;
1918
+ max-width: 260px;
1919
+ }
1920
+ .start-message h3,
1921
+ .game-over-message h3 {
1922
+ font-size: 18px;
1923
+ }
1924
+ .start-btn-big,
1925
+ .play-again-btn {
1926
+ padding: 10px 20px;
1927
+ font-size: 12px;
1928
+ }
1929
+ .stat-value {
1930
+ font-size: 16px;
1931
+ }
1932
+ }
1933
+ .reset-btn {
1934
+ background:
1935
+ linear-gradient(
1936
+ 135deg,
1937
+ #ff9966,
1938
+ #ff5e62);
1939
+ margin-left: 10px;
1940
+ }
1941
+ .reset-btn:disabled {
1942
+ opacity: 0.5;
1943
+ cursor: not-allowed;
1944
+ }
1945
+ .reset-btn:hover:not(:disabled) {
1946
+ background:
1947
+ linear-gradient(
1948
+ 135deg,
1949
+ #ff8866,
1950
+ #ff4e52);
1951
+ transform: translateY(-2px);
1952
+ box-shadow: 0 4px 12px rgba(255, 94, 98, 0.4);
1953
+ }
1954
+
1955
+ /* src/games/Platformer/PlatformerGame.css */
1956
+ .platformer-game {
1957
+ width: 100%;
1958
+ height: 100%;
1959
+ display: flex;
1960
+ flex-direction: column;
1961
+ background: white;
1962
+ color: #333;
1963
+ font-family:
1964
+ -apple-system,
1965
+ BlinkMacSystemFont,
1966
+ "Segoe UI",
1967
+ sans-serif;
1968
+ overflow: hidden;
1969
+ }
1970
+ .game-header {
1971
+ display: flex;
1972
+ justify-content: space-between;
1973
+ align-items: center;
1974
+ padding: 12px 16px;
1975
+ border-bottom: 1px solid #e1e5e9;
1976
+ flex-shrink: 0;
1977
+ }
1978
+ .game-header h2 {
1979
+ margin: 0;
1980
+ font-size: 18px;
1981
+ color: #333;
1982
+ font-weight: 600;
1983
+ }
1984
+ .game-controls {
1985
+ display: flex;
1986
+ gap: 8px;
1987
+ }
1988
+ .control-btn {
1989
+ padding: 8px 16px;
1990
+ border: none;
1991
+ border-radius: 8px;
1992
+ font-size: 12px;
1993
+ font-weight: 600;
1994
+ cursor: pointer;
1995
+ transition: all 0.2s;
1996
+ text-transform: uppercase;
1997
+ letter-spacing: 0.5px;
1998
+ }
1999
+ .start-btn {
2000
+ background:
2001
+ linear-gradient(
2002
+ 45deg,
2003
+ #00b09b,
2004
+ #96c93d);
2005
+ color: white;
2006
+ }
2007
+ .pause-btn {
2008
+ background:
2009
+ linear-gradient(
2010
+ 45deg,
2011
+ #ff9966,
2012
+ #ff5e62);
2013
+ color: white;
2014
+ }
2015
+ .reset-btn {
2016
+ background:
2017
+ linear-gradient(
2018
+ 45deg,
2019
+ #667eea,
2020
+ #764ba2);
2021
+ color: white;
2022
+ }
2023
+ .control-btn:hover {
2024
+ transform: translateY(-2px);
2025
+ box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2);
2026
+ }
2027
+ .game-stats {
2028
+ display: grid;
2029
+ grid-template-columns: repeat(4, 1fr);
2030
+ gap: 8px;
2031
+ padding: 12px 16px;
2032
+ border-bottom: 1px solid #e1e5e9;
2033
+ flex-shrink: 0;
2034
+ }
2035
+ .stat-box {
2036
+ background: #f8f9fa;
2037
+ border-radius: 8px;
2038
+ padding: 10px;
2039
+ text-align: center;
2040
+ border: 1px solid #e1e5e9;
2041
+ }
2042
+ .stat-label {
2043
+ font-size: 10px;
2044
+ color: #666;
2045
+ margin-bottom: 4px;
2046
+ text-transform: uppercase;
2047
+ letter-spacing: 0.5px;
2048
+ }
2049
+ .stat-value {
2050
+ font-size: 18px;
2051
+ font-weight: 700;
2052
+ color: #667eea;
2053
+ }
2054
+ .game-area {
2055
+ flex: 1;
2056
+ display: flex;
2057
+ align-items: center;
2058
+ justify-content: center;
2059
+ padding: 16px;
2060
+ min-height: 0;
2061
+ position: relative;
2062
+ }
2063
+ .platformer-container {
2064
+ width: 100%;
2065
+ max-width: 800px;
2066
+ height: 400px;
2067
+ position: relative;
2068
+ border: 2px solid #e1e5e9;
2069
+ border-radius: 12px;
2070
+ overflow: hidden;
2071
+ background: #222;
2072
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
2073
+ }
2074
+ .platformer-canvas {
2075
+ width: 100%;
2076
+ height: 100%;
2077
+ display: block;
2078
+ }
2079
+ .start-screen,
2080
+ .win-screen,
2081
+ .lose-screen {
2082
+ position: absolute;
2083
+ top: 0;
2084
+ left: 0;
2085
+ right: 0;
2086
+ bottom: 0;
2087
+ background: rgba(34, 34, 34, 0.95);
2088
+ display: flex;
2089
+ align-items: center;
2090
+ justify-content: center;
2091
+ z-index: 20;
2092
+ }
2093
+ .start-message,
2094
+ .win-message,
2095
+ .lose-message {
2096
+ background: white;
2097
+ padding: 30px;
2098
+ border-radius: 12px;
2099
+ text-align: center;
2100
+ max-width: 400px;
2101
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
2102
+ }
2103
+ .start-message h3,
2104
+ .win-message h3,
2105
+ .lose-message h3 {
2106
+ color: #667eea;
2107
+ margin-bottom: 15px;
2108
+ font-size: 20px;
2109
+ }
2110
+ .win-message h3 {
2111
+ color: #00b09b;
2112
+ }
2113
+ .lose-message h3 {
2114
+ color: #ff5e62;
2115
+ }
2116
+ .start-message p,
2117
+ .win-message p,
2118
+ .lose-message p {
2119
+ margin: 8px 0;
2120
+ color: #666;
2121
+ font-size: 14px;
2122
+ }
2123
+ .start-btn-big,
2124
+ .next-level-btn,
2125
+ .restart-btn {
2126
+ padding: 12px 24px;
2127
+ background:
2128
+ linear-gradient(
2129
+ 45deg,
2130
+ #667eea,
2131
+ #764ba2);
2132
+ color: white;
2133
+ border: none;
2134
+ border-radius: 8px;
2135
+ font-size: 14px;
2136
+ font-weight: bold;
2137
+ cursor: pointer;
2138
+ margin-top: 20px;
2139
+ transition: all 0.2s;
2140
+ text-transform: uppercase;
2141
+ letter-spacing: 1px;
2142
+ }
2143
+ .start-btn-big:hover,
2144
+ .next-level-btn:hover,
2145
+ .restart-btn:hover {
2146
+ transform: translateY(-2px);
2147
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
2148
+ }
2149
+ .next-level-btn {
2150
+ background:
2151
+ linear-gradient(
2152
+ 45deg,
2153
+ #00b09b,
2154
+ #96c93d);
2155
+ }
2156
+ .restart-btn {
2157
+ background:
2158
+ linear-gradient(
2159
+ 45deg,
2160
+ #ff9966,
2161
+ #ff5e62);
2162
+ }
2163
+ .game-instructions {
2164
+ padding: 12px 16px;
2165
+ border-top: 1px solid #e1e5e9;
2166
+ flex-shrink: 0;
2167
+ display: flex;
2168
+ flex-direction: column;
2169
+ gap: 12px;
2170
+ }
2171
+ .instructions-row {
2172
+ display: flex;
2173
+ justify-content: space-between;
2174
+ font-size: 11px;
2175
+ color: #666;
2176
+ }
2177
+ .instructions-row p {
2178
+ margin: 0;
2179
+ }
2180
+ .instructions-row strong {
2181
+ color: #333;
2182
+ }
2183
+ .legend {
2184
+ display: flex;
2185
+ justify-content: center;
2186
+ gap: 20px;
2187
+ margin-top: 5px;
2188
+ }
2189
+ .legend-item {
2190
+ display: flex;
2191
+ align-items: center;
2192
+ gap: 6px;
2193
+ font-size: 10px;
2194
+ color: #666;
2195
+ }
2196
+ .legend-color {
2197
+ width: 12px;
2198
+ height: 12px;
2199
+ border-radius: 2px;
2200
+ }
2201
+ .player-color {
2202
+ background: #335699;
2203
+ }
2204
+ .coin-color {
2205
+ background: #e2e838;
2206
+ }
2207
+ .lava-color {
2208
+ background: #e55;
2209
+ }
2210
+ .wall-color {
2211
+ background: #444;
2212
+ border: 1px solid #333;
2213
+ }
2214
+ @media (max-width: 768px) {
2215
+ .platformer-container {
2216
+ height: 300px;
2217
+ }
2218
+ .platformer-canvas {
2219
+ width: 100%;
2220
+ height: 100%;
2221
+ }
2222
+ .game-stats {
2223
+ grid-template-columns: repeat(2, 1fr);
2224
+ }
2225
+ .instructions-row {
2226
+ flex-direction: column;
2227
+ gap: 5px;
2228
+ text-align: center;
2229
+ }
2230
+ .legend {
2231
+ flex-wrap: wrap;
2232
+ gap: 10px;
2233
+ }
2234
+ }
2235
+ @media (max-width: 480px) {
2236
+ .platformer-container {
2237
+ height: 250px;
2238
+ }
2239
+ .start-message,
2240
+ .win-message,
2241
+ .lose-message {
2242
+ padding: 20px;
2243
+ max-width: 280px;
2244
+ }
2245
+ .start-message h3,
2246
+ .win-message h3,
2247
+ .lose-message h3 {
2248
+ font-size: 18px;
2249
+ }
2250
+ .start-btn-big,
2251
+ .next-level-btn,
2252
+ .restart-btn {
2253
+ padding: 10px 20px;
2254
+ font-size: 12px;
2255
+ }
2256
+ .stat-value {
2257
+ font-size: 16px;
2258
+ }
2259
+ }
2260
+ @keyframes pulse {
2261
+ 0%, 100% {
2262
+ opacity: 1;
2263
+ transform: scale(1);
2264
+ }
2265
+ 50% {
2266
+ opacity: 0.8;
2267
+ transform: scale(1.05);
2268
+ }
2269
+ }
2270
+ @keyframes lava-pulse {
2271
+ 0%, 100% {
2272
+ background-color: #e55;
2273
+ }
2274
+ 50% {
2275
+ background-color: #f66;
2276
+ }
2277
+ }
2278
+ .win-screen .win-message {
2279
+ animation: pulse 1.5s infinite;
2280
+ }
2281
+ .lava-animated {
2282
+ animation: lava-pulse 1s infinite;
2283
+ }
2284
+ @keyframes death-shrink {
2285
+ 0% {
2286
+ transform: scale(1);
2287
+ opacity: 1;
2288
+ }
2289
+ 100% {
2290
+ transform: scale(0);
2291
+ opacity: 0;
2292
+ }
2293
+ }
2294
+ .death-animation {
2295
+ animation: death-shrink 0.5s ease-out forwards;
2296
+ }
2297
+
2298
+ /* src/components/GameHubNode/GameHubNode.css */
2299
+ .gamehub-node {
2300
+ width: 100%;
2301
+ height: 100%;
2302
+ background: white;
2303
+ border: 1px solid #e1e5e9;
2304
+ border-radius: 12px;
2305
+ overflow: hidden;
2306
+ display: flex;
2307
+ flex-direction: column;
2308
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
2309
+ }
2310
+ .gamehub-node.selected {
2311
+ border: 2px solid #667eea;
2312
+ }
2313
+ .gamehub-drag-handle {
2314
+ padding: 10px 12px;
2315
+ background:
2316
+ linear-gradient(
2317
+ 135deg,
2318
+ #667eea 0%,
2319
+ #764ba2 100%);
2320
+ color: white;
2321
+ cursor: grab;
2322
+ user-select: none;
2323
+ }
2324
+ .gamehub-drag-handle:active {
2325
+ cursor: grabbing;
2326
+ }
2327
+ .gamehub-title {
2328
+ font-size: 14px;
2329
+ font-weight: 800;
2330
+ line-height: 1.1;
2331
+ }
2332
+ .gamehub-subtitle {
2333
+ font-size: 11px;
2334
+ opacity: 0.92;
2335
+ margin-top: 2px;
2336
+ }
2337
+ .gamehub-content {
2338
+ flex: 1;
2339
+ min-height: 0;
2340
+ overflow: hidden;
2341
+ background: white;
2342
+ padding: 10px;
2343
+ }
2344
+ .gamehub-menu {
2345
+ width: 100%;
2346
+ height: 100%;
2347
+ overflow: hidden;
2348
+ display: flex;
2349
+ flex-direction: column;
2350
+ gap: 10px;
2351
+ }
2352
+ .gamehub-menu-head {
2353
+ display: flex;
2354
+ align-items: center;
2355
+ justify-content: space-between;
2356
+ gap: 12px;
2357
+ }
2358
+ .gamehub-menu-title {
2359
+ font-weight: 900;
2360
+ font-size: 14px;
2361
+ color: #222;
2362
+ }
2363
+ .gamehub-menu-tabs {
2364
+ display: flex;
2365
+ gap: 8px;
2366
+ }
2367
+ .gamehub-tab {
2368
+ border: 1px solid #e1e5e9;
2369
+ background: white;
2370
+ border-radius: 10px;
2371
+ padding: 8px 10px;
2372
+ font-weight: 800;
2373
+ font-size: 12px;
2374
+ cursor: pointer;
2375
+ }
2376
+ .gamehub-tab.active {
2377
+ border-color: rgba(102, 126, 234, 0.55);
2378
+ box-shadow: 0 6px 16px rgba(102, 126, 234, 0.18);
2379
+ }
2380
+ .gamehub-menu-grid {
2381
+ flex: 1;
2382
+ min-height: 0;
2383
+ display: grid;
2384
+ grid-template-columns: repeat(2, minmax(0, 1fr));
2385
+ gap: 10px;
2386
+ overflow: hidden;
2387
+ }
2388
+ .gamehub-card {
2389
+ border: 1px solid #e1e5e9;
2390
+ border-radius: 12px;
2391
+ background: #fff;
2392
+ padding: 12px;
2393
+ cursor: pointer;
2394
+ text-align: left;
2395
+ display: flex;
2396
+ flex-direction: column;
2397
+ gap: 6px;
2398
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
2399
+ }
2400
+ .gamehub-card:hover {
2401
+ transform: translateY(-1px);
2402
+ box-shadow: 0 8px 20px rgba(102, 126, 234, 0.18);
2403
+ }
2404
+ .gamehub-card-title {
2405
+ font-size: 14px;
2406
+ font-weight: 900;
2407
+ color: #222;
2408
+ }
2409
+ .gamehub-card-desc {
2410
+ font-size: 12px;
2411
+ color: #666;
2412
+ line-height: 1.2;
2413
+ flex: 1;
2414
+ }
2415
+ .gamehub-card-cta {
2416
+ margin-top: 6px;
2417
+ font-size: 12px;
2418
+ font-weight: 800;
2419
+ color: #667eea;
2420
+ }
2421
+ .gamehub-stats {
2422
+ flex: 1;
2423
+ min-height: 0;
2424
+ overflow: hidden;
2425
+ display: flex;
2426
+ flex-direction: column;
2427
+ }
2428
+ .gamehub-stats-controls {
2429
+ display: flex;
2430
+ align-items: center;
2431
+ justify-content: space-between;
2432
+ gap: 12px;
2433
+ margin: 6px 0 10px;
2434
+ }
2435
+ .gamehub-stats-label {
2436
+ display: flex;
2437
+ align-items: center;
2438
+ gap: 10px;
2439
+ font-size: 12px;
2440
+ color: #222;
2441
+ font-weight: 800;
2442
+ }
2443
+ .gamehub-stats-select {
2444
+ border: 1px solid #e1e5e9;
2445
+ background: white;
2446
+ border-radius: 10px;
2447
+ padding: 8px 10px;
2448
+ font-weight: 800;
2449
+ font-size: 12px;
2450
+ }
2451
+ .gamehub-leaderboard {
2452
+ margin: 0;
2453
+ padding-left: 18px;
2454
+ overflow: hidden;
2455
+ }
2456
+ .gamehub-leaderboard-item {
2457
+ display: grid;
2458
+ grid-template-columns: 50px 1fr 80px;
2459
+ gap: 10px;
2460
+ align-items: center;
2461
+ padding: 8px 6px;
2462
+ border-bottom: 1px solid #eef1f4;
2463
+ }
2464
+ .gamehub-lb-rank {
2465
+ opacity: 0.85;
2466
+ font-weight: 800;
2467
+ }
2468
+ .gamehub-lb-user {
2469
+ overflow: hidden;
2470
+ text-overflow: ellipsis;
2471
+ white-space: nowrap;
2472
+ }
2473
+ .gamehub-lb-score {
2474
+ text-align: right;
2475
+ font-weight: 900;
2476
+ }
2477
+ .gamehub-stats-error,
2478
+ .gamehub-stats-loading,
2479
+ .gamehub-stats-empty {
2480
+ opacity: 0.85;
2481
+ padding: 8px 6px;
2482
+ }
2483
+ .gamehub-game-screen {
2484
+ width: 100%;
2485
+ height: 100%;
2486
+ display: flex;
2487
+ flex-direction: column;
2488
+ overflow: hidden;
2489
+ }
2490
+ .gamehub-game-topbar {
2491
+ display: grid;
2492
+ grid-template-columns: 120px 1fr auto;
2493
+ align-items: center;
2494
+ gap: 8px;
2495
+ padding: 8px;
2496
+ border: 1px solid #e1e5e9;
2497
+ border-radius: 10px;
2498
+ background: #f8f9fa;
2499
+ flex-shrink: 0;
2500
+ }
2501
+ .gamehub-top-btn {
2502
+ border: 1px solid #e1e5e9;
2503
+ background: white;
2504
+ border-radius: 10px;
2505
+ padding: 8px 10px;
2506
+ font-weight: 800;
2507
+ font-size: 12px;
2508
+ cursor: pointer;
2509
+ }
2510
+ .gamehub-top-title {
2511
+ text-align: center;
2512
+ font-weight: 900;
2513
+ font-size: 12px;
2514
+ color: #222;
2515
+ white-space: nowrap;
2516
+ overflow: hidden;
2517
+ text-overflow: ellipsis;
2518
+ }
2519
+ .gamehub-game-wrap {
2520
+ flex: 1;
2521
+ min-height: 0;
2522
+ overflow: hidden;
2523
+ width: 100%;
2524
+ height: 100%;
2525
+ margin-top: 10px;
2526
+ }
2527
+ .gamehub-top-right {
2528
+ display: flex;
2529
+ gap: 8px;
2530
+ align-items: center;
2531
+ justify-content: flex-end;
2532
+ min-width: 0;
2533
+ }
2534
+ .gamehub-stats-text {
2535
+ font-size: 12px;
2536
+ opacity: 0.85;
2537
+ white-space: nowrap;
2538
+ overflow: hidden;
2539
+ text-overflow: ellipsis;
2540
+ max-width: 320px;
2541
+ }
2542
+ .gamehub-top-btn:disabled {
2543
+ opacity: 0.6;
2544
+ cursor: not-allowed;
2545
+ }
2546
+ .gamehub-nick-box {
2547
+ border: 1px solid #e1e5e9;
2548
+ border-radius: 12px;
2549
+ padding: 10px;
2550
+ background: #fff;
2551
+ margin-bottom: 10px;
2552
+ }
2553
+ .gamehub-nick-title {
2554
+ font-weight: 900;
2555
+ font-size: 12px;
2556
+ color: #222;
2557
+ margin-bottom: 8px;
2558
+ }
2559
+ .gamehub-nick-row {
2560
+ display: flex;
2561
+ gap: 8px;
2562
+ align-items: center;
2563
+ }
2564
+ .gamehub-nick-input {
2565
+ flex: 1;
2566
+ border: 1px solid #e1e5e9;
2567
+ border-radius: 10px;
2568
+ padding: 8px 10px;
2569
+ font-weight: 700;
2570
+ font-size: 12px;
2571
+ outline: none;
2572
+ }
2573
+ .gamehub-nick-input:focus {
2574
+ border-color: rgba(102, 126, 234, 0.55);
2575
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.15);
2576
+ }
2577
+ .gamehub-nick-msg {
2578
+ margin-top: 6px;
2579
+ font-size: 12px;
2580
+ opacity: 0.9;
2581
+ }