samirerty commited on
Commit
41294c3
·
verified ·
1 Parent(s): c5d8270

Upload folder using huggingface_hub

Browse files
Files changed (1) hide show
  1. index.html +434 -428
index.html CHANGED
@@ -1,438 +1,443 @@
1
  <!DOCTYPE html>
2
  <html lang="en">
3
- <head>
4
- <meta charset="UTF-8">
5
- <meta name="viewport" content="width=device-width, initial-scale=1.0">
6
- <title>Minimal Glass Chat</title>
7
- <!-- Import Google Fonts: Nunito for that airy, soft feel -->
8
- <link rel="preconnect" href="https://fonts.googleapis.com">
9
- <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
10
- <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;500;600&display=swap" rel="stylesheet">
11
- <!-- Import FontAwesome for Icons -->
12
- <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
13
-
14
- <style>
15
- :root {
16
- /* Palette: Soft Pastels & Glass */
17
- --bg-gradient-start: #fdfbfb;
18
- --bg-gradient-end: #ebedee;
19
-
20
- /* Soft Blob Colors */
21
- --blob-1: #e0c3fc;
22
- --blob-2: #8ec5fc;
23
-
24
- /* Glass Variables - Restrained */
25
- --glass-bg: rgba(255, 255, 255, 0.45);
26
- --glass-border: rgba(255, 255, 255, 0.4);
27
- --glass-shadow: 0 8px 32px 0 rgba(31, 38, 135, 0.05);
28
- --glass-blur: blur(12px);
29
-
30
- /* Typography */
31
- --font-main: 'Nunito', sans-serif;
32
- --text-primary: #4a4a4a; /* Darker gray for contrast but softer than black */
33
- --text-secondary: #7a7a7a;
34
-
35
- /* Message Bubbles */
36
- --msg-sent-bg: rgba(179, 209, 255, 0.5); /* Very soft blue */
37
- --msg-received-bg: rgba(255, 255, 255, 0.5);
38
- --msg-text: #444;
39
-
40
- /* Spacing */
41
- --spacing-sm: 8px;
42
- --spacing-md: 16px;
43
- --spacing-lg: 24px;
44
- }
45
-
46
- * {
47
- margin: 0;
48
- padding: 0;
49
- box-sizing: border-box;
50
- }
51
 
52
- body {
53
- font-family: var(--font-main);
54
- background: linear-gradient(135deg, #fdfbfb 0%, #ebedee 100%);
55
- height: 100vh;
56
- width: 100vw;
57
- overflow: hidden;
58
- color: var(--text-primary);
59
- position: relative;
60
- }
61
-
62
- /*
63
- Background: Single subtle gradient/blob
64
- Removed extra animated blobs
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
65
  */
66
- .ambient-bg {
67
- position: absolute;
68
- top: 0;
69
- left: 0;
70
- width: 100%;
71
- height: 100%;
72
- z-index: -1;
73
- /* One soft, static gradient */
74
- background: radial-gradient(circle at 10% 20%, rgba(224, 195, 252, 0.3) 0%, transparent 40%),
75
- radial-gradient(circle at 90% 80%, rgba(142, 197, 252, 0.3) 0%, transparent 40%);
76
- pointer-events: none;
77
- }
78
-
79
- /* Layout Container */
80
- .app-container {
81
- display: flex;
82
- width: 95%;
83
- height: 92%;
84
- max-width: 1400px;
85
- margin: 4vh auto;
86
- background: var(--glass-bg);
87
- backdrop-filter: var(--glass-blur);
88
- -webkit-backdrop-filter: var(--glass-blur);
89
- border: 1px solid var(--glass-border);
90
- border-radius: 24px;
91
- box-shadow: var(--glass-shadow);
92
- overflow: hidden;
93
- position: relative;
94
- }
95
-
96
- /* --- Sidebar --- */
97
- .sidebar {
98
- width: 280px;
99
- min-width: 280px;
100
- border-right: 1px solid rgba(255, 255, 255, 0.3);
101
- display: flex;
102
- flex-direction: column;
103
- padding: var(--spacing-md);
104
- background: rgba(255,255,255,0.1);
105
- transition: transform 0.3s ease;
106
- }
107
-
108
- /* Removed Search Bar as requested */
109
-
110
- .contact-list {
111
- list-style: none;
112
- margin-top: var(--spacing-md);
113
- overflow-y: auto;
114
- flex-grow: 1;
115
- }
116
-
117
- /* Custom Scrollbar for minimal look */
118
- .contact-list::-webkit-scrollbar {
119
- width: 4px;
120
- }
121
- .contact-list::-webkit-scrollbar-thumb {
122
- background: rgba(0,0,0,0.05);
123
- border-radius: 4px;
124
- }
125
-
126
- .contact-item {
127
- display: flex;
128
- align-items: center;
129
- padding: 10px;
130
- margin-bottom: 4px;
131
- border-radius: 12px;
132
- cursor: pointer;
133
- transition: background 0.2s ease;
134
- position: relative;
135
- }
136
-
137
- /* Reduced hover effects */
138
- .contact-item:hover {
139
- background: rgba(255, 255, 255, 0.3);
140
- }
141
-
142
- .contact-item.active {
143
- background: rgba(255, 255, 255, 0.5);
144
- }
145
-
146
- /* Smaller avatars */
147
- .avatar {
148
- width: 40px;
149
- height: 40px;
150
- border-radius: 50%;
151
- object-fit: cover;
152
- margin-right: 12px;
153
- border: 1px solid rgba(255,255,255,0.5);
154
- }
155
-
156
- .contact-info {
157
- display: flex;
158
- flex-direction: column;
159
- overflow: hidden;
160
- }
161
-
162
- .contact-name {
163
- font-size: 0.95rem;
164
- font-weight: 500;
165
- color: var(--text-primary);
166
- }
167
-
168
- .last-msg {
169
- font-size: 0.8rem;
170
- color: var(--text-secondary);
171
- white-space: nowrap;
172
- overflow: hidden;
173
- text-overflow: ellipsis;
174
- font-weight: 300; /* Reduced weight variation */
175
- }
176
-
177
- /* --- Main Chat Area --- */
178
- .chat-area {
179
- flex: 1;
180
- display: flex;
181
- flex-direction: column;
182
- position: relative;
183
- }
184
-
185
- /* --- Header --- */
186
- header {
187
- height: 60px; /* Reduced height */
188
- min-height: 60px;
189
- display: flex;
190
- align-items: center;
191
- justify-content: space-between;
192
- padding: 0 var(--spacing-lg);
193
- border-bottom: 1px solid rgba(255, 255, 255, 0.3);
194
- background: rgba(255, 255, 255, 0.2);
195
- }
196
-
197
- .chat-title h2 {
198
- font-size: 1.1rem;
199
- font-weight: 600;
200
- color: var(--text-primary);
201
- }
202
-
203
- .chat-title span {
204
- font-size: 0.8rem;
205
- color: var(--text-secondary);
206
- font-weight: 400;
207
- margin-left: 8px;
208
- }
209
-
210
- /* Branding */
211
- .branding {
212
- font-size: 0.75rem;
213
- font-weight: 500;
214
- }
215
- .branding a {
216
- text-decoration: none;
217
- color: var(--text-secondary);
218
- transition: color 0.2s;
219
- }
220
- .branding a:hover {
221
- color: #6a82fb;
222
- }
223
-
224
- /* --- Messages Area --- */
225
- .messages-container {
226
- flex: 1;
227
- padding: var(--spacing-lg);
228
- overflow-y: auto;
229
- display: flex;
230
- flex-direction: column;
231
- gap: 12px; /* Tighter spacing */
232
- }
233
-
234
- .message {
235
- max-width: 70%;
236
- padding: 10px 16px; /* Tighter padding */
237
- font-size: 0.95rem; /* Slightly smaller text */
238
- line-height: 1.5;
239
- position: relative;
240
- animation: slideUpFade 0.4s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
241
- opacity: 0;
242
- transform: translateY(10px);
243
- }
244
-
245
- @keyframes slideUpFade {
246
- to {
247
- opacity: 1;
248
- transform: translateY(0);
249
- }
250
- }
251
-
252
- .message.received {
253
- align-self: flex-start;
254
- background: var(--msg-received-bg);
255
- color: var(--msg-text);
256
- /* No border as requested */
257
- border-radius: 18px 18px 18px 4px; /* Asymmetry */
258
- }
259
-
260
- .message.sent {
261
- align-self: flex-end;
262
- background: var(--msg-sent-bg);
263
- color: var(--msg-text);
264
- /* No border as requested */
265
- border-radius: 18px 18px 4px 18px; /* Asymmetry */
266
- }
267
-
268
- .message-time {
269
- display: block;
270
- font-size: 0.65rem;
271
- margin-top: 4px;
272
- text-align: right;
273
- opacity: 0.6;
274
- }
275
-
276
- /* --- Input Area --- */
277
- .input-area {
278
- padding: var(--spacing-md) var(--spacing-lg);
279
- background: rgba(255, 255, 255, 0.25);
280
- border-top: 1px solid rgba(255, 255, 255, 0.3);
281
- display: flex;
282
- align-items: center;
283
- gap: 12px;
284
- }
285
-
286
- .input-wrapper {
287
- flex: 1;
288
- position: relative;
289
- }
290
-
291
- input[type="text"] {
292
- width: 100%;
293
- padding: 14px 20px;
294
- border-radius: 30px;
295
- border: 1px solid rgba(255, 255, 255, 0.5);
296
- background: rgba(255, 255, 255, 0.6);
297
- font-family: var(--font-main);
298
- font-size: 0.95rem;
299
- color: var(--text-primary);
300
- outline: none;
301
- transition: all 0.2s ease;
302
- /* Remove attachment button means we have space */
303
- }
304
-
305
- input[type="text"]:focus {
306
- background: rgba(255, 255, 255, 0.8);
307
- border-color: rgba(255, 255, 255, 0.8);
308
- box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.2);
309
- }
310
-
311
- input[type="text"]::placeholder {
312
- color: #9ca3af;
313
- }
314
-
315
- .send-btn {
316
- width: 46px;
317
- height: 46px;
318
- border-radius: 50%;
319
- border: none;
320
- background: #6a82fb; /* Slightly more saturated accent for action */
321
- color: white;
322
- display: flex;
323
- align-items: center;
324
- justify-content: center;
325
- cursor: pointer;
326
- transition: transform 0.1s ease, background 0.2s;
327
- box-shadow: 0 4px 12px rgba(106, 130, 251, 0.3);
328
- }
329
-
330
- .send-btn:hover {
331
- background: #5a72eb;
332
- transform: scale(1.02); /* Subtle scale, not floating */
333
- }
334
-
335
- .send-btn:active {
336
- transform: scale(0.95);
337
- }
338
-
339
- /* Responsive Design */
340
- @media (max-width: 768px) {
341
- .app-container {
342
- width: 100%;
343
- height: 100%;
344
- border-radius: 0;
345
- border: none;
346
- margin: 0;
347
- }
348
-
349
- .sidebar {
350
- position: absolute;
351
- left: 0;
352
- top: 0;
353
- bottom: 0;
354
- z-index: 10;
355
- background: rgba(255,255,255,0.95);
356
- transform: translateX(-100%);
357
- box-shadow: 2px 0 10px rgba(0,0,0,0.05);
358
- }
359
-
360
- .sidebar.open {
361
- transform: translateX(0);
362
- }
363
-
364
- header {
365
- padding: 0 var(--spacing-md);
366
- }
367
-
368
- .mobile-menu-toggle {
369
- display: block;
370
- margin-right: 12px;
371
- color: var(--text-primary);
372
- cursor: pointer;
373
- font-size: 1.2rem;
374
- }
375
- }
376
-
377
- @media (min-width: 769px) {
378
- .mobile-menu-toggle {
379
- display: none;
380
- }
381
- }
382
- </style>
 
 
383
  </head>
 
384
  <body>
385
 
386
- <div class="ambient-bg"></div>
387
-
388
- <div class="app-container">
389
- <!-- Sidebar -->
390
- <aside class="sidebar" id="sidebar">
391
- <!-- Contacts -->
392
- <ul class="contact-list" id="contactList">
393
- <!-- Contacts generated by JS -->
394
- </ul>
395
- </aside>
396
-
397
- <!-- Main Chat -->
398
- <main class="chat-area">
399
- <!-- Header -->
400
- <header>
401
- <div style="display: flex; align-items: center;">
402
- <i class="fas fa-bars mobile-menu-toggle" id="menuToggle"></i>
403
- <div class="chat-title">
404
- <h2 id="activeChatName">Select a chat</h2>
405
- <span id="activeChatStatus"></span>
406
- </div>
407
- </div>
408
-
409
- <div class="branding">
410
- <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">Built with anycoder</a>
411
- </div>
412
- </header>
413
-
414
- <!-- Messages -->
415
- <div class="messages-container" id="messagesContainer">
416
- <!-- Messages generated by JS -->
417
- <div class="message received">
418
- Hello! Select a friend to start chatting with the minimal glass interface.
419
- </div>
420
- </div>
421
-
422
- <!-- Input -->
423
- <div class="input-area">
424
- <div class="input-wrapper">
425
- <input type="text" id="messageInput" placeholder="Type a message..." autocomplete="off">
426
- </div>
427
- <button class="send-btn" id="sendBtn">
428
  <i class="fas fa-paper-plane"></i>
429
  </button>
430
- </div>
431
- </main>
432
- </div>
433
 
434
- <script>
435
- // Data Mockup
436
  const contacts = [
437
  { id: 1, name: "Alice Moore", avatar: "https://picsum.photos/seed/alice/100/100", lastMsg: "See you tomorrow!", status: "Online" },
438
  { id: 2, name: "Bob Smith", avatar: "https://picsum.photos/seed/bob/100/100", lastMsg: "Is the project ready?", status: "Away" },
@@ -446,7 +451,7 @@
446
  { type: 'received', text: "Hey! How are you doing?", time: "10:00 AM" },
447
  { type: 'sent', text: "I'm doing great, thanks! Just redesigning this UI.", time: "10:02 AM" },
448
  { type: 'received', text: "Oh nice, is it the glassmorphism one?", time: "10:03 AM" },
449
- { type: 'sent', text: "Yeah, making it much more restrained and minimal.", time: "10:05 AM" },
450
  { type: 'received', text: "See you tomorrow!", time: "10:06 AM" }
451
  ],
452
  2: [
@@ -530,7 +535,7 @@
530
  emptyState.style.textAlign = 'center';
531
  emptyState.style.alignSelf = 'center';
532
  emptyState.style.background = 'transparent';
533
- emptyState.style.color = '#999';
534
  emptyState.textContent = "Start a conversation with " + contact.name;
535
  messagesContainerEl.appendChild(emptyState);
536
  } else {
@@ -620,6 +625,7 @@
620
  // Start App
621
  init();
622
 
623
- </script>
624
  </body>
 
625
  </html>
 
1
  <!DOCTYPE html>
2
  <html lang="en">
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
3
 
4
+ <head>
5
+ <meta charset="UTF-8">
6
+ <meta name="viewport" content="width=device-width, initial-scale=1.0">
7
+ <title>Minimal Dark Glass Chat</title>
8
+ <!-- Import Google Fonts: Nunito for that airy, soft feel -->
9
+ <link rel="preconnect" href="https://fonts.googleapis.com">
10
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
11
+ <link href="https://fonts.googleapis.com/css2?family=Nunito:wght@300;400;500;600&display=swap" rel="stylesheet">
12
+ <!-- Import FontAwesome for Icons -->
13
+ <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
14
+
15
+ <style>
16
+ :root {
17
+ /* Palette: Muted Dark Gradients & Dark Glass */
18
+ --bg-gradient-start: #1f2229;
19
+ --bg-gradient-end: #2c303a;
20
+
21
+ /* Muted Dark Blob Colors */
22
+ --blob-1: #2b3244;
23
+ --blob-2: #1e2536;
24
+
25
+ /* Dark Glass Variables */
26
+ --glass-bg: rgba(30, 35, 45, 0.4);
27
+ --glass-border: rgba(255, 255, 255, 0.08);
28
+ --glass-shadow: 0 8px 32px 0 rgba(0, 0, 0, 0.2);
29
+ --glass-blur: blur(12px);
30
+ --sidebar-bg: rgba(0, 0, 0, 0.2);
31
+
32
+ /* Typography */
33
+ --font-main: 'Nunito', sans-serif;
34
+ --text-primary: #e0e0e0; /* Soft white/gray */
35
+ --text-secondary: #9aa0a6; /* Muted gray */
36
+
37
+ /* Message Bubbles - Brightness differentiation, no color change */
38
+ --msg-sent-bg: rgba(255, 255, 255, 0.12); /* Lighter glass */
39
+ --msg-received-bg: rgba(0, 0, 0, 0.2); /* Darker glass */
40
+ --msg-text: #f0f0f0;
41
+
42
+ /* Spacing */
43
+ --spacing-sm: 8px;
44
+ --spacing-md: 16px;
45
+ --spacing-lg: 24px;
46
+ }
47
+
48
+ * {
49
+ margin: 0;
50
+ padding: 0;
51
+ box-sizing: border-box;
52
+ }
53
+
54
+ body {
55
+ font-family: var(--font-main);
56
+ background: linear-gradient(135deg, var(--bg-gradient-start) 0%, var(--bg-gradient-end) 100%);
57
+ height: 100vh;
58
+ width: 100vw;
59
+ overflow: hidden;
60
+ color: var(--text-primary);
61
+ position: relative;
62
+ }
63
+
64
+ /*
65
+ Background: Muted dark gradients
66
+ Removed animations, static only
67
  */
68
+ .ambient-bg {
69
+ position: absolute;
70
+ top: 0;
71
+ left: 0;
72
+ width: 100%;
73
+ height: 100%;
74
+ z-index: -1;
75
+ /* Deep, dark, static gradient blobs */
76
+ background: radial-gradient(circle at 10% 20%, rgba(43, 50, 68, 0.4) 0%, transparent 50%),
77
+ radial-gradient(circle at 90% 80%, rgba(30, 37, 54, 0.4) 0%, transparent 50%);
78
+ pointer-events: none;
79
+ }
80
+
81
+ /* Layout Container */
82
+ .app-container {
83
+ display: flex;
84
+ width: 95%;
85
+ height: 92%;
86
+ max-width: 1400px;
87
+ margin: 4vh auto;
88
+ background: var(--glass-bg);
89
+ backdrop-filter: var(--glass-blur);
90
+ -webkit-backdrop-filter: var(--glass-blur);
91
+ border: 1px solid var(--glass-border);
92
+ border-radius: 24px;
93
+ box-shadow: var(--glass-shadow);
94
+ overflow: hidden;
95
+ position: relative;
96
+ }
97
+
98
+ /* --- Sidebar --- */
99
+ .sidebar {
100
+ width: 280px;
101
+ min-width: 280px;
102
+ border-right: 1px solid var(--glass-border);
103
+ display: flex;
104
+ flex-direction: column;
105
+ padding: var(--spacing-md);
106
+ background: var(--sidebar-bg);
107
+ transition: transform 0.3s ease;
108
+ }
109
+
110
+ .contact-list {
111
+ list-style: none;
112
+ margin-top: var(--spacing-md);
113
+ overflow-y: auto;
114
+ flex-grow: 1;
115
+ }
116
+
117
+ /* Dark Scrollbar */
118
+ .contact-list::-webkit-scrollbar {
119
+ width: 4px;
120
+ }
121
+
122
+ .contact-list::-webkit-scrollbar-thumb {
123
+ background: rgba(255, 255, 255, 0.1);
124
+ border-radius: 4px;
125
+ }
126
+
127
+ .contact-item {
128
+ display: flex;
129
+ align-items: center;
130
+ padding: 10px;
131
+ margin-bottom: 4px;
132
+ border-radius: 12px;
133
+ cursor: pointer;
134
+ transition: background 0.2s ease;
135
+ position: relative;
136
+ }
137
+
138
+ /* Subtle hover states - no strong contrast */
139
+ .contact-item:hover {
140
+ background: rgba(255, 255, 255, 0.05);
141
+ }
142
+
143
+ .contact-item.active {
144
+ background: rgba(255, 255, 255, 0.08);
145
+ }
146
+
147
+ /* Smaller avatars */
148
+ .avatar {
149
+ width: 36px;
150
+ height: 36px;
151
+ border-radius: 50%;
152
+ object-fit: cover;
153
+ margin-right: 12px;
154
+ border: 1px solid rgba(255, 255, 255, 0.1);
155
+ opacity: 0.9;
156
+ }
157
+
158
+ .contact-info {
159
+ display: flex;
160
+ flex-direction: column;
161
+ overflow: hidden;
162
+ }
163
+
164
+ .contact-name {
165
+ font-size: 0.95rem;
166
+ font-weight: 500;
167
+ color: var(--text-primary);
168
+ }
169
+
170
+ .last-msg {
171
+ font-size: 0.8rem;
172
+ color: var(--text-secondary);
173
+ white-space: nowrap;
174
+ overflow: hidden;
175
+ text-overflow: ellipsis;
176
+ font-weight: 400; /* Reduced variation */
177
+ }
178
+
179
+ /* --- Main Chat Area --- */
180
+ .chat-area {
181
+ flex: 1;
182
+ display: flex;
183
+ flex-direction: column;
184
+ position: relative;
185
+ }
186
+
187
+ /* --- Header --- */
188
+ header {
189
+ height: 56px; /* Reduced height */
190
+ min-height: 56px;
191
+ display: flex;
192
+ align-items: center;
193
+ justify-content: space-between;
194
+ padding: 0 var(--spacing-lg);
195
+ border-bottom: 1px solid var(--glass-border);
196
+ background: rgba(0, 0, 0, 0.15); /* Darker translucent background */
197
+ }
198
+
199
+ .chat-title h2 {
200
+ font-size: 1.1rem;
201
+ font-weight: 600;
202
+ color: var(--text-primary);
203
+ }
204
+
205
+ .chat-title span {
206
+ font-size: 0.8rem;
207
+ color: var(--text-secondary);
208
+ font-weight: 400;
209
+ margin-left: 8px;
210
+ }
211
+
212
+ /* Branding - Subtle */
213
+ .branding {
214
+ font-size: 0.75rem;
215
+ font-weight: 400;
216
+ opacity: 0.7;
217
+ }
218
+
219
+ .branding a {
220
+ text-decoration: none;
221
+ color: var(--text-secondary);
222
+ transition: color 0.2s;
223
+ }
224
+
225
+ .branding a:hover {
226
+ color: var(--text-primary);
227
+ }
228
+
229
+ /* --- Messages Area --- */
230
+ .messages-container {
231
+ flex: 1;
232
+ padding: var(--spacing-lg);
233
+ overflow-y: auto;
234
+ display: flex;
235
+ flex-direction: column;
236
+ gap: 12px;
237
+ }
238
+
239
+ .message {
240
+ max-width: 70%;
241
+ padding: 10px 16px;
242
+ font-size: 0.95rem;
243
+ line-height: 1.5;
244
+ position: relative;
245
+ animation: slideUpFade 0.4s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
246
+ opacity: 0;
247
+ transform: translateY(10px);
248
+ /* No borders */
249
+ }
250
+
251
+ @keyframes slideUpFade {
252
+ to {
253
+ opacity: 1;
254
+ transform: translateY(0);
255
+ }
256
+ }
257
+
258
+ .message.received {
259
+ align-self: flex-start;
260
+ background: var(--msg-received-bg);
261
+ color: var(--msg-text);
262
+ border-radius: 18px 18px 18px 4px;
263
+ }
264
+
265
+ .message.sent {
266
+ align-self: flex-end;
267
+ background: var(--msg-sent-bg);
268
+ color: var(--msg-text);
269
+ border-radius: 18px 18px 4px 18px;
270
+ }
271
+
272
+ .message-time {
273
+ display: block;
274
+ font-size: 0.65rem;
275
+ margin-top: 4px;
276
+ text-align: right;
277
+ opacity: 0.5;
278
+ }
279
+
280
+ /* --- Input Area --- */
281
+ .input-area {
282
+ padding: var(--spacing-md) var(--spacing-lg);
283
+ background: rgba(0, 0, 0, 0.2);
284
+ border-top: 1px solid var(--glass-border);
285
+ display: flex;
286
+ align-items: center;
287
+ gap: 12px;
288
+ }
289
+
290
+ .input-wrapper {
291
+ flex: 1;
292
+ position: relative;
293
+ }
294
+
295
+ input[type="text"] {
296
+ width: 100%;
297
+ padding: 14px 20px;
298
+ border-radius: 30px;
299
+ border: 1px solid rgba(255, 255, 255, 0.1);
300
+ background: rgba(0, 0, 0, 0.3);
301
+ font-family: var(--font-main);
302
+ font-size: 0.95rem;
303
+ color: var(--text-primary);
304
+ outline: none;
305
+ transition: all 0.2s ease;
306
+ }
307
+
308
+ input[type="text"]:focus {
309
+ background: rgba(0, 0, 0, 0.4);
310
+ border-color: rgba(255, 255, 255, 0.2);
311
+ box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.05);
312
+ }
313
+
314
+ input[type="text"]::placeholder {
315
+ color: rgba(255, 255, 255, 0.3);
316
+ }
317
+
318
+ .send-btn {
319
+ width: 46px;
320
+ height: 46px;
321
+ border-radius: 50%;
322
+ border: none;
323
+ background: #4a5568; /* Muted dark blue-grey */
324
+ color: white;
325
+ display: flex;
326
+ align-items: center;
327
+ justify-content: center;
328
+ cursor: pointer;
329
+ transition: background 0.2s;
330
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
331
+ /* No hover scaling */
332
+ }
333
+
334
+ .send-btn:hover {
335
+ background: #5a6578;
336
+ }
337
+
338
+ .send-btn:active {
339
+ transform: scale(0.95);
340
+ }
341
+
342
+ /* Responsive Design */
343
+ @media (max-width: 768px) {
344
+ .app-container {
345
+ width: 100%;
346
+ height: 100%;
347
+ border-radius: 0;
348
+ border: none;
349
+ margin: 0;
350
+ }
351
+
352
+ .sidebar {
353
+ position: absolute;
354
+ left: 0;
355
+ top: 0;
356
+ bottom: 0;
357
+ z-index: 10;
358
+ background: rgba(20, 24, 30, 0.95);
359
+ backdrop-filter: blur(20px);
360
+ transform: translateX(-100%);
361
+ box-shadow: 2px 0 10px rgba(0, 0, 0, 0.3);
362
+ }
363
+
364
+ .sidebar.open {
365
+ transform: translateX(0);
366
+ }
367
+
368
+ header {
369
+ padding: 0 var(--spacing-md);
370
+ }
371
+
372
+ .mobile-menu-toggle {
373
+ display: block;
374
+ margin-right: 12px;
375
+ color: var(--text-primary);
376
+ cursor: pointer;
377
+ font-size: 1.2rem;
378
+ }
379
+ }
380
+
381
+ @media (min-width: 769px) {
382
+ .mobile-menu-toggle {
383
+ display: none;
384
+ }
385
+ }
386
+ </style>
387
  </head>
388
+
389
  <body>
390
 
391
+ <div class="ambient-bg"></div>
392
+
393
+ <div class="app-container">
394
+ <!-- Sidebar -->
395
+ <aside class="sidebar" id="sidebar">
396
+ <!-- Contacts -->
397
+ <ul class="contact-list" id="contactList">
398
+ <!-- Contacts generated by JS -->
399
+ </ul>
400
+ </aside>
401
+
402
+ <!-- Main Chat -->
403
+ <main class="chat-area">
404
+ <!-- Header -->
405
+ <header>
406
+ <div style="display: flex; align-items: center;">
407
+ <i class="fas fa-bars mobile-menu-toggle" id="menuToggle"></i>
408
+ <div class="chat-title">
409
+ <h2 id="activeChatName">Select a chat</h2>
410
+ <span id="activeChatStatus"></span>
411
+ </div>
412
+ </div>
413
+
414
+ <div class="branding">
415
+ <a href="https://huggingface.co/spaces/akhaliq/anycoder" target="_blank">Built with anycoder</a>
416
+ </div>
417
+ </header>
418
+
419
+ <!-- Messages -->
420
+ <div class="messages-container" id="messagesContainer">
421
+ <!-- Messages generated by JS -->
422
+ <div class="message received">
423
+ Hello! Select a friend to start chatting with the minimal dark glass interface.
424
+ </div>
425
+ </div>
426
+
427
+ <!-- Input -->
428
+ <div class="input-area">
429
+ <div class="input-wrapper">
430
+ <input type="text" id="messageInput" placeholder="Type a message..." autocomplete="off">
431
+ </div>
432
+ <button class="send-btn" id="sendBtn">
433
  <i class="fas fa-paper-plane"></i>
434
  </button>
435
+ </div>
436
+ </main>
437
+ </div>
438
 
439
+ <script>
440
+ // Data Mockup
441
  const contacts = [
442
  { id: 1, name: "Alice Moore", avatar: "https://picsum.photos/seed/alice/100/100", lastMsg: "See you tomorrow!", status: "Online" },
443
  { id: 2, name: "Bob Smith", avatar: "https://picsum.photos/seed/bob/100/100", lastMsg: "Is the project ready?", status: "Away" },
 
451
  { type: 'received', text: "Hey! How are you doing?", time: "10:00 AM" },
452
  { type: 'sent', text: "I'm doing great, thanks! Just redesigning this UI.", time: "10:02 AM" },
453
  { type: 'received', text: "Oh nice, is it the glassmorphism one?", time: "10:03 AM" },
454
+ { type: 'sent', text: "Yeah, making it much darker and quieter.", time: "10:05 AM" },
455
  { type: 'received', text: "See you tomorrow!", time: "10:06 AM" }
456
  ],
457
  2: [
 
535
  emptyState.style.textAlign = 'center';
536
  emptyState.style.alignSelf = 'center';
537
  emptyState.style.background = 'transparent';
538
+ emptyState.style.color = 'rgba(255, 255, 255, 0.3)';
539
  emptyState.textContent = "Start a conversation with " + contact.name;
540
  messagesContainerEl.appendChild(emptyState);
541
  } else {
 
625
  // Start App
626
  init();
627
 
628
+ </script>
629
  </body>
630
+
631
  </html>