Re2906 commited on
Commit
b4dd5e8
·
verified ·
1 Parent(s): 945f9e1

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +1000 -19
index.html CHANGED
@@ -1,19 +1,1000 @@
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="fa" dir="rtl">
3
+ <head>
4
+ <meta charset="UTF-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
+ <title>پروژه re29066 - تکمیل موفقیت‌آمیز</title>
7
+ <link href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css" rel="stylesheet">
8
+ <style>
9
+ * {
10
+ margin: 0;
11
+ padding: 0;
12
+ box-sizing: border-box;
13
+ }
14
+
15
+ :root {
16
+ --primary-gradient: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
17
+ --secondary-gradient: linear-gradient(135deg, #f093fb 0%, #f5576c 100%);
18
+ --success-gradient: linear-gradient(135deg, #13f1fc 0%, #0470dc 100%);
19
+ --dark-bg: #1a1a2e;
20
+ --card-bg: #16213e;
21
+ --text-primary: #ffffff;
22
+ --text-secondary: #b4b4b4;
23
+ --accent: #667eea;
24
+ --success: #4ade80;
25
+ --warning: #fbbf24;
26
+ --danger: #f87171;
27
+ }
28
+
29
+ body {
30
+ font-family: 'Segoe UI', Tahoma, Geneva, Verdana, sans-serif;
31
+ background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
32
+ min-height: 100vh;
33
+ color: var(--text-primary);
34
+ overflow-x: hidden;
35
+ position: relative;
36
+ }
37
+
38
+ body::before {
39
+ content: '';
40
+ position: fixed;
41
+ top: 0;
42
+ left: 0;
43
+ right: 0;
44
+ bottom: 0;
45
+ background: url('data:image/svg+xml,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 1440 320"><path fill="%23ffffff" fill-opacity="0.05" d="M0,32L48,69.3C96,107,192,181,288,197.3C384,213,480,171,576,165.3C672,160,768,192,864,197.3C960,203,1056,181,1152,165.3C1248,149,1344,139,1392,133.3L1440,128L1440,320L1392,320C1344,320,1248,320,1152,320C1056,320,960,320,864,320C768,320,672,320,576,320C480,320,384,320,288,320C192,320,96,320,48,320L0,320Z"></path></svg>') no-repeat bottom;
46
+ background-size: cover;
47
+ pointer-events: none;
48
+ opacity: 0.3;
49
+ }
50
+
51
+ .container {
52
+ max-width: 1400px;
53
+ margin: 0 auto;
54
+ padding: 20px;
55
+ position: relative;
56
+ z-index: 1;
57
+ }
58
+
59
+ header {
60
+ background: rgba(26, 26, 46, 0.95);
61
+ backdrop-filter: blur(10px);
62
+ border-radius: 20px;
63
+ padding: 40px;
64
+ margin-bottom: 40px;
65
+ box-shadow: 0 20px 60px rgba(0, 0, 0, 0.3);
66
+ position: relative;
67
+ overflow: hidden;
68
+ animation: slideDown 0.8s ease-out;
69
+ }
70
+
71
+ header::before {
72
+ content: '';
73
+ position: absolute;
74
+ top: -50%;
75
+ left: -50%;
76
+ width: 200%;
77
+ height: 200%;
78
+ background: radial-gradient(circle, rgba(102, 126, 234, 0.1) 0%, transparent 70%);
79
+ animation: rotate 20s linear infinite;
80
+ }
81
+
82
+ @keyframes rotate {
83
+ from { transform: rotate(0deg); }
84
+ to { transform: rotate(360deg); }
85
+ }
86
+
87
+ @keyframes slideDown {
88
+ from {
89
+ opacity: 0;
90
+ transform: translateY(-30px);
91
+ }
92
+ to {
93
+ opacity: 1;
94
+ transform: translateY(0);
95
+ }
96
+ }
97
+
98
+ .header-content {
99
+ position: relative;
100
+ z-index: 1;
101
+ }
102
+
103
+ .success-badge {
104
+ display: inline-flex;
105
+ align-items: center;
106
+ gap: 10px;
107
+ background: var(--success-gradient);
108
+ padding: 8px 20px;
109
+ border-radius: 50px;
110
+ font-size: 14px;
111
+ font-weight: bold;
112
+ margin-bottom: 20px;
113
+ animation: pulse 2s infinite;
114
+ }
115
+
116
+ @keyframes pulse {
117
+ 0%, 100% { transform: scale(1); }
118
+ 50% { transform: scale(1.05); }
119
+ }
120
+
121
+ h1 {
122
+ font-size: 3rem;
123
+ margin-bottom: 15px;
124
+ background: linear-gradient(135deg, #667eea 0%, #f093fb 100%);
125
+ -webkit-background-clip: text;
126
+ -webkit-text-fill-color: transparent;
127
+ background-clip: text;
128
+ animation: glow 3s ease-in-out infinite;
129
+ }
130
+
131
+ @keyframes glow {
132
+ 0%, 100% { filter: brightness(1); }
133
+ 50% { filter: brightness(1.2); }
134
+ }
135
+
136
+ .subtitle {
137
+ font-size: 1.2rem;
138
+ color: var(--text-secondary);
139
+ margin-bottom: 30px;
140
+ }
141
+
142
+ .project-stats {
143
+ display: grid;
144
+ grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
145
+ gap: 20px;
146
+ margin-top: 30px;
147
+ }
148
+
149
+ .stat-card {
150
+ background: rgba(255, 255, 255, 0.05);
151
+ padding: 20px;
152
+ border-radius: 15px;
153
+ text-align: center;
154
+ border: 1px solid rgba(255, 255, 255, 0.1);
155
+ transition: all 0.3s ease;
156
+ }
157
+
158
+ .stat-card:hover {
159
+ transform: translateY(-5px);
160
+ background: rgba(255, 255, 255, 0.1);
161
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.3);
162
+ }
163
+
164
+ .stat-number {
165
+ font-size: 2rem;
166
+ font-weight: bold;
167
+ color: var(--accent);
168
+ }
169
+
170
+ .stat-label {
171
+ font-size: 0.9rem;
172
+ color: var(--text-secondary);
173
+ margin-top: 5px;
174
+ }
175
+
176
+ .features-section {
177
+ margin-bottom: 40px;
178
+ }
179
+
180
+ .section-title {
181
+ font-size: 2rem;
182
+ margin-bottom: 30px;
183
+ text-align: center;
184
+ position: relative;
185
+ padding-bottom: 15px;
186
+ }
187
+
188
+ .section-title::after {
189
+ content: '';
190
+ position: absolute;
191
+ bottom: 0;
192
+ right: 50%;
193
+ transform: translateX(50%);
194
+ width: 100px;
195
+ height: 3px;
196
+ background: var(--primary-gradient);
197
+ border-radius: 2px;
198
+ }
199
+
200
+ .features-grid {
201
+ display: grid;
202
+ grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));
203
+ gap: 25px;
204
+ }
205
+
206
+ .feature-card {
207
+ background: rgba(26, 26, 46, 0.95);
208
+ backdrop-filter: blur(10px);
209
+ border-radius: 20px;
210
+ padding: 30px;
211
+ border: 1px solid rgba(255, 255, 255, 0.1);
212
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
213
+ position: relative;
214
+ overflow: hidden;
215
+ }
216
+
217
+ .feature-card::before {
218
+ content: '';
219
+ position: absolute;
220
+ top: 0;
221
+ right: 0;
222
+ width: 100px;
223
+ height: 100px;
224
+ background: radial-gradient(circle, rgba(102, 126, 234, 0.3) 0%, transparent 70%);
225
+ border-radius: 50%;
226
+ transform: translate(30px, -30px);
227
+ transition: all 0.4s ease;
228
+ }
229
+
230
+ .feature-card:hover::before {
231
+ width: 200px;
232
+ height: 200px;
233
+ }
234
+
235
+ .feature-card:hover {
236
+ transform: translateY(-10px) scale(1.02);
237
+ box-shadow: 0 20px 40px rgba(102, 126, 234, 0.3);
238
+ }
239
+
240
+ .feature-icon {
241
+ width: 60px;
242
+ height: 60px;
243
+ background: var(--primary-gradient);
244
+ border-radius: 15px;
245
+ display: flex;
246
+ align-items: center;
247
+ justify-content: center;
248
+ font-size: 1.5rem;
249
+ margin-bottom: 20px;
250
+ position: relative;
251
+ z-index: 1;
252
+ }
253
+
254
+ .feature-title {
255
+ font-size: 1.3rem;
256
+ margin-bottom: 15px;
257
+ position: relative;
258
+ z-index: 1;
259
+ }
260
+
261
+ .feature-description {
262
+ color: var(--text-secondary);
263
+ line-height: 1.6;
264
+ position: relative;
265
+ z-index: 1;
266
+ }
267
+
268
+ .downloads-section {
269
+ background: rgba(26, 26, 46, 0.95);
270
+ backdrop-filter: blur(10px);
271
+ border-radius: 20px;
272
+ padding: 40px;
273
+ margin-bottom: 40px;
274
+ position: relative;
275
+ overflow: hidden;
276
+ }
277
+
278
+ .downloads-grid {
279
+ display: grid;
280
+ grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
281
+ gap: 20px;
282
+ margin-top: 30px;
283
+ }
284
+
285
+ .download-card {
286
+ background: rgba(255, 255, 255, 0.05);
287
+ border: 1px solid rgba(255, 255, 255, 0.1);
288
+ border-radius: 15px;
289
+ padding: 20px;
290
+ text-align: center;
291
+ transition: all 0.3s ease;
292
+ cursor: pointer;
293
+ position: relative;
294
+ overflow: hidden;
295
+ }
296
+
297
+ .download-card::after {
298
+ content: '';
299
+ position: absolute;
300
+ top: 50%;
301
+ left: 50%;
302
+ width: 0;
303
+ height: 0;
304
+ background: rgba(102, 126, 234, 0.3);
305
+ border-radius: 50%;
306
+ transform: translate(-50%, -50%);
307
+ transition: all 0.5s ease;
308
+ }
309
+
310
+ .download-card:hover::after {
311
+ width: 300px;
312
+ height: 300px;
313
+ }
314
+
315
+ .download-card:hover {
316
+ transform: translateY(-5px);
317
+ background: rgba(255, 255, 255, 0.1);
318
+ }
319
+
320
+ .download-icon {
321
+ font-size: 2rem;
322
+ margin-bottom: 10px;
323
+ color: var(--accent);
324
+ position: relative;
325
+ z-index: 1;
326
+ }
327
+
328
+ .download-title {
329
+ font-weight: bold;
330
+ margin-bottom: 5px;
331
+ position: relative;
332
+ z-index: 1;
333
+ }
334
+
335
+ .download-size {
336
+ color: var(--text-secondary);
337
+ font-size: 0.9rem;
338
+ position: relative;
339
+ z-index: 1;
340
+ }
341
+
342
+ .timeline-section {
343
+ margin-bottom: 40px;
344
+ }
345
+
346
+ .timeline {
347
+ position: relative;
348
+ padding: 20px 0;
349
+ }
350
+
351
+ .timeline::before {
352
+ content: '';
353
+ position: absolute;
354
+ right: 50%;
355
+ top: 0;
356
+ bottom: 0;
357
+ width: 2px;
358
+ background: linear-gradient(180deg, var(--accent) 0%, transparent 100%);
359
+ }
360
+
361
+ .timeline-item {
362
+ display: flex;
363
+ justify-content: flex-end;
364
+ padding-right: 50%;
365
+ position: relative;
366
+ margin-bottom: 50px;
367
+ animation: fadeInRight 0.8s ease-out;
368
+ }
369
+
370
+ @keyframes fadeInRight {
371
+ from {
372
+ opacity: 0;
373
+ transform: translateX(30px);
374
+ }
375
+ to {
376
+ opacity: 1;
377
+ transform: translateX(0);
378
+ }
379
+ }
380
+
381
+ .timeline-item:nth-child(even) {
382
+ justify-content: flex-start;
383
+ padding-right: 0;
384
+ padding-left: 50%;
385
+ animation: fadeInLeft 0.8s ease-out;
386
+ }
387
+
388
+ @keyframes fadeInLeft {
389
+ from {
390
+ opacity: 0;
391
+ transform: translateX(-30px);
392
+ }
393
+ to {
394
+ opacity: 1;
395
+ transform: translateX(0);
396
+ }
397
+ }
398
+
399
+ .timeline-content {
400
+ background: rgba(26, 26, 46, 0.95);
401
+ backdrop-filter: blur(10px);
402
+ padding: 20px;
403
+ border-radius: 15px;
404
+ width: 90%;
405
+ position: relative;
406
+ border: 1px solid rgba(255, 255, 255, 0.1);
407
+ }
408
+
409
+ .timeline-dot {
410
+ position: absolute;
411
+ right: calc(50% - 10px);
412
+ top: 30px;
413
+ width: 20px;
414
+ height: 20px;
415
+ background: var(--accent);
416
+ border-radius: 50%;
417
+ border: 3px solid var(--card-bg);
418
+ box-shadow: 0 0 0 3px rgba(102, 126, 234, 0.3);
419
+ }
420
+
421
+ .timeline-item:nth-child(even) .timeline-dot {
422
+ right: auto;
423
+ left: calc(50% - 10px);
424
+ }
425
+
426
+ .floating-button {
427
+ position: fixed;
428
+ bottom: 30px;
429
+ left: 30px;
430
+ background: var(--primary-gradient);
431
+ color: white;
432
+ border: none;
433
+ padding: 15px 30px;
434
+ border-radius: 50px;
435
+ font-size: 1rem;
436
+ font-weight: bold;
437
+ cursor: pointer;
438
+ box-shadow: 0 10px 30px rgba(102, 126, 234, 0.4);
439
+ transition: all 0.3s ease;
440
+ z-index: 1000;
441
+ display: flex;
442
+ align-items: center;
443
+ gap: 10px;
444
+ }
445
+
446
+ .floating-button:hover {
447
+ transform: translateY(-5px);
448
+ box-shadow: 0 15px 40px rgba(102, 126, 234, 0.6);
449
+ }
450
+
451
+ .progress-bar {
452
+ background: rgba(255, 255, 255, 0.1);
453
+ border-radius: 10px;
454
+ height: 30px;
455
+ overflow: hidden;
456
+ margin: 20px 0;
457
+ }
458
+
459
+ .progress-fill {
460
+ height: 100%;
461
+ background: var(--success-gradient);
462
+ border-radius: 10px;
463
+ display: flex;
464
+ align-items: center;
465
+ justify-content: center;
466
+ color: white;
467
+ font-weight: bold;
468
+ animation: progressAnimation 2s ease-out;
469
+ }
470
+
471
+ @keyframes progressAnimation {
472
+ from { width: 0; }
473
+ to { width: 100%; }
474
+ }
475
+
476
+ .notification {
477
+ position: fixed;
478
+ top: 20px;
479
+ left: 50%;
480
+ transform: translateX(-50%) translateY(-100px);
481
+ background: rgba(26, 26, 46, 0.98);
482
+ backdrop-filter: blur(10px);
483
+ padding: 15px 30px;
484
+ border-radius: 50px;
485
+ border: 1px solid rgba(255, 255, 255, 0.2);
486
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.3);
487
+ z-index: 2000;
488
+ transition: all 0.3s ease;
489
+ }
490
+
491
+ .notification.show {
492
+ transform: translateX(-50%) translateY(0);
493
+ }
494
+
495
+ footer {
496
+ text-align: center;
497
+ padding: 40px;
498
+ background: rgba(26, 26, 46, 0.95);
499
+ backdrop-filter: blur(10px);
500
+ border-radius: 20px;
501
+ margin-top: 60px;
502
+ }
503
+
504
+ .footer-links {
505
+ display: flex;
506
+ justify-content: center;
507
+ gap: 30px;
508
+ margin-top: 20px;
509
+ flex-wrap: wrap;
510
+ }
511
+
512
+ .footer-link {
513
+ color: var(--text-secondary);
514
+ text-decoration: none;
515
+ transition: color 0.3s ease;
516
+ }
517
+
518
+ .footer-link:hover {
519
+ color: var(--accent);
520
+ }
521
+
522
+ @media (max-width: 768px) {
523
+ h1 {
524
+ font-size: 2rem;
525
+ }
526
+
527
+ .timeline::before {
528
+ right: 20px;
529
+ }
530
+
531
+ .timeline-item {
532
+ padding-right: 0;
533
+ padding-left: 60px;
534
+ justify-content: flex-start;
535
+ }
536
+
537
+ .timeline-item:nth-child(even) {
538
+ padding-left: 60px;
539
+ }
540
+
541
+ .timeline-dot {
542
+ right: 10px !important;
543
+ left: auto !important;
544
+ }
545
+
546
+ .floating-button {
547
+ bottom: 20px;
548
+ left: 50%;
549
+ transform: translateX(-50%);
550
+ }
551
+ }
552
+
553
+ .loader {
554
+ position: fixed;
555
+ top: 0;
556
+ left: 0;
557
+ right: 0;
558
+ bottom: 0;
559
+ background: var(--dark-bg);
560
+ display: flex;
561
+ align-items: center;
562
+ justify-content: center;
563
+ z-index: 9999;
564
+ transition: opacity 0.5s ease;
565
+ }
566
+
567
+ .loader.hidden {
568
+ opacity: 0;
569
+ pointer-events: none;
570
+ }
571
+
572
+ .loader-circle {
573
+ width: 60px;
574
+ height: 60px;
575
+ border: 3px solid rgba(255, 255, 255, 0.1);
576
+ border-top-color: var(--accent);
577
+ border-radius: 50%;
578
+ animation: spin 1s linear infinite;
579
+ }
580
+
581
+ @keyframes spin {
582
+ to { transform: rotate(360deg); }
583
+ }
584
+ </style>
585
+ </head>
586
+ <body>
587
+ <div class="loader" id="loader">
588
+ <div class="loader-circle"></div>
589
+ </div>
590
+
591
+ <div class="notification" id="notification">
592
+ <i class="fas fa-check-circle"></i> پروژه با موفقیت بارگذاری شد!
593
+ </div>
594
+
595
+ <div class="container">
596
+ <header>
597
+ <div class="header-content">
598
+ <div class="success-badge">
599
+ <i class="fas fa-check-circle"></i>
600
+ <span>پروژه با موفقیت تکمیل شد</span>
601
+ </div>
602
+ <h1>🎉 پروژه re29066</h1>
603
+ <p class="subtitle">یک راه‌حل کامل و مدرن برای نیازهای دیجیتال شما</p>
604
+
605
+ <div class="progress-bar">
606
+ <div class="progress-fill">100% تکمیل شده</div>
607
+ </div>
608
+
609
+ <div class="project-stats">
610
+ <div class="stat-card">
611
+ <div class="stat-number">4</div>
612
+ <div class="stat-label">Workflow CI/CD</div>
613
+ </div>
614
+ <div class="stat-card">
615
+ <div class="stat-number">8</div>
616
+ <div class="stat-label">سیستم ثبت عملیات</div>
617
+ </div>
618
+ <div class="stat-card">
619
+ <div class="stat-number">1</div>
620
+ <div class="stat-label">اپلیکیشن موبایل</div>
621
+ </div>
622
+ <div class="stat-card">
623
+ <div class="stat-number">100%</div>
624
+ <div class="stat-label">آماده تولید</div>
625
+ </div>
626
+ </div>
627
+ </div>
628
+ </header>
629
+
630
+ <section class="features-section">
631
+ <h2 class="section-title">✅ ویژگی‌های تکمیل شده</h2>
632
+ <div class="features-grid">
633
+ <div class="feature-card">
634
+ <div class="feature-icon">
635
+ <i class="fas fa-sync-alt"></i>
636
+ </div>
637
+ <h3 class="feature-title">گردش‌کارهای خودکار</h3>
638
+ <p class="feature-description">
639
+ CI/CD کامل با 4 workflow پیشرفته GitHub Actions برای ساخت، تست و استقرار خودکار
640
+ </p>
641
+ </div>
642
+
643
+ <div class="feature-card">
644
+ <div class="feature-icon">
645
+ <i class="fas fa-database"></i>
646
+ </div>
647
+ <h3 class="feature-title">سیستم ثبت عملیات</h3>
648
+ <p class="feature-description">
649
+ مدیریت کامل وابستگی‌ها، متغیرهای محیطی، سرویس‌ها و اقدامات امنیتی
650
+ </p>
651
+ </div>
652
+
653
+ <div class="feature-card">
654
+ <div class="feature-icon">
655
+ <i class="fas fa-mobile-alt"></i>
656
+ </div>
657
+ <h3 class="feature-title">اپلیکیشن موبایل APK</h3>
658
+ <p class="feature-description">
659
+ اپلیکیشن هیبرید Android با Capacitor، پشتیبانی از TON Wallet و Firebase
660
+ </p>
661
+ </div>
662
+
663
+ <div class="feature-card">
664
+ <div class="feature-icon">
665
+ <i class="fas fa-certificate"></i>
666
+ </div>
667
+ <h3 class="feature-title">لایسنس‌ها</h3>
668
+ <p class="feature-description">
669
+ لایسنس MIT اصلی، لایسنس‌های third-party و مجوز استفاده تجاری کامل
670
+ </p>
671
+ </div>
672
+
673
+ <div class="feature-card">
674
+ <div class="feature-icon">
675
+ <i class="fas fa-file-code"></i>
676
+ </div>
677
+ <h3 class="feature-title">فایل‌های Manifest</h3>
678
+ <p class="feature-description">
679
+ PWA Manifest، APK Manifest و پشتیبانی کامل از Chrome Extensions
680
+ </p>
681
+ </div>
682
+
683
+ <div class="feature-card">
684
+ <div class="feature-icon">
685
+ <i class="fas fa-shield-alt"></i>
686
+ </div>
687
+ <h3 class="feature-title">امنیت و نظارت</h3>
688
+ <p class="feature-description">
689
+ Security scanning، monitoring خودکار و بهترین شیوه‌های امنیتی
690
+ </p>
691
+ </div>
692
+ </div>
693
+ </section>
694
+
695
+ <section class="downloads-section">
696
+ <h2 class="section-title">📁 فایل‌های تحویلی</h2>
697
+ <div class="downloads-grid">
698
+ <div class="download-card" onclick="downloadFile('project')">
699
+ <div class="download-icon">
700
+ <i class="fas fa-download"></i>
701
+ </div>
702
+ <div class="download-title">کل پروژه</div>
703
+ <div class="download-size">125 MB</div>
704
+ </div>
705
+
706
+ <div class="download-card" onclick="downloadFile('report')">
707
+ <div class="download-icon">
708
+ <i class="fas fa-file-alt"></i>
709
+ </div>
710
+ <div class="download-title">گزارش نهایی</div>
711
+ <div class="download-size">2.5 MB</div>
712
+ </div>
713
+
714
+ <div class="download-card" onclick="downloadFile('apk')">
715
+ <div class="download-icon">
716
+ <i class="fab fa-android"></i>
717
+ </div>
718
+ <div class="download-title">فایل APK</div>
719
+ <div class="download-size">45 MB</div>
720
+ </div>
721
+
722
+ <div class="download-card" onclick="downloadFile('manifest')">
723
+ <div class="download-icon">
724
+ <i class="fas fa-cog"></i>
725
+ </div>
726
+ <div class="download-title">Manifest PWA</div>
727
+ <div class="download-size">15 KB</div>
728
+ </div>
729
+
730
+ <div class="download-card" onclick="downloadFile('license')">
731
+ <div class="download-icon">
732
+ <i class="fas fa-balance-scale"></i>
733
+ </div>
734
+ <div class="download-title">لایسنس</div>
735
+ <div class="download-size">8 KB</div>
736
+ </div>
737
+
738
+ <div class="download-card" onclick="downloadFile('script')">
739
+ <div class="download-icon">
740
+ <i class="fas fa-terminal"></i>
741
+ </div>
742
+ <div class="download-title">اسکریپت تکمیل</div>
743
+ <div class="download-size">3 KB</div>
744
+ </div>
745
+ </div>
746
+ </section>
747
+
748
+ <section class="timeline-section">
749
+ <h2 class="section-title">🚀 مراحل بعدی</h2>
750
+ <div class="timeline">
751
+ <div class="timeline-item">
752
+ <div class="timeline-dot"></div>
753
+ <div class="timeline-content">
754
+ <h3>1. دانلود فایل‌ها</h3>
755
+ <p>دانلود کامل فایل‌های پروژه از لینک‌های ارائه شده</p>
756
+ </div>
757
+ </div>
758
+
759
+ <div class="timeline-item">
760
+ <div class="timeline-dot"></div>
761
+ <div class="timeline-content">
762
+ <h3>2. مطالعه گزارش نهایی</h3>
763
+ <p>برای درک کامل ساختار و ویژگی‌های پروژه</p>
764
+ </div>
765
+ </div>
766
+
767
+ <div class="timeline-item">
768
+ <div class="timeline-dot"></div>
769
+ <div class="timeline-content">
770
+ <h3>3. پیکربندی Firebase</h3>
771
+ <p>طبق راهنمای موجود، سرویس Firebase را راه‌اندازی کنید</p>
772
+ </div>
773
+ </div>
774
+
775
+ <div class="timeline-item">
776
+ <div class="timeline-dot"></div>
777
+ <div class="timeline-content">
778
+ <h3>4. استقرار در Cloudflare</h3>
779
+ <p>با استفاده از اسکریپت‌های آماده، پروژه را مستقر کنید</p>
780
+ </div>
781
+ </div>
782
+
783
+ <div class="timeline-item">
784
+ <div class="timeline-dot"></div>
785
+ <div class="timeline-content">
786
+ <h3>5. تست اپلیکیشن موبایل</h3>
787
+ <p>نصب و تست APK تولید شده روی دستگاه Android</p>
788
+ </div>
789
+ </div>
790
+ </div>
791
+ </section>
792
+
793
+ <footer>
794
+ <p>پروژه 100% آماده و قابل استفاده است!</p>
795
+ <p style="margin-top: 10px; color: var(--text-secondary); font-size: 0.9rem;">
796
+ Built with <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" style="color: var(--accent);">anycoder</a>
797
+ </p>
798
+ <div class="footer-links">
799
+ <a href="#" class="footer-link">
800
+ <i class="fab fa-github"></i> GitHub
801
+ </a>
802
+ <a href="#" class="footer-link">
803
+ <i class="fas fa-book"></i> مستندات
804
+ </a>
805
+ <a href="#" class="footer-link">
806
+ <i class="fas fa-support"></i> پشتیبانی
807
+ </a>
808
+ <a href="#" class="footer-link">
809
+ <i class="fas fa-envelope"></i> تماس
810
+ </a>
811
+ </div>
812
+ </footer>
813
+ </div>
814
+
815
+ <button class="floating-button" onclick="startDeployment()">
816
+ <i class="fas fa-rocket"></i>
817
+ شروع استقرار
818
+ </button>
819
+
820
+ <script>
821
+ // Loader
822
+ window.addEventListener('load', () => {
823
+ setTimeout(() => {
824
+ document.getElementById('loader').classList.add('hidden');
825
+ showNotification('پروژه با موفقیت بارگذاری شد!');
826
+ }, 1500);
827
+ });
828
+
829
+ // Notification system
830
+ function showNotification(message) {
831
+ const notification = document.getElementById('notification');
832
+ notification.innerHTML = `<i class="fas fa-check-circle"></i> ${message}`;
833
+ notification.classList.add('show');
834
+
835
+ setTimeout(() => {
836
+ notification.classList.remove('show');
837
+ }, 3000);
838
+ }
839
+
840
+ // Download simulation
841
+ function downloadFile(type) {
842
+ const files = {
843
+ 'project': 'در حال دانلود کل پروژه...',
844
+ 'report': 'در حال دانلود گزارش نهایی...',
845
+ 'apk': 'در حال دانلود فایل APK...',
846
+ 'manifest': 'در حال دانلود Manifest PWA...',
847
+ 'license': 'در حال دانلود فایل لایسنس...',
848
+ 'script': 'در حال دانلود اسکریپت تکمیل...'
849
+ };
850
+
851
+ showNotification(files[type] || 'در حال دانلود فایل...');
852
+
853
+ // Simulate download progress
854
+ setTimeout(() => {
855
+ showNotification('دانلود با موفقیت انجام شد!');
856
+ }, 2000);
857
+ }
858
+
859
+ // Deployment simulation
860
+ function startDeployment() {
861
+ showNotification('شروع فرآیند استقرار...');
862
+
863
+ const steps = [
864
+ 'بررسی پیش‌نیازها...',
865
+ 'اتصال به سرور...',
866
+ 'بارگذاری فایل‌ها...',
867
+ 'پیکربندی پایگاه داده...',
868
+ 'نصب وابستگی‌ها...',
869
+ 'راه‌اندازی سرویس‌ها...',
870
+ 'تنظیم دامنه...',
871
+ 'استقرار با موفقیت انجام شد!'
872
+ ];
873
+
874
+ steps.forEach((step, index) => {
875
+ setTimeout(() => {
876
+ showNotification(step);
877
+ }, (index + 1) * 1500);
878
+ });
879
+ }
880
+
881
+ // Intersection Observer for animations
882
+ const observerOptions = {
883
+ threshold: 0.1,
884
+ rootMargin: '0px 0px -50px 0px'
885
+ };
886
+
887
+ const observer = new IntersectionObserver((entries) => {
888
+ entries.forEach(entry => {
889
+ if (entry.isIntersecting) {
890
+ entry.target.style.opacity = '1';
891
+ entry.target.style.transform = 'translateY(0)';
892
+ }
893
+ });
894
+ }, observerOptions);
895
+
896
+ // Observe all feature cards
897
+ document.querySelectorAll('.feature-card').forEach(card => {
898
+ card.style.opacity = '0';
899
+ card.style.transform = 'translateY(20px)';
900
+ card.style.transition = 'all 0.6s ease';
901
+ observer.observe(card);
902
+ });
903
+
904
+ // Smooth scroll for internal links
905
+ document.querySelectorAll('a[href^="#"]').forEach(anchor => {
906
+ anchor.addEventListener('click', function (e) {
907
+ e.preventDefault();
908
+ const target = document.querySelector(this.getAttribute('href'));
909
+ if (target) {
910
+ target.scrollIntoView({
911
+ behavior: 'smooth',
912
+ block: 'start'
913
+ });
914
+ }
915
+ });
916
+ });
917
+
918
+ // Parallax effect on scroll
919
+ window.addEventListener('scroll', () => {
920
+ const scrolled = window.pageYOffset;
921
+ const parallax = document.querySelector('body::before');
922
+ if (parallax) {
923
+ const speed = 0.5;
924
+ parallax.style.transform = `translateY(${scrolled * speed}px)`;
925
+ }
926
+ });
927
+
928
+ // Add hover effect to stat cards
929
+ document.querySelectorAll('.stat-card').forEach(card => {
930
+ card.addEventListener('mouseenter', function() {
931
+ this.querySelector('.stat-number').style.transform = 'scale(1.2)';
932
+ });
933
+
934
+ card.addEventListener('mouseleave', function() {
935
+ this.querySelector('.stat-number').style.transform = 'scale(1)';
936
+ });
937
+ });
938
+
939
+ // Dynamic progress bar animation
940
+ window.addEventListener('load', () => {
941
+ const progressBar = document.querySelector('.progress-fill');
942
+ if (progressBar) {
943
+ let width = 0;
944
+ const interval = setInterval(() => {
945
+ if (width >= 100) {
946
+ clearInterval(interval);
947
+ } else {
948
+ width += 2;
949
+ progressBar.style.width = width + '%';
950
+ progressBar.textContent = width + '% تکمیل شده';
951
+ }
952
+ }, 20);
953
+ }
954
+ });
955
+
956
+ // Add ripple effect to buttons
957
+ document.querySelectorAll('button, .download-card').forEach(element => {
958
+ element.addEventListener('click', function(e) {
959
+ const ripple = document.createElement('span');
960
+ ripple.classList.add('ripple');
961
+ this.appendChild(ripple);
962
+
963
+ const rect = this.getBoundingClientRect();
964
+ const size = Math.max(rect.width, rect.height);
965
+ const x = e.clientX - rect.left - size / 2;
966
+ const y = e.clientY - rect.top - size / 2;
967
+
968
+ ripple.style.width = ripple.style.height = size + 'px';
969
+ ripple.style.left = x + 'px';
970
+ ripple.style.top = y + 'px';
971
+
972
+ setTimeout(() => {
973
+ ripple.remove();
974
+ }, 600);
975
+ });
976
+ });
977
+
978
+ // Add CSS for ripple effect
979
+ const style = document.createElement('style');
980
+ style.textContent = `
981
+ .ripple {
982
+ position: absolute;
983
+ border-radius: 50%;
984
+ background: rgba(255, 255, 255, 0.6);
985
+ transform: scale(0);
986
+ animation: ripple-animation 0.6s ease-out;
987
+ pointer-events: none;
988
+ }
989
+
990
+ @keyframes ripple-animation {
991
+ to {
992
+ transform: scale(4);
993
+ opacity: 0;
994
+ }
995
+ }
996
+ `;
997
+ document.head.appendChild(style);
998
+ </script>
999
+ </body>
1000
+ </html>