agentgui 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1432 @@
1
+ * {
2
+ margin: 0;
3
+ padding: 0;
4
+ box-sizing: border-box;
5
+ }
6
+
7
+ :root {
8
+ /* Light mode colors (default) */
9
+ --color-primary: #4f46e5;
10
+ --color-primary-light: #6366f1;
11
+ --color-primary-lighter: #e0e7ff;
12
+ --color-success: #10b981;
13
+ --color-warning: #f59e0b;
14
+ --color-danger: #ef4444;
15
+ --color-info: #3b82f6;
16
+
17
+ /* Light mode: Background & Text */
18
+ --bg-primary: #ffffff;
19
+ --bg-secondary: #f9fafb;
20
+ --bg-tertiary: #f3f4f6;
21
+ --text-primary: #1d2129;
22
+ --text-secondary: #475569;
23
+ --text-tertiary: #64748b;
24
+ --border-color: #e5e7eb;
25
+
26
+ /* Shadows */
27
+ --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
28
+ --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
29
+ --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
30
+ --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
31
+
32
+ /* Transitions */
33
+ --transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
34
+ --transition-smooth: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
35
+ --transition-slow: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
36
+ }
37
+
38
+ /* Dark mode */
39
+ @media (prefers-color-scheme: dark) {
40
+ :root {
41
+ --bg-primary: #0f172a;
42
+ --bg-secondary: #1a202c;
43
+ --bg-tertiary: #2d3748;
44
+ --text-primary: #f8fafc;
45
+ --text-secondary: #cbd5e1;
46
+ --text-tertiary: #94a3b8;
47
+ --border-color: #334155;
48
+ }
49
+ }
50
+
51
+ [data-theme="dark"] {
52
+ --bg-primary: #0f172a;
53
+ --bg-secondary: #1a202c;
54
+ --bg-tertiary: #2d3748;
55
+ --text-primary: #f8fafc;
56
+ --text-secondary: #cbd5e1;
57
+ --text-tertiary: #94a3b8;
58
+ --border-color: #334155;
59
+ }
60
+
61
+ [data-theme="light"] {
62
+ --bg-primary: #ffffff;
63
+ --bg-secondary: #f9fafb;
64
+ --bg-tertiary: #f3f4f6;
65
+ --text-primary: #1d2129;
66
+ --text-secondary: #475569;
67
+ --text-tertiary: #64748b;
68
+ --border-color: #e5e7eb;
69
+ }
70
+
71
+ html, body {
72
+ height: 100%;
73
+ font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
74
+ color: var(--text-primary);
75
+ background: var(--bg-primary);
76
+ line-height: 1.6;
77
+ transition: var(--transition-smooth);
78
+ }
79
+
80
+ #app {
81
+ height: 100vh;
82
+ display: flex;
83
+ overflow: hidden;
84
+ background: var(--bg-primary);
85
+ }
86
+
87
+ /* Sidebar */
88
+ .sidebar {
89
+ width: 280px;
90
+ background: var(--bg-primary);
91
+ border-right: 1px solid var(--border-color);
92
+ display: flex;
93
+ flex-direction: column;
94
+ flex-shrink: 0;
95
+ overflow-y: auto;
96
+ transition: transform var(--transition-smooth), width var(--transition-smooth);
97
+ }
98
+
99
+ .sidebar-header {
100
+ padding: 1.5rem 1.25rem;
101
+ border-bottom: 1px solid var(--border-color);
102
+ display: flex;
103
+ align-items: center;
104
+ justify-content: space-between;
105
+ gap: 1rem;
106
+ }
107
+
108
+ .sidebar-brand h1 {
109
+ font-size: 1.25rem;
110
+ font-weight: 700;
111
+ color: var(--text-primary);
112
+ margin: 0;
113
+ }
114
+
115
+ .sidebar-toggle {
116
+ background: none;
117
+ border: none;
118
+ font-size: 1.5rem;
119
+ cursor: pointer;
120
+ color: var(--text-tertiary);
121
+ transition: var(--transition-fast);
122
+ display: none;
123
+ padding: 0;
124
+ width: 2rem;
125
+ height: 2rem;
126
+ align-items: center;
127
+ justify-content: center;
128
+ }
129
+
130
+ .sidebar-toggle:hover {
131
+ color: var(--text-primary);
132
+ }
133
+
134
+ .new-chat-btn {
135
+ margin: 1rem 1.25rem;
136
+ padding: 0.625rem 1rem;
137
+ background: var(--bg-tertiary);
138
+ border: 1px solid var(--border-color);
139
+ border-radius: 0.5rem;
140
+ font-size: 0.875rem;
141
+ font-weight: 500;
142
+ cursor: pointer;
143
+ color: var(--text-primary);
144
+ transition: var(--transition-smooth);
145
+ display: flex;
146
+ align-items: center;
147
+ gap: 0.5rem;
148
+ width: calc(100% - 2.5rem);
149
+ }
150
+
151
+ .new-chat-btn:hover {
152
+ background: var(--border-color);
153
+ }
154
+
155
+ .chat-history-section {
156
+ flex: 1;
157
+ overflow-y: auto;
158
+ padding: 0 1.25rem 1rem;
159
+ }
160
+
161
+ .history-title {
162
+ font-size: 0.75rem;
163
+ text-transform: uppercase;
164
+ letter-spacing: 0.5px;
165
+ color: var(--text-tertiary);
166
+ font-weight: 600;
167
+ margin: 1.5rem 0 0.75rem;
168
+ padding: 0 0.5rem;
169
+ }
170
+
171
+ .chat-list {
172
+ display: flex;
173
+ flex-direction: column;
174
+ gap: 0.5rem;
175
+ }
176
+
177
+ .chat-item {
178
+ padding: 0.75rem;
179
+ background: var(--bg-secondary);
180
+ border: 1px solid transparent;
181
+ border-radius: 0.5rem;
182
+ cursor: pointer;
183
+ transition: var(--transition-smooth);
184
+ text-align: left;
185
+ color: var(--text-secondary);
186
+ font-size: 0.875rem;
187
+ display: flex;
188
+ align-items: center;
189
+ justify-content: space-between;
190
+ gap: 0.5rem;
191
+ overflow: hidden;
192
+ }
193
+
194
+ .chat-item-title {
195
+ flex: 1;
196
+ white-space: nowrap;
197
+ overflow: hidden;
198
+ text-overflow: ellipsis;
199
+ }
200
+
201
+ .chat-item-delete {
202
+ background: none;
203
+ border: none;
204
+ color: var(--text-tertiary);
205
+ cursor: pointer;
206
+ padding: 0.25rem 0.5rem;
207
+ border-radius: 0.25rem;
208
+ transition: var(--transition-smooth);
209
+ font-size: 0.75rem;
210
+ flex-shrink: 0;
211
+ opacity: 0;
212
+ }
213
+
214
+ .chat-item:hover .chat-item-delete {
215
+ opacity: 1;
216
+ color: var(--color-danger);
217
+ }
218
+
219
+ .chat-item-delete:hover {
220
+ background: rgba(239, 68, 68, 0.1);
221
+ }
222
+
223
+ .chat-item:hover {
224
+ background: var(--bg-tertiary);
225
+ border-color: var(--border-color);
226
+ }
227
+
228
+ .chat-item.active {
229
+ background: var(--color-primary-lighter);
230
+ color: var(--color-primary);
231
+ border-color: var(--color-primary);
232
+ font-weight: 500;
233
+ }
234
+
235
+ .chat-item-folder {
236
+ display: flex;
237
+ align-items: center;
238
+ gap: 0.5rem;
239
+ font-size: 0.8rem;
240
+ color: var(--text-tertiary);
241
+ margin-top: 0.25rem;
242
+ padding: 0 0.5rem;
243
+ }
244
+
245
+ .sidebar-footer {
246
+ padding: 0 1.25rem 1.5rem;
247
+ border-top: 1px solid var(--border-color);
248
+ margin-top: 1rem;
249
+ }
250
+
251
+ .settings-btn {
252
+ width: 100%;
253
+ padding: 0.625rem 1rem;
254
+ background: var(--bg-tertiary);
255
+ border: 1px solid var(--border-color);
256
+ border-radius: 0.5rem;
257
+ font-size: 0.875rem;
258
+ font-weight: 500;
259
+ cursor: pointer;
260
+ color: var(--text-primary);
261
+ transition: var(--transition-smooth);
262
+ display: flex;
263
+ align-items: center;
264
+ justify-content: center;
265
+ gap: 0.5rem;
266
+ }
267
+
268
+ .settings-btn:hover {
269
+ background: var(--border-color);
270
+ }
271
+
272
+ /* Main Content */
273
+ .main-content {
274
+ flex: 1;
275
+ display: flex;
276
+ flex-direction: column;
277
+ overflow: hidden;
278
+ background: var(--bg-primary);
279
+ }
280
+
281
+ .chat-container {
282
+ flex: 1;
283
+ display: flex;
284
+ flex-direction: column;
285
+ overflow: hidden;
286
+ min-height: 0;
287
+ /* Ensure input is never hidden */
288
+ position: relative;
289
+ }
290
+
291
+ .chat-messages {
292
+ flex: 1;
293
+ overflow-y: auto;
294
+ padding: 2rem;
295
+ display: flex;
296
+ flex-direction: column;
297
+ gap: 1.5rem;
298
+ }
299
+
300
+ .chat-context-header {
301
+ display: flex;
302
+ align-items: center;
303
+ gap: 0.75rem;
304
+ padding: 1rem;
305
+ background: var(--bg-secondary);
306
+ border: 1px solid var(--border-color);
307
+ border-radius: 0.5rem;
308
+ font-size: 0.875rem;
309
+ color: var(--text-secondary);
310
+ margin-bottom: 0.5rem;
311
+ flex-shrink: 0;
312
+ }
313
+
314
+ .chat-context-header .folder-icon {
315
+ font-size: 1.1rem;
316
+ flex-shrink: 0;
317
+ }
318
+
319
+ .chat-context-header .folder-context {
320
+ word-break: break-all;
321
+ font-family: 'Monaco', 'Courier New', monospace;
322
+ }
323
+
324
+ @media (max-width: 768px) {
325
+ .chat-context-header {
326
+ padding: 0.75rem;
327
+ font-size: 0.8rem;
328
+ }
329
+ }
330
+
331
+ .welcome-section {
332
+ display: flex;
333
+ flex-direction: column;
334
+ align-items: center;
335
+ justify-content: center;
336
+ text-align: center;
337
+ min-height: auto;
338
+ gap: 2rem;
339
+ margin: auto 0;
340
+ }
341
+
342
+ .welcome-section h2 {
343
+ font-size: 1.5rem;
344
+ font-weight: 600;
345
+ color: var(--text-primary);
346
+ }
347
+
348
+ .agent-selection {
349
+ display: flex;
350
+ flex-direction: column;
351
+ gap: 1rem;
352
+ align-items: center;
353
+ }
354
+
355
+ .agent-cards {
356
+ display: flex;
357
+ gap: 1.5rem;
358
+ flex-wrap: wrap;
359
+ justify-content: center;
360
+ align-items: center;
361
+ }
362
+
363
+ .agent-card {
364
+ padding: 1rem 1.5rem;
365
+ background: var(--bg-secondary);
366
+ border: 1px solid var(--border-color);
367
+ border-radius: 0.5rem;
368
+ cursor: pointer;
369
+ transition: var(--transition-smooth);
370
+ text-align: center;
371
+ display: flex;
372
+ flex-direction: column;
373
+ align-items: center;
374
+ gap: 0.5rem;
375
+ font-size: 0.875rem;
376
+ color: var(--text-secondary);
377
+ white-space: nowrap;
378
+ min-width: 150px;
379
+ }
380
+
381
+ .agent-card:hover {
382
+ background: var(--bg-tertiary);
383
+ border-color: var(--color-primary);
384
+ color: var(--color-primary);
385
+ }
386
+
387
+ .agent-card.active {
388
+ background: var(--color-primary-lighter);
389
+ color: var(--color-primary);
390
+ border-color: var(--color-primary);
391
+ font-weight: 500;
392
+ }
393
+
394
+ .agent-card-icon {
395
+ font-size: 1.5rem;
396
+ }
397
+
398
+ .agent-card-name {
399
+ display: block;
400
+ }
401
+
402
+ .agent-separator {
403
+ color: var(--border-color);
404
+ }
405
+
406
+ /* Chat Input */
407
+ .chat-input-section {
408
+ padding: 1.5rem 2rem;
409
+ background: var(--bg-primary);
410
+ border-top: 1px solid var(--border-color);
411
+ flex-shrink: 0;
412
+ min-height: 60px; /* Ensure input area never becomes too small */
413
+ }
414
+
415
+ .input-wrapper {
416
+ display: flex;
417
+ gap: 0.75rem;
418
+ align-items: flex-end;
419
+ }
420
+
421
+ .chat-input {
422
+ flex: 1;
423
+ padding: 0.75rem 1rem;
424
+ border: 1px solid var(--border-color);
425
+ border-radius: 0.75rem;
426
+ font-family: inherit;
427
+ font-size: 1rem;
428
+ resize: none;
429
+ background: var(--bg-primary);
430
+ color: var(--text-primary);
431
+ transition: var(--transition-smooth);
432
+ min-height: 44px;
433
+ max-height: 200px;
434
+ font-weight: 400;
435
+ }
436
+
437
+ .chat-input:focus {
438
+ outline: none;
439
+ border-color: var(--color-primary);
440
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
441
+ }
442
+
443
+ .input-actions {
444
+ display: flex;
445
+ gap: 0.5rem;
446
+ align-items: flex-end;
447
+ }
448
+
449
+ .action-btn {
450
+ padding: 0.625rem;
451
+ background: var(--bg-secondary);
452
+ border: 1px solid var(--border-color);
453
+ border-radius: 0.5rem;
454
+ cursor: pointer;
455
+ color: var(--text-tertiary);
456
+ transition: var(--transition-smooth);
457
+ display: flex;
458
+ align-items: center;
459
+ justify-content: center;
460
+ min-width: 44px;
461
+ height: 44px;
462
+ }
463
+
464
+ .action-btn:hover {
465
+ background: var(--bg-tertiary);
466
+ border-color: var(--color-primary);
467
+ color: var(--color-primary);
468
+ }
469
+
470
+ .action-btn.send-btn {
471
+ background: var(--color-primary);
472
+ color: white;
473
+ border-color: var(--color-primary);
474
+ }
475
+
476
+ .action-btn.send-btn:hover {
477
+ background: var(--color-primary-light);
478
+ }
479
+
480
+ .action-btn.send-btn:disabled {
481
+ background: var(--bg-tertiary);
482
+ color: var(--text-tertiary);
483
+ border-color: var(--border-color);
484
+ cursor: not-allowed;
485
+ }
486
+
487
+ /* Chat Footer */
488
+ .chat-footer {
489
+ padding: 1rem 2rem;
490
+ background: var(--bg-secondary);
491
+ border-top: 1px solid var(--border-color);
492
+ flex-shrink: 0;
493
+ font-size: 0.8rem;
494
+ }
495
+
496
+ .footer-content {
497
+ display: flex;
498
+ align-items: center;
499
+ justify-content: center;
500
+ gap: 1.5rem;
501
+ flex-wrap: wrap;
502
+ }
503
+
504
+ .footer-content a {
505
+ color: var(--color-primary);
506
+ text-decoration: none;
507
+ transition: var(--transition-fast);
508
+ }
509
+
510
+ .footer-content a:hover {
511
+ text-decoration: underline;
512
+ }
513
+
514
+ /* Settings Panel */
515
+ .settings-panel {
516
+ position: fixed;
517
+ inset: 0;
518
+ background: rgba(0, 0, 0, 0.5);
519
+ backdrop-filter: blur(4px);
520
+ z-index: 500;
521
+ display: flex;
522
+ align-items: center;
523
+ justify-content: center;
524
+ padding: 1rem;
525
+ }
526
+
527
+ .settings-content {
528
+ background: var(--bg-primary);
529
+ border-radius: 0.75rem;
530
+ box-shadow: var(--shadow-xl);
531
+ max-width: 600px;
532
+ width: 100%;
533
+ max-height: 90vh;
534
+ overflow-y: auto;
535
+ animation: slideUp 0.2s ease;
536
+ }
537
+
538
+ .settings-header {
539
+ padding: 1.5rem;
540
+ border-bottom: 1px solid var(--border-color);
541
+ display: flex;
542
+ justify-content: space-between;
543
+ align-items: center;
544
+ }
545
+
546
+ .settings-header h2 {
547
+ margin: 0;
548
+ color: var(--text-primary);
549
+ font-size: 1.25rem;
550
+ }
551
+
552
+ .close-btn {
553
+ background: none;
554
+ border: none;
555
+ font-size: 2rem;
556
+ cursor: pointer;
557
+ color: var(--text-tertiary);
558
+ transition: var(--transition-fast);
559
+ padding: 0;
560
+ width: 2rem;
561
+ height: 2rem;
562
+ display: flex;
563
+ align-items: center;
564
+ justify-content: center;
565
+ }
566
+
567
+ .close-btn:hover {
568
+ color: var(--text-primary);
569
+ }
570
+
571
+ .setting-group {
572
+ padding: 1.5rem;
573
+ border-bottom: 1px solid var(--border-color);
574
+ }
575
+
576
+ .setting-group:last-child {
577
+ border-bottom: none;
578
+ }
579
+
580
+ .setting-group label {
581
+ display: block;
582
+ margin-bottom: 0.5rem;
583
+ font-weight: 500;
584
+ color: var(--text-primary);
585
+ font-size: 0.875rem;
586
+ }
587
+
588
+ .setting-group input[type="checkbox"] {
589
+ margin-right: 0.5rem;
590
+ cursor: pointer;
591
+ }
592
+
593
+ .setting-group input[type="checkbox"] ~ * {
594
+ cursor: pointer;
595
+ }
596
+
597
+ .input {
598
+ width: 100%;
599
+ padding: 0.75rem;
600
+ border: 1px solid var(--border-color);
601
+ border-radius: 0.5rem;
602
+ font-size: 0.875rem;
603
+ font-family: inherit;
604
+ transition: var(--transition-smooth);
605
+ background: var(--bg-primary);
606
+ color: var(--text-primary);
607
+ margin-top: 0.5rem;
608
+ }
609
+
610
+ .input:focus {
611
+ outline: none;
612
+ border-color: var(--color-primary);
613
+ box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
614
+ }
615
+
616
+ /* Chat Messages */
617
+ .message {
618
+ display: flex;
619
+ flex-wrap: wrap;
620
+ gap: 1rem;
621
+ animation: slideUp 0.2s ease;
622
+ }
623
+
624
+ .message-bubble {
625
+ flex: 0 1 100%;
626
+ max-width: 70%;
627
+ padding: 0.75rem 1rem;
628
+ border-radius: 0.5rem;
629
+ word-wrap: break-word;
630
+ }
631
+
632
+ .message.user .message-bubble {
633
+ background: var(--color-primary);
634
+ color: white;
635
+ margin-left: auto;
636
+ }
637
+
638
+ .message.assistant .message-bubble {
639
+ background: var(--bg-secondary);
640
+ color: var(--text-primary);
641
+ border: 1px solid var(--border-color);
642
+ }
643
+
644
+ .message.system .message-bubble {
645
+ background: var(--bg-tertiary);
646
+ color: var(--text-tertiary);
647
+ font-size: 0.875rem;
648
+ align-self: center;
649
+ }
650
+
651
+ /* Streaming blocks */
652
+ .stream-container {
653
+ flex: 0 1 100%;
654
+ max-width: 70%;
655
+ display: flex;
656
+ flex-direction: column;
657
+ gap: 0.5rem;
658
+ }
659
+
660
+ .stream-text-block {
661
+ padding: 0.75rem 1rem;
662
+ background: var(--bg-secondary);
663
+ border: 1px solid var(--border-color);
664
+ border-radius: 0.5rem;
665
+ color: var(--text-primary);
666
+ word-wrap: break-word;
667
+ white-space: pre-wrap;
668
+ }
669
+
670
+ .stream-container:not(.done) .stream-text-block:last-child::after {
671
+ content: '\2588';
672
+ animation: blink 0.8s step-end infinite;
673
+ color: var(--color-primary);
674
+ }
675
+
676
+ @keyframes blink {
677
+ 50% { opacity: 0; }
678
+ }
679
+
680
+ .stream-error {
681
+ padding: 0.5rem 0.75rem;
682
+ background: rgba(239, 68, 68, 0.1);
683
+ border: 1px solid var(--color-danger);
684
+ border-radius: 0.5rem;
685
+ color: var(--color-danger);
686
+ font-size: 0.875rem;
687
+ }
688
+
689
+ .thought-block {
690
+ border: 1px solid var(--border-color);
691
+ border-radius: 0.5rem;
692
+ overflow: hidden;
693
+ }
694
+
695
+ .thought-header {
696
+ padding: 0.5rem 0.75rem;
697
+ background: var(--bg-tertiary);
698
+ font-size: 0.8rem;
699
+ font-style: italic;
700
+ color: var(--text-tertiary);
701
+ cursor: pointer;
702
+ user-select: none;
703
+ }
704
+
705
+ .thought-content {
706
+ padding: 0.5rem 0.75rem;
707
+ font-size: 0.8rem;
708
+ color: var(--text-tertiary);
709
+ white-space: pre-wrap;
710
+ max-height: 200px;
711
+ overflow-y: auto;
712
+ }
713
+
714
+ .thought-block.collapsed .thought-content {
715
+ display: none;
716
+ }
717
+
718
+ .tool-block {
719
+ border: 1px solid var(--border-color);
720
+ border-radius: 0.5rem;
721
+ overflow: hidden;
722
+ font-size: 0.875rem;
723
+ }
724
+
725
+ .tool-header {
726
+ padding: 0.5rem 0.75rem;
727
+ background: var(--bg-tertiary);
728
+ display: flex;
729
+ align-items: center;
730
+ gap: 0.5rem;
731
+ cursor: pointer;
732
+ user-select: none;
733
+ }
734
+
735
+ .tool-icon {
736
+ width: 1.5rem;
737
+ height: 1.5rem;
738
+ display: flex;
739
+ align-items: center;
740
+ justify-content: center;
741
+ background: var(--bg-secondary);
742
+ border: 1px solid var(--border-color);
743
+ border-radius: 0.25rem;
744
+ font-family: monospace;
745
+ font-size: 0.75rem;
746
+ font-weight: 700;
747
+ flex-shrink: 0;
748
+ }
749
+
750
+ .tool-title {
751
+ flex: 1;
752
+ font-weight: 500;
753
+ color: var(--text-primary);
754
+ overflow: hidden;
755
+ text-overflow: ellipsis;
756
+ white-space: nowrap;
757
+ }
758
+
759
+ .tool-status {
760
+ font-size: 0.75rem;
761
+ padding: 0.125rem 0.5rem;
762
+ border-radius: 1rem;
763
+ font-weight: 500;
764
+ }
765
+
766
+ .tool-block.status-running .tool-status {
767
+ background: rgba(59, 130, 246, 0.15);
768
+ color: var(--color-info);
769
+ }
770
+
771
+ .tool-block.status-completed .tool-status {
772
+ background: rgba(16, 185, 129, 0.15);
773
+ color: var(--color-success);
774
+ }
775
+
776
+ .tool-block.status-error .tool-status {
777
+ background: rgba(239, 68, 68, 0.15);
778
+ color: var(--color-danger);
779
+ }
780
+
781
+ .tool-body {
782
+ padding: 0.5rem 0.75rem;
783
+ font-family: 'Monaco', 'Courier New', monospace;
784
+ font-size: 0.8rem;
785
+ color: var(--text-secondary);
786
+ white-space: pre-wrap;
787
+ max-height: 300px;
788
+ overflow-y: auto;
789
+ background: var(--bg-secondary);
790
+ border-top: 1px solid var(--border-color);
791
+ }
792
+
793
+ .tool-block.collapsed .tool-body {
794
+ display: none;
795
+ }
796
+
797
+ .plan-block {
798
+ border: 1px solid var(--border-color);
799
+ border-radius: 0.5rem;
800
+ overflow: hidden;
801
+ }
802
+
803
+ .plan-header {
804
+ padding: 0.5rem 0.75rem;
805
+ background: var(--bg-tertiary);
806
+ font-weight: 500;
807
+ font-size: 0.875rem;
808
+ color: var(--text-primary);
809
+ }
810
+
811
+ .plan-item {
812
+ padding: 0.375rem 0.75rem;
813
+ font-size: 0.8rem;
814
+ color: var(--text-secondary);
815
+ border-top: 1px solid var(--border-color);
816
+ }
817
+
818
+ .html-block {
819
+ flex: 0 1 100%;
820
+ border: 1px solid var(--border-color);
821
+ border-radius: 0.5rem;
822
+ overflow: hidden;
823
+ background: var(--bg-secondary);
824
+ max-width: 70%;
825
+ }
826
+
827
+ .html-header {
828
+ padding: 0.5rem 0.75rem;
829
+ background: var(--bg-tertiary);
830
+ font-weight: 500;
831
+ font-size: 0.875rem;
832
+ color: var(--text-primary);
833
+ border-bottom: 1px solid var(--border-color);
834
+ }
835
+
836
+ .html-content {
837
+ padding: 0.75rem;
838
+ font-size: 0.9rem;
839
+ color: var(--text-primary);
840
+ overflow-x: auto;
841
+ }
842
+
843
+ .html-content > * {
844
+ margin: 0.5rem 0;
845
+ }
846
+
847
+ .html-content > *:first-child {
848
+ margin-top: 0;
849
+ }
850
+
851
+ .html-content > *:last-child {
852
+ margin-bottom: 0;
853
+ }
854
+
855
+ .image-block {
856
+ flex: 0 1 100%;
857
+ border: 1px solid var(--border-color);
858
+ border-radius: 0.5rem;
859
+ overflow: hidden;
860
+ background: var(--bg-secondary);
861
+ max-width: 70%;
862
+ }
863
+
864
+ .image-header {
865
+ padding: 0.5rem 0.75rem;
866
+ background: var(--bg-tertiary);
867
+ font-weight: 500;
868
+ font-size: 0.875rem;
869
+ color: var(--text-primary);
870
+ border-bottom: 1px solid var(--border-color);
871
+ }
872
+
873
+ .image-content {
874
+ display: block;
875
+ padding: 0.5rem;
876
+ max-width: 100%;
877
+ height: auto;
878
+ }
879
+
880
+ /* Connection Status Indicator */
881
+ .connection-status {
882
+ display: flex;
883
+ align-items: center;
884
+ gap: 0.5rem;
885
+ padding: 0.5rem 1rem;
886
+ font-size: 0.875rem;
887
+ color: var(--text-secondary);
888
+ border-bottom: 1px solid var(--border-color);
889
+ background: var(--bg-secondary);
890
+ transition: var(--transition-smooth);
891
+ }
892
+
893
+ .connection-status.connected .status-dot {
894
+ background: var(--color-success);
895
+ }
896
+
897
+ .connection-status.reconnecting {
898
+ color: var(--color-warning);
899
+ }
900
+
901
+ .connection-status.reconnecting .status-dot {
902
+ background: var(--color-warning);
903
+ animation: pulse 1.5s ease-in-out infinite;
904
+ }
905
+
906
+ .connection-status.disconnected {
907
+ color: var(--color-danger);
908
+ }
909
+
910
+ .connection-status.disconnected .status-dot {
911
+ background: var(--color-danger);
912
+ }
913
+
914
+ .status-dot {
915
+ width: 8px;
916
+ height: 8px;
917
+ border-radius: 50%;
918
+ background: var(--color-success);
919
+ transition: var(--transition-smooth);
920
+ }
921
+
922
+ .status-text {
923
+ font-size: 0.875rem;
924
+ font-weight: 500;
925
+ }
926
+
927
+ @keyframes pulse {
928
+ 0%, 100% { opacity: 1; }
929
+ 50% { opacity: 0.5; }
930
+ }
931
+
932
+ @media (max-width: 768px) {
933
+ .stream-container { max-width: 90%; }
934
+ }
935
+
936
+ @media (max-width: 480px) {
937
+ .stream-container { max-width: 95%; }
938
+ }
939
+
940
+ /* Modal */
941
+ .modal {
942
+ display: none;
943
+ position: fixed;
944
+ inset: 0;
945
+ background: rgba(0, 0, 0, 0.5);
946
+ backdrop-filter: blur(4px);
947
+ z-index: 1000;
948
+ align-items: center;
949
+ justify-content: center;
950
+ padding: 1rem;
951
+ animation: fadeIn 0.2s ease-out;
952
+ }
953
+
954
+ @keyframes fadeIn {
955
+ from {
956
+ opacity: 0;
957
+ }
958
+ to {
959
+ opacity: 1;
960
+ }
961
+ }
962
+
963
+ @keyframes slideUp {
964
+ from {
965
+ transform: translateY(10px);
966
+ opacity: 0;
967
+ }
968
+ to {
969
+ transform: translateY(0);
970
+ opacity: 1;
971
+ }
972
+ }
973
+
974
+ .modal.active {
975
+ display: flex;
976
+ }
977
+
978
+ .modal-content {
979
+ background: var(--bg-primary);
980
+ border-radius: 0.75rem;
981
+ box-shadow: var(--shadow-xl);
982
+ max-width: 90vw;
983
+ max-height: 90vh;
984
+ display: flex;
985
+ flex-direction: column;
986
+ overflow: hidden;
987
+ animation: slideUp 0.2s ease;
988
+ transition: var(--transition-smooth);
989
+ }
990
+
991
+ .modal-header {
992
+ padding: 1.5rem;
993
+ border-bottom: 1px solid var(--border-color);
994
+ display: flex;
995
+ justify-content: space-between;
996
+ align-items: center;
997
+ }
998
+
999
+ .modal-header h3 {
1000
+ margin: 0;
1001
+ color: var(--text-primary);
1002
+ }
1003
+
1004
+ .modal-body {
1005
+ padding: 1.5rem;
1006
+ overflow-y: auto;
1007
+ flex: 1;
1008
+ display: flex;
1009
+ align-items: center;
1010
+ justify-content: center;
1011
+ }
1012
+
1013
+ .modal-footer {
1014
+ padding: 1rem 1.5rem;
1015
+ border-top: 1px solid var(--border-color);
1016
+ display: flex;
1017
+ gap: 0.75rem;
1018
+ justify-content: flex-end;
1019
+ }
1020
+
1021
+ .chat-option-btn {
1022
+ display: flex;
1023
+ align-items: flex-start;
1024
+ gap: 1rem;
1025
+ padding: 1rem 1.25rem;
1026
+ background: var(--bg-secondary);
1027
+ border: 1px solid var(--border-color);
1028
+ border-radius: 0.5rem;
1029
+ cursor: pointer;
1030
+ transition: var(--transition-smooth);
1031
+ text-align: left;
1032
+ width: 100%;
1033
+ }
1034
+
1035
+ .chat-option-btn:hover {
1036
+ background: var(--bg-tertiary);
1037
+ border-color: var(--color-primary);
1038
+ }
1039
+
1040
+ .chat-option-btn:active {
1041
+ transform: scale(0.98);
1042
+ }
1043
+
1044
+ .chat-option-icon {
1045
+ font-size: 1.5rem;
1046
+ flex-shrink: 0;
1047
+ display: flex;
1048
+ align-items: center;
1049
+ justify-content: center;
1050
+ width: 2.5rem;
1051
+ height: 2.5rem;
1052
+ }
1053
+
1054
+ .chat-option-content {
1055
+ flex: 1;
1056
+ display: flex;
1057
+ flex-direction: column;
1058
+ gap: 0.25rem;
1059
+ }
1060
+
1061
+ .chat-option-title {
1062
+ font-weight: 500;
1063
+ color: var(--text-primary);
1064
+ font-size: 0.95rem;
1065
+ }
1066
+
1067
+ .chat-option-desc {
1068
+ font-size: 0.8rem;
1069
+ color: var(--text-tertiary);
1070
+ }
1071
+
1072
+ .btn {
1073
+ padding: 0.625rem 1rem;
1074
+ border: none;
1075
+ border-radius: 0.5rem;
1076
+ font-size: 0.875rem;
1077
+ font-weight: 500;
1078
+ cursor: pointer;
1079
+ transition: var(--transition-smooth);
1080
+ display: inline-flex;
1081
+ align-items: center;
1082
+ gap: 0.5rem;
1083
+ white-space: nowrap;
1084
+ }
1085
+
1086
+ .btn-primary {
1087
+ background: var(--color-primary);
1088
+ color: white;
1089
+ }
1090
+
1091
+ .btn-primary:hover {
1092
+ background: var(--color-primary-light);
1093
+ transform: translateY(-1px);
1094
+ }
1095
+
1096
+ .btn-success {
1097
+ background: var(--color-success);
1098
+ color: white;
1099
+ }
1100
+
1101
+ .btn-success:hover {
1102
+ background: #059669;
1103
+ transform: translateY(-1px);
1104
+ }
1105
+
1106
+ .btn-secondary {
1107
+ background: var(--bg-tertiary);
1108
+ color: var(--text-primary);
1109
+ border: 1px solid var(--border-color);
1110
+ }
1111
+
1112
+ .btn-secondary:hover {
1113
+ background: var(--border-color);
1114
+ }
1115
+
1116
+ .btn-danger {
1117
+ background: var(--color-danger);
1118
+ color: white;
1119
+ }
1120
+
1121
+ .btn-danger:hover {
1122
+ background: #dc2626;
1123
+ transform: translateY(-1px);
1124
+ }
1125
+
1126
+ .btn-close {
1127
+ background: none;
1128
+ border: none;
1129
+ font-size: 2rem;
1130
+ cursor: pointer;
1131
+ color: var(--text-tertiary);
1132
+ padding: 0;
1133
+ width: 2rem;
1134
+ height: 2rem;
1135
+ display: flex;
1136
+ align-items: center;
1137
+ justify-content: center;
1138
+ transition: var(--transition-fast);
1139
+ }
1140
+
1141
+ .btn-close:hover {
1142
+ color: var(--text-primary);
1143
+ }
1144
+
1145
+ /* Loading overlay */
1146
+ .loading-overlay {
1147
+ display: none;
1148
+ position: fixed;
1149
+ inset: 0;
1150
+ background: rgba(0, 0, 0, 0.5);
1151
+ z-index: 999;
1152
+ align-items: center;
1153
+ justify-content: center;
1154
+ }
1155
+
1156
+ .loading-overlay.active {
1157
+ display: flex;
1158
+ }
1159
+
1160
+ .spinner {
1161
+ width: 48px;
1162
+ height: 48px;
1163
+ border: 4px solid rgba(255, 255, 255, 0.3);
1164
+ border-top-color: white;
1165
+ border-radius: 50%;
1166
+ animation: spin 0.8s linear infinite;
1167
+ }
1168
+
1169
+ @keyframes spin {
1170
+ to { transform: rotate(360deg); }
1171
+ }
1172
+
1173
+ /* Scrollbar styling */
1174
+ ::-webkit-scrollbar {
1175
+ width: 8px;
1176
+ height: 8px;
1177
+ }
1178
+
1179
+ ::-webkit-scrollbar-track {
1180
+ background: transparent;
1181
+ }
1182
+
1183
+ ::-webkit-scrollbar-thumb {
1184
+ background: var(--border-color);
1185
+ border-radius: 4px;
1186
+ }
1187
+
1188
+ ::-webkit-scrollbar-thumb:hover {
1189
+ background: var(--text-tertiary);
1190
+ }
1191
+
1192
+ /* Responsive design */
1193
+ @media (max-width: 768px) {
1194
+ .sidebar {
1195
+ position: absolute;
1196
+ left: 0;
1197
+ top: 0;
1198
+ bottom: 0;
1199
+ z-index: 400;
1200
+ width: 280px;
1201
+ transform: translateX(-100%);
1202
+ box-shadow: var(--shadow-lg);
1203
+ }
1204
+
1205
+ .sidebar.open {
1206
+ transform: translateX(0);
1207
+ }
1208
+
1209
+ .sidebar-toggle {
1210
+ display: flex;
1211
+ }
1212
+
1213
+ .main-content {
1214
+ width: 100%;
1215
+ }
1216
+
1217
+ .chat-messages {
1218
+ padding: 1.5rem;
1219
+ }
1220
+
1221
+ .chat-input-section {
1222
+ padding: 1rem 1.5rem;
1223
+ }
1224
+
1225
+ .chat-footer {
1226
+ padding: 0.75rem 1.5rem;
1227
+ font-size: 0.75rem;
1228
+ }
1229
+
1230
+ .footer-content {
1231
+ gap: 1rem;
1232
+ }
1233
+
1234
+ .agent-cards {
1235
+ gap: 1rem;
1236
+ }
1237
+
1238
+ .agent-card {
1239
+ min-width: 120px;
1240
+ padding: 0.75rem 1rem;
1241
+ }
1242
+
1243
+ .agent-card-icon {
1244
+ font-size: 1.25rem;
1245
+ }
1246
+
1247
+ .agent-card-name {
1248
+ font-size: 0.75rem;
1249
+ }
1250
+
1251
+ .welcome-section h2 {
1252
+ font-size: 1.25rem;
1253
+ }
1254
+
1255
+ .message-bubble {
1256
+ max-width: 90%;
1257
+ }
1258
+
1259
+ .settings-content {
1260
+ max-width: 95vw;
1261
+ }
1262
+ }
1263
+
1264
+ @media (max-width: 480px) {
1265
+ .sidebar {
1266
+ width: 100%;
1267
+ }
1268
+
1269
+ .chat-messages {
1270
+ padding: 1rem;
1271
+ }
1272
+
1273
+ .chat-input-section {
1274
+ padding: 0.75rem 1rem;
1275
+ }
1276
+
1277
+ .welcome-section h2 {
1278
+ font-size: 1.125rem;
1279
+ }
1280
+
1281
+ .agent-cards {
1282
+ flex-direction: column;
1283
+ gap: 0.75rem;
1284
+ }
1285
+
1286
+ .agent-card {
1287
+ width: 100%;
1288
+ min-width: auto;
1289
+ flex-direction: row;
1290
+ justify-content: flex-start;
1291
+ padding: 0.75rem;
1292
+ }
1293
+
1294
+ .message-bubble {
1295
+ max-width: 95%;
1296
+ font-size: 0.875rem;
1297
+ }
1298
+
1299
+ .footer-content {
1300
+ flex-direction: column;
1301
+ gap: 0.5rem;
1302
+ font-size: 0.7rem;
1303
+ }
1304
+ }
1305
+
1306
+ /* Small height viewports */
1307
+ @media (max-height: 600px) {
1308
+ .chat-messages {
1309
+ padding: 1rem;
1310
+ gap: 0.75rem;
1311
+ }
1312
+
1313
+ .chat-input-section {
1314
+ padding: 0.75rem 1rem;
1315
+ }
1316
+
1317
+ .chat-footer {
1318
+ padding: 0.5rem 1rem;
1319
+ font-size: 0.7rem;
1320
+ }
1321
+
1322
+ .footer-content {
1323
+ gap: 0.5rem;
1324
+ }
1325
+
1326
+ .welcome-section {
1327
+ gap: 1rem;
1328
+ margin: auto 0;
1329
+ }
1330
+
1331
+ .welcome-section h2 {
1332
+ font-size: 1.25rem;
1333
+ margin: 0;
1334
+ }
1335
+
1336
+ .agent-selection {
1337
+ gap: 0.75rem;
1338
+ }
1339
+
1340
+ .agent-cards {
1341
+ gap: 1rem;
1342
+ flex-wrap: wrap;
1343
+ }
1344
+
1345
+ .agent-card {
1346
+ padding: 0.75rem 1rem;
1347
+ min-width: 130px;
1348
+ font-size: 0.8rem;
1349
+ }
1350
+
1351
+ .agent-card-icon {
1352
+ font-size: 1.25rem;
1353
+ }
1354
+
1355
+ .chat-input {
1356
+ min-height: 40px;
1357
+ max-height: 120px;
1358
+ }
1359
+
1360
+ .input-wrapper {
1361
+ gap: 0.5rem;
1362
+ }
1363
+ }
1364
+
1365
+ @media (max-height: 500px) {
1366
+ .chat-messages {
1367
+ padding: 0.75rem;
1368
+ gap: 0.5rem;
1369
+ }
1370
+
1371
+ .chat-input-section {
1372
+ padding: 0.5rem 0.75rem;
1373
+ }
1374
+
1375
+ .welcome-section {
1376
+ gap: 0.75rem;
1377
+ }
1378
+
1379
+ .welcome-section h2 {
1380
+ font-size: 1.1rem;
1381
+ margin: 0;
1382
+ }
1383
+
1384
+ .agent-cards {
1385
+ gap: 0.75rem;
1386
+ }
1387
+
1388
+ .agent-card {
1389
+ padding: 0.5rem 0.75rem;
1390
+ min-width: 110px;
1391
+ font-size: 0.75rem;
1392
+ }
1393
+
1394
+ .agent-card-icon {
1395
+ font-size: 1.1rem;
1396
+ }
1397
+
1398
+ .chat-input {
1399
+ min-height: 36px;
1400
+ max-height: 100px;
1401
+ font-size: 0.9rem;
1402
+ }
1403
+
1404
+ .action-btn {
1405
+ padding: 0.5rem;
1406
+ }
1407
+
1408
+ .chat-footer {
1409
+ padding: 0.4rem 0.75rem;
1410
+ font-size: 0.65rem;
1411
+ }
1412
+
1413
+ .footer-content {
1414
+ gap: 0.25rem;
1415
+ }
1416
+ }
1417
+
1418
+ /* Print styles */
1419
+ @media print {
1420
+ .sidebar,
1421
+ .chat-input-section,
1422
+ .chat-footer,
1423
+ .modal,
1424
+ .loading-overlay {
1425
+ display: none;
1426
+ }
1427
+
1428
+ .chat-messages {
1429
+ max-height: none;
1430
+ overflow: visible;
1431
+ }
1432
+ }