samirerty commited on
Commit
bf170d4
·
verified ·
1 Parent(s): b96dc0d

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +1051 -19
index.html CHANGED
@@ -1,19 +1,1051 @@
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
+
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>چت روم ساده | گفتگوی آنلاین</title>
8
+
9
+ <!-- Persian Font: Vazirmatn -->
10
+ <link rel="preconnect" href="https://fonts.googleapis.com">
11
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
12
+ <link href="https://fonts.googleapis.com/css2?family=Vazirmatn:wght@100;300;400;500;700;900&display=swap"
13
+ rel="stylesheet">
14
+
15
+ <!-- Icons -->
16
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
17
+
18
+ <style>
19
+ :root {
20
+ --primary: #6366f1;
21
+ --primary-dark: #4f46e5;
22
+ --secondary: #ec4899;
23
+ --background: #0f172a;
24
+ --surface: rgba(30, 41, 59, 0.7);
25
+ --text: #f8fafc;
26
+ --text-muted: #94a3b8;
27
+ --border: rgba(148, 163, 184, 0.1);
28
+ --success: #10b981;
29
+ --warning: #f59e0b;
30
+ --glass: rgba(255, 255, 255, 0.05);
31
+ --shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
32
+ }
33
+
34
+ [data-theme="light"] {
35
+ --background: #f1f5f9;
36
+ --surface: rgba(255, 255, 255, 0.8);
37
+ --text: #1e293b;
38
+ --text-muted: #64748b;
39
+ --border: rgba(148, 163, 184, 0.2);
40
+ --glass: rgba(255, 255, 255, 0.6);
41
+ }
42
+
43
+ * {
44
+ margin: 0;
45
+ padding: 0;
46
+ box-sizing: border-box;
47
+ outline: none;
48
+ }
49
+
50
+ html {
51
+ scroll-behavior: smooth;
52
+ }
53
+
54
+ body {
55
+ font-family: 'Vazirmatn', sans-serif;
56
+ background: var(--background);
57
+ color: var(--text);
58
+ min-height: 100vh;
59
+ overflow-x: hidden;
60
+ transition: background 0.3s ease, color 0.3s ease;
61
+ }
62
+
63
+ /* Animated Background */
64
+ .bg-animation {
65
+ position: fixed;
66
+ top: 0;
67
+ left: 0;
68
+ width: 100%;
69
+ height: 100%;
70
+ z-index: -1;
71
+ overflow: hidden;
72
+ pointer-events: none;
73
+ }
74
+
75
+ .bg-animation .circle {
76
+ position: absolute;
77
+ border-radius: 50%;
78
+ filter: blur(80px);
79
+ opacity: 0.4;
80
+ animation: float 20s infinite ease-in-out;
81
+ }
82
+
83
+ .circle:nth-child(1) {
84
+ width: 400px;
85
+ height: 400px;
86
+ background: var(--primary);
87
+ top: -100px;
88
+ right: -100px;
89
+ animation-delay: 0s;
90
+ }
91
+
92
+ .circle:nth-child(2) {
93
+ width: 300px;
94
+ height: 300px;
95
+ background: var(--secondary);
96
+ bottom: -50px;
97
+ left: -50px;
98
+ animation-delay: 5s;
99
+ }
100
+
101
+ .circle:nth-child(3) {
102
+ width: 250px;
103
+ height: 250px;
104
+ background: var(--success);
105
+ top: 50%;
106
+ left: 50%;
107
+ animation-delay: 10s;
108
+ }
109
+
110
+ @keyframes float {
111
+
112
+ 0%,
113
+ 100% {
114
+ transform: translate(0, 0) scale(1);
115
+ }
116
+
117
+ 33% {
118
+ transform: translate(30px, -50px) scale(1.1);
119
+ }
120
+
121
+ 66% {
122
+ transform: translate(-20px, 20px) scale(0.9);
123
+ }
124
+ }
125
+
126
+ /* Header */
127
+ header {
128
+ position: fixed;
129
+ top: 0;
130
+ width: 100%;
131
+ padding: 1rem 2rem;
132
+ background: var(--glass);
133
+ backdrop-filter: blur(12px);
134
+ -webkit-backdrop-filter: blur(12px);
135
+ border-bottom: 1px solid var(--border);
136
+ z-index: 1000;
137
+ display: flex;
138
+ justify-content: space-between;
139
+ align-items: center;
140
+ }
141
+
142
+ .logo {
143
+ font-size: 1.5rem;
144
+ font-weight: 900;
145
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
146
+ -webkit-background-clip: text;
147
+ -webkit-text-fill-color: transparent;
148
+ background-clip: text;
149
+ display: flex;
150
+ align-items: center;
151
+ gap: 0.5rem;
152
+ }
153
+
154
+ .header-actions {
155
+ display: flex;
156
+ gap: 1rem;
157
+ align-items: center;
158
+ }
159
+
160
+ .built-with {
161
+ font-size: 0.75rem;
162
+ color: var(--text-muted);
163
+ text-decoration: none;
164
+ padding: 0.5rem 1rem;
165
+ border-radius: 2rem;
166
+ background: var(--glass);
167
+ border: 1px solid var(--border);
168
+ transition: all 0.3s ease;
169
+ display: flex;
170
+ align-items: center;
171
+ gap: 0.5rem;
172
+ }
173
+
174
+ .built-with:hover {
175
+ background: var(--primary);
176
+ color: white;
177
+ transform: translateY(-2px);
178
+ border-color: var(--primary);
179
+ }
180
+
181
+ .theme-toggle {
182
+ background: var(--glass);
183
+ border: 1px solid var(--border);
184
+ color: var(--text);
185
+ width: 40px;
186
+ height: 40px;
187
+ border-radius: 50%;
188
+ cursor: pointer;
189
+ display: flex;
190
+ align-items: center;
191
+ justify-content: center;
192
+ transition: all 0.3s ease;
193
+ }
194
+
195
+ .theme-toggle:hover {
196
+ transform: rotate(180deg);
197
+ background: var(--primary);
198
+ border-color: var(--primary);
199
+ }
200
+
201
+ /* Main Container */
202
+ .container {
203
+ max-width: 1200px;
204
+ margin: 0 auto;
205
+ padding: 6rem 2rem 2rem;
206
+ }
207
+
208
+ /* Hero Section */
209
+ .hero {
210
+ text-align: center;
211
+ padding: 4rem 0;
212
+ animation: fadeInUp 1s ease;
213
+ }
214
+
215
+ @keyframes fadeInUp {
216
+ from {
217
+ opacity: 0;
218
+ transform: translateY(30px);
219
+ }
220
+
221
+ to {
222
+ opacity: 1;
223
+ transform: translateY(0);
224
+ }
225
+ }
226
+
227
+ .hero h1 {
228
+ font-size: clamp(2rem, 5vw, 4rem);
229
+ font-weight: 900;
230
+ margin-bottom: 1rem;
231
+ line-height: 1.2;
232
+ }
233
+
234
+ .hero h1 .emoji {
235
+ display: inline-block;
236
+ animation: bounce 2s infinite;
237
+ }
238
+
239
+ @keyframes bounce {
240
+
241
+ 0%,
242
+ 100% {
243
+ transform: translateY(0);
244
+ }
245
+
246
+ 50% {
247
+ transform: translateY(-10px);
248
+ }
249
+ }
250
+
251
+ .subtitle {
252
+ font-size: 1.25rem;
253
+ color: var(--text-muted);
254
+ margin-bottom: 2rem;
255
+ font-weight: 300;
256
+ }
257
+
258
+ /* Features Grid */
259
+ .features {
260
+ display: grid;
261
+ grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
262
+ gap: 2rem;
263
+ margin: 4rem 0;
264
+ perspective: 1000px;
265
+ }
266
+
267
+ .feature {
268
+ background: var(--surface);
269
+ backdrop-filter: blur(10px);
270
+ -webkit-backdrop-filter: blur(10px);
271
+ border: 1px solid var(--border);
272
+ border-radius: 1.5rem;
273
+ padding: 2rem;
274
+ text-align: center;
275
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
276
+ position: relative;
277
+ overflow: hidden;
278
+ cursor: pointer;
279
+ }
280
+
281
+ .feature::before {
282
+ content: '';
283
+ position: absolute;
284
+ top: 0;
285
+ left: 0;
286
+ width: 100%;
287
+ height: 100%;
288
+ background: linear-gradient(135deg, transparent, rgba(255, 255, 255, 0.05));
289
+ opacity: 0;
290
+ transition: opacity 0.3s;
291
+ }
292
+
293
+ .feature:hover {
294
+ transform: translateY(-10px) rotateX(5deg);
295
+ box-shadow: var(--shadow);
296
+ border-color: var(--primary);
297
+ }
298
+
299
+ .feature:hover::before {
300
+ opacity: 1;
301
+ }
302
+
303
+ .icon {
304
+ font-size: 3rem;
305
+ margin-bottom: 1rem;
306
+ display: inline-block;
307
+ transition: transform 0.3s;
308
+ }
309
+
310
+ .feature:hover .icon {
311
+ transform: scale(1.2) rotate(10deg);
312
+ }
313
+
314
+ .feature h3 {
315
+ font-size: 1.25rem;
316
+ margin-bottom: 0.5rem;
317
+ color: var(--text);
318
+ }
319
+
320
+ .feature p {
321
+ color: var(--text-muted);
322
+ font-size: 0.95rem;
323
+ line-height: 1.6;
324
+ }
325
+
326
+ /* CTA Section */
327
+ .cta {
328
+ display: flex;
329
+ gap: 1rem;
330
+ justify-content: center;
331
+ flex-wrap: wrap;
332
+ margin: 3rem 0;
333
+ }
334
+
335
+ .btn {
336
+ padding: 1rem 2.5rem;
337
+ border-radius: 2rem;
338
+ font-family: inherit;
339
+ font-size: 1rem;
340
+ font-weight: 700;
341
+ cursor: pointer;
342
+ transition: all 0.3s ease;
343
+ border: none;
344
+ text-decoration: none;
345
+ display: inline-flex;
346
+ align-items: center;
347
+ gap: 0.5rem;
348
+ position: relative;
349
+ overflow: hidden;
350
+ }
351
+
352
+ .btn-primary {
353
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
354
+ color: white;
355
+ box-shadow: 0 4px 15px rgba(99, 102, 241, 0.4);
356
+ }
357
+
358
+ .btn-secondary {
359
+ background: var(--glass);
360
+ color: var(--text);
361
+ border: 2px solid var(--border);
362
+ backdrop-filter: blur(10px);
363
+ }
364
+
365
+ .btn:hover {
366
+ transform: translateY(-3px);
367
+ box-shadow: 0 10px 25px rgba(0, 0, 0, 0.2);
368
+ }
369
+
370
+ .btn:active {
371
+ transform: translateY(-1px);
372
+ }
373
+
374
+ .btn::after {
375
+ content: '';
376
+ position: absolute;
377
+ top: 50%;
378
+ left: 50%;
379
+ width: 0;
380
+ height: 0;
381
+ border-radius: 50%;
382
+ background: rgba(255, 255, 255, 0.3);
383
+ transform: translate(-50%, -50%);
384
+ transition: width 0.6s, height 0.6s;
385
+ }
386
+
387
+ .btn:active::after {
388
+ width: 300px;
389
+ height: 300px;
390
+ }
391
+
392
+ /* Modal Styles */
393
+ .modal {
394
+ display: none;
395
+ position: fixed;
396
+ top: 0;
397
+ left: 0;
398
+ width: 100%;
399
+ height: 100%;
400
+ background: rgba(0, 0, 0, 0.8);
401
+ backdrop-filter: blur(5px);
402
+ z-index: 2000;
403
+ justify-content: center;
404
+ align-items: center;
405
+ opacity: 0;
406
+ transition: opacity 0.3s;
407
+ }
408
+
409
+ .modal.active {
410
+ display: flex;
411
+ opacity: 1;
412
+ }
413
+
414
+ .modal-content {
415
+ background: var(--surface);
416
+ border: 1px solid var(--border);
417
+ border-radius: 2rem;
418
+ padding: 2.5rem;
419
+ width: 90%;
420
+ max-width: 450px;
421
+ position: relative;
422
+ transform: scale(0.9);
423
+ transition: transform 0.3s;
424
+ box-shadow: var(--shadow);
425
+ backdrop-filter: blur(20px);
426
+ }
427
+
428
+ .modal.active .modal-content {
429
+ transform: scale(1);
430
+ }
431
+
432
+ .close-modal {
433
+ position: absolute;
434
+ top: 1rem;
435
+ left: 1rem;
436
+ background: none;
437
+ border: none;
438
+ color: var(--text-muted);
439
+ font-size: 1.5rem;
440
+ cursor: pointer;
441
+ width: 40px;
442
+ height: 40px;
443
+ border-radius: 50%;
444
+ display: flex;
445
+ align-items: center;
446
+ justify-content: center;
447
+ transition: all 0.3s;
448
+ }
449
+
450
+ .close-modal:hover {
451
+ background: var(--glass);
452
+ color: var(--text);
453
+ transform: rotate(90deg);
454
+ }
455
+
456
+ .form-group {
457
+ margin-bottom: 1.5rem;
458
+ }
459
+
460
+ .form-group label {
461
+ display: block;
462
+ margin-bottom: 0.5rem;
463
+ color: var(--text);
464
+ font-weight: 500;
465
+ }
466
+
467
+ .form-group input {
468
+ width: 100%;
469
+ padding: 0.75rem 1rem;
470
+ border: 2px solid var(--border);
471
+ border-radius: 1rem;
472
+ background: var(--glass);
473
+ color: var(--text);
474
+ font-family: inherit;
475
+ font-size: 1rem;
476
+ transition: all 0.3s;
477
+ }
478
+
479
+ .form-group input:focus {
480
+ outline: none;
481
+ border-color: var(--primary);
482
+ box-shadow: 0 0 0 3px rgba(99, 102, 241, 0.1);
483
+ background: rgba(255, 255, 255, 0.1);
484
+ }
485
+
486
+ .form-submit {
487
+ width: 100%;
488
+ margin-top: 1rem;
489
+ }
490
+
491
+ /* Chat Application Interface */
492
+ #chat-app {
493
+ display: none;
494
+ height: calc(100vh - 80px);
495
+ margin-top: 80px;
496
+ }
497
+
498
+ .chat-container {
499
+ display: grid;
500
+ grid-template-columns: 300px 1fr;
501
+ height: 100%;
502
+ gap: 1rem;
503
+ padding: 1rem;
504
+ }
505
+
506
+ .sidebar {
507
+ background: var(--surface);
508
+ border: 1px solid var(--border);
509
+ border-radius: 1.5rem;
510
+ padding: 1.5rem;
511
+ display: flex;
512
+ flex-direction: column;
513
+ gap: 1rem;
514
+ backdrop-filter: blur(10px);
515
+ }
516
+
517
+ .user-profile {
518
+ text-align: center;
519
+ padding-bottom: 1rem;
520
+ border-bottom: 1px solid var(--border);
521
+ }
522
+
523
+ .avatar {
524
+ width: 80px;
525
+ height: 80px;
526
+ border-radius: 50%;
527
+ background: linear-gradient(135deg, var(--primary), var(--secondary));
528
+ display: flex;
529
+ align-items: center;
530
+ justify-content: center;
531
+ font-size: 2rem;
532
+ margin: 0 auto 0.5rem;
533
+ border: 3px solid var(--border);
534
+ color: white;
535
+ }
536
+
537
+ .rooms-list {
538
+ flex: 1;
539
+ overflow-y: auto;
540
+ }
541
+
542
+ .room-item {
543
+ padding: 1rem;
544
+ margin-bottom: 0.5rem;
545
+ border-radius: 1rem;
546
+ cursor: pointer;
547
+ transition: all 0.3s;
548
+ display: flex;
549
+ align-items: center;
550
+ gap: 0.75rem;
551
+ border: 1px solid transparent;
552
+ }
553
+
554
+ .room-item:hover,
555
+ .room-item.active {
556
+ background: var(--glass);
557
+ border-color: var(--primary);
558
+ }
559
+
560
+ .room-item.active {
561
+ background: rgba(99, 102, 241, 0.1);
562
+ }
563
+
564
+ .chat-area {
565
+ background: var(--surface);
566
+ border: 1px solid var(--border);
567
+ border-radius: 1.5rem;
568
+ display: flex;
569
+ flex-direction: column;
570
+ overflow: hidden;
571
+ backdrop-filter: blur(10px);
572
+ }
573
+
574
+ .chat-header {
575
+ padding: 1.5rem;
576
+ border-bottom: 1px solid var(--border);
577
+ display: flex;
578
+ justify-content: space-between;
579
+ align-items: center;
580
+ }
581
+
582
+ .chat-messages {
583
+ flex: 1;
584
+ overflow-y: auto;
585
+ padding: 1.5rem;
586
+ display: flex;
587
+ flex-direction: column;
588
+ gap: 1rem;
589
+ }
590
+
591
+ .message {
592
+ max-width: 70%;
593
+ padding: 1rem 1.25rem;
594
+ border-radius: 1.25rem;
595
+ position: relative;
596
+ animation: messageSlide 0.3s cubic-bezier(0.25, 1, 0.5, 1);
597
+ word-wrap: break-word;
598
+ }
599
+
600
+ @keyframes messageSlide {
601
+ from {
602
+ opacity: 0;
603
+ transform: translateY(10px) scale(0.95);
604
+ }
605
+
606
+ to {
607
+ opacity: 1;
608
+ transform: translateY(0) scale(1);
609
+ }
610
+ }
611
+
612
+ .message.sent {
613
+ align-self: flex-start; /* In RTL, flex-start is Right */
614
+ background: linear-gradient(135deg, var(--primary), var(--primary-dark));
615
+ color: white;
616
+ border-bottom-right-radius: 0.25rem;
617
+ }
618
+
619
+ .message.received {
620
+ align-self: flex-end; /* In RTL, flex-end is Left */
621
+ background: var(--glass);
622
+ border: 1px solid var(--border);
623
+ border-bottom-left-radius: 0.25rem;
624
+ }
625
+
626
+ .message-author {
627
+ font-size: 0.75rem;
628
+ opacity: 0.8;
629
+ margin-bottom: 0.25rem;
630
+ font-weight: 700;
631
+ }
632
+
633
+ .message-time {
634
+ font-size: 0.7rem;
635
+ opacity: 0.6;
636
+ margin-top: 0.5rem;
637
+ display: block;
638
+ text-align: left;
639
+ }
640
+
641
+ .chat-input {
642
+ padding: 1.5rem;
643
+ border-top: 1px solid var(--border);
644
+ display: flex;
645
+ gap: 1rem;
646
+ }
647
+
648
+ .chat-input input {
649
+ flex: 1;
650
+ padding: 0.75rem 1.25rem;
651
+ border: 2px solid var(--border);
652
+ border-radius: 2rem;
653
+ background: var(--glass);
654
+ color: var(--text);
655
+ font-family: inherit;
656
+ font-size: 1rem;
657
+ transition: border-color 0.3s;
658
+ }
659
+
660
+ .chat-input input:focus {
661
+ outline: none;
662
+ border-color: var(--primary);
663
+ }
664
+
665
+ .send-btn {
666
+ width: 50px;
667
+ height: 50px;
668
+ border-radius: 50%;
669
+ background: var(--primary);
670
+ color: white;
671
+ border: none;
672
+ cursor: pointer;
673
+ display: flex;
674
+ align-items: center;
675
+ justify-content: center;
676
+ transition: all 0.3s;
677
+ font-size: 1.25rem;
678
+ }
679
+
680
+ .send-btn:hover {
681
+ background: var(--primary-dark);
682
+ transform: scale(1.1) rotate(-10deg);
683
+ }
684
+
685
+ /* Responsive */
686
+ @media (max-width: 768px) {
687
+ .chat-container {
688
+ grid-template-columns: 1fr;
689
+ position: relative;
690
+ }
691
+
692
+ .sidebar {
693
+ position: absolute;
694
+ right: -100%;
695
+ top: 0;
696
+ height: 100%;
697
+ width: 280px;
698
+ z-index: 100;
699
+ transition: right 0.3s cubic-bezier(0.4, 0, 0.2, 1);
700
+ box-shadow: var(--shadow);
701
+ background: var(--background); /* Solid background for mobile sidebar */
702
+ }
703
+
704
+ .sidebar.open {
705
+ right: 0;
706
+ }
707
+
708
+ .mobile-menu-btn {
709
+ display: block !important;
710
+ }
711
+
712
+ .features {
713
+ grid-template-columns: 1fr;
714
+ }
715
+
716
+ .hero h1 {
717
+ font-size: 2.5rem;
718
+ }
719
+ }
720
+
721
+ .mobile-menu-btn {
722
+ display: none;
723
+ background: var(--glass);
724
+ border: 1px solid var(--border);
725
+ color: var(--text);
726
+ padding: 0.5rem 1rem;
727
+ border-radius: 0.5rem;
728
+ cursor: pointer;
729
+ }
730
+
731
+ /* Scrollbar */
732
+ ::-webkit-scrollbar {
733
+ width: 8px;
734
+ }
735
+
736
+ ::-webkit-scrollbar-track {
737
+ background: transparent;
738
+ }
739
+
740
+ ::-webkit-scrollbar-thumb {
741
+ background: var(--border);
742
+ border-radius: 4px;
743
+ }
744
+
745
+ ::-webkit-scrollbar-thumb:hover {
746
+ background: var(--primary);
747
+ }
748
+
749
+ /* Loading Animation */
750
+ .typing-indicator {
751
+ display: none;
752
+ align-self: flex-end; /* Left side in RTL */
753
+ background: var(--glass);
754
+ padding: 1rem 1.5rem;
755
+ border-radius: 1.25rem;
756
+ border-bottom-left-radius: 0.25rem;
757
+ border: 1px solid var(--border);
758
+ margin-bottom: 1rem;
759
+ }
760
+
761
+ .typing-indicator.active {
762
+ display: flex;
763
+ gap: 0.25rem;
764
+ animation: messageSlide 0.3s ease;
765
+ }
766
+
767
+ .typing-dot {
768
+ width: 8px;
769
+ height: 8px;
770
+ background: var(--text-muted);
771
+ border-radius: 50%;
772
+ animation: typing 1.4s infinite;
773
+ }
774
+
775
+ .typing-dot:nth-child(2) {
776
+ animation-delay: 0.2s;
777
+ }
778
+
779
+ .typing-dot:nth-child(3) {
780
+ animation-delay: 0.4s;
781
+ }
782
+
783
+ @keyframes typing {
784
+
785
+ 0%,
786
+ 60%,
787
+ 100% {
788
+ transform: translateY(0);
789
+ }
790
+
791
+ 30% {
792
+ transform: translateY(-10px);
793
+ }
794
+ }
795
+ </style>
796
+ </head>
797
+
798
+ <body>
799
+ <!-- Animated Background -->
800
+ <div class="bg-animation">
801
+ <div class="circle"></div>
802
+ <div class="circle"></div>
803
+ <div class="circle"></div>
804
+ </div>
805
+
806
+ <!-- Header -->
807
+ <header>
808
+ <div class="logo">
809
+ <i class="fas fa-comments"></i>
810
+ <span>چت روم</span>
811
+ </div>
812
+ <div class="header-actions">
813
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="built-with">
814
+ <i class="fas fa-code"></i> Built with anycoder
815
+ </a>
816
+ <button class="theme-toggle" onclick="toggleTheme()" title="تغییر تم">
817
+ <i class="fas fa-moon"></i>
818
+ </button>
819
+ </div>
820
+ </header>
821
+
822
+ <!-- Landing Page -->
823
+ <div id="landing" class="container">
824
+ <div class="hero">
825
+ <h1><span class="emoji">💬</span> چت روم ساده</h1>
826
+ <p class="subtitle">محلی امن و سریع برای گفتگو با دوستان و همکاران</p>
827
+ </div>
828
+
829
+ <div class="features">
830
+ <div class="feature" onclick="showRegister()">
831
+ <div class="icon">🔐</div>
832
+ <h3>ثبت‌نام آسان</h3>
833
+ <p>با چند کلیک ساده ثبت‌نام کنید و بلافاصله شروع به چت کنید</p>
834
+ </div>
835
+
836
+ <div class="feature" onclick="showRegister()">
837
+ <div class="icon">👥</div>
838
+ <h3>اتاق‌های گفتگو</h3>
839
+ <p>تا ۳ اتاق مختلف بسازید و گروه‌های خصوصی ایجاد کنید</p>
840
+ </div>
841
+
842
+ <div class="feature" onclick="showRegister()">
843
+ <div class="icon">⚡</div>
844
+ <h3>چت زنده</h3>
845
+ <p>ارسال پیام فوری با قابلیت مشاهده وضعیت تایپ</p>
846
+ </div>
847
+ </div>
848
+
849
+ <div class="cta">
850
+ <button onclick="showRegister()" class="btn btn-primary">
851
+ <i class="fas fa-rocket"></i>
852
+ شروع کنید
853
+ </button>
854
+ <button onclick="showLogin()" class="btn btn-secondary">
855
+ <i class="fas fa-sign-in-alt"></i>
856
+ ورود
857
+ </button>
858
+ </div>
859
+ </div>
860
+
861
+ <!-- Auth Modals -->
862
+ <div id="login-modal" class="modal">
863
+ <div class="modal-content">
864
+ <button class="close-modal" onclick="closeModals()">
865
+ <i class="fas fa-times"></i>
866
+ </button>
867
+ <h2 style="margin-bottom: 1.5rem; text-align: center;">
868
+ <i class="fas fa-sign-in-alt" style="color: var(--primary);"></i>
869
+ ورود به حساب
870
+ </h2>
871
+ <form onsubmit="handleLogin(event)">
872
+ <div class="form-group">
873
+ <label>شماره موبایل</label>
874
+ <input type="tel" placeholder="09*********" required pattern="09[0-9]{9}">
875
+ </div>
876
+ <div class="form-group">
877
+ <label>رمز عبور</label>
878
+ <input type="password" placeholder="••••••••" required>
879
+ </div>
880
+ <button type="submit" class="btn btn-primary form-submit">
881
+ ورود
882
+ </button>
883
+ </form>
884
+ <p style="text-align: center; margin-top: 1rem; color: var(--text-muted);">
885
+ حساب ندارید؟
886
+ <a href="#" onclick="closeModals(); showRegister();"
887
+ style="color: var(--primary); text-decoration: none;">ثبت‌نام کنید</a>
888
+ </p>
889
+ </div>
890
+ </div>
891
+
892
+ <div id="register-modal" class="modal">
893
+ <div class="modal-content">
894
+ <button class="close-modal" onclick="closeModals()">
895
+ <i class="fas fa-times"></i>
896
+ </button>
897
+ <h2 style="margin-bottom: 1.5rem; text-align: center;">
898
+ <i class="fas fa-user-plus" style="color: var(--secondary);"></i>
899
+ ایجاد حساب جدید
900
+ </h2>
901
+ <form onsubmit="handleRegister(event)">
902
+ <div class="form-group">
903
+ <label>نام کامل</label>
904
+ <input type="text" placeholder="نام و نام خانوادگی" required>
905
+ </div>
906
+ <div class="form-group">
907
+ <label>شماره موبایل</label>
908
+ <input type="tel" placeholder="09*********" required pattern="09[0-9]{9}">
909
+ </div>
910
+ <div class="form-group">
911
+ <label>رمز عبور</label>
912
+ <input type="password" placeholder="حداقل ۸ کاراکتر" required minlength="8">
913
+ </div>
914
+ <button type="submit" class="btn btn-primary form-submit">
915
+ ثبت‌نام
916
+ </button>
917
+ </form>
918
+ </div>
919
+ </div>
920
+
921
+ <!-- Chat Application -->
922
+ <div id="chat-app">
923
+ <div class="chat-container">
924
+ <aside class="sidebar" id="sidebar">
925
+ <div class="user-profile">
926
+ <div class="avatar" id="user-avatar">👤</div>
927
+ <h3 id="user-name">کاربر مهمان</h3>
928
+ <p style="color: var(--text-muted); font-size: 0.875rem;">آنلاین</p>
929
+ </div>
930
+
931
+ <div style="display: flex; justify-content: space-between; align-items: center; margin-bottom: 1rem;">
932
+ <h4 style="font-size: 0.875rem; color: var(--text-muted);">اتاق‌های شما</h4>
933
+ <button onclick="createNewRoom()" style="background: var(--primary); color: white; border: none; width: 30px; height: 30px; border-radius: 50%; cursor: pointer; transition: transform 0.2s;" onmouseover="this.style.transform='scale(1.1)'" onmouseout="this.style.transform='scale(1)'">
934
+ <i class="fas fa-plus"></i>
935
+ </button>
936
+ </div>
937
+
938
+ <div class="rooms-list" id="rooms-list">
939
+ <div class="room-item active" onclick="switchRoom(0)">
940
+ <i class="fas fa-hashtag" style="color: var(--primary);"></i>
941
+ <div>
942
+ <div style="font-weight: 700;">عمومی</div>
943
+ <div style="font-size: 0.75rem; color: var(--text-muted);">۱۲ عضو آنلاین</div>
944
+ </div>
945
+ </div>
946
+ <div class="room-item" onclick="switchRoom(1)">
947
+ <i class="fas fa-lock" style="color: var(--secondary);"></i>
948
+ <div>
949
+ <div style="font-weight: 700;">خصوصی</div>
950
+ <div style="font-size: 0.75rem; color: var(--text-muted);">۳ عضو</div>
951
+ </div>
952
+ </div>
953
+ </div>
954
+
955
+ <button onclick="logout()" class="btn btn-secondary" style="width: 100%; margin-top: auto;">
956
+ <i class="fas fa-sign-out-alt"></i>
957
+ خروج
958
+ </button>
959
+ </aside>
960
+
961
+ <main class="chat-area">
962
+ <div class="chat-header">
963
+ <div style="display: flex; align-items: center; gap: 1rem;">
964
+ <button class="mobile-menu-btn" onclick="toggleSidebar()">
965
+ <i class="fas fa-bars"></i>
966
+ </button>
967
+ <div>
968
+ <h3 id="current-room-name">اتاق عمومی</h3>
969
+ <p style="font-size: 0.875rem; color: var(--text-muted);">
970
+ <span class="online-count">۱۲</span> عضو آنلاین
971
+ </p>
972
+ </div>
973
+ </div>
974
+ <div style="display: flex; gap: 0.5rem;">
975
+ <button style="background: var(--glass); border: 1px solid var(--border); color: var(--text); width: 40px; height: 40px; border-radius: 50%; cursor: pointer; transition: background 0.3s;" onmouseover="this.style.background='var(--primary)'" onmouseout="this.style.background='var(--glass)'">
976
+ <i class="fas fa-search"></i>
977
+ </button>
978
+ <button style="background: var(--glass); border: 1px solid var(--border); color: var(--text); width: 40px; height: 40px; border-radius: 50%; cursor: pointer; transition: background 0.3s;" onmouseover="this.style.background='var(--secondary)'" onmouseout="this.style.background='var(--glass)'">
979
+ <i class="fas fa-ellipsis-v"></i>
980
+ </button>
981
+ </div>
982
+ </div>
983
+
984
+ <div class="chat-messages" id="chat-messages">
985
+ <div class="message received">
986
+ <div class="message-author">پشتیبانی</div>
987
+ به چت روم خوش آمدید! 👋
988
+ <span class="message-time">۱۰:۳۰</span>
989
+ </div>
990
+ </div>
991
+
992
+ <div class="typing-indicator" id="typing-indicator">
993
+ <div class="typing-dot"></div>
994
+ <div class="typing-dot"></div>
995
+ <div class="typing-dot"></div>
996
+ </div>
997
+
998
+ <div class="chat-input">
999
+ <button style="background: none; border: none; color: var(--text-muted); font-size: 1.25rem; cursor: pointer; transition: color 0.3s;" onmouseover="this.style.color='var(--primary)'" onmouseout="this.style.color='var(--text-muted)'">
1000
+ <i class="fas fa-paperclip"></i>
1001
+ </button>
1002
+ <input type="text" id="message-input" placeholder="پیام خود را بنویسید..." onkeypress="handleKeyPress(event)">
1003
+ <button class="send-btn" onclick="sendMessage()">
1004
+ <i class="fas fa-paper-plane"></i>
1005
+ </button>
1006
+ </div>
1007
+ </main>
1008
+ </div>
1009
+ </div>
1010
+
1011
+ <script>
1012
+ // State Management
1013
+ let currentUser = null;
1014
+ let currentRoom = 0;
1015
+ let rooms = [
1016
+ { name: 'عمومی', messages: [], online: 12 },
1017
+ { name: 'خصوصی', messages: [], online: 3 }
1018
+ ];
1019
+
1020
+ // Random Responses for simulation
1021
+ const randomResponses = [
1022
+ "بسیار عالی! 👍",
1023
+ "من موافقم.",
1024
+ "می‌توانی بیشتر توضیح بدهی؟",
1025
+ "این جالب است! 🤔",
1026
+ "هoho! 😂",
1027
+ "بله، درست می‌گویی.",
1028
+ "منتظر پیام بعدی هستم..."
1029
+ ];
1030
+
1031
+ // Theme Toggle
1032
+ function toggleTheme() {
1033
+ const html = document.documentElement;
1034
+ const currentTheme = html.getAttribute('data-theme');
1035
+ const newTheme = currentTheme === 'light' ? 'dark' : 'light';
1036
+ html.setAttribute('data-theme', newTheme);
1037
+ localStorage.setItem('theme', newTheme);
1038
+
1039
+ const icon = document.querySelector('.theme-toggle i');
1040
+ icon.className = newTheme === 'light' ? 'fas fa-sun' : 'fas fa-moon';
1041
+ }
1042
+
1043
+ // Initialize Theme
1044
+ const savedTheme = localStorage.getItem('theme') || 'dark';
1045
+ document.documentElement.setAttribute('data-theme', savedTheme);
1046
+ document.querySelector('.theme-toggle i').className = savedTheme === 'light' ? 'fas fa-sun' : 'fas fa-moon';
1047
+
1048
+ // Modal Functions
1049
+ function showLogin() {
1050
+ document.getElementById('login-modal').classList.add('active');
1051
+ }