dsh-side-chat-plus 0.4.0-alpha.2 → 0.4.1

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.
@@ -1,1051 +1,1051 @@
1
- /* dsh-side-chat client styles. Per the DSH web-styling rules every visual
2
- value rides the theme: --dsw-alias-* semantic tokens for colors and
3
- --dsw-font-family for typography. No static palette values, no color
4
- literals — light/dark adaptation is the theme package's job. */
5
-
6
- /* ---- Floating selection menu ---- */
7
- .selectionMenu {
8
- position: fixed;
9
- z-index: 2147483000;
10
- transform: translate(-50%, 0);
11
- display: flex;
12
- gap: 4px;
13
- background: var(--dsw-alias-bg-overlay);
14
- border: 1px solid var(--dsw-alias-border-l3);
15
- border-radius: 10px;
16
- padding: 4px;
17
- box-shadow: 0 4px 16px var(--dsw-alias-bg-mask-2);
18
- pointer-events: auto;
19
- }
20
-
21
- .selectionButton {
22
- font-family: var(--dsw-font-family);
23
- font-size: 13px;
24
- line-height: 20px;
25
- color: var(--dsw-alias-label-primary);
26
- background: transparent;
27
- border: none;
28
- border-radius: 7px;
29
- padding: 6px 10px;
30
- cursor: pointer;
31
- white-space: nowrap;
32
- }
33
-
34
- .selectionButton:hover:not(:disabled) {
35
- background: var(--dsw-alias-interactive-bg-hover);
36
- }
37
-
38
- .selectionButton:disabled {
39
- cursor: default;
40
- opacity: 0.55;
41
- }
42
-
43
- /* ---- Right-side panel ---- */
44
- .panel {
45
- position: fixed;
46
- top: 0;
47
- right: 0;
48
- bottom: 0;
49
- width: var(--dsh-subchat-width, 360px);
50
- z-index: 2147482990;
51
- display: flex;
52
- flex-direction: column;
53
- background: var(--dsw-specific-sidebar-fill);
54
- border-left: 1px solid var(--dsw-alias-border-l2);
55
- color: var(--dsw-alias-label-primary);
56
- font-family: var(--dsw-font-family);
57
- font-size: 14px;
58
- pointer-events: auto;
59
- transition: transform var(--ds-transition-duration-slow) var(--ds-ease-in-out);
60
- }
61
-
62
- /* Embedded in the built-in right sidebar (dock mode): fill the tab pane,
63
- drop the floating chrome (fixed positioning, resize rail, own border). */
64
- .panelEmbedded {
65
- position: absolute;
66
- inset: 0;
67
- width: 100%;
68
- border-left: none;
69
- border-radius: 0;
70
- }
71
-
72
- /* A built-in sidebar overlay (fullscreen preview / floated panel) owns the
73
- viewport: slide this panel out of the way; the layout margin is dropped by
74
- the matching width effect so the main column reclaims the space. */
75
- .panelConflictHidden {
76
- transform: translateX(calc(100% + 24px));
77
- pointer-events: none;
78
- }
79
-
80
- .panelResize {
81
- position: absolute;
82
- left: -4px;
83
- top: 0;
84
- bottom: 0;
85
- width: 8px;
86
- cursor: col-resize;
87
- z-index: 2;
88
- touch-action: none;
89
- }
90
-
91
- .panelHeader {
92
- flex: none;
93
- display: flex;
94
- align-items: center;
95
- justify-content: space-between;
96
- padding: 12px 14px;
97
- border-bottom: 1px solid var(--dsw-alias-border-l1);
98
- }
99
-
100
- .panelTitle {
101
- font-weight: 600;
102
- }
103
-
104
- .panelHeaderActions {
105
- display: flex;
106
- align-items: center;
107
- gap: 4px;
108
- }
109
-
110
- .panelIconButton {
111
- display: grid;
112
- place-items: center;
113
- width: 28px;
114
- height: 28px;
115
- color: var(--dsw-alias-label-secondary);
116
- background: transparent;
117
- border: none;
118
- border-radius: 999px;
119
- cursor: pointer;
120
- }
121
-
122
- .panelIconButton:hover {
123
- background: var(--dsw-alias-interactive-bg-hover);
124
- color: var(--dsw-alias-label-primary);
125
- }
126
-
127
- .panelClose {
128
- font-family: var(--dsw-font-family);
129
- font-size: 13px;
130
- color: var(--dsw-alias-label-secondary);
131
- background: transparent;
132
- border: none;
133
- cursor: pointer;
134
- padding: 4px 8px;
135
- border-radius: 6px;
136
- }
137
-
138
- .panelClose:hover {
139
- background: var(--dsw-alias-interactive-bg-hover);
140
- color: var(--dsw-alias-label-primary);
141
- }
142
-
143
- /* Collapsed handle: a floating round button on the right edge. */
144
- .collapsedHandle {
145
- position: fixed;
146
- top: 50%;
147
- right: 8px;
148
- transform: translateY(-50%);
149
- z-index: 2147482990;
150
- display: grid;
151
- place-items: center;
152
- width: 32px;
153
- height: 32px;
154
- color: var(--dsw-alias-label-secondary);
155
- background: var(--dsw-alias-bg-overlay);
156
- border: 1px solid var(--dsw-alias-border-l2);
157
- border-radius: 999px;
158
- cursor: pointer;
159
- box-shadow: var(--dsw-shadow-lv2);
160
- }
161
-
162
- .collapsedHandle:hover {
163
- color: var(--dsw-alias-label-primary);
164
- background: var(--dsw-alias-interactive-bg-hover);
165
- }
166
-
167
- /* Floating entry shown (panel closed) when the main conversation has a question dialog. */
168
- .questionFab {
169
- position: fixed;
170
- z-index: 2147482990;
171
- display: grid;
172
- place-items: center;
173
- width: 32px;
174
- height: 32px;
175
- color: var(--dsw-alias-label-secondary);
176
- background: var(--dsw-alias-bg-overlay);
177
- border: 1px solid var(--dsw-alias-state-business-primary);
178
- border-radius: 999px;
179
- cursor: pointer;
180
- box-shadow: var(--dsw-shadow-lv2);
181
- }
182
-
183
- .questionFab:hover {
184
- color: var(--dsw-alias-label-primary);
185
- background: var(--dsw-alias-interactive-bg-hover);
186
- }
187
-
188
- .questionFabDot {
189
- position: absolute;
190
- top: 4px;
191
- right: 4px;
192
- width: 8px;
193
- height: 8px;
194
- border-radius: 50%;
195
- background: var(--dsw-alias-state-business-primary);
196
- }
197
-
198
- /* Pending main-conversation question dialog, listed item-by-item. */
199
- .questionBlock {
200
- flex: none;
201
- max-height: 40%;
202
- overflow-y: auto;
203
- display: flex;
204
- flex-direction: column;
205
- gap: 8px;
206
- padding: 8px;
207
- border-bottom: 1px solid var(--dsw-alias-border-l1);
208
- }
209
-
210
- .questionBlockActions {
211
- display: flex;
212
- align-items: center;
213
- justify-content: space-between;
214
- }
215
-
216
- .questionToggle {
217
- font-family: var(--dsw-font-family);
218
- font-size: 12px;
219
- line-height: 18px;
220
- color: var(--dsw-alias-label-tertiary);
221
- background: transparent;
222
- border: none;
223
- border-radius: 6px;
224
- padding: 2px 6px;
225
- cursor: pointer;
226
- }
227
-
228
- .questionToggle:hover {
229
- color: var(--dsw-alias-label-primary);
230
- background: var(--dsw-alias-interactive-bg-hover);
231
- }
232
-
233
- .questionDeleteAll {
234
- font-family: var(--dsw-font-family);
235
- font-size: 12px;
236
- line-height: 18px;
237
- color: var(--dsw-alias-label-tertiary);
238
- background: transparent;
239
- border: none;
240
- border-radius: 6px;
241
- padding: 2px 6px;
242
- cursor: pointer;
243
- }
244
-
245
- .questionDeleteAll:hover {
246
- color: var(--dsw-alias-state-error-primary);
247
- background: var(--dsw-alias-interactive-bg-hover);
248
- }
249
-
250
- .questionItemCollapsed {
251
- gap: 0;
252
- padding: 8px 12px;
253
- }
254
-
255
- .questionItem {
256
- display: flex;
257
- flex-direction: column;
258
- gap: 6px;
259
- border: 1px solid var(--dsw-alias-border-l1);
260
- background: var(--dsw-alias-bg-layer-2);
261
- border-radius: 12px;
262
- padding: 10px 12px;
263
- }
264
-
265
- .questionHeader {
266
- display: flex;
267
- align-items: center;
268
- justify-content: space-between;
269
- gap: 8px;
270
- }
271
-
272
- .questionHeaderText {
273
- flex: 1;
274
- min-width: 0;
275
- color: var(--dsw-alias-label-primary);
276
- font-weight: 600;
277
- font-size: 13px;
278
- line-height: 20px;
279
- overflow: hidden;
280
- text-overflow: ellipsis;
281
- white-space: nowrap;
282
- }
283
-
284
- .questionHeaderActions {
285
- flex: none;
286
- display: flex;
287
- align-items: center;
288
- gap: 4px;
289
- }
290
-
291
- .questionBody {
292
- color: var(--dsw-alias-label-primary);
293
- font-size: 14px;
294
- line-height: 22px;
295
- white-space: pre-wrap;
296
- word-break: break-word;
297
- }
298
-
299
- .questionDetail {
300
- color: var(--dsw-alias-label-secondary);
301
- font-size: 12px;
302
- line-height: 18px;
303
- white-space: pre-wrap;
304
- word-break: break-word;
305
- }
306
-
307
- .questionOption {
308
- display: flex;
309
- align-items: center;
310
- justify-content: space-between;
311
- gap: 8px;
312
- border: 1px solid var(--dsw-alias-border-l1);
313
- background: var(--dsw-alias-bg-layer-1);
314
- border-radius: 10px;
315
- padding: 6px 8px 6px 10px;
316
- }
317
-
318
- .questionOptionText {
319
- flex: 1;
320
- min-width: 0;
321
- color: var(--dsw-alias-label-primary);
322
- font-size: 13px;
323
- line-height: 20px;
324
- word-break: break-word;
325
- }
326
-
327
- .questionOptionLabel {
328
- font-weight: 500;
329
- }
330
-
331
- .questionOptionDesc {
332
- color: var(--dsw-alias-label-secondary);
333
- }
334
-
335
- .questionBringButton {
336
- flex: none;
337
- font-family: var(--dsw-font-family);
338
- font-size: 12px;
339
- line-height: 18px;
340
- color: var(--dsw-alias-label-primary);
341
- background: transparent;
342
- border: 1px solid var(--dsw-alias-border-l2);
343
- border-radius: 999px;
344
- padding: 2px 10px;
345
- cursor: pointer;
346
- white-space: nowrap;
347
- }
348
-
349
- .questionBringButton:hover:not(:disabled) {
350
- background: var(--dsw-alias-interactive-bg-hover);
351
- }
352
-
353
- .questionBringButton:disabled {
354
- cursor: default;
355
- opacity: 0.55;
356
- }
357
-
358
- .questionDelete {
359
- flex: none;
360
- width: 22px;
361
- height: 22px;
362
- display: grid;
363
- place-items: center;
364
- color: var(--dsw-alias-label-tertiary);
365
- background: transparent;
366
- border: none;
367
- border-radius: 6px;
368
- cursor: pointer;
369
- font-size: 14px;
370
- line-height: 20px;
371
- }
372
-
373
- .questionDelete:hover {
374
- color: var(--dsw-alias-state-error-primary);
375
- background: var(--dsw-alias-interactive-bg-hover);
376
- }
377
-
378
- /* ---- Side-chat list ---- */
379
- .panelList {
380
- flex: none;
381
- display: flex;
382
- flex-direction: column;
383
- gap: 2px;
384
- padding: 8px;
385
- border-bottom: 1px solid var(--dsw-alias-border-l1);
386
- max-height: 132px;
387
- overflow-y: auto;
388
- }
389
-
390
- .panelEmpty {
391
- color: var(--dsw-alias-label-tertiary);
392
- font-size: 12px;
393
- line-height: 18px;
394
- padding: 6px 8px;
395
- }
396
-
397
- .panelListActions {
398
- display: flex;
399
- justify-content: flex-end;
400
- padding: 0 2px 2px;
401
- }
402
-
403
- .panelListDeleteAll {
404
- font-family: var(--dsw-font-family);
405
- font-size: 12px;
406
- line-height: 18px;
407
- color: var(--dsw-alias-label-tertiary);
408
- background: transparent;
409
- border: none;
410
- border-radius: 6px;
411
- padding: 2px 6px;
412
- cursor: pointer;
413
- }
414
-
415
- .panelListDeleteAll:hover {
416
- color: var(--dsw-alias-state-error-primary);
417
- background: var(--dsw-alias-interactive-bg-hover);
418
- }
419
-
420
- .panelListItem {
421
- display: flex;
422
- align-items: center;
423
- gap: 8px;
424
- font-family: var(--dsw-font-family);
425
- color: var(--dsw-alias-label-primary);
426
- background: transparent;
427
- border: none;
428
- border-radius: 8px;
429
- padding: 6px 8px;
430
- cursor: pointer;
431
- text-align: left;
432
- }
433
-
434
- .panelListItem:hover {
435
- background: var(--dsw-specific-sidebar-nav-item-hover);
436
- }
437
-
438
- .panelListItemActive {
439
- background: var(--dsw-specific-sidebar-nav-item-active);
440
- }
441
-
442
- .panelListItemDot {
443
- flex: none;
444
- width: 8px;
445
- height: 8px;
446
- border-radius: 50%;
447
- background: var(--dsw-alias-label-tertiary);
448
- }
449
-
450
- .panelListItemDot[data-running='1'] {
451
- background: var(--dsw-alias-state-business-primary);
452
- }
453
-
454
- .panelListItemLabel {
455
- min-width: 0;
456
- overflow: hidden;
457
- text-overflow: ellipsis;
458
- white-space: nowrap;
459
- font-size: 12px;
460
- font-family: var(--ds-font-family-code);
461
- }
462
-
463
- .panelListItemRow {
464
- display: flex;
465
- align-items: center;
466
- gap: 2px;
467
- }
468
-
469
- .panelListItemRow .panelListItem {
470
- flex: 1;
471
- min-width: 0;
472
- }
473
-
474
- .panelListItemRemove {
475
- flex: none;
476
- width: 22px;
477
- height: 22px;
478
- display: grid;
479
- place-items: center;
480
- color: var(--dsw-alias-label-tertiary);
481
- background: transparent;
482
- border: none;
483
- border-radius: 6px;
484
- cursor: pointer;
485
- font-size: 14px;
486
- line-height: 20px;
487
- }
488
-
489
- .panelListItemRemove:hover {
490
- color: var(--dsw-alias-state-error-primary);
491
- background: var(--dsw-alias-interactive-bg-hover);
492
- }
493
-
494
- /* ---- Transcript ---- */
495
- .panelTranscript {
496
- flex: 1;
497
- min-height: 0;
498
- overflow-y: auto;
499
- display: flex;
500
- flex-direction: column;
501
- gap: 10px;
502
- padding: 14px;
503
- }
504
-
505
- .messageUser {
506
- align-self: flex-end;
507
- background: var(--dsw-specific-bubble);
508
- color: var(--dsw-alias-label-primary);
509
- max-width: 86%;
510
- white-space: pre-wrap;
511
- word-break: break-word;
512
- border-radius: 22px;
513
- padding: 10px 16px;
514
- font-size: 16px;
515
- line-height: 24px;
516
- }
517
-
518
- .messageAssistant {
519
- align-self: flex-start;
520
- max-width: 100%;
521
- min-width: 0;
522
- color: var(--dsw-alias-label-primary);
523
- }
524
-
525
- /* Per-assistant-message "bring whole reply to main" actions. */
526
- .messageActions {
527
- display: flex;
528
- gap: 6px;
529
- margin-top: 6px;
530
- }
531
-
532
- .messageInsertButton {
533
- font-family: var(--dsw-font-family);
534
- font-size: 12px;
535
- line-height: 18px;
536
- color: var(--dsw-alias-label-secondary);
537
- background: transparent;
538
- border: 1px solid var(--dsw-alias-border-l1);
539
- border-radius: 999px;
540
- padding: 2px 10px;
541
- cursor: pointer;
542
- }
543
-
544
- .messageInsertButton:hover:not(:disabled) {
545
- background: var(--dsw-alias-interactive-bg-hover);
546
- color: var(--dsw-alias-label-primary);
547
- }
548
-
549
- .messageInsertButton:disabled {
550
- cursor: default;
551
- opacity: 0.55;
552
- }
553
-
554
- /* Reasoning disclosure (main-conversation Think row) */
555
- .reasoningSummary {
556
- min-width: 0;
557
- color: var(--dsw-alias-label-tertiary);
558
- text-overflow: ellipsis;
559
- white-space: nowrap;
560
- overflow: hidden;
561
- font-size: 14px;
562
- line-height: 24px;
563
- }
564
-
565
- .reasoningBody {
566
- color: var(--dsw-alias-label-tertiary);
567
- white-space: pre-wrap;
568
- word-break: break-word;
569
- padding: 4px 0 4px 22px;
570
- font-size: 14px;
571
- line-height: 24px;
572
- }
573
-
574
- .panelRunning {
575
- align-self: flex-start;
576
- display: inline-flex;
577
- align-items: center;
578
- gap: 6px;
579
- color: var(--dsw-alias-label-tertiary);
580
- font-size: 12px;
581
- line-height: 18px;
582
- }
583
-
584
- .panelRunningDot {
585
- flex: none;
586
- width: 8px;
587
- height: 8px;
588
- border-radius: 50%;
589
- background: var(--dsw-alias-state-business-primary);
590
- animation: panelRunningPulse 1s ease-in-out infinite alternate;
591
- }
592
-
593
- .panelRunningClock {
594
- color: var(--dsw-alias-label-caption);
595
- }
596
-
597
- @keyframes panelRunningPulse {
598
- from { opacity: 1; }
599
- to { opacity: 0.3; }
600
- }
601
-
602
- @media (prefers-reduced-motion: reduce) {
603
- .panelRunningDot {
604
- animation: none;
605
- }
606
- }
607
-
608
- .panelError {
609
- color: var(--dsw-alias-state-error-primary);
610
- font-size: 12px;
611
- line-height: 18px;
612
- }
613
-
614
- /* ---- Composer ---- */
615
- .panelComposer {
616
- flex: none;
617
- margin: 10px 14px 14px;
618
- display: flex;
619
- flex-direction: column;
620
- gap: 4px;
621
- border: 1px solid var(--dsw-alias-border-l2-darkmode-thin);
622
- background: var(--dsw-specific-input-major);
623
- box-shadow: var(--dsw-shadow-lv2);
624
- border-radius: 22px;
625
- padding: 10px;
626
- }
627
-
628
- .panelToolbar {
629
- flex: none;
630
- display: flex;
631
- align-items: center;
632
- justify-content: flex-end;
633
- gap: 4px;
634
- min-width: 0;
635
- }
636
-
637
- .panelTextarea {
638
- flex: 1;
639
- min-width: 0;
640
- width: 100%;
641
- box-sizing: border-box;
642
- resize: none;
643
- color: var(--dsw-alias-label-primary);
644
- caret-color: var(--dsw-alias-state-business-primary);
645
- background: transparent;
646
- border: none;
647
- outline: none;
648
- font-family: var(--dsw-font-family);
649
- font-size: 16px;
650
- line-height: 24px;
651
- padding: 4px 8px;
652
- min-height: 32px;
653
- max-height: 160px;
654
- }
655
-
656
- .panelLookup {
657
- align-self: flex-start;
658
- display: inline-flex;
659
- align-items: center;
660
- gap: 6px;
661
- max-width: 100%;
662
- height: 24px;
663
- padding: 0 8px;
664
- border-radius: 24px;
665
- font-size: 12px;
666
- font-weight: 500;
667
- line-height: 18px;
668
- color: var(--dsw-alias-label-secondary);
669
- cursor: pointer;
670
- white-space: nowrap;
671
- }
672
-
673
- .panelLookup span {
674
- min-width: 0;
675
- overflow: hidden;
676
- text-overflow: ellipsis;
677
- }
678
-
679
- .panelLookup:hover {
680
- background: var(--dsw-alias-interactive-bg-hover);
681
- }
682
-
683
- /* Staged selection shown as an attachment. */
684
- .panelAttachment {
685
- display: flex;
686
- align-items: center;
687
- gap: 8px;
688
- border: 1px solid var(--dsw-alias-border-l1);
689
- background: var(--dsw-specific-tip);
690
- border-radius: 10px;
691
- padding: 6px 10px;
692
- }
693
-
694
- .panelAttachmentText {
695
- flex: 1;
696
- min-width: 0;
697
- color: var(--dsw-alias-label-secondary);
698
- font-size: 12px;
699
- line-height: 18px;
700
- white-space: nowrap;
701
- overflow: hidden;
702
- text-overflow: ellipsis;
703
- }
704
-
705
- .panelAttachmentRemove {
706
- flex: none;
707
- width: 20px;
708
- height: 20px;
709
- color: var(--dsw-alias-label-secondary);
710
- background: transparent;
711
- border: none;
712
- border-radius: 999px;
713
- cursor: pointer;
714
- font-size: 16px;
715
- line-height: 20px;
716
- }
717
-
718
- .panelAttachmentRemove:hover {
719
- background: var(--dsw-alias-interactive-bg-hover);
720
- color: var(--dsw-alias-label-primary);
721
- }
722
-
723
- .panelFooter {
724
- flex: none;
725
- padding: 0 14px 12px;
726
- }
727
-
728
- .panelDispose {
729
- font-family: var(--dsw-font-family);
730
- font-size: 12px;
731
- line-height: 18px;
732
- color: var(--dsw-alias-label-tertiary);
733
- background: transparent;
734
- border: none;
735
- cursor: pointer;
736
- padding: 4px 0;
737
- }
738
-
739
- .panelDispose:hover {
740
- color: var(--dsw-alias-state-error-primary);
741
- }
742
-
743
- /* ---- Send / stop button (main-conversation style) ---- */
744
- .primary {
745
- background: var(--dsw-alias-button-info-fill);
746
- color: #fff;
747
- cursor: pointer;
748
- border: none;
749
- border-radius: 999px;
750
- flex: none;
751
- place-items: center;
752
- width: 34px;
753
- height: 34px;
754
- transition: background-color 0.1s;
755
- display: grid;
756
- }
757
-
758
- .primary:hover {
759
- background: var(--dsw-alias-button-info-hover);
760
- }
761
-
762
- /* ---- Attachment rail + user-message text ---- */
763
- .panelAttachmentRail {
764
- flex: none;
765
- min-width: 0;
766
- }
767
-
768
- .messageUserText {
769
- white-space: pre-wrap;
770
- word-break: break-word;
771
- }
772
-
773
- /* ---- Model selector (main-conversation ModelSelect) ---- */
774
- .modelSelect {
775
- min-width: 0;
776
- position: relative;
777
- }
778
-
779
- .modelSelectTrigger {
780
- min-width: 0;
781
- max-width: 200px;
782
- height: 28px;
783
- color: var(--dsw-alias-label-secondary);
784
- cursor: pointer;
785
- background: transparent;
786
- border: none;
787
- border-radius: 24px;
788
- outline: none;
789
- align-items: center;
790
- gap: 4px;
791
- padding: 0 4px 0 8px;
792
- font-size: 13px;
793
- font-weight: 500;
794
- line-height: 20px;
795
- display: flex;
796
- }
797
-
798
- .modelSelectTrigger:hover:not(:disabled) {
799
- background: var(--dsw-alias-interactive-bg-hover);
800
- }
801
-
802
- .modelSelectLabel {
803
- text-overflow: ellipsis;
804
- white-space: nowrap;
805
- min-width: 0;
806
- overflow: hidden;
807
- }
808
-
809
- .modelSelectEffort {
810
- color: var(--dsw-alias-label-caption);
811
- flex: none;
812
- }
813
-
814
- .chevronOpen {
815
- transform: rotate(180deg);
816
- }
817
-
818
- .modelSelectMenu {
819
- z-index: 30;
820
- border: 1px solid var(--dsw-alias-border-inverted);
821
- background: var(--dsw-specific-menu);
822
- width: min(260px, calc(100vw - 32px));
823
- max-height: min(360px, 100vh - 96px);
824
- box-shadow: var(--dsw-shadow-lv3);
825
- color: var(--dsw-alias-label-primary);
826
- border-radius: 12px;
827
- flex-direction: column;
828
- padding: 4px;
829
- display: flex;
830
- position: absolute;
831
- bottom: calc(100% + 8px);
832
- right: 0;
833
- overflow: hidden;
834
- }
835
-
836
- .modelCell {
837
- width: 100%;
838
- height: 40px;
839
- color: var(--dsw-alias-label-primary);
840
- cursor: pointer;
841
- text-align: left;
842
- background: transparent;
843
- border: none;
844
- border-radius: 10px;
845
- align-items: center;
846
- gap: 8px;
847
- padding: 0 10px;
848
- font-size: 14px;
849
- line-height: 22px;
850
- display: flex;
851
- flex: none;
852
- }
853
-
854
- .modelCell:hover {
855
- background: var(--dsw-alias-interactive-bg-hover);
856
- }
857
-
858
- .modelCellLabel {
859
- text-overflow: ellipsis;
860
- white-space: nowrap;
861
- flex: auto;
862
- min-width: 0;
863
- overflow: hidden;
864
- }
865
-
866
- .modelCellValue {
867
- text-overflow: ellipsis;
868
- white-space: nowrap;
869
- min-width: 0;
870
- color: var(--dsw-alias-label-tertiary);
871
- flex: 0 auto;
872
- overflow: hidden;
873
- }
874
-
875
- .modelCellChevron {
876
- color: var(--dsw-alias-label-tertiary);
877
- flex: none;
878
- }
879
-
880
- .modelGroups {
881
- min-height: 0;
882
- overflow-y: auto;
883
- }
884
-
885
- .modelGroup + .modelGroup {
886
- margin-top: 4px;
887
- }
888
-
889
- .modelGroupTitle {
890
- z-index: 1;
891
- background: var(--dsw-specific-menu);
892
- color: var(--dsw-alias-label-tertiary);
893
- padding: 5px 8px 3px;
894
- font-size: 12px;
895
- font-weight: 500;
896
- line-height: 18px;
897
- position: sticky;
898
- top: 0;
899
- }
900
-
901
- .modelOption {
902
- width: 100%;
903
- min-height: 38px;
904
- color: inherit;
905
- text-align: left;
906
- cursor: pointer;
907
- background: transparent;
908
- border: none;
909
- border-radius: 10px;
910
- outline: none;
911
- align-items: center;
912
- gap: 8px;
913
- padding: 6px 8px;
914
- display: flex;
915
- }
916
-
917
- .modelOption:hover:not(:disabled) {
918
- background: var(--dsw-alias-interactive-bg-hover);
919
- }
920
-
921
- .modelOptionSelected {
922
- background: var(--dsw-alias-interactive-bg-hover);
923
- }
924
-
925
- .modelOptionCopy {
926
- flex-direction: column;
927
- flex: 1;
928
- min-width: 0;
929
- display: flex;
930
- }
931
-
932
- .modelName {
933
- color: inherit;
934
- text-overflow: ellipsis;
935
- white-space: nowrap;
936
- font-size: 14px;
937
- font-weight: 500;
938
- line-height: 20px;
939
- overflow: hidden;
940
- }
941
-
942
- .modelDescription {
943
- color: var(--dsw-alias-label-tertiary);
944
- text-overflow: ellipsis;
945
- white-space: nowrap;
946
- font-size: 12px;
947
- line-height: 18px;
948
- overflow: hidden;
949
- }
950
-
951
- .modelCheck {
952
- color: var(--dsw-alias-label-primary);
953
- flex: 0 0 18px;
954
- place-items: center;
955
- display: grid;
956
- }
957
-
958
- .modelEmpty {
959
- color: var(--dsw-alias-label-tertiary);
960
- padding: 10px;
961
- font-size: 13px;
962
- line-height: 20px;
963
- }
964
-
965
- /* ---- Settings section ---- */
966
- .settingsSection {
967
- display: flex;
968
- flex-direction: column;
969
- gap: 8px;
970
- }
971
-
972
- .settingsRow {
973
- display: flex;
974
- align-items: center;
975
- justify-content: space-between;
976
- gap: 12px;
977
- border: 1px solid var(--dsw-alias-border-l1);
978
- background: var(--dsw-alias-bg-layer-2);
979
- border-radius: 12px;
980
- padding: 10px 12px;
981
- cursor: pointer;
982
- }
983
-
984
- .settingsRowText {
985
- flex: 1;
986
- min-width: 0;
987
- display: flex;
988
- flex-direction: column;
989
- gap: 2px;
990
- }
991
-
992
- .settingsRowTitle {
993
- color: var(--dsw-alias-label-primary);
994
- font-size: 14px;
995
- line-height: 20px;
996
- }
997
-
998
- .settingsRowDesc {
999
- color: var(--dsw-alias-label-tertiary);
1000
- font-size: 12px;
1001
- line-height: 18px;
1002
- }
1003
-
1004
- .settingsToggle {
1005
- flex: none;
1006
- width: 16px;
1007
- height: 16px;
1008
- accent-color: var(--dsw-alias-state-business-primary);
1009
- }
1010
-
1011
- .settingsBringMode {
1012
- display: flex;
1013
- flex-direction: column;
1014
- gap: 8px;
1015
- }
1016
-
1017
- .settingsBringOption {
1018
- display: flex;
1019
- align-items: flex-start;
1020
- gap: 12px;
1021
- border: 1px solid var(--dsw-alias-border-l1);
1022
- background: var(--dsw-alias-bg-layer-2);
1023
- border-radius: 12px;
1024
- padding: 10px 12px;
1025
- cursor: pointer;
1026
- }
1027
-
1028
- .settingsBringOptionActive {
1029
- border-color: var(--dsw-alias-state-business-primary);
1030
- }
1031
-
1032
- .settingsPromptInput {
1033
- box-sizing: border-box;
1034
- width: 100%;
1035
- min-height: 72px;
1036
- resize: vertical;
1037
- color: var(--dsw-alias-label-primary);
1038
- background: var(--dsw-specific-input-major);
1039
- border: 1px solid var(--dsw-alias-border-l2);
1040
- border-radius: 10px;
1041
- padding: 8px 10px;
1042
- font-family: var(--dsw-font-family);
1043
- font-size: 13px;
1044
- line-height: 20px;
1045
- }
1046
-
1047
- .settingsPromptInput:focus {
1048
- outline: 2px solid var(--dsw-alias-border-l3);
1049
- outline-offset: -1px;
1050
- }
1051
-
1
+ /* dsh-side-chat client styles. Per the DSH web-styling rules every visual
2
+ value rides the theme: --dsw-alias-* semantic tokens for colors and
3
+ --dsw-font-family for typography. No static palette values, no color
4
+ literals — light/dark adaptation is the theme package's job. */
5
+
6
+ /* ---- Floating selection menu ---- */
7
+ .selectionMenu {
8
+ position: fixed;
9
+ z-index: 2147483000;
10
+ transform: translate(-50%, 0);
11
+ display: flex;
12
+ gap: 4px;
13
+ background: var(--dsw-alias-bg-overlay);
14
+ border: 1px solid var(--dsw-alias-border-l3);
15
+ border-radius: 10px;
16
+ padding: 4px;
17
+ box-shadow: 0 4px 16px var(--dsw-alias-bg-mask-2);
18
+ pointer-events: auto;
19
+ }
20
+
21
+ .selectionButton {
22
+ font-family: var(--dsw-font-family);
23
+ font-size: 13px;
24
+ line-height: 20px;
25
+ color: var(--dsw-alias-label-primary);
26
+ background: transparent;
27
+ border: none;
28
+ border-radius: 7px;
29
+ padding: 6px 10px;
30
+ cursor: pointer;
31
+ white-space: nowrap;
32
+ }
33
+
34
+ .selectionButton:hover:not(:disabled) {
35
+ background: var(--dsw-alias-interactive-bg-hover);
36
+ }
37
+
38
+ .selectionButton:disabled {
39
+ cursor: default;
40
+ opacity: 0.55;
41
+ }
42
+
43
+ /* ---- Right-side panel ---- */
44
+ .panel {
45
+ position: fixed;
46
+ top: 0;
47
+ right: 0;
48
+ bottom: 0;
49
+ width: var(--dsh-subchat-width, 360px);
50
+ z-index: 2147482990;
51
+ display: flex;
52
+ flex-direction: column;
53
+ background: var(--dsw-specific-sidebar-fill);
54
+ border-left: 1px solid var(--dsw-alias-border-l2);
55
+ color: var(--dsw-alias-label-primary);
56
+ font-family: var(--dsw-font-family);
57
+ font-size: 14px;
58
+ pointer-events: auto;
59
+ transition: transform var(--ds-transition-duration-slow) var(--ds-ease-in-out);
60
+ }
61
+
62
+ /* Embedded in the built-in right sidebar (dock mode): fill the tab pane,
63
+ drop the floating chrome (fixed positioning, resize rail, own border). */
64
+ .panelEmbedded {
65
+ position: absolute;
66
+ inset: 0;
67
+ width: 100%;
68
+ border-left: none;
69
+ border-radius: 0;
70
+ }
71
+
72
+ /* A built-in sidebar overlay (fullscreen preview / floated panel) owns the
73
+ viewport: slide this panel out of the way; the layout margin is dropped by
74
+ the matching width effect so the main column reclaims the space. */
75
+ .panelConflictHidden {
76
+ transform: translateX(calc(100% + 24px));
77
+ pointer-events: none;
78
+ }
79
+
80
+ .panelResize {
81
+ position: absolute;
82
+ left: -4px;
83
+ top: 0;
84
+ bottom: 0;
85
+ width: 8px;
86
+ cursor: col-resize;
87
+ z-index: 2;
88
+ touch-action: none;
89
+ }
90
+
91
+ .panelHeader {
92
+ flex: none;
93
+ display: flex;
94
+ align-items: center;
95
+ justify-content: space-between;
96
+ padding: 12px 14px;
97
+ border-bottom: 1px solid var(--dsw-alias-border-l1);
98
+ }
99
+
100
+ .panelTitle {
101
+ font-weight: 600;
102
+ }
103
+
104
+ .panelHeaderActions {
105
+ display: flex;
106
+ align-items: center;
107
+ gap: 4px;
108
+ }
109
+
110
+ .panelIconButton {
111
+ display: grid;
112
+ place-items: center;
113
+ width: 28px;
114
+ height: 28px;
115
+ color: var(--dsw-alias-label-secondary);
116
+ background: transparent;
117
+ border: none;
118
+ border-radius: 999px;
119
+ cursor: pointer;
120
+ }
121
+
122
+ .panelIconButton:hover {
123
+ background: var(--dsw-alias-interactive-bg-hover);
124
+ color: var(--dsw-alias-label-primary);
125
+ }
126
+
127
+ .panelClose {
128
+ font-family: var(--dsw-font-family);
129
+ font-size: 13px;
130
+ color: var(--dsw-alias-label-secondary);
131
+ background: transparent;
132
+ border: none;
133
+ cursor: pointer;
134
+ padding: 4px 8px;
135
+ border-radius: 6px;
136
+ }
137
+
138
+ .panelClose:hover {
139
+ background: var(--dsw-alias-interactive-bg-hover);
140
+ color: var(--dsw-alias-label-primary);
141
+ }
142
+
143
+ /* Collapsed handle: a floating round button on the right edge. */
144
+ .collapsedHandle {
145
+ position: fixed;
146
+ top: 50%;
147
+ right: 8px;
148
+ transform: translateY(-50%);
149
+ z-index: 2147482990;
150
+ display: grid;
151
+ place-items: center;
152
+ width: 32px;
153
+ height: 32px;
154
+ color: var(--dsw-alias-label-secondary);
155
+ background: var(--dsw-alias-bg-overlay);
156
+ border: 1px solid var(--dsw-alias-border-l2);
157
+ border-radius: 999px;
158
+ cursor: pointer;
159
+ box-shadow: var(--dsw-shadow-lv2);
160
+ }
161
+
162
+ .collapsedHandle:hover {
163
+ color: var(--dsw-alias-label-primary);
164
+ background: var(--dsw-alias-interactive-bg-hover);
165
+ }
166
+
167
+ /* Floating entry shown (panel closed) when the main conversation has a question dialog. */
168
+ .questionFab {
169
+ position: fixed;
170
+ z-index: 2147482990;
171
+ display: grid;
172
+ place-items: center;
173
+ width: 32px;
174
+ height: 32px;
175
+ color: var(--dsw-alias-label-secondary);
176
+ background: var(--dsw-alias-bg-overlay);
177
+ border: 1px solid var(--dsw-alias-state-business-primary);
178
+ border-radius: 999px;
179
+ cursor: pointer;
180
+ box-shadow: var(--dsw-shadow-lv2);
181
+ }
182
+
183
+ .questionFab:hover {
184
+ color: var(--dsw-alias-label-primary);
185
+ background: var(--dsw-alias-interactive-bg-hover);
186
+ }
187
+
188
+ .questionFabDot {
189
+ position: absolute;
190
+ top: 4px;
191
+ right: 4px;
192
+ width: 8px;
193
+ height: 8px;
194
+ border-radius: 50%;
195
+ background: var(--dsw-alias-state-business-primary);
196
+ }
197
+
198
+ /* Pending main-conversation question dialog, listed item-by-item. */
199
+ .questionBlock {
200
+ flex: none;
201
+ max-height: 40%;
202
+ overflow-y: auto;
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: 8px;
206
+ padding: 8px;
207
+ border-bottom: 1px solid var(--dsw-alias-border-l1);
208
+ }
209
+
210
+ .questionBlockActions {
211
+ display: flex;
212
+ align-items: center;
213
+ justify-content: space-between;
214
+ }
215
+
216
+ .questionToggle {
217
+ font-family: var(--dsw-font-family);
218
+ font-size: 12px;
219
+ line-height: 18px;
220
+ color: var(--dsw-alias-label-tertiary);
221
+ background: transparent;
222
+ border: none;
223
+ border-radius: 6px;
224
+ padding: 2px 6px;
225
+ cursor: pointer;
226
+ }
227
+
228
+ .questionToggle:hover {
229
+ color: var(--dsw-alias-label-primary);
230
+ background: var(--dsw-alias-interactive-bg-hover);
231
+ }
232
+
233
+ .questionDeleteAll {
234
+ font-family: var(--dsw-font-family);
235
+ font-size: 12px;
236
+ line-height: 18px;
237
+ color: var(--dsw-alias-label-tertiary);
238
+ background: transparent;
239
+ border: none;
240
+ border-radius: 6px;
241
+ padding: 2px 6px;
242
+ cursor: pointer;
243
+ }
244
+
245
+ .questionDeleteAll:hover {
246
+ color: var(--dsw-alias-state-error-primary);
247
+ background: var(--dsw-alias-interactive-bg-hover);
248
+ }
249
+
250
+ .questionItemCollapsed {
251
+ gap: 0;
252
+ padding: 8px 12px;
253
+ }
254
+
255
+ .questionItem {
256
+ display: flex;
257
+ flex-direction: column;
258
+ gap: 6px;
259
+ border: 1px solid var(--dsw-alias-border-l1);
260
+ background: var(--dsw-alias-bg-layer-2);
261
+ border-radius: 12px;
262
+ padding: 10px 12px;
263
+ }
264
+
265
+ .questionHeader {
266
+ display: flex;
267
+ align-items: center;
268
+ justify-content: space-between;
269
+ gap: 8px;
270
+ }
271
+
272
+ .questionHeaderText {
273
+ flex: 1;
274
+ min-width: 0;
275
+ color: var(--dsw-alias-label-primary);
276
+ font-weight: 600;
277
+ font-size: 13px;
278
+ line-height: 20px;
279
+ overflow: hidden;
280
+ text-overflow: ellipsis;
281
+ white-space: nowrap;
282
+ }
283
+
284
+ .questionHeaderActions {
285
+ flex: none;
286
+ display: flex;
287
+ align-items: center;
288
+ gap: 4px;
289
+ }
290
+
291
+ .questionBody {
292
+ color: var(--dsw-alias-label-primary);
293
+ font-size: 14px;
294
+ line-height: 22px;
295
+ white-space: pre-wrap;
296
+ word-break: break-word;
297
+ }
298
+
299
+ .questionDetail {
300
+ color: var(--dsw-alias-label-secondary);
301
+ font-size: 12px;
302
+ line-height: 18px;
303
+ white-space: pre-wrap;
304
+ word-break: break-word;
305
+ }
306
+
307
+ .questionOption {
308
+ display: flex;
309
+ align-items: center;
310
+ justify-content: space-between;
311
+ gap: 8px;
312
+ border: 1px solid var(--dsw-alias-border-l1);
313
+ background: var(--dsw-alias-bg-layer-1);
314
+ border-radius: 10px;
315
+ padding: 6px 8px 6px 10px;
316
+ }
317
+
318
+ .questionOptionText {
319
+ flex: 1;
320
+ min-width: 0;
321
+ color: var(--dsw-alias-label-primary);
322
+ font-size: 13px;
323
+ line-height: 20px;
324
+ word-break: break-word;
325
+ }
326
+
327
+ .questionOptionLabel {
328
+ font-weight: 500;
329
+ }
330
+
331
+ .questionOptionDesc {
332
+ color: var(--dsw-alias-label-secondary);
333
+ }
334
+
335
+ .questionBringButton {
336
+ flex: none;
337
+ font-family: var(--dsw-font-family);
338
+ font-size: 12px;
339
+ line-height: 18px;
340
+ color: var(--dsw-alias-label-primary);
341
+ background: transparent;
342
+ border: 1px solid var(--dsw-alias-border-l2);
343
+ border-radius: 999px;
344
+ padding: 2px 10px;
345
+ cursor: pointer;
346
+ white-space: nowrap;
347
+ }
348
+
349
+ .questionBringButton:hover:not(:disabled) {
350
+ background: var(--dsw-alias-interactive-bg-hover);
351
+ }
352
+
353
+ .questionBringButton:disabled {
354
+ cursor: default;
355
+ opacity: 0.55;
356
+ }
357
+
358
+ .questionDelete {
359
+ flex: none;
360
+ width: 22px;
361
+ height: 22px;
362
+ display: grid;
363
+ place-items: center;
364
+ color: var(--dsw-alias-label-tertiary);
365
+ background: transparent;
366
+ border: none;
367
+ border-radius: 6px;
368
+ cursor: pointer;
369
+ font-size: 14px;
370
+ line-height: 20px;
371
+ }
372
+
373
+ .questionDelete:hover {
374
+ color: var(--dsw-alias-state-error-primary);
375
+ background: var(--dsw-alias-interactive-bg-hover);
376
+ }
377
+
378
+ /* ---- Side-chat list ---- */
379
+ .panelList {
380
+ flex: none;
381
+ display: flex;
382
+ flex-direction: column;
383
+ gap: 2px;
384
+ padding: 8px;
385
+ border-bottom: 1px solid var(--dsw-alias-border-l1);
386
+ max-height: 132px;
387
+ overflow-y: auto;
388
+ }
389
+
390
+ .panelEmpty {
391
+ color: var(--dsw-alias-label-tertiary);
392
+ font-size: 12px;
393
+ line-height: 18px;
394
+ padding: 6px 8px;
395
+ }
396
+
397
+ .panelListActions {
398
+ display: flex;
399
+ justify-content: flex-end;
400
+ padding: 0 2px 2px;
401
+ }
402
+
403
+ .panelListDeleteAll {
404
+ font-family: var(--dsw-font-family);
405
+ font-size: 12px;
406
+ line-height: 18px;
407
+ color: var(--dsw-alias-label-tertiary);
408
+ background: transparent;
409
+ border: none;
410
+ border-radius: 6px;
411
+ padding: 2px 6px;
412
+ cursor: pointer;
413
+ }
414
+
415
+ .panelListDeleteAll:hover {
416
+ color: var(--dsw-alias-state-error-primary);
417
+ background: var(--dsw-alias-interactive-bg-hover);
418
+ }
419
+
420
+ .panelListItem {
421
+ display: flex;
422
+ align-items: center;
423
+ gap: 8px;
424
+ font-family: var(--dsw-font-family);
425
+ color: var(--dsw-alias-label-primary);
426
+ background: transparent;
427
+ border: none;
428
+ border-radius: 8px;
429
+ padding: 6px 8px;
430
+ cursor: pointer;
431
+ text-align: left;
432
+ }
433
+
434
+ .panelListItem:hover {
435
+ background: var(--dsw-specific-sidebar-nav-item-hover);
436
+ }
437
+
438
+ .panelListItemActive {
439
+ background: var(--dsw-specific-sidebar-nav-item-active);
440
+ }
441
+
442
+ .panelListItemDot {
443
+ flex: none;
444
+ width: 8px;
445
+ height: 8px;
446
+ border-radius: 50%;
447
+ background: var(--dsw-alias-label-tertiary);
448
+ }
449
+
450
+ .panelListItemDot[data-running='1'] {
451
+ background: var(--dsw-alias-state-business-primary);
452
+ }
453
+
454
+ .panelListItemLabel {
455
+ min-width: 0;
456
+ overflow: hidden;
457
+ text-overflow: ellipsis;
458
+ white-space: nowrap;
459
+ font-size: 12px;
460
+ font-family: var(--ds-font-family-code);
461
+ }
462
+
463
+ .panelListItemRow {
464
+ display: flex;
465
+ align-items: center;
466
+ gap: 2px;
467
+ }
468
+
469
+ .panelListItemRow .panelListItem {
470
+ flex: 1;
471
+ min-width: 0;
472
+ }
473
+
474
+ .panelListItemRemove {
475
+ flex: none;
476
+ width: 22px;
477
+ height: 22px;
478
+ display: grid;
479
+ place-items: center;
480
+ color: var(--dsw-alias-label-tertiary);
481
+ background: transparent;
482
+ border: none;
483
+ border-radius: 6px;
484
+ cursor: pointer;
485
+ font-size: 14px;
486
+ line-height: 20px;
487
+ }
488
+
489
+ .panelListItemRemove:hover {
490
+ color: var(--dsw-alias-state-error-primary);
491
+ background: var(--dsw-alias-interactive-bg-hover);
492
+ }
493
+
494
+ /* ---- Transcript ---- */
495
+ .panelTranscript {
496
+ flex: 1;
497
+ min-height: 0;
498
+ overflow-y: auto;
499
+ display: flex;
500
+ flex-direction: column;
501
+ gap: 10px;
502
+ padding: 14px;
503
+ }
504
+
505
+ .messageUser {
506
+ align-self: flex-end;
507
+ background: var(--dsw-specific-bubble);
508
+ color: var(--dsw-alias-label-primary);
509
+ max-width: 86%;
510
+ white-space: pre-wrap;
511
+ word-break: break-word;
512
+ border-radius: 22px;
513
+ padding: 10px 16px;
514
+ font-size: 16px;
515
+ line-height: 24px;
516
+ }
517
+
518
+ .messageAssistant {
519
+ align-self: flex-start;
520
+ max-width: 100%;
521
+ min-width: 0;
522
+ color: var(--dsw-alias-label-primary);
523
+ }
524
+
525
+ /* Per-assistant-message "bring whole reply to main" actions. */
526
+ .messageActions {
527
+ display: flex;
528
+ gap: 6px;
529
+ margin-top: 6px;
530
+ }
531
+
532
+ .messageInsertButton {
533
+ font-family: var(--dsw-font-family);
534
+ font-size: 12px;
535
+ line-height: 18px;
536
+ color: var(--dsw-alias-label-secondary);
537
+ background: transparent;
538
+ border: 1px solid var(--dsw-alias-border-l1);
539
+ border-radius: 999px;
540
+ padding: 2px 10px;
541
+ cursor: pointer;
542
+ }
543
+
544
+ .messageInsertButton:hover:not(:disabled) {
545
+ background: var(--dsw-alias-interactive-bg-hover);
546
+ color: var(--dsw-alias-label-primary);
547
+ }
548
+
549
+ .messageInsertButton:disabled {
550
+ cursor: default;
551
+ opacity: 0.55;
552
+ }
553
+
554
+ /* Reasoning disclosure (main-conversation Think row) */
555
+ .reasoningSummary {
556
+ min-width: 0;
557
+ color: var(--dsw-alias-label-tertiary);
558
+ text-overflow: ellipsis;
559
+ white-space: nowrap;
560
+ overflow: hidden;
561
+ font-size: 14px;
562
+ line-height: 24px;
563
+ }
564
+
565
+ .reasoningBody {
566
+ color: var(--dsw-alias-label-tertiary);
567
+ white-space: pre-wrap;
568
+ word-break: break-word;
569
+ padding: 4px 0 4px 22px;
570
+ font-size: 14px;
571
+ line-height: 24px;
572
+ }
573
+
574
+ .panelRunning {
575
+ align-self: flex-start;
576
+ display: inline-flex;
577
+ align-items: center;
578
+ gap: 6px;
579
+ color: var(--dsw-alias-label-tertiary);
580
+ font-size: 12px;
581
+ line-height: 18px;
582
+ }
583
+
584
+ .panelRunningDot {
585
+ flex: none;
586
+ width: 8px;
587
+ height: 8px;
588
+ border-radius: 50%;
589
+ background: var(--dsw-alias-state-business-primary);
590
+ animation: panelRunningPulse 1s ease-in-out infinite alternate;
591
+ }
592
+
593
+ .panelRunningClock {
594
+ color: var(--dsw-alias-label-caption);
595
+ }
596
+
597
+ @keyframes panelRunningPulse {
598
+ from { opacity: 1; }
599
+ to { opacity: 0.3; }
600
+ }
601
+
602
+ @media (prefers-reduced-motion: reduce) {
603
+ .panelRunningDot {
604
+ animation: none;
605
+ }
606
+ }
607
+
608
+ .panelError {
609
+ color: var(--dsw-alias-state-error-primary);
610
+ font-size: 12px;
611
+ line-height: 18px;
612
+ }
613
+
614
+ /* ---- Composer ---- */
615
+ .panelComposer {
616
+ flex: none;
617
+ margin: 10px 14px 14px;
618
+ display: flex;
619
+ flex-direction: column;
620
+ gap: 4px;
621
+ border: 1px solid var(--dsw-alias-border-l2-darkmode-thin);
622
+ background: var(--dsw-specific-input-major);
623
+ box-shadow: var(--dsw-shadow-lv2);
624
+ border-radius: 22px;
625
+ padding: 10px;
626
+ }
627
+
628
+ .panelToolbar {
629
+ flex: none;
630
+ display: flex;
631
+ align-items: center;
632
+ justify-content: flex-end;
633
+ gap: 4px;
634
+ min-width: 0;
635
+ }
636
+
637
+ .panelTextarea {
638
+ flex: 1;
639
+ min-width: 0;
640
+ width: 100%;
641
+ box-sizing: border-box;
642
+ resize: none;
643
+ color: var(--dsw-alias-label-primary);
644
+ caret-color: var(--dsw-alias-state-business-primary);
645
+ background: transparent;
646
+ border: none;
647
+ outline: none;
648
+ font-family: var(--dsw-font-family);
649
+ font-size: 16px;
650
+ line-height: 24px;
651
+ padding: 4px 8px;
652
+ min-height: 32px;
653
+ max-height: 160px;
654
+ }
655
+
656
+ .panelLookup {
657
+ align-self: flex-start;
658
+ display: inline-flex;
659
+ align-items: center;
660
+ gap: 6px;
661
+ max-width: 100%;
662
+ height: 24px;
663
+ padding: 0 8px;
664
+ border-radius: 24px;
665
+ font-size: 12px;
666
+ font-weight: 500;
667
+ line-height: 18px;
668
+ color: var(--dsw-alias-label-secondary);
669
+ cursor: pointer;
670
+ white-space: nowrap;
671
+ }
672
+
673
+ .panelLookup span {
674
+ min-width: 0;
675
+ overflow: hidden;
676
+ text-overflow: ellipsis;
677
+ }
678
+
679
+ .panelLookup:hover {
680
+ background: var(--dsw-alias-interactive-bg-hover);
681
+ }
682
+
683
+ /* Staged selection shown as an attachment. */
684
+ .panelAttachment {
685
+ display: flex;
686
+ align-items: center;
687
+ gap: 8px;
688
+ border: 1px solid var(--dsw-alias-border-l1);
689
+ background: var(--dsw-specific-tip);
690
+ border-radius: 10px;
691
+ padding: 6px 10px;
692
+ }
693
+
694
+ .panelAttachmentText {
695
+ flex: 1;
696
+ min-width: 0;
697
+ color: var(--dsw-alias-label-secondary);
698
+ font-size: 12px;
699
+ line-height: 18px;
700
+ white-space: nowrap;
701
+ overflow: hidden;
702
+ text-overflow: ellipsis;
703
+ }
704
+
705
+ .panelAttachmentRemove {
706
+ flex: none;
707
+ width: 20px;
708
+ height: 20px;
709
+ color: var(--dsw-alias-label-secondary);
710
+ background: transparent;
711
+ border: none;
712
+ border-radius: 999px;
713
+ cursor: pointer;
714
+ font-size: 16px;
715
+ line-height: 20px;
716
+ }
717
+
718
+ .panelAttachmentRemove:hover {
719
+ background: var(--dsw-alias-interactive-bg-hover);
720
+ color: var(--dsw-alias-label-primary);
721
+ }
722
+
723
+ .panelFooter {
724
+ flex: none;
725
+ padding: 0 14px 12px;
726
+ }
727
+
728
+ .panelDispose {
729
+ font-family: var(--dsw-font-family);
730
+ font-size: 12px;
731
+ line-height: 18px;
732
+ color: var(--dsw-alias-label-tertiary);
733
+ background: transparent;
734
+ border: none;
735
+ cursor: pointer;
736
+ padding: 4px 0;
737
+ }
738
+
739
+ .panelDispose:hover {
740
+ color: var(--dsw-alias-state-error-primary);
741
+ }
742
+
743
+ /* ---- Send / stop button (main-conversation style) ---- */
744
+ .primary {
745
+ background: var(--dsw-alias-button-info-fill);
746
+ color: #fff;
747
+ cursor: pointer;
748
+ border: none;
749
+ border-radius: 999px;
750
+ flex: none;
751
+ place-items: center;
752
+ width: 34px;
753
+ height: 34px;
754
+ transition: background-color 0.1s;
755
+ display: grid;
756
+ }
757
+
758
+ .primary:hover {
759
+ background: var(--dsw-alias-button-info-hover);
760
+ }
761
+
762
+ /* ---- Attachment rail + user-message text ---- */
763
+ .panelAttachmentRail {
764
+ flex: none;
765
+ min-width: 0;
766
+ }
767
+
768
+ .messageUserText {
769
+ white-space: pre-wrap;
770
+ word-break: break-word;
771
+ }
772
+
773
+ /* ---- Model selector (main-conversation ModelSelect) ---- */
774
+ .modelSelect {
775
+ min-width: 0;
776
+ position: relative;
777
+ }
778
+
779
+ .modelSelectTrigger {
780
+ min-width: 0;
781
+ max-width: 200px;
782
+ height: 28px;
783
+ color: var(--dsw-alias-label-secondary);
784
+ cursor: pointer;
785
+ background: transparent;
786
+ border: none;
787
+ border-radius: 24px;
788
+ outline: none;
789
+ align-items: center;
790
+ gap: 4px;
791
+ padding: 0 4px 0 8px;
792
+ font-size: 13px;
793
+ font-weight: 500;
794
+ line-height: 20px;
795
+ display: flex;
796
+ }
797
+
798
+ .modelSelectTrigger:hover:not(:disabled) {
799
+ background: var(--dsw-alias-interactive-bg-hover);
800
+ }
801
+
802
+ .modelSelectLabel {
803
+ text-overflow: ellipsis;
804
+ white-space: nowrap;
805
+ min-width: 0;
806
+ overflow: hidden;
807
+ }
808
+
809
+ .modelSelectEffort {
810
+ color: var(--dsw-alias-label-caption);
811
+ flex: none;
812
+ }
813
+
814
+ .chevronOpen {
815
+ transform: rotate(180deg);
816
+ }
817
+
818
+ .modelSelectMenu {
819
+ z-index: 30;
820
+ border: 1px solid var(--dsw-alias-border-inverted);
821
+ background: var(--dsw-specific-menu);
822
+ width: min(260px, calc(100vw - 32px));
823
+ max-height: min(360px, 100vh - 96px);
824
+ box-shadow: var(--dsw-shadow-lv3);
825
+ color: var(--dsw-alias-label-primary);
826
+ border-radius: 12px;
827
+ flex-direction: column;
828
+ padding: 4px;
829
+ display: flex;
830
+ position: absolute;
831
+ bottom: calc(100% + 8px);
832
+ right: 0;
833
+ overflow: hidden;
834
+ }
835
+
836
+ .modelCell {
837
+ width: 100%;
838
+ height: 40px;
839
+ color: var(--dsw-alias-label-primary);
840
+ cursor: pointer;
841
+ text-align: left;
842
+ background: transparent;
843
+ border: none;
844
+ border-radius: 10px;
845
+ align-items: center;
846
+ gap: 8px;
847
+ padding: 0 10px;
848
+ font-size: 14px;
849
+ line-height: 22px;
850
+ display: flex;
851
+ flex: none;
852
+ }
853
+
854
+ .modelCell:hover {
855
+ background: var(--dsw-alias-interactive-bg-hover);
856
+ }
857
+
858
+ .modelCellLabel {
859
+ text-overflow: ellipsis;
860
+ white-space: nowrap;
861
+ flex: auto;
862
+ min-width: 0;
863
+ overflow: hidden;
864
+ }
865
+
866
+ .modelCellValue {
867
+ text-overflow: ellipsis;
868
+ white-space: nowrap;
869
+ min-width: 0;
870
+ color: var(--dsw-alias-label-tertiary);
871
+ flex: 0 auto;
872
+ overflow: hidden;
873
+ }
874
+
875
+ .modelCellChevron {
876
+ color: var(--dsw-alias-label-tertiary);
877
+ flex: none;
878
+ }
879
+
880
+ .modelGroups {
881
+ min-height: 0;
882
+ overflow-y: auto;
883
+ }
884
+
885
+ .modelGroup + .modelGroup {
886
+ margin-top: 4px;
887
+ }
888
+
889
+ .modelGroupTitle {
890
+ z-index: 1;
891
+ background: var(--dsw-specific-menu);
892
+ color: var(--dsw-alias-label-tertiary);
893
+ padding: 5px 8px 3px;
894
+ font-size: 12px;
895
+ font-weight: 500;
896
+ line-height: 18px;
897
+ position: sticky;
898
+ top: 0;
899
+ }
900
+
901
+ .modelOption {
902
+ width: 100%;
903
+ min-height: 38px;
904
+ color: inherit;
905
+ text-align: left;
906
+ cursor: pointer;
907
+ background: transparent;
908
+ border: none;
909
+ border-radius: 10px;
910
+ outline: none;
911
+ align-items: center;
912
+ gap: 8px;
913
+ padding: 6px 8px;
914
+ display: flex;
915
+ }
916
+
917
+ .modelOption:hover:not(:disabled) {
918
+ background: var(--dsw-alias-interactive-bg-hover);
919
+ }
920
+
921
+ .modelOptionSelected {
922
+ background: var(--dsw-alias-interactive-bg-hover);
923
+ }
924
+
925
+ .modelOptionCopy {
926
+ flex-direction: column;
927
+ flex: 1;
928
+ min-width: 0;
929
+ display: flex;
930
+ }
931
+
932
+ .modelName {
933
+ color: inherit;
934
+ text-overflow: ellipsis;
935
+ white-space: nowrap;
936
+ font-size: 14px;
937
+ font-weight: 500;
938
+ line-height: 20px;
939
+ overflow: hidden;
940
+ }
941
+
942
+ .modelDescription {
943
+ color: var(--dsw-alias-label-tertiary);
944
+ text-overflow: ellipsis;
945
+ white-space: nowrap;
946
+ font-size: 12px;
947
+ line-height: 18px;
948
+ overflow: hidden;
949
+ }
950
+
951
+ .modelCheck {
952
+ color: var(--dsw-alias-label-primary);
953
+ flex: 0 0 18px;
954
+ place-items: center;
955
+ display: grid;
956
+ }
957
+
958
+ .modelEmpty {
959
+ color: var(--dsw-alias-label-tertiary);
960
+ padding: 10px;
961
+ font-size: 13px;
962
+ line-height: 20px;
963
+ }
964
+
965
+ /* ---- Settings section ---- */
966
+ .settingsSection {
967
+ display: flex;
968
+ flex-direction: column;
969
+ gap: 8px;
970
+ }
971
+
972
+ .settingsRow {
973
+ display: flex;
974
+ align-items: center;
975
+ justify-content: space-between;
976
+ gap: 12px;
977
+ border: 1px solid var(--dsw-alias-border-l1);
978
+ background: var(--dsw-alias-bg-layer-2);
979
+ border-radius: 12px;
980
+ padding: 10px 12px;
981
+ cursor: pointer;
982
+ }
983
+
984
+ .settingsRowText {
985
+ flex: 1;
986
+ min-width: 0;
987
+ display: flex;
988
+ flex-direction: column;
989
+ gap: 2px;
990
+ }
991
+
992
+ .settingsRowTitle {
993
+ color: var(--dsw-alias-label-primary);
994
+ font-size: 14px;
995
+ line-height: 20px;
996
+ }
997
+
998
+ .settingsRowDesc {
999
+ color: var(--dsw-alias-label-tertiary);
1000
+ font-size: 12px;
1001
+ line-height: 18px;
1002
+ }
1003
+
1004
+ .settingsToggle {
1005
+ flex: none;
1006
+ width: 16px;
1007
+ height: 16px;
1008
+ accent-color: var(--dsw-alias-state-business-primary);
1009
+ }
1010
+
1011
+ .settingsBringMode {
1012
+ display: flex;
1013
+ flex-direction: column;
1014
+ gap: 8px;
1015
+ }
1016
+
1017
+ .settingsBringOption {
1018
+ display: flex;
1019
+ align-items: flex-start;
1020
+ gap: 12px;
1021
+ border: 1px solid var(--dsw-alias-border-l1);
1022
+ background: var(--dsw-alias-bg-layer-2);
1023
+ border-radius: 12px;
1024
+ padding: 10px 12px;
1025
+ cursor: pointer;
1026
+ }
1027
+
1028
+ .settingsBringOptionActive {
1029
+ border-color: var(--dsw-alias-state-business-primary);
1030
+ }
1031
+
1032
+ .settingsPromptInput {
1033
+ box-sizing: border-box;
1034
+ width: 100%;
1035
+ min-height: 72px;
1036
+ resize: vertical;
1037
+ color: var(--dsw-alias-label-primary);
1038
+ background: var(--dsw-specific-input-major);
1039
+ border: 1px solid var(--dsw-alias-border-l2);
1040
+ border-radius: 10px;
1041
+ padding: 8px 10px;
1042
+ font-family: var(--dsw-font-family);
1043
+ font-size: 13px;
1044
+ line-height: 20px;
1045
+ }
1046
+
1047
+ .settingsPromptInput:focus {
1048
+ outline: 2px solid var(--dsw-alias-border-l3);
1049
+ outline-offset: -1px;
1050
+ }
1051
+