Renderlib-dev commited on
Commit
d1d790b
·
verified ·
1 Parent(s): 80cdfa7

Update index.html

Browse files
Files changed (1) hide show
  1. index.html +1110 -292
index.html CHANGED
@@ -9,23 +9,38 @@
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
10
 
11
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">
12
- <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js"></script>
13
- <script src="https://cdnjs.cloudflare.com/ajax/libs/mammoth/1.6.0/mammoth.browser.min.js"></script>
14
- <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js"></script>
15
- <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.1/marked.min.js"></script>
 
 
 
 
16
 
17
  <script>
18
  window.MathJax = {
19
  tex: {
20
- inlineMath: [['$', '$'], ['\\(', '\\)']],
21
- displayMath: [['$$', '$$'], ['\\[', '\\]']],
 
 
 
 
 
 
22
  processEscapes: true,
23
- packages: {'[+]': ['mhchem']}
 
 
24
  },
25
- loader: {load: ['[tex]/mhchem']}
 
 
26
  };
27
  </script>
28
- <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js"></script>
 
29
 
30
  <style>
31
  :root {
@@ -63,6 +78,7 @@
63
  outline: none !important;
64
  box-shadow: none !important;
65
  }
 
66
  *:focus-visible {
67
  outline: none !important;
68
  box-shadow: none !important;
@@ -105,12 +121,21 @@
105
  }
106
 
107
  @keyframes liquidMove {
108
- 0%, 100% { transform: translate(0, 0) rotate(0deg); }
109
- 33% { transform: translate(30px, -30px) rotate(120deg); }
110
- 66% { transform: translate(-20px, 20px) rotate(240deg); }
 
 
 
 
 
 
 
111
  }
112
 
113
- button, a, [role="button"] {
 
 
114
  -webkit-tap-highlight-color: transparent;
115
  outline: none;
116
  }
@@ -123,39 +148,116 @@
123
  font-family: inherit;
124
  }
125
 
126
- input, textarea {
 
127
  font-family: inherit;
128
  outline: none;
129
  border: none;
130
  background: transparent;
131
  }
132
 
133
- ::-webkit-scrollbar { width: 5px; height: 5px; }
134
- ::-webkit-scrollbar-track { background: transparent; }
135
- ::-webkit-scrollbar-thumb { background: rgba(114, 119, 117, 0.3); border-radius: 10px; }
136
- ::-webkit-scrollbar-thumb:hover { background: rgba(114, 119, 117, 0.6); }
 
 
 
 
 
 
 
 
 
 
137
 
138
- @keyframes fadeIn { from { opacity: 0; transform: translateY(6px); } to { opacity: 1; transform: translateY(0); } }
139
- @keyframes fadeInUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
140
- @keyframes pulseOpacity { 0% { opacity: 0.4; } 100% { opacity: 1; } }
141
- @keyframes spin { 100% { transform: rotate(360deg); } }
142
- @keyframes typingBounce { 0%, 60%, 100% { transform: translateY(0); opacity: 0.4; } 30% { transform: translateY(-4px); opacity: 1; } }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
143
  @keyframes recordPulse {
144
- 0% { transform: scale(1); box-shadow: 0 0 0 0 rgba(179, 38, 30, 0.4); }
145
- 50% { transform: scale(1.05); box-shadow: 0 0 0 10px rgba(179, 38, 30, 0); }
146
- 100% { transform: scale(1); box-shadow: 0 0 0 0 rgba(179, 38, 30, 0); }
 
 
 
 
 
 
 
 
 
147
  }
148
  @keyframes dropUpFade {
149
- from { opacity: 0; transform: translateY(10px) scale(0.95); }
150
- to { opacity: 1; transform: translateY(0) scale(1); }
 
 
 
 
 
 
151
  }
152
  @keyframes modalFadeIn {
153
- from { opacity: 0; transform: scale(0.96); }
154
- to { opacity: 1; transform: scale(1); }
 
 
 
 
 
 
155
  }
156
  @keyframes blinkCursor {
157
- 0%, 100% { opacity: 1; }
158
- 50% { opacity: 0; }
 
 
 
 
 
159
  }
160
 
161
  .blinking-cursor {
@@ -170,90 +272,221 @@
170
  }
171
 
172
  .btn-menu {
173
- position: absolute; top: 16px; left: 16px; z-index: 50;
174
- width: 44px; height: 44px; border-radius: 50%;
175
- display: flex; align-items: center; justify-content: center;
 
 
 
 
 
 
 
176
  background: var(--glass-bg);
177
  backdrop-filter: blur(16px);
178
  -webkit-backdrop-filter: blur(16px);
179
  border: 1px solid var(--glass-border);
180
- color: var(--text-secondary);
181
  transition: var(--transition-default);
182
  box-shadow: var(--glass-shadow);
183
  }
184
- .btn-menu:hover { background: rgba(255, 255, 255, 0.8); color: var(--text-primary); }
 
 
 
185
 
186
  .sidebar {
187
- width: 280px;
188
  background: var(--bg-sidebar);
189
  backdrop-filter: blur(20px);
190
  -webkit-backdrop-filter: blur(20px);
191
  border-right: 1px solid var(--glass-border);
192
- display: flex; flex-direction: column;
193
- transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
 
194
  z-index: 100;
195
- height: 100%; flex-shrink: 0;
196
- box-shadow: 2px 0 12px rgba(0,0,0,0.03);
 
 
 
 
 
197
  }
198
- .sidebar.collapsed { transform: translateX(-100%); position: absolute; }
199
 
200
- .sidebar-header { padding: 20px 20px 10px; display: flex; align-items: center; justify-content: space-between; }
201
- .sidebar-logo { font-weight: 600; font-size: 16px; letter-spacing: -0.3px; color: var(--text-primary); }
 
 
 
 
 
 
 
 
 
 
202
 
203
- .btn-new-chat {
204
- margin: 10px 16px;
205
- display: flex; align-items: center; justify-content: center; gap: 10px;
206
- padding: 12px 14px;
207
- border-radius: var(--radius-sm);
 
 
 
208
  background: var(--glass-bg);
209
  backdrop-filter: blur(12px);
210
  -webkit-backdrop-filter: blur(12px);
211
- border: 1px solid var(--glass-border);
212
- font-size: 14px; font-weight: 500;
213
- transition: var(--transition-default);
214
- color: var(--text-primary);
 
215
  box-shadow: var(--glass-shadow);
216
  }
217
- .btn-new-chat:hover { background: rgba(255, 255, 255, 0.9); box-shadow: 0 4px 16px rgba(0,0,0,0.08); color: var(--brand-accent); border-color: var(--border-focus);}
218
-
219
- .sidebar-history { flex: 1; overflow-y: auto; padding: 10px 16px; display: flex; flex-direction: column; gap: 4px; }
220
-
221
- .history-header { display:flex; justify-content:space-between; align-items:center; padding: 0 4px 8px; margin-bottom:8px; border-bottom:1px solid var(--border-light); }
222
- .history-title-text { font-size:11px; font-weight:600; color:var(--text-tertiary); text-transform:uppercase; letter-spacing:0.5px; }
223
- .btn-clear-all { font-size:11px; font-weight:500; color:var(--text-tertiary); cursor:pointer; transition:var(--transition-default); }
224
- .btn-clear-all:hover { color:var(--brand-danger); }
225
-
226
- .history-item {
227
- padding: 10px 14px;
228
- border-radius: var(--radius-sm);
229
- font-size: 14px; color: var(--text-secondary);
230
- cursor: pointer;
231
- display: flex; justify-content: space-between; align-items: center;
232
- transition: var(--transition-default);
233
- border: 1px solid transparent;
234
- }
235
- .history-item:hover { background: rgba(255, 255, 255, 0.6); color: var(--text-primary); }
236
- .history-item.active { background: rgba(227, 236, 250, 0.8); color: #001d35; font-weight: 500; border-color: rgba(219, 234, 254, 0.5); }
237
- .history-text { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; flex: 1; }
238
-
239
- .btn-delete-chat { background: none; border: none; color: var(--text-tertiary); cursor: pointer; padding: 4px; display: none; align-items: center; justify-content: center; border-radius: 6px; }
240
- .history-item:hover .btn-delete-chat { display: flex; }
241
- .btn-delete-chat:hover { color: var(--brand-danger); background: #fce8e8; }
242
-
243
- .sidebar-footer {
244
- padding: 16px;
245
- border-top: 1px solid var(--glass-border);
246
- display: flex; align-items: center; gap: 10px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
247
  background: var(--glass-bg);
248
  backdrop-filter: blur(12px);
249
  -webkit-backdrop-filter: blur(12px);
250
  flex-wrap: wrap;
251
  }
252
- .user-avatar { width: 38px; height: 38px; border-radius: 50%; background: var(--brand-accent); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 15px; font-weight: 600; flex-shrink: 0; }
253
- .user-info-box { flex: 1; overflow: hidden; display: flex; flex-direction: column; justify-content: center; }
254
- .user-name { font-size: 14px; font-weight: 600; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); line-height: 1.2; }
255
- .user-sub { font-size: 11.5px; font-weight: 500; color: var(--text-secondary); margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; line-height: 1.2; cursor: pointer; }
256
-
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
257
  .btn-login-register {
258
  background: var(--brand-accent);
259
  color: #fff;
@@ -268,44 +501,110 @@
268
  margin-left: auto;
269
  box-shadow: 0 2px 8px rgba(11, 87, 208, 0.15);
270
  }
271
- .btn-login-register:hover { background: #0842a0; transform: scale(1.02); }
 
 
 
272
 
273
- .btn-power { width: 34px; height: 34px; border-radius: 50%; display: flex; align-items: center; justify-content: center; color: var(--text-secondary); transition: var(--transition-default); }
274
- .btn-power:hover { background: #fce8e8; color: var(--brand-danger); }
 
 
 
 
 
 
 
 
 
 
 
 
275
 
276
- .main-area { flex: 1; display: flex; flex-direction: column; position: relative; transition: 0.3s; height: 100%; overflow: hidden; z-index: 1; }
 
 
 
 
 
 
 
 
 
277
 
278
  .chat-container {
279
- flex: 1; overflow-x: hidden; overflow-y: auto; padding: 60px 20px 180px;
280
- display: flex; flex-direction: column; align-items: center;
 
 
 
 
 
281
  scroll-behavior: smooth;
282
  }
283
 
284
  .welcome-center {
285
- margin: auto; text-align: center; display: flex; flex-direction: column; align-items: center;
286
- animation: fadeInUp 0.6s ease; width: 100%; justify-content: center; flex: 1;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
287
  }
288
- .welcome-center img { width: 64px; height: 64px; border-radius: 18px; margin-bottom: 24px; box-shadow: 0 4px 15px rgba(0,0,0,0.1); object-fit: cover; }
289
- .welcome-center h1 { font-size: 32px; font-weight: 400; color: #1f1f1f; margin-bottom: 8px; line-height: 1.3; }
290
- .welcome-center p { font-size: 16px; color: var(--text-secondary); display: none; }
291
 
292
- #chatMessages { width: 100%; display: flex; flex-direction: column; align-items: center; }
 
 
 
 
 
293
 
294
  .message-wrapper {
295
- width: 100%; max-width: 850px; margin-bottom: 32px;
296
- display: flex; flex-direction: column;
 
 
 
297
  animation: fadeInUp 0.3s ease;
298
  }
299
 
300
  .user-message {
301
- align-self: flex-end; max-width: 85%;
 
302
  background: var(--bg-user-msg);
303
  backdrop-filter: blur(12px);
304
  -webkit-backdrop-filter: blur(12px);
305
- padding: 14px 20px; border-radius: 24px 24px 6px 24px;
306
- font-size: 15.5px; line-height: 1.6; color: var(--text-primary);
307
- box-shadow: 0 1px 3px rgba(0,0,0,0.02);
308
- word-wrap: break-word; overflow-wrap: break-word;
 
 
 
 
309
  border: 1px solid var(--glass-border);
310
  }
311
 
@@ -324,15 +623,28 @@
324
  }
325
 
326
  .bot-avatar {
327
- width: 34px; height: 34px; border-radius: 50%; flex-shrink: 0; overflow: hidden;
328
- border: 1px solid var(--border-light); background: #fff; box-shadow: 0 2px 8px rgba(0,0,0,0.05);
329
- margin-top: 2px; display: flex; align-items: center; justify-content: center;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
330
  }
331
- .bot-avatar img { width: 100%; height: 100%; object-fit: cover; }
332
 
333
  .bot-content-wrapper {
334
  flex: 1 1 0%;
335
- min-width: 0;
336
  max-width: calc(100% - 50px);
337
  width: 100%;
338
  overflow: hidden;
@@ -345,29 +657,67 @@
345
  word-wrap: break-word;
346
  overflow-wrap: break-word;
347
  word-break: normal;
348
- white-space: pre-wrap;
349
  width: 100%;
350
  max-width: 100%;
351
  min-height: 20px;
352
  }
353
 
354
- .bot-content * { max-width: 100%; }
355
- .bot-content p { margin-bottom: 16px; white-space: pre-wrap; }
356
- .bot-content p:last-child { margin-bottom: 0; }
357
- .bot-content strong { font-weight: 600; color: #000; }
358
- .bot-content code { font-family: var(--font-code); background: rgba(31,31,31,0.05); padding: 3px 6px; border-radius: 6px; font-size: 0.9em; color: #0284c7; white-space: pre-wrap; word-break: break-word; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
359
 
360
  .bot-content pre {
361
- background: #0d1117; padding: 40px 16px 16px; border-radius: var(--radius-md);
362
- overflow-x: auto; margin: 16px 0; box-shadow: 0 4px 16px rgba(0,0,0,0.1);
363
- position: relative; white-space: pre; word-break: normal;
 
 
 
 
 
 
364
  }
365
  .bot-content pre::before {
366
- content: ''; position: absolute; top: 14px; left: 16px;
367
- width: 12px; height: 12px; border-radius: 50%;
368
- background: #ff5f56; box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
369
  }
370
- .bot-content pre code { background: none; padding: 0; color: #e2e8f0; font-size: 13.5px; text-shadow: none; white-space: pre; }
371
 
372
  .bot-content table {
373
  display: block;
@@ -378,11 +728,12 @@
378
  white-space: nowrap;
379
  -webkit-overflow-scrolling: touch;
380
  }
381
- .bot-content th, .bot-content td {
 
382
  border: 1px solid var(--border-light);
383
  padding: 8px 14px;
384
  text-align: left;
385
- background: rgba(255,255,255,0.4);
386
  white-space: nowrap;
387
  }
388
  .bot-content th {
@@ -390,118 +741,242 @@
390
  font-weight: 600;
391
  }
392
 
393
- .chat-attachment-container { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
394
- .chat-file-pill {
395
- display: inline-flex; align-items: center; gap: 8px;
 
 
 
 
 
 
 
396
  background: var(--glass-bg);
397
  backdrop-filter: blur(8px);
398
  -webkit-backdrop-filter: blur(8px);
399
- border: 1px solid var(--glass-border);
400
- padding: 8px 14px; border-radius: var(--radius-lg);
401
- font-size: 13px; font-weight: 500;
402
- box-shadow: 0 2px 6px rgba(0,0,0,0.03);
 
 
 
 
 
 
 
 
 
 
403
  }
404
- .chat-img-preview { max-width: 120px; max-height: 120px; border-radius: 12px; border: 1px solid var(--border-light); object-fit: cover; box-shadow: 0 4px 12px rgba(0,0,0,0.06); }
405
 
406
- .qwen-think-box {
407
  background: var(--glass-bg);
408
  backdrop-filter: blur(10px);
409
  -webkit-backdrop-filter: blur(10px);
410
- border: 1px solid var(--glass-border);
411
- border-radius: 16px; margin-bottom: 16px; overflow: hidden;
412
- transition: var(--transition-default);
413
- }
414
- .qwen-think-box summary {
415
- padding: 12px 16px; font-size: 13.5px; font-weight: 500; color: var(--text-secondary);
416
- cursor: pointer; user-select: none; list-style: none;
417
- display: flex; align-items: center; gap: 8px;
418
- background: rgba(248, 250, 252, 0.4);
419
- }
420
- .qwen-think-box summary::-webkit-details-marker { display: none; }
421
- .qwen-think-box summary svg.arrow { width: 14px; height: 14px; transition: transform var(--transition-default); }
422
- .qwen-think-box[open] summary svg.arrow { transform: rotate(90deg); }
423
- .qwen-think-content { padding: 16px; border-top: 1px solid var(--border-light); font-size: 13.5px; color: var(--text-secondary); font-style: italic; line-height: 1.6; opacity: 0.8; white-space: pre-wrap;}
424
-
425
- .action-status {
426
- display: inline-flex; align-items: center; gap: 8px; padding: 6px 14px;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
427
  background: var(--glass-bg);
428
  backdrop-filter: blur(8px);
429
  -webkit-backdrop-filter: blur(8px);
430
- border-radius: 16px; font-size: 13px; font-weight: 500; color: var(--text-secondary);
431
- margin-bottom: 16px; border: 1px solid var(--glass-border);
432
- cursor: default; user-select: none;
433
- }
434
- .action-status.active { background: rgba(227, 236, 250, 0.8); border-color: rgba(168, 199, 250, 0.5); color: var(--brand-accent); }
435
- .flicker-text { animation: pulseOpacity 1.2s infinite alternate; }
436
- .spin-icon { animation: spin 1s linear infinite; }
437
-
438
- .typing-indicator { display: inline-flex; gap: 4px; padding: 8px 0; align-items: center; }
439
- .typing-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--text-tertiary); animation: typingBounce 1.2s infinite; }
440
- .typing-dot:nth-child(2) { animation-delay: 0.15s; }
441
- .typing-dot:nth-child(3) { animation-delay: 0.3s; }
442
-
443
- .msg-actions { display: flex; gap: 8px; margin-top: 14px; opacity: 0; transition: opacity var(--transition-default); align-items: center; flex-wrap: wrap; }
444
- .message-wrapper:hover .msg-actions { opacity: 1; }
445
- @media (hover: none) { .msg-actions { opacity: 1; } }
446
-
447
- .action-btn {
448
- display: flex; align-items: center; gap: 6px; font-size: 13px; font-weight: 500;
449
- color: var(--text-secondary); padding: 8px 14px; border-radius: 12px;
450
- transition: var(--transition-default);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
451
  background: var(--glass-bg);
452
  backdrop-filter: blur(4px);
453
  -webkit-backdrop-filter: blur(4px);
454
- border: 1px solid var(--glass-border);
 
 
 
 
 
 
 
 
 
 
 
 
 
455
  }
456
- .action-btn:hover { background: rgba(255, 255, 255, 0.9); color: var(--text-primary); box-shadow: 0 2px 6px rgba(0,0,0,0.04); }
457
- .action-btn.listen-btn { background: rgba(227, 236, 250, 0.8); color: #0b57d0; border-color: transparent; }
458
- .action-btn.listen-btn:hover { background: rgba(211, 227, 253, 0.9); }
459
 
460
  .btn-scroll-bottom {
461
  position: absolute;
462
  bottom: 110px;
463
  left: 50%;
464
  transform: translateX(-50%) translateY(20px);
465
- width: 40px; height: 40px;
 
466
  border-radius: 50%;
467
  background: var(--glass-bg);
468
  backdrop-filter: blur(16px);
469
  -webkit-backdrop-filter: blur(16px);
470
  border: 1px solid var(--glass-border);
471
  box-shadow: var(--glass-shadow);
472
- display: flex; align-items: center; justify-content: center;
 
 
473
  color: var(--text-secondary);
474
- opacity: 0; pointer-events: none;
 
475
  transition: all 0.3s ease;
476
  z-index: 45;
477
  }
478
  .btn-scroll-bottom.visible {
479
- opacity: 1; pointer-events: auto; transform: translateX(-50%) translateY(0);
 
 
480
  }
481
  .btn-scroll-bottom:hover {
482
- background: rgba(255, 255, 255, 0.9); color: var(--brand-accent);
 
483
  }
484
 
485
  .input-dock {
486
- position: absolute; bottom: 0; left: 0; width: 100%;
487
- padding: 10px 20px 24px; padding-bottom: max(24px, env(safe-area-inset-bottom));
 
 
 
 
488
  background: linear-gradient(to top, rgba(17, 25, 40, 0.18) 0%, transparent 100%);
489
- display: flex; flex-direction: column; align-items: center; z-index: 50;
 
 
 
490
  }
491
 
492
- .loc-toast {
493
- display: none; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 500;
494
- color: var(--text-secondary); margin-bottom: 12px;
 
 
 
 
 
495
  background: var(--glass-bg);
496
  backdrop-filter: blur(12px);
497
  -webkit-backdrop-filter: blur(12px);
498
- padding: 6px 14px; border-radius: 16px;
499
- border: 1px solid var(--glass-border);
 
500
  box-shadow: var(--glass-shadow);
501
  }
502
 
503
  .input-container {
504
- width: 100%; max-width: 850px;
 
505
  background: rgba(255, 255, 255, 0.82);
506
  backdrop-filter: blur(24px);
507
  -webkit-backdrop-filter: blur(24px);
@@ -509,7 +984,8 @@
509
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(168, 199, 250, 0.15);
510
  border-radius: 50px;
511
  padding: 8px 12px 8px 16px;
512
- display: flex; flex-direction: column;
 
513
  transition: var(--transition-default);
514
  }
515
  .input-container:focus-within {
@@ -518,38 +994,113 @@
518
  background: rgba(255, 255, 255, 0.92);
519
  }
520
 
521
- .file-preview-bar { display: none; padding: 4px 0 12px; align-items: center; gap: 10px; margin-bottom: 4px; }
522
- .file-preview-bar.active { display: flex; }
523
- .file-preview-pill {
524
- display: flex; align-items: center; gap: 8px;
 
 
 
 
 
 
 
 
 
 
525
  background: rgba(255, 255, 255, 0.95);
526
  backdrop-filter: blur(8px);
527
  -webkit-backdrop-filter: blur(8px);
528
- border: 1px solid var(--border-light);
529
- padding: 6px 12px; border-radius: 16px;
530
- font-size: 13.5px; font-weight: 500;
531
- box-shadow: 0 2px 4px rgba(0,0,0,0.03);
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
532
  }
533
- .file-preview-icon { width: 18px; height: 18px; object-fit: cover; border-radius: 4px; }
534
- .file-preview-name { max-width: 120px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; color: var(--text-primary); }
535
- .btn-remove-file { width: 20px; height: 20px; border-radius: 50%; background: #fce8e8; color: var(--brand-danger); display: flex; align-items: center; justify-content: center; transition: var(--transition-default); margin-left: 4px; }
536
- .btn-remove-file:hover { background: #fca5a5; color: #fff; }
537
 
538
- .input-row { display: flex; align-items: flex-end; gap: 10px; width: 100%; align-items: center; }
 
 
 
 
 
 
539
 
540
- .tools-left { display: flex; gap: 4px; align-items: center; position: relative; }
 
 
 
 
 
541
  .tool-btn {
542
- width: 44px; height: 44px; border-radius: 50%; display: flex; align-items: center; justify-content: center;
543
- color: var(--text-secondary); transition: all 0.2s ease; position: relative; flex-shrink: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
544
  }
545
- .tool-btn:hover { background: rgba(255, 255, 255, 0.7); color: var(--text-primary); transform: scale(1.05); }
546
 
547
- .tool-btn.active-env { color: #fff; background: rgba(11, 87, 208, 0.7); }
548
- .tool-btn.active-think-low { color: #fff; background: rgba(179, 38, 30, 0.7); }
549
- .tool-btn.active-think-medium { color: #fff; background: rgba(227, 116, 0, 0.7); }
550
- .tool-btn.active-think-high { color: #fff; background: rgba(11, 87, 208, 0.7); }
551
- .tool-btn.active-search { color: #fff; background: rgba(20, 108, 46, 0.7); }
552
-
553
  .btn-mic.recording {
554
  color: var(--brand-danger);
555
  background: rgba(252, 232, 232, 0.9);
@@ -557,40 +1108,82 @@
557
  }
558
 
559
  .chat-input {
560
- flex: 1; padding: 12px 4px; font-size: 15.5px; resize: none; max-height: 180px; min-height: 24px;
561
- color: var(--text-primary); line-height: 1.5; background: transparent;
 
 
 
 
 
 
 
562
  caret-color: var(--brand-accent);
563
  }
564
- .chat-input::placeholder { color: var(--text-tertiary); font-weight: 400;}
 
 
 
565
 
566
  .btn-send {
567
- width: 44px; height: 44px; border-radius: 50%;
568
- background: transparent; color: var(--text-primary);
569
- display: flex; align-items: center; justify-content: center;
570
- transition: all 0.2s ease; flex-shrink: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
571
  }
572
- .btn-send:hover:not(:disabled) { background: rgba(255, 255, 255, 0.8); transform: scale(1.08); }
573
- .btn-send:disabled { color: var(--text-tertiary); cursor: not-allowed; background: transparent;}
574
 
575
  .btn-stop {
576
- width: 44px; height: 44px; border-radius: 50%;
577
- background: rgba(252, 232, 232, 0.9); color: var(--brand-danger);
578
- display: none; align-items: center; justify-content: center;
579
- transition: all 0.2s ease; flex-shrink: 0;
 
 
 
 
 
 
 
 
 
 
 
 
 
580
  }
581
- .btn-stop.active { display: flex; }
582
- .btn-stop:hover { background: #fca5a5; color: #fff; }
583
 
584
- .hidden-input { display: none; }
 
 
585
  .dropdown-menu {
586
- position: absolute; bottom: calc(100% + 14px); left: 0;
 
 
587
  background: var(--glass-bg);
588
  backdrop-filter: blur(20px);
589
  -webkit-backdrop-filter: blur(20px);
590
- border: 1px solid var(--glass-border);
591
- border-radius: 20px; padding: 8px;
 
592
  box-shadow: var(--glass-shadow);
593
- display: none; flex-direction: column; min-width: 200px; z-index: 100;
 
 
 
594
  transform-origin: bottom left;
595
  }
596
  .dropdown-menu.active {
@@ -598,83 +1191,308 @@
598
  animation: dropUpFade 0.2s cubic-bezier(0.4, 0, 0.2, 1);
599
  }
600
 
601
- .dropdown-header { padding: 8px 14px 12px; font-size: 11.5px; font-weight: 600; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.5px; border-bottom: 1px solid var(--border-light); margin-bottom: 4px; }
602
- .dropdown-item { padding: 12px 14px; border-radius: 12px; font-size: 14px; font-weight: 500; display: flex; align-items: center; justify-content: space-between; gap: 10px; cursor: pointer; transition: var(--transition-default); color: var(--text-secondary); }
603
- .dropdown-item:hover { background: rgba(255, 255, 255, 0.6); color: var(--text-primary); }
604
- .dropdown-item.selected { background: rgba(227, 236, 250, 0.8); color: var(--brand-accent); font-weight: 600; }
605
- .dropdown-item svg { color: inherit; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
606
 
607
- .auth-overlay { position: fixed; inset: 0; background: rgba(15, 23, 42, 0.5); backdrop-filter: blur(8px); display: none; align-items: center; justify-content: center; z-index: 2000; }
608
- .auth-modal {
 
 
 
 
 
 
 
 
 
609
  background: var(--glass-bg);
610
  backdrop-filter: blur(24px);
611
  -webkit-backdrop-filter: blur(24px);
612
- width: 90%; max-width: 380px;
613
- border-radius: var(--radius-lg); padding: 32px;
614
- box-shadow: 0 24px 48px rgba(0,0,0,0.15);
 
 
615
  position: relative;
616
  border: 1px solid var(--glass-border);
617
  animation: modalFadeIn 0.2s ease;
618
  }
619
- .auth-close { position: absolute; top: 16px; right: 16px; color: var(--text-tertiary); width: 32px; height: 32px; display: flex; align-items: center; justify-content: center; border-radius: 50%; transition: var(--transition-default); }
620
- .auth-close:hover { background: var(--bg-sidebar); color: var(--text-primary); }
621
- .auth-title { font-size: 22px; font-weight: 600; margin-bottom: 24px; text-align: center; color: var(--text-primary); letter-spacing: -0.5px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
622
 
623
- .auth-tabs { display: flex; background: rgba(240, 244, 249, 0.6); border-radius: var(--radius-sm); padding: 4px; margin-bottom: 20px; }
624
- .auth-tab { flex: 1; text-align: center; padding: 10px; font-size: 13.5px; font-weight: 500; cursor: pointer; border-radius: 8px; color: var(--text-secondary); transition: var(--transition-default); }
625
- .auth-tab.active { background: rgba(255, 255, 255, 0.9); color: var(--text-primary); box-shadow: 0 2px 4px rgba(0,0,0,0.05); }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
626
 
627
- .auth-input { width: 100%; padding: 14px 16px; border: 1px solid var(--border-light); border-radius: var(--radius-sm); font-size: 14.5px; margin-bottom: 12px; transition: var(--transition-default); background: rgba(248, 250, 252, 0.8); caret-color: var(--brand-accent); }
628
- .auth-input:focus { border-color: var(--brand-accent); background: rgba(255, 255, 255, 0.95); box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1); }
629
- .auth-btn { width: 100%; padding: 14px; background: var(--brand-color); color: #fff; font-size: 14.5px; font-weight: 500; border-radius: var(--radius-sm); transition: var(--transition-default); box-shadow: 0 4px 12px rgba(15, 23, 42, 0.15); }
630
- .auth-btn:hover { background: #1e293b; transform: translateY(-1px); }
631
- .auth-phase { display: none; }
632
- .auth-phase.active { display: block; }
633
- .auth-message { font-size: 13px; text-align: center; margin-top: 14px; min-height: 18px; font-weight: 500; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
634
 
635
- .mobile-overlay { display: none; position: fixed; inset: 0; background: rgba(15,23,42,0.3); backdrop-filter: blur(3px); z-index: 95; opacity: 0; transition: 0.3s; pointer-events: none; }
636
- .mobile-overlay.active { display: block; opacity: 1; pointer-events: all; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
637
 
638
  .custom-confirm-overlay {
639
- position: fixed; inset: 0; background: rgba(15, 23, 42, 0.4); backdrop-filter: blur(6px);
640
- display: none; align-items: center; justify-content: center; z-index: 2500;
 
 
 
 
 
 
641
  }
642
  .custom-confirm-box {
643
- background: var(--glass-bg); backdrop-filter: blur(24px); -webkit-backdrop-filter: blur(24px);
644
- border: 1px solid var(--glass-border); border-radius: 28px; padding: 28px; max-width: 340px;
645
- width: 90%; text-align: center; box-shadow: 0 24px 48px rgba(0,0,0,0.18);
 
 
 
 
 
 
 
646
  animation: modalFadeIn 0.2s ease;
647
  }
648
- .custom-confirm-msg { font-size: 16px; font-weight: 500; margin-bottom: 24px; color: var(--text-primary); line-height: 1.5; }
649
- .custom-confirm-btns { display: flex; gap: 12px; justify-content: center; }
650
- .custom-confirm-btn { flex: 1; padding: 12px; border-radius: 16px; font-size: 14px; font-weight: 600; transition: var(--transition-default); }
651
- .custom-confirm-btn.cancel { background: rgba(240, 244, 249, 0.8); color: var(--text-secondary); }
652
- .custom-confirm-btn.confirm { background: var(--brand-danger); color: #fff; }
653
- .custom-confirm-btn.cancel:hover { background: rgba(220, 230, 240, 0.9); }
654
- .custom-confirm-btn.confirm:hover { background: #a01e18; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
655
 
656
  @media (max-width: 900px) {
657
- .sidebar { position: fixed; left: 0; top: 0; height: 100%; box-shadow: 4px 0 32px rgba(0,0,0,0.1); }
658
- .sidebar.collapsed { transform: translateX(-100%); box-shadow: none; }
659
- .input-dock { padding: 10px 10px 20px; }
660
- .input-container { border-radius: 28px; padding: 8px 10px 8px 16px; }
661
- .tool-btn { width: 38px; height: 38px; }
662
- .btn-send, .btn-stop { width: 40px; height: 40px; }
663
- .chat-container { padding: 60px 10px 160px; }
664
- .user-message { font-size: 14.5px; max-width: 90%; }
665
- .bot-content { font-size: 14.5px; }
666
- .welcome-center h1 { font-size: 28px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
667
  }
668
 
669
  @media (max-width: 600px) {
670
- .chat-container { padding: 50px 8px 140px; }
671
- .input-container { padding: 6px 8px 6px 12px; border-radius: 24px; }
672
- .tool-btn { width: 34px; height: 34px; }
673
- .btn-send, .btn-stop { width: 36px; height: 36px; }
674
- .chat-input { font-size: 14px; }
675
- .user-message { max-width: 92%; font-size: 14px; }
676
- .bot-content { font-size: 14px; }
677
- .welcome-center h1 { font-size: 26px; }
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
678
  }
679
  </style>
680
  </head>
 
9
  <link href="https://fonts.googleapis.com/css2?family=Inter:opsz,wght@14..32,300;14..32,400;14..32,500;14..32,600&family=JetBrains+Mono:wght@400;500&display=swap" rel="stylesheet">
10
 
11
  <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/styles/github.min.css">
12
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/pdf.js/3.11.174/pdf.min.js">
13
+ </script>
14
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/mammoth/1.6.0/mammoth.browser.min.js">
15
+ </script>
16
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/highlight.js/11.9.0/highlight.min.js">
17
+ </script>
18
+ <script src="https://cdnjs.cloudflare.com/ajax/libs/marked/12.0.1/marked.min.js">
19
+ </script>
20
 
21
  <script>
22
  window.MathJax = {
23
  tex: {
24
+ inlineMath: [
25
+ ['$', '$'],
26
+ ['\\(', '\\)']
27
+ ],
28
+ displayMath: [
29
+ ['$$', '$$'],
30
+ ['\\[', '\\]']
31
+ ],
32
  processEscapes: true,
33
+ packages: {
34
+ '[+]': ['mhchem']
35
+ }
36
  },
37
+ loader: {
38
+ load: ['[tex]/mhchem']
39
+ }
40
  };
41
  </script>
42
+ <script id="MathJax-script" async src="https://cdn.jsdelivr.net/npm/mathjax@3/es5/tex-mml-chtml.js">
43
+ </script>
44
 
45
  <style>
46
  :root {
 
78
  outline: none !important;
79
  box-shadow: none !important;
80
  }
81
+
82
  *:focus-visible {
83
  outline: none !important;
84
  box-shadow: none !important;
 
121
  }
122
 
123
  @keyframes liquidMove {
124
+ 0%,
125
+ 100% {
126
+ transform: translate(0, 0) rotate(0deg);
127
+ }
128
+ 33% {
129
+ transform: translate(30px, -30px) rotate(120deg);
130
+ }
131
+ 66% {
132
+ transform: translate(-20px, 20px) rotate(240deg);
133
+ }
134
  }
135
 
136
+ button,
137
+ a,
138
+ [role="button"] {
139
  -webkit-tap-highlight-color: transparent;
140
  outline: none;
141
  }
 
148
  font-family: inherit;
149
  }
150
 
151
+ input,
152
+ textarea {
153
  font-family: inherit;
154
  outline: none;
155
  border: none;
156
  background: transparent;
157
  }
158
 
159
+ ::-webkit-scrollbar {
160
+ width: 5px;
161
+ height: 5px;
162
+ }
163
+ ::-webkit-scrollbar-track {
164
+ background: transparent;
165
+ }
166
+ ::-webkit-scrollbar-thumb {
167
+ background: rgba(114, 119, 117, 0.3);
168
+ border-radius: 10px;
169
+ }
170
+ ::-webkit-scrollbar-thumb:hover {
171
+ background: rgba(114, 119, 117, 0.6);
172
+ }
173
 
174
+ @keyframes fadeIn {
175
+ from {
176
+ opacity: 0;
177
+ transform: translateY(6px);
178
+ }
179
+ to {
180
+ opacity: 1;
181
+ transform: translateY(0);
182
+ }
183
+ }
184
+ @keyframes fadeInUp {
185
+ from {
186
+ opacity: 0;
187
+ transform: translateY(12px);
188
+ }
189
+ to {
190
+ opacity: 1;
191
+ transform: translateY(0);
192
+ }
193
+ }
194
+ @keyframes pulseOpacity {
195
+ 0% {
196
+ opacity: 0.4;
197
+ }
198
+ 100% {
199
+ opacity: 1;
200
+ }
201
+ }
202
+ @keyframes spin {
203
+ 100% {
204
+ transform: rotate(360deg);
205
+ }
206
+ }
207
+ @keyframes typingBounce {
208
+ 0%,
209
+ 60%,
210
+ 100% {
211
+ transform: translateY(0);
212
+ opacity: 0.4;
213
+ }
214
+ 30% {
215
+ transform: translateY(-4px);
216
+ opacity: 1;
217
+ }
218
+ }
219
  @keyframes recordPulse {
220
+ 0% {
221
+ transform: scale(1);
222
+ box-shadow: 0 0 0 0 rgba(179, 38, 30, 0.4);
223
+ }
224
+ 50% {
225
+ transform: scale(1.05);
226
+ box-shadow: 0 0 0 10px rgba(179, 38, 30, 0);
227
+ }
228
+ 100% {
229
+ transform: scale(1);
230
+ box-shadow: 0 0 0 0 rgba(179, 38, 30, 0);
231
+ }
232
  }
233
  @keyframes dropUpFade {
234
+ from {
235
+ opacity: 0;
236
+ transform: translateY(10px) scale(0.95);
237
+ }
238
+ to {
239
+ opacity: 1;
240
+ transform: translateY(0) scale(1);
241
+ }
242
  }
243
  @keyframes modalFadeIn {
244
+ from {
245
+ opacity: 0;
246
+ transform: scale(0.96);
247
+ }
248
+ to {
249
+ opacity: 1;
250
+ transform: scale(1);
251
+ }
252
  }
253
  @keyframes blinkCursor {
254
+ 0%,
255
+ 100% {
256
+ opacity: 1;
257
+ }
258
+ 50% {
259
+ opacity: 0;
260
+ }
261
  }
262
 
263
  .blinking-cursor {
 
272
  }
273
 
274
  .btn-menu {
275
+ position: absolute;
276
+ top: 16px;
277
+ left: 16px;
278
+ z-index: 50;
279
+ width: 44px;
280
+ height: 44px;
281
+ border-radius: 50%;
282
+ display: flex;
283
+ align-items: center;
284
+ justify-content: center;
285
  background: var(--glass-bg);
286
  backdrop-filter: blur(16px);
287
  -webkit-backdrop-filter: blur(16px);
288
  border: 1px solid var(--glass-border);
289
+ color: var(--text-secondary);
290
  transition: var(--transition-default);
291
  box-shadow: var(--glass-shadow);
292
  }
293
+ .btn-menu:hover {
294
+ background: rgba(255, 255, 255, 0.8);
295
+ color: var(--text-primary);
296
+ }
297
 
298
  .sidebar {
299
+ width: 280px;
300
  background: var(--bg-sidebar);
301
  backdrop-filter: blur(20px);
302
  -webkit-backdrop-filter: blur(20px);
303
  border-right: 1px solid var(--glass-border);
304
+ display: flex;
305
+ flex-direction: column;
306
+ transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1);
307
  z-index: 100;
308
+ height: 100%;
309
+ flex-shrink: 0;
310
+ box-shadow: 2px 0 12px rgba(0, 0, 0, 0.03);
311
+ }
312
+ .sidebar.collapsed {
313
+ transform: translateX(-100%);
314
+ position: absolute;
315
  }
 
316
 
317
+ .sidebar-header {
318
+ padding: 20px 20px 10px;
319
+ display: flex;
320
+ align-items: center;
321
+ justify-content: space-between;
322
+ }
323
+ .sidebar-logo {
324
+ font-weight: 600;
325
+ font-size: 16px;
326
+ letter-spacing: -0.3px;
327
+ color: var(--text-primary);
328
+ }
329
 
330
+ .btn-new-chat {
331
+ margin: 10px 16px;
332
+ display: flex;
333
+ align-items: center;
334
+ justify-content: center;
335
+ gap: 10px;
336
+ padding: 12px 14px;
337
+ border-radius: var(--radius-sm);
338
  background: var(--glass-bg);
339
  backdrop-filter: blur(12px);
340
  -webkit-backdrop-filter: blur(12px);
341
+ border: 1px solid var(--glass-border);
342
+ font-size: 14px;
343
+ font-weight: 500;
344
+ transition: var(--transition-default);
345
+ color: var(--text-primary);
346
  box-shadow: var(--glass-shadow);
347
  }
348
+ .btn-new-chat:hover {
349
+ background: rgba(255, 255, 255, 0.9);
350
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.08);
351
+ color: var(--brand-accent);
352
+ border-color: var(--border-focus);
353
+ }
354
+
355
+ .sidebar-history {
356
+ flex: 1;
357
+ overflow-y: auto;
358
+ padding: 10px 16px;
359
+ display: flex;
360
+ flex-direction: column;
361
+ gap: 4px;
362
+ }
363
+
364
+ .history-header {
365
+ display: flex;
366
+ justify-content: space-between;
367
+ align-items: center;
368
+ padding: 0 4px 8px;
369
+ margin-bottom: 8px;
370
+ border-bottom: 1px solid var(--border-light);
371
+ }
372
+ .history-title-text {
373
+ font-size: 11px;
374
+ font-weight: 600;
375
+ color: var(--text-tertiary);
376
+ text-transform: uppercase;
377
+ letter-spacing: 0.5px;
378
+ }
379
+ .btn-clear-all {
380
+ font-size: 11px;
381
+ font-weight: 500;
382
+ color: var(--text-tertiary);
383
+ cursor: pointer;
384
+ transition: var(--transition-default);
385
+ }
386
+ .btn-clear-all:hover {
387
+ color: var(--brand-danger);
388
+ }
389
+
390
+ .history-item {
391
+ padding: 10px 14px;
392
+ border-radius: var(--radius-sm);
393
+ font-size: 14px;
394
+ color: var(--text-secondary);
395
+ cursor: pointer;
396
+ display: flex;
397
+ justify-content: space-between;
398
+ align-items: center;
399
+ transition: var(--transition-default);
400
+ border: 1px solid transparent;
401
+ }
402
+ .history-item:hover {
403
+ background: rgba(255, 255, 255, 0.6);
404
+ color: var(--text-primary);
405
+ }
406
+ .history-item.active {
407
+ background: rgba(227, 236, 250, 0.8);
408
+ color: #001d35;
409
+ font-weight: 500;
410
+ border-color: rgba(219, 234, 254, 0.5);
411
+ }
412
+ .history-text {
413
+ white-space: nowrap;
414
+ overflow: hidden;
415
+ text-overflow: ellipsis;
416
+ flex: 1;
417
+ }
418
+
419
+ .btn-delete-chat {
420
+ background: none;
421
+ border: none;
422
+ color: var(--text-tertiary);
423
+ cursor: pointer;
424
+ padding: 4px;
425
+ display: none;
426
+ align-items: center;
427
+ justify-content: center;
428
+ border-radius: 6px;
429
+ }
430
+ .history-item:hover .btn-delete-chat {
431
+ display: flex;
432
+ }
433
+ .btn-delete-chat:hover {
434
+ color: var(--brand-danger);
435
+ background: #fce8e8;
436
+ }
437
+
438
+ .sidebar-footer {
439
+ padding: 16px;
440
+ border-top: 1px solid var(--glass-border);
441
+ display: flex;
442
+ align-items: center;
443
+ gap: 10px;
444
  background: var(--glass-bg);
445
  backdrop-filter: blur(12px);
446
  -webkit-backdrop-filter: blur(12px);
447
  flex-wrap: wrap;
448
  }
449
+ .user-avatar {
450
+ width: 38px;
451
+ height: 38px;
452
+ border-radius: 50%;
453
+ background: var(--brand-accent);
454
+ color: #fff;
455
+ display: flex;
456
+ align-items: center;
457
+ justify-content: center;
458
+ font-size: 15px;
459
+ font-weight: 600;
460
+ flex-shrink: 0;
461
+ }
462
+ .user-info-box {
463
+ flex: 1;
464
+ overflow: hidden;
465
+ display: flex;
466
+ flex-direction: column;
467
+ justify-content: center;
468
+ }
469
+ .user-name {
470
+ font-size: 14px;
471
+ font-weight: 600;
472
+ white-space: nowrap;
473
+ overflow: hidden;
474
+ text-overflow: ellipsis;
475
+ color: var(--text-primary);
476
+ line-height: 1.2;
477
+ }
478
+ .user-sub {
479
+ font-size: 11.5px;
480
+ font-weight: 500;
481
+ color: var(--text-secondary);
482
+ margin-top: 2px;
483
+ white-space: nowrap;
484
+ overflow: hidden;
485
+ text-overflow: ellipsis;
486
+ line-height: 1.2;
487
+ cursor: pointer;
488
+ }
489
+
490
  .btn-login-register {
491
  background: var(--brand-accent);
492
  color: #fff;
 
501
  margin-left: auto;
502
  box-shadow: 0 2px 8px rgba(11, 87, 208, 0.15);
503
  }
504
+ .btn-login-register:hover {
505
+ background: #0842a0;
506
+ transform: scale(1.02);
507
+ }
508
 
509
+ .btn-power {
510
+ width: 34px;
511
+ height: 34px;
512
+ border-radius: 50%;
513
+ display: flex;
514
+ align-items: center;
515
+ justify-content: center;
516
+ color: var(--text-secondary);
517
+ transition: var(--transition-default);
518
+ }
519
+ .btn-power:hover {
520
+ background: #fce8e8;
521
+ color: var(--brand-danger);
522
+ }
523
 
524
+ .main-area {
525
+ flex: 1;
526
+ display: flex;
527
+ flex-direction: column;
528
+ position: relative;
529
+ transition: 0.3s;
530
+ height: 100%;
531
+ overflow: hidden;
532
+ z-index: 1;
533
+ }
534
 
535
  .chat-container {
536
+ flex: 1;
537
+ overflow-x: hidden;
538
+ overflow-y: auto;
539
+ padding: 60px 20px 180px;
540
+ display: flex;
541
+ flex-direction: column;
542
+ align-items: center;
543
  scroll-behavior: smooth;
544
  }
545
 
546
  .welcome-center {
547
+ margin: auto;
548
+ text-align: center;
549
+ display: flex;
550
+ flex-direction: column;
551
+ align-items: center;
552
+ animation: fadeInUp 0.6s ease;
553
+ width: 100%;
554
+ justify-content: center;
555
+ flex: 1;
556
+ }
557
+ .welcome-center img {
558
+ width: 64px;
559
+ height: 64px;
560
+ border-radius: 18px;
561
+ margin-bottom: 24px;
562
+ box-shadow: 0 4px 15px rgba(0, 0, 0, 0.1);
563
+ object-fit: cover;
564
+ }
565
+ .welcome-center h1 {
566
+ font-size: 32px;
567
+ font-weight: 400;
568
+ color: #1f1f1f;
569
+ margin-bottom: 8px;
570
+ line-height: 1.3;
571
+ }
572
+ .welcome-center p {
573
+ font-size: 16px;
574
+ color: var(--text-secondary);
575
+ display: none;
576
  }
 
 
 
577
 
578
+ #chatMessages {
579
+ width: 100%;
580
+ display: flex;
581
+ flex-direction: column;
582
+ align-items: center;
583
+ }
584
 
585
  .message-wrapper {
586
+ width: 100%;
587
+ max-width: 850px;
588
+ margin-bottom: 32px;
589
+ display: flex;
590
+ flex-direction: column;
591
  animation: fadeInUp 0.3s ease;
592
  }
593
 
594
  .user-message {
595
+ align-self: flex-end;
596
+ max-width: 85%;
597
  background: var(--bg-user-msg);
598
  backdrop-filter: blur(12px);
599
  -webkit-backdrop-filter: blur(12px);
600
+ padding: 14px 20px;
601
+ border-radius: 24px 24px 6px 24px;
602
+ font-size: 15.5px;
603
+ line-height: 1.6;
604
+ color: var(--text-primary);
605
+ box-shadow: 0 1px 3px rgba(0, 0, 0, 0.02);
606
+ word-wrap: break-word;
607
+ overflow-wrap: break-word;
608
  border: 1px solid var(--glass-border);
609
  }
610
 
 
623
  }
624
 
625
  .bot-avatar {
626
+ width: 34px;
627
+ height: 34px;
628
+ border-radius: 50%;
629
+ flex-shrink: 0;
630
+ overflow: hidden;
631
+ border: 1px solid var(--border-light);
632
+ background: #fff;
633
+ box-shadow: 0 2px 8px rgba(0, 0, 0, 0.05);
634
+ margin-top: 2px;
635
+ display: flex;
636
+ align-items: center;
637
+ justify-content: center;
638
+ }
639
+ .bot-avatar img {
640
+ width: 100%;
641
+ height: 100%;
642
+ object-fit: cover;
643
  }
 
644
 
645
  .bot-content-wrapper {
646
  flex: 1 1 0%;
647
+ min-width: 0;
648
  max-width: calc(100% - 50px);
649
  width: 100%;
650
  overflow: hidden;
 
657
  word-wrap: break-word;
658
  overflow-wrap: break-word;
659
  word-break: normal;
660
+ white-space: pre-wrap;
661
  width: 100%;
662
  max-width: 100%;
663
  min-height: 20px;
664
  }
665
 
666
+ .bot-content * {
667
+ max-width: 100%;
668
+ }
669
+ .bot-content p {
670
+ margin-bottom: 16px;
671
+ white-space: pre-wrap;
672
+ }
673
+ .bot-content p:last-child {
674
+ margin-bottom: 0;
675
+ }
676
+ .bot-content strong {
677
+ font-weight: 600;
678
+ color: #000;
679
+ }
680
+ .bot-content code {
681
+ font-family: var(--font-code);
682
+ background: rgba(31, 31, 31, 0.05);
683
+ padding: 3px 6px;
684
+ border-radius: 6px;
685
+ font-size: 0.9em;
686
+ color: #0284c7;
687
+ white-space: pre-wrap;
688
+ word-break: break-word;
689
+ }
690
 
691
  .bot-content pre {
692
+ background: #0d1117;
693
+ padding: 40px 16px 16px;
694
+ border-radius: var(--radius-md);
695
+ overflow-x: auto;
696
+ margin: 16px 0;
697
+ box-shadow: 0 4px 16px rgba(0, 0, 0, 0.1);
698
+ position: relative;
699
+ white-space: pre;
700
+ word-break: normal;
701
  }
702
  .bot-content pre::before {
703
+ content: '';
704
+ position: absolute;
705
+ top: 14px;
706
+ left: 16px;
707
+ width: 12px;
708
+ height: 12px;
709
+ border-radius: 50%;
710
+ background: #ff5f56;
711
+ box-shadow: 20px 0 0 #ffbd2e, 40px 0 0 #27c93f;
712
+ }
713
+ .bot-content pre code {
714
+ background: none;
715
+ padding: 0;
716
+ color: #e2e8f0;
717
+ font-size: 13.5px;
718
+ text-shadow: none;
719
+ white-space: pre;
720
  }
 
721
 
722
  .bot-content table {
723
  display: block;
 
728
  white-space: nowrap;
729
  -webkit-overflow-scrolling: touch;
730
  }
731
+ .bot-content th,
732
+ .bot-content td {
733
  border: 1px solid var(--border-light);
734
  padding: 8px 14px;
735
  text-align: left;
736
+ background: rgba(255, 255, 255, 0.4);
737
  white-space: nowrap;
738
  }
739
  .bot-content th {
 
741
  font-weight: 600;
742
  }
743
 
744
+ .chat-attachment-container {
745
+ display: flex;
746
+ flex-wrap: wrap;
747
+ gap: 10px;
748
+ margin-bottom: 12px;
749
+ }
750
+ .chat-file-pill {
751
+ display: inline-flex;
752
+ align-items: center;
753
+ gap: 8px;
754
  background: var(--glass-bg);
755
  backdrop-filter: blur(8px);
756
  -webkit-backdrop-filter: blur(8px);
757
+ border: 1px solid var(--glass-border);
758
+ padding: 8px 14px;
759
+ border-radius: var(--radius-lg);
760
+ font-size: 13px;
761
+ font-weight: 500;
762
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.03);
763
+ }
764
+ .chat-img-preview {
765
+ max-width: 120px;
766
+ max-height: 120px;
767
+ border-radius: 12px;
768
+ border: 1px solid var(--border-light);
769
+ object-fit: cover;
770
+ box-shadow: 0 4px 12px rgba(0, 0, 0, 0.06);
771
  }
 
772
 
773
+ .qwen-think-box {
774
  background: var(--glass-bg);
775
  backdrop-filter: blur(10px);
776
  -webkit-backdrop-filter: blur(10px);
777
+ border: 1px solid var(--glass-border);
778
+ border-radius: 16px;
779
+ margin-bottom: 16px;
780
+ overflow: hidden;
781
+ transition: var(--transition-default);
782
+ }
783
+ .qwen-think-box summary {
784
+ padding: 12px 16px;
785
+ font-size: 13.5px;
786
+ font-weight: 500;
787
+ color: var(--text-secondary);
788
+ cursor: pointer;
789
+ user-select: none;
790
+ list-style: none;
791
+ display: flex;
792
+ align-items: center;
793
+ gap: 8px;
794
+ background: rgba(248, 250, 252, 0.4);
795
+ }
796
+ .qwen-think-box summary::-webkit-details-marker {
797
+ display: none;
798
+ }
799
+ .qwen-think-box summary svg.arrow {
800
+ width: 14px;
801
+ height: 14px;
802
+ transition: transform var(--transition-default);
803
+ }
804
+ .qwen-think-box[open] summary svg.arrow {
805
+ transform: rotate(90deg);
806
+ }
807
+ .qwen-think-content {
808
+ padding: 16px;
809
+ border-top: 1px solid var(--border-light);
810
+ font-size: 13.5px;
811
+ color: var(--text-secondary);
812
+ font-style: italic;
813
+ line-height: 1.6;
814
+ opacity: 0.8;
815
+ white-space: pre-wrap;
816
+ }
817
+
818
+ .action-status {
819
+ display: inline-flex;
820
+ align-items: center;
821
+ gap: 8px;
822
+ padding: 6px 14px;
823
  background: var(--glass-bg);
824
  backdrop-filter: blur(8px);
825
  -webkit-backdrop-filter: blur(8px);
826
+ border-radius: 16px;
827
+ font-size: 13px;
828
+ font-weight: 500;
829
+ color: var(--text-secondary);
830
+ margin-bottom: 16px;
831
+ border: 1px solid var(--glass-border);
832
+ cursor: default;
833
+ user-select: none;
834
+ }
835
+ .action-status.active {
836
+ background: rgba(227, 236, 250, 0.8);
837
+ border-color: rgba(168, 199, 250, 0.5);
838
+ color: var(--brand-accent);
839
+ }
840
+ .flicker-text {
841
+ animation: pulseOpacity 1.2s infinite alternate;
842
+ }
843
+ .spin-icon {
844
+ animation: spin 1s linear infinite;
845
+ }
846
+
847
+ .typing-indicator {
848
+ display: inline-flex;
849
+ gap: 4px;
850
+ padding: 8px 0;
851
+ align-items: center;
852
+ }
853
+ .typing-dot {
854
+ width: 7px;
855
+ height: 7px;
856
+ border-radius: 50%;
857
+ background: var(--text-tertiary);
858
+ animation: typingBounce 1.2s infinite;
859
+ }
860
+ .typing-dot:nth-child(2) {
861
+ animation-delay: 0.15s;
862
+ }
863
+ .typing-dot:nth-child(3) {
864
+ animation-delay: 0.3s;
865
+ }
866
+
867
+ .msg-actions {
868
+ display: flex;
869
+ gap: 8px;
870
+ margin-top: 14px;
871
+ opacity: 0;
872
+ transition: opacity var(--transition-default);
873
+ align-items: center;
874
+ flex-wrap: wrap;
875
+ }
876
+ .message-wrapper:hover .msg-actions {
877
+ opacity: 1;
878
+ }
879
+ @media (hover: none) {
880
+ .msg-actions {
881
+ opacity: 1;
882
+ }
883
+ }
884
+
885
+ .action-btn {
886
+ display: flex;
887
+ align-items: center;
888
+ gap: 6px;
889
+ font-size: 13px;
890
+ font-weight: 500;
891
+ color: var(--text-secondary);
892
+ padding: 8px 14px;
893
+ border-radius: 12px;
894
+ transition: var(--transition-default);
895
  background: var(--glass-bg);
896
  backdrop-filter: blur(4px);
897
  -webkit-backdrop-filter: blur(4px);
898
+ border: 1px solid var(--glass-border);
899
+ }
900
+ .action-btn:hover {
901
+ background: rgba(255, 255, 255, 0.9);
902
+ color: var(--text-primary);
903
+ box-shadow: 0 2px 6px rgba(0, 0, 0, 0.04);
904
+ }
905
+ .action-btn.listen-btn {
906
+ background: rgba(227, 236, 250, 0.8);
907
+ color: #0b57d0;
908
+ border-color: transparent;
909
+ }
910
+ .action-btn.listen-btn:hover {
911
+ background: rgba(211, 227, 253, 0.9);
912
  }
 
 
 
913
 
914
  .btn-scroll-bottom {
915
  position: absolute;
916
  bottom: 110px;
917
  left: 50%;
918
  transform: translateX(-50%) translateY(20px);
919
+ width: 40px;
920
+ height: 40px;
921
  border-radius: 50%;
922
  background: var(--glass-bg);
923
  backdrop-filter: blur(16px);
924
  -webkit-backdrop-filter: blur(16px);
925
  border: 1px solid var(--glass-border);
926
  box-shadow: var(--glass-shadow);
927
+ display: flex;
928
+ align-items: center;
929
+ justify-content: center;
930
  color: var(--text-secondary);
931
+ opacity: 0;
932
+ pointer-events: none;
933
  transition: all 0.3s ease;
934
  z-index: 45;
935
  }
936
  .btn-scroll-bottom.visible {
937
+ opacity: 1;
938
+ pointer-events: auto;
939
+ transform: translateX(-50%) translateY(0);
940
  }
941
  .btn-scroll-bottom:hover {
942
+ background: rgba(255, 255, 255, 0.9);
943
+ color: var(--brand-accent);
944
  }
945
 
946
  .input-dock {
947
+ position: absolute;
948
+ bottom: 0;
949
+ left: 0;
950
+ width: 100%;
951
+ padding: 10px 20px 24px;
952
+ padding-bottom: max(24px, env(safe-area-inset-bottom));
953
  background: linear-gradient(to top, rgba(17, 25, 40, 0.18) 0%, transparent 100%);
954
+ display: flex;
955
+ flex-direction: column;
956
+ align-items: center;
957
+ z-index: 50;
958
  }
959
 
960
+ .loc-toast {
961
+ display: none;
962
+ align-items: center;
963
+ gap: 6px;
964
+ font-size: 12.5px;
965
+ font-weight: 500;
966
+ color: var(--text-secondary);
967
+ margin-bottom: 12px;
968
  background: var(--glass-bg);
969
  backdrop-filter: blur(12px);
970
  -webkit-backdrop-filter: blur(12px);
971
+ padding: 6px 14px;
972
+ border-radius: 16px;
973
+ border: 1px solid var(--glass-border);
974
  box-shadow: var(--glass-shadow);
975
  }
976
 
977
  .input-container {
978
+ width: 100%;
979
+ max-width: 850px;
980
  background: rgba(255, 255, 255, 0.82);
981
  backdrop-filter: blur(24px);
982
  -webkit-backdrop-filter: blur(24px);
 
984
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.08), 0 0 0 1px rgba(168, 199, 250, 0.15);
985
  border-radius: 50px;
986
  padding: 8px 12px 8px 16px;
987
+ display: flex;
988
+ flex-direction: column;
989
  transition: var(--transition-default);
990
  }
991
  .input-container:focus-within {
 
994
  background: rgba(255, 255, 255, 0.92);
995
  }
996
 
997
+ .file-preview-bar {
998
+ display: none;
999
+ padding: 4px 0 12px;
1000
+ align-items: center;
1001
+ gap: 10px;
1002
+ margin-bottom: 4px;
1003
+ }
1004
+ .file-preview-bar.active {
1005
+ display: flex;
1006
+ }
1007
+ .file-preview-pill {
1008
+ display: flex;
1009
+ align-items: center;
1010
+ gap: 8px;
1011
  background: rgba(255, 255, 255, 0.95);
1012
  backdrop-filter: blur(8px);
1013
  -webkit-backdrop-filter: blur(8px);
1014
+ border: 1px solid var(--border-light);
1015
+ padding: 6px 12px;
1016
+ border-radius: 16px;
1017
+ font-size: 13.5px;
1018
+ font-weight: 500;
1019
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.03);
1020
+ }
1021
+ .file-preview-icon {
1022
+ width: 18px;
1023
+ height: 18px;
1024
+ object-fit: cover;
1025
+ border-radius: 4px;
1026
+ }
1027
+ .file-preview-name {
1028
+ max-width: 120px;
1029
+ white-space: nowrap;
1030
+ overflow: hidden;
1031
+ text-overflow: ellipsis;
1032
+ color: var(--text-primary);
1033
+ }
1034
+ .btn-remove-file {
1035
+ width: 20px;
1036
+ height: 20px;
1037
+ border-radius: 50%;
1038
+ background: #fce8e8;
1039
+ color: var(--brand-danger);
1040
+ display: flex;
1041
+ align-items: center;
1042
+ justify-content: center;
1043
+ transition: var(--transition-default);
1044
+ margin-left: 4px;
1045
+ }
1046
+ .btn-remove-file:hover {
1047
+ background: #fca5a5;
1048
+ color: #fff;
1049
  }
 
 
 
 
1050
 
1051
+ .input-row {
1052
+ display: flex;
1053
+ align-items: flex-end;
1054
+ gap: 10px;
1055
+ width: 100%;
1056
+ align-items: center;
1057
+ }
1058
 
1059
+ .tools-left {
1060
+ display: flex;
1061
+ gap: 4px;
1062
+ align-items: center;
1063
+ position: relative;
1064
+ }
1065
  .tool-btn {
1066
+ width: 44px;
1067
+ height: 44px;
1068
+ border-radius: 50%;
1069
+ display: flex;
1070
+ align-items: center;
1071
+ justify-content: center;
1072
+ color: var(--text-secondary);
1073
+ transition: all 0.2s ease;
1074
+ position: relative;
1075
+ flex-shrink: 0;
1076
+ }
1077
+ .tool-btn:hover {
1078
+ background: rgba(255, 255, 255, 0.7);
1079
+ color: var(--text-primary);
1080
+ transform: scale(1.05);
1081
+ }
1082
+
1083
+ .tool-btn.active-env {
1084
+ color: #fff;
1085
+ background: rgba(11, 87, 208, 0.7);
1086
+ }
1087
+ .tool-btn.active-think-low {
1088
+ color: #fff;
1089
+ background: rgba(179, 38, 30, 0.7);
1090
+ }
1091
+ .tool-btn.active-think-medium {
1092
+ color: #fff;
1093
+ background: rgba(227, 116, 0, 0.7);
1094
+ }
1095
+ .tool-btn.active-think-high {
1096
+ color: #fff;
1097
+ background: rgba(11, 87, 208, 0.7);
1098
+ }
1099
+ .tool-btn.active-search {
1100
+ color: #fff;
1101
+ background: rgba(20, 108, 46, 0.7);
1102
  }
 
1103
 
 
 
 
 
 
 
1104
  .btn-mic.recording {
1105
  color: var(--brand-danger);
1106
  background: rgba(252, 232, 232, 0.9);
 
1108
  }
1109
 
1110
  .chat-input {
1111
+ flex: 1;
1112
+ padding: 12px 4px;
1113
+ font-size: 15.5px;
1114
+ resize: none;
1115
+ max-height: 180px;
1116
+ min-height: 24px;
1117
+ color: var(--text-primary);
1118
+ line-height: 1.5;
1119
+ background: transparent;
1120
  caret-color: var(--brand-accent);
1121
  }
1122
+ .chat-input::placeholder {
1123
+ color: var(--text-tertiary);
1124
+ font-weight: 400;
1125
+ }
1126
 
1127
  .btn-send {
1128
+ width: 44px;
1129
+ height: 44px;
1130
+ border-radius: 50%;
1131
+ background: transparent;
1132
+ color: var(--text-primary);
1133
+ display: flex;
1134
+ align-items: center;
1135
+ justify-content: center;
1136
+ transition: all 0.2s ease;
1137
+ flex-shrink: 0;
1138
+ }
1139
+ .btn-send:hover:not(:disabled) {
1140
+ background: rgba(255, 255, 255, 0.8);
1141
+ transform: scale(1.08);
1142
+ }
1143
+ .btn-send:disabled {
1144
+ color: var(--text-tertiary);
1145
+ cursor: not-allowed;
1146
+ background: transparent;
1147
  }
 
 
1148
 
1149
  .btn-stop {
1150
+ width: 44px;
1151
+ height: 44px;
1152
+ border-radius: 50%;
1153
+ background: rgba(252, 232, 232, 0.9);
1154
+ color: var(--brand-danger);
1155
+ display: none;
1156
+ align-items: center;
1157
+ justify-content: center;
1158
+ transition: all 0.2s ease;
1159
+ flex-shrink: 0;
1160
+ }
1161
+ .btn-stop.active {
1162
+ display: flex;
1163
+ }
1164
+ .btn-stop:hover {
1165
+ background: #fca5a5;
1166
+ color: #fff;
1167
  }
 
 
1168
 
1169
+ .hidden-input {
1170
+ display: none;
1171
+ }
1172
  .dropdown-menu {
1173
+ position: absolute;
1174
+ bottom: calc(100% + 14px);
1175
+ left: 0;
1176
  background: var(--glass-bg);
1177
  backdrop-filter: blur(20px);
1178
  -webkit-backdrop-filter: blur(20px);
1179
+ border: 1px solid var(--glass-border);
1180
+ border-radius: 20px;
1181
+ padding: 8px;
1182
  box-shadow: var(--glass-shadow);
1183
+ display: none;
1184
+ flex-direction: column;
1185
+ min-width: 200px;
1186
+ z-index: 100;
1187
  transform-origin: bottom left;
1188
  }
1189
  .dropdown-menu.active {
 
1191
  animation: dropUpFade 0.2s cubic-bezier(0.4, 0, 0.2, 1);
1192
  }
1193
 
1194
+ .dropdown-header {
1195
+ padding: 8px 14px 12px;
1196
+ font-size: 11.5px;
1197
+ font-weight: 600;
1198
+ color: var(--text-tertiary);
1199
+ text-transform: uppercase;
1200
+ letter-spacing: 0.5px;
1201
+ border-bottom: 1px solid var(--border-light);
1202
+ margin-bottom: 4px;
1203
+ }
1204
+ .dropdown-item {
1205
+ padding: 12px 14px;
1206
+ border-radius: 12px;
1207
+ font-size: 14px;
1208
+ font-weight: 500;
1209
+ display: flex;
1210
+ align-items: center;
1211
+ justify-content: space-between;
1212
+ gap: 10px;
1213
+ cursor: pointer;
1214
+ transition: var(--transition-default);
1215
+ color: var(--text-secondary);
1216
+ }
1217
+ .dropdown-item:hover {
1218
+ background: rgba(255, 255, 255, 0.6);
1219
+ color: var(--text-primary);
1220
+ }
1221
+ .dropdown-item.selected {
1222
+ background: rgba(227, 236, 250, 0.8);
1223
+ color: var(--brand-accent);
1224
+ font-weight: 600;
1225
+ }
1226
+ .dropdown-item svg {
1227
+ color: inherit;
1228
+ }
1229
 
1230
+ .auth-overlay {
1231
+ position: fixed;
1232
+ inset: 0;
1233
+ background: rgba(15, 23, 42, 0.5);
1234
+ backdrop-filter: blur(8px);
1235
+ display: none;
1236
+ align-items: center;
1237
+ justify-content: center;
1238
+ z-index: 2000;
1239
+ }
1240
+ .auth-modal {
1241
  background: var(--glass-bg);
1242
  backdrop-filter: blur(24px);
1243
  -webkit-backdrop-filter: blur(24px);
1244
+ width: 90%;
1245
+ max-width: 380px;
1246
+ border-radius: var(--radius-lg);
1247
+ padding: 32px;
1248
+ box-shadow: 0 24px 48px rgba(0, 0, 0, 0.15);
1249
  position: relative;
1250
  border: 1px solid var(--glass-border);
1251
  animation: modalFadeIn 0.2s ease;
1252
  }
1253
+ .auth-close {
1254
+ position: absolute;
1255
+ top: 16px;
1256
+ right: 16px;
1257
+ color: var(--text-tertiary);
1258
+ width: 32px;
1259
+ height: 32px;
1260
+ display: flex;
1261
+ align-items: center;
1262
+ justify-content: center;
1263
+ border-radius: 50%;
1264
+ transition: var(--transition-default);
1265
+ }
1266
+ .auth-close:hover {
1267
+ background: var(--bg-sidebar);
1268
+ color: var(--text-primary);
1269
+ }
1270
+ .auth-title {
1271
+ font-size: 22px;
1272
+ font-weight: 600;
1273
+ margin-bottom: 24px;
1274
+ text-align: center;
1275
+ color: var(--text-primary);
1276
+ letter-spacing: -0.5px;
1277
+ }
1278
 
1279
+ .auth-tabs {
1280
+ display: flex;
1281
+ background: rgba(240, 244, 249, 0.6);
1282
+ border-radius: var(--radius-sm);
1283
+ padding: 4px;
1284
+ margin-bottom: 20px;
1285
+ }
1286
+ .auth-tab {
1287
+ flex: 1;
1288
+ text-align: center;
1289
+ padding: 10px;
1290
+ font-size: 13.5px;
1291
+ font-weight: 500;
1292
+ cursor: pointer;
1293
+ border-radius: 8px;
1294
+ color: var(--text-secondary);
1295
+ transition: var(--transition-default);
1296
+ }
1297
+ .auth-tab.active {
1298
+ background: rgba(255, 255, 255, 0.9);
1299
+ color: var(--text-primary);
1300
+ box-shadow: 0 2px 4px rgba(0, 0, 0, 0.05);
1301
+ }
1302
 
1303
+ .auth-input {
1304
+ width: 100%;
1305
+ padding: 14px 16px;
1306
+ border: 1px solid var(--border-light);
1307
+ border-radius: var(--radius-sm);
1308
+ font-size: 14.5px;
1309
+ margin-bottom: 12px;
1310
+ transition: var(--transition-default);
1311
+ background: rgba(248, 250, 252, 0.8);
1312
+ caret-color: var(--brand-accent);
1313
+ }
1314
+ .auth-input:focus {
1315
+ border-color: var(--brand-accent);
1316
+ background: rgba(255, 255, 255, 0.95);
1317
+ box-shadow: 0 0 0 4px rgba(59, 130, 246, 0.1);
1318
+ }
1319
+ .auth-btn {
1320
+ width: 100%;
1321
+ padding: 14px;
1322
+ background: var(--brand-color);
1323
+ color: #fff;
1324
+ font-size: 14.5px;
1325
+ font-weight: 500;
1326
+ border-radius: var(--radius-sm);
1327
+ transition: var(--transition-default);
1328
+ box-shadow: 0 4px 12px rgba(15, 23, 42, 0.15);
1329
+ }
1330
+ .auth-btn:hover {
1331
+ background: #1e293b;
1332
+ transform: translateY(-1px);
1333
+ }
1334
+ .auth-phase {
1335
+ display: none;
1336
+ }
1337
+ .auth-phase.active {
1338
+ display: block;
1339
+ }
1340
+ .auth-message {
1341
+ font-size: 13px;
1342
+ text-align: center;
1343
+ margin-top: 14px;
1344
+ min-height: 18px;
1345
+ font-weight: 500;
1346
+ }
1347
 
1348
+ .mobile-overlay {
1349
+ display: none;
1350
+ position: fixed;
1351
+ inset: 0;
1352
+ background: rgba(15, 23, 42, 0.3);
1353
+ backdrop-filter: blur(3px);
1354
+ z-index: 95;
1355
+ opacity: 0;
1356
+ transition: 0.3s;
1357
+ pointer-events: none;
1358
+ }
1359
+ .mobile-overlay.active {
1360
+ display: block;
1361
+ opacity: 1;
1362
+ pointer-events: all;
1363
+ }
1364
 
1365
  .custom-confirm-overlay {
1366
+ position: fixed;
1367
+ inset: 0;
1368
+ background: rgba(15, 23, 42, 0.4);
1369
+ backdrop-filter: blur(6px);
1370
+ display: none;
1371
+ align-items: center;
1372
+ justify-content: center;
1373
+ z-index: 2500;
1374
  }
1375
  .custom-confirm-box {
1376
+ background: var(--glass-bg);
1377
+ backdrop-filter: blur(24px);
1378
+ -webkit-backdrop-filter: blur(24px);
1379
+ border: 1px solid var(--glass-border);
1380
+ border-radius: 28px;
1381
+ padding: 28px;
1382
+ max-width: 340px;
1383
+ width: 90%;
1384
+ text-align: center;
1385
+ box-shadow: 0 24px 48px rgba(0, 0, 0, 0.18);
1386
  animation: modalFadeIn 0.2s ease;
1387
  }
1388
+ .custom-confirm-msg {
1389
+ font-size: 16px;
1390
+ font-weight: 500;
1391
+ margin-bottom: 24px;
1392
+ color: var(--text-primary);
1393
+ line-height: 1.5;
1394
+ }
1395
+ .custom-confirm-btns {
1396
+ display: flex;
1397
+ gap: 12px;
1398
+ justify-content: center;
1399
+ }
1400
+ .custom-confirm-btn {
1401
+ flex: 1;
1402
+ padding: 12px;
1403
+ border-radius: 16px;
1404
+ font-size: 14px;
1405
+ font-weight: 600;
1406
+ transition: var(--transition-default);
1407
+ }
1408
+ .custom-confirm-btn.cancel {
1409
+ background: rgba(240, 244, 249, 0.8);
1410
+ color: var(--text-secondary);
1411
+ }
1412
+ .custom-confirm-btn.confirm {
1413
+ background: var(--brand-danger);
1414
+ color: #fff;
1415
+ }
1416
+ .custom-confirm-btn.cancel:hover {
1417
+ background: rgba(220, 230, 240, 0.9);
1418
+ }
1419
+ .custom-confirm-btn.confirm:hover {
1420
+ background: #a01e18;
1421
+ }
1422
 
1423
  @media (max-width: 900px) {
1424
+ .sidebar {
1425
+ position: fixed;
1426
+ left: 0;
1427
+ top: 0;
1428
+ height: 100%;
1429
+ box-shadow: 4px 0 32px rgba(0, 0, 0, 0.1);
1430
+ }
1431
+ .sidebar.collapsed {
1432
+ transform: translateX(-100%);
1433
+ box-shadow: none;
1434
+ }
1435
+ .input-dock {
1436
+ padding: 10px 10px 20px;
1437
+ }
1438
+ .input-container {
1439
+ border-radius: 28px;
1440
+ padding: 8px 10px 8px 16px;
1441
+ }
1442
+ .tool-btn {
1443
+ width: 38px;
1444
+ height: 38px;
1445
+ }
1446
+ .btn-send,
1447
+ .btn-stop {
1448
+ width: 40px;
1449
+ height: 40px;
1450
+ }
1451
+ .chat-container {
1452
+ padding: 60px 10px 160px;
1453
+ }
1454
+ .user-message {
1455
+ font-size: 14.5px;
1456
+ max-width: 90%;
1457
+ }
1458
+ .bot-content {
1459
+ font-size: 14.5px;
1460
+ }
1461
+ .welcome-center h1 {
1462
+ font-size: 28px;
1463
+ }
1464
  }
1465
 
1466
  @media (max-width: 600px) {
1467
+ .chat-container {
1468
+ padding: 50px 8px 140px;
1469
+ }
1470
+ .input-container {
1471
+ padding: 6px 8px 6px 12px;
1472
+ border-radius: 24px;
1473
+ }
1474
+ .tool-btn {
1475
+ width: 34px;
1476
+ height: 34px;
1477
+ }
1478
+ .btn-send,
1479
+ .btn-stop {
1480
+ width: 36px;
1481
+ height: 36px;
1482
+ }
1483
+ .chat-input {
1484
+ font-size: 14px;
1485
+ }
1486
+ .user-message {
1487
+ max-width: 92%;
1488
+ font-size: 14px;
1489
+ }
1490
+ .bot-content {
1491
+ font-size: 14px;
1492
+ }
1493
+ .welcome-center h1 {
1494
+ font-size: 26px;
1495
+ }
1496
  }
1497
  </style>
1498
  </head>