ProjectGenesis commited on
Commit
6e722c8
·
verified ·
1 Parent(s): db0c97c

Initial DeepSite commit

Browse files
Files changed (2) hide show
  1. README.md +8 -5
  2. index.html +623 -19
README.md CHANGED
@@ -1,10 +1,13 @@
1
  ---
2
- title: Deepsite Project Bvljk
3
- emoji: 🐠
4
  colorFrom: purple
5
- colorTo: gray
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: DeepSite Project
 
3
  colorFrom: purple
4
+ colorTo: yellow
5
  sdk: static
6
+ emoji: 📱
7
+ tags:
8
+ - deepsite-v4
9
  ---
10
 
11
+ # DeepSite Project
12
+
13
+ This project has been created with [DeepSite](https://deepsite.hf.co) AI Vibe Coding.
index.html CHANGED
@@ -1,19 +1,623 @@
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="en">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>Casino Win Animation</title>
7
+ <script src="https://cdn.tailwindcss.com"></script>
8
+ <script src="https://unpkg.com/lucide@latest"></script>
9
+ <style>
10
+ @import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;600;800;900&display=swap');
11
+
12
+ body {
13
+ font-family: 'Inter', sans-serif;
14
+ overflow: hidden;
15
+ background: #0a0a0a;
16
+ }
17
+
18
+ /* Slot Machine Background */
19
+ .slot-background {
20
+ position: absolute;
21
+ inset: 0;
22
+ background: linear-gradient(135deg, #1a1a2e 0%, #16213e 50%, #0f0f23 100%);
23
+ filter: blur(12px) brightness(0.4);
24
+ transform: scale(1.1);
25
+ }
26
+
27
+ .reels-container {
28
+ position: absolute;
29
+ inset: 0;
30
+ display: grid;
31
+ grid-template-columns: repeat(5, 1fr);
32
+ gap: 2rem;
33
+ padding: 4rem;
34
+ opacity: 0.6;
35
+ }
36
+
37
+ .reel {
38
+ background: linear-gradient(180deg, #2a2a4a 0%, #1a1a2e 100%);
39
+ border-radius: 1rem;
40
+ border: 2px solid rgba(255, 215, 0, 0.1);
41
+ display: flex;
42
+ flex-direction: column;
43
+ align-items: center;
44
+ justify-content: space-around;
45
+ padding: 1rem;
46
+ box-shadow: inset 0 0 30px rgba(0,0,0,0.5);
47
+ }
48
+
49
+ .slot-symbol {
50
+ font-size: 3rem;
51
+ filter: drop-shadow(0 0 10px currentColor);
52
+ opacity: 0.8;
53
+ }
54
+
55
+ /* Vignette Overlay */
56
+ .vignette {
57
+ position: absolute;
58
+ inset: 0;
59
+ background: radial-gradient(circle at center, transparent 0%, rgba(0,0,0,0.8) 70%, rgba(0,0,0,0.95) 100%);
60
+ pointer-events: none;
61
+ }
62
+
63
+ /* Win Popup Cards */
64
+ .popup-card {
65
+ position: absolute;
66
+ width: 280px;
67
+ height: 90px;
68
+ background: linear-gradient(135deg, #ffd700 0%, #ffed4e 25%, #ffd700 50%, #ffed4e 75%, #ffd700 100%);
69
+ background-size: 200% 200%;
70
+ border-radius: 16px;
71
+ display: flex;
72
+ align-items: center;
73
+ justify-content: center;
74
+ box-shadow:
75
+ 0 20px 60px rgba(255, 215, 0, 0.4),
76
+ 0 0 0 4px rgba(255, 215, 0, 0.3),
77
+ inset 0 2px 10px rgba(255, 255, 255, 0.5),
78
+ inset 0 -2px 10px rgba(0, 0, 0, 0.1);
79
+ transform-origin: center center;
80
+ opacity: 0;
81
+ transform: scale(0) translateY(50px) rotateX(-45deg);
82
+ }
83
+
84
+ .popup-card::before {
85
+ content: '';
86
+ position: absolute;
87
+ inset: 0;
88
+ border-radius: 16px;
89
+ background: linear-gradient(180deg, rgba(255,255,255,0.4) 0%, transparent 50%, rgba(0,0,0,0.1) 100%);
90
+ pointer-events: none;
91
+ }
92
+
93
+ .popup-card::after {
94
+ content: '';
95
+ position: absolute;
96
+ top: -2px;
97
+ left: -2px;
98
+ right: -2px;
99
+ bottom: -2px;
100
+ border-radius: 18px;
101
+ background: linear-gradient(135deg, #ffd700, #ffed4e, #ffd700);
102
+ z-index: -1;
103
+ filter: blur(8px);
104
+ opacity: 0.6;
105
+ }
106
+
107
+ .popup-text {
108
+ font-size: 1.75rem;
109
+ font-weight: 900;
110
+ color: #1a1a1a;
111
+ text-shadow: 0 1px 2px rgba(255,255,255,0.5);
112
+ letter-spacing: -0.02em;
113
+ }
114
+
115
+ /* Animation Keyframes */
116
+ @keyframes popIn {
117
+ 0% {
118
+ opacity: 0;
119
+ transform: scale(0) translateY(50px) rotateX(-45deg);
120
+ }
121
+ 60% {
122
+ opacity: 1;
123
+ transform: scale(1.1) translateY(-10px) rotateX(5deg);
124
+ }
125
+ 80% {
126
+ transform: scale(0.95) translateY(0) rotateX(-2deg);
127
+ }
128
+ 100% {
129
+ opacity: 1;
130
+ transform: scale(1) translateY(0) rotateX(0deg);
131
+ }
132
+ }
133
+
134
+ @keyframes settle {
135
+ 0%, 100% {
136
+ transform: translateY(0) scale(1);
137
+ }
138
+ }
139
+
140
+ @keyframes shimmer {
141
+ 0% { background-position: -200% center; }
142
+ 100% { background-position: 200% center; }
143
+ }
144
+
145
+ .animate-pop-1 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }
146
+ .animate-pop-2 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.3s forwards; }
147
+ .animate-pop-3 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.6s forwards; }
148
+ .animate-pop-4 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 0.9s forwards; }
149
+ .animate-pop-5 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 1.2s forwards; }
150
+ .animate-pop-6 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 1.5s forwards; }
151
+ .animate-pop-7 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 1.8s forwards; }
152
+ .animate-pop-8 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 2.1s forwards; }
153
+ .animate-pop-9 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 2.4s forwards; }
154
+ .animate-pop-10 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 2.7s forwards; }
155
+ .animate-pop-11 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 3.0s forwards; }
156
+ .animate-pop-12 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 3.3s forwards; }
157
+ .animate-pop-13 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 3.6s forwards; }
158
+ .animate-pop-14 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 3.9s forwards; }
159
+ .animate-pop-15 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 4.2s forwards; }
160
+ .animate-pop-16 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 4.5s forwards; }
161
+ .animate-pop-17 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 4.8s forwards; }
162
+ .animate-pop-18 { animation: popIn 0.6s cubic-bezier(0.34, 1.56, 0.64, 1) 5.1s forwards; }
163
+
164
+ .stack-offset-1 { transform: translateY(-20px) scale(0.98); }
165
+ .stack-offset-2 { transform: translateY(-40px) scale(0.96); }
166
+ .stack-offset-3 { transform: translateY(-60px) scale(0.94); }
167
+ .stack-offset-4 { transform: translateY(-80px) scale(0.92); }
168
+ .stack-offset-5 { transform: translateY(-100px) scale(0.90); }
169
+ .stack-offset-6 { transform: translateY(-120px) scale(0.88); }
170
+ .stack-offset-7 { transform: translateY(-140px) scale(0.86); }
171
+ .stack-offset-8 { transform: translateY(-160px) scale(0.84); }
172
+ .stack-offset-9 { transform: translateY(-180px) scale(0.82); }
173
+ .stack-offset-10 { transform: translateY(-200px) scale(0.80); }
174
+ .stack-offset-11 { transform: translateY(-220px) scale(0.78); }
175
+ .stack-offset-12 { transform: translateY(-240px) scale(0.76); }
176
+ .stack-offset-13 { transform: translateY(-260px) scale(0.74); }
177
+ .stack-offset-14 { transform: translateY(-280px) scale(0.72); }
178
+ .stack-offset-15 { transform: translateY(-300px) scale(0.70); }
179
+ .stack-offset-16 { transform: translateY(-320px) scale(0.68); }
180
+ .stack-offset-17 { transform: translateY(-340px) scale(0.66); }
181
+
182
+ /* Particle Effects */
183
+ .particle {
184
+ position: absolute;
185
+ pointer-events: none;
186
+ border-radius: 50%;
187
+ }
188
+
189
+ .gold-spark {
190
+ width: 4px;
191
+ height: 4px;
192
+ background: #ffd700;
193
+ box-shadow: 0 0 10px #ffd700, 0 0 20px #ffed4e;
194
+ }
195
+
196
+ .shimmer-dust {
197
+ width: 2px;
198
+ height: 2px;
199
+ background: rgba(255, 237, 78, 0.8);
200
+ box-shadow: 0 0 6px rgba(255, 215, 0, 0.8);
201
+ }
202
+
203
+ .coin-glint {
204
+ width: 8px;
205
+ height: 8px;
206
+ background: radial-gradient(circle, #fff 0%, #ffd700 50%, transparent 70%);
207
+ border-radius: 50%;
208
+ }
209
+
210
+ @keyframes floatUp {
211
+ 0% {
212
+ opacity: 1;
213
+ transform: translateY(0) scale(1) rotate(0deg);
214
+ }
215
+ 100% {
216
+ opacity: 0;
217
+ transform: translateY(-150px) scale(0.5) rotate(360deg);
218
+ }
219
+ }
220
+
221
+ @keyframes burst {
222
+ 0% {
223
+ opacity: 1;
224
+ transform: translate(0, 0) scale(1);
225
+ }
226
+ 100% {
227
+ opacity: 0;
228
+ transform: translate(var(--tx), var(--ty)) scale(0);
229
+ }
230
+ }
231
+
232
+ @keyframes streak {
233
+ 0% {
234
+ opacity: 0;
235
+ transform: translateX(-100px) scaleX(0);
236
+ }
237
+ 50% {
238
+ opacity: 1;
239
+ transform: translateX(0) scaleX(1);
240
+ }
241
+ 100% {
242
+ opacity: 0;
243
+ transform: translateX(100px) scaleX(0);
244
+ }
245
+ }
246
+
247
+ .light-streak {
248
+ position: absolute;
249
+ height: 2px;
250
+ width: 100px;
251
+ background: linear-gradient(90deg, transparent, #ffd700, transparent);
252
+ opacity: 0;
253
+ }
254
+
255
+ /* Glow pulse for cards */
256
+ @keyframes glowPulse {
257
+ 0%, 100% { box-shadow: 0 20px 60px rgba(255, 215, 0, 0.4), 0 0 0 4px rgba(255, 215, 0, 0.3); }
258
+ 50% { box-shadow: 0 25px 70px rgba(255, 215, 0, 0.6), 0 0 0 4px rgba(255, 215, 0, 0.5); }
259
+ }
260
+
261
+ .glow-active {
262
+ animation: glowPulse 2s ease-in-out infinite;
263
+ }
264
+
265
+ /* Reset animation class */
266
+ .reset {
267
+ animation: none !important;
268
+ opacity: 0;
269
+ transform: scale(0) translateY(50px) rotateX(-45deg);
270
+ }
271
+ </style>
272
+ </head>
273
+ <body class="h-screen w-screen flex items-center justify-center relative">
274
+
275
+ <!-- Blurred Slot Machine Background -->
276
+ <div class="slot-background">
277
+ <div class="reels-container">
278
+ <!-- Generate 5 reels with symbols -->
279
+ <div class="reel">
280
+ <span class="slot-symbol text-red-500">7️⃣</span>
281
+ <span class="slot-symbol text-yellow-400">💎</span>
282
+ <span class="slot-symbol text-red-600">🍒</span>
283
+ </div>
284
+ <div class="reel">
285
+ <span class="slot-symbol text-purple-400">💜</span>
286
+ <span class="slot-symbol text-yellow-500">⭐</span>
287
+ <span class="slot-symbol text-red-500">7️⃣</span>
288
+ </div>
289
+ <div class="reel">
290
+ <span class="slot-symbol text-yellow-400">💎</span>
291
+ <span class="slot-symbol text-red-600">🍒</span>
292
+ <span class="slot-symbol text-purple-400">💜</span>
293
+ </div>
294
+ <div class="reel">
295
+ <span class="slot-symbol text-red-500">7️⃣</span>
296
+ <span class="slot-symbol text-yellow-400">💎</span>
297
+ <span class="slot-symbol text-yellow-500">⭐</span>
298
+ </div>
299
+ <div class="reel">
300
+ <span class="slot-symbol text-red-600">🍒</span>
301
+ <span class="slot-symbol text-purple-400">💜</span>
302
+ <span class="slot-symbol text-red-500">7️⃣</span>
303
+ </div>
304
+ </div>
305
+ </div>
306
+
307
+ <!-- Vignette Overlay -->
308
+ <div class="vignette"></div>
309
+
310
+ <!-- Particle Container -->
311
+ <div id="particle-container" class="absolute inset-0 pointer-events-none overflow-hidden"></div>
312
+
313
+ <!-- Center Popup Stack Container -->
314
+ <div class="relative z-10 flex flex-col items-center justify-center" style="perspective: 1000px;">
315
+
316
+ <!-- Card 1 (Bottom) -->
317
+ <div id="card1" class="popup-card" style="z-index: 1;">
318
+ <span class="popup-text">Win $3.75</span>
319
+ </div>
320
+
321
+ <!-- Card 2 -->
322
+ <div id="card2" class="popup-card" style="z-index: 2;">
323
+ <span class="popup-text">Win $0.50</span>
324
+ </div>
325
+
326
+ <!-- Card 3 -->
327
+ <div id="card3" class="popup-card" style="z-index: 3;">
328
+ <span class="popup-text">Win $5.50</span>
329
+ </div>
330
+
331
+ <!-- Card 4 -->
332
+ <div id="card4" class="popup-card" style="z-index: 4;">
333
+ <span class="popup-text">Win $0.10</span>
334
+ </div>
335
+
336
+ <!-- Card 5 -->
337
+ <div id="card5" class="popup-card" style="z-index: 5;">
338
+ <span class="popup-text">Win $1.15</span>
339
+ </div>
340
+
341
+ <!-- Card 6 -->
342
+ <div id="card6" class="popup-card" style="z-index: 6;">
343
+ <span class="popup-text">Win $6.25</span>
344
+ </div>
345
+
346
+ <!-- Card 7 -->
347
+ <div id="card7" class="popup-card" style="z-index: 7;">
348
+ <span class="popup-text">Win $0.50</span>
349
+ </div>
350
+
351
+ <!-- Card 8 -->
352
+ <div id="card8" class="popup-card" style="z-index: 8;">
353
+ <span class="popup-text">Win $2.25</span>
354
+ </div>
355
+
356
+ <!-- Card 9 -->
357
+ <div id="card9" class="popup-card" style="z-index: 9;">
358
+ <span class="popup-text">Win $0.75</span>
359
+ </div>
360
+
361
+ <!-- Card 10 -->
362
+ <div id="card10" class="popup-card" style="z-index: 10;">
363
+ <span class="popup-text">Win $3.75</span>
364
+ </div>
365
+
366
+ <!-- Card 11 -->
367
+ <div id="card11" class="popup-card" style="z-index: 11;">
368
+ <span class="popup-text">Win $0.50</span>
369
+ </div>
370
+
371
+ <!-- Card 12 -->
372
+ <div id="card12" class="popup-card" style="z-index: 12;">
373
+ <span class="popup-text">Win $5.50</span>
374
+ </div>
375
+
376
+ <!-- Card 13 -->
377
+ <div id="card13" class="popup-card" style="z-index: 13;">
378
+ <span class="popup-text">Win $0.10</span>
379
+ </div>
380
+
381
+ <!-- Card 14 -->
382
+ <div id="card14" class="popup-card" style="z-index: 14;">
383
+ <span class="popup-text">Win $1.15</span>
384
+ </div>
385
+
386
+ <!-- Card 15 -->
387
+ <div id="card15" class="popup-card" style="z-index: 15;">
388
+ <span class="popup-text">Win $6.25</span>
389
+ </div>
390
+
391
+ <!-- Card 16 -->
392
+ <div id="card16" class="popup-card" style="z-index: 16;">
393
+ <span class="popup-text">Win $0.50</span>
394
+ </div>
395
+
396
+ <!-- Card 17 -->
397
+ <div id="card17" class="popup-card" style="z-index: 17;">
398
+ <span class="popup-text">Win $2.25</span>
399
+ </div>
400
+
401
+ <!-- Card 18 (Top) -->
402
+ <div id="card18" class="popup-card" style="z-index: 18;">
403
+ <span class="popup-text">Win $0.75</span>
404
+ </div>
405
+
406
+ </div>
407
+
408
+ <script>
409
+ // Particle System
410
+ function createParticle(x, y, type) {
411
+ const particle = document.createElement('div');
412
+ particle.className = `particle ${type}`;
413
+ particle.style.left = x + 'px';
414
+ particle.style.top = y + 'px';
415
+
416
+ const container = document.getElementById('particle-container');
417
+ container.appendChild(particle);
418
+
419
+ // Random animation properties
420
+ const duration = 1 + Math.random() * 1.5;
421
+ const delay = Math.random() * 0.2;
422
+
423
+ if (type === 'gold-spark' || type === 'shimmer-dust') {
424
+ particle.style.animation = `floatUp ${duration}s ease-out ${delay}s forwards`;
425
+ } else if (type === 'coin-glint') {
426
+ const angle = Math.random() * Math.PI * 2;
427
+ const distance = 50 + Math.random() * 100;
428
+ const tx = Math.cos(angle) * distance;
429
+ const ty = Math.sin(angle) * distance - 50;
430
+ particle.style.setProperty('--tx', tx + 'px');
431
+ particle.style.setProperty('--ty', ty + 'px');
432
+ particle.style.animation = `burst ${duration}s ease-out ${delay}s forwards`;
433
+ }
434
+
435
+ // Cleanup
436
+ setTimeout(() => particle.remove(), (duration + delay) * 1000);
437
+ }
438
+
439
+ function createLightStreak(x, y) {
440
+ const streak = document.createElement('div');
441
+ streak.className = 'light-streak';
442
+ streak.style.left = (x - 50) + 'px';
443
+ streak.style.top = y + 'px';
444
+ streak.style.animation = 'streak 0.8s ease-out forwards';
445
+
446
+ const container = document.getElementById('particle-container');
447
+ container.appendChild(streak);
448
+
449
+ setTimeout(() => streak.remove(), 800);
450
+ }
451
+
452
+ function emitParticles(x, y, intensity = 'medium') {
453
+ const counts = {
454
+ low: { sparks: 8, dust: 15, coins: 5 },
455
+ medium: { sparks: 15, dust: 25, coins: 10 },
456
+ high: { sparks: 25, dust: 40, coins: 15 }
457
+ };
458
+
459
+ const count = counts[intensity] || counts.medium;
460
+
461
+ // Gold sparks
462
+ for (let i = 0; i < count.sparks; i++) {
463
+ setTimeout(() => {
464
+ const offsetX = (Math.random() - 0.5) * 200;
465
+ const offsetY = (Math.random() - 0.5) * 100;
466
+ createParticle(x + offsetX, y + offsetY, 'gold-spark');
467
+ }, i * 30);
468
+ }
469
+
470
+ // Shimmer dust
471
+ for (let i = 0; i < count.dust; i++) {
472
+ setTimeout(() => {
473
+ const offsetX = (Math.random() - 0.5) * 300;
474
+ const offsetY = (Math.random() - 0.5) * 150;
475
+ createParticle(x + offsetX, y + offsetY, 'shimmer-dust');
476
+ }, i * 20);
477
+ }
478
+
479
+ // Coin glints (burst pattern)
480
+ for (let i = 0; i < count.coins; i++) {
481
+ setTimeout(() => {
482
+ createParticle(x, y, 'coin-glint');
483
+ }, i * 50);
484
+ }
485
+
486
+ // Light streaks
487
+ for (let i = 0; i < 3; i++) {
488
+ setTimeout(() => {
489
+ const offsetY = (Math.random() - 0.5) * 60;
490
+ createLightStreak(x, y + offsetY);
491
+ }, i * 100);
492
+ }
493
+ }
494
+
495
+ // Animation Sequence
496
+ function runAnimation() {
497
+ const cards = [
498
+ document.getElementById('card1'),
499
+ document.getElementById('card2'),
500
+ document.getElementById('card3'),
501
+ document.getElementById('card4'),
502
+ document.getElementById('card5'),
503
+ document.getElementById('card6'),
504
+ document.getElementById('card7'),
505
+ document.getElementById('card8'),
506
+ document.getElementById('card9'),
507
+ document.getElementById('card10'),
508
+ document.getElementById('card11'),
509
+ document.getElementById('card12'),
510
+ document.getElementById('card13'),
511
+ document.getElementById('card14'),
512
+ document.getElementById('card15'),
513
+ document.getElementById('card16'),
514
+ document.getElementById('card17'),
515
+ document.getElementById('card18')
516
+ ];
517
+
518
+ const centerX = window.innerWidth / 2;
519
+ const centerY = window.innerHeight / 2;
520
+
521
+ // Reset all cards
522
+ cards.forEach(card => {
523
+ card.className = 'popup-card reset';
524
+ card.classList.remove('glow-active');
525
+ });
526
+
527
+ // Force reflow
528
+ void cards[0].offsetWidth;
529
+
530
+ // Stack offsets for 18 cards
531
+ const stackOffsets = [
532
+ 'translateY(0) scale(1)',
533
+ 'translateY(-20px) scale(0.98)',
534
+ 'translateY(-40px) scale(0.96)',
535
+ 'translateY(-60px) scale(0.94)',
536
+ 'translateY(-80px) scale(0.92)',
537
+ 'translateY(-100px) scale(0.90)',
538
+ 'translateY(-120px) scale(0.88)',
539
+ 'translateY(-140px) scale(0.86)',
540
+ 'translateY(-160px) scale(0.84)',
541
+ 'translateY(-180px) scale(0.82)',
542
+ 'translateY(-200px) scale(0.80)',
543
+ 'translateY(-220px) scale(0.78)',
544
+ 'translateY(-240px) scale(0.76)',
545
+ 'translateY(-260px) scale(0.74)',
546
+ 'translateY(-280px) scale(0.72)',
547
+ 'translateY(-300px) scale(0.70)',
548
+ 'translateY(-320px) scale(0.68)',
549
+ 'translateY(-340px) scale(0.66)'
550
+ ];
551
+
552
+ // Card 1 animation
553
+ setTimeout(() => {
554
+ cards[0].classList.remove('reset');
555
+ cards[0].classList.add('animate-pop-1');
556
+ if(cards[0].style) cards[0].style.transform = stackOffsets[0];
557
+ emitParticles(centerX, centerY + 40, 'high');
558
+ }, 100);
559
+
560
+ // Cards 2-18 with sequential stacking
561
+ for (let i = 1; i < 18; i++) {
562
+ setTimeout(() => {
563
+ cards[i].classList.remove('reset');
564
+ cards[i].classList.add(`animate-pop-${i + 1}`);
565
+ cards[i].style.transform = stackOffsets[i];
566
+
567
+ // Emit particles for each card appearance (high intensity on cards 4, 6, 9, 13, 15, 18)
568
+ const intensity = (i === 3 || i === 5 || i === 8 || i === 12 || i === 14 || i === 17) ? 'high' : 'medium';
569
+ emitParticles(centerX, centerY - (i * 20), intensity);
570
+ }, 100 + (i * 300));
571
+ }
572
+
573
+ // Add glow to all cards when stack is complete (after last card)
574
+ setTimeout(() => {
575
+ cards.forEach(card => card.classList.add('glow-active'));
576
+ }, 100 + (17 * 300) + 600);
577
+
578
+ // Reset after 5 second pause (last card appears at ~5200ms, so 10200ms total)
579
+ setTimeout(() => {
580
+ cards.forEach(card => {
581
+ card.classList.remove('glow-active');
582
+ card.style.opacity = '0';
583
+ card.style.transition = 'opacity 0.5s ease-out';
584
+ });
585
+
586
+ setTimeout(() => {
587
+ cards.forEach(card => {
588
+ card.style.transition = '';
589
+ card.style.transform = '';
590
+ });
591
+ runAnimation();
592
+ }, 500);
593
+ }, 10800); // 5.2s for animations + 5s pause + 0.6s buffer
594
+ }
595
+
596
+ // Ambient particles
597
+ function createAmbientParticles() {
598
+ const centerX = window.innerWidth / 2;
599
+ const centerY = window.innerHeight / 2;
600
+
601
+ setInterval(() => {
602
+ if (Math.random() > 0.7) {
603
+ const x = centerX + (Math.random() - 0.5) * 400;
604
+ const y = centerY + (Math.random() - 0.5) * 300;
605
+ createParticle(x, y, 'shimmer-dust');
606
+ }
607
+ }, 200);
608
+ }
609
+
610
+ // Start
611
+ window.addEventListener('load', () => {
612
+ runAnimation();
613
+ createAmbientParticles();
614
+ });
615
+
616
+ // Handle resize
617
+ window.addEventListener('resize', () => {
618
+ // Animation will adapt automatically due to center positioning
619
+ });
620
+ </script>
621
+ <script src="https://deepsite.hf.co/deepsite-badge.js"></script>
622
+ </body>
623
+ </html>