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.
@@ -0,0 +1,400 @@
1
+ /* Pong.css - Полная версия */
2
+
3
+ .pong-game {
4
+ width: 100%;
5
+ height: 100%;
6
+ display: flex;
7
+ flex-direction: column;
8
+ background: white;
9
+ color: #333;
10
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
11
+ overflow: hidden;
12
+ }
13
+
14
+ .game-header {
15
+ display: flex;
16
+ justify-content: space-between;
17
+ align-items: center;
18
+ padding: 12px 16px;
19
+ border-bottom: 1px solid #e1e5e9;
20
+ flex-shrink: 0;
21
+ }
22
+
23
+ .game-header h2 {
24
+ margin: 0;
25
+ font-size: 18px;
26
+ color: #333;
27
+ font-weight: 600;
28
+ }
29
+
30
+ .game-controls .control-btn {
31
+ padding: 8px 16px;
32
+ background: linear-gradient(45deg, #667eea, #764ba2);
33
+ color: white;
34
+ border: none;
35
+ border-radius: 8px;
36
+ font-size: 12px;
37
+ font-weight: 600;
38
+ cursor: pointer;
39
+ transition: all 0.2s;
40
+ }
41
+
42
+ .control-btn:hover {
43
+ transform: translateY(-1px);
44
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
45
+ }
46
+
47
+ .game-stats {
48
+ display: grid;
49
+ grid-template-columns: repeat(4, 1fr);
50
+ gap: 8px;
51
+ padding: 12px 16px;
52
+ border-bottom: 1px solid #e1e5e9;
53
+ flex-shrink: 0;
54
+ }
55
+
56
+ .stat-box {
57
+ background: #f8f9fa;
58
+ border-radius: 8px;
59
+ padding: 10px;
60
+ text-align: center;
61
+ border: 1px solid #e1e5e9;
62
+ }
63
+
64
+ .stat-label {
65
+ font-size: 10px;
66
+ color: #666;
67
+ margin-bottom: 4px;
68
+ text-transform: uppercase;
69
+ letter-spacing: 0.5px;
70
+ }
71
+
72
+ .stat-value {
73
+ font-size: 18px;
74
+ font-weight: 700;
75
+ }
76
+
77
+ .player-score {
78
+ color: #667eea;
79
+ }
80
+
81
+ .computer-score {
82
+ color: #ff5e62;
83
+ }
84
+
85
+ .time-value {
86
+ color: #667eea;
87
+ font-family: 'Courier New', monospace;
88
+ font-size: 16px;
89
+ }
90
+
91
+ .game-area {
92
+ flex: 1;
93
+ display: flex;
94
+ flex-direction: column;
95
+ align-items: center;
96
+ justify-content: center;
97
+ padding: 16px;
98
+ min-height: 0;
99
+ gap: 20px;
100
+ }
101
+
102
+ .pong-container {
103
+ width: 100%;
104
+ max-width: 400px;
105
+ height: 300px;
106
+ position: relative;
107
+ border: 2px solid #e1e5e9;
108
+ border-radius: 12px;
109
+ overflow: hidden;
110
+ background: #1a1a2e;
111
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
112
+ }
113
+
114
+ .pong-canvas {
115
+ width: 100%;
116
+ height: 100%;
117
+ display: block;
118
+ }
119
+
120
+ .start-screen, .game-over-screen {
121
+ position: absolute;
122
+ top: 0;
123
+ left: 0;
124
+ right: 0;
125
+ bottom: 0;
126
+ display: flex;
127
+ align-items: center;
128
+ justify-content: center;
129
+ z-index: 20;
130
+ }
131
+
132
+ .start-screen {
133
+ background: rgba(26, 26, 46, 0.95);
134
+ }
135
+
136
+ .game-over-screen {
137
+ background: rgba(26, 26, 46, 0.95);
138
+ }
139
+
140
+ .start-message, .game-over-message {
141
+ background: white;
142
+ padding: 25px;
143
+ border-radius: 12px;
144
+ text-align: center;
145
+ max-width: 320px;
146
+ box-shadow: 0 4px 20px rgba(0, 0, 0, 0.2);
147
+ }
148
+
149
+ .start-message h3, .game-over-message h3 {
150
+ color: #667eea;
151
+ margin-bottom: 15px;
152
+ font-size: 20px;
153
+ }
154
+
155
+ .game-over-message h3 {
156
+ color: #ff5e62;
157
+ }
158
+
159
+ .start-message p, .game-over-message p {
160
+ margin: 8px 0;
161
+ color: #666;
162
+ font-size: 14px;
163
+ }
164
+
165
+ .game-tip {
166
+ color: #ff9966 !important;
167
+ font-weight: 600 !important;
168
+ margin: 10px 0 !important;
169
+ }
170
+
171
+ .start-btn-big, .play-again-btn {
172
+ padding: 12px 24px;
173
+ background: linear-gradient(45deg, #667eea, #764ba2);
174
+ color: white;
175
+ border: none;
176
+ border-radius: 8px;
177
+ font-size: 14px;
178
+ font-weight: bold;
179
+ cursor: pointer;
180
+ margin-top: 15px;
181
+ transition: all 0.2s;
182
+ text-transform: uppercase;
183
+ letter-spacing: 1px;
184
+ }
185
+
186
+ .start-btn-big:hover, .play-again-btn:hover {
187
+ transform: translateY(-2px);
188
+ box-shadow: 0 4px 12px rgba(102, 126, 234, 0.3);
189
+ }
190
+
191
+ .final-score {
192
+ background: #f8f9fa;
193
+ padding: 15px;
194
+ border-radius: 8px;
195
+ margin: 15px 0;
196
+ border: 1px solid #e1e5e9;
197
+ }
198
+
199
+ .final-score p {
200
+ margin: 8px 0;
201
+ font-size: 14px;
202
+ color: #666;
203
+ display: flex;
204
+ justify-content: space-between;
205
+ }
206
+
207
+ .final-score strong {
208
+ color: #667eea;
209
+ font-size: 16px;
210
+ }
211
+
212
+ .speed-info {
213
+ width: 100%;
214
+ max-width: 400px;
215
+ padding: 15px;
216
+ background: #f8f9fa;
217
+ border-radius: 10px;
218
+ border: 1px solid #e1e5e9;
219
+ text-align: center;
220
+ }
221
+
222
+ .speed-display {
223
+ font-size: 14px;
224
+ color: #666;
225
+ margin-bottom: 8px;
226
+ }
227
+
228
+ .speed-label {
229
+ font-weight: 600;
230
+ }
231
+
232
+ .speed-value {
233
+ font-weight: bold;
234
+ color: #00b09b;
235
+ font-size: 16px;
236
+ }
237
+
238
+ .speed-hint {
239
+ font-size: 11px;
240
+ color: #888;
241
+ line-height: 1.4;
242
+ }
243
+
244
+ .record-info {
245
+ color: #ff9966;
246
+ font-weight: bold;
247
+ margin: 10px 0 !important;
248
+ }
249
+
250
+ .streak-message {
251
+ color: #00b09b;
252
+ font-weight: bold;
253
+ margin-top: 10px !important;
254
+ animation: pulse 1.5s infinite;
255
+ }
256
+
257
+ @keyframes pulse {
258
+ 0%, 100% { opacity: 1; }
259
+ 50% { opacity: 0.7; }
260
+ }
261
+
262
+ @keyframes speedUp {
263
+ 0% { transform: scale(1); }
264
+ 50% { transform: scale(1.1); }
265
+ 100% { transform: scale(1); }
266
+ }
267
+
268
+ .speed-up-animation {
269
+ animation: speedUp 0.5s ease;
270
+ }
271
+
272
+ .game-instructions {
273
+ padding: 12px 16px;
274
+ border-top: 1px solid #e1e5e9;
275
+ flex-shrink: 0;
276
+ display: flex;
277
+ flex-direction: column;
278
+ gap: 12px;
279
+ }
280
+
281
+ .instructions-row {
282
+ display: flex;
283
+ justify-content: space-between;
284
+ font-size: 11px;
285
+ color: #666;
286
+ }
287
+
288
+ .instructions-row p {
289
+ margin: 0;
290
+ }
291
+
292
+ .instructions-row strong {
293
+ color: #333;
294
+ }
295
+
296
+ .legend {
297
+ display: flex;
298
+ justify-content: center;
299
+ gap: 20px;
300
+ margin-top: 5px;
301
+ }
302
+
303
+ .legend-item {
304
+ display: flex;
305
+ align-items: center;
306
+ gap: 6px;
307
+ font-size: 10px;
308
+ color: #666;
309
+ }
310
+
311
+ .legend-color {
312
+ width: 12px;
313
+ height: 12px;
314
+ border-radius: 2px;
315
+ }
316
+
317
+ .player-color {
318
+ background: #667eea;
319
+ }
320
+
321
+ .computer-color {
322
+ background: #ff5e62;
323
+ }
324
+
325
+ .ball-color {
326
+ background: #00b09b;
327
+ border-radius: 50%;
328
+ }
329
+
330
+ /* Адаптивность */
331
+ @media (max-width: 768px) {
332
+ .pong-container {
333
+ height: 250px;
334
+ max-width: 350px;
335
+ }
336
+
337
+ .game-stats {
338
+ grid-template-columns: repeat(2, 1fr);
339
+ }
340
+
341
+ .instructions-row {
342
+ flex-direction: column;
343
+ gap: 5px;
344
+ text-align: center;
345
+ }
346
+
347
+ .legend {
348
+ flex-wrap: wrap;
349
+ gap: 10px;
350
+ }
351
+
352
+ .speed-info {
353
+ padding: 12px;
354
+ }
355
+
356
+ .speed-hint {
357
+ font-size: 10px;
358
+ }
359
+ }
360
+
361
+ @media (max-width: 480px) {
362
+ .pong-container {
363
+ height: 200px;
364
+ max-width: 300px;
365
+ }
366
+
367
+ .start-message, .game-over-message {
368
+ padding: 20px;
369
+ max-width: 260px;
370
+ }
371
+
372
+ .start-message h3, .game-over-message h3 {
373
+ font-size: 18px;
374
+ }
375
+
376
+ .start-btn-big, .play-again-btn {
377
+ padding: 10px 20px;
378
+ font-size: 12px;
379
+ }
380
+
381
+ .stat-value {
382
+ font-size: 16px;
383
+ }
384
+ }
385
+
386
+ .reset-btn {
387
+ background: linear-gradient(135deg, #ff9966, #ff5e62);
388
+ margin-left: 10px;
389
+ }
390
+
391
+ .reset-btn:disabled {
392
+ opacity: 0.5;
393
+ cursor: not-allowed;
394
+ }
395
+
396
+ .reset-btn:hover:not(:disabled) {
397
+ background: linear-gradient(135deg, #ff8866, #ff4e52);
398
+ transform: translateY(-2px);
399
+ box-shadow: 0 4px 12px rgba(255, 94, 98, 0.4);
400
+ }