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,314 @@
1
+ .gamehub-node {
2
+ width: 100%;
3
+ height: 100%;
4
+ background: white;
5
+ border: 1px solid #e1e5e9;
6
+ border-radius: 12px;
7
+ overflow: hidden;
8
+ display: flex;
9
+ flex-direction: column;
10
+ box-shadow: 0 8px 25px rgba(0, 0, 0, 0.12);
11
+ }
12
+
13
+ .gamehub-node.selected {
14
+ border: 2px solid #667eea;
15
+ }
16
+
17
+ /* область перетаскивания */
18
+ .gamehub-drag-handle {
19
+ padding: 10px 12px;
20
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
21
+ color: white;
22
+ cursor: grab;
23
+ user-select: none;
24
+ }
25
+
26
+ .gamehub-drag-handle:active {
27
+ cursor: grabbing;
28
+ }
29
+
30
+ .gamehub-title {
31
+ font-size: 14px;
32
+ font-weight: 800;
33
+ line-height: 1.1;
34
+ }
35
+
36
+ .gamehub-subtitle {
37
+ font-size: 11px;
38
+ opacity: 0.92;
39
+ margin-top: 2px;
40
+ }
41
+
42
+ .gamehub-content {
43
+ flex: 1;
44
+ min-height: 0;
45
+ overflow: hidden;
46
+ background: white;
47
+ padding: 10px;
48
+ }
49
+
50
+ /* MENU */
51
+ .gamehub-menu {
52
+ width: 100%;
53
+ height: 100%;
54
+ overflow: hidden;
55
+ display: flex;
56
+ flex-direction: column;
57
+ gap: 10px;
58
+ }
59
+
60
+ .gamehub-menu-head {
61
+ display: flex;
62
+ align-items: center;
63
+ justify-content: space-between;
64
+ gap: 12px;
65
+ }
66
+
67
+ .gamehub-menu-title {
68
+ font-weight: 900;
69
+ font-size: 14px;
70
+ color: #222;
71
+ }
72
+
73
+ .gamehub-menu-tabs {
74
+ display: flex;
75
+ gap: 8px;
76
+ }
77
+
78
+ .gamehub-tab {
79
+ border: 1px solid #e1e5e9;
80
+ background: white;
81
+ border-radius: 10px;
82
+ padding: 8px 10px;
83
+ font-weight: 800;
84
+ font-size: 12px;
85
+ cursor: pointer;
86
+ }
87
+
88
+ .gamehub-tab.active {
89
+ border-color: rgba(102, 126, 234, 0.55);
90
+ box-shadow: 0 6px 16px rgba(102, 126, 234, 0.18);
91
+ }
92
+
93
+ .gamehub-menu-grid {
94
+ flex: 1;
95
+ min-height: 0;
96
+ display: grid;
97
+ grid-template-columns: repeat(2, minmax(0, 1fr));
98
+ gap: 10px;
99
+ overflow: hidden;
100
+ }
101
+
102
+ .gamehub-card {
103
+ border: 1px solid #e1e5e9;
104
+ border-radius: 12px;
105
+ background: #fff;
106
+ padding: 12px;
107
+ cursor: pointer;
108
+ text-align: left;
109
+ display: flex;
110
+ flex-direction: column;
111
+ gap: 6px;
112
+ transition: transform 0.12s ease, box-shadow 0.12s ease;
113
+ }
114
+
115
+ .gamehub-card:hover {
116
+ transform: translateY(-1px);
117
+ box-shadow: 0 8px 20px rgba(102, 126, 234, 0.18);
118
+ }
119
+
120
+ .gamehub-card-title {
121
+ font-size: 14px;
122
+ font-weight: 900;
123
+ color: #222;
124
+ }
125
+
126
+ .gamehub-card-desc {
127
+ font-size: 12px;
128
+ color: #666;
129
+ line-height: 1.2;
130
+ flex: 1;
131
+ }
132
+
133
+ .gamehub-card-cta {
134
+ margin-top: 6px;
135
+ font-size: 12px;
136
+ font-weight: 800;
137
+ color: #667eea;
138
+ }
139
+
140
+ /* STATS TAB */
141
+ .gamehub-stats {
142
+ flex: 1;
143
+ min-height: 0;
144
+ overflow: hidden;
145
+ display: flex;
146
+ flex-direction: column;
147
+ }
148
+
149
+ .gamehub-stats-controls {
150
+ display: flex;
151
+ align-items: center;
152
+ justify-content: space-between;
153
+ gap: 12px;
154
+ margin: 6px 0 10px;
155
+ }
156
+
157
+ .gamehub-stats-label {
158
+ display: flex;
159
+ align-items: center;
160
+ gap: 10px;
161
+ font-size: 12px;
162
+ color: #222;
163
+ font-weight: 800;
164
+ }
165
+
166
+ .gamehub-stats-select {
167
+ border: 1px solid #e1e5e9;
168
+ background: white;
169
+ border-radius: 10px;
170
+ padding: 8px 10px;
171
+ font-weight: 800;
172
+ font-size: 12px;
173
+ }
174
+
175
+ .gamehub-leaderboard {
176
+ margin: 0;
177
+ padding-left: 18px;
178
+ overflow: hidden;
179
+ }
180
+
181
+ .gamehub-leaderboard-item {
182
+ display: grid;
183
+ grid-template-columns: 50px 1fr 80px;
184
+ gap: 10px;
185
+ align-items: center;
186
+ padding: 8px 6px;
187
+ border-bottom: 1px solid #eef1f4;
188
+ }
189
+
190
+ .gamehub-lb-rank { opacity: 0.85; font-weight: 800; }
191
+ .gamehub-lb-user { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
192
+ .gamehub-lb-score { text-align: right; font-weight: 900; }
193
+
194
+ .gamehub-stats-error,
195
+ .gamehub-stats-loading,
196
+ .gamehub-stats-empty {
197
+ opacity: 0.85;
198
+ padding: 8px 6px;
199
+ }
200
+
201
+ /* GAME SCREEN */
202
+ .gamehub-game-screen {
203
+ width: 100%;
204
+ height: 100%;
205
+ display: flex;
206
+ flex-direction: column;
207
+ overflow: hidden;
208
+ }
209
+
210
+ .gamehub-game-topbar {
211
+ display: grid;
212
+ grid-template-columns: 120px 1fr auto;
213
+ align-items: center;
214
+ gap: 8px;
215
+ padding: 8px;
216
+ border: 1px solid #e1e5e9;
217
+ border-radius: 10px;
218
+ background: #f8f9fa;
219
+ flex-shrink: 0;
220
+ }
221
+
222
+ .gamehub-top-btn {
223
+ border: 1px solid #e1e5e9;
224
+ background: white;
225
+ border-radius: 10px;
226
+ padding: 8px 10px;
227
+ font-weight: 800;
228
+ font-size: 12px;
229
+ cursor: pointer;
230
+ }
231
+
232
+ .gamehub-top-title {
233
+ text-align: center;
234
+ font-weight: 900;
235
+ font-size: 12px;
236
+ color: #222;
237
+ white-space: nowrap;
238
+ overflow: hidden;
239
+ text-overflow: ellipsis;
240
+ }
241
+
242
+ .gamehub-game-wrap {
243
+ flex: 1;
244
+ min-height: 0;
245
+ overflow: hidden;
246
+ width: 100%;
247
+ height: 100%;
248
+ margin-top: 10px;
249
+ }
250
+
251
+ .gamehub-top-right {
252
+ display: flex;
253
+ gap: 8px;
254
+ align-items: center;
255
+ justify-content: flex-end;
256
+ min-width: 0;
257
+ }
258
+
259
+ .gamehub-stats-text {
260
+ font-size: 12px;
261
+ opacity: 0.85;
262
+ white-space: nowrap;
263
+ overflow: hidden;
264
+ text-overflow: ellipsis;
265
+ max-width: 320px;
266
+ }
267
+
268
+ .gamehub-top-btn:disabled {
269
+ opacity: 0.6;
270
+ cursor: not-allowed;
271
+ }
272
+
273
+ /* Nickname box in stats tab */
274
+ .gamehub-nick-box {
275
+ border: 1px solid #e1e5e9;
276
+ border-radius: 12px;
277
+ padding: 10px;
278
+ background: #fff;
279
+ margin-bottom: 10px;
280
+ }
281
+
282
+ .gamehub-nick-title {
283
+ font-weight: 900;
284
+ font-size: 12px;
285
+ color: #222;
286
+ margin-bottom: 8px;
287
+ }
288
+
289
+ .gamehub-nick-row {
290
+ display: flex;
291
+ gap: 8px;
292
+ align-items: center;
293
+ }
294
+
295
+ .gamehub-nick-input {
296
+ flex: 1;
297
+ border: 1px solid #e1e5e9;
298
+ border-radius: 10px;
299
+ padding: 8px 10px;
300
+ font-weight: 700;
301
+ font-size: 12px;
302
+ outline: none;
303
+ }
304
+
305
+ .gamehub-nick-input:focus {
306
+ border-color: rgba(102, 126, 234, 0.55);
307
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.15);
308
+ }
309
+
310
+ .gamehub-nick-msg {
311
+ margin-top: 6px;
312
+ font-size: 12px;
313
+ opacity: 0.9;
314
+ }
@@ -0,0 +1,422 @@
1
+ /* ClickerGame.css - Стили для улучшенного кликера */
2
+
3
+ .clicker-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
+ .header-controls {
31
+ display: flex;
32
+ gap: 8px;
33
+ }
34
+
35
+ .shop-toggle {
36
+ padding: 6px 12px;
37
+ background: linear-gradient(45deg, #667eea, #764ba2);
38
+ color: white;
39
+ border: none;
40
+ border-radius: 6px;
41
+ font-size: 11px;
42
+ font-weight: 600;
43
+ cursor: pointer;
44
+ transition: all 0.2s;
45
+ display: flex;
46
+ align-items: center;
47
+ gap: 4px;
48
+ }
49
+
50
+ .shop-toggle.active {
51
+ background: linear-gradient(45deg, #ff9966, #ff5e62);
52
+ }
53
+
54
+ .shop-toggle:hover {
55
+ transform: translateY(-1px);
56
+ box-shadow: 0 4px 8px rgba(102, 126, 234, 0.3);
57
+ }
58
+
59
+ .game-stats {
60
+ display: grid;
61
+ grid-template-columns: repeat(4, 1fr);
62
+ gap: 8px;
63
+ padding: 12px 16px;
64
+ border-bottom: 1px solid #e1e5e9;
65
+ flex-shrink: 0;
66
+ }
67
+
68
+ .stat-box {
69
+ background: #f8f9fa;
70
+ border-radius: 8px;
71
+ padding: 8px;
72
+ text-align: center;
73
+ border: 1px solid #e1e5e9;
74
+ }
75
+
76
+ .stat-label {
77
+ font-size: 10px;
78
+ color: #666;
79
+ margin-bottom: 4px;
80
+ text-transform: uppercase;
81
+ letter-spacing: 0.5px;
82
+ }
83
+
84
+ .stat-value {
85
+ font-size: 16px;
86
+ font-weight: 700;
87
+ color: #667eea;
88
+ }
89
+
90
+ .click-count {
91
+ font-size: 18px;
92
+ color: #00b09b;
93
+ }
94
+
95
+ .multiplier {
96
+ color: #ff9966;
97
+ animation: pulse 2s infinite;
98
+ }
99
+
100
+ @keyframes pulse {
101
+ 0%, 100% { transform: scale(1); }
102
+ 50% { transform: scale(1.1); }
103
+ }
104
+
105
+ .main-game-area {
106
+ flex: 1;
107
+ display: flex;
108
+ overflow: hidden;
109
+ min-height: 0;
110
+ }
111
+
112
+ .clicker-container {
113
+ flex: 2;
114
+ display: flex;
115
+ flex-direction: column;
116
+ align-items: center;
117
+ justify-content: center;
118
+ padding: 20px;
119
+ border-right: 1px solid #e1e5e9;
120
+ }
121
+
122
+ .click-button {
123
+ width: 200px;
124
+ height: 200px;
125
+ border: none;
126
+ border-radius: 50%;
127
+ background: linear-gradient(45deg, #667eea, #764ba2);
128
+ color: white;
129
+ cursor: pointer;
130
+ transition: all 0.1s;
131
+ display: flex;
132
+ align-items: center;
133
+ justify-content: center;
134
+ margin-bottom: 30px;
135
+ box-shadow: 0 10px 20px rgba(102, 126, 234, 0.3);
136
+ }
137
+
138
+ .click-button:active {
139
+ transform: scale(0.95);
140
+ box-shadow: 0 5px 10px rgba(102, 126, 234, 0.2);
141
+ }
142
+
143
+ .click-button-text {
144
+ text-align: center;
145
+ }
146
+
147
+ .click-power {
148
+ font-size: 28px;
149
+ font-weight: bold;
150
+ margin-bottom: 8px;
151
+ text-shadow: 0 2px 4px rgba(0, 0, 0, 0.2);
152
+ }
153
+
154
+ .click-label {
155
+ font-size: 18px;
156
+ font-weight: 600;
157
+ margin-bottom: 4px;
158
+ }
159
+
160
+ .click-hint {
161
+ font-size: 12px;
162
+ opacity: 0.8;
163
+ }
164
+
165
+ .abilities {
166
+ width: 100%;
167
+ max-width: 400px;
168
+ }
169
+
170
+ .abilities h3 {
171
+ margin: 0 0 12px 0;
172
+ font-size: 14px;
173
+ color: #333;
174
+ text-align: center;
175
+ }
176
+
177
+ .abilities-grid {
178
+ display: grid;
179
+ grid-template-columns: repeat(3, 1fr);
180
+ gap: 8px;
181
+ }
182
+
183
+ .ability-btn {
184
+ padding: 8px;
185
+ background: linear-gradient(45deg, #4cc9f0, #4361ee);
186
+ color: white;
187
+ border: none;
188
+ border-radius: 6px;
189
+ cursor: pointer;
190
+ transition: all 0.2s;
191
+ display: flex;
192
+ flex-direction: column;
193
+ align-items: center;
194
+ gap: 4px;
195
+ }
196
+
197
+ .ability-btn:hover:not(:disabled) {
198
+ transform: translateY(-2px);
199
+ box-shadow: 0 4px 8px rgba(76, 201, 240, 0.3);
200
+ }
201
+
202
+ .ability-btn:disabled {
203
+ opacity: 0.5;
204
+ cursor: not-allowed;
205
+ }
206
+
207
+ .ability-btn.cooldown {
208
+ background: linear-gradient(45deg, #666, #999);
209
+ }
210
+
211
+ .ability-name {
212
+ font-size: 10px;
213
+ font-weight: 600;
214
+ text-align: center;
215
+ line-height: 1.2;
216
+ }
217
+
218
+ .ability-cost {
219
+ font-size: 9px;
220
+ opacity: 0.9;
221
+ }
222
+
223
+ .ability-cooldown {
224
+ font-size: 8px;
225
+ font-weight: bold;
226
+ }
227
+
228
+ .shop-panel {
229
+ flex: 1;
230
+ padding: 16px;
231
+ background: #f8f9fa;
232
+ overflow-y: auto;
233
+ border-left: 1px solid #e1e5e9;
234
+ }
235
+
236
+ .shop-panel h3 {
237
+ margin: 0 0 16px 0;
238
+ font-size: 14px;
239
+ color: #333;
240
+ text-align: center;
241
+ }
242
+
243
+ .upgrades-grid {
244
+ display: grid;
245
+ grid-template-columns: repeat(2, 1fr);
246
+ gap: 10px;
247
+ }
248
+
249
+ .upgrade-item {
250
+ background: white;
251
+ border-radius: 8px;
252
+ padding: 10px;
253
+ border: 2px solid #e1e5e9;
254
+ display: flex;
255
+ flex-direction: column;
256
+ gap: 8px;
257
+ transition: all 0.2s;
258
+ }
259
+
260
+ .upgrade-item.purchased {
261
+ border-color: #00b09b;
262
+ background: rgba(0, 176, 155, 0.05);
263
+ }
264
+
265
+ .upgrade-item.affordable:not(.purchased) {
266
+ border-color: #667eea;
267
+ }
268
+
269
+ .upgrade-content {
270
+ flex: 1;
271
+ }
272
+
273
+ .upgrade-name {
274
+ font-size: 11px;
275
+ font-weight: 600;
276
+ margin-bottom: 6px;
277
+ color: #333;
278
+ }
279
+
280
+ .upgrade-stats {
281
+ font-size: 10px;
282
+ color: #667eea;
283
+ margin-bottom: 6px;
284
+ }
285
+
286
+ .upgrade-stats span {
287
+ display: block;
288
+ }
289
+
290
+ .upgrade-cost {
291
+ font-size: 12px;
292
+ font-weight: bold;
293
+ color: #ff9966;
294
+ }
295
+
296
+ .buy-btn {
297
+ padding: 6px;
298
+ background: linear-gradient(45deg, #00b09b, #96c93d);
299
+ color: white;
300
+ border: none;
301
+ border-radius: 4px;
302
+ font-size: 10px;
303
+ font-weight: 600;
304
+ cursor: pointer;
305
+ transition: all 0.2s;
306
+ text-transform: uppercase;
307
+ letter-spacing: 0.5px;
308
+ }
309
+
310
+ .buy-btn:disabled {
311
+ background: #ccc;
312
+ cursor: not-allowed;
313
+ }
314
+
315
+ .buy-btn:not(:disabled):hover {
316
+ transform: translateY(-1px);
317
+ box-shadow: 0 2px 4px rgba(0, 176, 155, 0.3);
318
+ }
319
+
320
+ .achievements {
321
+ padding: 12px 16px;
322
+ border-top: 1px solid #e1e5e9;
323
+ flex-shrink: 0;
324
+ }
325
+
326
+ .achievements h3 {
327
+ margin: 0 0 12px 0;
328
+ font-size: 14px;
329
+ color: #333;
330
+ text-align: center;
331
+ }
332
+
333
+ .achievements-grid {
334
+ display: grid;
335
+ grid-template-columns: repeat(4, 1fr);
336
+ gap: 8px;
337
+ }
338
+
339
+ .achievement {
340
+ background: #f8f9fa;
341
+ border-radius: 6px;
342
+ padding: 8px;
343
+ display: flex;
344
+ align-items: center;
345
+ gap: 8px;
346
+ border: 1px solid #e1e5e9;
347
+ transition: all 0.2s;
348
+ }
349
+
350
+ .achievement.achieved {
351
+ background: rgba(255, 215, 0, 0.1);
352
+ border-color: #ffd700;
353
+ }
354
+
355
+ .achievement-icon {
356
+ font-size: 16px;
357
+ flex-shrink: 0;
358
+ }
359
+
360
+ .achievement-info {
361
+ flex: 1;
362
+ }
363
+
364
+ .achievement-name {
365
+ font-size: 10px;
366
+ font-weight: 600;
367
+ color: #333;
368
+ margin-bottom: 2px;
369
+ }
370
+
371
+ .achievement-progress {
372
+ font-size: 8px;
373
+ color: #666;
374
+ }
375
+
376
+ .game-instructions {
377
+ padding: 8px 16px;
378
+ font-size: 10px;
379
+ color: #666;
380
+ text-align: center;
381
+ border-top: 1px solid #e1e5e9;
382
+ flex-shrink: 0;
383
+ }
384
+
385
+ .game-instructions p {
386
+ margin: 4px 0;
387
+ }
388
+
389
+ /* Адаптивность */
390
+ @media (max-width: 768px) {
391
+ .main-game-area {
392
+ flex-direction: column;
393
+ }
394
+
395
+ .clicker-container {
396
+ border-right: none;
397
+ border-bottom: 1px solid #e1e5e9;
398
+ padding: 15px;
399
+ }
400
+
401
+ .click-button {
402
+ width: 150px;
403
+ height: 150px;
404
+ margin-bottom: 20px;
405
+ }
406
+
407
+ .abilities-grid {
408
+ grid-template-columns: repeat(3, 1fr);
409
+ }
410
+
411
+ .upgrades-grid {
412
+ grid-template-columns: 1fr;
413
+ }
414
+
415
+ .achievements-grid {
416
+ grid-template-columns: repeat(2, 1fr);
417
+ }
418
+
419
+ .shop-panel {
420
+ max-height: 200px;
421
+ }
422
+ }