@e-llm-studio/feedback-flow 0.0.0-stage → 0.1.32

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,1093 @@
1
+ .cw-feedback-prompt {
2
+ position: relative;
3
+ width: max-content;
4
+ max-width: 100%;
5
+ padding: 9px 14px;
6
+ background: #fff;
7
+ border: 1px solid #c8b6ff;
8
+ border-radius: 8px;
9
+ box-shadow: 0 4px 10px #37128524;
10
+ color: #5725df;
11
+ z-index: 20;
12
+ }
13
+ .cw-feedback-prompt--compact {
14
+ padding: 7px 12px;
15
+ }
16
+ .cw-feedback-prompt--loading > :not(.cw-feedback-prompt__loading) {
17
+ visibility: hidden;
18
+ }
19
+ .cw-feedback-prompt--loading {
20
+ box-sizing: border-box;
21
+ min-width: 0;
22
+ min-height: 58px;
23
+ }
24
+ .cw-feedback-prompt__loading {
25
+ position: absolute;
26
+ inset: 0;
27
+ display: flex;
28
+ align-items: center;
29
+ justify-content: center;
30
+ gap: 7px;
31
+ box-sizing: border-box;
32
+ min-width: 0;
33
+ width: 100%;
34
+ padding: 0 6px;
35
+ white-space: normal;
36
+ text-align: center;
37
+ background: #fff;
38
+ border-radius: inherit;
39
+ font-size: 11px;
40
+ font-weight: 600;
41
+ color: #5725df;
42
+ z-index: 1;
43
+ }
44
+ .cw-feedback-prompt__spinner {
45
+ width: 14px;
46
+ height: 14px;
47
+ border: 2px solid #d8ccfa;
48
+ border-top-color: #5725df;
49
+ border-radius: 50%;
50
+ animation: cw-feedback-loading-spin .7s linear infinite;
51
+ }
52
+ @keyframes cw-feedback-loading-spin { to { transform: rotate(360deg); } }
53
+ .cw-feedback-prompt__label {
54
+ font-size: 13px;
55
+ font-weight: 600;
56
+ }
57
+ .cw-feedback-stars {
58
+ display: flex;
59
+ gap: 3px;
60
+ }
61
+ .cw-feedback-stars button {
62
+ position: relative;
63
+ display: inline-flex;
64
+ align-items: center;
65
+ justify-content: center;
66
+ width: 20px;
67
+ height: 20px;
68
+ border: 0;
69
+ background: none;
70
+ padding: 0;
71
+ cursor: pointer;
72
+ }
73
+ .cw-feedback-stars button svg {
74
+ display: block;
75
+ width: 100%;
76
+ height: 100%;
77
+ }
78
+ .cw-feedback-stars button svg.cw-feedback-stars__filled {
79
+ position: absolute;
80
+ inset: 0;
81
+ }
82
+ .cw-feedback-tooltip {
83
+ position: absolute;
84
+ right: 0;
85
+ top: calc(100% + 7px);
86
+ white-space: nowrap;
87
+ background: #273349;
88
+ color: #fff;
89
+ border-radius: 5px;
90
+ padding: 6px 9px;
91
+ font-size: 11px;
92
+ }
93
+ .cw-feedback-backdrop {
94
+ position: fixed;
95
+ inset: 0;
96
+ background: #11182755;
97
+ display: flex;
98
+ align-items: center;
99
+ justify-content: center;
100
+ padding: 20px;
101
+ z-index: 10000;
102
+ }
103
+ .cw-feedback-dialog {
104
+ width: min(500px, 100%);
105
+ max-height: 90vh;
106
+ overflow: auto;
107
+ background: #fff;
108
+ border: 1px solid #ddd6fe;
109
+ border-radius: 14px;
110
+ padding: 16px;
111
+ box-shadow: 0 18px 50px #11182740;
112
+ color: #172033;
113
+ }
114
+ .cw-feedback-dialog--wide {
115
+ width: min(820px, 100%);
116
+ }
117
+ .cw-feedback-dialog__topbar {
118
+ display: flex;
119
+ justify-content: space-between;
120
+ }
121
+ .cw-feedback-dialog__topbar button {
122
+ border: 0;
123
+ background: none;
124
+ color: #64748b;
125
+ cursor: pointer;
126
+ }
127
+ .cw-feedback-dialog h2 {
128
+ margin: 6px 0;
129
+ font-size: 17px;
130
+ font-weight: 700;
131
+ }
132
+ .cw-feedback-subtitle {
133
+ margin: 0 0 14px;
134
+ color: #718096;
135
+ font-size: 13px;
136
+ }
137
+ .cw-feedback-dialog input[type="range"] {
138
+ width: 100%;
139
+ accent-color: #6025e5;
140
+ }
141
+ .cw-feedback-rating-options,
142
+ .cw-feedback-pills,
143
+ .cw-feedback-severity {
144
+ display: flex;
145
+ gap: 8px;
146
+ flex-wrap: wrap;
147
+ margin: 8px 0 14px;
148
+ }
149
+ .cw-feedback-rating-options button,
150
+ .cw-feedback-pills button,
151
+ .cw-feedback-severity button {
152
+ border: 1px solid #cbd5e1;
153
+ background: #fff;
154
+ border-radius: 8px;
155
+ padding: 7px 13px;
156
+ text-transform: capitalize;
157
+ }
158
+ .cw-feedback-rating-options button.is-selected,
159
+ .cw-feedback-pills button.is-selected {
160
+ background: #6025e5;
161
+ color: #fff;
162
+ border-color: #6025e5;
163
+ }
164
+ .cw-feedback-pills.cw-feedback-time-options {
165
+ display: grid;
166
+ grid-template-columns: repeat(4, minmax(0, 1fr));
167
+ justify-content: start;
168
+ gap: 8px 10px;
169
+ margin-bottom: 0;
170
+ }
171
+ .cw-feedback-time-options button {
172
+ white-space: nowrap;
173
+ }
174
+ .cw-feedback-time-options .cw-feedback-time-custom {
175
+ grid-column: span 2;
176
+ justify-self: start;
177
+ min-width: 120px;
178
+ }
179
+ .cw-feedback-time-hint {
180
+ margin: 22px 0 0;
181
+ color: var(--cw-feedback-muted, #718096);
182
+ font-size: 13px;
183
+ }
184
+ @media (max-width: 480px) {
185
+ .cw-feedback-pills.cw-feedback-time-options {
186
+ grid-template-columns: repeat(2, minmax(0, 1fr));
187
+ }
188
+ .cw-feedback-time-options .cw-feedback-time-custom {
189
+ grid-column: auto;
190
+ }
191
+ }
192
+ .cw-feedback-field {
193
+ display: grid;
194
+ gap: 7px;
195
+ font-weight: 600;
196
+ margin-top: 14px;
197
+ }
198
+ .cw-feedback-field textarea,
199
+ .cw-feedback-gap textarea {
200
+ width: 100%;
201
+ min-height: 58px;
202
+ resize: vertical;
203
+ border: 1px solid #cbd5e1;
204
+ border-radius: 8px;
205
+ padding: 10px;
206
+ font-weight: 400;
207
+ }
208
+ .cw-feedback-number {
209
+ display: inline-flex;
210
+ align-items: center;
211
+ border: 1px solid #cbd5e1;
212
+ border-radius: 8px;
213
+ padding: 4px 8px;
214
+ }
215
+ .cw-feedback-number input {
216
+ width: 64px;
217
+ border: 0;
218
+ outline: 0;
219
+ }
220
+ .cw-feedback-footer {
221
+ display: flex;
222
+ align-items: center;
223
+ justify-content: space-between;
224
+ margin-top: 12px;
225
+ color: #718096;
226
+ font-size: 12px;
227
+ }
228
+ .cw-feedback-primary {
229
+ border: 0;
230
+ border-radius: 7px;
231
+ background: #6025e5;
232
+ color: #fff;
233
+ padding: 8px 18px;
234
+ cursor: pointer;
235
+ }
236
+ .cw-feedback-gap {
237
+ display: grid;
238
+ gap: 11px;
239
+ background: #faf8ff;
240
+ border-radius: 10px;
241
+ padding: 11px;
242
+ margin-top: 12px;
243
+ }
244
+ .cw-feedback-severity {
245
+ margin: 0;
246
+ }
247
+ .cw-feedback-severity .critical.is-selected {
248
+ color: #dc2626;
249
+ border-color: #fca5a5;
250
+ background: #fff1f2;
251
+ }
252
+ .cw-feedback-severity .high.is-selected {
253
+ color: #ea580c;
254
+ border-color: #fdba74;
255
+ background: #fff7ed;
256
+ }
257
+ .cw-feedback-severity .medium.is-selected {
258
+ color: #a16207;
259
+ border-color: #fde68a;
260
+ background: #fefce8;
261
+ }
262
+ .cw-feedback-severity .low.is-selected {
263
+ color: #475569;
264
+ border-color: #94a3b8;
265
+ background: #f8fafc;
266
+ }
267
+ .cw-feedback-upload {
268
+ display: flex;
269
+ align-items: center;
270
+ gap: 6px;
271
+ width: max-content;
272
+ color: #5b21e6;
273
+ border: 1px dashed #c4b5fd;
274
+ border-radius: 7px;
275
+ padding: 8px 11px;
276
+ cursor: pointer;
277
+ }
278
+ .cw-feedback-upload input {
279
+ display: none;
280
+ }
281
+ .cw-feedback-capture-actions {
282
+ display: flex;
283
+ flex-wrap: wrap;
284
+ gap: 8px;
285
+ margin-top: 8px;
286
+ }
287
+ .cw-feedback-capture-actions .cw-feedback-upload {
288
+ background: transparent;
289
+ font: inherit;
290
+ }
291
+ .cw-feedback-capture-error {
292
+ margin: 6px 0 0;
293
+ color: #dc2626;
294
+ font-size: 12px;
295
+ }
296
+ body.cw-feedback-capturing .cw-feedback-prompt {
297
+ visibility: hidden !important;
298
+ }
299
+ .cw-feedback-files {
300
+ display: flex;
301
+ gap: 6px;
302
+ flex-wrap: wrap;
303
+ }
304
+ .cw-feedback-files span {
305
+ font-size: 11px;
306
+ background: #ede9fe;
307
+ padding: 4px 7px;
308
+ border-radius: 5px;
309
+ }
310
+ .cw-feedback-file-item {
311
+ display: flex;
312
+ align-items: center;
313
+ max-width: 190px;
314
+ border: 1px solid var(--cw-feedback-border, #c8b6ff);
315
+ border-radius: 7px;
316
+ background: #ede9fe;
317
+ }
318
+ .cw-feedback-file-preview {
319
+ display: flex;
320
+ align-items: center;
321
+ gap: 7px;
322
+ min-width: 0;
323
+ padding: 4px 7px;
324
+ border: 0;
325
+ background: transparent;
326
+ color: inherit;
327
+ cursor: zoom-in;
328
+ }
329
+ .cw-feedback-file-preview img {
330
+ width: 34px;
331
+ height: 34px;
332
+ flex: 0 0 34px;
333
+ object-fit: cover;
334
+ border-radius: 4px;
335
+ }
336
+ .cw-feedback-file-preview span {
337
+ overflow: hidden;
338
+ padding: 0;
339
+ background: none;
340
+ text-overflow: ellipsis;
341
+ white-space: nowrap;
342
+ }
343
+ .cw-feedback-file-preview:focus-visible {
344
+ outline: 2px solid var(--cw-feedback-accent, #6025e5);
345
+ outline-offset: 2px;
346
+ }
347
+ .cw-feedback-file-retry {
348
+ min-width: 0;
349
+ overflow: hidden;
350
+ padding: 4px 7px;
351
+ border: 0;
352
+ background: transparent;
353
+ color: var(--cw-feedback-accent, #6025e5);
354
+ cursor: pointer;
355
+ text-overflow: ellipsis;
356
+ white-space: nowrap;
357
+ }
358
+ .cw-feedback-file-name {
359
+ min-width: 0;
360
+ overflow: hidden;
361
+ padding: 4px 7px;
362
+ text-overflow: ellipsis;
363
+ white-space: nowrap;
364
+ }
365
+ .cw-feedback-file-remove {
366
+ display: grid;
367
+ flex: 0 0 26px;
368
+ place-items: center;
369
+ width: 26px;
370
+ height: 26px;
371
+ margin: 3px;
372
+ border: 0;
373
+ border-radius: 5px;
374
+ background: transparent;
375
+ color: var(--cw-feedback-muted, #718096);
376
+ cursor: pointer;
377
+ }
378
+ .cw-feedback-file-remove:hover,
379
+ .cw-feedback-file-remove:focus-visible {
380
+ background: #ddd6fe;
381
+ color: var(--cw-feedback-accent, #6025e5);
382
+ }
383
+ .cw-feedback-image-preview-backdrop {
384
+ position: fixed;
385
+ inset: 0;
386
+ z-index: 2147483647;
387
+ display: grid;
388
+ place-items: center;
389
+ padding: 24px;
390
+ background: #111827c7;
391
+ }
392
+ .cw-feedback-image-preview-dialog {
393
+ position: relative;
394
+ max-width: min(92vw, 1000px);
395
+ max-height: 90vh;
396
+ padding: 16px;
397
+ border-radius: 12px;
398
+ background: #fff;
399
+ box-shadow: 0 20px 55px #11182755;
400
+ }
401
+ .cw-feedback-image-preview-dialog img {
402
+ display: block;
403
+ max-width: 100%;
404
+ max-height: calc(90vh - 32px);
405
+ object-fit: contain;
406
+ }
407
+ .cw-feedback-image-preview-close {
408
+ position: absolute;
409
+ top: -12px;
410
+ right: -12px;
411
+ display: grid;
412
+ place-items: center;
413
+ width: 32px;
414
+ height: 32px;
415
+ border: 0;
416
+ border-radius: 50%;
417
+ background: #fff;
418
+ color: #172033;
419
+ cursor: pointer;
420
+ }
421
+ .cw-feedback-add {
422
+ border: 0;
423
+ background: none;
424
+ color: #5b21e6;
425
+ font-weight: 600;
426
+ margin-top: 12px;
427
+ cursor: pointer;
428
+ }
429
+ .cw-feedback-done {
430
+ float: right;
431
+ margin-top: 12px;
432
+ }
433
+ @media (max-width: 600px) {
434
+ .cw-feedback-backdrop {
435
+ align-items: flex-end;
436
+ padding: 0;
437
+ }
438
+ .cw-feedback-dialog {
439
+ border-radius: 16px 16px 0 0;
440
+ max-height: 88vh;
441
+ }
442
+ .cw-feedback-tooltip {
443
+ display: none;
444
+ }
445
+ }
446
+ .cw-feedback-prompt__label {
447
+ display: block;
448
+ border: 0;
449
+ background: none;
450
+ padding: 0;
451
+ color: inherit;
452
+ cursor: pointer;
453
+ }
454
+ .cw-feedback-review {
455
+ position: absolute;
456
+ right: 12px;
457
+ bottom: 11px;
458
+ border: 0;
459
+ background: none;
460
+ color: #5b21e6;
461
+ text-decoration: underline;
462
+ cursor: pointer;
463
+ }
464
+ .cw-feedback-prompt:has(.cw-feedback-review) {
465
+ display: grid;
466
+ grid-template-columns: max-content auto;
467
+ column-gap: 10px;
468
+ align-items: end;
469
+ min-width: 0;
470
+ }
471
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-stars {
472
+ grid-column: 1;
473
+ padding-right: 0;
474
+ }
475
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-prompt__label {
476
+ grid-column: 1 / -1;
477
+ }
478
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-review {
479
+ position: static;
480
+ grid-column: 2;
481
+ align-self: end;
482
+ padding: 0;
483
+ white-space: nowrap;
484
+ }
485
+ .cw-feedback-stars button:disabled {
486
+ cursor: default;
487
+ }
488
+ .cw-feedback-backdrop {
489
+ align-items: flex-end;
490
+ justify-content: flex-end;
491
+ padding: 0 24px 150px;
492
+ }
493
+ .cw-feedback-dialog {
494
+ position: relative;
495
+ margin: 0;
496
+ width: min(500px, calc(100vw - 48px));
497
+ }
498
+ .cw-feedback-dialog--wide {
499
+ width: min(820px, calc(100vw - 48px));
500
+ }
501
+ .cw-feedback-success {
502
+ text-align: center;
503
+ padding: 0;
504
+ }
505
+ .cw-feedback-success__check {
506
+ position: relative;
507
+ display: inline-flex;
508
+ align-items: center;
509
+ justify-content: center;
510
+ width: 66px;
511
+ height: 66px;
512
+ border-radius: 50%;
513
+ background: #bce8ce;
514
+ color: #fff;
515
+ animation: cw-feedback-success-pop 600ms cubic-bezier(.2, 1.5, .35, 1) both;
516
+ }
517
+ .cw-feedback-success__check::after {
518
+ content: "";
519
+ position: absolute;
520
+ inset: -7px;
521
+ border: 2px solid #86d9a5;
522
+ border-radius: 50%;
523
+ opacity: 0;
524
+ pointer-events: none;
525
+ animation: cw-feedback-success-ring 750ms 180ms ease-out both;
526
+ }
527
+ .cw-feedback-success__check svg :is(path, polyline) {
528
+ stroke-dasharray: 60;
529
+ stroke-dashoffset: 60;
530
+ animation: cw-feedback-success-draw 450ms 230ms ease-out forwards;
531
+ }
532
+ @keyframes cw-feedback-success-pop {
533
+ 0% { opacity: 0; transform: scale(.55); }
534
+ 65% { opacity: 1; transform: scale(1.12); }
535
+ 100% { opacity: 1; transform: scale(1); }
536
+ }
537
+ @keyframes cw-feedback-success-ring {
538
+ 0% { opacity: .7; transform: scale(.75); }
539
+ 100% { opacity: 0; transform: scale(1.35); }
540
+ }
541
+ @keyframes cw-feedback-success-draw {
542
+ to { stroke-dashoffset: 0; }
543
+ }
544
+ @media (prefers-reduced-motion: reduce) {
545
+ .cw-feedback-success__check,
546
+ .cw-feedback-success__check::after,
547
+ .cw-feedback-success__check svg :is(path, polyline) {
548
+ animation: none;
549
+ }
550
+ .cw-feedback-success__check svg :is(path, polyline) {
551
+ stroke-dashoffset: 0;
552
+ }
553
+ }
554
+ .cw-feedback-success h2 {
555
+ font-size: 25px;
556
+ color: #16a34a;
557
+ margin-top: 14px;
558
+ }
559
+ .cw-feedback-success p {
560
+ font-size: 15px;
561
+ color: #172033;
562
+ }
563
+ @media (max-width: 600px) {
564
+ .cw-feedback-backdrop {
565
+ align-items: flex-end;
566
+ padding: 0 12px 126px;
567
+ }
568
+ .cw-feedback-dialog,
569
+ .cw-feedback-dialog--wide {
570
+ width: calc(100vw - 24px);
571
+ border-radius: 14px;
572
+ }
573
+ }
574
+ .cw-feedback-backdrop {
575
+ padding: 0;
576
+ align-items: initial;
577
+ justify-content: initial;
578
+ }
579
+ .cw-feedback-dialog {
580
+ position: fixed;
581
+ right: auto;
582
+ bottom: auto;
583
+ max-height: min(78vh, 680px);
584
+ border-radius: 14px;
585
+ }
586
+ .cw-feedback-dialog__topbar:empty {
587
+ display: none;
588
+ }
589
+ .cw-feedback-rating-options {
590
+ justify-content: space-between;
591
+ }
592
+ .cw-feedback-rating-options button {
593
+ padding: 6px 10px;
594
+ }
595
+ .cw-feedback-primary {
596
+ margin-top: 8px;
597
+ }
598
+ .cw-feedback-gap {
599
+ margin-top: 0;
600
+ }
601
+ .cw-feedback-gap textarea {
602
+ min-height: 105px;
603
+ }
604
+ .cw-feedback-gap > strong,
605
+ .cw-feedback-gap > .cw-feedback-severity,
606
+ .cw-feedback-gap > .cw-feedback-upload,
607
+ .cw-feedback-gap > .cw-feedback-files {
608
+ margin-top: 8px;
609
+ }
610
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-prompt__label {
611
+ color: #16a34a;
612
+ }
613
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-stars {
614
+ padding-right: 0;
615
+ }
616
+ .cw-feedback-hint {
617
+ font-size: 12px;
618
+ color: #718096;
619
+ margin: 12px 0 0;
620
+ }
621
+ .cw-feedback-dialog {
622
+ box-sizing: border-box;
623
+ }
624
+ .cw-feedback-range {
625
+ position: relative;
626
+ margin-top: 46px;
627
+ }
628
+ .cw-feedback-range input {
629
+ display: block;
630
+ }
631
+ .cw-feedback-range-tooltip {
632
+ position: absolute;
633
+ bottom: calc(100% + 10px);
634
+ transform: translateX(-50%);
635
+ width: max-content;
636
+ max-width: 90%;
637
+ padding: 7px 12px;
638
+ border-radius: 7px;
639
+ background: #344054;
640
+ color: #fff;
641
+ font-size: 13px;
642
+ white-space: nowrap;
643
+ box-shadow: 0 3px 8px #1118272b;
644
+ }
645
+ .cw-feedback-range-tooltip:after {
646
+ content: "";
647
+ position: absolute;
648
+ top: 100%;
649
+ left: 50%;
650
+ transform: translateX(-50%);
651
+ border: 6px solid transparent;
652
+ border-top-color: #344054;
653
+ }
654
+ .cw-feedback-hint-action {
655
+ display: block;
656
+ border: 0;
657
+ background: none;
658
+ padding: 0;
659
+ text-align: left;
660
+ cursor: pointer;
661
+ }
662
+ .cw-feedback-range {
663
+ margin-top: 72px;
664
+ }
665
+ .cw-feedback-range-tooltip {
666
+ box-sizing: border-box;
667
+ width: 300px;
668
+ max-width: calc(100% - 16px);
669
+ white-space: normal;
670
+ text-align: center;
671
+ line-height: 1.35;
672
+ z-index: 2;
673
+ }
674
+ @media (max-width: 360px) {
675
+ .cw-feedback-range-tooltip {
676
+ left: 50% !important;
677
+ }
678
+ }
679
+ .cw-feedback-submit-error {
680
+ clear: both;
681
+ color: #dc2626;
682
+ font-size: 12px;
683
+ padding-top: 8px;
684
+ }
685
+ .cw-feedback-prompt,
686
+ .cw-feedback-dialog {
687
+ background: var(--cw-feedback-surface);
688
+ border-color: var(--cw-feedback-border);
689
+ color: var(--cw-feedback-text);
690
+ }
691
+ .cw-feedback-prompt__label,
692
+ .cw-feedback-review,
693
+ .cw-feedback-add,
694
+ .cw-feedback-upload {
695
+ color: var(--cw-feedback-accent);
696
+ }
697
+ .cw-feedback-prompt:has(.cw-feedback-review) .cw-feedback-prompt__label,
698
+ .cw-feedback-success h2 {
699
+ color: var(--cw-feedback-success);
700
+ }
701
+ .cw-feedback-subtitle,
702
+ .cw-feedback-hint,
703
+ .cw-feedback-footer {
704
+ color: var(--cw-feedback-muted);
705
+ }
706
+ .cw-feedback-primary,
707
+ .cw-feedback-rating-options button.is-selected,
708
+ .cw-feedback-pills button.is-selected {
709
+ background: var(--cw-feedback-accent);
710
+ border-color: var(--cw-feedback-accent);
711
+ color: var(--cw-feedback-surface);
712
+ }
713
+ .cw-feedback-dialog input[type="range"] {
714
+ accent-color: var(--cw-feedback-accent);
715
+ }
716
+ .cw-feedback-gap {
717
+ background: var(--cw-feedback-gap-surface);
718
+ }
719
+ .cw-feedback-tooltip,
720
+ .cw-feedback-range-tooltip {
721
+ background: var(--cw-feedback-tooltip-bg);
722
+ color: var(--cw-feedback-tooltip-text);
723
+ }
724
+ .cw-feedback-range-tooltip:after {
725
+ border-top-color: var(--cw-feedback-tooltip-bg);
726
+ }
727
+ .cw-feedback-rating-options button,
728
+ .cw-feedback-pills button,
729
+ .cw-feedback-severity button,
730
+ .cw-feedback-field textarea,
731
+ .cw-feedback-gap textarea,
732
+ .cw-feedback-number {
733
+ color: var(--cw-feedback-text);
734
+ border-color: var(--cw-feedback-border);
735
+ background: var(--cw-feedback-surface);
736
+ }
737
+ .cw-feedback-field textarea::placeholder,
738
+ .cw-feedback-gap textarea::placeholder {
739
+ color: var(--cw-feedback-muted);
740
+ }
741
+ .cw-feedback-backdrop {
742
+ z-index: 10000;
743
+ }
744
+ .cw-feedback-dialog {
745
+ z-index: 10001;
746
+ }
747
+ .cw-feedback-dialog--success {
748
+ width: min(820px, calc(100vw - 48px));
749
+ }
750
+ .cw-feedback-success__coming-soon {
751
+ display: flex;
752
+ flex-direction: column;
753
+ align-items: center;
754
+ gap: 4px;
755
+ margin: 24px auto 0;
756
+ padding: 20px 22px;
757
+ border: 1px solid #dce1e9;
758
+ border-radius: 18px;
759
+ background: #f5f6f8;
760
+ color: #8791a1;
761
+ font-size: 16px;
762
+ font-weight: 600;
763
+ }
764
+ .cw-feedback-success__leaderboard-icon {
765
+ width: 52px;
766
+ height: 52px;
767
+ opacity: .7;
768
+ }
769
+ .cw-feedback-success__leaderboard-title {
770
+ color: #687386;
771
+ }
772
+ .cw-feedback-success__leaderboard-status {
773
+ font-size: 12px;
774
+ font-weight: 500;
775
+ }
776
+ .cw-feedback-range {
777
+ margin-top: 24px;
778
+ }
779
+ .cw-feedback-low-rating-intro {
780
+ margin: 0 0 10px;
781
+ padding: 14px 12px;
782
+ text-align: center;
783
+ border-radius: 10px;
784
+ background: linear-gradient(135deg, #e9ddff, #f7f2ff);
785
+ color: var(--cw-feedback-accent);
786
+ }
787
+ .cw-feedback-low-rating-intro__emoji {
788
+ font-size: 23px;
789
+ line-height: 1.2;
790
+ margin-bottom: 4px;
791
+ }
792
+ .cw-feedback-low-rating-intro strong {
793
+ display: block;
794
+ font-size: 14px;
795
+ }
796
+ .cw-feedback-low-rating-intro p {
797
+ margin: 4px 0 0;
798
+ font-size: 12px;
799
+ }
800
+ .cw-feedback-useful-prompt {
801
+ margin: 0 0 8px;
802
+ color: var(--cw-feedback-accent);
803
+ font-size: 13px;
804
+ }
805
+ .cw-feedback-inline-detail-prompt {
806
+ margin: 0;
807
+ color: var(--cw-feedback-accent);
808
+ font-size: 13px;
809
+ font-weight: 400;
810
+ line-height: 1.35;
811
+ }
812
+ .cw-feedback-dialog__content > .cw-feedback-inline-detail-prompt {
813
+ margin-bottom: 10px;
814
+ }
815
+ .cw-feedback-useful-field {
816
+ margin-top: 8px;
817
+ }
818
+ .cw-feedback-time-title {
819
+ margin-top: 5px !important;
820
+ }
821
+ .cw-feedback-dialog {
822
+ overflow: hidden;
823
+ }
824
+ .cw-feedback-dialog--wide {
825
+ padding: 16px;
826
+ }
827
+ .cw-feedback-dialog--wide .cw-feedback-dialog__topbar {
828
+ min-height: 18px;
829
+ }
830
+ .cw-feedback-dialog--wide h2 {
831
+ font-size: 16px;
832
+ line-height: 1.25;
833
+ margin: 3px 0 7px;
834
+ }
835
+ .cw-feedback-dialog--wide .cw-feedback-low-rating-intro {
836
+ padding: 8px 10px;
837
+ margin-bottom: 8px;
838
+ }
839
+ .cw-feedback-dialog--wide .cw-feedback-low-rating-intro__emoji {
840
+ font-size: 19px;
841
+ margin-bottom: 2px;
842
+ }
843
+ .cw-feedback-dialog--wide .cw-feedback-low-rating-intro p {
844
+ margin-top: 3px;
845
+ }
846
+ .cw-feedback-dialog--wide .cw-feedback-gap {
847
+ padding: 7px;
848
+ gap: 6px;
849
+ }
850
+ .cw-feedback-dialog--wide .cw-feedback-gap textarea {
851
+ height: 64px;
852
+ min-height: 64px;
853
+ max-height: 64px;
854
+ resize: none;
855
+ padding: 7px 9px;
856
+ }
857
+ .cw-feedback-dialog--wide .cw-feedback-gap > strong {
858
+ font-size: 13px;
859
+ }
860
+ .cw-feedback-dialog--wide .cw-feedback-severity {
861
+ gap: 6px;
862
+ }
863
+ .cw-feedback-dialog--wide .cw-feedback-severity button {
864
+ padding: 5px 9px;
865
+ }
866
+ .cw-feedback-dialog--wide .cw-feedback-upload {
867
+ padding: 6px 9px;
868
+ }
869
+ .cw-feedback-dialog--wide .cw-feedback-files {
870
+ gap: 4px;
871
+ }
872
+ .cw-feedback-dialog--wide {
873
+ padding-bottom: 16px;
874
+ }
875
+ .cw-feedback-dialog--has-action {
876
+ padding-bottom: 16px;
877
+ }
878
+ .cw-feedback-dialog--wide .cw-feedback-done {
879
+ position: absolute;
880
+ right: 16px;
881
+ bottom: 14px;
882
+ float: none;
883
+ margin: 0;
884
+ }
885
+ .cw-feedback-dialog--wide .cw-feedback-gap textarea {
886
+ height: 52px;
887
+ min-height: 52px;
888
+ max-height: 52px;
889
+ }
890
+ .cw-feedback-dialog--wide.cw-feedback-dialog--low-intro .cw-feedback-gap textarea {
891
+ height: 100px;
892
+ min-height: 100px;
893
+ max-height: 100px;
894
+ }
895
+ .cw-feedback-dialog {
896
+ display: flex;
897
+ flex-direction: column;
898
+ overflow: hidden;
899
+ }
900
+ .cw-feedback-dialog__content {
901
+ min-height: 0;
902
+ flex: 0 1 auto;
903
+ overflow-x: hidden;
904
+ overflow-y: auto;
905
+ }
906
+ .cw-feedback-dialog__action {
907
+ display: flex;
908
+ flex: 0 0 auto;
909
+ align-items: center;
910
+ justify-content: space-between;
911
+ gap: 12px;
912
+ padding-top: 8px;
913
+ }
914
+ .cw-feedback-dialog__action .cw-feedback-hint {
915
+ margin: 0;
916
+ }
917
+ .cw-feedback-dialog__action .cw-feedback-primary {
918
+ margin-top: 0;
919
+ margin-left: auto;
920
+ }
921
+ .cw-feedback-footer .cw-feedback-hint-action {
922
+ color: inherit;
923
+ }
924
+ .cw-feedback-hint-action:hover {
925
+ text-decoration: underline;
926
+ }
927
+ .cw-feedback-hint-action:focus-visible {
928
+ outline: 2px solid var(--cw-feedback-accent);
929
+ outline-offset: 3px;
930
+ }
931
+ .cw-feedback-dialog--has-action {
932
+ padding-bottom: 16px;
933
+ }
934
+ .cw-feedback-dialog {
935
+ max-height: min(90vh, 820px);
936
+ }
937
+ /* A federated remote can load an older feedback stylesheet after this one. */
938
+ body .cw-feedback-dialog {
939
+ padding: 16px;
940
+ }
941
+ @media (max-width: 600px) {
942
+ .cw-feedback-dialog,
943
+ .cw-feedback-dialog--wide {
944
+ max-height: 90vh;
945
+ }
946
+ }
947
+ .cw-feedback-review-nav {
948
+ display: flex;
949
+ flex: 0 0 auto;
950
+ justify-content: flex-end;
951
+ gap: 8px;
952
+ padding-top: 12px;
953
+ }
954
+ .cw-feedback-review-nav__button {
955
+ display: inline-flex;
956
+ align-items: center;
957
+ justify-content: center;
958
+ gap: 7px;
959
+ min-width: 36px;
960
+ min-height: 36px;
961
+ padding: 7px 10px;
962
+ border: 0;
963
+ border-radius: 7px;
964
+ background: #ddd6fe;
965
+ color: var(--cw-feedback-accent);
966
+ cursor: pointer;
967
+ }
968
+ .cw-feedback-review-nav__button--next {
969
+ background: var(--cw-feedback-accent);
970
+ color: #fff;
971
+ }
972
+ .cw-feedback-review-nav__button:disabled {
973
+ opacity: 0.55;
974
+ cursor: not-allowed;
975
+ }
976
+ .cw-feedback-review-nav__button:focus-visible {
977
+ outline: 2px solid var(--cw-feedback-accent);
978
+ outline-offset: 2px;
979
+ }
980
+ .cw-feedback-saving-overlay {
981
+ position: absolute;
982
+ inset: 0;
983
+ z-index: 1;
984
+ display: grid;
985
+ place-items: center;
986
+ background: #ffffffdc;
987
+ cursor: wait;
988
+ }
989
+ .cw-feedback-saving-overlay__card {
990
+ display: flex;
991
+ align-items: center;
992
+ justify-content: center;
993
+ gap: 12px;
994
+ min-width: 220px;
995
+ padding: 16px;
996
+ border: 1px solid var(--cw-feedback-border, #c8b6ff);
997
+ border-radius: 12px;
998
+ background: #fff;
999
+ box-shadow: 0 18px 50px #11182740;
1000
+ color: var(--cw-feedback-accent);
1001
+ font-weight: 600;
1002
+ }
1003
+ .cw-feedback-saving__spinner {
1004
+ width: 24px;
1005
+ height: 24px;
1006
+ border: 3px solid var(--cw-feedback-border, #c8b6ff);
1007
+ border-top-color: var(--cw-feedback-accent);
1008
+ border-radius: 50%;
1009
+ animation: cw-feedback-spin .7s linear infinite;
1010
+ }
1011
+ .cw-feedback-primary:disabled,
1012
+ .cw-feedback-hint-action:disabled {
1013
+ opacity: .55;
1014
+ cursor: wait;
1015
+ }
1016
+ @keyframes cw-feedback-spin {
1017
+ to { transform: rotate(360deg); }
1018
+ }
1019
+ .cw-feedback-gap-list {
1020
+ display: grid;
1021
+ gap: 16px;
1022
+ }
1023
+ .cw-feedback-gap__header {
1024
+ display: flex;
1025
+ align-items: center;
1026
+ justify-content: space-between;
1027
+ color: var(--cw-feedback-muted, #718096);
1028
+ font-size: 13px;
1029
+ font-weight: 600;
1030
+ }
1031
+ .cw-feedback-gap--collapsed {
1032
+ padding: 0 !important;
1033
+ }
1034
+ .cw-feedback-gap--collapsed .cw-feedback-gap__header {
1035
+ width: 100%;
1036
+ }
1037
+ .cw-feedback-gap__toggle {
1038
+ display: flex;
1039
+ align-items: center;
1040
+ gap: 8px;
1041
+ flex: 1;
1042
+ min-width: 0;
1043
+ padding: 8px 10px;
1044
+ border: 0;
1045
+ background: transparent;
1046
+ color: inherit;
1047
+ font: inherit;
1048
+ text-align: left;
1049
+ cursor: pointer;
1050
+ }
1051
+ .cw-feedback-gap__toggle svg {
1052
+ margin-left: auto;
1053
+ }
1054
+ .cw-feedback-gap__severity {
1055
+ padding: 2px 6px;
1056
+ border: 1px solid currentColor;
1057
+ border-radius: 6px;
1058
+ font-size: 11px;
1059
+ }
1060
+ .cw-feedback-gap__severity.critical { color: #dc2626; }
1061
+ .cw-feedback-gap__severity.high { color: #ea580c; }
1062
+ .cw-feedback-gap__severity.medium { color: #ca8a04; }
1063
+ .cw-feedback-gap__severity.low { color: #64748b; }
1064
+ .cw-feedback-gap__detail-prompt {
1065
+ margin: 0 0 8px;
1066
+ }
1067
+ .cw-feedback-gap__remove {
1068
+ display: inline-flex;
1069
+ align-items: center;
1070
+ gap: 5px;
1071
+ border: 0;
1072
+ background: transparent;
1073
+ color: #dc2626;
1074
+ cursor: pointer;
1075
+ font: inherit;
1076
+ font-weight: 600;
1077
+ }
1078
+ .cw-feedback-gap__remove:hover {
1079
+ text-decoration: underline;
1080
+ }
1081
+ .cw-feedback-dialog .cw-feedback-severity button {
1082
+ border: 1.5px solid #cbd5e1;
1083
+ border-color: color-mix(in srgb, var(--cw-feedback-severity-color, #64748b) 35%, white);
1084
+ border-radius: 10px;
1085
+ background: #fff;
1086
+ color: var(--cw-feedback-severity-color, #64748b);
1087
+ padding: 6px 12px;
1088
+ font-weight: 500;
1089
+ }
1090
+ .cw-feedback-dialog .cw-feedback-severity button.is-selected {
1091
+ border-width: 2px;
1092
+ font-weight: 600;
1093
+ }