agentgui 1.0.151 → 1.0.153

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.
package/static/styles.css DELETED
@@ -1,1989 +0,0 @@
1
- *, *::before, *::after {
2
- box-sizing: border-box;
3
- }
4
-
5
- :root {
6
- /* Light mode colors (default) */
7
- --color-primary: #4f46e5;
8
- --color-primary-light: #6366f1;
9
- --color-primary-lighter: #e0e7ff;
10
- --color-success: #10b981;
11
- --color-warning: #f59e0b;
12
- --color-danger: #ef4444;
13
- --color-info: #3b82f6;
14
-
15
- /* Light mode: Background & Text */
16
- --bg-primary: #ffffff;
17
- --bg-secondary: #f9fafb;
18
- --bg-tertiary: #f3f4f6;
19
- --text-primary: #1d2129;
20
- --text-secondary: #475569;
21
- --text-tertiary: #64748b;
22
- --border-color: #e5e7eb;
23
-
24
- /* Shadows */
25
- --shadow-sm: 0 1px 2px rgba(0, 0, 0, 0.05);
26
- --shadow-md: 0 4px 6px rgba(0, 0, 0, 0.1);
27
- --shadow-lg: 0 10px 15px rgba(0, 0, 0, 0.1);
28
- --shadow-xl: 0 20px 25px rgba(0, 0, 0, 0.1);
29
-
30
- /* Transitions */
31
- --transition-fast: all 0.15s cubic-bezier(0.4, 0, 0.2, 1);
32
- --transition-smooth: all 0.2s cubic-bezier(0.4, 0, 0.2, 1);
33
- --transition-slow: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
34
- }
35
-
36
- /* Dark mode */
37
- @media (prefers-color-scheme: dark) {
38
- :root {
39
- --bg-primary: #0f172a;
40
- --bg-secondary: #1a202c;
41
- --bg-tertiary: #2d3748;
42
- --text-primary: #f8fafc;
43
- --text-secondary: #cbd5e1;
44
- --text-tertiary: #94a3b8;
45
- --border-color: #334155;
46
- }
47
- }
48
-
49
- [data-theme="dark"] {
50
- --bg-primary: #0f172a;
51
- --bg-secondary: #1a202c;
52
- --bg-tertiary: #2d3748;
53
- --text-primary: #f8fafc;
54
- --text-secondary: #cbd5e1;
55
- --text-tertiary: #94a3b8;
56
- --border-color: #334155;
57
- }
58
-
59
- [data-theme="light"] {
60
- --bg-primary: #ffffff;
61
- --bg-secondary: #f9fafb;
62
- --bg-tertiary: #f3f4f6;
63
- --text-primary: #1d2129;
64
- --text-secondary: #475569;
65
- --text-tertiary: #64748b;
66
- --border-color: #e5e7eb;
67
- }
68
-
69
- html, body {
70
- height: 100%;
71
- font-family: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif;
72
- color: var(--text-primary);
73
- background: var(--bg-primary);
74
- line-height: 1.6;
75
- transition: var(--transition-smooth);
76
- }
77
-
78
- #app {
79
- height: 100vh;
80
- display: flex;
81
- overflow: hidden;
82
- background: var(--bg-primary);
83
- }
84
-
85
- /* Sidebar */
86
- .sidebar {
87
- width: 280px;
88
- background: var(--bg-primary);
89
- display: flex;
90
- flex-direction: column;
91
- flex-shrink: 0;
92
- overflow-y: auto;
93
- transition: transform var(--transition-smooth), width var(--transition-smooth);
94
- }
95
-
96
- .sidebar-header {
97
- padding: 1.5rem 1.25rem;
98
- display: flex;
99
- align-items: center;
100
- justify-content: space-between;
101
- gap: 1rem;
102
- }
103
-
104
- .sidebar-brand h1 {
105
- font-size: 1.25rem;
106
- font-weight: 700;
107
- color: var(--text-primary);
108
- margin: 0;
109
- }
110
-
111
- .sidebar-toggle {
112
- background: none;
113
- border: none;
114
- font-size: 1.5rem;
115
- cursor: pointer;
116
- color: var(--text-tertiary);
117
- transition: var(--transition-fast);
118
- display: none;
119
- padding: 0;
120
- width: 2rem;
121
- height: 2rem;
122
- align-items: center;
123
- justify-content: center;
124
- }
125
-
126
- .sidebar-toggle:hover {
127
- color: var(--text-primary);
128
- }
129
-
130
- .new-chat-btn {
131
- margin: 1rem 1.25rem;
132
- padding: 0.625rem 1rem;
133
- background: var(--bg-tertiary);
134
- border-radius: 0.5rem;
135
- font-size: 0.875rem;
136
- font-weight: 500;
137
- cursor: pointer;
138
- color: var(--text-primary);
139
- transition: var(--transition-smooth);
140
- display: flex;
141
- align-items: center;
142
- gap: 0.5rem;
143
- width: calc(100% - 2.5rem);
144
- }
145
-
146
- .new-chat-btn:hover {
147
- background: var(--border-color);
148
- }
149
-
150
- .chat-history-section {
151
- flex: 1;
152
- overflow-y: auto;
153
- padding: 0 1.25rem 1rem;
154
- }
155
-
156
- .history-title {
157
- font-size: 0.75rem;
158
- text-transform: uppercase;
159
- letter-spacing: 0.5px;
160
- color: var(--text-tertiary);
161
- font-weight: 600;
162
- margin: 1.5rem 0 0.75rem;
163
- padding: 0 0.5rem;
164
- }
165
-
166
- .chat-list {
167
- display: flex;
168
- flex-direction: column;
169
- gap: 0.5rem;
170
- }
171
-
172
- .chat-item {
173
- padding: 0.75rem;
174
- background: var(--bg-secondary);
175
- border-radius: 0.5rem;
176
- cursor: pointer;
177
- transition: var(--transition-smooth);
178
- text-align: left;
179
- color: var(--text-secondary);
180
- font-size: 0.875rem;
181
- display: flex;
182
- align-items: center;
183
- justify-content: space-between;
184
- gap: 0.5rem;
185
- overflow: hidden;
186
- }
187
-
188
- .chat-item-title {
189
- flex: 1;
190
- white-space: nowrap;
191
- overflow: hidden;
192
- text-overflow: ellipsis;
193
- }
194
-
195
- .chat-item-delete {
196
- background: none;
197
- border: none;
198
- color: var(--text-tertiary);
199
- cursor: pointer;
200
- padding: 0.25rem 0.5rem;
201
- border-radius: 0.25rem;
202
- transition: var(--transition-smooth);
203
- font-size: 0.75rem;
204
- flex-shrink: 0;
205
- opacity: 0;
206
- }
207
-
208
- .chat-item:hover .chat-item-delete {
209
- opacity: 1;
210
- color: var(--color-danger);
211
- }
212
-
213
- .chat-item-delete:hover {
214
- background: rgba(239, 68, 68, 0.1);
215
- }
216
-
217
- .chat-item:hover {
218
- background: var(--bg-tertiary);
219
- }
220
-
221
- .chat-item.active {
222
- background: var(--color-primary-lighter);
223
- color: var(--color-primary);
224
- font-weight: 500;
225
- }
226
-
227
- .chat-item-folder {
228
- display: flex;
229
- align-items: center;
230
- gap: 0.5rem;
231
- font-size: 0.8rem;
232
- color: var(--text-tertiary);
233
- margin-top: 0.25rem;
234
- padding: 0 0.5rem;
235
- }
236
-
237
- .sidebar-footer {
238
- padding: 0 1.25rem 1.5rem;
239
- margin-top: 1rem;
240
- }
241
-
242
- .settings-btn {
243
- width: 100%;
244
- padding: 0.625rem 1rem;
245
- background: var(--bg-tertiary);
246
- border-radius: 0.5rem;
247
- font-size: 0.875rem;
248
- font-weight: 500;
249
- cursor: pointer;
250
- color: var(--text-primary);
251
- transition: var(--transition-smooth);
252
- display: flex;
253
- align-items: center;
254
- justify-content: center;
255
- gap: 0.5rem;
256
- }
257
-
258
- .settings-btn:hover {
259
- background: var(--border-color);
260
- }
261
-
262
- /* Main Content */
263
- .main-content {
264
- flex: 1;
265
- display: flex;
266
- flex-direction: column;
267
- overflow: hidden;
268
- background: var(--bg-primary);
269
- }
270
-
271
- .chat-container {
272
- flex: 1;
273
- display: flex;
274
- flex-direction: column;
275
- overflow: hidden;
276
- min-height: 0;
277
- /* Ensure input is never hidden */
278
- position: relative;
279
- }
280
-
281
- .chat-messages {
282
- flex: 1;
283
- overflow-y: auto;
284
- padding: 1rem 2rem;
285
- display: flex;
286
- flex-direction: column;
287
- gap: 0.5rem;
288
- }
289
-
290
- .chat-context-header {
291
- display: flex;
292
- align-items: center;
293
- gap: 0.75rem;
294
- padding: 1rem;
295
- background: var(--bg-secondary);
296
- border-radius: 0.5rem;
297
- font-size: 0.875rem;
298
- color: var(--text-secondary);
299
- margin-bottom: 0.5rem;
300
- flex-shrink: 0;
301
- }
302
-
303
- .chat-context-header .folder-icon {
304
- font-size: 1.1rem;
305
- flex-shrink: 0;
306
- }
307
-
308
- .chat-context-header .folder-context {
309
- word-break: break-all;
310
- font-family: 'Monaco', 'Courier New', monospace;
311
- }
312
-
313
- @media (max-width: 768px) {
314
- .chat-context-header {
315
- padding: 0.75rem;
316
- font-size: 0.8rem;
317
- }
318
- }
319
-
320
- .welcome-section {
321
- display: flex;
322
- flex-direction: column;
323
- align-items: center;
324
- justify-content: center;
325
- text-align: center;
326
- min-height: auto;
327
- gap: 2rem;
328
- margin: auto 0;
329
- }
330
-
331
- .welcome-section h2 {
332
- font-size: 1.5rem;
333
- font-weight: 600;
334
- color: var(--text-primary);
335
- }
336
-
337
- .agent-selection {
338
- display: flex;
339
- flex-direction: column;
340
- gap: 1rem;
341
- align-items: center;
342
- }
343
-
344
- .agent-cards {
345
- display: flex;
346
- gap: 1.5rem;
347
- flex-wrap: wrap;
348
- justify-content: center;
349
- align-items: center;
350
- }
351
-
352
- .agent-card {
353
- padding: 1rem 1.5rem;
354
- background: var(--bg-secondary);
355
- border-radius: 0.5rem;
356
- cursor: pointer;
357
- transition: var(--transition-smooth);
358
- text-align: center;
359
- display: flex;
360
- flex-direction: column;
361
- align-items: center;
362
- gap: 0.5rem;
363
- font-size: 0.875rem;
364
- color: var(--text-secondary);
365
- white-space: nowrap;
366
- min-width: 150px;
367
- }
368
-
369
- .agent-card:hover {
370
- background: var(--bg-tertiary);
371
- color: var(--color-primary);
372
- }
373
-
374
- .agent-card.active {
375
- background: var(--color-primary-lighter);
376
- color: var(--color-primary);
377
- font-weight: 500;
378
- }
379
-
380
- .agent-card-icon {
381
- font-size: 1.5rem;
382
- }
383
-
384
- .agent-card-name {
385
- display: block;
386
- }
387
-
388
- .agent-separator {
389
- color: var(--border-color);
390
- }
391
-
392
- /* Chat Input */
393
- .chat-input-section {
394
- padding: 1.5rem 2rem;
395
- background: var(--bg-primary);
396
- flex-shrink: 0;
397
- min-height: 60px; /* Ensure input area never becomes too small */
398
- }
399
-
400
- .input-wrapper {
401
- display: flex;
402
- gap: 0.75rem;
403
- align-items: flex-end;
404
- }
405
-
406
- .chat-input {
407
- flex: 1;
408
- padding: 0.75rem 1rem;
409
- border-radius: 0.75rem;
410
- font-family: inherit;
411
- font-size: 1rem;
412
- resize: none;
413
- background: var(--bg-primary);
414
- color: var(--text-primary);
415
- transition: var(--transition-smooth);
416
- min-height: 44px;
417
- max-height: 200px;
418
- font-weight: 400;
419
- }
420
-
421
- .chat-input:focus {
422
- outline: none;
423
- border-color: var(--color-primary);
424
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
425
- }
426
-
427
- .input-actions {
428
- display: flex;
429
- gap: 0.5rem;
430
- align-items: flex-end;
431
- }
432
-
433
- .action-btn {
434
- padding: 0.625rem;
435
- background: var(--bg-secondary);
436
- border-radius: 0.5rem;
437
- cursor: pointer;
438
- color: var(--text-tertiary);
439
- transition: var(--transition-smooth);
440
- display: flex;
441
- align-items: center;
442
- justify-content: center;
443
- min-width: 44px;
444
- height: 44px;
445
- }
446
-
447
- .action-btn:hover {
448
- background: var(--bg-tertiary);
449
- color: var(--color-primary);
450
- }
451
-
452
- .action-btn.send-btn {
453
- background: var(--color-primary);
454
- color: white;
455
- }
456
-
457
- .action-btn.send-btn:hover {
458
- background: var(--color-primary-light);
459
- }
460
-
461
- .action-btn.send-btn:disabled {
462
- background: var(--bg-tertiary);
463
- color: var(--text-tertiary);
464
- cursor: not-allowed;
465
- }
466
-
467
- /* Chat Footer */
468
- .chat-footer {
469
- padding: 1rem 2rem;
470
- background: var(--bg-secondary);
471
- flex-shrink: 0;
472
- font-size: 0.8rem;
473
- }
474
-
475
- .footer-content {
476
- display: flex;
477
- align-items: center;
478
- justify-content: center;
479
- gap: 1.5rem;
480
- flex-wrap: wrap;
481
- }
482
-
483
- .footer-content a {
484
- color: var(--color-primary);
485
- text-decoration: none;
486
- transition: var(--transition-fast);
487
- }
488
-
489
- .footer-content a:hover {
490
- text-decoration: underline;
491
- }
492
-
493
- /* Settings Panel */
494
- .settings-panel {
495
- position: fixed;
496
- inset: 0;
497
- background: rgba(0, 0, 0, 0.5);
498
- backdrop-filter: blur(4px);
499
- z-index: 500;
500
- display: flex;
501
- align-items: center;
502
- justify-content: center;
503
- padding: 1rem;
504
- }
505
-
506
- .settings-content {
507
- background: var(--bg-primary);
508
- border-radius: 0.75rem;
509
- box-shadow: var(--shadow-xl);
510
- max-width: 600px;
511
- width: 100%;
512
- max-height: 90vh;
513
- overflow-y: auto;
514
- animation: slideUp 0.2s ease;
515
- }
516
-
517
- .settings-header {
518
- padding: 1.5rem;
519
- display: flex;
520
- justify-content: space-between;
521
- align-items: center;
522
- }
523
-
524
- .settings-header h2 {
525
- margin: 0;
526
- color: var(--text-primary);
527
- font-size: 1.25rem;
528
- }
529
-
530
- .close-btn {
531
- background: none;
532
- border: none;
533
- font-size: 2rem;
534
- cursor: pointer;
535
- color: var(--text-tertiary);
536
- transition: var(--transition-fast);
537
- padding: 0;
538
- width: 2rem;
539
- height: 2rem;
540
- display: flex;
541
- align-items: center;
542
- justify-content: center;
543
- }
544
-
545
- .close-btn:hover {
546
- color: var(--text-primary);
547
- }
548
-
549
- .setting-group {
550
- padding: 1.5rem;
551
- }
552
-
553
- .setting-group:last-child {
554
- border-bottom: none;
555
- }
556
-
557
- .setting-group label {
558
- display: block;
559
- margin-bottom: 0.5rem;
560
- font-weight: 500;
561
- color: var(--text-primary);
562
- font-size: 0.875rem;
563
- }
564
-
565
- .setting-group input[type="checkbox"] {
566
- margin-right: 0.5rem;
567
- cursor: pointer;
568
- }
569
-
570
- .setting-group input[type="checkbox"] ~ * {
571
- cursor: pointer;
572
- }
573
-
574
- .gm-input {
575
- width: 100%;
576
- padding: 0.75rem;
577
- border-radius: 0.5rem;
578
- font-size: 0.875rem;
579
- font-family: inherit;
580
- transition: var(--transition-smooth);
581
- background: var(--bg-primary);
582
- color: var(--text-primary);
583
- margin-top: 0.5rem;
584
- }
585
-
586
- .gm-input:focus {
587
- outline: none;
588
- border-color: var(--color-primary);
589
- box-shadow: 0 0 0 3px rgba(79, 70, 229, 0.1);
590
- }
591
-
592
- /* Chat Messages */
593
- .message {
594
- display: flex;
595
- flex-wrap: wrap;
596
- gap: 0.375rem;
597
- animation: slideUp 0.2s ease;
598
- width: 100%;
599
- }
600
-
601
- .message-bubble {
602
- flex: 0 1 100%;
603
- max-width: 70%;
604
- padding: 0.75rem 1rem;
605
- border-radius: 0.5rem;
606
- word-wrap: break-word;
607
- white-space: pre-wrap;
608
- }
609
-
610
- .message.user .message-bubble {
611
- background: var(--color-primary);
612
- color: white;
613
- margin-left: auto;
614
- }
615
-
616
- .message.assistant .message-bubble {
617
- background: var(--bg-secondary);
618
- color: var(--text-primary);
619
- }
620
-
621
- .message.system .message-bubble {
622
- background: var(--bg-tertiary);
623
- color: var(--text-tertiary);
624
- font-size: 0.875rem;
625
- align-self: center;
626
- }
627
-
628
- /* Streaming blocks */
629
- .stream-container {
630
- flex: 0 1 100%;
631
- max-width: 70%;
632
- display: flex;
633
- flex-direction: column;
634
- gap: 0.25rem;
635
- }
636
-
637
- .stream-text-block {
638
- padding: 0.75rem 1rem;
639
- background: var(--bg-secondary);
640
- border-radius: 0.5rem;
641
- color: var(--text-primary);
642
- word-wrap: break-word;
643
- white-space: pre-wrap;
644
- }
645
-
646
- .stream-container:not(.done) .stream-text-block:last-child::after {
647
- content: '\2588';
648
- animation: blink 0.8s step-end infinite;
649
- color: var(--color-primary);
650
- }
651
-
652
- @keyframes blink {
653
- 50% { opacity: 0; }
654
- }
655
-
656
- .stream-error {
657
- padding: 0.5rem 0.75rem;
658
- background: rgba(239, 68, 68, 0.1);
659
- border-radius: 0.5rem;
660
- color: var(--color-danger);
661
- font-size: 0.875rem;
662
- }
663
-
664
- .thought-block {
665
- border-radius: 0.5rem;
666
- overflow: hidden;
667
- }
668
-
669
- .thought-header {
670
- padding: 0.5rem 0.75rem;
671
- background: var(--bg-tertiary);
672
- font-size: 0.8rem;
673
- font-style: italic;
674
- color: var(--text-tertiary);
675
- cursor: pointer;
676
- user-select: none;
677
- }
678
-
679
- .thought-content {
680
- padding: 0.5rem 0.75rem;
681
- font-size: 0.8rem;
682
- color: var(--text-tertiary);
683
- white-space: pre-wrap;
684
- max-height: 200px;
685
- overflow-y: auto;
686
- }
687
-
688
- .thought-block.collapsed .thought-content {
689
- display: none;
690
- }
691
-
692
- .tool-block {
693
- border-radius: 0.5rem;
694
- overflow: hidden;
695
- font-size: 0.875rem;
696
- }
697
-
698
- .tool-header {
699
- padding: 0.5rem 0.75rem;
700
- background: var(--bg-tertiary);
701
- display: flex;
702
- align-items: center;
703
- gap: 0.5rem;
704
- cursor: pointer;
705
- user-select: none;
706
- }
707
-
708
- .tool-icon {
709
- width: 1.5rem;
710
- height: 1.5rem;
711
- display: flex;
712
- align-items: center;
713
- justify-content: center;
714
- background: var(--bg-secondary);
715
- border-radius: 0.25rem;
716
- font-family: monospace;
717
- font-size: 0.75rem;
718
- font-weight: 700;
719
- flex-shrink: 0;
720
- }
721
-
722
- .tool-title {
723
- flex: 1;
724
- font-weight: 500;
725
- color: var(--text-primary);
726
- overflow: hidden;
727
- text-overflow: ellipsis;
728
- white-space: nowrap;
729
- }
730
-
731
- .tool-status {
732
- font-size: 0.75rem;
733
- padding: 0.125rem 0.5rem;
734
- border-radius: 1rem;
735
- font-weight: 500;
736
- }
737
-
738
- .tool-block.status-running .tool-status {
739
- background: rgba(59, 130, 246, 0.15);
740
- color: var(--color-info);
741
- }
742
-
743
- .tool-block.status-completed .tool-status {
744
- background: rgba(16, 185, 129, 0.15);
745
- color: var(--color-success);
746
- }
747
-
748
- .tool-block.status-error .tool-status {
749
- background: rgba(239, 68, 68, 0.15);
750
- color: var(--color-danger);
751
- }
752
-
753
- .tool-body {
754
- padding: 0.5rem 0.75rem;
755
- font-family: 'Monaco', 'Courier New', monospace;
756
- font-size: 0.8rem;
757
- color: var(--text-secondary);
758
- white-space: pre-wrap;
759
- max-height: 300px;
760
- overflow-y: auto;
761
- background: var(--bg-secondary);
762
- }
763
-
764
- .tool-block.collapsed .tool-body {
765
- display: none;
766
- }
767
-
768
- .plan-block {
769
- border-radius: 0.5rem;
770
- overflow: hidden;
771
- }
772
-
773
- .plan-header {
774
- padding: 0.5rem 0.75rem;
775
- background: var(--bg-tertiary);
776
- font-weight: 500;
777
- font-size: 0.875rem;
778
- color: var(--text-primary);
779
- }
780
-
781
- .plan-item {
782
- padding: 0.375rem 0.75rem;
783
- font-size: 0.8rem;
784
- color: var(--text-secondary);
785
- }
786
-
787
- .html-block {
788
- border-radius: 0.5rem;
789
- overflow: visible;
790
- background: var(--bg-secondary);
791
- margin: 0.25rem 0;
792
- }
793
-
794
- .html-header {
795
- padding: 0.5rem 0.75rem;
796
- background: #3b82f6;
797
- font-weight: 500;
798
- font-size: 0.75rem;
799
- color: white;
800
- text-transform: uppercase;
801
- letter-spacing: 0.5px;
802
- }
803
-
804
- .html-content {
805
- padding: 0.75rem;
806
- overflow-x: auto;
807
- }
808
-
809
- .code-block {
810
- border-radius: 0.5rem;
811
- overflow-x: auto;
812
- background: var(--bg-tertiary);
813
- margin: 0.25rem 0;
814
- font-family: 'Monaco', 'Courier New', monospace;
815
- font-size: 0.8rem;
816
- }
817
-
818
- .code-block pre {
819
- margin: 0;
820
- padding: 0.75rem;
821
- color: var(--text-secondary);
822
- }
823
-
824
- .code-block code {
825
- color: var(--text-secondary);
826
- }
827
-
828
- .collapsible-code {
829
- border-radius: 0.375rem;
830
- overflow: hidden;
831
- margin: 0.25rem 0;
832
- border: 1px solid #334155;
833
- background: #1e293b;
834
- }
835
-
836
- .collapsible-code-summary {
837
- display: flex;
838
- align-items: center;
839
- justify-content: space-between;
840
- padding: 0.5rem 1rem;
841
- background: #0f172a;
842
- color: #94a3b8;
843
- font-family: 'Monaco', 'Menlo', 'Ubuntu Mono', monospace;
844
- font-size: 0.75rem;
845
- font-weight: 600;
846
- text-transform: uppercase;
847
- letter-spacing: 0.05em;
848
- cursor: pointer;
849
- user-select: none;
850
- list-style: none;
851
- border-bottom: 1px solid #334155;
852
- transition: background 0.15s ease;
853
- }
854
-
855
- .collapsible-code-summary::-webkit-details-marker {
856
- display: none;
857
- }
858
-
859
- .collapsible-code-summary::before {
860
- content: '';
861
- display: inline-block;
862
- width: 0;
863
- height: 0;
864
- border-style: solid;
865
- border-width: 5px 0 5px 8px;
866
- border-color: transparent transparent transparent #64748b;
867
- margin-right: 0.5rem;
868
- transition: transform 0.15s ease;
869
- flex-shrink: 0;
870
- }
871
-
872
- .collapsible-code[open] > .collapsible-code-summary::before {
873
- transform: rotate(90deg);
874
- }
875
-
876
- .collapsible-code-summary:hover {
877
- background: #1e293b;
878
- color: #e2e8f0;
879
- }
880
-
881
- .collapsible-code-summary:hover::before {
882
- border-left-color: #e2e8f0;
883
- }
884
-
885
- .collapsible-code-summary .copy-code-btn {
886
- background: none;
887
- border: none;
888
- color: inherit;
889
- cursor: pointer;
890
- padding: 0.25rem;
891
- border-radius: 0.25rem;
892
- display: flex;
893
- align-items: center;
894
- }
895
-
896
- .collapsible-code-summary .copy-code-btn:hover {
897
- color: #e2e8f0;
898
- background: rgba(255, 255, 255, 0.1);
899
- }
900
-
901
- .collapsible-code > pre {
902
- margin: 0;
903
- border-radius: 0 0 0.375rem 0.375rem;
904
- }
905
-
906
- .collapsible-code > div > pre {
907
- margin: 0;
908
- border-radius: 0 0 0.375rem 0.375rem;
909
- }
910
-
911
- .collapsible-code .code-block {
912
- margin: 0;
913
- border-radius: 0 0 0.375rem 0.375rem;
914
- }
915
-
916
- .image-block {
917
- flex: 0 1 100%;
918
- border-radius: 0.5rem;
919
- overflow: hidden;
920
- background: var(--bg-secondary);
921
- max-width: 70%;
922
- }
923
-
924
- .image-header {
925
- padding: 0.5rem 0.75rem;
926
- background: var(--bg-tertiary);
927
- font-weight: 500;
928
- font-size: 0.875rem;
929
- color: var(--text-primary);
930
- }
931
-
932
- .image-content {
933
- display: block;
934
- padding: 0.5rem;
935
- max-width: 100%;
936
- height: auto;
937
- }
938
-
939
- /* Connection Status Indicator */
940
- .connection-status {
941
- display: flex;
942
- align-items: center;
943
- gap: 0.5rem;
944
- padding: 0.5rem 1rem;
945
- font-size: 0.875rem;
946
- color: var(--text-secondary);
947
- background: var(--bg-secondary);
948
- transition: var(--transition-smooth);
949
- }
950
-
951
- .connection-status.connected .status-dot {
952
- background: var(--color-success);
953
- }
954
-
955
- .connection-status.reconnecting {
956
- color: var(--color-warning);
957
- }
958
-
959
- .connection-status.reconnecting .status-dot {
960
- background: var(--color-warning);
961
- animation: pulse 1.5s ease-in-out infinite;
962
- }
963
-
964
- .connection-status.disconnected {
965
- color: var(--color-danger);
966
- }
967
-
968
- .connection-status.disconnected .status-dot {
969
- background: var(--color-danger);
970
- }
971
-
972
- .status-dot {
973
- width: 8px;
974
- height: 8px;
975
- border-radius: 50%;
976
- background: var(--color-success);
977
- transition: var(--transition-smooth);
978
- }
979
-
980
- .status-text {
981
- font-size: 0.875rem;
982
- font-weight: 500;
983
- }
984
-
985
- @keyframes pulse {
986
- 0%, 100% { opacity: 1; }
987
- 50% { opacity: 0.5; }
988
- }
989
-
990
- @media (max-width: 768px) {
991
- .stream-container { max-width: 90%; }
992
- }
993
-
994
- @media (max-width: 480px) {
995
- .stream-container { max-width: 95%; }
996
- }
997
-
998
- /* Modal */
999
- .gm-modal {
1000
- display: none;
1001
- position: fixed;
1002
- inset: 0;
1003
- background: rgba(0, 0, 0, 0.5);
1004
- backdrop-filter: blur(4px);
1005
- z-index: 1000;
1006
- align-items: center;
1007
- justify-content: center;
1008
- padding: 1rem;
1009
- animation: fadeIn 0.2s ease-out;
1010
- }
1011
-
1012
- @keyframes fadeIn {
1013
- from {
1014
- opacity: 0;
1015
- }
1016
- to {
1017
- opacity: 1;
1018
- }
1019
- }
1020
-
1021
- @keyframes slideUp {
1022
- from {
1023
- transform: translateY(10px);
1024
- opacity: 0;
1025
- }
1026
- to {
1027
- transform: translateY(0);
1028
- opacity: 1;
1029
- }
1030
- }
1031
-
1032
- .gm-modal.active {
1033
- display: flex;
1034
- }
1035
-
1036
- .gm-modal-content {
1037
- background: var(--bg-primary);
1038
- border-radius: 0.75rem;
1039
- box-shadow: var(--shadow-xl);
1040
- max-width: 90vw;
1041
- max-height: 90vh;
1042
- display: flex;
1043
- flex-direction: column;
1044
- overflow: hidden;
1045
- animation: slideUp 0.2s ease;
1046
- transition: var(--transition-smooth);
1047
- }
1048
-
1049
- .gm-modal-header {
1050
- padding: 1.5rem;
1051
- display: flex;
1052
- justify-content: space-between;
1053
- align-items: center;
1054
- }
1055
-
1056
- .gm-modal-header h3 {
1057
- margin: 0;
1058
- color: var(--text-primary);
1059
- }
1060
-
1061
- .gm-modal-body {
1062
- padding: 1.5rem;
1063
- overflow-y: auto;
1064
- flex: 1;
1065
- display: flex;
1066
- align-items: center;
1067
- justify-content: center;
1068
- }
1069
-
1070
- .gm-modal-footer {
1071
- padding: 1rem 1.5rem;
1072
- display: flex;
1073
- gap: 0.75rem;
1074
- justify-content: flex-end;
1075
- }
1076
-
1077
- .chat-option-btn {
1078
- display: flex;
1079
- align-items: flex-start;
1080
- gap: 1rem;
1081
- padding: 1rem 1.25rem;
1082
- background: var(--bg-secondary);
1083
- border-radius: 0.5rem;
1084
- cursor: pointer;
1085
- transition: var(--transition-smooth);
1086
- text-align: left;
1087
- width: 100%;
1088
- }
1089
-
1090
- .chat-option-btn:hover {
1091
- background: var(--bg-tertiary);
1092
- }
1093
-
1094
- .chat-option-btn:active {
1095
- transform: scale(0.98);
1096
- }
1097
-
1098
- .chat-option-icon {
1099
- font-size: 1.5rem;
1100
- flex-shrink: 0;
1101
- display: flex;
1102
- align-items: center;
1103
- justify-content: center;
1104
- width: 2.5rem;
1105
- height: 2.5rem;
1106
- }
1107
-
1108
- .chat-option-content {
1109
- flex: 1;
1110
- display: flex;
1111
- flex-direction: column;
1112
- gap: 0.25rem;
1113
- }
1114
-
1115
- .chat-option-title {
1116
- font-weight: 500;
1117
- color: var(--text-primary);
1118
- font-size: 0.95rem;
1119
- }
1120
-
1121
- .chat-option-desc {
1122
- font-size: 0.8rem;
1123
- color: var(--text-tertiary);
1124
- }
1125
-
1126
- .gm-btn {
1127
- padding: 0.625rem 1rem;
1128
- border: none;
1129
- border-radius: 0.5rem;
1130
- font-size: 0.875rem;
1131
- font-weight: 500;
1132
- cursor: pointer;
1133
- transition: var(--transition-smooth);
1134
- display: inline-flex;
1135
- align-items: center;
1136
- gap: 0.5rem;
1137
- white-space: nowrap;
1138
- }
1139
-
1140
- .gm-btn-primary {
1141
- background: var(--color-primary);
1142
- color: white;
1143
- }
1144
-
1145
- .gm-btn-primary:hover {
1146
- background: var(--color-primary-light);
1147
- transform: translateY(-1px);
1148
- }
1149
-
1150
- .gm-btn-success {
1151
- background: var(--color-success);
1152
- color: white;
1153
- }
1154
-
1155
- .gm-btn-success:hover {
1156
- background: #059669;
1157
- transform: translateY(-1px);
1158
- }
1159
-
1160
- .gm-btn-secondary {
1161
- background: var(--bg-tertiary);
1162
- color: var(--text-primary);
1163
- }
1164
-
1165
- .gm-btn-secondary:hover {
1166
- background: var(--border-color);
1167
- }
1168
-
1169
- .gm-btn-danger {
1170
- background: var(--color-danger);
1171
- color: white;
1172
- }
1173
-
1174
- .gm-btn-danger:hover {
1175
- background: #dc2626;
1176
- transform: translateY(-1px);
1177
- }
1178
-
1179
- .gm-btn-close {
1180
- background: none;
1181
- border: none;
1182
- font-size: 2rem;
1183
- cursor: pointer;
1184
- color: var(--text-tertiary);
1185
- padding: 0;
1186
- width: 2rem;
1187
- height: 2rem;
1188
- display: flex;
1189
- align-items: center;
1190
- justify-content: center;
1191
- transition: var(--transition-fast);
1192
- }
1193
-
1194
- .gm-btn-close:hover {
1195
- color: var(--text-primary);
1196
- }
1197
-
1198
- /* Loading overlay */
1199
- .loading-overlay {
1200
- display: none;
1201
- position: fixed;
1202
- inset: 0;
1203
- background: rgba(0, 0, 0, 0.5);
1204
- z-index: 999;
1205
- align-items: center;
1206
- justify-content: center;
1207
- }
1208
-
1209
- .loading-overlay.active {
1210
- display: flex;
1211
- }
1212
-
1213
- .gm-spinner {
1214
- width: 48px;
1215
- height: 48px;
1216
- border: 4px solid rgba(255, 255, 255, 0.3);
1217
- border-top-color: white;
1218
- border-radius: 50%;
1219
- animation: spin 0.8s linear infinite;
1220
- }
1221
-
1222
- @keyframes spin {
1223
- to { transform: rotate(360deg); }
1224
- }
1225
-
1226
- /* Scrollbar styling */
1227
- ::-webkit-scrollbar {
1228
- width: 8px;
1229
- height: 8px;
1230
- }
1231
-
1232
- ::-webkit-scrollbar-track {
1233
- background: transparent;
1234
- }
1235
-
1236
- ::-webkit-scrollbar-thumb {
1237
- background: var(--border-color);
1238
- border-radius: 4px;
1239
- }
1240
-
1241
- ::-webkit-scrollbar-thumb:hover {
1242
- background: var(--text-tertiary);
1243
- }
1244
-
1245
- /* Responsive design */
1246
- @media (max-width: 768px) {
1247
- .sidebar {
1248
- position: fixed;
1249
- left: 0;
1250
- top: 0;
1251
- bottom: 0;
1252
- z-index: 1000;
1253
- width: 280px;
1254
- transform: translateX(-100%);
1255
- box-shadow: none;
1256
- transition: transform 0.3s ease;
1257
- }
1258
-
1259
- .sidebar.open,
1260
- .sidebar.mobile-visible {
1261
- transform: translateX(0);
1262
- box-shadow: var(--shadow-lg);
1263
- }
1264
-
1265
- .sidebar-toggle {
1266
- display: flex;
1267
- }
1268
-
1269
- .main-content {
1270
- width: 100%;
1271
- }
1272
-
1273
- .chat-messages {
1274
- padding: 0.75rem 1rem;
1275
- }
1276
-
1277
- .chat-input-section {
1278
- padding: 1rem 1.5rem;
1279
- padding-bottom: calc(1rem + env(safe-area-inset-bottom));
1280
- }
1281
-
1282
- .chat-footer {
1283
- padding: 0.75rem 1.5rem;
1284
- font-size: 0.75rem;
1285
- }
1286
-
1287
- .footer-content {
1288
- gap: 1rem;
1289
- }
1290
-
1291
- .agent-cards {
1292
- gap: 1rem;
1293
- }
1294
-
1295
- .agent-card {
1296
- min-width: 120px;
1297
- padding: 0.75rem 1rem;
1298
- }
1299
-
1300
- .agent-card-icon {
1301
- font-size: 1.25rem;
1302
- }
1303
-
1304
- .agent-card-name {
1305
- font-size: 0.75rem;
1306
- }
1307
-
1308
- .welcome-section h2 {
1309
- font-size: 1.25rem;
1310
- }
1311
-
1312
- .message-bubble {
1313
- max-width: 90%;
1314
- }
1315
-
1316
- .settings-content {
1317
- max-width: 95vw;
1318
- }
1319
- }
1320
-
1321
- @media (max-width: 480px) {
1322
- .sidebar {
1323
- width: 100%;
1324
- }
1325
-
1326
- .chat-messages {
1327
- padding: 1rem;
1328
- }
1329
-
1330
- .chat-input-section {
1331
- padding: 0.75rem 1rem;
1332
- }
1333
-
1334
- .welcome-section h2 {
1335
- font-size: 1.125rem;
1336
- }
1337
-
1338
- .agent-cards {
1339
- flex-direction: column;
1340
- gap: 0.75rem;
1341
- }
1342
-
1343
- .agent-card {
1344
- width: 100%;
1345
- min-width: auto;
1346
- flex-direction: row;
1347
- justify-content: flex-start;
1348
- padding: 0.75rem;
1349
- }
1350
-
1351
- .message-bubble {
1352
- max-width: 95%;
1353
- font-size: 0.875rem;
1354
- }
1355
-
1356
- .footer-content {
1357
- flex-direction: column;
1358
- gap: 0.5rem;
1359
- font-size: 0.7rem;
1360
- }
1361
- }
1362
-
1363
- /* Small height viewports */
1364
- @media (max-height: 600px) {
1365
- .chat-messages {
1366
- padding: 0.75rem;
1367
- gap: 0.375rem;
1368
- }
1369
-
1370
- .chat-input-section {
1371
- padding: 0.75rem 1rem;
1372
- }
1373
-
1374
- .chat-footer {
1375
- padding: 0.5rem 1rem;
1376
- font-size: 0.7rem;
1377
- }
1378
-
1379
- .footer-content {
1380
- gap: 0.5rem;
1381
- }
1382
-
1383
- .welcome-section {
1384
- gap: 1rem;
1385
- margin: auto 0;
1386
- }
1387
-
1388
- .welcome-section h2 {
1389
- font-size: 1.25rem;
1390
- margin: 0;
1391
- }
1392
-
1393
- .agent-selection {
1394
- gap: 0.75rem;
1395
- }
1396
-
1397
- .agent-cards {
1398
- gap: 1rem;
1399
- flex-wrap: wrap;
1400
- }
1401
-
1402
- .agent-card {
1403
- padding: 0.75rem 1rem;
1404
- min-width: 130px;
1405
- font-size: 0.8rem;
1406
- }
1407
-
1408
- .agent-card-icon {
1409
- font-size: 1.25rem;
1410
- }
1411
-
1412
- .chat-input {
1413
- min-height: 40px;
1414
- max-height: 120px;
1415
- }
1416
-
1417
- .input-wrapper {
1418
- gap: 0.5rem;
1419
- }
1420
- }
1421
-
1422
- @media (max-height: 500px) {
1423
- .chat-messages {
1424
- padding: 0.5rem;
1425
- gap: 0.25rem;
1426
- }
1427
-
1428
- .chat-input-section {
1429
- padding: 0.5rem 0.75rem;
1430
- }
1431
-
1432
- .welcome-section {
1433
- gap: 0.75rem;
1434
- }
1435
-
1436
- .welcome-section h2 {
1437
- font-size: 1.1rem;
1438
- margin: 0;
1439
- }
1440
-
1441
- .agent-cards {
1442
- gap: 0.75rem;
1443
- }
1444
-
1445
- .agent-card {
1446
- padding: 0.5rem 0.75rem;
1447
- min-width: 110px;
1448
- font-size: 0.75rem;
1449
- }
1450
-
1451
- .agent-card-icon {
1452
- font-size: 1.1rem;
1453
- }
1454
-
1455
- .chat-input {
1456
- min-height: 36px;
1457
- max-height: 100px;
1458
- font-size: 0.9rem;
1459
- }
1460
-
1461
- .action-btn {
1462
- padding: 0.5rem;
1463
- }
1464
-
1465
- .chat-footer {
1466
- padding: 0.4rem 0.75rem;
1467
- font-size: 0.65rem;
1468
- }
1469
-
1470
- .footer-content {
1471
- gap: 0.25rem;
1472
- }
1473
- }
1474
-
1475
- /* Print styles */
1476
- @media print {
1477
- .sidebar,
1478
- .chat-input-section,
1479
- .chat-footer,
1480
- .gm-modal,
1481
- .loading-overlay {
1482
- display: none;
1483
- }
1484
-
1485
- .chat-messages {
1486
- max-height: none;
1487
- overflow: visible;
1488
- }
1489
- }
1490
-
1491
- /* Rich Response Rendering */
1492
-
1493
- /* Code blocks */
1494
- .segment-code {
1495
- margin: 1rem 0;
1496
- }
1497
-
1498
- /* Inline code */
1499
- p code {
1500
- background: #f0f0f0;
1501
- padding: 0.2em 0.4em;
1502
- border-radius: 3px;
1503
- font-family: 'Courier New', monospace;
1504
- color: #d73a49;
1505
- font-size: 0.9em;
1506
- }
1507
-
1508
- /* Headings */
1509
- .response-heading {
1510
- font-weight: 600;
1511
- margin: 1rem 0 0.5rem 0;
1512
- line-height: 1.3;
1513
- }
1514
-
1515
- .segment-heading {
1516
- margin-top: 1.5rem;
1517
- }
1518
-
1519
- .segment-heading:first-child {
1520
- margin-top: 0;
1521
- }
1522
-
1523
- /* Blockquotes */
1524
- .response-quote {
1525
- border-left: 4px solid #ccc;
1526
- padding-left: 1rem;
1527
- color: #666;
1528
- font-style: italic;
1529
- margin: 0.5rem 0;
1530
- }
1531
-
1532
- /* Lists */
1533
- .response-list-item {
1534
- margin-left: 2rem;
1535
- margin-bottom: 0.25rem;
1536
- }
1537
-
1538
- /* Text segments */
1539
- .segment-text {
1540
- margin: 0.5rem 0;
1541
- }
1542
-
1543
- .response-text {
1544
- margin: 0.5rem 0;
1545
- line-height: 1.6;
1546
- color: #333;
1547
- }
1548
-
1549
- /* Metadata display */
1550
- .response-metadata {
1551
- background: #f9f9f9;
1552
- border-radius: 8px;
1553
- padding: 1rem;
1554
- margin: 1rem 0 0 0;
1555
- font-size: 0.9rem;
1556
- }
1557
-
1558
- .metadata-section {
1559
- margin-bottom: 1rem;
1560
- }
1561
-
1562
- .metadata-section:last-child {
1563
- margin-bottom: 0;
1564
- }
1565
-
1566
- .metadata-section strong {
1567
- display: block;
1568
- margin-bottom: 0.5rem;
1569
- color: #555;
1570
- font-weight: 600;
1571
- }
1572
-
1573
- .metadata-section ul {
1574
- list-style: none;
1575
- padding-left: 1rem;
1576
- margin: 0;
1577
- }
1578
-
1579
- .metadata-section li {
1580
- margin-bottom: 0.25rem;
1581
- padding-left: 0.5rem;
1582
- }
1583
-
1584
- .metadata-section li::before {
1585
- content: '▸ ';
1586
- color: #007acc;
1587
- font-weight: bold;
1588
- margin-right: 0.5rem;
1589
- }
1590
-
1591
- .metadata-section.tools li code {
1592
- background: #e8f4f8;
1593
- color: #0071bc;
1594
- padding: 0.2em 0.4em;
1595
- border-radius: 3px;
1596
- }
1597
-
1598
- .metadata-section.thinking {
1599
- background: #fff9e6;
1600
- }
1601
-
1602
- .metadata-section.thinking summary {
1603
- cursor: pointer;
1604
- font-weight: 600;
1605
- color: #997700;
1606
- user-select: none;
1607
- }
1608
-
1609
- .metadata-section.thinking summary:hover {
1610
- color: #bb9900;
1611
- }
1612
-
1613
- .metadata-section.thinking p {
1614
- margin: 0.5rem 0;
1615
- padding-left: 1rem;
1616
- border-left: 3px solid #f0c674;
1617
- padding-left: 1rem;
1618
- color: #666;
1619
- font-size: 0.9rem;
1620
- }
1621
-
1622
- .metadata-section.subagents li::before {
1623
- content: '🤖 ';
1624
- }
1625
-
1626
- .metadata-section.tasks li::before {
1627
- content: '✓ ';
1628
- color: #28a745;
1629
- }
1630
-
1631
- /* New Segment Types */
1632
-
1633
- /* Thinking blocks */
1634
- .segment-thinking {
1635
- background: #f9f9f9;
1636
- border-left: 4px solid #999;
1637
- padding: 1rem;
1638
- margin: 1rem 0;
1639
- border-radius: 4px;
1640
- }
1641
-
1642
- .segment-thinking summary {
1643
- cursor: pointer;
1644
- font-weight: 600;
1645
- color: #666;
1646
- user-select: none;
1647
- padding-bottom: 0.5rem;
1648
- }
1649
-
1650
- .segment-thinking summary:hover {
1651
- color: #333;
1652
- }
1653
-
1654
- .thinking-content {
1655
- color: #555;
1656
- font-size: 0.95em;
1657
- line-height: 1.6;
1658
- margin-top: 0.5rem;
1659
- padding: 0.5rem 0;
1660
- }
1661
-
1662
- /* Tool use blocks */
1663
- .segment-tool-use {
1664
- background: #f0f8ff;
1665
- border-left: 4px solid #007acc;
1666
- padding: 0.5rem;
1667
- margin: 0.25rem 0;
1668
- border-radius: 4px;
1669
- }
1670
-
1671
- .tool-icon {
1672
- font-weight: 600;
1673
- color: #007acc;
1674
- margin-bottom: 0.5rem;
1675
- }
1676
-
1677
- .tool-content {
1678
- background: #f5f5f5;
1679
- padding: 0.75rem;
1680
- border-radius: 3px;
1681
- overflow-x: auto;
1682
- }
1683
-
1684
- .tool-content code {
1685
- color: #d73a49;
1686
- font-family: 'Courier New', monospace;
1687
- }
1688
-
1689
- /* Tool result blocks */
1690
- .segment-tool-result {
1691
- background: #fff9e6;
1692
- border-left: 4px solid #ffb300;
1693
- padding: 0.5rem;
1694
- margin: 0.25rem 0;
1695
- border-radius: 4px;
1696
- }
1697
-
1698
- .result-icon {
1699
- font-weight: 600;
1700
- color: #997700;
1701
- margin-bottom: 0.5rem;
1702
- }
1703
-
1704
- .result-content {
1705
- background: #f5f5f5;
1706
- padding: 0.75rem;
1707
- border-radius: 3px;
1708
- overflow-x: auto;
1709
- }
1710
-
1711
- /* Action statements */
1712
- .response-action {
1713
- background: #e8f5e9;
1714
- border-left: 4px solid #28a745;
1715
- padding: 0.75rem 1rem;
1716
- margin: 1.5rem 0 0.5rem 0;
1717
- border-radius: 4px;
1718
- font-weight: 500;
1719
- color: #1b5e20;
1720
- }
1721
-
1722
- /* Analysis blocks */
1723
- .response-analysis {
1724
- background: #e3f2fd;
1725
- border-left: 4px solid #1976d2;
1726
- padding: 0.75rem 1rem;
1727
- margin: 1rem 0;
1728
- border-radius: 4px;
1729
- color: #0d47a1;
1730
- font-size: 0.95em;
1731
- }
1732
-
1733
- /* Result presentation */
1734
- .response-result {
1735
- background: #f3e5f5;
1736
- border-left: 4px solid #7b1fa2;
1737
- padding: 1rem;
1738
- margin: 1rem 0;
1739
- border-radius: 4px;
1740
- line-height: 1.6;
1741
- }
1742
-
1743
- /* Claude Execution Blocks - Full message structure rendering */
1744
- .execution-blocks {
1745
- display: flex;
1746
- flex-direction: column;
1747
- gap: 0.25rem;
1748
- width: 100%;
1749
- }
1750
-
1751
- .message-block {
1752
- padding: 0.5rem 0.75rem;
1753
- border-radius: 0.5rem;
1754
- background: var(--bg-secondary);
1755
- word-wrap: break-word;
1756
- }
1757
-
1758
- .block-text {
1759
- color: var(--text-primary);
1760
- line-height: 1.6;
1761
- }
1762
-
1763
- .block-text h1 {
1764
- font-size: 1.75rem;
1765
- font-weight: 700;
1766
- margin: 1rem 0 0.5rem 0;
1767
- color: var(--text-primary);
1768
- }
1769
-
1770
- .block-text h2 {
1771
- font-size: 1.5rem;
1772
- font-weight: 700;
1773
- margin: 0.875rem 0 0.5rem 0;
1774
- color: var(--text-primary);
1775
- }
1776
-
1777
- .block-text h3 {
1778
- font-size: 1.25rem;
1779
- font-weight: 600;
1780
- margin: 0.75rem 0 0.375rem 0;
1781
- color: var(--text-primary);
1782
- }
1783
-
1784
- .block-text p {
1785
- margin: 0.5rem 0;
1786
- white-space: normal;
1787
- }
1788
-
1789
- .block-text ul,
1790
- .block-text ol {
1791
- margin: 0.5rem 0 0.5rem 1.5rem;
1792
- padding-left: 1rem;
1793
- }
1794
-
1795
- .block-text li {
1796
- margin: 0.25rem 0;
1797
- }
1798
-
1799
- .block-text code.inline-code {
1800
- background: var(--bg-tertiary);
1801
- color: var(--color-info);
1802
- padding: 0.15rem 0.4rem;
1803
- border-radius: 0.25rem;
1804
- font-family: 'Courier New', monospace;
1805
- font-size: 0.9em;
1806
- white-space: nowrap;
1807
- }
1808
-
1809
- .block-text a {
1810
- color: var(--color-primary);
1811
- text-decoration: none;
1812
- transition: var(--transition-fast);
1813
- }
1814
-
1815
- .block-text a:hover {
1816
- text-decoration: underline;
1817
- }
1818
-
1819
- .block-tool-use {
1820
- background: rgba(59, 130, 246, 0.05);
1821
- border-radius: 0.5rem;
1822
- padding: 0.5rem;
1823
- }
1824
- .block-tool-use.folded-tool {
1825
- padding: 0;
1826
- background: none;
1827
- }
1828
-
1829
- .tool-name {
1830
- color: var(--color-info);
1831
- font-weight: 600;
1832
- display: block;
1833
- margin-bottom: 0.5rem;
1834
- }
1835
-
1836
- .tool-input {
1837
- background: transparent;
1838
- border-radius: 0.375rem;
1839
- padding: 0.5rem 0;
1840
- overflow-x: auto;
1841
- font-size: 0.8rem;
1842
- font-family: 'Courier New', monospace;
1843
- line-height: 1.5;
1844
- }
1845
-
1846
- .tool-input pre {
1847
- margin: 0;
1848
- color: var(--text-secondary);
1849
- }
1850
-
1851
- .tool-input code {
1852
- color: var(--text-secondary);
1853
- background: transparent;
1854
- padding: 0;
1855
- font-family: inherit;
1856
- }
1857
-
1858
- .tool-input span {
1859
- font-family: 'Courier New', monospace;
1860
- }
1861
-
1862
- .block-tool-result {
1863
- background: rgba(16, 185, 129, 0.05);
1864
- border-radius: 0.5rem;
1865
- padding: 0.5rem;
1866
- }
1867
-
1868
- .block-tool-result strong {
1869
- color: var(--color-success);
1870
- display: block;
1871
- margin-bottom: 0.5rem;
1872
- }
1873
-
1874
- .tool-result {
1875
- background: transparent;
1876
- border-radius: 0.375rem;
1877
- padding: 0.5rem 0;
1878
- overflow-x: auto;
1879
- font-size: 0.8rem;
1880
- font-family: 'Courier New', monospace;
1881
- max-height: 300px;
1882
- overflow-y: auto;
1883
- line-height: 1.5;
1884
- }
1885
-
1886
- .tool-result pre {
1887
- margin: 0;
1888
- color: var(--text-secondary);
1889
- }
1890
-
1891
- .tool-result code {
1892
- color: var(--text-secondary);
1893
- background: transparent;
1894
- padding: 0;
1895
- font-family: inherit;
1896
- }
1897
-
1898
- .block-file-op {
1899
- background: rgba(245, 158, 11, 0.05);
1900
- border-radius: 0.5rem;
1901
- padding: 0.75rem;
1902
- }
1903
-
1904
- .file-action {
1905
- color: var(--color-warning);
1906
- font-weight: 600;
1907
- display: block;
1908
- margin-bottom: 0.5rem;
1909
- }
1910
-
1911
- .file-path {
1912
- color: var(--text-secondary);
1913
- font-size: 0.875rem;
1914
- font-family: 'Courier New', monospace;
1915
- margin-bottom: 0.5rem;
1916
- padding: 0.25rem 0;
1917
- background: transparent;
1918
- border-radius: 0.25rem;
1919
- }
1920
-
1921
- .file-content {
1922
- background: transparent;
1923
- border-radius: 0.375rem;
1924
- padding: 0.5rem 0;
1925
- overflow-x: auto;
1926
- font-size: 0.8rem;
1927
- font-family: 'Courier New', monospace;
1928
- max-height: 200px;
1929
- overflow-y: auto;
1930
- }
1931
-
1932
- .file-content pre {
1933
- margin: 0;
1934
- color: var(--text-secondary);
1935
- }
1936
-
1937
- .block-unknown {
1938
- background: var(--bg-tertiary);
1939
- border-radius: 0.375rem;
1940
- padding: 0.5rem;
1941
- overflow-x: auto;
1942
- font-size: 0.75rem;
1943
- font-family: 'Courier New', monospace;
1944
- }
1945
-
1946
- .message-content {
1947
- color: var(--text-primary);
1948
- white-space: pre-wrap;
1949
- word-wrap: break-word;
1950
- line-height: 1.5;
1951
- }
1952
-
1953
- /* Touch-friendly interactive elements */
1954
- @media (pointer: coarse) {
1955
- .chat-item,
1956
- .new-chat-btn,
1957
- .settings-btn,
1958
- .action-btn,
1959
- .gm-btn,
1960
- .chat-option-btn,
1961
- .close-btn {
1962
- min-height: 44px;
1963
- min-width: 44px;
1964
- }
1965
-
1966
- .chat-input {
1967
- font-size: 16px;
1968
- min-height: 44px;
1969
- }
1970
-
1971
- .chat-messages {
1972
- -webkit-overflow-scrolling: touch;
1973
- }
1974
- }
1975
-
1976
- /* Safe area padding for notched phones */
1977
- @supports (padding-top: env(safe-area-inset-top)) {
1978
- #app {
1979
- padding-top: env(safe-area-inset-top);
1980
- }
1981
-
1982
- .chat-input-section {
1983
- padding-bottom: calc(1rem + env(safe-area-inset-bottom));
1984
- }
1985
-
1986
- .chat-footer {
1987
- padding-bottom: calc(0.75rem + env(safe-area-inset-bottom));
1988
- }
1989
- }