dsh-side-chat-plus 0.3.2 → 0.3.3

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