hunnid13 commited on
Commit
d5011af
·
verified ·
1 Parent(s): aab676c

vreau sa arate newgen, sa aiba efecte, sa ai mai multe subscribe options cand intri pe giveaway, gen pentru steam, youtube, facebok, instagram, steam page, discord, tiktok, etc... +10 points for each, more chacnes to win giveaways

Browse files
Files changed (2) hide show
  1. README.md +8 -4
  2. index.html +1618 -19
README.md CHANGED
@@ -1,10 +1,14 @@
1
  ---
2
- title: Undefined
3
- emoji: 📊
4
- colorFrom: pink
5
  colorTo: blue
 
6
  sdk: static
7
  pinned: false
 
 
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
1
  ---
2
+ title: undefined
3
+ colorFrom: gray
 
4
  colorTo: blue
5
+ emoji: 🐳
6
  sdk: static
7
  pinned: false
8
+ tags:
9
+ - deepsite-v3
10
  ---
11
 
12
+ # Welcome to your new DeepSite project!
13
+ This project was created with [DeepSite](https://deepsite.hf.co).
14
+
index.html CHANGED
@@ -1,19 +1,1618 @@
1
- <!doctype html>
2
- <html>
3
- <head>
4
- <meta charset="utf-8" />
5
- <meta name="viewport" content="width=device-width" />
6
- <title>My static Space</title>
7
- <link rel="stylesheet" href="style.css" />
8
- </head>
9
- <body>
10
- <div class="card">
11
- <h1>Welcome to your static Space!</h1>
12
- <p>You can modify this app directly by editing <i>index.html</i> in the Files and versions tab.</p>
13
- <p>
14
- Also don't forget to check the
15
- <a href="https://huggingface.co/docs/hub/spaces" target="_blank">Spaces documentation</a>.
16
- </p>
17
- </div>
18
- </body>
19
- </html>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ro">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>RetroPlay Giveaways - Steam Keys & Premii</title>
7
+ <meta name="description" content="Giveaways RetroPlay cu Steam Keys și premii. Îndeplinește task-urile și participă.">
8
+ <style>
9
+ :root {
10
+ --bg-dark: #0a0e1a;
11
+ --bg-card: #111827;
12
+ --bg-card-hover: #1a2332;
13
+ --accent-primary: #6366f1;
14
+ --accent-secondary: #8b5cf6;
15
+ --accent-success: #10b981;
16
+ --accent-warning: #f59e0b;
17
+ --accent-danger: #ef4444;
18
+ --text-primary: #f9fafb;
19
+ --text-secondary: #9ca3af;
20
+ --text-muted: #6b7280;
21
+ --border: rgba(255,255,255,0.08);
22
+ --border-hover: rgba(255,255,255,0.15);
23
+ --shadow-sm: 0 1px 3px rgba(0,0,0,0.3);
24
+ --shadow-md: 0 4px 12px rgba(0,0,0,0.4);
25
+ --shadow-lg: 0 10px 40px rgba(0,0,0,0.5);
26
+ --radius-sm: 8px;
27
+ --radius-md: 12px;
28
+ --radius-lg: 16px;
29
+ --transition: 0.2s cubic-bezier(0.4, 0, 0.2, 1);
30
+ }
31
+
32
+ * {
33
+ margin: 0;
34
+ padding: 0;
35
+ box-sizing: border-box;
36
+ }
37
+
38
+ body {
39
+ font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, Oxygen, Ubuntu, sans-serif;
40
+ background: linear-gradient(135deg, #0a0e1a 0%, #1a1f35 50%, #0f1424 100%);
41
+ background-attachment: fixed;
42
+ color: var(--text-primary);
43
+ min-height: 100vh;
44
+ overflow-x: hidden;
45
+ }
46
+
47
+ /* ===== NAVIGATION ===== */
48
+ .navbar {
49
+ position: sticky;
50
+ top: 0;
51
+ z-index: 100;
52
+ background: rgba(17, 24, 39, 0.8);
53
+ backdrop-filter: blur(20px);
54
+ border-bottom: 1px solid var(--border);
55
+ box-shadow: var(--shadow-md);
56
+ }
57
+
58
+ .nav-container {
59
+ max-width: 1400px;
60
+ margin: 0 auto;
61
+ padding: 1rem 1.5rem;
62
+ display: flex;
63
+ align-items: center;
64
+ gap: 2rem;
65
+ }
66
+
67
+ .nav-logo {
68
+ display: flex;
69
+ align-items: center;
70
+ gap: 0.75rem;
71
+ text-decoration: none;
72
+ color: var(--text-primary);
73
+ }
74
+
75
+ .nav-logo img {
76
+ width: 40px;
77
+ height: 40px;
78
+ border-radius: var(--radius-sm);
79
+ border: 1px solid var(--border);
80
+ }
81
+
82
+ .nav-logo-text h1 {
83
+ font-size: 1.25rem;
84
+ font-weight: 800;
85
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
86
+ -webkit-background-clip: text;
87
+ -webkit-text-fill-color: transparent;
88
+ }
89
+
90
+ .nav-logo-text p {
91
+ font-size: 0.75rem;
92
+ color: var(--text-muted);
93
+ }
94
+
95
+ .nav-links {
96
+ display: flex;
97
+ gap: 0.5rem;
98
+ flex: 1;
99
+ }
100
+
101
+ .nav-link {
102
+ padding: 0.5rem 1rem;
103
+ border-radius: var(--radius-sm);
104
+ color: var(--text-secondary);
105
+ text-decoration: none;
106
+ font-weight: 600;
107
+ font-size: 0.9rem;
108
+ transition: all var(--transition);
109
+ position: relative;
110
+ }
111
+
112
+ .nav-link:hover {
113
+ color: var(--text-primary);
114
+ background: rgba(255,255,255,0.05);
115
+ }
116
+
117
+ .nav-link.active {
118
+ color: var(--accent-primary);
119
+ background: rgba(99,102,241,0.1);
120
+ }
121
+
122
+ .nav-actions {
123
+ display: flex;
124
+ gap: 0.75rem;
125
+ align-items: center;
126
+ }
127
+
128
+ .btn-nav {
129
+ padding: 0.6rem 1.25rem;
130
+ border-radius: var(--radius-sm);
131
+ font-weight: 600;
132
+ font-size: 0.9rem;
133
+ cursor: pointer;
134
+ border: none;
135
+ transition: all var(--transition);
136
+ display: inline-flex;
137
+ align-items: center;
138
+ gap: 0.5rem;
139
+ text-decoration: none;
140
+ }
141
+
142
+ .btn-primary {
143
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
144
+ color: white;
145
+ box-shadow: 0 4px 12px rgba(99,102,241,0.3);
146
+ }
147
+
148
+ .btn-primary:hover {
149
+ transform: translateY(-2px);
150
+ box-shadow: 0 6px 20px rgba(99,102,241,0.4);
151
+ }
152
+
153
+ .btn-secondary {
154
+ background: var(--bg-card);
155
+ color: var(--text-primary);
156
+ border: 1px solid var(--border);
157
+ }
158
+
159
+ .btn-secondary:hover {
160
+ background: var(--bg-card-hover);
161
+ border-color: var(--border-hover);
162
+ }
163
+
164
+ /* ===== MAIN CONTENT ===== */
165
+ .container {
166
+ max-width: 1400px;
167
+ margin: 0 auto;
168
+ padding: 2rem 1.5rem;
169
+ }
170
+
171
+ /* ===== HERO SECTION ===== */
172
+ .hero {
173
+ padding: 3rem 0;
174
+ text-align: center;
175
+ position: relative;
176
+ overflow: hidden;
177
+ }
178
+
179
+ .hero::before {
180
+ content: '';
181
+ position: absolute;
182
+ top: -50%;
183
+ left: -50%;
184
+ width: 200%;
185
+ height: 200%;
186
+ background: radial-gradient(circle, rgba(99,102,241,0.1) 0%, transparent 70%);
187
+ animation: pulse 15s ease-in-out infinite;
188
+ }
189
+
190
+ @keyframes pulse {
191
+ 0%, 100% { transform: scale(1); opacity: 0.3; }
192
+ 50% { transform: scale(1.2); opacity: 0.5; }
193
+ }
194
+
195
+ .hero-content {
196
+ position: relative;
197
+ z-index: 1;
198
+ }
199
+
200
+ .hero h2 {
201
+ font-size: 3rem;
202
+ font-weight: 900;
203
+ margin-bottom: 1rem;
204
+ background: linear-gradient(135deg, #fff, #a5b4fc);
205
+ -webkit-background-clip: text;
206
+ -webkit-text-fill-color: transparent;
207
+ }
208
+
209
+ .hero p {
210
+ font-size: 1.25rem;
211
+ color: var(--text-secondary);
212
+ max-width: 600px;
213
+ margin: 0 auto 2rem;
214
+ }
215
+
216
+ .stats {
217
+ display: flex;
218
+ gap: 2rem;
219
+ justify-content: center;
220
+ flex-wrap: wrap;
221
+ }
222
+
223
+ .stat-item {
224
+ background: var(--bg-card);
225
+ border: 1px solid var(--border);
226
+ border-radius: var(--radius-md);
227
+ padding: 1.5rem 2rem;
228
+ min-width: 150px;
229
+ transition: all var(--transition);
230
+ }
231
+
232
+ .stat-item:hover {
233
+ transform: translateY(-4px);
234
+ border-color: var(--border-hover);
235
+ box-shadow: var(--shadow-lg);
236
+ }
237
+
238
+ .stat-value {
239
+ font-size: 2rem;
240
+ font-weight: 900;
241
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
242
+ -webkit-background-clip: text;
243
+ -webkit-text-fill-color: transparent;
244
+ }
245
+
246
+ .stat-label {
247
+ color: var(--text-muted);
248
+ font-size: 0.9rem;
249
+ margin-top: 0.25rem;
250
+ }
251
+
252
+ /* ===== FILTERS ===== */
253
+ .filters {
254
+ background: var(--bg-card);
255
+ border: 1px solid var(--border);
256
+ border-radius: var(--radius-lg);
257
+ padding: 1.5rem;
258
+ margin-bottom: 2rem;
259
+ box-shadow: var(--shadow-md);
260
+ }
261
+
262
+ .filter-group {
263
+ margin-bottom: 1.5rem;
264
+ }
265
+
266
+ .filter-group:last-child {
267
+ margin-bottom: 0;
268
+ }
269
+
270
+ .filter-label {
271
+ font-weight: 700;
272
+ font-size: 0.9rem;
273
+ color: var(--text-secondary);
274
+ margin-bottom: 0.75rem;
275
+ display: block;
276
+ text-transform: uppercase;
277
+ letter-spacing: 0.5px;
278
+ }
279
+
280
+ .filter-options {
281
+ display: flex;
282
+ gap: 0.5rem;
283
+ flex-wrap: wrap;
284
+ }
285
+
286
+ .filter-chip {
287
+ padding: 0.5rem 1rem;
288
+ border-radius: var(--radius-sm);
289
+ background: rgba(255,255,255,0.05);
290
+ border: 1px solid var(--border);
291
+ color: var(--text-secondary);
292
+ cursor: pointer;
293
+ transition: all var(--transition);
294
+ font-size: 0.9rem;
295
+ font-weight: 600;
296
+ display: inline-flex;
297
+ align-items: center;
298
+ gap: 0.5rem;
299
+ }
300
+
301
+ .filter-chip:hover {
302
+ background: rgba(255,255,255,0.08);
303
+ border-color: var(--border-hover);
304
+ color: var(--text-primary);
305
+ }
306
+
307
+ .filter-chip.active {
308
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
309
+ border-color: transparent;
310
+ color: white;
311
+ box-shadow: 0 4px 12px rgba(99,102,241,0.3);
312
+ }
313
+
314
+ .platform-icon {
315
+ width: 18px;
316
+ height: 18px;
317
+ object-fit: contain;
318
+ }
319
+
320
+ .search-box {
321
+ position: relative;
322
+ width: 100%;
323
+ max-width: 400px;
324
+ }
325
+
326
+ .search-input {
327
+ width: 100%;
328
+ padding: 0.75rem 1rem 0.75rem 2.75rem;
329
+ border-radius: var(--radius-md);
330
+ background: rgba(255,255,255,0.05);
331
+ border: 1px solid var(--border);
332
+ color: var(--text-primary);
333
+ font-size: 0.95rem;
334
+ transition: all var(--transition);
335
+ }
336
+
337
+ .search-input:focus {
338
+ outline: none;
339
+ border-color: var(--accent-primary);
340
+ background: rgba(255,255,255,0.08);
341
+ box-shadow: 0 0 0 3px rgba(99,102,241,0.1);
342
+ }
343
+
344
+ .search-icon {
345
+ position: absolute;
346
+ left: 1rem;
347
+ top: 50%;
348
+ transform: translateY(-50%);
349
+ color: var(--text-muted);
350
+ pointer-events: none;
351
+ }
352
+
353
+ /* ===== GIVEAWAY GRID ===== */
354
+ .giveaways-grid {
355
+ display: grid;
356
+ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
357
+ gap: 1.5rem;
358
+ margin-top: 2rem;
359
+ }
360
+
361
+ /* ===== GIVEAWAY CARD ===== */
362
+ .giveaway-card {
363
+ background: var(--bg-card);
364
+ border: 1px solid var(--border);
365
+ border-radius: var(--radius-lg);
366
+ overflow: hidden;
367
+ transition: all var(--transition);
368
+ cursor: pointer;
369
+ position: relative;
370
+ box-shadow: var(--shadow-md);
371
+ }
372
+
373
+ .giveaway-card::before {
374
+ content: '';
375
+ position: absolute;
376
+ top: 0;
377
+ left: 0;
378
+ right: 0;
379
+ height: 3px;
380
+ background: linear-gradient(90deg, var(--accent-primary), var(--accent-secondary));
381
+ transform: scaleX(0);
382
+ transition: transform var(--transition);
383
+ }
384
+
385
+ .giveaway-card:hover {
386
+ transform: translateY(-8px);
387
+ border-color: var(--border-hover);
388
+ box-shadow: var(--shadow-lg);
389
+ }
390
+
391
+ .giveaway-card:hover::before {
392
+ transform: scaleX(1);
393
+ }
394
+
395
+ .card-banner {
396
+ position: relative;
397
+ width: 100%;
398
+ aspect-ratio: 16/9;
399
+ overflow: hidden;
400
+ background: linear-gradient(135deg, #1a1f35, #0f1424);
401
+ }
402
+
403
+ .card-banner img {
404
+ width: 100%;
405
+ height: 100%;
406
+ object-fit: cover;
407
+ transition: transform 0.4s ease;
408
+ }
409
+
410
+ .giveaway-card:hover .card-banner img {
411
+ transform: scale(1.1);
412
+ }
413
+
414
+ .card-timer {
415
+ position: absolute;
416
+ bottom: 0.75rem;
417
+ left: 0.75rem;
418
+ right: 0.75rem;
419
+ padding: 0.5rem 1rem;
420
+ border-radius: var(--radius-sm);
421
+ background: rgba(0,0,0,0.8);
422
+ backdrop-filter: blur(10px);
423
+ display: flex;
424
+ align-items: center;
425
+ justify-content: center;
426
+ gap: 0.5rem;
427
+ font-weight: 700;
428
+ font-size: 0.9rem;
429
+ border: 1px solid rgba(255,255,255,0.1);
430
+ }
431
+
432
+ .card-platform {
433
+ position: absolute;
434
+ top: 0.75rem;
435
+ right: 0.75rem;
436
+ width: 36px;
437
+ height: 36px;
438
+ border-radius: var(--radius-sm);
439
+ background: rgba(0,0,0,0.8);
440
+ backdrop-filter: blur(10px);
441
+ display: grid;
442
+ place-items: center;
443
+ border: 1px solid rgba(255,255,255,0.1);
444
+ }
445
+
446
+ .card-platform img {
447
+ width: 20px;
448
+ height: 20px;
449
+ }
450
+
451
+ .card-badge {
452
+ position: absolute;
453
+ top: 0.75rem;
454
+ left: 0.75rem;
455
+ padding: 0.35rem 0.75rem;
456
+ border-radius: var(--radius-sm);
457
+ background: rgba(0,0,0,0.8);
458
+ backdrop-filter: blur(10px);
459
+ font-size: 0.75rem;
460
+ font-weight: 700;
461
+ text-transform: uppercase;
462
+ letter-spacing: 0.5px;
463
+ border: 1px solid rgba(255,255,255,0.1);
464
+ }
465
+
466
+ .badge-new {
467
+ background: linear-gradient(135deg, var(--accent-success), #059669);
468
+ border: none;
469
+ box-shadow: 0 4px 12px rgba(16,185,129,0.3);
470
+ }
471
+
472
+ .card-body {
473
+ padding: 1.25rem;
474
+ }
475
+
476
+ .card-title {
477
+ font-size: 1.25rem;
478
+ font-weight: 800;
479
+ margin-bottom: 0.5rem;
480
+ color: var(--text-primary);
481
+ display: -webkit-box;
482
+ -webkit-line-clamp: 2;
483
+ -webkit-box-orient: vertical;
484
+ overflow: hidden;
485
+ }
486
+
487
+ .card-desc {
488
+ color: var(--text-secondary);
489
+ font-size: 0.9rem;
490
+ line-height: 1.5;
491
+ margin-bottom: 1rem;
492
+ display: -webkit-box;
493
+ -webkit-line-clamp: 2;
494
+ -webkit-box-orient: vertical;
495
+ overflow: hidden;
496
+ }
497
+
498
+ .card-tags {
499
+ display: flex;
500
+ gap: 0.5rem;
501
+ flex-wrap: wrap;
502
+ margin-bottom: 1rem;
503
+ }
504
+
505
+ .tag {
506
+ padding: 0.25rem 0.75rem;
507
+ border-radius: var(--radius-sm);
508
+ font-size: 0.75rem;
509
+ font-weight: 600;
510
+ text-transform: uppercase;
511
+ letter-spacing: 0.3px;
512
+ }
513
+
514
+ .tag-raffle {
515
+ background: rgba(99,102,241,0.2);
516
+ color: #a5b4fc;
517
+ }
518
+
519
+ .tag-aaa {
520
+ background: rgba(245,158,11,0.2);
521
+ color: #fbbf24;
522
+ }
523
+
524
+ .tag-indie {
525
+ background: rgba(16,185,129,0.2);
526
+ color: #6ee7b7;
527
+ }
528
+
529
+ .card-stats {
530
+ display: flex;
531
+ justify-content: space-between;
532
+ padding-top: 1rem;
533
+ border-top: 1px solid var(--border);
534
+ }
535
+
536
+ .card-stat {
537
+ text-align: center;
538
+ }
539
+
540
+ .card-stat-value {
541
+ font-size: 1.25rem;
542
+ font-weight: 800;
543
+ color: var(--accent-primary);
544
+ }
545
+
546
+ .card-stat-label {
547
+ font-size: 0.75rem;
548
+ color: var(--text-muted);
549
+ margin-top: 0.25rem;
550
+ }
551
+
552
+ /* ===== SKELETON LOADER ===== */
553
+ .skeleton {
554
+ background: linear-gradient(90deg, rgba(255,255,255,0.05) 25%, rgba(255,255,255,0.1) 50%, rgba(255,255,255,0.05) 75%);
555
+ background-size: 200% 100%;
556
+ animation: shimmer 1.5s infinite;
557
+ }
558
+
559
+ @keyframes shimmer {
560
+ 0% { background-position: 200% 0; }
561
+ 100% { background-position: -200% 0; }
562
+ }
563
+
564
+ .skeleton-card {
565
+ background: var(--bg-card);
566
+ border: 1px solid var(--border);
567
+ border-radius: var(--radius-lg);
568
+ overflow: hidden;
569
+ }
570
+
571
+ .skeleton-banner {
572
+ width: 100%;
573
+ aspect-ratio: 16/9;
574
+ }
575
+
576
+ .skeleton-body {
577
+ padding: 1.25rem;
578
+ }
579
+
580
+ .skeleton-title {
581
+ height: 24px;
582
+ border-radius: 4px;
583
+ margin-bottom: 0.75rem;
584
+ width: 80%;
585
+ }
586
+
587
+ .skeleton-text {
588
+ height: 16px;
589
+ border-radius: 4px;
590
+ margin-bottom: 0.5rem;
591
+ }
592
+
593
+ /* ===== MODAL ===== */
594
+ .modal {
595
+ position: fixed;
596
+ inset: 0;
597
+ background: rgba(0,0,0,0.8);
598
+ backdrop-filter: blur(4px);
599
+ z-index: 1000;
600
+ display: none;
601
+ align-items: center;
602
+ justify-content: center;
603
+ padding: 1rem;
604
+ animation: fadeIn 0.3s ease;
605
+ }
606
+
607
+ .modal.show {
608
+ display: flex;
609
+ }
610
+
611
+ @keyframes fadeIn {
612
+ from { opacity: 0; }
613
+ to { opacity: 1; }
614
+ }
615
+
616
+ .modal-content {
617
+ background: var(--bg-card);
618
+ border: 1px solid var(--border);
619
+ border-radius: var(--radius-lg);
620
+ max-width: 900px;
621
+ width: 100%;
622
+ max-height: 90vh;
623
+ overflow-y: auto;
624
+ box-shadow: var(--shadow-lg);
625
+ animation: slideUp 0.3s ease;
626
+ }
627
+
628
+ @keyframes slideUp {
629
+ from { transform: translateY(20px); opacity: 0; }
630
+ to { transform: translateY(0); opacity: 1; }
631
+ }
632
+
633
+ .modal-header {
634
+ position: sticky;
635
+ top: 0;
636
+ background: var(--bg-card);
637
+ border-bottom: 1px solid var(--border);
638
+ padding: 1.5rem;
639
+ display: flex;
640
+ justify-content: space-between;
641
+ align-items: center;
642
+ z-index: 10;
643
+ }
644
+
645
+ .modal-close {
646
+ width: 36px;
647
+ height: 36px;
648
+ border-radius: var(--radius-sm);
649
+ background: rgba(255,255,255,0.05);
650
+ border: 1px solid var(--border);
651
+ color: var(--text-primary);
652
+ cursor: pointer;
653
+ display: grid;
654
+ place-items: center;
655
+ transition: all var(--transition);
656
+ }
657
+
658
+ .modal-close:hover {
659
+ background: rgba(255,255,255,0.1);
660
+ border-color: var(--border-hover);
661
+ }
662
+
663
+ .modal-body {
664
+ padding: 1.5rem;
665
+ }
666
+
667
+ /* ===== LOGIN PAGE ===== */
668
+ .login-container {
669
+ min-height: 100vh;
670
+ display: flex;
671
+ align-items: center;
672
+ justify-content: center;
673
+ padding: 2rem;
674
+ }
675
+
676
+ .login-box {
677
+ background: var(--bg-card);
678
+ border: 1px solid var(--border);
679
+ border-radius: var(--radius-lg);
680
+ padding: 3rem;
681
+ max-width: 500px;
682
+ width: 100%;
683
+ box-shadow: var(--shadow-lg);
684
+ }
685
+
686
+ .login-header {
687
+ text-align: center;
688
+ margin-bottom: 2rem;
689
+ }
690
+
691
+ .login-header h2 {
692
+ font-size: 2rem;
693
+ font-weight: 900;
694
+ margin-bottom: 0.5rem;
695
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
696
+ -webkit-background-clip: text;
697
+ -webkit-text-fill-color: transparent;
698
+ }
699
+
700
+ .login-header p {
701
+ color: var(--text-secondary);
702
+ }
703
+
704
+ .form-group {
705
+ margin-bottom: 1.5rem;
706
+ }
707
+
708
+ .form-label {
709
+ display: block;
710
+ margin-bottom: 0.5rem;
711
+ font-weight: 600;
712
+ color: var(--text-secondary);
713
+ }
714
+
715
+ .form-input {
716
+ width: 100%;
717
+ padding: 0.75rem 1rem;
718
+ border-radius: var(--radius-sm);
719
+ background: rgba(255,255,255,0.05);
720
+ border: 1px solid var(--border);
721
+ color: var(--text-primary);
722
+ font-size: 1rem;
723
+ transition: all var(--transition);
724
+ }
725
+
726
+ .form-input:focus {
727
+ outline: none;
728
+ border-color: var(--accent-primary);
729
+ background: rgba(255,255,255,0.08);
730
+ box-shadow: 0 0 0 3px rgba(99,102,241,0.1);
731
+ }
732
+
733
+ .btn-login-submit {
734
+ width: 100%;
735
+ padding: 1rem;
736
+ border-radius: var(--radius-md);
737
+ background: linear-gradient(135deg, var(--accent-primary), var(--accent-secondary));
738
+ color: white;
739
+ border: none;
740
+ font-weight: 700;
741
+ font-size: 1rem;
742
+ cursor: pointer;
743
+ transition: all var(--transition);
744
+ margin-top: 1rem;
745
+ }
746
+
747
+ .btn-login-submit:hover {
748
+ transform: translateY(-2px);
749
+ box-shadow: 0 6px 20px rgba(99,102,241,0.4);
750
+ }
751
+
752
+ .divider {
753
+ display: flex;
754
+ align-items: center;
755
+ gap: 1rem;
756
+ margin: 2rem 0;
757
+ color: var(--text-muted);
758
+ font-size: 0.9rem;
759
+ }
760
+
761
+ .divider::before,
762
+ .divider::after {
763
+ content: '';
764
+ flex: 1;
765
+ height: 1px;
766
+ background: var(--border);
767
+ }
768
+
769
+ .social-login {
770
+ display: grid;
771
+ grid-template-columns: repeat(2, 1fr);
772
+ gap: 0.75rem;
773
+ }
774
+
775
+ .btn-social {
776
+ padding: 0.75rem;
777
+ border-radius: var(--radius-sm);
778
+ background: rgba(255,255,255,0.05);
779
+ border: 1px solid var(--border);
780
+ color: var(--text-primary);
781
+ font-weight: 600;
782
+ cursor: pointer;
783
+ transition: all var(--transition);
784
+ display: flex;
785
+ align-items: center;
786
+ justify-content: center;
787
+ gap: 0.5rem;
788
+ }
789
+
790
+ .btn-social:hover {
791
+ background: rgba(255,255,255,0.1);
792
+ border-color: var(--border-hover);
793
+ }
794
+
795
+ /* ===== RESPONSIVE ===== */
796
+ @media (max-width: 768px) {
797
+ .nav-links {
798
+ display: none;
799
+ }
800
+
801
+ .hero h2 {
802
+ font-size: 2rem;
803
+ }
804
+
805
+ .giveaways-grid {
806
+ grid-template-columns: 1fr;
807
+ }
808
+
809
+ .filter-options {
810
+ justify-content: center;
811
+ }
812
+ }
813
+
814
+ /* ===== UTILITIES ===== */
815
+ .hidden {
816
+ display: none !important;
817
+ }
818
+
819
+ .loading {
820
+ text-align: center;
821
+ padding: 3rem;
822
+ color: var(--text-secondary);
823
+ }
824
+ </style>
825
+ </head>
826
+ <body>
827
+ <!-- NAVIGATION -->
828
+ <nav class="navbar">
829
+ <div class="nav-container">
830
+ <a href="#" class="nav-logo">
831
+ <img src="https://linktree.retroplay.ro/images/logo-square.png" alt="RetroPlay">
832
+ <div class="nav-logo-text">
833
+ <h1>RetroPlay</h1>
834
+ <p>Giveaways</p>
835
+ </div>
836
+ </a>
837
+
838
+ <div class="nav-links">
839
+ <a href="#" class="nav-link active" data-page="home">🎮 Giveaways</a>
840
+ <a href="#" class="nav-link" data-page="my-entries">📝 My Entries</a>
841
+ <a href="#" class="nav-link" data-page="winners">🏆 Winners</a>
842
+ </div>
843
+
844
+ <div class="nav-actions">
845
+ <button class="btn-nav btn-secondary" id="btnUserMenu">
846
+ <span>👤</span>
847
+ <span id="userName">Login</span>
848
+ </button>
849
+ </div>
850
+ </div>
851
+ </nav>
852
+
853
+ <!-- MAIN CONTENT -->
854
+ <main class="container">
855
+ <!-- HERO SECTION -->
856
+ <section class="hero">
857
+ <div class="hero-content">
858
+ <h2>🎁 Premii Gratuite</h2>
859
+ <p>Participă la giveaway-uri și câștigă jocuri pentru platformele tale favorite</p>
860
+
861
+ <div class="stats">
862
+ <div class="stat-item">
863
+ <div class="stat-value" id="statActive">47</div>
864
+ <div class="stat-label">Active Acum</div>
865
+ </div>
866
+ <div class="stat-item">
867
+ <div class="stat-value" id="statKeys">12,450</div>
868
+ <div class="stat-label">Chei Disponibile</div>
869
+ </div>
870
+ <div class="stat-item">
871
+ <div class="stat-value" id="statUsers">8,923</div>
872
+ <div class="stat-label">Participanți</div>
873
+ </div>
874
+ </div>
875
+ </div>
876
+ </section>
877
+
878
+ <!-- FILTERS -->
879
+ <section class="filters">
880
+ <div class="filter-group">
881
+ <label class="filter-label">🔍 Caută</label>
882
+ <div class="search-box">
883
+ <span class="search-icon">🔍</span>
884
+ <input type="text" class="search-input" id="searchInput" placeholder="Caută jocuri...">
885
+ </div>
886
+ </div>
887
+
888
+ <div class="filter-group">
889
+ <label class="filter-label">🎮 Platformă</label>
890
+ <div class="filter-options" id="platformFilters">
891
+ <button class="filter-chip active" data-filter="all">
892
+ <span>✨</span>
893
+ Toate
894
+ </button>
895
+ <button class="filter-chip" data-filter="steam">
896
+ <img src="https://store.steampowered.com/favicon.ico" alt="Steam" class="platform-icon">
897
+ Steam
898
+ </button>
899
+ <button class="filter-chip" data-filter="epic">
900
+ <span>🎯</span>
901
+ Epic Games
902
+ </button>
903
+ <button class="filter-chip" data-filter="gog">
904
+ <span>🌟</span>
905
+ GOG
906
+ </button>
907
+ <button class="filter-chip" data-filter="xbox">
908
+ <span>🎮</span>
909
+ Xbox
910
+ </button>
911
+ <button class="filter-chip" data-filter="playstation">
912
+ <span>🎮</span>
913
+ PlayStation
914
+ </button>
915
+ <button class="filter-chip" data-filter="nintendo">
916
+ <span>🎮</span>
917
+ Nintendo
918
+ </button>
919
+ </div>
920
+ </div>
921
+
922
+ <div class="filter-group">
923
+ <label class="filter-label">🏷️ Categorie</label>
924
+ <div class="filter-options" id="categoryFilters">
925
+ <button class="filter-chip active" data-category="all">Toate</button>
926
+ <button class="filter-chip" data-category="raffle">🎲 Raffle</button>
927
+ <button class="filter-chip" data-category="aaa">⭐ AAA</button>
928
+ <button class="filter-chip" data-category="indie">🎨 Indie</button>
929
+ <button class="filter-chip" data-category="new">✨ Noi</button>
930
+ </div>
931
+ </div>
932
+
933
+ <div class="filter-group">
934
+ <label class="filter-label">⏱️ Sortare</label>
935
+ <div class="filter-options" id="sortFilters">
936
+ <button class="filter-chip active" data-sort="newest">Cele mai noi</button>
937
+ <button class="filter-chip" data-sort="ending">Se termină curând</button>
938
+ <button class="filter-chip" data-sort="popular">Populare</button>
939
+ <button class="filter-chip" data-sort="keys">Cele mai multe chei</button>
940
+ </div>
941
+ </div>
942
+ </section>
943
+
944
+ <!-- GIVEAWAYS GRID -->
945
+ <section class="giveaways-grid" id="giveawaysGrid">
946
+ <!-- Cards will be generated here -->
947
+ </section>
948
+
949
+ <!-- LOADING STATE -->
950
+ <div class="loading hidden" id="loadingState">
951
+ <p>Se încarcă giveaway-urile...</p>
952
+ </div>
953
+ </main>
954
+
955
+ <!-- MODAL -->
956
+ <div class="modal" id="giveawayModal">
957
+ <div class="modal-content">
958
+ <div class="modal-header">
959
+ <h3 id="modalTitle">Giveaway Details</h3>
960
+ <button class="modal-close" id="modalClose">✕</button>
961
+ </div>
962
+ <div class="modal-body" id="modalBody">
963
+ <!-- Modal content will be injected here -->
964
+ </div>
965
+ </div>
966
+ </div>
967
+
968
+ <!-- LOGIN MODAL -->
969
+ <div class="modal" id="loginModal">
970
+ <div class="modal-content" style="max-width: 500px;">
971
+ <div class="modal-header">
972
+ <h3>Autentificare</h3>
973
+ <button class="modal-close" id="loginModalClose">✕</button>
974
+ </div>
975
+ <div class="modal-body">
976
+ <div class="login-box" style="padding: 0; border: none; box-shadow: none;">
977
+ <div class="login-header">
978
+ <h2>Bun venit!</h2>
979
+ <p>Conectează-te pentru a participa la giveaway-uri</p>
980
+ </div>
981
+
982
+ <form id="loginForm">
983
+ <div class="form-group">
984
+ <label class="form-label">Email</label>
985
+ <input type="email" class="form-input" id="loginEmail" placeholder="email@exemplu.ro" required>
986
+ </div>
987
+
988
+ <div class="form-group">
989
+ <label class="form-label">Parolă</label>
990
+ <input type="password" class="form-input" id="loginPassword" placeholder="••••••••" required>
991
+ </div>
992
+
993
+ <button type="submit" class="btn-login-submit">Intră în cont</button>
994
+ </form>
995
+
996
+ <div class="divider">sau continuă cu</div>
997
+
998
+ <div class="social-login">
999
+ <button class="btn-social" data-provider="steam">
1000
+ <img src="https://store.steampowered.com/favicon.ico" alt="" style="width:18px;height:18px;">
1001
+ Steam
1002
+ </button>
1003
+ <button class="btn-social" data-provider="google">
1004
+ <span>G</span>
1005
+ Google
1006
+ </button>
1007
+ <button class="btn-social" data-provider="discord">
1008
+ <span>💬</span>
1009
+ Discord
1010
+ </button>
1011
+ <button class="btn-social" data-provider="facebook">
1012
+ <span>f</span>
1013
+ Facebook
1014
+ </button>
1015
+ </div>
1016
+ </div>
1017
+ </div>
1018
+ </div>
1019
+ </div>
1020
+
1021
+ <script>
1022
+ // ===== DATA =====
1023
+ const giveawaysData = [
1024
+ {
1025
+ id: 1,
1026
+ title: "Cyberpunk 2077: Ultimate Edition",
1027
+ platform: "steam",
1028
+ image: "https://images.unsplash.com/photo-1542751371-adc38448a05e?w=800&q=80",
1029
+ description: "Aventură open-world în Night City cu grafica îmbunătățită și toate DLC-urile incluse.",
1030
+ participants: 15420,
1031
+ keys: 500,
1032
+ timeLeft: 345600,
1033
+ tags: ["raffle", "aaa"],
1034
+ genres: ["RPG", "Action", "Open World"],
1035
+ isNew: true,
1036
+ requirements: ["Follow pe Steam", "Join Discord", "Like pe Facebook"]
1037
+ },
1038
+ {
1039
+ id: 2,
1040
+ title: "Hollow Knight: Silksong",
1041
+ platform: "steam",
1042
+ image: "https://images.unsplash.com/photo-1511512578047-dfb367046420?w=800&q=80",
1043
+ description: "Secvența mult așteptată a jocului metroidvania aclamat critic.",
1044
+ participants: 8923,
1045
+ keys: 1000,
1046
+ timeLeft: 172800,
1047
+ tags: ["raffle", "indie"],
1048
+ genres: ["Metroidvania", "Platformer", "Action"],
1049
+ isNew: true,
1050
+ requirements: ["Wishlist pe Steam", "Follow pe Twitter"]
1051
+ },
1052
+ {
1053
+ id: 3,
1054
+ title: "Starfield: Digital Premium",
1055
+ platform: "xbox",
1056
+ image: "https://images.unsplash.com/photo-1614732414444-096e5f1122d5?w=800&q=80",
1057
+ description: "Explorează galaxia în noul RPG epic de la Bethesda Game Studios.",
1058
+ participants: 12156,
1059
+ keys: 300,
1060
+ timeLeft: 518400,
1061
+ tags: ["raffle", "aaa"],
1062
+ genres: ["RPG", "Space", "Adventure"],
1063
+ isNew: false,
1064
+ requirements: ["Join Discord", "Subscribe YouTube", "Follow pe Instagram"]
1065
+ },
1066
+ {
1067
+ id: 4,
1068
+ title: "Hades II: Early Access",
1069
+ platform: "epic",
1070
+ image: "https://images.unsplash.com/photo-1509198397868-475647b2a1e5?w=800&q=80",
1071
+ description: "Roguelike sequel cu combat dinamic și poveste captivantă din mitologia greacă.",
1072
+ participants: 9234,
1073
+ keys: 750,
1074
+ timeLeft: 259200,
1075
+ tags: ["raffle", "indie"],
1076
+ genres: ["Roguelike", "Action", "Mythology"],
1077
+ isNew: true,
1078
+ requirements: ["Follow pe Epic", "Join Discord"]
1079
+ },
1080
+ {
1081
+ id: 5,
1082
+ title: "The Witcher 3: Complete Edition",
1083
+ platform: "gog",
1084
+ image: "https://images.unsplash.com/photo-1578632767115-351597cf2477?w=800&q=80",
1085
+ description: "RPG legendar cu toate expansiunile și upgrade-uri next-gen incluse.",
1086
+ participants: 18567,
1087
+ keys: 2000,
1088
+ timeLeft: 432000,
1089
+ tags: ["raffle", "aaa"],
1090
+ genres: ["RPG", "Fantasy", "Open World"],
1091
+ isNew: false,
1092
+ requirements: ["Follow pe GOG", "Like pe Facebook", "Subscribe newsletter"]
1093
+ },
1094
+ {
1095
+ id: 6,
1096
+ title: "Ghost of Tsushima: Director's Cut",
1097
+ platform: "playstation",
1098
+ image: "https://images.unsplash.com/photo-1493711662062-fa541adb3fc8?w=800&q=80",
1099
+ description: "Aventură samurai breathtaking în Japonia feudală cu Iki Island expansion.",
1100
+ participants: 11234,
1101
+ keys: 400,
1102
+ timeLeft: 302400,
1103
+ tags: ["raffle", "aaa"],
1104
+ genres: ["Action", "Adventure", "Open World"],
1105
+ isNew: false,
1106
+ requirements: ["Follow PlayStation", "Join Discord", "Share pe Twitter"]
1107
+ },
1108
+ {
1109
+ id: 7,
1110
+ title: "Celeste: Deluxe Edition",
1111
+ platform: "nintendo",
1112
+ image: "https://images.unsplash.com/photo-1550745165-9bc0b252726f?w=800&q=80",
1113
+ description: "Platformer challenging cu poveste emoționantă despre sănătate mentală.",
1114
+ participants: 6789,
1115
+ keys: 1500,
1116
+ timeLeft: 216000,
1117
+ tags: ["raffle", "indie"],
1118
+ genres: ["Platformer", "Pixel Art", "Story Rich"],
1119
+ isNew: false,
1120
+ requirements: ["Follow Nintendo", "Join Discord"]
1121
+ },
1122
+ {
1123
+ id: 8,
1124
+ title: "Baldur's Gate 3: Ultimate",
1125
+ platform: "steam",
1126
+ image: "https://images.unsplash.com/photo-1551103782-8ab07afd45c1?w=800&q=80",
1127
+ description: "RPG bazat pe D&D 5e cu narrative complexe și combat strategic.",
1128
+ participants: 21456,
1129
+ keys: 250,
1130
+ timeLeft: 475200,
1131
+ tags: ["raffle", "aaa"],
1132
+ genres: ["RPG", "Strategy", "Fantasy"],
1133
+ isNew: true,
1134
+ requirements: ["Wishlist Steam", "Follow Larian", "Join Discord", "Share Facebook"]
1135
+ },
1136
+ {
1137
+ id: 9,
1138
+ title: "Stardew Valley: Expanded",
1139
+ platform: "gog",
1140
+ image: "https://images.unsplash.com/photo-1625805866449-3589fe3f71a3?w=800&q=80",
1141
+ description: "Farming simulator relaxant cu multiplayer și conținut nou exclusiv.",
1142
+ participants: 14123,
1143
+ keys: 3000,
1144
+ timeLeft: 388800,
1145
+ tags: ["raffle", "indie"],
1146
+ genres: ["Simulation", "Farming", "RPG"],
1147
+ isNew: false,
1148
+ requirements: ["Follow pe GOG", "Subscribe YouTube"]
1149
+ },
1150
+ {
1151
+ id: 10,
1152
+ title: "Elden Ring: Shadow of the Erdtree",
1153
+ platform: "steam",
1154
+ image: "https://images.unsplash.com/photo-1538481199705-c710c4e965fc?w=800&q=80",
1155
+ description: "DLC masiv pentru soulslike epic cu noi zone și boss fights legendare.",
1156
+ participants: 19876,
1157
+ keys: 350,
1158
+ timeLeft: 561600,
1159
+ tags: ["raffle", "aaa"],
1160
+ genres: ["Souls-like", "Action RPG", "Dark Fantasy"],
1161
+ isNew: true,
1162
+ requirements: ["Wishlist Steam", "Join Discord", "Follow Twitter", "Like Facebook"]
1163
+ },
1164
+ {
1165
+ id: 11,
1166
+ title: "Dead Cells: Return to Castlevania",
1167
+ platform: "epic",
1168
+ image: "https://images.unsplash.com/photo-1552820728-8b83bb6b773f?w=800&q=80",
1169
+ description: "Roguelike metroidvania cu combat fluid și crossover Castlevania.",
1170
+ participants: 7654,
1171
+ keys: 1200,
1172
+ timeLeft: 194400,
1173
+ tags: ["raffle", "indie"],
1174
+ genres: ["Roguelike", "Metroidvania", "Action"],
1175
+ isNew: false,
1176
+ requirements: ["Follow Epic", "Join Discord"]
1177
+ },
1178
+ {
1179
+ id: 12,
1180
+ title: "Forza Horizon 5: Premium",
1181
+ platform: "xbox",
1182
+ image: "https://images.unsplash.com/photo-1492144534655-ae79c964c9d7?w=800&q=80",
1183
+ description: "Racing open-world spectaculos în Mexic cu sute de mașini.",
1184
+ participants: 13245,
1185
+ keys: 600,
1186
+ timeLeft: 324000,
1187
+ tags: ["raffle", "aaa"],
1188
+ genres: ["Racing", "Open World", "Arcade"],
1189
+ isNew: false,
1190
+ requirements: ["Follow Xbox", "Join Discord", "Subscribe Game Pass"]
1191
+ }
1192
+ ];
1193
+
1194
+ // ===== STATE =====
1195
+ let currentFilters = {
1196
+ platform: 'all',
1197
+ category: 'all',
1198
+ sort: 'newest',
1199
+ search: ''
1200
+ };
1201
+
1202
+ let currentUser = null;
1203
+
1204
+ // ===== INIT =====
1205
+ document.addEventListener('DOMContentLoaded', () => {
1206
+ initApp();
1207
+ renderGiveaways();
1208
+ startTimers();
1209
+ setupEventListeners();
1210
+ checkAuth();
1211
+ });
1212
+
1213
+ function initApp() {
1214
+ // Check if user is logged in
1215
+ const savedUser = localStorage.getItem('retroplay_user');
1216
+ if (savedUser) {
1217
+ currentUser = JSON.parse(savedUser);
1218
+ updateUserUI();
1219
+ }
1220
+ }
1221
+
1222
+ function checkAuth() {
1223
+ if (currentUser) {
1224
+ document.getElementById('userName').textContent = currentUser.name;
1225
+ }
1226
+ }
1227
+
1228
+ function updateUserUI() {
1229
+ if (currentUser) {
1230
+ document.getElementById('userName').textContent = currentUser.name;
1231
+ }
1232
+ }
1233
+
1234
+ // ===== RENDER FUNCTIONS =====
1235
+ function renderGiveaways() {
1236
+ const grid = document.getElementById('giveawaysGrid');
1237
+ const loading = document.getElementById('loadingState');
1238
+
1239
+ loading.classList.remove('hidden');
1240
+ grid.innerHTML = '';
1241
+
1242
+ // Simulate loading
1243
+ setTimeout(() => {
1244
+ loading.classList.add('hidden');
1245
+
1246
+ let filtered = filterGiveaways(giveawaysData);
1247
+
1248
+ if (filtered.length === 0) {
1249
+ grid.innerHTML = '<div class="loading">Nu s-au găsit giveaway-uri</div>';
1250
+ return;
1251
+ }
1252
+
1253
+ filtered.forEach(giveaway => {
1254
+ const card = createGiveawayCard(giveaway);
1255
+ grid.appendChild(card);
1256
+ });
1257
+ }, 500);
1258
+ }
1259
+
1260
+ function filterGiveaways(data) {
1261
+ let filtered = [...data];
1262
+
1263
+ // Platform filter
1264
+ if (currentFilters.platform !== 'all') {
1265
+ filtered = filtered.filter(g => g.platform === currentFilters.platform);
1266
+ }
1267
+
1268
+ // Category filter
1269
+ if (currentFilters.category !== 'all') {
1270
+ if (currentFilters.category === 'new') {
1271
+ filtered = filtered.filter(g => g.isNew);
1272
+ } else {
1273
+ filtered = filtered.filter(g => g.tags.includes(currentFilters.category));
1274
+ }
1275
+ }
1276
+
1277
+ // Search filter
1278
+ if (currentFilters.search) {
1279
+ const search = currentFilters.search.toLowerCase();
1280
+ filtered = filtered.filter(g =>
1281
+ g.title.toLowerCase().includes(search) ||
1282
+ g.description.toLowerCase().includes(search) ||
1283
+ g.genres.some(genre => genre.toLowerCase().includes(search))
1284
+ );
1285
+ }
1286
+
1287
+ // Sort
1288
+ switch (currentFilters.sort) {
1289
+ case 'newest':
1290
+ filtered.sort((a, b) => b.id - a.id);
1291
+ break;
1292
+ case 'ending':
1293
+ filtered.sort((a, b) => a.timeLeft - b.timeLeft);
1294
+ break;
1295
+ case 'popular':
1296
+ filtered.sort((a, b) => b.participants - a.participants);
1297
+ break;
1298
+ case 'keys':
1299
+ filtered.sort((a, b) => b.keys - a.keys);
1300
+ break;
1301
+ }
1302
+
1303
+ return filtered;
1304
+ }
1305
+
1306
+ function createGiveawayCard(giveaway) {
1307
+ const card = document.createElement('article');
1308
+ card.className = 'giveaway-card';
1309
+ card.dataset.id = giveaway.id;
1310
+
1311
+ const platformIcons = {
1312
+ steam: 'https://store.steampowered.com/favicon.ico',
1313
+ epic: '🎯',
1314
+ gog: '🌟',
1315
+ xbox: '🎮',
1316
+ playstation: '🎮',
1317
+ nintendo: '🎮'
1318
+ };
1319
+
1320
+ const platformIcon = platformIcons[giveaway.platform] || '🎮';
1321
+ const isPlatformImage = giveaway.platform === 'steam';
1322
+
1323
+ card.innerHTML = `
1324
+ <div class="card-banner">
1325
+ <img src="${giveaway.image}" alt="${giveaway.title}">
1326
+ ${giveaway.isNew ? '<div class="card-badge badge-new">✨ NOU</div>' : ''}
1327
+ <div class="card-platform">
1328
+ ${isPlatformImage ? `<img src="${platformIcon}" alt="${giveaway.platform}">` : `<span>${platformIcon}</span>`}
1329
+ </div>
1330
+ <div class="card-timer" data-time="${giveaway.timeLeft}">
1331
+ <span>⏱️</span>
1332
+ <span class="timer-text">${formatTime(giveaway.timeLeft)}</span>
1333
+ </div>
1334
+ </div>
1335
+ <div class="card-body">
1336
+ <h3 class="card-title">${giveaway.title}</h3>
1337
+ <p class="card-desc">${giveaway.description}</p>
1338
+ <div class="card-tags">
1339
+ ${giveaway.tags.map(tag => `<span class="tag tag-${tag}">${tag.toUpperCase()}</span>`).join('')}
1340
+ </div>
1341
+ <div class="card-stats">
1342
+ <div class="card-stat">
1343
+ <div class="card-stat-value">${formatNumber(giveaway.participants)}</div>
1344
+ <div class="card-stat-label">Participanți</div>
1345
+ </div>
1346
+ <div class="card-stat">
1347
+ <div class="card-stat-value">${formatNumber(giveaway.keys)}</div>
1348
+ <div class="card-stat-label">Chei</div>
1349
+ </div>
1350
+ </div>
1351
+ </div>
1352
+ `;
1353
+
1354
+ card.addEventListener('click', () => openGiveawayModal(giveaway));
1355
+
1356
+ return card;
1357
+ }
1358
+
1359
+ // ===== MODAL FUNCTIONS =====
1360
+ function openGiveawayModal(giveaway) {
1361
+ const modal = document.getElementById('giveawayModal');
1362
+ const modalTitle = document.getElementById('modalTitle');
1363
+ const modalBody = document.getElementById('modalBody');
1364
+
1365
+ modalTitle.textContent = giveaway.title;
1366
+
1367
+ modalBody.innerHTML = `
1368
+ <div style="margin-bottom: 1.5rem;">
1369
+ <img src="${giveaway.image}" alt="${giveaway.title}" style="width:100%; border-radius:var(--radius-md); margin-bottom:1rem;">
1370
+ <p style="color:var(--text-secondary); line-height:1.6; margin-bottom:1rem;">${giveaway.description}</p>
1371
+
1372
+ <div style="display:flex; gap:0.5rem; flex-wrap:wrap; margin-bottom:1rem;">
1373
+ ${giveaway.genres.map(genre => `<span class="tag tag-indie">${genre}</span>`).join('')}
1374
+ </div>
1375
+ <div style="background:rgba(255,255,255,0.05); border-radius:var(--radius-md); padding:1.5rem; margin-bottom:1.5rem;">
1376
+ <h4 style="margin-bottom:1rem; color:var(--accent-primary);">📋 Complete Tasks (+10 points each)</h4>
1377
+ <div style="display:grid; grid-template-columns:repeat(auto-fill, minmax(200px, 1fr)); gap:0.75rem;">
1378
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1379
+ <input type="checkbox" class="task-check" data-task="steam" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1380
+ <span>✅ Follow Steam Page</span>
1381
+ </label>
1382
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1383
+ <input type="checkbox" class="task-check" data-task="youtube" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1384
+ <span>🎥 Subscribe YouTube</span>
1385
+ </label>
1386
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1387
+ <input type="checkbox" class="task-check" data-task="facebook" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1388
+ <span>👍 Like Facebook</span>
1389
+ </label>
1390
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1391
+ <input type="checkbox" class="task-check" data-task="instagram" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1392
+ <span>📸 Follow Instagram</span>
1393
+ </label>
1394
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1395
+ <input type="checkbox" class="task-check" data-task="discord" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1396
+ <span>💬 Join Discord</span>
1397
+ </label>
1398
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1399
+ <input type="checkbox" class="task-check" data-task="tiktok" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1400
+ <span>🎵 Follow TikTok</span>
1401
+ </label>
1402
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1403
+ <input type="checkbox" class="task-check" data-task="twitter" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1404
+ <span>🐦 Follow Twitter</span>
1405
+ </label>
1406
+ <label style="display:flex; align-items:center; gap:0.75rem; cursor:pointer; padding:0.75rem; background:rgba(255,255,255,0.03); border-radius:var(--radius-sm); transition:all var(--transition);" onmouseover="this.style.background='rgba(255,255,255,0.1)', this.style.transform='translateY(-2px)', this.style.boxShadow='0 4px 12px rgba(0,0,0,0.2)'" onmouseout="this.style.background='rgba(255,255,255,0.03)', this.style.transform='none', this.style.boxShadow='none'">
1407
+ <input type="checkbox" class="task-check" data-task="newsletter" style="width:18px; height:18px; cursor:pointer; accent-color:var(--accent-primary);">
1408
+ <span>📩 Subscribe Newsletter</span>
1409
+ </label>
1410
+ </div>
1411
+ <div style="margin-top:1rem; padding:0.75rem; background:rgba(16,185,129,0.1); border-radius:var(--radius-sm); border-left:4px solid var(--accent-success); display:flex; align-items:center; gap:0.75rem;">
1412
+ <span>✨</span>
1413
+ <small style="color:var(--text-secondary);">Each completed task gives you +10 points and increases your chances to win!</small>
1414
+ </div>
1415
+ </div>
1416
+ <button class="btn-primary" id="btnParticipate" style="width:100%; padding:1rem; font-size:1rem; border:none; cursor:pointer; transition:all 0.3s ease; position:relative; overflow:hidden;">
1417
+ <span style="position:relative; z-index:2;">🎁 Participă acum</span>
1418
+ <span style="position:absolute; top:0; left:0; width:100%; height:100%; background:linear-gradient(90deg, rgba(255,255,255,0) 0%, rgba(255,255,255,0.2) 50%, rgba(255,255,255,0) 100%); transform:translateX(-100%); transition:transform 0.6s ease;"></span>
1419
+ </button>
1420
+ <script>
1421
+ document.getElementById('btnParticipate').addEventListener('mouseenter', function() {
1422
+ this.style.transform = 'translateY(-2px)';
1423
+ this.style.boxShadow = '0 8px 24px rgba(99,102,241,0.5)';
1424
+ this.querySelector('span:last-child').style.transform = 'translateX(100%)';
1425
+ });
1426
+ document.getElementById('btnParticipate').addEventListener('mouseleave', function() {
1427
+ this.style.transform = 'none';
1428
+ this.style.boxShadow = 'none';
1429
+ this.querySelector('span:last-child').style.transform = 'translateX(-100%)';
1430
+ });
1431
+ </script>
1432
+ </div>
1433
+ `;
1434
+
1435
+ modal.classList.add('show');
1436
+
1437
+ // Check tasks
1438
+ const btnParticipate = document.getElementById('btnParticipate');
1439
+ const checkboxes = modalBody.querySelectorAll('.task-check');
1440
+ function updateButton() {
1441
+ const checkedCount = Array.from(checkboxes).filter(cb => cb.checked).length;
1442
+ const totalPoints = checkedCount * 10;
1443
+
1444
+ btnParticipate.disabled = checkedCount === 0;
1445
+ btnParticipate.style.opacity = checkedCount > 0 ? '1' : '0.5';
1446
+ btnParticipate.style.cursor = checkedCount > 0 ? 'pointer' : 'not-allowed';
1447
+
1448
+ // Update button text with points
1449
+ const btnText = checkedCount > 0
1450
+ ? `🎁 Participă acum (${totalPoints} Points)`
1451
+ : '🎁 Participă acum';
1452
+ btnParticipate.querySelector('span:first-child').textContent = btnText;
1453
+ }
1454
+ checkboxes.forEach(cb => {
1455
+ cb.addEventListener('change', updateButton);
1456
+ });
1457
+
1458
+ updateButton();
1459
+
1460
+ btnParticipate.addEventListener('click', () => {
1461
+ if (!currentUser) {
1462
+ modal.classList.remove('show');
1463
+ document.getElementById('loginModal').classList.add('show');
1464
+ return;
1465
+ }
1466
+
1467
+ const allChecked = Array.from(checkboxes).every(cb => cb.checked);
1468
+ if (allChecked) {
1469
+ alert(`✅ Felicitări! Ai fost înscris la giveaway-ul "${giveaway.title}"!\n\nÎți vom trimite notificare când sunt anunțați câștigătorii.`);
1470
+ modal.classList.remove('show');
1471
+ }
1472
+ });
1473
+ }
1474
+
1475
+ // ===== EVENT LISTENERS =====
1476
+ function setupEventListeners() {
1477
+ // Modal close buttons
1478
+ document.getElementById('modalClose')?.addEventListener('click', () => {
1479
+ document.getElementById('giveawayModal').classList.remove('show');
1480
+ });
1481
+
1482
+ document.getElementById('loginModalClose')?.addEventListener('click', () => {
1483
+ document.getElementById('loginModal').classList.remove('show');
1484
+ });
1485
+
1486
+ // Close modal on backdrop click
1487
+ document.querySelectorAll('.modal').forEach(modal => {
1488
+ modal.addEventListener('click', (e) => {
1489
+ if (e.target === modal) {
1490
+ modal.classList.remove('show');
1491
+ }
1492
+ });
1493
+ });
1494
+
1495
+ // Platform filters
1496
+ document.querySelectorAll('#platformFilters .filter-chip').forEach(chip => {
1497
+ chip.addEventListener('click', () => {
1498
+ document.querySelectorAll('#platformFilters .filter-chip').forEach(c => c.classList.remove('active'));
1499
+ chip.classList.add('active');
1500
+ currentFilters.platform = chip.dataset.filter;
1501
+ renderGiveaways();
1502
+ });
1503
+ });
1504
+
1505
+ // Category filters
1506
+ document.querySelectorAll('#categoryFilters .filter-chip').forEach(chip => {
1507
+ chip.addEventListener('click', () => {
1508
+ document.querySelectorAll('#categoryFilters .filter-chip').forEach(c => c.classList.remove('active'));
1509
+ chip.classList.add('active');
1510
+ currentFilters.category = chip.dataset.category;
1511
+ renderGiveaways();
1512
+ });
1513
+ });
1514
+
1515
+ // Sort filters
1516
+ document.querySelectorAll('#sortFilters .filter-chip').forEach(chip => {
1517
+ chip.addEventListener('click', () => {
1518
+ document.querySelectorAll('#sortFilters .filter-chip').forEach(c => c.classList.remove('active'));
1519
+ chip.classList.add('active');
1520
+ currentFilters.sort = chip.dataset.sort;
1521
+ renderGiveaways();
1522
+ });
1523
+ });
1524
+
1525
+ // Search
1526
+ const searchInput = document.getElementById('searchInput');
1527
+ let searchTimeout;
1528
+ searchInput?.addEventListener('input', (e) => {
1529
+ clearTimeout(searchTimeout);
1530
+ searchTimeout = setTimeout(() => {
1531
+ currentFilters.search = e.target.value;
1532
+ renderGiveaways();
1533
+ }, 300);
1534
+ });
1535
+
1536
+ // User menu
1537
+ document.getElementById('btnUserMenu')?.addEventListener('click', () => {
1538
+ if (currentUser) {
1539
+ if (confirm('Vrei să te deconectezi?')) {
1540
+ currentUser = null;
1541
+ localStorage.removeItem('retroplay_user');
1542
+ document.getElementById('userName').textContent = 'Login';
1543
+ }
1544
+ } else {
1545
+ document.getElementById('loginModal').classList.add('show');
1546
+ }
1547
+ });
1548
+
1549
+ // Login form
1550
+ document.getElementById('loginForm')?.addEventListener('submit', (e) => {
1551
+ e.preventDefault();
1552
+ const email = document.getElementById('loginEmail').value;
1553
+
1554
+ currentUser = {
1555
+ name: email.split('@')[0],
1556
+ email: email
1557
+ };
1558
+
1559
+ localStorage.setItem('retroplay_user', JSON.stringify(currentUser));
1560
+ updateUserUI();
1561
+ document.getElementById('loginModal').classList.remove('show');
1562
+
1563
+ alert(`Bun venit, ${currentUser.name}! Acum poți participa la giveaway-uri! 🎉`);
1564
+ });
1565
+
1566
+ // Social login
1567
+ document.querySelectorAll('.btn-social').forEach(btn => {
1568
+ btn.addEventListener('click', () => {
1569
+ const provider = btn.dataset.provider;
1570
+ alert(`Demo: Autentificare cu ${provider}\n\nÎn producție, acesta ar redirecta către OAuth.`);
1571
+ });
1572
+ });
1573
+ }
1574
+
1575
+ // ===== TIMER FUNCTIONS =====
1576
+ function startTimers() {
1577
+ setInterval(() => {
1578
+ document.querySelectorAll('.card-timer').forEach(timer => {
1579
+ let timeLeft = parseInt(timer.dataset.time);
1580
+ if (timeLeft > 0) {
1581
+ timeLeft--;
1582
+ timer.dataset.time = timeLeft;
1583
+ const textEl = timer.querySelector('.timer-text');
1584
+ if (textEl) {
1585
+ textEl.textContent = formatTime(timeLeft);
1586
+ }
1587
+
1588
+ // Update color based on time
1589
+ const percentage = timeLeft / 604800; // 7 days
1590
+ if (percentage < 0.1) {
1591
+ timer.style.background = 'rgba(239, 68, 68, 0.9)';
1592
+ } else if (percentage < 0.3) {
1593
+ timer.style.background = 'rgba(245, 158, 11, 0.9)';
1594
+ }
1595
+ }
1596
+ });
1597
+ }, 1000);
1598
+ }
1599
+
1600
+ function formatTime(seconds) {
1601
+ const days = Math.floor(seconds / 86400);
1602
+ const hours = Math.floor((seconds % 86400) / 3600);
1603
+ const minutes = Math.floor((seconds % 3600) / 60);
1604
+
1605
+ if (days > 0) return `${days}z ${hours}h`;
1606
+ if (hours > 0) return `${hours}h ${minutes}m`;
1607
+ return `${minutes}m`;
1608
+ }
1609
+
1610
+ function formatNumber(num) {
1611
+ if (num >= 1000) {
1612
+ return (num / 1000).toFixed(1) + 'k';
1613
+ }
1614
+ return num.toString();
1615
+ }
1616
+ </script>
1617
+ </body>
1618
+ </html>