Reality123b commited on
Commit
e370985
·
verified ·
1 Parent(s): a03bdea

Update application/static/css/style.css

Browse files
Files changed (1) hide show
  1. application/static/css/style.css +390 -344
application/static/css/style.css CHANGED
@@ -1,39 +1,35 @@
1
- /* Base Styles & Reset */
2
  :root {
3
  --primary-color: #7710ee;
4
- --primary-light: rgba(119, 16, 238, 0.55);
5
- --background-dark: rgb(2,2,8);
6
- --background-light: rgb(5,5,20);
 
7
  --text-primary: #e1e1e1;
8
- --text-secondary: #b4b4b4;
9
  --surface-1: rgba(40, 40, 60, 0.6);
10
  --surface-2: rgba(50, 50, 70, 0.4);
11
  --surface-3: rgba(60, 60, 80, 0.4);
12
  --border-color: rgba(255, 255, 255, 0.07);
13
  --shadow-color: rgba(0, 0, 0, 0.2);
14
- --transition-standard: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
 
 
 
15
  }
16
 
17
- * {
18
- margin: 0;
19
- padding: 0;
20
- box-sizing: border-box;
21
- }
22
-
23
- /* Scrollbar Styling */
24
  ::-webkit-scrollbar {
25
- width: 8px;
26
  }
27
 
28
  ::-webkit-scrollbar-track {
29
- background: rgba(0, 0, 0, 0.2);
30
- border-radius: 10px;
31
  }
32
 
33
  ::-webkit-scrollbar-thumb {
34
  background: rgba(255, 255, 255, 0.1);
35
- border-radius: 10px;
36
- border: 2px solid rgba(255, 255, 255, 0.05);
37
  }
38
 
39
  ::-webkit-scrollbar-thumb:hover {
@@ -41,29 +37,33 @@
41
  }
42
 
43
  /* Base Layout */
44
- html, body {
45
- height: 100vh;
46
- width: 100vw;
47
- overflow: hidden;
48
- font-family: 'Inter', sans-serif;
49
- background: linear-gradient(135deg, var(--background-dark) 0%, var(--background-light) 100%);
50
  color: var(--text-primary);
51
  line-height: 1.6;
 
52
  }
53
 
54
- /* Navigation Styles */
55
  .nav-container {
56
  position: fixed;
57
  top: 0;
58
  width: 100%;
59
  height: 60px;
 
 
 
 
 
 
60
  background: rgba(10, 10, 20, 0.7);
61
- backdrop-filter: blur(10px);
62
  border-bottom: 1px solid var(--border-color);
63
- z-index: 1000;
64
  }
65
 
66
  .nav-content {
 
67
  max-width: 1400px;
68
  margin: 0 auto;
69
  height: 100%;
@@ -73,191 +73,144 @@ html, body {
73
  padding: 0 20px;
74
  }
75
 
76
- .nav-left, .nav-right {
 
77
  display: flex;
78
  align-items: center;
79
- gap: 20px;
80
  }
81
 
82
- .brand {
83
- display: flex;
84
- align-items: baseline;
85
- gap: 8px;
 
 
 
86
  }
87
 
88
- .brand-text {
89
- font-family: 'Poppins', sans-serif;
90
- font-weight: 600;
91
- font-size: 1.25rem;
92
- background: linear-gradient(45deg, #7710ee, #b44dff);
93
- -webkit-background-clip: text;
94
- -webkit-text-fill-color: transparent;
95
  }
96
 
97
- .brand-version {
98
- font-size: 0.75rem;
99
- color: var(--text-secondary);
100
- }
101
-
102
- /* Hamburger Menu */
103
- .hamburger {
104
  display: flex;
105
- flex-direction: column;
106
- gap: 6px;
107
- cursor: pointer;
108
- padding: 8px;
109
- }
110
-
111
- .line1, .line2 {
112
- height: 2px;
113
- transition: var(--transition-standard);
114
- }
115
-
116
- .line1 {
117
- width: 24px;
118
- background: linear-gradient(90deg, #7710ee, #b44dff);
119
- }
120
-
121
- .line2 {
122
- width: 16px;
123
- background: linear-gradient(90deg, #7710ee, #b44dff);
124
- }
125
-
126
- .hamburger:hover .line1 {
127
- transform: translateX(-4px);
128
  }
129
 
130
- .hamburger:hover .line2 {
131
- transform: translateX(4px);
 
 
 
132
  }
133
 
134
- /* Sidebar Menu */
135
- .menu {
136
- position: fixed;
137
- top: 0;
138
- left: 0;
139
- height: 100vh;
140
- width: 0;
141
- background: rgba(20, 20, 30, 0.95);
142
- backdrop-filter: blur(15px);
143
- border-right: 1px solid var(--border-color);
144
- transition: width 0.3s cubic-bezier(0.4, 0, 0.2, 1);
145
- z-index: 900;
146
  display: flex;
147
- flex-direction: column;
148
- }
149
-
150
- .menu.open {
151
- width: 300px;
152
  }
153
 
154
- .menu-header {
155
- padding: 80px 20px 20px;
156
- border-bottom: 1px solid var(--border-color);
 
 
 
 
 
 
157
  }
158
 
159
- .new-chat {
160
- display: flex;
161
- align-items: center;
162
- gap: 12px;
163
- padding: 12px 16px;
164
  background: var(--surface-1);
165
  border: 1px solid var(--border-color);
166
- border-radius: 8px;
167
- color: var(--text-primary);
168
- cursor: pointer;
169
- transition: var(--transition-standard);
170
- }
171
-
172
- .new-chat:hover {
173
- background: var(--surface-2);
174
- transform: translateY(-2px);
175
  }
176
 
177
- .menu-content {
178
- flex: 1;
179
- overflow-y: auto;
180
- padding: 20px;
181
  }
182
 
183
- .chats-header {
184
- display: flex;
185
- justify-content: space-between;
186
- align-items: center;
187
- margin-bottom: 16px;
188
  }
189
 
190
- .chats-title {
191
- font-size: 0.875rem;
192
- text-transform: uppercase;
193
- letter-spacing: 0.05em;
194
- color: var(--text-secondary);
195
  }
196
 
197
- .prev-chats-cont {
 
 
 
 
198
  display: flex;
199
  flex-direction: column;
200
  gap: 8px;
201
- }
202
-
203
- .chat-item {
204
- display: flex;
205
- align-items: center;
206
- gap: 12px;
207
- padding: 12px;
208
- border-radius: 8px;
209
- cursor: pointer;
210
  transition: var(--transition-standard);
211
  }
212
 
213
- .chat-item:hover {
214
- background: var(--surface-1);
215
- }
216
-
217
- /* Main Container */
218
- .container {
219
- margin-top: 60px;
220
- height: calc(100vh - 60px);
221
- display: flex;
222
- flex-direction: column;
223
- padding: 20px;
224
- }
225
-
226
- .messages {
227
- flex: 1;
228
- overflow-y: auto;
229
- padding: 20px;
230
- display: flex;
231
- flex-direction: column;
232
- gap: 24px;
233
- }
234
-
235
- /* Message Styles */
236
- .message {
237
- max-width: 80%;
238
- padding: 16px;
239
- border-radius: 12px;
240
- border: 1px solid var(--border-color);
241
- backdrop-filter: blur(10px);
242
  }
243
 
244
- .user-message {
245
- margin-left: auto;
 
 
246
  background: var(--surface-2);
 
 
 
 
247
  }
248
 
249
- .ai-message {
250
- margin-right: auto;
251
- background: var(--surface-1);
 
252
  }
253
 
254
- /* Input Area */
255
  .input-container {
 
256
  margin-top: auto;
257
  padding: 20px;
258
  }
259
 
 
 
 
 
 
 
 
260
  .inputs {
 
261
  display: flex;
262
  align-items: center;
263
  gap: 12px;
@@ -265,294 +218,387 @@ html, body {
265
  background: var(--surface-2);
266
  border: 1px solid var(--border-color);
267
  border-radius: 16px;
268
- backdrop-filter: blur(10px);
269
- /* Input Area (continued) */
270
- .text-box {
 
271
  flex: 1;
 
 
 
 
 
 
272
  background: none;
273
  border: none;
274
  outline: none;
275
  color: var(--text-primary);
276
- font-family: 'Inter', sans-serif;
277
- font-size: 1rem;
278
  line-height: 1.5;
279
  max-height: 200px;
280
  resize: none;
281
  padding: 8px;
282
  }
283
 
284
- .text-box::placeholder {
285
- color: var(--text-secondary);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
286
  }
287
 
 
 
 
 
 
 
 
 
 
 
 
 
288
  .web-search,
289
  .send-btn {
290
- background: none;
291
- border: none;
 
 
 
 
292
  color: var(--text-secondary);
293
- font-size: 1.2rem;
294
  cursor: pointer;
295
- padding: 8px;
296
- border-radius: 8px;
297
  transition: var(--transition-standard);
 
298
  }
299
 
300
  .web-search:hover,
301
  .send-btn:hover {
302
  color: var(--text-primary);
303
- background: var(--surface-1);
304
- }
305
-
306
- .input-footer {
307
- text-align: center;
308
- margin-top: 8px;
309
- }
310
-
311
- .input-info {
312
- font-size: 0.75rem;
313
- color: var(--text-secondary);
314
  }
315
 
316
- /* Modal Styles */
317
- .modal,
318
- .settings-modal {
319
- position: fixed;
320
- top: 0;
321
- left: 0;
322
- width: 100vw;
323
- height: 100vh;
324
- background: rgba(0, 0, 0, 0.5);
325
- backdrop-filter: blur(5px);
326
- display: flex;
327
- justify-content: center;
328
- align-items: center;
329
- z-index: 1100;
330
  opacity: 0;
331
- visibility: hidden;
332
  transition: var(--transition-standard);
333
  }
334
 
335
- .modal.show,
336
- .settings-modal.show {
337
  opacity: 1;
338
- visibility: visible;
339
  }
340
 
341
- .modal-content,
342
- .settings-content {
 
 
 
343
  background: var(--surface-1);
344
  border: 1px solid var(--border-color);
345
- border-radius: 16px;
346
- width: 90%;
347
- max-width: 500px;
348
- padding: 24px;
349
- position: relative;
350
- transform: translateY(20px);
351
- transition: var(--transition-standard);
352
  }
353
 
354
- .modal.show .modal-content,
355
- .settings-modal.show .settings-content {
356
- transform: translateY(0);
357
  }
358
 
359
- .modal-header,
360
- .settings-header {
361
- display: flex;
362
- justify-content: space-between;
363
- align-items: center;
364
- margin-bottom: 20px;
365
  }
366
 
367
- .modal-header h2,
368
- .settings-header h2 {
369
- font-size: 1.5rem;
370
- font-weight: 600;
371
- color: var(--text-primary);
372
  }
373
 
374
- .close-modal,
375
- .close-settings {
376
- background: none;
377
- border: none;
378
- color: var(--text-secondary);
379
- font-size: 1.2rem;
380
- cursor: pointer;
381
- padding: 8px;
382
- border-radius: 8px;
383
- transition: var(--transition-standard);
384
  }
385
 
386
- .close-modal:hover,
387
- .close-settings:hover {
388
- color: var(--text-primary);
389
- background: var(--surface-2);
 
 
 
390
  }
391
 
392
- .modal-body {
393
- margin-bottom: 24px;
 
 
394
  }
395
 
396
- .feature-list {
397
- display: grid;
398
- grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
399
- gap: 16px;
400
- margin-top: 20px;
 
 
 
 
 
 
 
401
  }
402
 
403
- .feature-item {
 
 
 
 
 
 
 
 
 
 
 
 
 
404
  display: flex;
405
- flex-direction: column;
406
  align-items: center;
407
- gap: 8px;
408
- padding: 16px;
409
- background: var(--surface-2);
410
- border: 1px solid var(--border-color);
411
  border-radius: 12px;
412
- text-align: center;
 
 
413
  }
414
 
415
- .feature-item i {
416
- font-size: 1.5rem;
417
- color: var(--primary-color);
 
418
  }
419
 
420
- /* Settings Styles */
421
- .settings-section {
422
- margin-bottom: 24px;
 
 
 
 
 
 
423
  }
424
 
425
- .settings-section h3 {
426
- font-size: 1rem;
427
- font-weight: 500;
428
- color: var(--text-secondary);
429
- margin-bottom: 16px;
 
 
 
430
  }
431
 
432
- .setting-item {
433
  display: flex;
434
  justify-content: space-between;
435
  align-items: center;
436
- padding: 12px 0;
 
437
  border-bottom: 1px solid var(--border-color);
438
  }
439
 
440
- .theme-select,
441
- .font-select {
442
- background: var(--surface-2);
443
- border: 1px solid var(--border-color);
444
- border-radius: 8px;
445
- color: var(--text-primary);
446
- padding: 8px 12px;
447
- cursor: pointer;
448
- transition: var(--transition-standard);
449
  }
450
 
451
- .theme-select:hover,
452
- .font-select:hover {
 
453
  background: var(--surface-3);
454
- }
455
-
456
- /* Button Styles */
457
- .start-btn,
458
- .discord-btn {
459
- width: 100%;
460
- padding: 12px 24px;
461
- background: linear-gradient(45deg, var(--primary-color), #b44dff);
462
  border: none;
463
- border-radius: 8px;
464
- color: white;
465
- font-weight: 500;
466
  cursor: pointer;
467
  transition: var(--transition-standard);
468
  }
469
 
470
- .start-btn:hover,
471
- .discord-btn:hover {
472
- transform: translateY(-2px);
473
- box-shadow: 0 4px 12px rgba(119, 16, 238, 0.3);
474
  }
475
 
476
- /* Responsive Design */
477
- @media screen and (max-width: 768px) {
478
- .menu.open {
479
- width: 100%;
480
- }
 
 
 
 
 
 
 
 
 
 
481
 
482
- .container {
483
- padding: 10px;
 
 
 
 
484
  }
 
485
 
486
- .messages {
487
- padding: 10px;
 
 
488
  }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
489
 
 
 
490
  .message {
491
- max-width: 90%;
492
  }
493
 
494
- .input-container {
495
- padding: 10px;
 
 
 
 
 
 
496
  }
497
 
498
- .inputs {
499
- padding: 8px 16px;
500
  }
501
 
502
- .feature-list {
503
- grid-template-columns: 1fr;
504
  }
505
  }
506
 
507
- /* Dark/Light Theme Transitions */
508
  .theme-transition {
509
- transition: background-color 0.3s ease,
510
- color 0.3s ease,
511
- border-color 0.3s ease,
512
- box-shadow 0.3s ease;
513
  }
514
 
515
- /* Animation Classes */
516
- .fade-in {
517
- animation: fadeIn 0.3s ease forwards;
 
518
  }
519
 
520
- .slide-up {
521
- animation: slideUp 0.3s ease forwards;
 
 
 
 
 
 
 
 
522
  }
523
 
524
- @keyframes fadeIn {
525
  from {
526
- opacity: 0;
527
  }
528
  to {
529
- opacity: 1;
530
  }
531
  }
532
 
533
- @keyframes slideUp {
534
- from {
535
- transform: translateY(20px);
536
- opacity: 0;
537
- }
538
- to {
539
- transform: translateY(0);
540
- opacity: 1;
541
- }
542
  }
543
 
544
- /* Utility Classes */
545
- .hidden {
546
- display: none !important;
547
  }
548
 
549
- .disabled {
550
- opacity: 0.5;
551
- pointer-events: none;
 
 
 
 
 
 
 
552
  }
553
 
554
- .truncate {
555
- white-space: nowrap;
556
- overflow: hidden;
557
- text-overflow: ellipsis;
 
 
 
 
 
558
  }
 
1
+ /* Enhanced Base Styles & Variables */
2
  :root {
3
  --primary-color: #7710ee;
4
+ --primary-gradient: linear-gradient(45deg, #7710ee, #b44dff);
5
+ --primary-light: rgba(119, 16, 238, 0.15);
6
+ --background-dark: #0a0a16;
7
+ --background-light: #12121f;
8
  --text-primary: #e1e1e1;
9
+ --text-secondary: #9ca3af;
10
  --surface-1: rgba(40, 40, 60, 0.6);
11
  --surface-2: rgba(50, 50, 70, 0.4);
12
  --surface-3: rgba(60, 60, 80, 0.4);
13
  --border-color: rgba(255, 255, 255, 0.07);
14
  --shadow-color: rgba(0, 0, 0, 0.2);
15
+ --blur-strength: 20px;
16
+ --transition-fast: 0.15s cubic-bezier(0.4, 0, 0.2, 1);
17
+ --transition-standard: 0.3s cubic-bezier(0.4, 0, 0.2, 1);
18
+ --font-family: 'Plus Jakarta Sans', sans-serif;
19
  }
20
 
21
+ /* Enhanced Scrollbar */
 
 
 
 
 
 
22
  ::-webkit-scrollbar {
23
+ width: 6px;
24
  }
25
 
26
  ::-webkit-scrollbar-track {
27
+ background: transparent;
 
28
  }
29
 
30
  ::-webkit-scrollbar-thumb {
31
  background: rgba(255, 255, 255, 0.1);
32
+ border-radius: 3px;
 
33
  }
34
 
35
  ::-webkit-scrollbar-thumb:hover {
 
37
  }
38
 
39
  /* Base Layout */
40
+ body {
41
+ font-family: var(--font-family);
42
+ background: radial-gradient(circle at top right, var(--background-light), var(--background-dark));
 
 
 
43
  color: var(--text-primary);
44
  line-height: 1.6;
45
+ overflow: hidden;
46
  }
47
 
48
+ /* Enhanced Navigation */
49
  .nav-container {
50
  position: fixed;
51
  top: 0;
52
  width: 100%;
53
  height: 60px;
54
+ z-index: 1000;
55
+ }
56
+
57
+ .nav-blur {
58
+ position: absolute;
59
+ inset: 0;
60
  background: rgba(10, 10, 20, 0.7);
61
+ backdrop-filter: blur(var(--blur-strength));
62
  border-bottom: 1px solid var(--border-color);
 
63
  }
64
 
65
  .nav-content {
66
+ position: relative;
67
  max-width: 1400px;
68
  margin: 0 auto;
69
  height: 100%;
 
73
  padding: 0 20px;
74
  }
75
 
76
+ /* Enhanced Brand */
77
+ .brand {
78
  display: flex;
79
  align-items: center;
80
+ gap: 12px;
81
  }
82
 
83
+ .brand-icon {
84
+ position: relative;
85
+ width: 32px;
86
+ height: 32px;
87
+ border-radius: 8px;
88
+ background: var(--primary-gradient);
89
+ overflow: hidden;
90
  }
91
 
92
+ .brand-animate {
93
+ position: absolute;
94
+ inset: 0;
95
+ background: linear-gradient(45deg, transparent, rgba(255, 255, 255, 0.2), transparent);
96
+ animation: shine 3s infinite;
 
 
97
  }
98
 
99
+ /* Enhanced Message Bubbles */
100
+ .message-group {
 
 
 
 
 
101
  display: flex;
102
+ gap: 16px;
103
+ margin-bottom: 24px;
104
+ opacity: 0;
105
+ transform: translateY(20px);
106
+ animation: messageAppear 0.5s forwards;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
107
  }
108
 
109
+ .avatar {
110
+ position: relative;
111
+ width: 40px;
112
+ height: 40px;
113
+ flex-shrink: 0;
114
  }
115
 
116
+ .avatar-img {
117
+ width: 100%;
118
+ height: 100%;
119
+ border-radius: 12px;
120
+ background: var(--primary-gradient);
 
 
 
 
 
 
 
121
  display: flex;
122
+ align-items: center;
123
+ justify-content: center;
124
+ font-weight: 600;
125
+ font-size: 14px;
126
+ color: white;
127
  }
128
 
129
+ .avatar-status {
130
+ position: absolute;
131
+ bottom: -2px;
132
+ right: -2px;
133
+ width: 12px;
134
+ height: 12px;
135
+ border-radius: 50%;
136
+ background: #10b981;
137
+ border: 2px solid var(--background-dark);
138
  }
139
 
140
+ .message {
141
+ position: relative;
142
+ max-width: 70%;
143
+ padding: 16px;
144
+ border-radius: 16px;
145
  background: var(--surface-1);
146
  border: 1px solid var(--border-color);
147
+ backdrop-filter: blur(var(--blur-strength));
 
 
 
 
 
 
 
 
148
  }
149
 
150
+ .ai-message {
151
+ border-top-left-radius: 4px;
 
 
152
  }
153
 
154
+ .user-message {
155
+ border-top-right-radius: 4px;
156
+ background: var(--surface-2);
 
 
157
  }
158
 
159
+ .message-content {
160
+ color: var(--text-primary);
161
+ font-size: 15px;
162
+ line-height: 1.6;
 
163
  }
164
 
165
+ .message-actions {
166
+ position: absolute;
167
+ right: -60px;
168
+ top: 50%;
169
+ transform: translateY(-50%);
170
  display: flex;
171
  flex-direction: column;
172
  gap: 8px;
173
+ opacity: 0;
 
 
 
 
 
 
 
 
174
  transition: var(--transition-standard);
175
  }
176
 
177
+ .message:hover .message-actions {
178
+ opacity: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
179
  }
180
 
181
+ .action-btn {
182
+ width: 32px;
183
+ height: 32px;
184
+ border-radius: 8px;
185
  background: var(--surface-2);
186
+ border: 1px solid var(--border-color);
187
+ color: var(--text-secondary);
188
+ cursor: pointer;
189
+ transition: var(--transition-standard);
190
  }
191
 
192
+ .action-btn:hover {
193
+ background: var(--surface-3);
194
+ color: var(--text-primary);
195
+ transform: translateY(-2px);
196
  }
197
 
198
+ /* Enhanced Input Area */
199
  .input-container {
200
+ position: relative;
201
  margin-top: auto;
202
  padding: 20px;
203
  }
204
 
205
+ .input-blur {
206
+ position: absolute;
207
+ inset: 0;
208
+ background: rgba(10, 10, 20, 0.7);
209
+ backdrop-filter: blur(var(--blur-strength));
210
+ }
211
+
212
  .inputs {
213
+ position: relative;
214
  display: flex;
215
  align-items: center;
216
  gap: 12px;
 
218
  background: var(--surface-2);
219
  border: 1px solid var(--border-color);
220
  border-radius: 16px;
221
+ }
222
+
223
+ .text-box-container {
224
+ position: relative;
225
  flex: 1;
226
+ display: flex;
227
+ align-items: center;
228
+ }
229
+
230
+ .text-box {
231
+ width: 100%;
232
  background: none;
233
  border: none;
234
  outline: none;
235
  color: var(--text-primary);
236
+ font-family: var(--font-family);
237
+ font-size: 15px;
238
  line-height: 1.5;
239
  max-height: 200px;
240
  resize: none;
241
  padding: 8px;
242
  }
243
 
244
+ .text-box-actions {
245
+ display: flex;
246
+ gap: 8px;
247
+ padding-right: 8px;
248
+ }
249
+
250
+ /* Enhanced Animations */
251
+ @keyframes messageAppear {
252
+ to {
253
+ opacity: 1;
254
+ transform: translateY(0);
255
+ }
256
+ }
257
+
258
+ @keyframes shine {
259
+ from {
260
+ transform: translateX(-100%);
261
+ }
262
+ to {
263
+ transform: translateX(100%);
264
+ }
265
  }
266
 
267
+ @keyframes pulse {
268
+ 0% {
269
+ transform: scale(1);
270
+ }
271
+ 50% {
272
+ transform: scale(1.05);
273
+ }
274
+ 100% {
275
+ transform: scale(1);
276
+ }
277
+ }
278
+ /* Enhanced Button Styles */
279
  .web-search,
280
  .send-btn {
281
+ position: relative;
282
+ width: 40px;
283
+ height: 40px;
284
+ border-radius: 12px;
285
+ background: var(--surface-1);
286
+ border: 1px solid var(--border-color);
287
  color: var(--text-secondary);
 
288
  cursor: pointer;
 
 
289
  transition: var(--transition-standard);
290
+ overflow: hidden;
291
  }
292
 
293
  .web-search:hover,
294
  .send-btn:hover {
295
  color: var(--text-primary);
296
+ transform: translateY(-2px);
 
 
 
 
 
 
 
 
 
 
297
  }
298
 
299
+ .button-ripple {
300
+ position: absolute;
301
+ inset: 0;
302
+ background: radial-gradient(circle, var(--primary-light) 0%, transparent 70%);
 
 
 
 
 
 
 
 
 
 
303
  opacity: 0;
304
+ transform: scale(0);
305
  transition: var(--transition-standard);
306
  }
307
 
308
+ .web-search:hover .button-ripple,
309
+ .send-btn:hover .button-ripple {
310
  opacity: 1;
311
+ transform: scale(2);
312
  }
313
 
314
+ /* Enhanced Typing Indicator */
315
+ .typing-indicator {
316
+ display: none;
317
+ gap: 4px;
318
+ padding: 8px 16px;
319
  background: var(--surface-1);
320
  border: 1px solid var(--border-color);
321
+ border-radius: 20px;
322
+ position: absolute;
323
+ bottom: 100%;
324
+ left: 76px;
325
+ margin-bottom: 8px;
 
 
326
  }
327
 
328
+ .typing-indicator.active {
329
+ display: flex;
 
330
  }
331
 
332
+ .typing-indicator span {
333
+ width: 8px;
334
+ height: 8px;
335
+ background: var(--text-secondary);
336
+ border-radius: 50%;
337
+ animation: typing 1s infinite;
338
  }
339
 
340
+ .typing-indicator span:nth-child(2) {
341
+ animation-delay: 0.2s;
 
 
 
342
  }
343
 
344
+ .typing-indicator span:nth-child(3) {
345
+ animation-delay: 0.4s;
 
 
 
 
 
 
 
 
346
  }
347
 
348
+ @keyframes typing {
349
+ 0%, 100% {
350
+ transform: translateY(0);
351
+ }
352
+ 50% {
353
+ transform: translateY(-4px);
354
+ }
355
  }
356
 
357
+ /* Enhanced Model Selector */
358
+ .model-selector {
359
+ position: relative;
360
+ width: 200px;
361
  }
362
 
363
+ .models {
364
+ width: 100%;
365
+ padding: 10px 16px;
366
+ background: var(--surface-1);
367
+ border: 1px solid var(--border-color);
368
+ border-radius: 12px;
369
+ color: var(--text-primary);
370
+ font-family: var(--font-family);
371
+ font-size: 14px;
372
+ cursor: pointer;
373
+ transition: var(--transition-standard);
374
+ appearance: none;
375
  }
376
 
377
+ .model-indicator {
378
+ position: absolute;
379
+ right: 12px;
380
+ top: 50%;
381
+ transform: translateY(-50%);
382
+ width: 8px;
383
+ height: 8px;
384
+ border-radius: 50%;
385
+ background: #10b981;
386
+ animation: pulse 2s infinite;
387
+ }
388
+
389
+ /* Enhanced Menu Items */
390
+ .chat-item {
391
  display: flex;
 
392
  align-items: center;
393
+ gap: 12px;
394
+ padding: 12px;
 
 
395
  border-radius: 12px;
396
+ cursor: pointer;
397
+ transition: var(--transition-standard);
398
+ border: 1px solid transparent;
399
  }
400
 
401
+ .chat-item:hover {
402
+ background: var(--surface-1);
403
+ border-color: var(--border-color);
404
+ transform: translateX(4px);
405
  }
406
 
407
+ .chat-icon {
408
+ width: 32px;
409
+ height: 32px;
410
+ border-radius: 8px;
411
+ background: var(--surface-2);
412
+ display: flex;
413
+ align-items: center;
414
+ justify-content: center;
415
+ color: var(--text-secondary);
416
  }
417
 
418
+ /* Code Block Styling */
419
+ .code-block {
420
+ position: relative;
421
+ margin: 16px 0;
422
+ background: var(--surface-1);
423
+ border-radius: 12px;
424
+ border: 1px solid var(--border-color);
425
+ overflow: hidden;
426
  }
427
 
428
+ .code-header {
429
  display: flex;
430
  justify-content: space-between;
431
  align-items: center;
432
+ padding: 8px 16px;
433
+ background: var(--surface-2);
434
  border-bottom: 1px solid var(--border-color);
435
  }
436
 
437
+ .code-language {
438
+ font-size: 13px;
439
+ color: var(--text-secondary);
 
 
 
 
 
 
440
  }
441
 
442
+ .code-copy {
443
+ padding: 4px 8px;
444
+ border-radius: 6px;
445
  background: var(--surface-3);
 
 
 
 
 
 
 
 
446
  border: none;
447
+ color: var(--text-secondary);
 
 
448
  cursor: pointer;
449
  transition: var(--transition-standard);
450
  }
451
 
452
+ .code-copy:hover {
453
+ color: var(--text-primary);
454
+ background: var(--surface-1);
 
455
  }
456
 
457
+ .code-content {
458
+ padding: 16px;
459
+ overflow-x: auto;
460
+ }
461
+
462
+ /* Enhanced Modal Animations */
463
+ .modal,
464
+ .settings-modal {
465
+ animation: modalFadeIn 0.3s forwards;
466
+ }
467
+
468
+ .modal-content,
469
+ .settings-content {
470
+ animation: modalSlideUp 0.3s forwards;
471
+ }
472
 
473
+ @keyframes modalFadeIn {
474
+ from {
475
+ opacity: 0;
476
+ }
477
+ to {
478
+ opacity: 1;
479
  }
480
+ }
481
 
482
+ @keyframes modalSlideUp {
483
+ from {
484
+ opacity: 0;
485
+ transform: translateY(20px);
486
  }
487
+ to {
488
+ opacity: 1;
489
+ transform: translateY(0);
490
+ }
491
+ }
492
+
493
+ /* Message Markdown Styling */
494
+ .message-content pre {
495
+ margin: 16px 0;
496
+ white-space: pre-wrap;
497
+ }
498
+
499
+ .message-content p {
500
+ margin-bottom: 12px;
501
+ }
502
+
503
+ .message-content a {
504
+ color: var(--primary-color);
505
+ text-decoration: none;
506
+ border-bottom: 1px dashed currentColor;
507
+ }
508
+
509
+ .message-content img {
510
+ max-width: 100%;
511
+ border-radius: 8px;
512
+ margin: 16px 0;
513
+ }
514
 
515
+ /* Responsive Enhancements */
516
+ @media screen and (max-width: 768px) {
517
  .message {
518
+ max-width: 85%;
519
  }
520
 
521
+ .message-actions {
522
+ position: relative;
523
+ right: 0;
524
+ top: 0;
525
+ transform: none;
526
+ flex-direction: row;
527
+ justify-content: flex-end;
528
+ margin-top: 8px;
529
  }
530
 
531
+ .model-selector {
532
+ width: 150px;
533
  }
534
 
535
+ .brand-text {
536
+ display: none;
537
  }
538
  }
539
 
540
+ /* Dark Mode Transitions */
541
  .theme-transition {
542
+ transition: background-color 0.5s ease,
543
+ color 0.5s ease,
544
+ border-color 0.5s ease;
 
545
  }
546
 
547
+ /* Loading States */
548
+ .loading {
549
+ position: relative;
550
+ overflow: hidden;
551
  }
552
 
553
+ .loading::after {
554
+ content: '';
555
+ position: absolute;
556
+ inset: 0;
557
+ background: linear-gradient(90deg,
558
+ transparent,
559
+ rgba(255, 255, 255, 0.05),
560
+ transparent
561
+ );
562
+ animation: loading 1.5s infinite;
563
  }
564
 
565
+ @keyframes loading {
566
  from {
567
+ transform: translateX(-100%);
568
  }
569
  to {
570
+ transform: translateX(100%);
571
  }
572
  }
573
 
574
+ /* Message Grouping */
575
+ .message-group + .message-group {
576
+ margin-top: 24px;
 
 
 
 
 
 
577
  }
578
 
579
+ .message + .message {
580
+ margin-top: 8px;
 
581
  }
582
 
583
+ /* System Message Styling */
584
+ .system-message {
585
+ text-align: center;
586
+ padding: 8px 16px;
587
+ background: var(--surface-1);
588
+ border-radius: 20px;
589
+ font-size: 13px;
590
+ color: var(--text-secondary);
591
+ margin: 16px 0;
592
+ animation: systemMessage 0.3s forwards;
593
  }
594
 
595
+ @keyframes systemMessage {
596
+ from {
597
+ opacity: 0;
598
+ transform: translateY(-10px);
599
+ }
600
+ to {
601
+ opacity: 1;
602
+ transform: translateY(0);
603
+ }
604
  }