@beanx/cathygo-web-core 0.1.0

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,1394 @@
1
+ @import "katex/dist/katex.min.css";
2
+ @import "streamdown/styles.css";
3
+
4
+ :root {
5
+ --bg-page: #ffffff;
6
+ --bg-workspace: #f5f5f7;
7
+ --bg-muted: #f4f4f4;
8
+ --bg-hover: #ececec;
9
+ --text-primary: #0d0d0d;
10
+ --text-muted: #6e6e80;
11
+ --border-subtle: #ececec;
12
+ --border-strong: #d9d9e3;
13
+ --chat-column-width: 48rem;
14
+ --radius-pill: 26px;
15
+ --radius-message: 18px;
16
+ --shadow-composer: 0 0 0 1px rgba(0, 0, 0, 0.06), 0 8px 24px rgba(0, 0, 0, 0.06);
17
+ }
18
+
19
+ .workspace.chat-layout,
20
+ .workspace.list-layout {
21
+ background: var(--bg-workspace);
22
+ padding: 0;
23
+ }
24
+
25
+ .cathygo-chat-panel {
26
+ height: 100vh;
27
+ min-height: 0;
28
+ overflow: hidden;
29
+ }
30
+
31
+ .workspace-header {
32
+ align-items: center;
33
+ display: flex;
34
+ gap: 18px;
35
+ justify-content: space-between;
36
+ }
37
+
38
+ .workspace-header h1 {
39
+ font-size: 26px;
40
+ line-height: 1.2;
41
+ margin: 0;
42
+ }
43
+
44
+ .workspace-header p {
45
+ margin: 0 0 5px;
46
+ }
47
+
48
+ .workspace-actions {
49
+ align-items: center;
50
+ display: flex;
51
+ flex-wrap: wrap;
52
+ gap: 8px;
53
+ justify-content: flex-end;
54
+ }
55
+
56
+ .status-pill {
57
+ background: #fff7ed;
58
+ border: 1px solid #fed7aa;
59
+ border-radius: 999px;
60
+ color: #8a3b12;
61
+ font-size: 12px;
62
+ font-weight: 750;
63
+ padding: 7px 10px;
64
+ white-space: nowrap;
65
+ }
66
+
67
+ .status-pill.completed {
68
+ background: #ecfdf5;
69
+ border-color: #86efac;
70
+ color: #146c43;
71
+ }
72
+
73
+ .status-pill.pending {
74
+ background: #fff7ed;
75
+ border-color: #fed7aa;
76
+ color: #8a3b12;
77
+ }
78
+
79
+ .run-status,
80
+ .model-banner,
81
+ .surface,
82
+ .list-surface,
83
+ .settings-grid,
84
+ .settings-meta {
85
+ background: #ffffff;
86
+ border: 1px solid #dfe4ec;
87
+ border-radius: 8px;
88
+ }
89
+
90
+ .run-status {
91
+ display: grid;
92
+ gap: 12px;
93
+ grid-template-columns: repeat(4, minmax(0, 1fr));
94
+ padding: 12px;
95
+ }
96
+
97
+ .model-banner {
98
+ align-items: center;
99
+ display: flex;
100
+ gap: 14px;
101
+ justify-content: space-between;
102
+ padding: 10px 12px;
103
+ }
104
+
105
+ .model-banner.attention {
106
+ background: #fffaf0;
107
+ border-color: #fed7aa;
108
+ }
109
+
110
+ .model-banner div {
111
+ display: grid;
112
+ gap: 3px;
113
+ min-width: 0;
114
+ }
115
+
116
+ .model-banner span,
117
+ .model-meta dt {
118
+ color: #64748b;
119
+ font-size: 12px;
120
+ font-weight: 800;
121
+ }
122
+
123
+ .model-banner strong {
124
+ overflow-wrap: anywhere;
125
+ }
126
+
127
+ .model-banner p {
128
+ color: #5b6575;
129
+ margin: 0;
130
+ overflow-wrap: anywhere;
131
+ text-align: right;
132
+ }
133
+
134
+ .run-status div {
135
+ display: grid;
136
+ gap: 4px;
137
+ min-width: 0;
138
+ }
139
+
140
+ .run-status span,
141
+ .surface-header span {
142
+ color: #64748b;
143
+ font-size: 12px;
144
+ font-weight: 750;
145
+ }
146
+
147
+ .run-status strong {
148
+ overflow-wrap: anywhere;
149
+ }
150
+
151
+ .run-status p {
152
+ color: #b42318;
153
+ grid-column: 1 / -1;
154
+ margin: 0;
155
+ }
156
+
157
+ .chat-workspace {
158
+ background: var(--bg-workspace);
159
+ display: flex;
160
+ flex-direction: column;
161
+ gap: 0;
162
+ height: 100vh;
163
+ min-height: 0;
164
+ overflow: hidden;
165
+ }
166
+
167
+ .chat-topbar {
168
+ align-items: center;
169
+ border-bottom: 1px solid var(--border-subtle);
170
+ display: flex;
171
+ flex-shrink: 0;
172
+ gap: 16px;
173
+ justify-content: space-between;
174
+ min-height: 48px;
175
+ padding: 8px 20px;
176
+ }
177
+
178
+ .chat-topbar-start {
179
+ align-items: center;
180
+ display: flex;
181
+ flex: 1;
182
+ justify-content: flex-start;
183
+ min-width: 0;
184
+ }
185
+
186
+ .chat-topbar-end {
187
+ align-items: center;
188
+ display: flex;
189
+ flex-shrink: 0;
190
+ gap: 10px;
191
+ justify-content: flex-end;
192
+ margin-left: auto;
193
+ }
194
+
195
+ .chat-topbar-model {
196
+ color: var(--text-muted);
197
+ font-size: 13px;
198
+ max-width: 180px;
199
+ overflow: hidden;
200
+ text-overflow: ellipsis;
201
+ white-space: nowrap;
202
+ }
203
+
204
+ .chat-topbar-status-dot {
205
+ border-radius: 50%;
206
+ flex-shrink: 0;
207
+ height: 8px;
208
+ width: 8px;
209
+ }
210
+
211
+ .chat-topbar-status-dot.ok {
212
+ background: #22c55e;
213
+ }
214
+
215
+ .chat-topbar-status-dot.warn {
216
+ background: #ef4444;
217
+ }
218
+
219
+ .chat-topbar-status-dot.idle {
220
+ background: #f59e0b;
221
+ }
222
+
223
+ .chat-topbar-debug {
224
+ background: #fef3c7;
225
+ border-radius: 6px;
226
+ color: #92400e;
227
+ font-size: 11px;
228
+ font-weight: 700;
229
+ padding: 2px 6px;
230
+ }
231
+
232
+ .chat-topbar-abort {
233
+ background: transparent;
234
+ border: 1px solid var(--border-strong);
235
+ border-radius: 999px;
236
+ color: var(--text-primary);
237
+ cursor: pointer;
238
+ font-size: 13px;
239
+ font-weight: 650;
240
+ padding: 5px 12px;
241
+ }
242
+
243
+ .chat-topbar-abort:hover {
244
+ background: var(--bg-hover);
245
+ }
246
+
247
+ .chat-debug-panels {
248
+ border-bottom: 1px solid var(--border-subtle);
249
+ display: grid;
250
+ gap: 8px;
251
+ padding: 10px 20px 12px;
252
+ }
253
+
254
+ .chat-main {
255
+ display: flex;
256
+ flex: 1;
257
+ flex-direction: column;
258
+ min-height: 0;
259
+ overflow: hidden;
260
+ position: relative;
261
+ }
262
+
263
+ .chat-runtime-selector {
264
+ max-width: min(280px, 42vw);
265
+ position: relative;
266
+ }
267
+
268
+ .chat-agent-identity {
269
+ align-items: center;
270
+ background: var(--bg-page);
271
+ border: 1px solid var(--border-subtle);
272
+ border-radius: 10px;
273
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
274
+ cursor: default;
275
+ display: inline-flex;
276
+ gap: 8px;
277
+ height: 34px;
278
+ max-width: min(280px, 42vw);
279
+ padding: 0 10px 0 8px;
280
+ text-align: left;
281
+ }
282
+
283
+ .chat-agent-identity-icon {
284
+ color: var(--text-primary);
285
+ flex-shrink: 0;
286
+ }
287
+
288
+ .chat-agent-identity-label {
289
+ color: var(--text-primary);
290
+ flex: 1;
291
+ font-size: 14px;
292
+ font-weight: 650;
293
+ line-height: 1.2;
294
+ min-width: 0;
295
+ overflow: hidden;
296
+ text-overflow: ellipsis;
297
+ white-space: nowrap;
298
+ }
299
+
300
+ .chat-agent-identity-chevron {
301
+ color: var(--text-muted);
302
+ flex-shrink: 0;
303
+ height: 16px;
304
+ width: 16px;
305
+ }
306
+
307
+ .chat-runtime-selector-trigger {
308
+ align-items: center;
309
+ background: var(--bg-page);
310
+ border: 1px solid var(--border-subtle);
311
+ border-radius: 10px;
312
+ box-shadow: 0 1px 2px rgba(15, 23, 42, 0.05);
313
+ cursor: pointer;
314
+ display: inline-flex;
315
+ gap: 8px;
316
+ height: 34px;
317
+ max-width: 100%;
318
+ padding: 0 10px 0 8px;
319
+ text-align: left;
320
+ }
321
+
322
+ .chat-runtime-selector-trigger:hover {
323
+ border-color: #c9c9d6;
324
+ }
325
+
326
+ .chat-runtime-icon {
327
+ color: var(--text-primary);
328
+ flex-shrink: 0;
329
+ }
330
+
331
+ .chat-runtime-selector-label,
332
+ .chat-runtime-option-label {
333
+ color: var(--text-primary);
334
+ flex: 1;
335
+ font-size: 14px;
336
+ font-weight: 650;
337
+ line-height: 1.2;
338
+ min-width: 0;
339
+ overflow: hidden;
340
+ text-overflow: ellipsis;
341
+ white-space: nowrap;
342
+ }
343
+
344
+ .chat-runtime-selector-chevron {
345
+ color: var(--text-muted);
346
+ flex-shrink: 0;
347
+ height: 16px;
348
+ width: 16px;
349
+ }
350
+
351
+ .chat-runtime-selector-menu {
352
+ background: var(--bg-page);
353
+ border: 1px solid var(--border-strong);
354
+ border-radius: 10px;
355
+ box-shadow: 0 12px 36px rgba(15, 23, 42, 0.14);
356
+ display: grid;
357
+ gap: 4px;
358
+ left: 0;
359
+ list-style: none;
360
+ margin: 8px 0 0;
361
+ min-width: 100%;
362
+ padding: 6px;
363
+ position: absolute;
364
+ top: 100%;
365
+ width: max(100%, 240px);
366
+ z-index: 20;
367
+ }
368
+
369
+ .chat-runtime-option {
370
+ align-items: center;
371
+ background: transparent;
372
+ border: 0;
373
+ border-radius: 8px;
374
+ cursor: pointer;
375
+ display: flex;
376
+ gap: 8px;
377
+ min-height: 36px;
378
+ padding: 0 10px;
379
+ text-align: left;
380
+ width: 100%;
381
+ }
382
+
383
+ .chat-runtime-option:hover,
384
+ .chat-runtime-option.active {
385
+ background: var(--bg-hover);
386
+ }
387
+
388
+ .chat-column {
389
+ margin: 0 auto;
390
+ max-width: var(--chat-column-width);
391
+ width: 100%;
392
+ }
393
+
394
+ .chat-transcript-wrap {
395
+ flex: 1;
396
+ min-height: 0;
397
+ overflow: hidden;
398
+ position: relative;
399
+ }
400
+
401
+ .chat-transcript {
402
+ display: flex;
403
+ flex-direction: column;
404
+ height: 100%;
405
+ min-height: 0;
406
+ overflow: auto;
407
+ padding: 24px 20px 12px;
408
+ scroll-behavior: smooth;
409
+ }
410
+
411
+ .chat-transcript > .chat-column {
412
+ display: flex;
413
+ flex-direction: column;
414
+ gap: 24px;
415
+ }
416
+
417
+ .empty-chat,
418
+ .empty-state {
419
+ color: #5b6575;
420
+ }
421
+
422
+ .empty-chat {
423
+ margin: auto;
424
+ max-width: 480px;
425
+ padding: 48px 0;
426
+ text-align: center;
427
+ }
428
+
429
+ .suggestion-chips {
430
+ display: flex;
431
+ flex-wrap: wrap;
432
+ gap: 8px;
433
+ justify-content: center;
434
+ margin-top: 20px;
435
+ }
436
+
437
+ .suggestion-chip {
438
+ background: var(--bg-page);
439
+ border: 1px solid var(--border-strong);
440
+ border-radius: 999px;
441
+ color: var(--text-primary);
442
+ cursor: pointer;
443
+ font-size: 13px;
444
+ padding: 8px 14px;
445
+ }
446
+
447
+ .suggestion-chip:hover {
448
+ background: var(--bg-hover);
449
+ }
450
+
451
+ .scroll-to-bottom {
452
+ background: var(--bg-page);
453
+ border: 1px solid var(--border-strong);
454
+ border-radius: 50%;
455
+ bottom: 120px;
456
+ box-shadow: var(--shadow-composer);
457
+ color: var(--text-primary);
458
+ cursor: pointer;
459
+ font-size: 16px;
460
+ height: 36px;
461
+ line-height: 1;
462
+ position: absolute;
463
+ right: 24px;
464
+ width: 36px;
465
+ z-index: 2;
466
+ }
467
+
468
+ .scroll-to-bottom:hover {
469
+ background: var(--bg-hover);
470
+ }
471
+
472
+ .empty-chat h2,
473
+ .empty-state h1 {
474
+ color: #1f2937;
475
+ margin: 0 0 8px;
476
+ }
477
+
478
+ .empty-chat h2 {
479
+ font-size: 20px;
480
+ }
481
+
482
+ .empty-chat p,
483
+ .empty-state p {
484
+ margin: 0;
485
+ }
486
+
487
+ .chat-home {
488
+ align-items: stretch;
489
+ background: transparent;
490
+ display: flex;
491
+ flex-direction: column;
492
+ height: 100vh;
493
+ min-height: 0;
494
+ overflow: auto;
495
+ padding: 0;
496
+ position: relative;
497
+ }
498
+
499
+ .chat-home > .chat-topbar {
500
+ align-self: stretch;
501
+ flex-shrink: 0;
502
+ width: 100%;
503
+ }
504
+
505
+ .chat-home-center {
506
+ align-items: center;
507
+ align-self: center;
508
+ display: flex;
509
+ flex: 1;
510
+ flex-direction: column;
511
+ gap: 16px;
512
+ justify-content: flex-start;
513
+ margin: 0 auto;
514
+ max-width: 42rem;
515
+ padding: clamp(40px, 9vh, 88px) 20px 48px;
516
+ text-align: center;
517
+ width: 100%;
518
+ }
519
+
520
+ .chat-home-avatar {
521
+ border-radius: 50%;
522
+ box-shadow: 0 10px 30px rgba(15, 23, 42, 0.08);
523
+ display: block;
524
+ height: 88px;
525
+ object-fit: cover;
526
+ width: 88px;
527
+ }
528
+
529
+ .chat-home-title {
530
+ color: var(--text-primary);
531
+ font-family: "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, serif;
532
+ font-size: clamp(1.75rem, 4vw, 2.25rem);
533
+ font-weight: 500;
534
+ letter-spacing: -0.02em;
535
+ line-height: 1.2;
536
+ margin: -6px 0 0;
537
+ }
538
+
539
+ .chat-home-mode-tabs {
540
+ background: #ececf1;
541
+ border-radius: 999px;
542
+ display: inline-flex;
543
+ gap: 4px;
544
+ padding: 4px;
545
+ }
546
+
547
+ .chat-home-mode-tab {
548
+ background: transparent;
549
+ border: 0;
550
+ border-radius: 999px;
551
+ color: var(--text-muted);
552
+ cursor: pointer;
553
+ font-size: 14px;
554
+ font-weight: 600;
555
+ padding: 8px 14px;
556
+ transition: background 120ms ease, color 120ms ease;
557
+ }
558
+
559
+ .chat-home-mode-tab:hover:not(:disabled) {
560
+ color: var(--text-primary);
561
+ }
562
+
563
+ .chat-home-mode-tab.active {
564
+ background: #2563eb;
565
+ color: #ffffff;
566
+ }
567
+
568
+ .chat-home-mode-tab:disabled {
569
+ cursor: not-allowed;
570
+ opacity: 0.55;
571
+ }
572
+
573
+ .chat-home-composer {
574
+ width: 100%;
575
+ }
576
+
577
+ .chat-composer-wrap-hero {
578
+ background: transparent;
579
+ padding: 0;
580
+ }
581
+
582
+ .chat-composer-wrap-hero .chat-column-hero {
583
+ gap: 10px;
584
+ max-width: none;
585
+ }
586
+
587
+ .message-composer-hero {
588
+ align-items: stretch;
589
+ background: var(--bg-page);
590
+ border-radius: 24px;
591
+ box-shadow: var(--shadow-composer);
592
+ flex-direction: column;
593
+ gap: 0;
594
+ min-height: 148px;
595
+ padding: 18px 18px 14px;
596
+ position: relative;
597
+ }
598
+
599
+ .message-composer-hero textarea {
600
+ flex: 1;
601
+ font-size: 16px;
602
+ line-height: 1.5;
603
+ min-height: 72px;
604
+ padding: 0 4px 40px;
605
+ resize: none;
606
+ text-align: left;
607
+ }
608
+
609
+ .message-composer-hero .composer-photo-btn {
610
+ bottom: 14px;
611
+ left: 14px;
612
+ position: absolute;
613
+ }
614
+
615
+ .message-composer-hero .composer-send-btn {
616
+ bottom: 14px;
617
+ position: absolute;
618
+ right: 14px;
619
+ }
620
+
621
+ .empty-state-page {
622
+ align-items: center;
623
+ display: flex;
624
+ height: 100vh;
625
+ justify-content: center;
626
+ }
627
+
628
+ .empty-state {
629
+ align-items: center;
630
+ display: flex;
631
+ justify-content: center;
632
+ text-align: center;
633
+ }
634
+
635
+ .empty-state div {
636
+ display: grid;
637
+ gap: 14px;
638
+ max-width: 520px;
639
+ }
640
+
641
+ .chat-message {
642
+ display: flex;
643
+ gap: 12px;
644
+ max-width: 100%;
645
+ min-width: 0;
646
+ position: relative;
647
+ }
648
+
649
+ .chat-transcript-item {
650
+ display: grid;
651
+ gap: 8px;
652
+ }
653
+
654
+ .agent-activity-timeline {
655
+ display: grid;
656
+ gap: 8px;
657
+ margin: 0 0 6px;
658
+ max-width: 100%;
659
+ padding-left: 2px;
660
+ }
661
+
662
+ .agent-progress-row {
663
+ align-items: center;
664
+ color: var(--text-muted);
665
+ display: flex;
666
+ font-size: 13px;
667
+ gap: 9px;
668
+ line-height: 1.35;
669
+ min-width: 0;
670
+ }
671
+
672
+ .agent-progress-spinner {
673
+ border: 2px solid rgba(37, 99, 235, 0.18);
674
+ border-top-color: #2563eb;
675
+ border-radius: 50%;
676
+ flex: 0 0 auto;
677
+ height: 12px;
678
+ width: 12px;
679
+ }
680
+
681
+ .agent-progress-row.running .agent-progress-spinner {
682
+ animation: agent-progress-spin 0.9s linear infinite;
683
+ }
684
+
685
+ .agent-progress-row.completed .agent-progress-spinner {
686
+ border-color: #10a37f;
687
+ }
688
+
689
+ .agent-progress-row.failed .agent-progress-spinner {
690
+ border-color: #dc2626;
691
+ }
692
+
693
+ .agent-progress-copy {
694
+ display: grid;
695
+ flex: 1 1 auto;
696
+ gap: 2px;
697
+ min-width: 0;
698
+ }
699
+
700
+ .agent-progress-copy strong {
701
+ color: #374151;
702
+ font-size: 13px;
703
+ font-weight: 700;
704
+ overflow-wrap: anywhere;
705
+ }
706
+
707
+ .agent-progress-copy small {
708
+ color: var(--text-muted);
709
+ font-size: 12px;
710
+ font-weight: 600;
711
+ overflow-wrap: anywhere;
712
+ }
713
+
714
+ .agent-activity-list {
715
+ display: grid;
716
+ gap: 5px;
717
+ }
718
+
719
+ .agent-reasoning-panel {
720
+ display: grid;
721
+ gap: 5px;
722
+ min-width: 0;
723
+ }
724
+
725
+ .agent-reasoning-toggle {
726
+ align-items: center;
727
+ background: transparent;
728
+ border: 0;
729
+ color: var(--text-muted);
730
+ cursor: pointer;
731
+ display: inline-flex;
732
+ font: inherit;
733
+ gap: 6px;
734
+ justify-content: flex-start;
735
+ line-height: 1.35;
736
+ min-width: 0;
737
+ padding: 0;
738
+ text-align: left;
739
+ width: fit-content;
740
+ }
741
+
742
+ .agent-reasoning-toggle strong {
743
+ color: #4b5563;
744
+ font-size: 12px;
745
+ font-weight: 700;
746
+ }
747
+
748
+ .agent-reasoning-toggle span {
749
+ color: #667085;
750
+ font-size: 12px;
751
+ font-weight: 700;
752
+ }
753
+
754
+ .agent-reasoning-chevron {
755
+ color: #98a2b3;
756
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
757
+ width: 10px;
758
+ }
759
+
760
+ .agent-reasoning-lines {
761
+ display: grid;
762
+ gap: 5px;
763
+ }
764
+
765
+ .agent-reasoning-line {
766
+ align-items: baseline;
767
+ color: #4b5563;
768
+ column-gap: 8px;
769
+ display: grid;
770
+ font-size: 12px;
771
+ grid-template-columns: 10px minmax(0, 1fr);
772
+ line-height: 1.35;
773
+ min-width: 0;
774
+ }
775
+
776
+ .agent-reasoning-line span:last-child {
777
+ overflow-wrap: anywhere;
778
+ }
779
+
780
+ .agent-activity {
781
+ align-items: baseline;
782
+ color: var(--text-muted);
783
+ column-gap: 8px;
784
+ display: grid;
785
+ font-size: 12px;
786
+ grid-template-columns: 10px minmax(44px, max-content) minmax(0, 1fr) max-content;
787
+ line-height: 1.35;
788
+ min-width: 0;
789
+ }
790
+
791
+ .agent-activity-rail {
792
+ border-left: 2px solid #d1d5db;
793
+ height: 14px;
794
+ transform: translateX(4px) translateY(2px);
795
+ width: 10px;
796
+ }
797
+
798
+ .agent-activity.running .agent-activity-rail {
799
+ border-left-color: #2563eb;
800
+ }
801
+
802
+ .agent-activity.completed .agent-activity-rail {
803
+ border-left-color: #10a37f;
804
+ }
805
+
806
+ .agent-activity.failed .agent-activity-rail {
807
+ border-left-color: #dc2626;
808
+ }
809
+
810
+ .agent-activity.cancelled .agent-activity-rail {
811
+ border-left-color: #64748b;
812
+ }
813
+
814
+ .agent-activity-kind {
815
+ color: #667085;
816
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
817
+ font-size: 12px;
818
+ font-weight: 700;
819
+ white-space: nowrap;
820
+ }
821
+
822
+ .agent-activity-copy {
823
+ display: grid;
824
+ gap: 2px;
825
+ min-width: 0;
826
+ }
827
+
828
+ .agent-activity-copy strong {
829
+ color: #4b5563;
830
+ font-size: 12px;
831
+ font-weight: 700;
832
+ overflow-wrap: anywhere;
833
+ }
834
+
835
+ .agent-activity-copy small {
836
+ color: var(--text-muted);
837
+ font-size: 12px;
838
+ font-weight: 600;
839
+ overflow-wrap: anywhere;
840
+ }
841
+
842
+ .agent-activity-duration {
843
+ color: #98a2b3;
844
+ font-family: ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
845
+ font-size: 11px;
846
+ font-weight: 700;
847
+ white-space: nowrap;
848
+ }
849
+
850
+ .agent-activity-error {
851
+ color: #b42318;
852
+ grid-column: 3 / -1;
853
+ font-size: 12px;
854
+ font-weight: 600;
855
+ margin: 0;
856
+ }
857
+
858
+ @keyframes agent-progress-spin {
859
+ to {
860
+ transform: rotate(360deg);
861
+ }
862
+ }
863
+
864
+ .chat-message-avatar {
865
+ align-items: center;
866
+ background: #10a37f;
867
+ border-radius: 50%;
868
+ color: #ffffff;
869
+ display: flex;
870
+ flex-shrink: 0;
871
+ font-size: 13px;
872
+ font-weight: 800;
873
+ height: 28px;
874
+ justify-content: center;
875
+ margin-top: 2px;
876
+ width: 28px;
877
+ }
878
+
879
+ .chat-message-body {
880
+ flex: 1;
881
+ min-width: 0;
882
+ }
883
+
884
+ .chat-message-meta {
885
+ color: var(--text-muted);
886
+ display: block;
887
+ font-size: 12px;
888
+ margin-top: 8px;
889
+ }
890
+
891
+ .chat-message-meta.error {
892
+ color: #b42318;
893
+ }
894
+
895
+ .chat-message p {
896
+ line-height: 1.6;
897
+ margin: 0;
898
+ white-space: pre-wrap;
899
+ }
900
+
901
+ .message-markdown {
902
+ line-height: 1.65;
903
+ overflow-wrap: break-word;
904
+ word-break: normal;
905
+ }
906
+
907
+ .message-markdown p,
908
+ .message-markdown ul,
909
+ .message-markdown ol,
910
+ .message-markdown pre,
911
+ .message-markdown blockquote {
912
+ margin: 0 0 10px;
913
+ }
914
+
915
+ .message-markdown > :last-child {
916
+ margin-bottom: 0;
917
+ }
918
+
919
+ .message-markdown code {
920
+ background: #e5e7eb;
921
+ border-radius: 4px;
922
+ color: #1f2937;
923
+ font-size: 0.92em;
924
+ padding: 1px 4px;
925
+ }
926
+
927
+ .message-markdown pre {
928
+ background: #111827;
929
+ border-radius: 7px;
930
+ color: #f8fafc;
931
+ max-width: 100%;
932
+ overflow-x: auto;
933
+ padding: 10px 12px;
934
+ }
935
+
936
+ .message-markdown pre code {
937
+ background: transparent;
938
+ color: inherit;
939
+ padding: 0;
940
+ }
941
+
942
+ .message-markdown .katex {
943
+ font-size: 1.05em;
944
+ line-height: 1.35;
945
+ }
946
+
947
+ .message-markdown .katex,
948
+ .message-markdown .katex * {
949
+ overflow-wrap: normal;
950
+ white-space: nowrap;
951
+ word-break: normal;
952
+ }
953
+
954
+ .message-markdown .katex-display {
955
+ margin: 10px 0;
956
+ max-width: 100%;
957
+ overflow-x: auto;
958
+ overflow-y: hidden;
959
+ padding: 2px 0 6px;
960
+ text-align: left;
961
+ }
962
+
963
+ .message-markdown .katex-display > .katex {
964
+ display: inline-block;
965
+ min-width: max-content;
966
+ }
967
+
968
+ .message-images {
969
+ display: flex;
970
+ flex-wrap: wrap;
971
+ gap: 8px;
972
+ margin-top: 10px;
973
+ }
974
+
975
+ .message-images img {
976
+ border: 1px solid #cbd5e1;
977
+ border-radius: 6px;
978
+ max-height: 220px;
979
+ max-width: min(320px, 100%);
980
+ object-fit: contain;
981
+ }
982
+
983
+ .chat-message small {
984
+ color: #64748b;
985
+ display: block;
986
+ font-size: 12px;
987
+ font-weight: 700;
988
+ margin-top: 8px;
989
+ }
990
+
991
+ .chat-message.user {
992
+ flex-direction: row-reverse;
993
+ margin-left: auto;
994
+ max-width: 85%;
995
+ width: fit-content;
996
+ }
997
+
998
+ .chat-message.user .chat-message-body {
999
+ background: var(--bg-muted);
1000
+ border-radius: var(--radius-message);
1001
+ padding: 12px 16px;
1002
+ }
1003
+
1004
+ .chat-message.assistant {
1005
+ align-items: flex-start;
1006
+ width: 100%;
1007
+ }
1008
+
1009
+ .chat-message.assistant .chat-message-body {
1010
+ padding: 0;
1011
+ }
1012
+
1013
+ .chat-message.streaming .chat-message-body {
1014
+ opacity: 0.92;
1015
+ }
1016
+
1017
+ .chat-message.error .chat-message-body {
1018
+ background: #fff1f2;
1019
+ border-radius: var(--radius-message);
1020
+ padding: 12px 16px;
1021
+ }
1022
+
1023
+ .message-actions {
1024
+ bottom: 0;
1025
+ opacity: 0;
1026
+ position: absolute;
1027
+ right: 0;
1028
+ transition: opacity 0.15s ease;
1029
+ }
1030
+
1031
+ .chat-message.assistant:hover .message-actions,
1032
+ .chat-message.assistant:focus-within .message-actions {
1033
+ opacity: 1;
1034
+ }
1035
+
1036
+ .message-action-btn {
1037
+ background: var(--bg-page);
1038
+ border: 1px solid var(--border-strong);
1039
+ border-radius: 8px;
1040
+ color: var(--text-muted);
1041
+ cursor: pointer;
1042
+ font-size: 12px;
1043
+ padding: 4px 8px;
1044
+ }
1045
+
1046
+ .message-action-btn:hover {
1047
+ background: var(--bg-hover);
1048
+ color: var(--text-primary);
1049
+ }
1050
+
1051
+ .chat-composer-wrap {
1052
+ background: linear-gradient(180deg, rgba(245, 245, 247, 0) 0%, var(--bg-workspace) 24%);
1053
+ flex-shrink: 0;
1054
+ padding: 0 20px 16px;
1055
+ }
1056
+
1057
+ .chat-composer-wrap .chat-column {
1058
+ display: grid;
1059
+ gap: 8px;
1060
+ }
1061
+
1062
+ .message-composer {
1063
+ align-items: flex-end;
1064
+ background: var(--bg-page);
1065
+ border: 1px solid var(--border-strong);
1066
+ border-radius: var(--radius-pill);
1067
+ box-shadow: var(--shadow-composer);
1068
+ display: flex;
1069
+ gap: 4px;
1070
+ padding: 8px 10px 8px 6px;
1071
+ }
1072
+
1073
+ .composer-icon-btn,
1074
+ .composer-send-btn {
1075
+ align-items: center;
1076
+ background: transparent;
1077
+ border: 0;
1078
+ border-radius: 50%;
1079
+ color: var(--text-muted);
1080
+ cursor: pointer;
1081
+ display: inline-flex;
1082
+ flex-shrink: 0;
1083
+ height: 36px;
1084
+ justify-content: center;
1085
+ width: 36px;
1086
+ }
1087
+
1088
+ .composer-photo-btn {
1089
+ color: var(--text-primary);
1090
+ }
1091
+
1092
+ .composer-icon-btn:hover,
1093
+ .composer-send-btn:hover:not(:disabled) {
1094
+ background: var(--bg-hover);
1095
+ color: var(--text-primary);
1096
+ }
1097
+
1098
+ .composer-send-btn {
1099
+ background: var(--text-primary);
1100
+ color: #ffffff;
1101
+ }
1102
+
1103
+ .composer-send-btn svg {
1104
+ stroke: #ffffff;
1105
+ }
1106
+
1107
+ .composer-send-btn:disabled {
1108
+ background: var(--bg-hover);
1109
+ color: var(--text-muted);
1110
+ cursor: default;
1111
+ opacity: 1;
1112
+ }
1113
+
1114
+ .composer-disclaimer {
1115
+ color: var(--text-muted);
1116
+ font-size: 12px;
1117
+ margin: 0;
1118
+ text-align: center;
1119
+ }
1120
+
1121
+ .file-input {
1122
+ display: none;
1123
+ }
1124
+
1125
+ .composer-attachments,
1126
+ .composer-error {
1127
+ grid-column: 1 / -1;
1128
+ }
1129
+
1130
+ .composer-attachments {
1131
+ display: flex;
1132
+ flex-wrap: wrap;
1133
+ gap: 10px;
1134
+ }
1135
+
1136
+ .composer-attachments figure {
1137
+ align-items: center;
1138
+ border: 1px solid #d7dee8;
1139
+ border-radius: 8px;
1140
+ display: grid;
1141
+ gap: 6px;
1142
+ grid-template-columns: 64px minmax(0, 1fr) auto;
1143
+ margin: 0;
1144
+ max-width: 420px;
1145
+ padding: 6px;
1146
+ }
1147
+
1148
+ .composer-attachments img {
1149
+ border-radius: 6px;
1150
+ height: 48px;
1151
+ object-fit: cover;
1152
+ width: 64px;
1153
+ }
1154
+
1155
+ .composer-attachments figcaption {
1156
+ color: #334155;
1157
+ font-size: 13px;
1158
+ font-weight: 700;
1159
+ overflow: hidden;
1160
+ text-overflow: ellipsis;
1161
+ white-space: nowrap;
1162
+ }
1163
+
1164
+ .composer-attachments button {
1165
+ background: transparent;
1166
+ border: 0;
1167
+ color: #b42318;
1168
+ cursor: pointer;
1169
+ font-weight: 750;
1170
+ }
1171
+
1172
+ .composer-error {
1173
+ color: #b42318;
1174
+ margin: 0;
1175
+ }
1176
+
1177
+ .message-composer textarea,
1178
+ .settings-grid input {
1179
+ border: 1px solid #c7d0dc;
1180
+ border-radius: 6px;
1181
+ color: #1f2937;
1182
+ min-width: 0;
1183
+ padding: 10px;
1184
+ }
1185
+
1186
+ .message-composer textarea {
1187
+ background: transparent;
1188
+ border: 0;
1189
+ field-sizing: content;
1190
+ line-height: 1.5;
1191
+ max-height: 200px;
1192
+ min-height: 24px;
1193
+ padding: 8px 4px;
1194
+ resize: none;
1195
+ width: 100%;
1196
+ }
1197
+
1198
+ .message-composer textarea:focus {
1199
+ outline: none;
1200
+ }
1201
+
1202
+ .primary-action,
1203
+ .secondary-action {
1204
+ border-radius: 6px;
1205
+ cursor: pointer;
1206
+ font-weight: 750;
1207
+ min-height: 38px;
1208
+ padding: 9px 12px;
1209
+ }
1210
+
1211
+ .primary-action {
1212
+ background: #155e75;
1213
+ color: #ffffff;
1214
+ }
1215
+
1216
+ .secondary-action {
1217
+ background: #edf1f5;
1218
+ color: #27313f;
1219
+ }
1220
+
1221
+ .primary-action:disabled,
1222
+ .secondary-action:disabled {
1223
+ cursor: default;
1224
+ opacity: 0.55;
1225
+ }
1226
+
1227
+ .surface {
1228
+ min-height: 180px;
1229
+ padding: 14px;
1230
+ }
1231
+
1232
+ .surface-header {
1233
+ align-items: center;
1234
+ display: flex;
1235
+ justify-content: space-between;
1236
+ margin-bottom: 12px;
1237
+ }
1238
+
1239
+ .surface h2 {
1240
+ font-size: 16px;
1241
+ margin: 0;
1242
+ }
1243
+
1244
+ .empty {
1245
+ color: #64748b;
1246
+ }
1247
+
1248
+ .list-workspace {
1249
+ display: flex;
1250
+ flex-direction: column;
1251
+ height: 100vh;
1252
+ min-height: 0;
1253
+ overflow: hidden;
1254
+ }
1255
+
1256
+ .page-topbar {
1257
+ align-items: center;
1258
+ border-bottom: 1px solid var(--border-subtle);
1259
+ display: flex;
1260
+ flex-shrink: 0;
1261
+ justify-content: space-between;
1262
+ padding: 14px 24px;
1263
+ }
1264
+
1265
+ .page-topbar-title {
1266
+ font-size: 18px;
1267
+ font-weight: 650;
1268
+ margin: 0;
1269
+ }
1270
+
1271
+ .list-column {
1272
+ flex: 1;
1273
+ min-height: 0;
1274
+ overflow: auto;
1275
+ padding: 20px;
1276
+ }
1277
+
1278
+ .history-list {
1279
+ display: grid;
1280
+ gap: 4px;
1281
+ }
1282
+
1283
+ .history-row {
1284
+ background: transparent;
1285
+ border: 0;
1286
+ border-radius: 10px;
1287
+ color: var(--text-primary);
1288
+ cursor: pointer;
1289
+ display: grid;
1290
+ gap: 4px;
1291
+ padding: 12px 14px;
1292
+ text-align: left;
1293
+ width: 100%;
1294
+ }
1295
+
1296
+ .history-row:hover {
1297
+ background: var(--bg-hover);
1298
+ }
1299
+
1300
+ .list-surface {
1301
+ align-content: start;
1302
+ display: grid;
1303
+ gap: 8px;
1304
+ max-height: calc(100vh - 140px);
1305
+ overflow: auto;
1306
+ padding: 12px;
1307
+ }
1308
+
1309
+ .history-row span,
1310
+ .history-row small,
1311
+ .muted {
1312
+ color: #64748b;
1313
+ }
1314
+
1315
+ @media (max-width: 760px) {
1316
+ .workspace.chat-layout,
1317
+ .workspace.list-layout {
1318
+ padding: 0;
1319
+ }
1320
+
1321
+ .cathygo-chat-panel {
1322
+ height: auto;
1323
+ min-height: calc(100vh - 36px);
1324
+ overflow: visible;
1325
+ }
1326
+
1327
+ .model-banner {
1328
+ align-items: flex-start;
1329
+ flex-direction: column;
1330
+ }
1331
+
1332
+ .model-banner p {
1333
+ text-align: left;
1334
+ }
1335
+
1336
+ .chat-topbar {
1337
+ gap: 10px;
1338
+ padding: 8px 12px;
1339
+ }
1340
+
1341
+ .chat-agent-identity {
1342
+ max-width: min(220px, 56vw);
1343
+ }
1344
+
1345
+ .chat-topbar-model {
1346
+ max-width: 96px;
1347
+ }
1348
+
1349
+ .chat-transcript {
1350
+ padding: 18px 12px 10px;
1351
+ }
1352
+
1353
+ .chat-home-center {
1354
+ padding: 34px 14px 34px;
1355
+ }
1356
+
1357
+ .chat-home-mode-tabs {
1358
+ max-width: 100%;
1359
+ overflow-x: auto;
1360
+ }
1361
+
1362
+ .chat-composer-wrap {
1363
+ padding: 0 12px 12px;
1364
+ }
1365
+
1366
+ .composer-attachments figure {
1367
+ grid-template-columns: 56px minmax(0, 1fr);
1368
+ }
1369
+
1370
+ .composer-attachments button {
1371
+ grid-column: 1 / -1;
1372
+ justify-self: start;
1373
+ }
1374
+
1375
+ .agent-activity {
1376
+ grid-template-columns: 10px minmax(40px, max-content) minmax(0, 1fr);
1377
+ }
1378
+
1379
+ .agent-activity-duration {
1380
+ grid-column: 3;
1381
+ }
1382
+
1383
+ .page-topbar {
1384
+ padding: 12px 16px;
1385
+ }
1386
+
1387
+ .list-column {
1388
+ padding: 14px;
1389
+ }
1390
+
1391
+ .chat-message.user {
1392
+ max-width: 100%;
1393
+ }
1394
+ }