@opengovsg/confetti 0.1.8 → 0.2.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.
@@ -1,585 +1,4 @@
1
- :root {
2
- --confetti-font-scale: 16px;
3
- /* Define CSS Variables with defaults */
4
- --confetti-box-padding: 24px;
5
- --confetti-max-width: 300px;
6
- --confetti-z-index: 2147483647;
7
- --confetti-border-color: #e4e4e7;
8
- --confetti-border-bottom: 1.5px solid var(--confetti-border-color);
9
- --confetti-border-radius: 12px;
10
- --confetti-background-color: #ffffff;
11
- --confetti-hover-background-color: #f5f5f5;
12
- --confetti-box-shadow:
13
- 0 4px 6px -4px rgba(16, 24, 40, 0.1), 0 10px 15px -3px rgba(0, 0, 0, 0.1);
14
- --confetti-focus-shadow: 0 0 0 2px rgba(9, 9, 11, 0.3);
15
- --confetti-submit-button-color: #18181b;
16
- --confetti-submit-button-text-color: #fafafa;
17
- --confetti-rating-bg-color: white;
18
- --confetti-rating-text-color: #09090b;
19
- --confetti-rating-active-bg-color: #09090b;
20
- --confetti-rating-active-text-color: white;
21
-
22
- --confetti-indicator-active-bg-color: var(--confetti-rating-text-color);
23
- --confetti-indicator-active-dot-color: white;
24
-
25
- --confetti-text-primary-color: #09090b;
26
- --confetti-text-subtle-color: #71717a;
27
-
28
- /* Widget/Embedded Tab CSS Variables */
29
- --confetti-widget-color: #e0a045; /* Default color */
30
- --confetti-widget-text-color: white; /* Default text color (usually white for contrast) */
31
- --confetti-scrollbar-thumb-color: var(--confetti-border-color);
32
- --confetti-scrollbar-track-color: var(--confetti-background-color);
33
- --confetti-outline-color: rgba(9, 9, 11, 0.8);
34
- --confetti-input-background: white;
35
- --confetti-input-text-color: #020617;
36
- --confetti-disabled-button-opacity: 0.6;
37
- }
38
-
39
- /* Popover Confetti CSS classes */
40
- .confetti-dialog {
41
- width: var(--confetti-max-width);
42
- max-height: 95dvh;
43
- overflow: auto;
44
- max-width: 100%;
45
- background: transparent;
46
- position: relative;
47
- box-shadow: var(--confetti-box-shadow);
48
- border: 1px solid var(--confetti-border-color);
49
- border-radius: var(--confetti-border-radius);
50
- background: var(--confetti-background-color);
51
- padding: var(--confetti-box-padding);
52
-
53
- .confetti-dialog-close {
54
- position: absolute;
55
- top: 8px;
56
- right: 8px;
57
- background: transparent;
58
- border: none;
59
- cursor: pointer;
60
- padding: 8px;
61
- border-radius: 8px;
62
- transition: background 200ms;
63
-
64
- & svg {
65
- width: 16px;
66
- height: 16px;
67
- color: var(--confetti-text-subtle-color);
68
- }
69
-
70
- &:hover {
71
- background: rgba(0, 0, 0, 0.05);
72
- }
73
-
74
- &:focus-visible {
75
- outline: 2px solid var(--confetti-outline-color);
76
- outline-offset: 2px;
77
- }
78
- }
79
-
80
- /* Adjust title padding to accommodate close button */
81
- .cf-header {
82
- .cf-title {
83
- padding-right: 20px;
84
- }
85
- }
86
- }
87
-
88
- /* Modal Confetti CSS classes */
89
- .confetti-modal-overlay {
90
- position: fixed;
91
- inset: 0;
92
- z-index: var(--confetti-z-index);
93
- background: rgba(0, 0, 0, 0.4);
94
- display: flex;
95
- justify-content: center;
96
- overflow-y: auto;
97
- overscroll-behavior: none;
98
- padding: 10vh 0;
99
- }
100
-
101
- .confetti-modal {
102
- margin: auto;
103
-
104
- .confetti-modal-dialog {
105
- width: var(--confetti-max-width);
106
- max-width: 100%;
107
- position: relative;
108
- box-shadow: var(--confetti-box-shadow);
109
- border: 1px solid var(--confetti-border-color);
110
- border-radius: var(--confetti-border-radius);
111
- background: var(--confetti-background-color);
112
- padding: var(--confetti-box-padding);
113
-
114
- &:focus-visible {
115
- outline: none;
116
- }
117
-
118
- .confetti-modal-dialog-close {
119
- position: absolute;
120
- top: 8px;
121
- right: 8px;
122
- background: transparent;
123
- border: none;
124
- cursor: pointer;
125
- padding: 8px;
126
- border-radius: 8px;
127
- transition: background 200ms;
128
-
129
- & svg {
130
- width: 16px;
131
- height: 16px;
132
- color: var(--confetti-text-subtle-color);
133
- }
134
-
135
- &:hover {
136
- background: rgba(0, 0, 0, 0.05);
137
- }
138
-
139
- &:focus-visible {
140
- outline: 2px solid var(--confetti-outline-color);
141
- outline-offset: 2px;
142
- }
143
- }
144
-
145
- /* Adjust title padding to accommodate close button */
146
- .cf-header {
147
- .cf-title {
148
- padding-right: 20px;
149
- }
150
- }
151
- }
152
- }
153
-
154
- .confetti {
155
- font-family: var(--confetti-font-family);
156
- display: flex;
157
- flex-direction: column;
158
- gap: 16px;
159
- color: var(--confetti-text-primary-color);
160
- font-size: var(--confetti-font-scale);
161
- width: 100%;
162
-
163
- .cf-submit-button {
164
- align-self: end;
165
- color: var(--confetti-submit-button-text-color);
166
- background: var(--confetti-submit-button-color);
167
- padding: 8px 16px;
168
- border-radius: 8px;
169
- cursor: pointer;
170
- transition: transform 200ms;
171
- font-size: 0.875em;
172
- font-weight: 500;
173
- line-height: 20px;
174
-
175
- transition: background 200ms ease-out;
176
-
177
- &:focus-visible {
178
- outline: 2px solid var(--confetti-outline-color);
179
- outline-offset: 2px;
180
- }
181
-
182
- &[data-disabled] {
183
- opacity: var(--confetti-disabled-button-opacity);
184
- cursor: not-allowed;
185
- transform: none;
186
- }
187
-
188
- &:hover {
189
- background: color-mix(
190
- in srgb,
191
- white 10%,
192
- var(--confetti-submit-button-color)
193
- );
194
- }
195
-
196
- &:active {
197
- background: color-mix(
198
- in srgb,
199
- white 5%,
200
- var(--confetti-submit-button-color)
201
- );
202
- }
203
- }
204
-
205
- .sr-only {
206
- clip: rect(0, 0, 0, 0);
207
- border: 0;
208
- height: 1px;
209
- margin: -1px;
210
- overflow: hidden;
211
- padding: 0;
212
- position: absolute;
213
- white-space: nowrap;
214
- width: 1px;
215
- }
216
-
217
- .cf-response-choices {
218
- display: flex;
219
- flex-direction: column;
220
- gap: 12px;
221
- }
222
-
223
- .cf-choice {
224
- font-size: 1em;
225
- cursor: pointer;
226
- padding: 8px 10px;
227
- border-radius: 6px;
228
- border: 1px solid var(--confetti-border-color);
229
-
230
- transition: background 200ms ease-out;
231
-
232
- &:hover {
233
- background: var(--confetti-hover-background-color);
234
- }
235
-
236
- .cf-choice-label {
237
- gap: 8px;
238
- display: inline-flex;
239
- align-items: center;
240
- }
241
-
242
- .cf-choice-description {
243
- font-size: 0.875em;
244
- margin-left: 26px;
245
- color: var(--confetti-text-subtle-color);
246
- }
247
- }
248
-
249
- .cf-response-choices-tag {
250
- flex-direction: row;
251
- flex-wrap: wrap;
252
- gap: 8px;
253
- }
254
-
255
- .cf-tag-input {
256
- display: none;
257
-
258
- &[data-visible='true'] {
259
- display: inline;
260
- }
261
- }
262
-
263
- .cf-tag {
264
- border-radius: 8px;
265
- padding: 6px 12px;
266
- font-weight: 500;
267
- font-size: 0.875em;
268
- transition:
269
- background 200ms ease-out,
270
- border-color 200ms ease-out;
271
-
272
- &[data-selected='true'] {
273
- background: var(--confetti-indicator-active-bg-color);
274
- border-color: var(--confetti-indicator-active-bg-color);
275
- color: var(--confetti-indicator-active-dot-color);
276
- }
277
-
278
- &[data-focus-visible='true'] {
279
- outline: 2px solid var(--confetti-outline-color);
280
- outline-offset: 2px;
281
- }
282
-
283
- &:active {
284
- scale: 0.96;
285
- }
286
- }
287
-
288
- .cf-radio,
289
- .cf-checkbox {
290
- cursor: pointer;
291
- display: flex;
292
- flex-direction: column;
293
- /* This is needed so the hidden input is positioned correctly */
294
- position: relative;
295
- align-items: start;
296
- color: var(--confetti-text-primary-color);
297
- forced-color-adjust: none;
298
- }
299
-
300
- .cf-checkbox {
301
- --checkmark-color: var(--confetti-indicator-active-dot-color);
302
-
303
- .cf-checkbox-indicator {
304
- background: white;
305
- border: 1px solid var(--confetti-border-color);
306
- width: 18px;
307
- height: 18px;
308
- box-sizing: border-box;
309
- border-radius: 4px;
310
- transition: color 200ms ease-out;
311
-
312
- display: flex;
313
- align-items: center;
314
- justify-content: center;
315
- flex-shrink: 0;
316
- }
317
-
318
- svg {
319
- width: calc(100% - 8px);
320
- height: calc(100% - 8px);
321
- fill: none;
322
- stroke: var(--checkmark-color);
323
- stroke-width: 3px;
324
- stroke-dasharray: 22px;
325
- stroke-dashoffset: 66;
326
- stroke-linecap: round;
327
- stroke-linejoin: round;
328
- transition: all 200ms;
329
- }
330
-
331
- &[data-focus-visible='true'] {
332
- .cf-checkbox-indicator {
333
- outline: 2px solid var(--confetti-outline-color);
334
- outline-offset: 2px;
335
- }
336
- }
337
- &[data-selected],
338
- &[data-indeterminate] {
339
- .cf-checkbox-indicator {
340
- background: var(--confetti-indicator-active-bg-color);
341
- border: none;
342
- }
343
- svg {
344
- stroke-dashoffset: 44;
345
- }
346
- }
347
-
348
- &[data-indeterminate] {
349
- svg {
350
- stroke: none;
351
- fill: var(--checkmark-color);
352
- }
353
- }
354
- }
355
-
356
- .cf-radio {
357
- -webkit-tap-highlight-color: transparent;
358
- --dot-color: var(--confetti-indicator-active-dot-color);
359
-
360
- .cf-radio-indicator {
361
- position: relative;
362
- width: 18px;
363
- height: 18px;
364
- flex-shrink: 0;
365
- box-sizing: border-box;
366
- border-radius: 50%;
367
- transition: color 200ms ease-out;
368
- border: 1px solid var(--confetti-border-color);
369
- background: white;
370
-
371
- &::after {
372
- content: '';
373
- position: absolute;
374
- inset: 1px;
375
- border-radius: inherit;
376
- background: transparent;
377
- transition: scale 200ms;
378
- scale: 0;
379
- }
380
- }
381
-
382
- &[data-selected] {
383
- .cf-radio-indicator {
384
- background: var(--confetti-indicator-active-bg-color);
385
- border-color: var(--confetti-indicator-active-bg-color);
386
-
387
- &::after {
388
- background: var(--dot-color);
389
- scale: 0.4;
390
- }
391
- }
392
- }
393
-
394
- &[data-disabled] {
395
- color: var(--text-color-disabled);
396
- --dot-color: var(--text-color-disabled);
397
- }
398
-
399
- &[data-focus-visible='true'] {
400
- .cf-radio-indicator {
401
- outline: 2px solid var(--confetti-outline-color);
402
- outline-offset: 2px;
403
- }
404
- }
405
- }
406
-
407
- .cf-input,
408
- .cf-textarea {
409
- background: var(--confetti-input-background);
410
- border: 1px solid var(--confetti-border-color);
411
- border-radius: 8px;
412
- color: var(--confetti-input-text-color);
413
- padding: 10px;
414
- transition:
415
- border-color 0.2s ease-out,
416
- box-shadow 0.2s ease-out,
417
- transform 0.15s ease-out;
418
-
419
- &:focus {
420
- border-color: var(--confetti-outline-color);
421
- box-shadow: var(--confetti-focus-shadow);
422
- outline: none;
423
- }
424
- }
425
-
426
- .cf-question {
427
- display: flex;
428
- flex-direction: column;
429
- gap: 16px;
430
-
431
- .cf-error {
432
- display: none;
433
- }
434
-
435
- .cf-header {
436
- display: flex;
437
- flex-direction: column;
438
- gap: 2px;
439
-
440
- .cf-title {
441
- line-height: 24px;
442
- font-weight: 500;
443
- }
444
-
445
- .cf-label-optional {
446
- font-weight: 400;
447
- color: var(--confetti-text-subtle-color);
448
- }
449
-
450
- .cf-description {
451
- font-size: 0.875em;
452
- line-height: 20px;
453
- font-weight: 400;
454
- color: var(--confetti-text-subtle-color);
455
- }
456
- }
457
-
458
- .cf-others-choice {
459
- display: flex;
460
- flex-direction: column;
461
- gap: 8px;
462
- }
463
- }
464
-
465
- .cf-rating-section {
466
- display: flex;
467
- flex-direction: column;
468
- gap: 4px;
469
- }
470
-
471
- .cf-rating-emoji {
472
- opacity: 0.5;
473
- }
474
-
475
- .cf-rating-display-star,
476
- .cf-rating-display-emoji {
477
- display: grid;
478
- grid-template-columns: repeat(auto-fit, 40px);
479
- justify-content: space-between;
480
- gap: 8px;
481
-
482
- .cf-rating-emoji,
483
- .cf-rating-star {
484
- font-size: 1em;
485
- background-color: transparent;
486
- border: none;
487
- padding: 0;
488
- transition: transform 0.15s ease-out;
489
- color: var(--confetti-rating-active-bg-color);
490
-
491
- &[data-focus-visible='true'] {
492
- outline: 2px solid var(--confetti-outline-color);
493
- outline-offset: 2px;
494
- }
495
-
496
- &:hover {
497
- cursor: pointer;
498
- transform: scale(1.15);
499
- opacity: 1 !important;
500
- }
501
-
502
- &[data-filled='true'] {
503
- opacity: 1;
504
- }
505
-
506
- &[data-selected='true'] {
507
- opacity: 1;
508
- }
509
-
510
- & svg {
511
- /* Smooth color transitions */
512
- transition: fill 0.15s ease-out;
513
- }
514
- }
515
- }
516
-
517
- .cf-rating-text {
518
- display: flex;
519
- justify-content: space-between;
520
- font-size: 0.75em;
521
- color: var(--confetti-text-subtle-color);
522
- font-weight: 500;
523
- line-height: 1;
524
-
525
- .cf-rating-text-lower {
526
- flex: 1;
527
- text-align: start;
528
- }
529
-
530
- .cf-rating-text-upper {
531
- flex: 1;
532
- text-align: end;
533
- }
534
- }
535
-
536
- /* Special classes to make previous radio filled with color when one is selected */
537
- .cf-rating-display-star {
538
- .cf-rating-star[data-selected='true'] ~ .cf-rating-star {
539
- opacity: 0.5;
540
- }
541
- }
542
-
543
- .cf-rating-display-number {
544
- display: grid;
545
- grid-auto-columns: 1fr;
546
- grid-auto-flow: column;
547
- border: 1px solid var(--confetti-border-color);
548
- border-radius: 8px;
549
- overflow: hidden;
550
-
551
- .cf-rating-number {
552
- border-right: 1px solid var(--confetti-border-color);
553
- text-align: center;
554
- cursor: pointer;
555
- color: var(--confetti-rating-text-color);
556
- border-left: none;
557
- border-top: none;
558
- border-bottom: none;
559
- font-weight: 700;
560
- padding: 8px 0;
561
- margin-top: -1px;
562
- margin-bottom: -1px;
563
-
564
- &:first-of-type {
565
- border-top-left-radius: 8px;
566
- border-bottom-left-radius: 8px;
567
- }
568
-
569
- &:last-of-type {
570
- border-top-right-radius: 8px;
571
- border-bottom-right-radius: 8px;
572
- border-right: 0;
573
- }
574
-
575
- &[data-focus-visible='true'] {
576
- box-shadow: inset 0 0 0 1px var(--confetti-outline-color);
577
- }
578
-
579
- &[data-selected='true'] {
580
- background: var(--confetti-rating-active-bg-color);
581
- color: var(--confetti-rating-active-text-color);
582
- }
583
- }
584
- }
585
- }
1
+ :root{--confetti-font-scale: 16px;--confetti-box-padding: 24px;--confetti-max-width: 300px;--confetti-z-index: 2147483647;--confetti-border-color: #e4e4e7;--confetti-border-bottom: 1.5px solid var(--confetti-border-color);--confetti-border-radius: 12px;--confetti-background-color: #ffffff;--confetti-hover-background-color: #f5f5f5;--confetti-box-shadow:
2
+ 0 4px 6px -4px rgba(16, 24, 40, 0.1), 0 10px 15px -3px rgba(0, 0, 0, 0.1);--confetti-focus-shadow: 0 0 0 2px rgba(9, 9, 11, 0.3);--confetti-submit-button-color: #18181b;--confetti-submit-button-text-color: #fafafa;--confetti-rating-bg-color: white;--confetti-rating-text-color: #09090b;--confetti-rating-active-bg-color: #09090b;--confetti-rating-active-text-color: white;--confetti-indicator-active-bg-color: var(--confetti-rating-text-color);--confetti-indicator-active-dot-color: white;--confetti-bug-report-button-color: #18181b;--confetti-bug-report-record-button-color: #ff2c2c;--confetti-bug-report-record-button-active-color: #dc2626;--confetti-bug-report-button-text-color: white;--confetti-bug-report-overlay-color: rgba(9, 9, 11, 0.4);--confetti-text-primary-color: #09090b;--confetti-text-subtle-color: #71717a;--confetti-widget-color: #e0a045;--confetti-widget-text-color: white;--confetti-scrollbar-thumb-color: var(--confetti-border-color);--confetti-scrollbar-track-color: var(--confetti-background-color);--confetti-outline-color: rgba(9, 9, 11, 0.8);--confetti-input-background: white;--confetti-input-text-color: #020617;--confetti-disabled-button-opacity: 0.6;}@keyframes confetti-record-pulse{0%, 100%{background-color:var(--pulse-color-start)}50%{background-color:color-mix( in srgb, var(--pulse-color-start), rgb(70, 70, 70) 20% )}}@keyframes confetti-spinner{0%{transform:rotate(0deg)}100%{transform:rotate(360deg)}}.confetti-dialog{width:var(--confetti-max-width);max-height:95dvh;overflow:auto;max-width:100%;background:transparent;position:relative;box-shadow:var(--confetti-box-shadow);border:1px solid var(--confetti-border-color);border-radius:var(--confetti-border-radius);background:var(--confetti-background-color);padding:var(--confetti-box-padding)}.confetti-dialog .confetti-dialog-close{position:absolute;top:8px;right:8px;background:transparent;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:background 200ms}:is(.confetti-dialog .confetti-dialog-close) svg{width:16px;height:16px;color:var(--confetti-text-subtle-color)}:is(.confetti-dialog .confetti-dialog-close):hover{background:rgba(0, 0, 0, 0.05)}:is(.confetti-dialog .confetti-dialog-close):focus-visible{outline:2px solid var(--confetti-outline-color);outline-offset:2px}:is(.confetti-dialog .cf-header) .cf-title{padding-right:20px}.confetti-modal-overlay{position:fixed;inset:0;z-index:var(--confetti-z-index);background:rgba(0, 0, 0, 0.4);display:flex;justify-content:center;overflow-y:auto;overscroll-behavior:none;padding:10vh 0}.confetti-modal{margin:auto}.confetti-modal .confetti-modal-dialog{width:var(--confetti-max-width);max-width:100%;position:relative;box-shadow:var(--confetti-box-shadow);border:1px solid var(--confetti-border-color);border-radius:var(--confetti-border-radius);background:var(--confetti-background-color);padding:var(--confetti-box-padding)}:is(.confetti-modal .confetti-modal-dialog):focus-visible{outline:none}:is(.confetti-modal .confetti-modal-dialog) .confetti-modal-dialog-close{position:absolute;top:8px;right:8px;background:transparent;border:none;cursor:pointer;padding:8px;border-radius:8px;transition:background 200ms}:is(:is(.confetti-modal .confetti-modal-dialog) .confetti-modal-dialog-close) svg{width:16px;height:16px;color:var(--confetti-text-subtle-color)}:is(:is(.confetti-modal .confetti-modal-dialog) .confetti-modal-dialog-close):hover{background:rgba(0, 0, 0, 0.05)}:is(:is(.confetti-modal .confetti-modal-dialog) .confetti-modal-dialog-close):focus-visible{outline:2px solid var(--confetti-outline-color);outline-offset:2px}:is(:is(.confetti-modal .confetti-modal-dialog) .cf-header) .cf-title{padding-right:20px}.confetti{font-family:var(--confetti-font-family);display:flex;flex-direction:column;gap:16px;color:var(--confetti-text-primary-color);font-size:var(--confetti-font-scale);width:100%}.confetti .cf-submit-button{align-self:end;color:var(--confetti-submit-button-text-color);background:var(--confetti-submit-button-color);padding:8px 16px;border-radius:8px;cursor:pointer;transition:transform 200ms;font-size:0.875em;font-weight:500;line-height:20px;transition:background 200ms ease-out}:is(.confetti .cf-submit-button):focus-visible{outline:2px solid var(--confetti-outline-color);outline-offset:2px}[data-disabled]:is(.confetti .cf-submit-button){opacity:var(--confetti-disabled-button-opacity);cursor:not-allowed;transform:none}:is(.confetti .cf-submit-button):hover{background:color-mix( in srgb, white 10%, var(--confetti-submit-button-color) )}:is(.confetti .cf-submit-button):active{background:color-mix( in srgb, white 5%, var(--confetti-submit-button-color) )}.confetti .sr-only{clip:rect(0, 0, 0, 0);border:0;height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;white-space:nowrap;width:1px}.confetti .cf-response-choices{display:flex;flex-direction:column;gap:12px}.confetti .cf-choice{font-size:1em;cursor:pointer;padding:8px 10px;border-radius:6px;border:1px solid var(--confetti-border-color);transition:background 200ms ease-out}:is(.confetti .cf-choice):hover{background:var(--confetti-hover-background-color)}:is(.confetti .cf-choice) .cf-choice-label{gap:8px;display:inline-flex;align-items:center}:is(.confetti .cf-choice) .cf-choice-description{font-size:0.875em;margin-left:26px;color:var(--confetti-text-subtle-color)}.confetti .cf-response-choices-tag{flex-direction:row;flex-wrap:wrap;gap:8px}.confetti .cf-tag-input{display:none}[data-visible='true']:is(.confetti .cf-tag-input){display:inline}.confetti .cf-tag{border-radius:8px;padding:6px 12px;font-weight:500;font-size:0.875em;transition:background 200ms ease-out, border-color 200ms ease-out}[data-selected='true']:is(.confetti .cf-tag){background:var(--confetti-indicator-active-bg-color);border-color:var(--confetti-indicator-active-bg-color);color:var(--confetti-indicator-active-dot-color)}[data-focus-visible='true']:is(.confetti .cf-tag){outline:2px solid var(--confetti-outline-color);outline-offset:2px}:is(.confetti .cf-tag):active{scale:0.96}.confetti .cf-radio,.confetti .cf-checkbox{cursor:pointer;display:flex;flex-direction:column;position:relative;align-items:start;color:var(--confetti-text-primary-color);forced-color-adjust:none}.confetti .cf-checkbox{--checkmark-color: var(--confetti-indicator-active-dot-color);}:is(.confetti .cf-checkbox) .cf-checkbox-indicator{background:white;border:1px solid var(--confetti-border-color);width:18px;height:18px;box-sizing:border-box;border-radius:4px;transition:color 200ms ease-out;display:flex;align-items:center;justify-content:center;flex-shrink:0}:is(.confetti .cf-checkbox) svg{width:calc(100% - 8px);height:calc(100% - 8px);fill:none;stroke:var(--checkmark-color);stroke-width:3px;stroke-dasharray:22px;stroke-dashoffset:66;stroke-linecap:round;stroke-linejoin:round;transition:all 200ms}[data-focus-visible='true']:is(.confetti .cf-checkbox) .cf-checkbox-indicator{outline:2px solid var(--confetti-outline-color);outline-offset:2px}:is([data-selected]:is(.confetti .cf-checkbox),[data-indeterminate]:is(.confetti .cf-checkbox)) .cf-checkbox-indicator{background:var(--confetti-indicator-active-bg-color);border:none}:is([data-selected]:is(.confetti .cf-checkbox),[data-indeterminate]:is(.confetti .cf-checkbox)) svg{stroke-dashoffset:44}[data-indeterminate]:is(.confetti .cf-checkbox) svg{stroke:none;fill:var(--checkmark-color)}.confetti .cf-radio{-webkit-tap-highlight-color:transparent;--dot-color: var(--confetti-indicator-active-dot-color);}:is(.confetti .cf-radio) .cf-radio-indicator{position:relative;width:18px;height:18px;flex-shrink:0;box-sizing:border-box;border-radius:50%;transition:color 200ms ease-out;border:1px solid var(--confetti-border-color);background:white}:is(:is(.confetti .cf-radio) .cf-radio-indicator)::after{content:'';position:absolute;inset:1px;border-radius:inherit;background:transparent;transition:scale 200ms;scale:0}[data-selected]:is(.confetti .cf-radio) .cf-radio-indicator{background:var(--confetti-indicator-active-bg-color);border-color:var(--confetti-indicator-active-bg-color)}:is([data-selected]:is(.confetti .cf-radio) .cf-radio-indicator)::after{background:var(--dot-color);scale:0.4}[data-disabled]:is(.confetti .cf-radio){color:var(--text-color-disabled);--dot-color: var(--text-color-disabled);}[data-focus-visible='true']:is(.confetti .cf-radio) .cf-radio-indicator{outline:2px solid var(--confetti-outline-color);outline-offset:2px}.confetti .cf-input,.confetti .cf-textarea{background:var(--confetti-input-background);border:1px solid var(--confetti-border-color);border-radius:8px;color:var(--confetti-input-text-color);padding:10px;transition:border-color 0.2s ease-out, box-shadow 0.2s ease-out, transform 0.15s ease-out}:is(.confetti .cf-input,.confetti .cf-textarea):focus{border-color:var(--confetti-outline-color);box-shadow:var(--confetti-focus-shadow);outline:none}.confetti .cf-question{display:flex;flex-direction:column;gap:16px}:is(.confetti .cf-question) .cf-error{display:none}:is(.confetti .cf-question) .cf-header{display:flex;flex-direction:column;gap:2px}:is(.confetti .cf-question) .cf-title{line-height:24px;font-weight:500}:is(.confetti .cf-question) .cf-label-optional{font-weight:400;color:var(--confetti-text-subtle-color)}:is(.confetti .cf-question) .cf-description{font-size:0.875em;line-height:20px;font-weight:400;color:var(--confetti-text-subtle-color)}:is(.confetti .cf-question) .cf-others-choice{display:flex;flex-direction:column;gap:8px}.confetti .cf-bug-report{display:flex;flex-direction:column;gap:16px}:is(.confetti .cf-bug-report) .cf-bug-report-screenshot-section,:is(.confetti .cf-bug-report) .cf-bug-report-recording-section{display:flex;flex-direction:column;gap:8px}:is(.confetti .cf-bug-report) .cf-bug-report-actions{display:flex;flex-direction:column;gap:12px}:is(.confetti .cf-bug-report) .cf-bug-report-button-action{padding:8px 8px}:is(.confetti .cf-bug-report) .cf-bug-report-media-preview{position:relative;width:100%;aspect-ratio:16 / 9;border:1px solid var(--confetti-border-color);border-radius:8px;overflow:hidden;display:flex;align-items:center;justify-content:center}:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-player-loading{width:1.5em;height:1.5em;border:2px solid var(--confetti-submit-button-color);border-bottom-color:transparent;border-radius:50%;display:inline-block;box-sizing:border-box;animation:confetti-spinner 1s linear infinite}:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-player-container{height:100%;width:100%;position:relative}:is(:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-player-container) .cf-bug-report-player{height:100%;width:auto;overflow:hidden}:is(:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-player-container) .cf-bug-report-progress-bar{position:absolute;bottom:0;left:0;height:2px;background:var(--confetti-text-primary-color);opacity:50%;transition-property:width;transition-timing-function:cubic-bezier(0.4, 0, 0.2, 1);transition-duration:150ms;width:0%}:is(:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-player-container) .cf-bug-report-time{position:absolute;right:4px;bottom:4px;font-size:0.75em;color:color-mix( in oklab, var(--confetti-text-primary-color) 50%, transparent )}:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-media-actions{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--confetti-bug-report-overlay-color);opacity:0;transition:opacity 200ms ease-out}:is(:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-media-actions):hover{opacity:1}:is(:is(.confetti .cf-bug-report) .cf-bug-report-media-preview) .cf-bug-report-screenshot-img{width:100%;height:100%;object-fit:cover}.confetti .cf-bug-report-button{color:var(--confetti-bug-report-button-text-color);background:var(--confetti-bug-report-button-color);padding:8px 16px;border-radius:8px;cursor:pointer;transition:transform 200ms;font-size:0.875em;font-weight:500;line-height:20px;transition:background 200ms ease-out}:is(.confetti .cf-bug-report-button):focus-visible{outline:2px solid var(--confetti-outline-color);outline-offset:2px}[data-disabled]:is(.confetti .cf-bug-report-button){opacity:var(--confetti-disabled-button-opacity);cursor:not-allowed;transform:none}:is(.confetti .cf-bug-report-button):hover{background:color-mix( in srgb, white 10%, var(--confetti-submit-button-color) )}:is(.confetti .cf-bug-report-button):active{background:color-mix( in srgb, white 5%, var(--confetti-submit-button-color) )}.cf-bug-report-record-button:is(.confetti .cf-bug-report-button){display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:12px 8px;--pulse-color-start: var(--confetti-bug-report-record-button-color);background-color:var(--pulse-color-start);animation:confetti-record-pulse 2s ease-in-out infinite}.cf-bug-report-record-button:is(.confetti .cf-bug-report-button):hover{--pulse-color-start: var(
3
+ --confetti-bug-report-record-button-active-color
4
+ );}.confetti .cf-rating-section{display:flex;flex-direction:column;gap:4px}.confetti .cf-rating-emoji{opacity:0.5}.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji{display:grid;grid-template-columns:repeat(auto-fit, 40px);justify-content:space-between;gap:8px}:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star{font-size:1em;background-color:transparent;border:none;padding:0;transition:transform 0.15s ease-out;color:var(--confetti-rating-active-bg-color)}[data-focus-visible='true']:is(:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star){outline:2px solid var(--confetti-outline-color);outline-offset:2px}:is(:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star):hover{cursor:pointer;transform:scale(1.15);opacity:1!important}[data-filled='true']:is(:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star){opacity:1}[data-selected='true']:is(:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star){opacity:1}:is(:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-emoji,:is(.confetti .cf-rating-display-star,.confetti .cf-rating-display-emoji) .cf-rating-star) svg{transition:fill 0.15s ease-out}.confetti .cf-rating-text{display:flex;justify-content:space-between;font-size:0.75em;color:var(--confetti-text-subtle-color);font-weight:500;line-height:1}:is(.confetti .cf-rating-text) .cf-rating-text-lower{flex:1;text-align:start}:is(.confetti .cf-rating-text) .cf-rating-text-upper{flex:1;text-align:end}:is(.confetti .cf-rating-display-star) .cf-rating-star[data-selected='true'] ~ .cf-rating-star{opacity:0.5}.confetti .cf-rating-display-number{display:grid;grid-auto-columns:1fr;grid-auto-flow:column;border:1px solid var(--confetti-border-color);border-radius:8px;overflow:hidden}:is(.confetti .cf-rating-display-number) .cf-rating-number{border-right:1px solid var(--confetti-border-color);text-align:center;cursor:pointer;color:var(--confetti-rating-text-color);border-left:none;border-top:none;border-bottom:none;font-weight:700;padding:8px 0;margin-top:-1px;margin-bottom:-1px}:is(:is(.confetti .cf-rating-display-number) .cf-rating-number):first-of-type{border-top-left-radius:8px;border-bottom-left-radius:8px}:is(:is(.confetti .cf-rating-display-number) .cf-rating-number):last-of-type{border-top-right-radius:8px;border-bottom-right-radius:8px;border-right:0}[data-focus-visible='true']:is(:is(.confetti .cf-rating-display-number) .cf-rating-number){box-shadow:inset 0 0 0 1px var(--confetti-outline-color)}[data-selected='true']:is(:is(.confetti .cf-rating-display-number) .cf-rating-number){background:var(--confetti-rating-active-bg-color);color:var(--confetti-rating-active-text-color)}