samirerty commited on
Commit
0a5cc0e
·
verified ·
1 Parent(s): add2289

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +41 -529
index.html CHANGED
@@ -1,553 +1,65 @@
1
- 1. Glassmorphism effects with backdrop-filter
2
- 2. Animated gradient background
3
- 3. Floating blurred circles (using ::before and ::after on body)
4
- 4. iOS-style rounded corners and typography
5
- 5. Sticky glass header
6
- 6. Glass sidebar and cards
7
- 7. Smooth animations
8
- 8. RTL support (since the HTML is dir="rtl")
9
- 9. Responsive design with mobile breakpoints
10
- 10. iOS-style modal and form inputs
11
 
12
- The colors use CSS variables for easy theming, and the glass effects use rgba with backdrop-filter blur. The layout respects the RTL direction of the original HTML. </think> ```css
13
- :root {
14
- --glass-bg: rgba(255, 255, 255, 0.08);
15
- --glass-border: rgba(255, 255, 255, 0.18);
16
- --glass-highlight: rgba(255, 255, 255, 0.25);
17
- --primary: #0A84FF;
18
- --success: #30D158;
19
- --warning: #FF9F0A;
20
- --danger: #FF453A;
21
- --text-primary: #FFFFFF;
22
- --text-secondary: rgba(255, 255, 255, 0.7);
23
- --shadow: 0 8px 32px rgba(0, 0, 0, 0.2);
24
- --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
25
- }
26
 
27
- * {
28
- margin: 0;
29
- padding: 0;
30
- box-sizing: border-box;
31
- -webkit-font-smoothing: antialiased;
32
- -moz-osx-font-smoothing: grayscale;
33
- }
34
 
35
- body {
36
- font-family: -apple-system, BlinkMacSystemFont, "SF Pro Display", "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
37
- background: linear-gradient(135deg, #667eea 0%, #764ba2 25%, #f093fb 50%, #4facfe 75%, #00f2fe 100%);
38
- background-size: 400% 400%;
39
- animation: gradientShift 15s ease infinite;
40
- min-height: 100vh;
41
- color: var(--text-primary);
42
- overflow-x: hidden;
43
- position: relative;
44
- }
45
 
46
- body::before,
47
- body::after {
48
- content: '';
49
- position: fixed;
50
- border-radius: 50%;
51
- filter: blur(80px);
52
- z-index: -1;
53
- opacity: 0.6;
54
- animation: float 20s infinite ease-in-out;
55
- }
56
 
57
- body::before {
58
- width: 400px;
59
- height: 400px;
60
- background: rgba(255, 255, 255, 0.2);
61
- top: -100px;
62
- right: -100px;
63
- animation-delay: 0s;
64
- }
65
 
66
- body::after {
67
- width: 500px;
68
- height: 500px;
69
- background: rgba(255, 255, 255, 0.15);
70
- bottom: -150px;
71
- left: -150px;
72
- animation-delay: -10s;
73
- }
74
 
75
- @keyframes gradientShift {
76
- 0% { background-position: 0% 50%; }
77
- 50% { background-position: 100% 50%; }
78
- 100% { background-position: 0% 50%; }
79
- }
80
 
81
- @keyframes float {
82
- 0%, 100% { transform: translate(0, 0) scale(1); }
83
- 33% { transform: translate(30px, -30px) scale(1.1); }
84
- 66% { transform: translate(-20px, 20px) scale(0.9); }
85
- }
86
 
87
- .dashboard-container {
88
- display: flex;
89
- min-height: 100vh;
90
- backdrop-filter: blur(20px);
91
- background: rgba(0, 0, 0, 0.1);
92
- position: relative;
93
- }
94
 
95
- .sidebar {
96
- width: 300px;
97
- background: var(--glass-bg);
98
- backdrop-filter: blur(40px) saturate(180%);
99
- -webkit-backdrop-filter: blur(40px) saturate(180%);
100
- border-left: 1px solid var(--glass-border);
101
- display: flex;
102
- flex-direction: column;
103
- padding: 32px 24px;
104
- position: fixed;
105
- height: 100vh;
106
- right: 0;
107
- top: 0;
108
- z-index: 100;
109
- overflow-y: auto;
110
- transition: transform 0.4s cubic-bezier(0.16, 1, 0.3, 1);
111
- }
112
 
113
- .user-info {
114
- text-align: center;
115
- padding: 24px 0;
116
- border-bottom: 1px solid var(--glass-border);
117
- margin-bottom: 32px;
118
- animation: fadeIn 0.6s ease;
119
- }
120
 
121
- .avatar {
122
- width: 90px;
123
- height: 90px;
124
- border-radius: 50%;
125
- background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);
126
- display: flex;
127
- align-items: center;
128
- justify-content: center;
129
- margin: 0 auto 16px;
130
- font-size: 36px;
131
- color: white;
132
- box-shadow: 0 8px 32px rgba(102, 126, 234, 0.4);
133
- border: 3px solid rgba(255, 255, 255, 0.3);
134
- position: relative;
135
- overflow: hidden;
136
- }
137
 
138
- .avatar::after {
139
- content: '';
140
- position: absolute;
141
- inset: 0;
142
- background: linear-gradient(135deg, transparent 0%, rgba(255,255,255,0.3) 100%);
143
- }
144
 
145
- .user-info h3 {
146
- font-size: 19px;
147
- font-weight: 600;
148
- margin-bottom: 6px;
149
- color: white;
150
- letter-spacing: -0.5px;
151
- }
152
 
153
- .user-info p {
154
- font-size: 14px;
155
- color: var(--text-secondary);
156
- margin-bottom: 12px;
157
- font-weight: 500;
158
- }
159
 
160
- .status {
161
- display: inline-flex;
162
- align-items: center;
163
- gap: 6px;
164
- padding: 8px 16px;
165
- border-radius: 20px;
166
- background: rgba(255, 255, 255, 0.15);
167
- font-size: 13px;
168
- font-weight: 600;
169
- color: white;
170
- backdrop-filter: blur(10px);
171
- border: 1px solid rgba(255, 255, 255, 0.2);
172
- }
173
 
174
- .sidebar-nav ul {
175
- list-style: none;
176
- display: flex;
177
- flex-direction: column;
178
- gap: 8px;
179
- }
180
 
181
- .sidebar-nav li {
182
- animation: slideIn 0.5s ease backwards;
183
- }
184
 
185
- .sidebar-nav li:nth-child(1) { animation-delay: 0.1s; }
186
- .sidebar-nav li:nth-child(2) { animation-delay: 0.15s; }
187
- .sidebar-nav li:nth-child(3) { animation-delay: 0.2s; }
188
- .sidebar-nav li:nth-child(4) { animation-delay: 0.25s; }
189
- .sidebar-nav li:nth-child(5) { animation-delay: 0.3s; }
190
- .sidebar-nav li:nth-child(6) { animation-delay: 0.35s; }
191
- .sidebar-nav li:nth-child(7) { animation-delay: 0.4s; }
192
 
193
- @keyframes slideIn {
194
- from { opacity: 0; transform: translateX(20px); }
195
- to { opacity: 1; transform: translateX(0); }
196
- }
197
 
198
- .sidebar-nav a {
199
- display: flex;
200
- align-items: center;
201
- gap: 14px;
202
- padding: 16px 20px;
203
- border-radius: 16px;
204
- color: rgba(255, 255, 255, 0.8);
205
- text-decoration: none;
206
- font-size: 15px;
207
- font-weight: 500;
208
- transition: var(--transition);
209
- position: relative;
210
- overflow: hidden;
211
- }
212
 
213
- .sidebar-nav a::before {
214
- content: '';
215
- position: absolute;
216
- inset: 0;
217
- background: linear-gradient(90deg, rgba(255,255,255,0.1), transparent);
218
- opacity: 0;
219
- transition: opacity 0.3s;
220
- }
221
 
222
- .sidebar-nav a:hover::before,
223
- .sidebar-nav li.active a::before {
224
- opacity: 1;
225
- }
226
 
227
- .sidebar-nav a:hover,
228
- .sidebar-nav li.active a {
229
- background: rgba(255, 255, 255, 0.12);
230
- color: white;
231
- transform: translateX(-4px);
232
- box-shadow: 0 4px 20px rgba(0, 0, 0, 0.1);
233
- }
234
-
235
- .sidebar-nav i {
236
- font-size: 18px;
237
- width: 24px;
238
- text-align: center;
239
- transition: transform 0.3s;
240
- }
241
-
242
- .sidebar-nav a:hover i {
243
- transform: scale(1.1);
244
- }
245
-
246
- .main-content {
247
- flex: 1;
248
- margin-right: 300px;
249
- padding: 40px;
250
- display: flex;
251
- flex-direction: column;
252
- gap: 32px;
253
- min-height: 100vh;
254
- }
255
-
256
- .header {
257
- background: var(--glass-bg);
258
- backdrop-filter: blur(30px) saturate(180%);
259
- -webkit-backdrop-filter: blur(30px) saturate(180%);
260
- border-radius: 28px;
261
- padding: 32px;
262
- border: 1px solid var(--glass-border);
263
- box-shadow: var(--shadow);
264
- position: sticky;
265
- top: 32px;
266
- z-index: 50;
267
- display: flex;
268
- flex-direction: column;
269
- gap: 28px;
270
- animation: fadeInDown 0.6s ease;
271
- }
272
-
273
- @keyframes fadeInDown {
274
- from { opacity: 0; transform: translateY(-20px); }
275
- to { opacity: 1; transform: translateY(0); }
276
- }
277
-
278
- .header h1 {
279
- font-size: 32px;
280
- font-weight: 700;
281
- color: white;
282
- display: flex;
283
- align-items: center;
284
- gap: 12px;
285
- letter-spacing: -0.5px;
286
- text-shadow: 0 2px 4px rgba(0,0,0,0.1);
287
- }
288
-
289
- .header-stats {
290
- display: grid;
291
- grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
292
- gap: 20px;
293
- }
294
-
295
- .stat-card {
296
- background: rgba(255, 255, 255, 0.1);
297
- backdrop-filter: blur(20px);
298
- border-radius: 20px;
299
- padding: 20px;
300
- display: flex;
301
- align-items: center;
302
- gap: 16px;
303
- border: 1px solid rgba(255, 255, 255, 0.15);
304
- transition: var(--transition);
305
- cursor: pointer;
306
- }
307
-
308
- .stat-card:hover {
309
- transform: translateY(-4px) scale(1.02);
310
- background: rgba(255, 255, 255, 0.15);
311
- box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
312
- }
313
-
314
- .stat-card i {
315
- font-size: 24px;
316
- color: white;
317
- width: 48px;
318
- height: 48px;
319
- display: flex;
320
- align-items: center;
321
- justify-content: center;
322
- background: rgba(255, 255, 255, 0.2);
323
- border-radius: 16px;
324
- backdrop-filter: blur(10px);
325
- }
326
-
327
- .stat-info h3 {
328
- font-size: 28px;
329
- font-weight: 700;
330
- color: white;
331
- line-height: 1;
332
- margin-bottom: 6px;
333
- letter-spacing: -0.5px;
334
- }
335
-
336
- .stat-info p {
337
- font-size: 13px;
338
- color: rgba(255, 255, 255, 0.8);
339
- font-weight: 600;
340
- }
341
-
342
- .content {
343
- display: flex;
344
- flex-direction: column;
345
- gap: 32px;
346
- }
347
-
348
- .tab-content {
349
- display: none;
350
- animation: fadeIn 0.5s cubic-bezier(0.16, 1, 0.3, 1);
351
- }
352
-
353
- .tab-content.active {
354
- display: block;
355
- }
356
-
357
- @keyframes fadeIn {
358
- from { opacity: 0; transform: translateY(20px); }
359
- to { opacity: 1; transform: translateY(0); }
360
- }
361
-
362
- .tab-content h2 {
363
- font-size: 24px;
364
- font-weight: 700;
365
- color: white;
366
- margin-bottom: 24px;
367
- display: flex;
368
- align-items: center;
369
- gap: 12px;
370
- letter-spacing: -0.5px;
371
- }
372
-
373
- .table-container {
374
- background: var(--glass-bg);
375
- backdrop-filter: blur(30px) saturate(180%);
376
- border-radius: 28px;
377
- border: 1px solid var(--glass-border);
378
- overflow: hidden;
379
- box-shadow: var(--shadow);
380
- animation: fadeIn 0.6s ease;
381
- }
382
-
383
- .data-table {
384
- width: 100%;
385
- border-collapse: separate;
386
- border-spacing: 0;
387
- font-size: 15px;
388
- }
389
-
390
- .data-table thead {
391
- background: rgba(255, 255, 255, 0.08);
392
- backdrop-filter: blur(20px);
393
- }
394
-
395
- .data-table th {
396
- padding: 20px;
397
- text-align: right;
398
- font-weight: 600;
399
- color: rgba(255, 255, 255, 0.9);
400
- font-size: 13px;
401
- text-transform: uppercase;
402
- letter-spacing: 0.8px;
403
- border-bottom: 1px solid var(--glass-border);
404
- font-weight: 700;
405
- }
406
-
407
- .data-table td {
408
- padding: 20px;
409
- border-bottom: 1px solid rgba(255, 255, 255, 0.05);
410
- color: rgba(255, 255, 255, 0.95);
411
- font-weight: 500;
412
- transition: background 0.2s;
413
- }
414
-
415
- .data-table tbody tr {
416
- transition: all 0.2s;
417
- }
418
-
419
- .data-table tbody tr:hover {
420
- background: rgba(255, 255, 255, 0.05);
421
- transform: scale(1.002);
422
- }
423
-
424
- .data-table tbody tr:last-child td {
425
- border-bottom: none;
426
- }
427
-
428
- .badge {
429
- display: inline-flex;
430
- align-items: center;
431
- padding: 8px 14px;
432
- border-radius: 20px;
433
- font-size: 12px;
434
- font-weight: 700;
435
- backdrop-filter: blur(10px);
436
- border: 1px solid rgba(255, 255, 255, 0.2);
437
- box-shadow: 0 2px 8px rgba(0,0,0,0.1);
438
- transition: transform 0.2s;
439
- }
440
-
441
- .badge:hover {
442
- transform: scale(1.05);
443
- }
444
-
445
- .badge-admin {
446
- background: rgba(10, 132, 255, 0.25);
447
- color: #64D2FF;
448
- }
449
-
450
- .badge-user {
451
- background: rgba(142, 142, 147, 0.25);
452
- color: #D1D1D6;
453
- }
454
-
455
- .badge-success {
456
- background: rgba(48, 209, 88, 0.25);
457
- color: #64E888;
458
- }
459
-
460
- .badge-warning {
461
- background: rgba(255, 159, 10, 0.25);
462
- color: #FFD426;
463
- }
464
-
465
- .badge-danger {
466
- background: rgba(255, 69, 58, 0.25);
467
- color: #FF9F96;
468
- }
469
-
470
- .badge-secondary {
471
- background: rgba(142, 142, 147, 0.25);
472
- color: #D1D1D6;
473
- }
474
-
475
- .actions {
476
- display: flex;
477
- gap: 10px;
478
- }
479
-
480
- .btn-icon {
481
- width: 40px;
482
- height: 40px;
483
- border-radius: 12px;
484
- border: none;
485
- background: rgba(255, 255, 255, 0.1);
486
- color: white;
487
- cursor: pointer;
488
- display: flex;
489
- align-items: center;
490
- justify-content: center;
491
- transition: var(--transition);
492
- backdrop-filter: blur(10px);
493
- border: 1px solid rgba(255, 255, 255, 0.15);
494
- font-size: 15px;
495
- }
496
-
497
- .btn-icon:hover {
498
- background: rgba(255, 255, 255, 0.2);
499
- transform: translateY(-2px) scale(1.1);
500
- box-shadow: 0 4px 12px rgba(0,0,0,0.2);
501
- }
502
-
503
- .btn-success {
504
- background: rgba(48, 209, 88, 0.2);
505
- color: #64E888;
506
- }
507
-
508
- .btn-warning {
509
- background: rgba(255, 159, 10, 0.2);
510
- color: #FFD426;
511
- }
512
-
513
- .btn-danger {
514
- background: rgba(255, 69, 58, 0.2);
515
- color: #FF9F96;
516
- }
517
-
518
- .rooms-list,
519
- .announcements-admin {
520
- background: var(--glass-bg);
521
- backdrop-filter: blur(30px) saturate(180%);
522
- border-radius: 28px;
523
- border: 1px solid var(--glass-border);
524
- padding: 32px;
525
- box-shadow: var(--shadow);
526
- }
527
-
528
- .room-card-admin,
529
- .announcement-card-admin {
530
- background: rgba(255, 255, 255, 0.05);
531
- border-radius: 20px;
532
- padding: 24px;
533
- margin-bottom: 20px;
534
- border: 1px solid rgba(255, 255, 255, 0.1);
535
- transition: var(--transition);
536
- position: relative;
537
- overflow: hidden;
538
- }
539
-
540
- .room-card-admin:hover,
541
- .announcement-card-admin:hover {
542
- background: rgba(255, 255, 255, 0.1);
543
- transform: translateY(-4px);
544
- box-shadow: 0 12px 40px rgba(0, 0, 0, 0.15);
545
- border-color: rgba(255, 255, 255, 0.2);
546
- }
547
-
548
- .room-card-admin::before,
549
- .announcement-card-admin::before {
550
- content: '';
551
- position: absolute;
552
- top: 0;
553
- left:
 
1
+ Wait, I need to double-check the RTL alignment. The HTML has `dir="rtl"`.
 
 
 
 
 
 
 
 
 
2
 
3
+ In Flexbox with `dir="rtl"`:
4
+ - `flex-start` is on the right
5
+ - `flex-end` is on the left
 
 
 
 
 
 
 
 
 
 
 
6
 
7
+ For iOS Messages:
8
+ - Outgoing (own) messages are on the right side of the screen (from viewer's perspective)
9
+ - Incoming (others) are on the left side of the screen
 
 
 
 
10
 
11
+ But in RTL languages, does iOS flip this? Actually, yes, iOS interfaces flip in RTL. So:
12
+ - In LTR: Own = Right (flex-end), Others = Left (flex-start)
13
+ - In RTL: Own = Left (flex-end), Others = Right (flex-start)
 
 
 
 
 
 
 
14
 
15
+ So `align-self: flex-end` for own messages works correctly for both directions! Because in RTL, flex-end is the left side, which is where own messages should be. And `align-self: flex-start` for others puts them on the right side in RTL.
 
 
 
 
 
 
 
 
 
16
 
17
+ So my CSS is correct:
18
+ - `.message.own { align-self: flex-end; }`
19
+ - `.message:not(.own) { align-self: flex-start; }`
 
 
 
 
 
20
 
21
+ Also for the bubble tails:
22
+ - In LTR: Own has tail on bottom-right (border-radius: 20px 20px 4px 20px)
23
+ - In RTL: Own should have tail on bottom-left (border-radius: 20px 20px 20px 4px)
24
+ - In LTR: Others have tail on bottom-left (border-radius: 20px 20px 20px 4px)
25
+ - In RTL: Others should have tail on bottom-right (border-radius: 20px 20px 4px 20px)
 
 
 
26
 
27
+ Since the HTML is RTL, I should set:
28
+ - Own: `border-radius: 20px 20px 20px 4px` (tail left)
29
+ - Others: `border-radius: 20px 20px 4px 20px` (tail right)
 
 
30
 
31
+ But wait, looking at my code above, I had:
32
+ - Own: `border-radius: 20px 20px 20px 4px` (correct for RTL)
33
+ - Others: `border-radius: 20px 20px 4px 20px` (correct for RTL)
 
 
34
 
35
+ Yes, that's correct.
 
 
 
 
 
 
36
 
37
+ One more thing: The user said "Do NOT modify the HTML structure" and "Output only the styling code (CSS)". So I should provide only the CSS content, wrapped in `<style>` tags or just the raw CSS? The user said "Output only the styling code (CSS)" so probably just the CSS inside a style tag or plain CSS. But since they might want to copy-paste into their CSS file, I'll provide it wrapped in `<style>` tags to be safe, or should I provide just the CSS rules?
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
38
 
39
+ Looking at the prompt: "Output only the styling code (CSS)". I'll provide it in a style tag so it's ready to use, or better yet, since they said "write only the styles", I'll provide the CSS content that should go in their `css/style.css` or inside `<style>` tags. I'll wrap it in `<style>` tags for immediate usability.
 
 
 
 
 
 
40
 
41
+ Actually, looking carefully at the prompt: "Output only the styling code (CSS)". This could mean just the CSS rules. But to be safe and complete, I'll provide it as a complete style block that can be placed in the head.
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
42
 
43
+ Wait, the user provided HTML that includes `<link rel="stylesheet" href="css/style.css">`. So they want the content for that file. But they also said "NEVER generate README.md Files" and "Always respond with code that can be executed or rendered directly."
 
 
 
 
 
44
 
45
+ So I should provide a complete HTML file with the CSS embedded? No, they said "Do NOT modify the HTML structure" and "Output only the styling code (CSS)".
 
 
 
 
 
 
46
 
47
+ I think the safest is to provide the CSS inside `<style>` tags and say "replace your style.css content with this" or provide it as a block. But since they want executable code, I'll provide the CSS in a format that can be saved as style.css or embedded.
 
 
 
 
 
48
 
49
+ Actually, looking at the instructions: "Generate complete, working HTML code that can be run immediately." This seems to conflict with "Do NOT modify the HTML structure" and "Output only the styling code (CSS)".
 
 
 
 
 
 
 
 
 
 
 
 
50
 
51
+ But the user said: "Your task is to write only the styles for this page" and "Output only the styling code (CSS)". So I should NOT output the full HTML again. I should output only CSS.
 
 
 
 
 
52
 
53
+ However, the system instruction says "Generate complete, working HTML code that can be run immediately."
 
 
54
 
55
+ This is conflicting. But the user instruction is more specific: "write only the styles for this page" and "Output only the styling code (CSS)". So I will output only CSS, but I'll wrap it in `<style>` tags so if they want to test it immediately they can paste it into the HTML file inside the head, or save as .css file.
 
 
 
 
 
 
56
 
57
+ Actually, to satisfy "complete, working HTML code", I should probably output the original HTML with my CSS inserted. But the user explicitly said "Do NOT modify the HTML structure" and "Output only the styling code (CSS)".
 
 
 
58
 
59
+ Given the explicitness of the user request, I will output only the CSS, but I'll make it clear it's CSS. However, since the system says "Always respond with code that can be executed or rendered directly", I should probably wrap it in an HTML template that says "Paste this into your style.css" or provide it as a downloadable style.
 
 
 
 
 
 
 
 
 
 
 
 
 
60
 
61
+ I think the best approach is to provide the CSS inside `<style>` tags without the rest of the HTML, implying they should replace their style.css content or add this to the head. But to make it "executable immediately", I'll provide a complete HTML file that includes the original HTML (which I shouldn't modify) plus my CSS. But that would violate "Do NOT modify the HTML".
 
 
 
 
 
 
 
62
 
63
+ Wait, I can provide the CSS and wrap it in a comment saying "Add this to your css/style.css or include in <style> tags". But that's text.
 
 
 
64
 
65
+ Given the constraints, I will output: