@jjlmoya/utils-games-development 1.46.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/package.json +67 -0
  2. package/scripts/postinstall.mjs +27 -0
  3. package/src/category/GamesCategorySEO.astro +19 -0
  4. package/src/category/i18n/de.ts +15 -0
  5. package/src/category/i18n/en.ts +15 -0
  6. package/src/category/i18n/es.ts +15 -0
  7. package/src/category/i18n/fr.ts +15 -0
  8. package/src/category/i18n/id.ts +10 -0
  9. package/src/category/i18n/it.ts +10 -0
  10. package/src/category/i18n/ja.ts +10 -0
  11. package/src/category/i18n/ko.ts +10 -0
  12. package/src/category/i18n/nl.ts +10 -0
  13. package/src/category/i18n/pl.ts +10 -0
  14. package/src/category/i18n/pt.ts +10 -0
  15. package/src/category/i18n/ru.ts +10 -0
  16. package/src/category/i18n/sv.ts +10 -0
  17. package/src/category/i18n/tr.ts +10 -0
  18. package/src/category/i18n/zh.ts +10 -0
  19. package/src/category/index.ts +24 -0
  20. package/src/category/seo.astro +15 -0
  21. package/src/components/PreviewNavSidebar.astro +116 -0
  22. package/src/components/PreviewToolbar.astro +143 -0
  23. package/src/data.ts +11 -0
  24. package/src/entries.ts +5 -0
  25. package/src/env.d.ts +5 -0
  26. package/src/index.ts +21 -0
  27. package/src/layouts/PreviewLayout.astro +122 -0
  28. package/src/pages/[locale]/[slug].astro +165 -0
  29. package/src/pages/[locale].astro +251 -0
  30. package/src/pages/index.astro +4 -0
  31. package/src/tests/diacritics_density.test.ts +118 -0
  32. package/src/tests/faq_count.test.ts +19 -0
  33. package/src/tests/i18n_coverage.test.ts +36 -0
  34. package/src/tests/inverted_punctuation.test.ts +84 -0
  35. package/src/tests/locale_completeness.test.ts +27 -0
  36. package/src/tests/mocks/astro_mock.js +2 -0
  37. package/src/tests/no_en_dash.test.ts +70 -0
  38. package/src/tests/no_h1_in_components.test.ts +48 -0
  39. package/src/tests/pagespeed_best_practices.test.ts +198 -0
  40. package/src/tests/qa-test-helpers.ts +32 -0
  41. package/src/tests/qa_bibliography_links.test.ts +41 -0
  42. package/src/tests/qa_claim_evidence.test.ts +69 -0
  43. package/src/tests/qa_logic_reference_coverage.test.ts +46 -0
  44. package/src/tests/qa_runtime_i18n.test.ts +100 -0
  45. package/src/tests/schemas_fulfillment.test.ts +23 -0
  46. package/src/tests/script_density.test.ts +94 -0
  47. package/src/tests/seo_length.test.ts +23 -0
  48. package/src/tests/slug_language_code_format.test.ts +23 -0
  49. package/src/tests/slug_uniqueness.test.ts +81 -0
  50. package/src/tests/title_quality.test.ts +56 -0
  51. package/src/tests/tool_validation.test.ts +17 -0
  52. package/src/tool/steamCapsuleGenerator/bibliography.astro +6 -0
  53. package/src/tool/steamCapsuleGenerator/bibliography.ts +6 -0
  54. package/src/tool/steamCapsuleGenerator/component.astro +289 -0
  55. package/src/tool/steamCapsuleGenerator/components/SteamLibraryGridMockup.astro +51 -0
  56. package/src/tool/steamCapsuleGenerator/components/SteamLibraryMockup.astro +64 -0
  57. package/src/tool/steamCapsuleGenerator/components/SteamMasterControls.astro +2 -0
  58. package/src/tool/steamCapsuleGenerator/components/SteamStoreMockup.astro +90 -0
  59. package/src/tool/steamCapsuleGenerator/entry.ts +28 -0
  60. package/src/tool/steamCapsuleGenerator/i18n/de.ts +144 -0
  61. package/src/tool/steamCapsuleGenerator/i18n/en.ts +243 -0
  62. package/src/tool/steamCapsuleGenerator/i18n/es.ts +243 -0
  63. package/src/tool/steamCapsuleGenerator/i18n/fr.ts +165 -0
  64. package/src/tool/steamCapsuleGenerator/i18n/id.ts +144 -0
  65. package/src/tool/steamCapsuleGenerator/i18n/it.ts +144 -0
  66. package/src/tool/steamCapsuleGenerator/i18n/ja.ts +144 -0
  67. package/src/tool/steamCapsuleGenerator/i18n/ko.ts +144 -0
  68. package/src/tool/steamCapsuleGenerator/i18n/nl.ts +144 -0
  69. package/src/tool/steamCapsuleGenerator/i18n/pl.ts +144 -0
  70. package/src/tool/steamCapsuleGenerator/i18n/pt.ts +144 -0
  71. package/src/tool/steamCapsuleGenerator/i18n/ru.ts +144 -0
  72. package/src/tool/steamCapsuleGenerator/i18n/shared.ts +46 -0
  73. package/src/tool/steamCapsuleGenerator/i18n/sv.ts +144 -0
  74. package/src/tool/steamCapsuleGenerator/i18n/tr.ts +144 -0
  75. package/src/tool/steamCapsuleGenerator/i18n/zh.ts +144 -0
  76. package/src/tool/steamCapsuleGenerator/index.ts +9 -0
  77. package/src/tool/steamCapsuleGenerator/logic.test.ts +72 -0
  78. package/src/tool/steamCapsuleGenerator/logic.ts +259 -0
  79. package/src/tool/steamCapsuleGenerator/seo.astro +15 -0
  80. package/src/tool/steamCapsuleGenerator/steam-capsule-generator.css +697 -0
  81. package/src/tool/steamCapsuleGenerator/ui.ts +23 -0
  82. package/src/tool/steamCapsuleGenerator/validation.ts +22 -0
  83. package/src/tools.ts +8 -0
  84. package/src/types.ts +72 -0
@@ -0,0 +1,697 @@
1
+ .steam-tool-container {
2
+ display: flex;
3
+ flex-direction: column;
4
+ gap: 1.25rem;
5
+ width: 100%;
6
+ max-width: 1200px;
7
+ margin: 0 auto;
8
+ color: var(--text-color, #c6d4df);
9
+ }
10
+
11
+ .steam-unified-card {
12
+ background: var(--bg-card, #171a21);
13
+ border: 1px solid var(--border-color, #2a475e);
14
+ border-radius: 10px;
15
+ padding: 1rem;
16
+ box-shadow: 0 16px 48px var(--shadow-color, rgba(0, 0, 0, 0.6));
17
+ display: flex;
18
+ flex-direction: column;
19
+ gap: 1.25rem;
20
+ }
21
+
22
+ .theme-dark .steam-unified-card {
23
+ background: var(--bg-card-dark, #10141d);
24
+ border-color: var(--border-color-dark, #1f3347);
25
+ }
26
+
27
+ .steam-compact-bar {
28
+ display: flex;
29
+ flex-wrap: wrap;
30
+ align-items: center;
31
+ justify-content: space-between;
32
+ gap: 0.75rem;
33
+ background: var(--bg-bar, #1b2838);
34
+ border: 1px solid var(--border-bar, #2a475e);
35
+ border-radius: 8px;
36
+ padding: 0.75rem;
37
+ }
38
+
39
+ .steam-mode-tabs {
40
+ display: flex;
41
+ gap: 0.35rem;
42
+ background: var(--bg-tabs, #0d121a);
43
+ padding: 0.25rem;
44
+ border-radius: 6px;
45
+ }
46
+
47
+ .steam-tab-btn {
48
+ background: transparent;
49
+ border: none;
50
+ color: var(--text-muted, #8b99a8);
51
+ font-size: 0.85rem;
52
+ font-weight: 600;
53
+ padding: 0.4rem 0.85rem;
54
+ border-radius: 4px;
55
+ cursor: pointer;
56
+ transition: all 0.15s ease;
57
+ }
58
+
59
+ .steam-tab-btn:hover {
60
+ color: var(--text-light, #fff);
61
+ background: var(--bg-tab-hover, rgba(255, 255, 255, 0.05));
62
+ }
63
+
64
+ .steam-tab-btn.active {
65
+ color: var(--text-light, #fff);
66
+ background: var(--accent-steam, #66c0f4);
67
+ box-shadow: 0 2px 8px var(--accent-shadow, rgba(102, 192, 244, 0.3));
68
+ }
69
+
70
+ .steam-preset-chips {
71
+ display: flex;
72
+ align-items: center;
73
+ gap: 0.4rem;
74
+ }
75
+
76
+ .preset-label {
77
+ font-size: 0.75rem;
78
+ color: var(--text-muted-alt, #556772);
79
+ text-transform: uppercase;
80
+ letter-spacing: 0.05em;
81
+ font-weight: 700;
82
+ }
83
+
84
+ .preset-chip {
85
+ background: var(--bg-chip, #101822);
86
+ border: 1px solid var(--border-chip, #2a475e);
87
+ color: var(--text-chip, #8f98a0);
88
+ font-size: 0.75rem;
89
+ padding: 0.3rem 0.6rem;
90
+ border-radius: 4px;
91
+ cursor: pointer;
92
+ transition: all 0.15s ease;
93
+ }
94
+
95
+ .preset-chip:hover {
96
+ border-color: var(--accent-steam, #66c0f4);
97
+ color: var(--text-light, #fff);
98
+ }
99
+
100
+ .preset-chip.active {
101
+ background: var(--bg-chip-active, rgba(102, 192, 244, 0.15));
102
+ border-color: var(--accent-steam, #66c0f4);
103
+ color: var(--accent-steam, #66c0f4);
104
+ }
105
+
106
+ .steam-inline-sliders {
107
+ display: flex;
108
+ align-items: center;
109
+ gap: 0.75rem;
110
+ }
111
+
112
+ .slider-item {
113
+ display: flex;
114
+ align-items: center;
115
+ gap: 0.35rem;
116
+ }
117
+
118
+ .slider-item label {
119
+ font-size: 0.75rem;
120
+ color: var(--text-muted, #8b99a8);
121
+ }
122
+
123
+ .steam-range-input {
124
+ width: 70px;
125
+ accent-color: var(--accent-steam, #66c0f4);
126
+ cursor: pointer;
127
+ }
128
+
129
+ .steam-quick-actions {
130
+ display: flex;
131
+ align-items: center;
132
+ gap: 0.5rem;
133
+ }
134
+
135
+ .steam-toggle-label {
136
+ display: flex;
137
+ align-items: center;
138
+ gap: 0.35rem;
139
+ font-size: 0.75rem;
140
+ color: var(--text-color, #c6d4df);
141
+ cursor: pointer;
142
+ }
143
+
144
+ .steam-toggle-checkbox {
145
+ accent-color: var(--accent-steam, #66c0f4);
146
+ cursor: pointer;
147
+ }
148
+
149
+ .steam-btn-primary {
150
+ background: linear-gradient(135deg, var(--btn-grad-start, #47bfff) 0%, var(--btn-grad-end, #1a9fff) 100%);
151
+ border: none;
152
+ color: var(--text-light, #fff);
153
+ font-size: 0.8rem;
154
+ font-weight: 700;
155
+ padding: 0.45rem 0.9rem;
156
+ border-radius: 4px;
157
+ cursor: pointer;
158
+ box-shadow: 0 2px 6px var(--btn-shadow, rgba(26, 159, 255, 0.3));
159
+ transition: all 0.15s ease;
160
+ }
161
+
162
+ .steam-btn-primary:hover {
163
+ filter: brightness(1.1);
164
+ box-shadow: 0 4px 12px var(--btn-shadow-hover, rgba(26, 159, 255, 0.5));
165
+ }
166
+
167
+ .steam-btn-primary.download-zip-highlight {
168
+ background: linear-gradient(135deg, var(--btn-zip-start, #5c7e10) 0%, var(--btn-zip-end, #4c6b08) 100%);
169
+ box-shadow: 0 2px 6px var(--btn-zip-shadow, rgba(92, 126, 16, 0.4));
170
+ }
171
+
172
+ .steam-upload-input {
173
+ display: none;
174
+ }
175
+
176
+ .steam-preview-viewport {
177
+ background: var(--bg-viewport, #0e141d);
178
+ border-radius: 8px;
179
+ padding: 1.25rem;
180
+ min-height: 500px;
181
+ position: relative;
182
+ }
183
+
184
+ .steam-preview-panel {
185
+ width: 100%;
186
+ }
187
+
188
+ .steam-store-mockup-frame {
189
+ background: var(--bg-mockup, #1b2838);
190
+ border-radius: 6px;
191
+ overflow: hidden;
192
+ border: 1px solid var(--border-mockup, #2a475e);
193
+ box-shadow: 0 8px 24px var(--shadow-mockup, rgba(0, 0, 0, 0.5));
194
+ }
195
+
196
+ .steam-store-header-nav {
197
+ background: var(--bg-nav, #171a21);
198
+ padding: 0.6rem 1rem;
199
+ display: flex;
200
+ align-items: center;
201
+ justify-content: space-between;
202
+ border-bottom: 1px solid var(--border-mockup, #2a475e);
203
+ }
204
+
205
+ .steam-logo-text {
206
+ font-weight: 900;
207
+ font-size: 1.1rem;
208
+ letter-spacing: 0.05em;
209
+ color: var(--text-light, #fff);
210
+ display: flex;
211
+ align-items: center;
212
+ gap: 0.5rem;
213
+ }
214
+
215
+ .steam-logo-icon {
216
+ background: var(--accent-steam, #66c0f4);
217
+ color: var(--bg-nav, #171a21);
218
+ font-size: 0.75rem;
219
+ padding: 0.1rem 0.35rem;
220
+ border-radius: 3px;
221
+ }
222
+
223
+ .steam-nav-links {
224
+ display: flex;
225
+ gap: 1rem;
226
+ font-size: 0.8rem;
227
+ color: var(--text-chip, #8f98a0);
228
+ text-transform: uppercase;
229
+ }
230
+
231
+ .steam-nav-links span.active {
232
+ color: var(--text-light, #fff);
233
+ border-bottom: 2px solid var(--accent-active, #67c1f5);
234
+ }
235
+
236
+ .steam-store-hero-row {
237
+ display: flex;
238
+ flex-direction: column;
239
+ gap: 1rem;
240
+ padding: 1.25rem;
241
+ }
242
+
243
+ @media (min-width: 900px) {
244
+ .steam-store-hero-row {
245
+ flex-direction: row;
246
+ }
247
+ }
248
+
249
+ .steam-main-capsule-container {
250
+ flex: 1.6;
251
+ position: relative;
252
+ border-radius: 4px;
253
+ overflow: hidden;
254
+ box-shadow: 0 4px 16px var(--shadow-mockup, rgba(0, 0, 0, 0.5));
255
+ background: var(--bg-chip, #101822);
256
+ }
257
+
258
+ .steam-main-capsule-canvas-box {
259
+ width: 100%;
260
+ aspect-ratio: 1232 / 706;
261
+ position: relative;
262
+ }
263
+
264
+ .steam-main-capsule-canvas-box canvas {
265
+ width: 100%;
266
+ height: 100%;
267
+ object-fit: cover;
268
+ display: block;
269
+ }
270
+
271
+ .diegetic-upload-trigger {
272
+ cursor: pointer;
273
+ position: relative;
274
+ }
275
+
276
+ .diegetic-upload-trigger:hover .diegetic-overlay-hint {
277
+ opacity: 1;
278
+ }
279
+
280
+ .diegetic-overlay-hint {
281
+ position: absolute;
282
+ inset: 0;
283
+ background: var(--bg-overlay-hint, rgba(102, 192, 244, 0.85));
284
+ color: var(--text-light, #fff);
285
+ font-weight: 700;
286
+ font-size: 0.95rem;
287
+ display: flex;
288
+ align-items: center;
289
+ justify-content: center;
290
+ opacity: 0;
291
+ transition: opacity 0.2s ease;
292
+ pointer-events: none;
293
+ text-shadow: 0 2px 4px var(--shadow-text, rgba(0, 0, 0, 0.4));
294
+ }
295
+
296
+ .steam-safe-overlay {
297
+ position: absolute;
298
+ border: 2px dashed var(--accent-safe, #ff4757);
299
+ background: var(--bg-safe, rgba(255, 71, 87, 0.15));
300
+ color: var(--text-light, #fff);
301
+ font-size: 0.7rem;
302
+ font-weight: 700;
303
+ padding: 0.25rem 0.5rem;
304
+ pointer-events: none;
305
+ display: flex;
306
+ align-items: flex-start;
307
+ justify-content: flex-start;
308
+ box-sizing: border-box;
309
+ }
310
+
311
+ .steam-store-price-badge {
312
+ position: absolute;
313
+ right: 0.75rem;
314
+ bottom: 0.75rem;
315
+ background: var(--bg-nav, #171a21);
316
+ display: flex;
317
+ align-items: center;
318
+ border-radius: 2px;
319
+ overflow: hidden;
320
+ box-shadow: 0 4px 12px var(--shadow-badge, rgba(0, 0, 0, 0.7));
321
+ }
322
+
323
+ .discount-tag {
324
+ background: var(--bg-discount, #4c6b22);
325
+ color: var(--accent-discount, #beee11);
326
+ font-size: 1.1rem;
327
+ font-weight: 800;
328
+ padding: 0.35rem 0.6rem;
329
+ }
330
+
331
+ .price-box {
332
+ padding: 0.2rem 0.6rem;
333
+ display: flex;
334
+ flex-direction: column;
335
+ align-items: flex-end;
336
+ }
337
+
338
+ .original-price {
339
+ font-size: 0.7rem;
340
+ text-decoration: line-through;
341
+ color: var(--text-muted-alt, #556772);
342
+ }
343
+
344
+ .final-price {
345
+ font-size: 0.95rem;
346
+ font-weight: 700;
347
+ color: var(--text-color, #c6d4df);
348
+ }
349
+
350
+ .steam-store-sidebar-panel {
351
+ flex: 1;
352
+ background: var(--bg-sidebar, #0e141d);
353
+ border-radius: 4px;
354
+ padding: 1rem;
355
+ display: flex;
356
+ flex-direction: column;
357
+ gap: 0.85rem;
358
+ }
359
+
360
+ .steam-game-title-input {
361
+ background: transparent;
362
+ border: 1px dashed transparent;
363
+ color: var(--text-light, #fff);
364
+ font-size: 1.25rem;
365
+ font-weight: 800;
366
+ padding: 0.2rem 0.4rem;
367
+ border-radius: 4px;
368
+ width: 100%;
369
+ box-sizing: border-box;
370
+
371
+ &:hover,
372
+ &:focus {
373
+ border-color: var(--accent-steam, #66c0f4);
374
+ background: var(--bg-tab-hover, rgba(255, 255, 255, 0.05));
375
+ outline: none;
376
+ }
377
+ }
378
+
379
+ .steam-game-desc-input {
380
+ font-size: 0.8rem;
381
+ color: var(--text-color, #c6d4df);
382
+ line-height: 1.45;
383
+ background: transparent;
384
+ border: 1px dashed transparent;
385
+ padding: 0.3rem 0.4rem;
386
+ border-radius: 4px;
387
+
388
+ &:hover,
389
+ &:focus {
390
+ border-color: var(--accent-steam, #66c0f4);
391
+ background: var(--bg-tab-hover, rgba(255, 255, 255, 0.05));
392
+ outline: none;
393
+ }
394
+ }
395
+
396
+ .steam-store-meta-grid {
397
+ display: flex;
398
+ flex-direction: column;
399
+ gap: 0.35rem;
400
+ font-size: 0.75rem;
401
+ border-top: 1px solid var(--border-mockup, #2a475e);
402
+ padding-top: 0.75rem;
403
+ }
404
+
405
+ .meta-row {
406
+ display: flex;
407
+ gap: 0.5rem;
408
+ }
409
+
410
+ .meta-label {
411
+ color: var(--text-muted-alt, #556772);
412
+ width: 100px;
413
+ }
414
+
415
+ .meta-value {
416
+ color: var(--accent-active, #67c1f5);
417
+ font-weight: 600;
418
+ }
419
+
420
+ .steam-header-capsule-box {
421
+ width: 100%;
422
+ aspect-ratio: 920 / 430;
423
+ position: relative;
424
+ border-radius: 4px;
425
+ overflow: hidden;
426
+ border: 1px solid var(--border-mockup, #2a475e);
427
+ margin-top: 0.5rem;
428
+ }
429
+
430
+ .steam-header-capsule-box canvas {
431
+ width: 100%;
432
+ height: 100%;
433
+ object-fit: cover;
434
+ display: block;
435
+ }
436
+
437
+ .steam-library-mockup-frame {
438
+ background: var(--bg-library, #181a21);
439
+ border-radius: 6px;
440
+ overflow: hidden;
441
+ border: 1px solid var(--border-mockup, #2a475e);
442
+ box-shadow: 0 8px 24px var(--shadow-mockup, rgba(0, 0, 0, 0.5));
443
+ }
444
+
445
+ .steam-client-topbar {
446
+ background: var(--bg-topbar, #0d121a);
447
+ padding: 0.4rem 0.8rem;
448
+ display: flex;
449
+ align-items: center;
450
+ justify-content: space-between;
451
+ font-size: 0.75rem;
452
+ color: var(--text-chip, #8f98a0);
453
+ }
454
+
455
+ .steam-client-menu {
456
+ display: flex;
457
+ gap: 0.75rem;
458
+ }
459
+
460
+ .steam-client-window-controls {
461
+ display: flex;
462
+ gap: 0.6rem;
463
+ }
464
+
465
+ .steam-library-hero-viewport {
466
+ width: 100%;
467
+ aspect-ratio: 3840 / 1240;
468
+ position: relative;
469
+ overflow: hidden;
470
+ background: var(--bg-chip, #101822);
471
+ }
472
+
473
+ .steam-library-hero-viewport canvas {
474
+ width: 100%;
475
+ height: 100%;
476
+ object-fit: cover;
477
+ display: block;
478
+ }
479
+
480
+ .steam-library-hero-gradient-overlay {
481
+ position: absolute;
482
+ inset: 0;
483
+ background: linear-gradient(0deg, var(--bg-library, #181a21) 0%, rgba(24, 26, 33, 0) 50%);
484
+ pointer-events: none;
485
+ }
486
+
487
+ .steam-library-logo-container {
488
+ position: absolute;
489
+ left: 3rem;
490
+ bottom: 2rem;
491
+ width: 320px;
492
+ max-width: 40%;
493
+ }
494
+
495
+ .steam-library-title-fallback {
496
+ font-size: 2.2rem;
497
+ font-weight: 900;
498
+ color: var(--text-light, #fff);
499
+ text-shadow: 0 4px 12px var(--shadow-mockup, rgba(0, 0, 0, 0.8));
500
+ line-height: 1.1;
501
+ background: transparent;
502
+ border: 1px dashed transparent;
503
+ padding: 0.2rem 0.4rem;
504
+ border-radius: 4px;
505
+
506
+ &:hover,
507
+ &:focus {
508
+ border-color: var(--accent-steam, #66c0f4);
509
+ background: var(--bg-tab-hover, rgba(255, 255, 255, 0.05));
510
+ outline: none;
511
+ }
512
+ }
513
+
514
+ .steam-library-action-bar {
515
+ background: var(--bg-action-bar, #1b2838);
516
+ padding: 1rem 3rem;
517
+ display: flex;
518
+ align-items: center;
519
+ gap: 2rem;
520
+ border-top: 1px solid var(--border-bar, #2a475e);
521
+ }
522
+
523
+ .steam-play-button {
524
+ background: linear-gradient(135deg, var(--btn-play-start, #75b022) 0%, var(--btn-play-end, #588a1b) 100%);
525
+ border: none;
526
+ color: var(--text-light, #fff);
527
+ font-size: 1.1rem;
528
+ font-weight: 800;
529
+ padding: 0.6rem 2.2rem;
530
+ border-radius: 2px;
531
+ cursor: pointer;
532
+ display: flex;
533
+ align-items: center;
534
+ gap: 0.5rem;
535
+ box-shadow: 0 4px 16px var(--btn-play-shadow, rgba(117, 176, 34, 0.4));
536
+ transition: all 0.15s ease;
537
+ }
538
+
539
+ .steam-play-button:hover {
540
+ filter: brightness(1.15);
541
+ }
542
+
543
+ .steam-library-stat-item {
544
+ display: flex;
545
+ flex-direction: column;
546
+ }
547
+
548
+ .stat-label {
549
+ font-size: 0.65rem;
550
+ color: var(--text-muted, #8b99a8);
551
+ text-transform: uppercase;
552
+ }
553
+
554
+ .stat-value {
555
+ font-size: 0.85rem;
556
+ font-weight: 600;
557
+ color: var(--text-color, #c6d4df);
558
+ }
559
+
560
+ .steam-grid-mockup-frame {
561
+ background: var(--bg-library, #181a21);
562
+ border-radius: 6px;
563
+ padding: 1.25rem;
564
+ border: 1px solid var(--border-mockup, #2a475e);
565
+ }
566
+
567
+ .steam-grid-header {
568
+ display: flex;
569
+ align-items: center;
570
+ justify-content: space-between;
571
+ margin-bottom: 1rem;
572
+ }
573
+
574
+ .steam-grid-title {
575
+ font-size: 0.85rem;
576
+ font-weight: 700;
577
+ color: var(--text-color, #c6d4df);
578
+ letter-spacing: 0.05em;
579
+ }
580
+
581
+ .steam-grid-search-bar input {
582
+ background: var(--bg-topbar, #0d121a);
583
+ border: 1px solid var(--border-bar, #2a475e);
584
+ color: var(--text-color, #c6d4df);
585
+ padding: 0.35rem 0.75rem;
586
+ border-radius: 4px;
587
+ font-size: 0.8rem;
588
+ width: 220px;
589
+ }
590
+
591
+ .steam-grid-tiles-container {
592
+ display: grid;
593
+ grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
594
+ gap: 1.25rem;
595
+ }
596
+
597
+ .steam-grid-card {
598
+ background: var(--bg-topbar, #0d121a);
599
+ border-radius: 4px;
600
+ overflow: hidden;
601
+ display: flex;
602
+ flex-direction: column;
603
+ transition: transform 0.2s ease, box-shadow 0.2s ease;
604
+ }
605
+
606
+ .steam-grid-card.active-card {
607
+ border: 1px solid var(--accent-steam, #66c0f4);
608
+ box-shadow: 0 4px 16px var(--accent-shadow, rgba(102, 192, 244, 0.25));
609
+ }
610
+
611
+ .steam-grid-card-canvas-box {
612
+ width: 100%;
613
+ aspect-ratio: 600 / 900;
614
+ position: relative;
615
+ background: var(--bg-chip, #101822);
616
+ }
617
+
618
+ .steam-grid-card-canvas-box canvas {
619
+ width: 100%;
620
+ height: 100%;
621
+ object-fit: cover;
622
+ display: block;
623
+ }
624
+
625
+ .steam-grid-card-title {
626
+ padding: 0.4rem 0.5rem;
627
+ font-size: 0.75rem;
628
+ font-weight: 600;
629
+ color: var(--text-color, #c6d4df);
630
+ white-space: nowrap;
631
+ overflow: hidden;
632
+ text-overflow: ellipsis;
633
+ background: transparent;
634
+ border: 1px dashed transparent;
635
+
636
+ &:hover,
637
+ &:focus {
638
+ border-color: var(--accent-steam, #66c0f4);
639
+ background: var(--bg-tab-hover, rgba(255, 255, 255, 0.05));
640
+ outline: none;
641
+ }
642
+ }
643
+
644
+ .steam-assets-grid {
645
+ display: grid;
646
+ grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
647
+ gap: 1.25rem;
648
+ }
649
+
650
+ .steam-asset-item {
651
+ background: var(--bg-mockup, #1b2838);
652
+ border: 1px solid var(--border-mockup, #2a475e);
653
+ border-radius: 6px;
654
+ padding: 1rem;
655
+ display: flex;
656
+ flex-direction: column;
657
+ gap: 0.75rem;
658
+ }
659
+
660
+ .steam-asset-info {
661
+ display: flex;
662
+ align-items: center;
663
+ justify-content: space-between;
664
+ }
665
+
666
+ .steam-asset-title {
667
+ font-size: 0.85rem;
668
+ font-weight: 700;
669
+ color: var(--text-color, #c6d4df);
670
+ }
671
+
672
+ .steam-asset-badge {
673
+ background: var(--bg-topbar, #0d121a);
674
+ color: var(--accent-active, #67c1f5);
675
+ font-size: 0.7rem;
676
+ font-weight: 700;
677
+ padding: 0.15rem 0.4rem;
678
+ border-radius: 3px;
679
+ }
680
+
681
+ .steam-asset-preview-box {
682
+ width: 100%;
683
+ background: var(--bg-chip, #101822);
684
+ border-radius: 4px;
685
+ overflow: hidden;
686
+ display: flex;
687
+ align-items: center;
688
+ justify-content: center;
689
+ padding: 0.5rem;
690
+ box-sizing: border-box;
691
+ }
692
+
693
+ .steam-asset-preview-box canvas {
694
+ max-width: 100%;
695
+ height: auto;
696
+ display: block;
697
+ }
@@ -0,0 +1,23 @@
1
+ export interface SteamCapsuleGeneratorUI extends Record<string, string> {
2
+ uploadTitle: string;
3
+ uploadHint: string;
4
+ chooseFile: string;
5
+ minimumSize: string;
6
+ horizontalFocus: string;
7
+ verticalFocus: string;
8
+ zoomLevel: string;
9
+ resetFocus: string;
10
+ safeZone: string;
11
+ downloadZip: string;
12
+ headerCapsule: string;
13
+ smallCapsule: string;
14
+ mainCapsule: string;
15
+ verticalCapsule: string;
16
+ libraryHero: string;
17
+ communityIcon: string;
18
+ storePreviewTab: string;
19
+ libraryPreviewTab: string;
20
+ allAssetsTab: string;
21
+ toggleSafeZones: string;
22
+ toggleSteamOverlay: string;
23
+ }