dsh-audiogen 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1023 @@
1
+ /**
2
+ * dsh-imagegen settings card styles. Mirrors the official plugin-config card
3
+ * chrome (@deepseek-ai/dsh-client-ui-settings-plugins PluginCard + fields) so
4
+ * the card reads as a sibling of the bash / agent-loop / web-search cards;
5
+ * colors ride the dsh --dsw-* tokens.
6
+ */
7
+
8
+ .card {
9
+ list-style: none;
10
+ border: 1px solid var(--dsw-alias-border-l2);
11
+ border-radius: 12px;
12
+ background: var(--dsw-alias-bg-layer-3);
13
+ transition: border-color 0.16s, background 0.16s;
14
+ }
15
+
16
+ .card:hover {
17
+ border-color: var(--dsw-alias-label-dimmed);
18
+ }
19
+
20
+ /* An open card reads as the one being worked on, not merely taller. */
21
+ .card:has(.body) {
22
+ background: var(--dsw-alias-bg-layer-2);
23
+ border-color: var(--dsw-alias-label-dimmed);
24
+ }
25
+
26
+ .header {
27
+ width: 100%;
28
+ appearance: none;
29
+ border: 0;
30
+ background: none;
31
+ font: inherit;
32
+ color: inherit;
33
+ text-align: left;
34
+ cursor: pointer;
35
+ display: flex;
36
+ align-items: center;
37
+ gap: 12px;
38
+ padding: 14px 16px;
39
+ border-radius: 12px;
40
+ }
41
+
42
+ .header:focus-visible {
43
+ outline: 2px solid var(--dsw-alias-brand-primary);
44
+ outline-offset: -2px;
45
+ }
46
+
47
+ .headText {
48
+ flex: 1;
49
+ min-width: 0;
50
+ display: flex;
51
+ flex-direction: column;
52
+ gap: 4px;
53
+ }
54
+
55
+ .name {
56
+ font-size: 15px;
57
+ font-weight: 600;
58
+ line-height: 1.4;
59
+ color: var(--dsw-alias-label-primary);
60
+ }
61
+
62
+ .description {
63
+ font-size: 13px;
64
+ line-height: 1.5;
65
+ color: var(--dsw-alias-label-tertiary);
66
+ }
67
+
68
+ .chevron,
69
+ .chevronOpen {
70
+ flex: none;
71
+ color: var(--dsw-alias-label-tertiary);
72
+ transition: transform 0.16s;
73
+ }
74
+
75
+ .chevronOpen {
76
+ transform: rotate(180deg);
77
+ }
78
+
79
+ /* Carried on the header so a collapsed card still says it holds edits. */
80
+ .pending {
81
+ flex: none;
82
+ border-radius: 999px;
83
+ padding: 1px 8px;
84
+ font-size: 11px;
85
+ line-height: 17px;
86
+ font-weight: 500;
87
+ white-space: nowrap;
88
+ background: var(--dsw-alias-bg-module-platform);
89
+ color: var(--dsw-alias-label-secondary);
90
+ }
91
+
92
+ .body {
93
+ border-top: 1px solid var(--dsw-alias-border-l2);
94
+ margin: 0 16px;
95
+ padding-bottom: 8px;
96
+ }
97
+
98
+ .versionRow {
99
+ display: flex;
100
+ align-items: center;
101
+ justify-content: space-between;
102
+ gap: 12px;
103
+ padding: 12px 0;
104
+ border-bottom: 1px solid var(--dsw-alias-border-l2);
105
+ }
106
+
107
+ .versionLabel {
108
+ font-size: 13px;
109
+ font-weight: 500;
110
+ line-height: 1.5;
111
+ color: var(--dsw-alias-label-primary);
112
+ }
113
+
114
+ .versionValue {
115
+ padding: 1px 8px;
116
+ border-radius: 999px;
117
+ background: var(--dsw-alias-bg-module-platform);
118
+ color: var(--dsw-alias-label-secondary);
119
+ font-family: var(--dsw-font-family-mono, monospace);
120
+ font-size: 12px;
121
+ line-height: 1.5;
122
+ }
123
+
124
+ /* --- fields (mirror of the official plugin-config fields) --------------------- */
125
+
126
+ .field {
127
+ display: flex;
128
+ flex-direction: column;
129
+ gap: 6px;
130
+ padding: 12px 0;
131
+ }
132
+
133
+ .field + .field {
134
+ border-top: 1px solid var(--dsw-alias-border-l2);
135
+ }
136
+
137
+ .head {
138
+ display: flex;
139
+ align-items: center;
140
+ gap: 8px;
141
+ }
142
+
143
+ .label {
144
+ flex: 1;
145
+ min-width: 0;
146
+ font-size: 13px;
147
+ font-weight: 500;
148
+ line-height: 1.5;
149
+ color: var(--dsw-alias-label-primary);
150
+ }
151
+
152
+ .badges {
153
+ display: inline-flex;
154
+ align-items: center;
155
+ gap: 8px;
156
+ }
157
+
158
+ .badge {
159
+ border-radius: 999px;
160
+ padding: 1px 8px;
161
+ font-size: 11px;
162
+ line-height: 17px;
163
+ white-space: nowrap;
164
+ font-weight: 500;
165
+ background: var(--dsw-alias-bg-module-platform);
166
+ color: var(--dsw-alias-label-secondary);
167
+ }
168
+
169
+ .reset {
170
+ border: none;
171
+ background: none;
172
+ padding: 0;
173
+ font: inherit;
174
+ font-size: 12px;
175
+ line-height: 1.5;
176
+ color: var(--dsw-alias-label-secondary);
177
+ cursor: pointer;
178
+ }
179
+
180
+ .reset:hover:not(:disabled) {
181
+ color: var(--dsw-alias-label-primary);
182
+ }
183
+
184
+ .reset:disabled {
185
+ cursor: default;
186
+ opacity: 0.5;
187
+ }
188
+
189
+ .input,
190
+ .select {
191
+ height: 34px;
192
+ padding: 0 12px;
193
+ border: 1px solid var(--dsw-alias-border-l2);
194
+ border-radius: 8px;
195
+ background: var(--dsw-alias-bg-layer-3);
196
+ font: inherit;
197
+ font-size: 13px;
198
+ line-height: 1.5;
199
+ color: var(--dsw-alias-label-primary);
200
+ outline: none;
201
+ }
202
+
203
+ .input:focus-visible,
204
+ .select:focus-visible {
205
+ border-color: var(--dsw-alias-brand-primary);
206
+ }
207
+
208
+ .input:disabled,
209
+ .select:disabled {
210
+ color: var(--dsw-alias-label-tertiary);
211
+ cursor: default;
212
+ }
213
+
214
+ .inputInvalid {
215
+ height: 34px;
216
+ padding: 0 12px;
217
+ border: 1px solid var(--dsw-alias-label-error);
218
+ border-radius: 8px;
219
+ background: var(--dsw-alias-bg-layer-3);
220
+ font: inherit;
221
+ font-size: 13px;
222
+ line-height: 1.5;
223
+ color: var(--dsw-alias-label-primary);
224
+ outline: none;
225
+ }
226
+
227
+ .textarea,
228
+ .textareaInvalid {
229
+ min-height: 70px;
230
+ resize: vertical;
231
+ padding: 8px 12px;
232
+ border-radius: 8px;
233
+ background: var(--dsw-alias-bg-layer-3);
234
+ font: inherit;
235
+ font-size: 13px;
236
+ line-height: 1.5;
237
+ color: var(--dsw-alias-label-primary);
238
+ outline: none;
239
+ }
240
+
241
+ .textarea { border: 1px solid var(--dsw-alias-border-l2); }
242
+ .textareaInvalid { border: 1px solid var(--dsw-alias-label-error); }
243
+ .textarea:focus-visible { border-color: var(--dsw-alias-brand-primary); }
244
+ .textarea:disabled { color: var(--dsw-alias-label-tertiary); cursor: default; }
245
+
246
+ .hint,
247
+ .invalid {
248
+ margin: 0;
249
+ font-size: 12px;
250
+ line-height: 1.5;
251
+ }
252
+
253
+ .hint {
254
+ color: var(--dsw-alias-label-tertiary);
255
+ }
256
+
257
+ .invalid {
258
+ color: var(--dsw-alias-label-error);
259
+ }
260
+
261
+ .readOnly,
262
+ .notExposed {
263
+ margin: 12px 0 0;
264
+ font-size: 12px;
265
+ line-height: 1.5;
266
+ color: var(--dsw-alias-label-tertiary);
267
+ }
268
+
269
+ .sectionDivider {
270
+ height: 1px;
271
+ margin: 18px 0 14px;
272
+ background: var(--dsw-alias-border-l2);
273
+ }
274
+
275
+ .sectionTitle {
276
+ margin: 0;
277
+ color: var(--dsw-alias-label-primary);
278
+ font-size: 14px;
279
+ line-height: 1.4;
280
+ }
281
+
282
+ .sectionHint {
283
+ margin: -4px 0 2px;
284
+ color: var(--dsw-alias-label-tertiary);
285
+ font-size: 12px;
286
+ line-height: 1.5;
287
+ }
288
+
289
+ .modelSection {
290
+ padding: 2px 0 14px;
291
+ }
292
+
293
+ .sectionHeader {
294
+ display: flex;
295
+ align-items: flex-start;
296
+ justify-content: space-between;
297
+ gap: 12px;
298
+ }
299
+
300
+ .sectionHeader .sectionHint {
301
+ max-width: 430px;
302
+ }
303
+
304
+ .modelSummary {
305
+ display: flex;
306
+ flex-wrap: wrap;
307
+ align-items: center;
308
+ gap: 6px;
309
+ margin-top: 12px;
310
+ }
311
+
312
+ .modelChip {
313
+ display: inline-flex;
314
+ align-items: center;
315
+ max-width: 100%;
316
+ gap: 5px;
317
+ padding: 3px 5px 3px 8px;
318
+ border: 1px solid var(--dsw-alias-border-l2);
319
+ border-radius: 6px;
320
+ background: var(--dsw-alias-bg-layer-3);
321
+ color: var(--dsw-alias-label-primary);
322
+ font-family: var(--dsw-font-family-mono, monospace);
323
+ font-size: 12px;
324
+ line-height: 1.5;
325
+ }
326
+
327
+ .modelChip > span {
328
+ overflow: hidden;
329
+ text-overflow: ellipsis;
330
+ white-space: nowrap;
331
+ }
332
+
333
+ .modelChip button {
334
+ appearance: none;
335
+ border: 0;
336
+ border-radius: 4px;
337
+ width: 18px;
338
+ height: 18px;
339
+ padding: 0;
340
+ background: transparent;
341
+ color: var(--dsw-alias-label-tertiary);
342
+ font: inherit;
343
+ line-height: 18px;
344
+ cursor: pointer;
345
+ }
346
+
347
+ .modelChip button:hover:not(:disabled) { color: var(--dsw-alias-label-primary); background: var(--dsw-alias-bg-module-platform); }
348
+ .modelChip button:disabled { cursor: default; opacity: 0.45; }
349
+
350
+ .addModel {
351
+ appearance: none;
352
+ min-height: 28px;
353
+ border: 1px dashed var(--dsw-alias-border-l2);
354
+ border-radius: 6px;
355
+ padding: 0 9px;
356
+ background: transparent;
357
+ color: var(--dsw-alias-label-secondary);
358
+ font: inherit;
359
+ font-size: 12px;
360
+ cursor: pointer;
361
+ }
362
+
363
+ .addModel:hover:not(:disabled) { color: var(--dsw-alias-brand-primary); border-color: var(--dsw-alias-brand-primary); }
364
+ .addModel:disabled { opacity: 0.45; cursor: default; }
365
+
366
+ .manualModelRow {
367
+ display: flex;
368
+ gap: 8px;
369
+ margin-top: 10px;
370
+ }
371
+
372
+ .manualModelRow .input { min-width: 0; flex: 1; }
373
+
374
+ .disclosure {
375
+ width: 100%;
376
+ appearance: none;
377
+ display: flex;
378
+ align-items: center;
379
+ gap: 8px;
380
+ border: 0;
381
+ border-top: 1px solid var(--dsw-alias-border-l2);
382
+ padding: 13px 0;
383
+ background: none;
384
+ color: var(--dsw-alias-label-primary);
385
+ font: inherit;
386
+ font-size: 13px;
387
+ font-weight: 500;
388
+ text-align: left;
389
+ cursor: pointer;
390
+ }
391
+
392
+ .disclosure > span:nth-child(2) { margin-left: auto; color: var(--dsw-alias-label-tertiary); font-size: 12px; font-weight: 400; }
393
+ .disclosure > span:last-child { color: var(--dsw-alias-label-tertiary); }
394
+ .disclosure:focus-visible { outline: 2px solid var(--dsw-alias-brand-primary); outline-offset: 2px; }
395
+
396
+ .optionalContent {
397
+ padding: 0 0 8px;
398
+ }
399
+
400
+ .inlineDisclosure {
401
+ appearance: none;
402
+ display: inline-flex;
403
+ align-items: center;
404
+ gap: 6px;
405
+ margin-top: 12px;
406
+ padding: 0;
407
+ border: 0;
408
+ background: none;
409
+ color: var(--dsw-alias-label-secondary);
410
+ font: inherit;
411
+ font-size: 12px;
412
+ cursor: pointer;
413
+ }
414
+
415
+ .inlineDisclosure:hover { color: var(--dsw-alias-label-primary); }
416
+
417
+ .modelFetchRow {
418
+ display: flex;
419
+ gap: 8px;
420
+ align-items: center;
421
+ }
422
+
423
+ .modelFetch,
424
+ .modelChoices {
425
+ min-height: 32px;
426
+ border: 1px solid var(--dsw-alias-border-l2);
427
+ border-radius: 7px;
428
+ background: var(--dsw-alias-bg-layer-3);
429
+ color: var(--dsw-alias-label-secondary);
430
+ font: inherit;
431
+ font-size: 12px;
432
+ }
433
+
434
+ .modelFetch { padding: 0 10px; cursor: pointer; }
435
+ .modelFetch:hover:not(:disabled) { color: var(--dsw-alias-brand-primary); border-color: var(--dsw-alias-brand-primary); }
436
+ .modelFetch:disabled { opacity: 0.5; cursor: default; }
437
+ .modelChoices { min-width: 0; flex: 1; padding: 0 8px; }
438
+
439
+ .modelCandidateList {
440
+ display: flex;
441
+ flex-wrap: wrap;
442
+ gap: 6px 10px;
443
+ margin-top: 10px;
444
+ }
445
+
446
+ .modelCandidateLabel {
447
+ width: 100%;
448
+ color: var(--dsw-alias-label-tertiary);
449
+ font-size: 12px;
450
+ }
451
+
452
+ .modelCandidate {
453
+ appearance: none;
454
+ display: inline-flex;
455
+ align-items: center;
456
+ gap: 5px;
457
+ min-width: 0;
458
+ color: var(--dsw-alias-label-secondary);
459
+ font-size: 12px;
460
+ line-height: 1.5;
461
+ cursor: pointer;
462
+ padding: 3px 6px;
463
+ border: 1px solid transparent;
464
+ border-radius: 5px;
465
+ background: var(--dsw-alias-bg-layer-3);
466
+ font: inherit;
467
+ }
468
+
469
+ .modelCandidate input { margin: 0; }
470
+ .modelCandidate[data-selected] { border-color: var(--dsw-alias-border-l2); color: var(--dsw-alias-label-primary); }
471
+
472
+ /* --- footer (mirror of the official card footer) ------------------------------ */
473
+
474
+ .footer {
475
+ display: flex;
476
+ align-items: center;
477
+ justify-content: flex-end;
478
+ gap: 8px;
479
+ padding: 12px 0 4px;
480
+ border-top: 1px solid var(--dsw-alias-border-l2);
481
+ }
482
+
483
+ .failed {
484
+ flex: 1;
485
+ min-width: 0;
486
+ margin: 0;
487
+ font-size: 12px;
488
+ line-height: 1.5;
489
+ color: var(--dsw-alias-label-error);
490
+ }
491
+
492
+ .discard,
493
+ .save {
494
+ appearance: none;
495
+ border: 1px solid transparent;
496
+ border-radius: 8px;
497
+ padding: 5px 14px;
498
+ font: inherit;
499
+ font-size: 13px;
500
+ line-height: 1.5;
501
+ cursor: pointer;
502
+ }
503
+
504
+ .discard {
505
+ border-color: var(--dsw-alias-border-l2);
506
+ background: none;
507
+ color: var(--dsw-alias-label-secondary);
508
+ }
509
+
510
+ .discard:hover:not(:disabled) {
511
+ color: var(--dsw-alias-label-primary);
512
+ border-color: var(--dsw-alias-label-dimmed);
513
+ }
514
+
515
+ .save {
516
+ background: var(--dsw-alias-label-primary);
517
+ color: var(--dsw-alias-bg-layer-3);
518
+ }
519
+
520
+ .discard:disabled,
521
+ .save:disabled {
522
+ opacity: 0.4;
523
+ cursor: default;
524
+ }
525
+
526
+ .discard:focus-visible,
527
+ .save:focus-visible {
528
+ outline: 2px solid var(--dsw-alias-brand-primary);
529
+ outline-offset: 1px;
530
+ }
531
+
532
+ @media (prefers-reduced-motion: reduce) {
533
+ .card, .chevron, .chevronOpen {
534
+ transition: none;
535
+ }
536
+ }
537
+
538
+ /* --- channel list ------------------------------------------------------------------ */
539
+
540
+ .channelSection {
541
+ padding: 6px 0 2px;
542
+ }
543
+
544
+ .channelEmpty {
545
+ margin: 10px 0 0;
546
+ font-size: 12px;
547
+ line-height: 1.5;
548
+ color: var(--dsw-alias-label-tertiary);
549
+ }
550
+
551
+ .channelList {
552
+ list-style: none;
553
+ margin: 10px 0 0;
554
+ padding: 0;
555
+ display: flex;
556
+ flex-direction: column;
557
+ gap: 6px;
558
+ }
559
+
560
+ .channelRow {
561
+ display: flex;
562
+ align-items: center;
563
+ gap: 10px;
564
+ border: 1px solid var(--dsw-alias-border-l2);
565
+ border-radius: 10px;
566
+ padding: 8px 10px;
567
+ background: var(--dsw-alias-bg-layer-3);
568
+ }
569
+
570
+ .channelRow[data-action] {
571
+ flex-wrap: wrap;
572
+ }
573
+
574
+ .channelDotReady,
575
+ .channelDotWarn {
576
+ flex: none;
577
+ width: 9px;
578
+ height: 9px;
579
+ border-radius: 50%;
580
+ }
581
+
582
+ .channelDotReady {
583
+ background: var(--dsw-color-success, #2fbf71);
584
+ }
585
+
586
+ .channelDotWarn {
587
+ background: var(--dsw-color-danger, #e5484d);
588
+ }
589
+
590
+ .channelMain {
591
+ appearance: none;
592
+ flex: 1;
593
+ min-width: 0;
594
+ display: flex;
595
+ flex-direction: column;
596
+ gap: 3px;
597
+ padding: 0;
598
+ border: 0;
599
+ background: none;
600
+ font: inherit;
601
+ text-align: left;
602
+ cursor: pointer;
603
+ }
604
+
605
+ .channelName {
606
+ font-size: 13px;
607
+ font-weight: 600;
608
+ line-height: 1.4;
609
+ color: var(--dsw-alias-label-primary);
610
+ overflow: hidden;
611
+ text-overflow: ellipsis;
612
+ white-space: nowrap;
613
+ }
614
+
615
+ .channelMeta {
616
+ display: flex;
617
+ align-items: center;
618
+ flex-wrap: wrap;
619
+ gap: 4px 8px;
620
+ }
621
+
622
+ .channelHost {
623
+ font-size: 11px;
624
+ line-height: 1.5;
625
+ color: var(--dsw-alias-label-tertiary);
626
+ font-family: var(--dsw-font-family-mono, monospace);
627
+ overflow: hidden;
628
+ text-overflow: ellipsis;
629
+ white-space: nowrap;
630
+ max-width: 180px;
631
+ }
632
+
633
+ .channelBadge {
634
+ border-radius: 999px;
635
+ padding: 0 7px;
636
+ font-size: 11px;
637
+ line-height: 17px;
638
+ white-space: nowrap;
639
+ font-weight: 500;
640
+ background: var(--dsw-alias-bg-module-platform);
641
+ color: var(--dsw-alias-label-secondary);
642
+ }
643
+
644
+ .channelBadge[data-warn] {
645
+ color: var(--dsw-alias-label-error);
646
+ }
647
+
648
+ .channelBadge[data-default] {
649
+ background: var(--dsw-alias-bg-module-poped, var(--dsw-alias-bg-module-platform));
650
+ color: var(--dsw-alias-brand-primary);
651
+ }
652
+
653
+ .channelAction {
654
+ appearance: none;
655
+ flex: none;
656
+ border: 0;
657
+ background: none;
658
+ padding: 4px 8px;
659
+ border-radius: 6px;
660
+ font: inherit;
661
+ font-size: 12px;
662
+ line-height: 1.5;
663
+ color: var(--dsw-alias-label-secondary);
664
+ cursor: pointer;
665
+ }
666
+
667
+ .channelAction:hover:not(:disabled) {
668
+ color: var(--dsw-alias-label-primary);
669
+ background: var(--dsw-alias-bg-module-platform);
670
+ }
671
+
672
+ .channelAction[data-danger] {
673
+ color: var(--dsw-alias-label-error);
674
+ }
675
+
676
+ .channelAction:disabled {
677
+ opacity: 0.45;
678
+ cursor: default;
679
+ }
680
+
681
+ .channelDanger {
682
+ appearance: none;
683
+ flex: none;
684
+ border: 1px solid var(--dsw-alias-label-error);
685
+ border-radius: 6px;
686
+ padding: 3px 10px;
687
+ background: none;
688
+ color: var(--dsw-alias-label-error);
689
+ font: inherit;
690
+ font-size: 12px;
691
+ cursor: pointer;
692
+ }
693
+
694
+ .channelDanger:hover:not(:disabled) {
695
+ background: color-mix(in srgb, var(--dsw-alias-label-error) 12%, transparent);
696
+ }
697
+
698
+ .channelDanger:disabled {
699
+ opacity: 0.45;
700
+ cursor: default;
701
+ }
702
+
703
+ .deleteConfirmText {
704
+ flex: 1;
705
+ min-width: 0;
706
+ font-size: 12px;
707
+ line-height: 1.5;
708
+ color: var(--dsw-alias-label-error);
709
+ }
710
+
711
+ .channelAddRow {
712
+ display: flex;
713
+ gap: 8px;
714
+ margin-top: 10px;
715
+ }
716
+
717
+ .channelAdd {
718
+ appearance: none;
719
+ min-height: 30px;
720
+ border: 1px dashed var(--dsw-alias-border-l2);
721
+ border-radius: 8px;
722
+ padding: 0 12px;
723
+ background: transparent;
724
+ color: var(--dsw-alias-label-secondary);
725
+ font: inherit;
726
+ font-size: 12px;
727
+ cursor: pointer;
728
+ }
729
+
730
+ .channelAdd:hover:not(:disabled) {
731
+ color: var(--dsw-alias-brand-primary);
732
+ border-color: var(--dsw-alias-brand-primary);
733
+ }
734
+
735
+ .channelAdd:disabled {
736
+ opacity: 0.45;
737
+ cursor: default;
738
+ }
739
+
740
+ .spacer {
741
+ flex: 1;
742
+ }
743
+
744
+ /* --- editor dialog ------------------------------------------------------------------- */
745
+
746
+ .editorBackdrop {
747
+ position: fixed;
748
+ inset: 0;
749
+ z-index: 120;
750
+ display: flex;
751
+ align-items: flex-start;
752
+ justify-content: center;
753
+ padding: 9vh 16px 16px;
754
+ background: color-mix(in srgb, var(--dsw-alias-bg-layer-1, #000) 45%, transparent);
755
+ }
756
+
757
+ .editorPanel {
758
+ width: min(560px, 100%);
759
+ max-height: 82vh;
760
+ overflow-y: auto;
761
+ border: 1px solid var(--dsw-alias-border-l2);
762
+ border-radius: 14px;
763
+ background: var(--dsw-alias-bg-layer-2);
764
+ box-shadow: 0 18px 50px rgb(0 0 0 / 0.35);
765
+ padding: 16px;
766
+ }
767
+
768
+ .editorHeader {
769
+ display: flex;
770
+ align-items: flex-start;
771
+ justify-content: space-between;
772
+ gap: 12px;
773
+ padding-bottom: 10px;
774
+ border-bottom: 1px solid var(--dsw-alias-border-l2);
775
+ }
776
+
777
+ .editorClose {
778
+ appearance: none;
779
+ flex: none;
780
+ width: 26px;
781
+ height: 26px;
782
+ border: 0;
783
+ border-radius: 6px;
784
+ background: none;
785
+ color: var(--dsw-alias-label-tertiary);
786
+ font: inherit;
787
+ font-size: 16px;
788
+ line-height: 26px;
789
+ cursor: pointer;
790
+ }
791
+
792
+ .editorClose:hover {
793
+ color: var(--dsw-alias-label-primary);
794
+ background: var(--dsw-alias-bg-module-platform);
795
+ }
796
+
797
+ .editorField {
798
+ display: flex;
799
+ flex-direction: column;
800
+ gap: 6px;
801
+ padding: 12px 0 0;
802
+ }
803
+
804
+ .editorDivider {
805
+ height: 1px;
806
+ margin: 14px 0 4px;
807
+ background: var(--dsw-alias-border-l2);
808
+ }
809
+
810
+ .editorSectionHeader {
811
+ display: flex;
812
+ align-items: center;
813
+ justify-content: space-between;
814
+ gap: 12px;
815
+ padding: 10px 0 4px;
816
+ }
817
+
818
+ .editorSectionHeader .label {
819
+ flex: 1;
820
+ }
821
+
822
+ .editorTools {
823
+ display: flex;
824
+ flex-direction: column;
825
+ gap: 8px;
826
+ margin-top: 10px;
827
+ }
828
+
829
+ .editorFooter {
830
+ display: flex;
831
+ align-items: center;
832
+ gap: 8px;
833
+ padding-top: 12px;
834
+ border-top: 1px solid var(--dsw-alias-border-l2);
835
+ }
836
+
837
+ .detectOk {
838
+ margin: 0;
839
+ font-size: 12px;
840
+ line-height: 1.5;
841
+ color: var(--dsw-color-success, var(--dsw-alias-label-secondary));
842
+ }
843
+
844
+ /* --- model catalog rows ---------------------------------------------------------------- */
845
+
846
+ .modelRows {
847
+ list-style: none;
848
+ margin: 8px 0 0;
849
+ padding: 0;
850
+ display: flex;
851
+ flex-direction: column;
852
+ gap: 8px;
853
+ }
854
+
855
+ .modelRow {
856
+ display: flex;
857
+ align-items: center;
858
+ justify-content: space-between;
859
+ gap: 10px;
860
+ border: 1px solid var(--dsw-alias-border-l2);
861
+ border-radius: 10px;
862
+ padding: 8px 10px;
863
+ background: var(--dsw-alias-bg-layer-3);
864
+ }
865
+
866
+ .modelRowInputs {
867
+ flex: 1;
868
+ min-width: 0;
869
+ display: flex;
870
+ align-items: center;
871
+ gap: 6px;
872
+ }
873
+
874
+ .modelRowInputs .input {
875
+ flex: 1;
876
+ min-width: 0;
877
+ }
878
+
879
+ .modelArrow {
880
+ flex: none;
881
+ color: var(--dsw-alias-label-tertiary);
882
+ font-size: 12px;
883
+ }
884
+
885
+ .modelRowBadges {
886
+ flex: none;
887
+ display: flex;
888
+ align-items: center;
889
+ gap: 6px;
890
+ }
891
+
892
+ .modelBadge {
893
+ border-radius: 999px;
894
+ padding: 0 7px;
895
+ font-size: 11px;
896
+ line-height: 17px;
897
+ white-space: nowrap;
898
+ background: var(--dsw-alias-bg-module-platform);
899
+ color: var(--dsw-alias-label-tertiary);
900
+ }
901
+
902
+ .modelBadge[data-verified] {
903
+ color: var(--dsw-color-success, var(--dsw-alias-label-secondary));
904
+ }
905
+
906
+ .modelBadge[data-warn] {
907
+ color: var(--dsw-alias-label-error);
908
+ }
909
+
910
+ .modelRowRemove {
911
+ appearance: none;
912
+ flex: none;
913
+ width: 20px;
914
+ height: 20px;
915
+ border: 0;
916
+ border-radius: 4px;
917
+ padding: 0;
918
+ background: transparent;
919
+ color: var(--dsw-alias-label-tertiary);
920
+ font: inherit;
921
+ line-height: 20px;
922
+ cursor: pointer;
923
+ }
924
+
925
+ .modelRowRemove:hover:not(:disabled) {
926
+ color: var(--dsw-alias-label-error);
927
+ background: var(--dsw-alias-bg-module-platform);
928
+ }
929
+
930
+ .modelRowRemove:disabled {
931
+ opacity: 0.45;
932
+ cursor: default;
933
+ }
934
+
935
+ .modelCandidate > .modelBadge {
936
+ flex: none;
937
+ }
938
+
939
+ /* --- preset picker ---------------------------------------------------------------------- */
940
+
941
+ .channelControls {
942
+ position: relative;
943
+ }
944
+
945
+ .presetInline {
946
+ position: absolute;
947
+ left: 0;
948
+ bottom: calc(100% + 8px);
949
+ z-index: 10;
950
+ width: min(420px, calc(100vw - 48px));
951
+ max-height: min(440px, 60vh);
952
+ overflow-y: auto;
953
+ margin: 0;
954
+ padding: 12px;
955
+ border: 1px solid var(--dsw-alias-border-l2);
956
+ border-radius: 10px;
957
+ background: var(--dsw-alias-bg-layer-2);
958
+ box-shadow: 0 12px 30px rgb(0 0 0 / 0.3);
959
+ }
960
+
961
+ .presetInlineHeader {
962
+ display: flex;
963
+ align-items: flex-start;
964
+ justify-content: space-between;
965
+ gap: 12px;
966
+ }
967
+
968
+ .presetList {
969
+ display: flex;
970
+ flex-direction: column;
971
+ gap: 8px;
972
+ margin-top: 12px;
973
+ }
974
+
975
+ .presetRow {
976
+ appearance: none;
977
+ display: flex;
978
+ flex-direction: column;
979
+ align-items: flex-start;
980
+ gap: 3px;
981
+ width: 100%;
982
+ border: 1px solid var(--dsw-alias-border-l2);
983
+ border-radius: 10px;
984
+ padding: 10px 12px;
985
+ background: var(--dsw-alias-bg-layer-3);
986
+ color: inherit;
987
+ font: inherit;
988
+ text-align: left;
989
+ cursor: pointer;
990
+ }
991
+
992
+ .presetRow:hover:not(:disabled) {
993
+ border-color: var(--dsw-alias-brand-primary);
994
+ }
995
+
996
+ .presetRow[data-custom] {
997
+ border-style: dashed;
998
+ }
999
+
1000
+ .presetRow:disabled {
1001
+ opacity: 0.5;
1002
+ cursor: default;
1003
+ }
1004
+
1005
+ .presetName {
1006
+ font-size: 13px;
1007
+ font-weight: 600;
1008
+ line-height: 1.4;
1009
+ color: var(--dsw-alias-label-primary);
1010
+ }
1011
+
1012
+ .presetMeta {
1013
+ font-size: 11px;
1014
+ line-height: 1.5;
1015
+ color: var(--dsw-alias-label-tertiary);
1016
+ font-family: var(--dsw-font-family-mono, monospace);
1017
+ }
1018
+
1019
+ .presetHint {
1020
+ font-size: 12px;
1021
+ line-height: 1.5;
1022
+ color: var(--dsw-alias-label-secondary);
1023
+ }