samirerty commited on
Commit
352c8b1
·
verified ·
1 Parent(s): d1c6688

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +354 -582
index.html CHANGED
@@ -3,26 +3,33 @@
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
- <title>چت روم ساده</title>
 
7
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
8
- <link href="https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;500;700&display=swap" rel="stylesheet">
 
 
9
  <style>
10
  :root {
11
- --ios-bg-start: #1a1a2e;
12
- --ios-bg-mid: #16213e;
13
- --ios-bg-end: #0f3460;
 
 
 
 
 
14
  --glass-bg: rgba(255, 255, 255, 0.1);
15
  --glass-border: rgba(255, 255, 255, 0.2);
16
- --glass-highlight: rgba(255, 255, 255, 0.05);
17
- --accent-pink: #E94584;
18
- --accent-cyan: #4FD3C4;
19
- --accent-purple: #533483;
20
- --text-primary: rgba(255, 255, 255, 0.95);
21
- --text-secondary: rgba(255, 255, 255, 0.7);
22
- --shadow-sm: 0 4px 6px rgba(0, 0, 0, 0.1);
23
- --shadow-md: 0 8px 32px rgba(0, 0, 0, 0.2);
24
- --shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.3);
25
- --transition-smooth: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
26
  }
27
 
28
  * {
@@ -32,724 +39,489 @@
32
  -webkit-tap-highlight-color: transparent;
33
  }
34
 
35
- html {
36
- font-size: 16px;
37
- height: 100%;
38
- }
39
-
40
  body {
41
- font-family: 'Vazirmatn', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
42
- background: linear-gradient(135deg, var(--ios-bg-start) 0%, var(--ios-bg-mid) 50%, var(--ios-bg-end) 100%);
43
  min-height: 100vh;
44
- overflow-x: hidden;
45
- position: relative;
46
- color: var(--text-primary);
47
- }
48
-
49
- /* Animated Background Pattern */
50
- body::before {
51
- content: '';
52
- position: fixed;
53
- top: 0;
54
- left: 0;
55
- width: 100%;
56
- height: 100%;
57
- background-image:
58
- radial-gradient(circle at 20% 50%, rgba(233, 69, 132, 0.15) 0%, transparent 50%),
59
- radial-gradient(circle at 80% 80%, rgba(79, 211, 196, 0.1) 0%, transparent 50%),
60
- radial-gradient(circle at 40% 20%, rgba(83, 52, 131, 0.2) 0%, transparent 50%);
61
- pointer-events: none;
62
- z-index: -1;
63
- }
64
-
65
- /* Geometric Pattern Overlay */
66
- .pattern-overlay {
67
- position: fixed;
68
- top: 0;
69
- left: 0;
70
- width: 100%;
71
- height: 100%;
72
- background-image:
73
- linear-gradient(45deg, transparent 48%, rgba(255,255,255,0.02) 50%, transparent 52%),
74
- linear-gradient(-45deg, transparent 48%, rgba(255,255,255,0.02) 50%, transparent 52%);
75
- background-size: 60px 60px;
76
- pointer-events: none;
77
- z-index: -1;
78
- }
79
-
80
- /* iOS Status Bar */
81
- .status-bar {
82
  display: flex;
83
- justify-content: space-between;
84
- align-items: center;
85
- padding: 0.75rem 1.5rem;
86
- font-size: 0.875rem;
87
- font-weight: 600;
88
- position: sticky;
89
- top: 0;
90
- z-index: 100;
91
- backdrop-filter: blur(20px);
92
- background: rgba(26, 26, 46, 0.8);
93
- border-bottom: 1px solid var(--glass-border);
94
- }
95
-
96
- .status-time {
97
- font-variant-numeric: tabular-nums;
98
- }
99
-
100
- .status-icons {
101
- display: flex;
102
- gap: 0.5rem;
103
  align-items: center;
 
 
 
104
  }
105
 
106
- .status-icons i {
107
- font-size: 0.875rem;
108
- }
109
-
110
- .battery-icon {
111
- display: flex;
112
- align-items: center;
113
- gap: 0.25rem;
114
  }
115
 
116
- /* Built with anycoder */
117
- .developer-credit {
118
- position: fixed;
119
- top: 2.5rem;
120
- left: 1rem;
121
- z-index: 101;
122
- font-size: 0.75rem;
123
- opacity: 0.8;
124
- backdrop-filter: blur(10px);
125
- background: rgba(255, 255, 255, 0.1);
126
- padding: 0.25rem 0.75rem;
127
- border-radius: 1rem;
128
- border: 1px solid var(--glass-border);
129
- transition: var(--transition-smooth);
130
  }
131
 
132
- .developer-credit:hover {
133
- background: rgba(255, 255, 255, 0.2);
134
- transform: translateY(-2px);
 
 
 
 
 
135
  }
136
 
137
- .developer-credit a {
138
- color: var(--text-secondary);
139
- text-decoration: none;
140
- font-weight: 500;
141
  }
142
 
143
- /* Main Container */
144
- .container {
145
- max-width: 430px;
146
- margin: 0 auto;
147
- padding: 1.5rem;
148
- min-height: calc(100vh - 44px);
 
 
149
  display: flex;
150
  flex-direction: column;
151
- gap: 1.5rem;
152
- padding-bottom: 120px;
153
  }
154
 
155
- /* Glassmorphism Base */
156
  .glass {
157
  background: var(--glass-bg);
158
  backdrop-filter: blur(20px);
159
  -webkit-backdrop-filter: blur(20px);
160
  border: 1px solid var(--glass-border);
161
- box-shadow:
162
- 0 8px 32px 0 rgba(0, 0, 0, 0.2),
163
- inset 0 1px 0 0 rgba(255, 255, 255, 0.1);
164
- border-radius: 1.5rem;
165
- }
166
-
167
- /* Hero Widget */
168
- .hero-widget {
169
- padding: 2rem;
170
- text-align: center;
171
- position: relative;
172
- overflow: hidden;
173
- transition: var(--transition-smooth);
174
- }
175
-
176
- .hero-widget::before {
177
- content: '';
178
- position: absolute;
179
- top: -50%;
180
- right: -50%;
181
- width: 200%;
182
- height: 200%;
183
- background: radial-gradient(circle, rgba(233, 69, 132, 0.2) 0%, transparent 70%);
184
- animation: pulse 4s ease-in-out infinite;
185
- }
186
-
187
- @keyframes pulse {
188
- 0%, 100% { transform: scale(1); opacity: 0.5; }
189
- 50% { transform: scale(1.1); opacity: 0.8; }
190
- }
191
-
192
- .hero-content {
193
- position: relative;
194
- z-index: 1;
195
  }
196
 
197
- .hero-icon {
198
- width: 5rem;
199
- height: 5rem;
200
- background: linear-gradient(135deg, var(--accent-pink), var(--accent-purple));
201
- border-radius: 1.25rem;
202
- display: flex;
203
- align-items: center;
204
- justify-content: center;
205
- margin: 0 auto 1.5rem;
206
- font-size: 2.5rem;
207
- box-shadow: 0 10px 30px rgba(233, 69, 132, 0.4);
208
- transition: var(--transition-smooth);
209
- }
210
-
211
- .hero-widget:hover .hero-icon {
212
- transform: scale(1.1) rotate(-5deg);
213
- box-shadow: 0 15px 40px rgba(233, 69, 132, 0.5);
214
- }
215
-
216
- .hero h1 {
217
- font-size: 1.75rem;
218
- font-weight: 700;
219
- margin-bottom: 0.5rem;
220
- text-shadow: 0 2px 4px rgba(0,0,0,0.2);
221
- }
222
-
223
- .subtitle {
224
- color: var(--text-secondary);
225
- font-size: 1rem;
226
- font-weight: 400;
227
- }
228
-
229
- /* Date & Time Widget */
230
- .datetime-widget {
231
- padding: 1.25rem;
232
  display: flex;
233
  justify-content: space-between;
234
  align-items: center;
235
- margin-bottom: 0.5rem;
236
- }
237
-
238
- .date-info h2 {
239
- font-size: 1.25rem;
240
  font-weight: 600;
241
- margin-bottom: 0.25rem;
242
- }
243
-
244
- .date-info p {
245
- font-size: 0.875rem;
246
- color: var(--text-secondary);
247
- }
248
-
249
- .weather-icon {
250
- font-size: 2rem;
251
- color: var(--accent-cyan);
252
- }
253
-
254
- /* Apps Grid */
255
- .apps-section {
256
- margin-top: 1rem;
257
- }
258
-
259
- .section-title {
260
- font-size: 1.25rem;
261
- font-weight: 700;
262
- margin-bottom: 1rem;
263
- padding-right: 0.5rem;
264
- display: flex;
265
- align-items: center;
266
- gap: 0.5rem;
267
- }
268
-
269
- .apps-grid {
270
- display: grid;
271
- grid-template-columns: repeat(3, 1fr);
272
- gap: 1.5rem 1rem;
273
- margin-bottom: 2rem;
274
  }
275
 
276
- .app-item {
277
  display: flex;
278
- flex-direction: column;
279
  align-items: center;
280
- gap: 0.5rem;
281
- cursor: pointer;
282
- transition: var(--transition-smooth);
283
  }
284
 
285
- .app-item:active {
286
- transform: scale(0.95);
287
- }
288
-
289
- .app-icon {
290
- width: 4rem;
291
- height: 4rem;
292
- border-radius: 1rem;
293
  display: flex;
 
294
  align-items: center;
295
- justify-content: center;
296
- font-size: 1.75rem;
297
- position: relative;
298
- overflow: hidden;
299
- transition: var(--transition-smooth);
300
- box-shadow:
301
- 0 4px 15px rgba(0,0,0,0.2),
302
- inset 0 1px 0 rgba(255,255,255,0.2);
303
- }
304
-
305
- .app-item:hover .app-icon {
306
- transform: translateY(-5px);
307
- box-shadow:
308
- 0 8px 25px rgba(0,0,0,0.3),
309
- inset 0 1px 0 rgba(255,255,255,0.3);
310
  }
311
 
312
- .app-icon::after {
313
- content: '';
314
- position: absolute;
315
- top: 0;
316
- left: 0;
317
- right: 0;
318
- height: 50%;
319
- background: linear-gradient(to bottom, rgba(255,255,255,0.3), transparent);
320
- border-radius: 1rem 1rem 0 0;
321
  }
 
322
 
323
- .app-icon.pink {
324
- background: linear-gradient(135deg, var(--accent-pink), #ff6b9d);
 
 
 
 
 
325
  }
326
-
327
- .app-icon.purple {
328
- background: linear-gradient(135deg, var(--accent-purple), #7c5cff);
329
  }
330
 
331
- .app-icon.cyan {
332
- background: linear-gradient(135deg, var(--accent-cyan), #6ee7d8);
 
 
 
 
 
 
 
 
333
  }
334
-
335
- .app-icon.blue {
336
- background: linear-gradient(135deg, #3b82f6, #60a5fa);
337
  }
338
 
339
- .app-icon.green {
340
- background: linear-gradient(135deg, #10b981, #34d399);
 
 
341
  }
342
 
343
- .app-icon.orange {
344
- background: linear-gradient(135deg, #f59e0b, #fbbf24);
 
 
345
  }
346
 
347
- .app-label {
348
- font-size: 0.75rem;
349
- font-weight: 500;
350
- color: var(--text-primary);
351
- text-align: center;
352
- max-width: 100%;
353
- overflow: hidden;
354
- text-overflow: ellipsis;
355
- white-space: nowrap;
356
  }
357
 
358
- /* Features as Widgets */
359
- .features-container {
 
360
  display: flex;
361
  flex-direction: column;
362
- gap: 1rem;
363
- margin: 1rem 0;
364
- }
365
-
366
- .feature-card {
367
- padding: 1.25rem;
368
- display: flex;
369
  align-items: center;
370
- gap: 1rem;
371
- transition: var(--transition-smooth);
372
  cursor: pointer;
373
  }
374
 
375
- .feature-card:hover {
376
  background: rgba(255, 255, 255, 0.15);
377
- transform: translateX(-5px);
378
  }
379
 
380
- .feature-icon-small {
381
- width: 3rem;
382
- height: 3rem;
383
- border-radius: 0.875rem;
 
384
  display: flex;
385
  align-items: center;
386
  justify-content: center;
387
- font-size: 1.25rem;
388
- flex-shrink: 0;
 
 
389
  }
390
 
391
- .feature-content h3 {
392
  font-size: 1rem;
393
- font-weight: 600;
394
- margin-bottom: 0.25rem;
395
- }
396
-
397
- .feature-content p {
398
- font-size: 0.875rem;
399
- color: var(--text-secondary);
400
  }
401
 
402
- .feature-arrow {
403
- margin-right: auto;
404
- color: var(--text-secondary);
405
- font-size: 0.875rem;
406
  }
407
 
408
- /* Dock */
409
  .dock-container {
410
- position: fixed;
411
- bottom: 0;
412
- left: 0;
413
- right: 0;
414
- padding: 1rem 1.5rem 2rem;
 
 
 
415
  z-index: 50;
416
- background: linear-gradient(to top, rgba(26, 26, 46, 0.9), transparent);
417
  }
418
 
419
  .dock {
420
- backdrop-filter: blur(25px);
421
- -webkit-backdrop-filter: blur(25px);
422
- background: rgba(255, 255, 255, 0.15);
423
- border: 1px solid rgba(255, 255, 255, 0.25);
424
- border-radius: 2rem;
425
- padding: 1rem;
426
  display: flex;
427
- justify-content: space-around;
 
 
 
 
 
 
 
428
  align-items: center;
429
- box-shadow:
430
- 0 10px 40px rgba(0,0,0,0.4),
431
- inset 0 1px 0 rgba(255,255,255,0.2);
432
- max-width: 400px;
433
- margin: 0 auto;
434
  }
435
 
436
- .dock-item {
437
- display: flex;
438
- flex-direction: column;
439
- align-items: center;
440
- gap: 0.5rem;
441
  text-decoration: none;
442
- color: var(--text-primary);
443
- transition: var(--transition-smooth);
444
- padding: 0.5rem;
445
- border-radius: 1rem;
446
- }
447
-
448
- .dock-item:hover {
449
- transform: translateY(-8px);
450
- }
451
-
452
- .dock-icon {
453
- width: 3.5rem;
454
- height: 3.5rem;
455
- border-radius: 1rem;
456
- display: flex;
457
  align-items: center;
458
- justify-content: center;
459
- font-size: 1.5rem;
460
- box-shadow: 0 4px 15px rgba(0,0,0,0.2);
461
  position: relative;
462
  overflow: hidden;
463
  }
464
 
465
- .dock-icon::after {
466
  content: '';
467
  position: absolute;
468
  top: 0;
469
  left: 0;
470
- right: 0;
471
- height: 50%;
472
- background: linear-gradient(to bottom, rgba(255,255,255,0.4), transparent);
473
- border-radius: 1rem 1rem 0 0;
474
- }
475
-
476
- .dock-label {
477
- font-size: 0.75rem;
478
- font-weight: 500;
479
- }
480
-
481
- /* Page Indicator */
482
- .page-indicator {
483
- display: flex;
484
- justify-content: center;
485
- gap: 0.5rem;
486
- margin-top: 1rem;
487
- margin-bottom: 0.5rem;
488
  }
489
 
490
- .dot {
491
- width: 0.5rem;
492
- height: 0.5rem;
493
- border-radius: 50%;
494
- background: rgba(255,255,255,0.3);
495
- transition: var(--transition-smooth);
496
  }
497
 
498
- .dot.active {
499
- background: var(--text-primary);
500
- width: 1.5rem;
501
- border-radius: 0.25rem;
502
  }
503
 
504
- /* Responsive */
505
- @media (min-width: 768px) {
506
- .container {
507
- max-width: 600px;
508
- }
509
-
510
- .apps-grid {
511
- grid-template-columns: repeat(4, 1fr);
512
- }
513
  }
514
 
515
- @media (max-width: 380px) {
516
- html {
517
- font-size: 14px;
518
- }
519
-
520
- .apps-grid {
521
- gap: 1rem 0.5rem;
522
- }
523
-
524
- .app-icon {
525
- width: 3.5rem;
526
- height: 3.5rem;
527
- font-size: 1.5rem;
528
- }
529
  }
530
 
531
- /* Animations */
532
- @keyframes float {
533
- 0%, 100% { transform: translateY(0px); }
534
- 50% { transform: translateY(-10px); }
535
  }
536
 
537
- .floating {
538
- animation: float 3s ease-in-out infinite;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
539
  }
540
-
541
- /* Scrollbar */
542
- ::-webkit-scrollbar {
543
- width: 0px;
544
- background: transparent;
545
  }
546
 
547
- /* Selection */
548
- ::selection {
549
- background: rgba(233, 69, 132, 0.3);
550
- color: white;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
551
  }
552
  </style>
553
  </head>
554
  <body>
555
- <div class="pattern-overlay"></div>
556
-
557
- <!-- Status Bar -->
558
- <div class="status-bar">
559
- <div class="status-time" id="clock">۰۹:۴۱</div>
560
- <div class="developer-credit">
561
- <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">Built with anycoder</a>
562
- </div>
563
- <div class="status-icons">
564
- <i class="fas fa-signal"></i>
565
- <i class="fas fa-wifi"></i>
566
- <div class="battery-icon">
567
- <span>۱۰۰٪</span>
568
- <i class="fas fa-battery-full"></i>
569
- </div>
570
- </div>
571
- </div>
572
 
573
- <div class="container">
574
- <!-- DateTime Widget -->
575
- <div class="glass datetime-widget">
576
- <div class="date-info">
577
- <h2>چت روم</h2>
578
- <p id="persian-date">پنجشنبه ۱۵ شهریور</p>
 
 
 
 
 
 
 
 
579
  </div>
580
- <div class="weather-icon floating">
581
- <i class="fas fa-comments"></i>
 
 
582
  </div>
583
  </div>
584
 
585
- <!-- Hero Widget -->
586
- <div class="glass hero-widget">
587
- <div class="hero-content">
588
- <div class="hero-icon">
589
- <i class="fas fa-comment-dots"></i>
590
- </div>
591
- <h1>چت روم ساده</h1>
592
- <p class="subtitle">محلی برای گفتگو با دوستان</p>
593
- </div>
594
  </div>
595
 
596
- <!-- Features as App Grid -->
597
- <div class="apps-section">
598
- <h3 class="section-title">
599
- <i class="fas fa-star" style="color: var(--accent-pink);"></i>
600
- قابلیت‌ها
601
- </h3>
602
- <div class="apps-grid">
603
- <div class="app-item" onclick="window.location.href='register.php'">
604
- <div class="app-icon pink">
605
- <i class="fas fa-shield-alt"></i>
 
 
 
 
 
 
 
606
  </div>
607
- <span class="app-label">ثبت‌نام آسان</span>
 
608
  </div>
609
 
610
- <div class="app-item" onclick="window.location.href='rooms.php'">
611
- <div class="app-icon purple">
612
- <i class="fas fa-users"></i>
 
613
  </div>
614
- <span class="app-label">ساخت اتاق</span>
 
615
  </div>
616
 
617
- <div class="app-item" onclick="window.location.href='chat.php'">
618
- <div class="app-icon cyan">
619
- <i class="fas fa-bolt"></i>
 
620
  </div>
621
- <span class="app-label">چت زنده</span>
622
- </div>
623
- </div>
624
- </div>
625
-
626
- <!-- Detailed Features List -->
627
- <div class="features-container">
628
- <div class="glass feature-card" onclick="window.location.href='register.php'">
629
- <div class="feature-icon-small pink">
630
- <i class="fas fa-mobile-alt"></i>
631
- </div>
632
- <div class="feature-content">
633
- <h3>ثبت‌نام آسان</h3>
634
- <p>با شماره موبایل ثبت‌نام کنید</p>
635
  </div>
636
- <i class="fas fa-chevron-left feature-arrow"></i>
637
  </div>
638
 
639
- <div class="glass feature-card" onclick="window.location.href='rooms.php'">
640
- <div class="feature-icon-small purple">
641
- <i class="fas fa-door-open"></i>
 
642
  </div>
643
- <div class="feature-content">
644
- <h3>ساخت اتاق</h3>
645
- <p>تا ۳ اتاق مختلف بسازید</p>
646
  </div>
647
- <i class="fas fa-chevron-left feature-arrow"></i>
648
  </div>
649
 
650
- <div class="glass feature-card" onclick="window.location.href='chat.php'">
651
- <div class="feature-icon-small cyan">
652
- <i class="fas fa-paper-plane"></i>
653
- </div>
654
- <div class="feature-content">
655
- <h3>چت زنده</h3>
656
- <p>گفتگوی آنلاین و سریع</p>
657
- </div>
658
- <i class="fas fa-chevron-left feature-arrow"></i>
659
- </div>
660
  </div>
661
 
662
- <!-- Page Indicators -->
663
- <div class="page-indicator">
664
- <div class="dot active"></div>
665
- <div class="dot"></div>
 
 
 
 
 
 
 
 
666
  </div>
667
- </div>
668
 
669
- <!-- iOS Dock -->
670
- <div class="dock-container">
671
- <div class="dock">
672
- <a href="login.php" class="dock-item">
673
- <div class="dock-icon blue">
674
- <i class="fas fa-sign-in-alt"></i>
675
- </div>
676
- <span class="dock-label">ورود</span>
677
- </a>
678
-
679
- <a href="register.php" class="dock-item">
680
- <div class="dock-icon green">
681
- <i class="fas fa-user-plus"></i>
682
- </div>
683
- <span class="dock-label">ثبت‌نام</span>
684
- </a>
685
-
686
- <a href="#" class="dock-item" onclick="alert('تنظیمات')">
687
- <div class="dock-icon orange">
688
- <i class="fas fa-cog"></i>
689
- </div>
690
- <span class="dock-label">تنظیمات</span>
691
- </a>
692
- </div>
693
  </div>
694
 
695
  <script>
696
- // Clock functionality
697
  function updateClock() {
698
  const now = new Date();
699
  const hours = String(now.getHours()).padStart(2, '0');
700
  const minutes = String(now.getMinutes()).padStart(2, '0');
701
-
702
- // Convert to Persian digits
703
- const persianDigits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
704
- const persianTime = (hours + ':' + minutes).replace(/\d/g, w => persianDigits[w]);
705
-
706
- document.getElementById('clock').textContent = persianTime;
707
  }
 
 
708
 
709
- // Persian Date (simplified)
710
- function updateDate() {
711
- const days = ['یکشنبه', 'دوشنبه', 'سه‌شنبه', 'چهارشنبه', 'پنجشنبه', 'جمعه', 'شنبه'];
712
- const months = ['فروردین', 'اردیبهشت', 'خرداد', 'تیر', 'مرداد', 'شهریور', 'مهر', 'آبان', 'آذر', 'دی', 'بهمن', 'اسفند'];
713
 
714
- const now = new Date();
715
- // Simplified Persian date calculation (approximate)
716
- const day = now.getDate();
717
- const month = now.getMonth();
718
-
719
- const persianDigits = ['۰', '۱', '۲', '۳', '۴', '۵', '۶', '۷', '۸', '۹'];
720
- const persianDay = String(day).replace(/\d/g, w => persianDigits[w]);
721
 
722
- document.getElementById('persian-date').textContent = days[now.getDay()] + ' ' + persianDay + ' ' + months[month];
 
 
723
  }
724
 
725
- // Initialize
726
- updateClock();
727
- updateDate();
728
- setInterval(updateClock, 1000);
729
-
730
- // Touch feedback for mobile
731
- document.querySelectorAll('.app-item, .feature-card, .dock-item').forEach(item => {
732
- item.addEventListener('touchstart', function() {
733
- this.style.transform = 'scale(0.95)';
734
- });
735
- item.addEventListener('touchend', function() {
736
- this.style.transform = '';
737
- });
738
- });
739
 
740
- // Parallax effect for background
741
  document.addEventListener('mousemove', (e) => {
742
- const x = e.clientX / window.innerWidth;
743
- const y = e.clientY / window.innerHeight;
 
744
 
745
- document.body.style.background = `
746
- linear-gradient(
747
- ${135 + (x * 10)}deg,
748
- var(--ios-bg-start) 0%,
749
- var(--ios-bg-mid) 50%,
750
- var(--ios-bg-end) 100%
751
- )
752
- `;
753
  });
754
  </script>
755
  </body>
 
3
  <head>
4
  <meta charset="UTF-8">
5
  <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
6
+ <title>چت روم ساده | iOS Glassmorphism</title>
7
+ <!-- Font Awesome 6 -->
8
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
9
+ <!-- Google Fonts: Vazirmatn for Persian -->
10
+ <link href="https://fonts.googleapis.com/css2?family=Vazirmatn:wght@300;400;700&display=swap" rel="stylesheet">
11
+
12
  <style>
13
  :root {
14
+ /* iOS Glassmorphism Color Palette */
15
+ --bg-gradient-start: #1a1a2e;
16
+ --bg-gradient-mid: #16213e;
17
+ --bg-gradient-end: #0f3460;
18
+
19
+ --primary-accent: #E94584;
20
+ --secondary-accent: #4FD3C4;
21
+
22
  --glass-bg: rgba(255, 255, 255, 0.1);
23
  --glass-border: rgba(255, 255, 255, 0.2);
24
+ --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.37);
25
+
26
+ --text-color: #ffffff;
27
+ --text-muted: rgba(255, 255, 255, 0.7);
28
+
29
+ --font-main: 'Vazirmatn', sans-serif;
30
+
31
+ --status-bar-height: 44px;
32
+ --dock-height: 90px;
 
33
  }
34
 
35
  * {
 
39
  -webkit-tap-highlight-color: transparent;
40
  }
41
 
 
 
 
 
 
42
  body {
43
+ font-family: var(--font-main);
44
+ background: linear-gradient(135deg, var(--bg-gradient-start) 0%, var(--bg-gradient-mid) 50%, var(--bg-gradient-end) 100%);
45
  min-height: 100vh;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
46
  display: flex;
47
+ justify-content: center;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
48
  align-items: center;
49
+ overflow: hidden; /* Prevent body scroll, handle inside app */
50
+ color: var(--text-color);
51
+ position: relative;
52
  }
53
 
54
+ /* Abstract Background Shapes for Glass Effect */
55
+ .shape {
56
+ position: absolute;
57
+ border-radius: 50%;
58
+ filter: blur(80px);
59
+ z-index: 0;
60
+ animation: float 10s infinite ease-in-out;
 
61
  }
62
 
63
+ .shape-1 {
64
+ width: 300px;
65
+ height: 300px;
66
+ background: var(--primary-accent);
67
+ top: -50px;
68
+ left: -50px;
69
+ opacity: 0.4;
 
 
 
 
 
 
 
70
  }
71
 
72
+ .shape-2 {
73
+ width: 400px;
74
+ height: 400px;
75
+ background: #533483;
76
+ bottom: -100px;
77
+ right: -100px;
78
+ opacity: 0.3;
79
+ animation-delay: -5s;
80
  }
81
 
82
+ @keyframes float {
83
+ 0%, 100% { transform: translate(0, 0); }
84
+ 50% { transform: translate(20px, -20px); }
 
85
  }
86
 
87
+ /* Main App Container (Phone Frame on Desktop) */
88
+ .app-wrapper {
89
+ position: relative;
90
+ z-index: 1;
91
+ width: 100%;
92
+ height: 100vh;
93
+ max-width: 480px; /* Mobile width constraint */
94
+ background: rgba(0, 0, 0, 0.2);
95
  display: flex;
96
  flex-direction: column;
97
+ overflow: hidden;
98
+ box-shadow: 0 0 50px rgba(0,0,0,0.5);
99
  }
100
 
101
+ /* Glass Utility Class */
102
  .glass {
103
  background: var(--glass-bg);
104
  backdrop-filter: blur(20px);
105
  -webkit-backdrop-filter: blur(20px);
106
  border: 1px solid var(--glass-border);
107
+ box-shadow: var(--glass-shadow);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
108
  }
109
 
110
+ /* Status Bar */
111
+ .status-bar {
112
+ height: var(--status-bar-height);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
113
  display: flex;
114
  justify-content: space-between;
115
  align-items: center;
116
+ padding: 0 20px;
117
+ font-size: 0.85rem;
 
 
 
118
  font-weight: 600;
119
+ z-index: 100;
120
+ border-bottom: 1px solid rgba(255,255,255,0.05);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
121
  }
122
 
123
+ .status-right {
124
  display: flex;
125
+ gap: 8px;
126
  align-items: center;
 
 
 
127
  }
128
 
129
+ .status-left {
 
 
 
 
 
 
 
130
  display: flex;
131
+ gap: 6px;
132
  align-items: center;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
133
  }
134
 
135
+ .brand-link {
136
+ color: var(--secondary-accent);
137
+ text-decoration: none;
138
+ font-size: 0.75rem;
139
+ margin-right: 10px;
140
+ opacity: 0.9;
141
+ transition: opacity 0.3s;
 
 
142
  }
143
+ .brand-link:hover { opacity: 1; text-decoration: underline; }
144
 
145
+ /* Main Content Scroll Area */
146
+ .content-scroll {
147
+ flex: 1;
148
+ overflow-y: auto;
149
+ padding: 20px;
150
+ padding-bottom: calc(var(--dock-height) + 20px);
151
+ scrollbar-width: none; /* Firefox */
152
  }
153
+ .content-scroll::-webkit-scrollbar {
154
+ display: none; /* Chrome/Safari */
 
155
  }
156
 
157
+ /* Hero Section */
158
+ .hero {
159
+ text-align: center;
160
+ margin-top: 20px;
161
+ margin-bottom: 30px;
162
+ padding: 30px 20px;
163
+ border-radius: 24px;
164
+ position: relative;
165
+ overflow: hidden;
166
+ transition: transform 0.3s ease;
167
  }
168
+
169
+ .hero:hover {
170
+ transform: translateY(-2px);
171
  }
172
 
173
+ .hero h1 {
174
+ font-size: 2rem;
175
+ margin-bottom: 10px;
176
+ text-shadow: 0 2px 10px rgba(0,0,0,0.2);
177
  }
178
 
179
+ .subtitle {
180
+ font-size: 1rem;
181
+ color: var(--text-muted);
182
+ font-weight: 300;
183
  }
184
 
185
+ /* Features Grid (Widgets) */
186
+ .features {
187
+ display: grid;
188
+ grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
189
+ gap: 15px;
190
+ margin-bottom: 30px;
 
 
 
191
  }
192
 
193
+ .feature {
194
+ padding: 20px;
195
+ border-radius: 20px;
196
  display: flex;
197
  flex-direction: column;
 
 
 
 
 
 
 
198
  align-items: center;
199
+ text-align: center;
200
+ transition: all 0.3s cubic-bezier(0.25, 0.8, 0.25, 1);
201
  cursor: pointer;
202
  }
203
 
204
+ .feature:hover {
205
  background: rgba(255, 255, 255, 0.15);
206
+ transform: scale(1.03);
207
  }
208
 
209
+ .feature .icon-box {
210
+ width: 50px;
211
+ height: 50px;
212
+ border-radius: 12px;
213
+ background: linear-gradient(135deg, rgba(255,255,255,0.1), rgba(255,255,255,0.05));
214
  display: flex;
215
  align-items: center;
216
  justify-content: center;
217
+ font-size: 1.5rem;
218
+ margin-bottom: 15px;
219
+ color: var(--secondary-accent);
220
+ box-shadow: 0 4px 15px rgba(0,0,0,0.1);
221
  }
222
 
223
+ .feature h3 {
224
  font-size: 1rem;
225
+ margin-bottom: 5px;
 
 
 
 
 
 
226
  }
227
 
228
+ .feature p {
229
+ font-size: 0.8rem;
230
+ color: var(--text-muted);
231
+ line-height: 1.4;
232
  }
233
 
234
+ /* Bottom Dock (CTA) */
235
  .dock-container {
236
+ position: absolute;
237
+ bottom: 20px;
238
+ left: 20px;
239
+ right: 20px;
240
+ height: var(--dock-height);
241
+ display: flex;
242
+ justify-content: center;
243
+ align-items: center;
244
  z-index: 50;
 
245
  }
246
 
247
  .dock {
 
 
 
 
 
 
248
  display: flex;
249
+ gap: 15px;
250
+ padding: 15px 25px;
251
+ border-radius: 30px;
252
+ backdrop-filter: blur(25px) saturate(180%);
253
+ -webkit-backdrop-filter: blur(25px) saturate(180%);
254
+ background: rgba(255, 255, 255, 0.1);
255
+ border: 1px solid rgba(255, 255, 255, 0.2);
256
+ box-shadow: 0 10px 40px rgba(0,0,0,0.3);
257
  align-items: center;
 
 
 
 
 
258
  }
259
 
260
+ /* Buttons */
261
+ .btn {
 
 
 
262
  text-decoration: none;
263
+ padding: 12px 24px;
264
+ border-radius: 20px;
265
+ font-size: 0.9rem;
266
+ font-weight: 700;
267
+ transition: all 0.3s ease;
268
+ display: inline-flex;
 
 
 
 
 
 
 
 
 
269
  align-items: center;
270
+ gap: 8px;
 
 
271
  position: relative;
272
  overflow: hidden;
273
  }
274
 
275
+ .btn::after {
276
  content: '';
277
  position: absolute;
278
  top: 0;
279
  left: 0;
280
+ width: 100%;
281
+ height: 100%;
282
+ background: rgba(255,255,255,0.2);
283
+ opacity: 0;
284
+ transition: opacity 0.3s;
 
 
 
 
 
 
 
 
 
 
 
 
 
285
  }
286
 
287
+ .btn:hover::after {
288
+ opacity: 1;
 
 
 
 
289
  }
290
 
291
+ .btn:active {
292
+ transform: scale(0.95);
 
 
293
  }
294
 
295
+ .btn-primary {
296
+ background: linear-gradient(135deg, var(--primary-accent), #c0356e);
297
+ color: white;
298
+ box-shadow: 0 4px 15px rgba(233, 69, 132, 0.4);
 
 
 
 
 
299
  }
300
 
301
+ .btn-secondary {
302
+ background: rgba(255, 255, 255, 0.1);
303
+ color: white;
304
+ border: 1px solid rgba(255, 255, 255, 0.2);
 
 
 
 
 
 
 
 
 
 
305
  }
306
 
307
+ .btn-secondary:hover {
308
+ background: rgba(255, 255, 255, 0.2);
 
 
309
  }
310
 
311
+ /* Navigation Indicator (Home Bar) */
312
+ .home-indicator {
313
+ position: absolute;
314
+ bottom: 8px;
315
+ left: 50%;
316
+ transform: translateX(-50%);
317
+ width: 120px;
318
+ height: 5px;
319
+ background: rgba(255, 255, 255, 0.3);
320
+ border-radius: 10px;
321
+ z-index: 60;
322
+ }
323
+
324
+ /* Toast Notification */
325
+ .toast {
326
+ position: absolute;
327
+ top: 60px;
328
+ left: 50%;
329
+ transform: translateX(-50%) translateY(-20px);
330
+ background: rgba(0, 0, 0, 0.8);
331
+ backdrop-filter: blur(10px);
332
+ color: white;
333
+ padding: 10px 20px;
334
+ border-radius: 20px;
335
+ font-size: 0.85rem;
336
+ opacity: 0;
337
+ pointer-events: none;
338
+ transition: all 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275);
339
+ z-index: 200;
340
+ white-space: nowrap;
341
+ display: flex;
342
+ align-items: center;
343
+ gap: 8px;
344
  }
345
+
346
+ .toast.show {
347
+ opacity: 1;
348
+ transform: translateX(-50%) translateY(0);
 
349
  }
350
 
351
+ /* Responsive */
352
+ @media (max-width: 480px) {
353
+ .app-wrapper {
354
+ max-width: 100%;
355
+ border-radius: 0;
356
+ height: 100vh;
357
+ }
358
+ .hero h1 {
359
+ font-size: 1.8rem;
360
+ }
361
+ .dock {
362
+ width: 100%;
363
+ justify-content: space-around;
364
+ padding: 15px;
365
+ }
366
+ .btn {
367
+ padding: 10px 18px;
368
+ font-size: 0.85rem;
369
+ }
370
  }
371
  </style>
372
  </head>
373
  <body>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
374
 
375
+ <!-- Background Shapes -->
376
+ <div class="shape shape-1"></div>
377
+ <div class="shape shape-2"></div>
378
+
379
+ <!-- Main Wrapper -->
380
+ <div class="app-wrapper">
381
+
382
+ <!-- Status Bar -->
383
+ <div class="status-bar glass">
384
+ <div class="status-right">
385
+ <span id="clock">12:00</span>
386
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank" class="brand-link">
387
+ <i class="fa-solid fa-code"></i> anycoder
388
+ </a>
389
  </div>
390
+ <div class="status-left">
391
+ <i class="fa-solid fa-signal"></i>
392
+ <i class="fa-solid fa-wifi"></i>
393
+ <i class="fa-solid fa-battery-full"></i>
394
  </div>
395
  </div>
396
 
397
+ <!-- Notification Toast -->
398
+ <div id="toast" class="toast">
399
+ <i class="fa-solid fa-circle-info" style="color: var(--secondary-accent)"></i>
400
+ <span id="toast-message">پیام سیستم</span>
 
 
 
 
 
401
  </div>
402
 
403
+ <!-- Scrollable Content -->
404
+ <div class="content-scroll">
405
+
406
+ <!-- Hero Widget -->
407
+ <div class="container">
408
+ <div class="hero glass">
409
+ <h1>💬 چت روم ساده</h1>
410
+ <p class="subtitle">محلی امن برای گفتگو با دوستان</p>
411
+ </div>
412
+ </div>
413
+
414
+ <!-- Features Grid -->
415
+ <div class="features">
416
+ <!-- Feature 1 -->
417
+ <div class="feature glass" onclick="showToast('در حال انتقال به ثبت‌نام...')">
418
+ <div class="icon-box">
419
+ <i class="fa-solid fa-lock"></i>
420
  </div>
421
+ <h3>ثبت‌نام آسان</h3>
422
+ <p>با شماره موبایل ثبت‌نام کنید</p>
423
  </div>
424
 
425
+ <!-- Feature 2 -->
426
+ <div class="feature glass" onclick="showToast('ایجاد اتاق جدید...')">
427
+ <div class="icon-box">
428
+ <i class="fa-solid fa-users"></i>
429
  </div>
430
+ <h3>ساخت اتاق</h3>
431
+ <p>تا ۳ اتاق مختلف بسازید</p>
432
  </div>
433
 
434
+ <!-- Feature 3 -->
435
+ <div class="feature glass" onclick="showToast('اتصال به سرور چت...')">
436
+ <div class="icon-box">
437
+ <i class="fa-solid fa-comments"></i>
438
  </div>
439
+ <h3>چت زنده</h3>
440
+ <p>گفتگوی آنلاین و سریع</p>
 
 
 
 
 
 
 
 
 
 
 
 
441
  </div>
 
442
  </div>
443
 
444
+ <!-- Extra Widget for Visual Interest -->
445
+ <div class="glass" style="padding: 20px; border-radius: 20px; margin-bottom: 20px; display: flex; align-items: center; gap: 15px;">
446
+ <div style="background: var(--primary-accent); width: 40px; height: 40px; border-radius: 50%; display: flex; align-items: center; justify-content: center;">
447
+ <i class="fa-solid fa-bell"></i>
448
  </div>
449
+ <div>
450
+ <h4 style="font-size: 0.9rem; margin-bottom: 2px;">اعلان جدید</h4>
451
+ <p style="font-size: 0.75rem; color: var(--text-muted);">سیستم به‌روزرسانی شد</p>
452
  </div>
 
453
  </div>
454
 
 
 
 
 
 
 
 
 
 
 
455
  </div>
456
 
457
+ <!-- Bottom Dock (CTA) -->
458
+ <div class="dock-container">
459
+ <div class="dock">
460
+ <a href="#" class="btn btn-secondary" onclick="simulateNav(event, 'ورود')">
461
+ <i class="fa-solid fa-arrow-right-to-bracket"></i>
462
+ ورود
463
+ </a>
464
+ <a href="#" class="btn btn-primary" onclick="simulateNav(event, 'شروع کنید')">
465
+ شروع کنید
466
+ <i class="fa-solid fa-arrow-left"></i>
467
+ </a>
468
+ </div>
469
  </div>
 
470
 
471
+ <!-- Home Indicator -->
472
+ <div class="home-indicator"></div>
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
473
  </div>
474
 
475
  <script>
476
+ // Update clock in status bar
477
  function updateClock() {
478
  const now = new Date();
479
  const hours = String(now.getHours()).padStart(2, '0');
480
  const minutes = String(now.getMinutes()).padStart(2, '0');
481
+ document.getElementById('clock').textContent = `${hours}:${minutes}`;
 
 
 
 
 
482
  }
483
+ setInterval(updateClock, 1000);
484
+ updateClock();
485
 
486
+ // Toast Notification System
487
+ function showToast(message) {
488
+ const toast = document.getElementById('toast');
489
+ const msgSpan = document.getElementById('toast-message');
490
 
491
+ msgSpan.textContent = message;
492
+ toast.classList.add('show');
 
 
 
 
 
493
 
494
+ setTimeout(() => {
495
+ toast.classList.remove('show');
496
+ }, 2500);
497
  }
498
 
499
+ // Simulate Navigation (Since we don't have PHP backend)
500
+ function simulateNav(e, action) {
501
+ e.preventDefault();
502
+ showToast(`${action} - در حال بارگذاری...`);
503
+
504
+ // Add a small visual ripple effect logic here if desired
505
+ const btn = e.currentTarget;
506
+ btn.style.transform = "scale(0.90)";
507
+ setTimeout(() => {
508
+ btn.style.transform = "scale(1)";
509
+ }, 150);
510
+ }
 
 
511
 
512
+ // Add subtle parallax effect to background shapes on mouse move (Desktop)
513
  document.addEventListener('mousemove', (e) => {
514
+ const shapes = document.querySelectorAll('.shape');
515
+ const x = window.innerWidth / 2;
516
+ const y = window.innerHeight / 2;
517
 
518
+ shapes.forEach((shape, index) => {
519
+ const speed = (index + 1) * 0.02;
520
+ const xOffset = (e.clientX - x) * speed;
521
+ const yOffset = (e.clientY - y) * speed;
522
+
523
+ shape.style.transform = `translate(${xOffset}px, ${yOffset}px)`;
524
+ });
 
525
  });
526
  </script>
527
  </body>