@magicfeedback/native 2.1.2-beta.0 → 2.1.2-beta.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,909 @@
1
+ /**
2
+ * @magicfeedback/native - Default Styles
3
+ * Clean, minimal, and elegant survey rendering
4
+ */
5
+
6
+ /* ========================================
7
+ CSS VARIABLES - Design System
8
+ ======================================== */
9
+ :root {
10
+ /* Colors - Neutral Palette */
11
+ --mf-primary: #2563eb;
12
+ --mf-primary-hover: #1d4ed8;
13
+ --mf-primary-light: #dbeafe;
14
+
15
+ --mf-text-primary: #0f172a;
16
+ --mf-text-secondary: #64748b;
17
+ --mf-text-muted: #94a3b8;
18
+
19
+ --mf-bg-primary: #ffffff;
20
+ --mf-bg-secondary: #f8fafc;
21
+ --mf-bg-hover: #f1f5f9;
22
+
23
+ --mf-border: #e2e8f0;
24
+ --mf-border-focus: #2563eb;
25
+
26
+ --mf-success: #10b981;
27
+ --mf-error: #ef4444;
28
+ --mf-warning: #f59e0b;
29
+
30
+ /* Spacing */
31
+ --mf-space-xs: 0.25rem;
32
+ --mf-space-sm: 0.5rem;
33
+ --mf-space-md: 0.75rem;
34
+ --mf-space-lg: 1rem;
35
+ --mf-space-xl: 1.5rem;
36
+
37
+ /* Border Radius */
38
+ --mf-radius-sm: 0.375rem;
39
+ --mf-radius-md: 0.5rem;
40
+ --mf-radius-lg: 0.75rem;
41
+ --mf-radius-full: 9999px;
42
+
43
+ /* Shadows */
44
+ --mf-shadow-sm: 0 1px 2px 0 rgba(0, 0, 0, 0.05);
45
+ --mf-shadow-md: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);
46
+ --mf-shadow-lg: 0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);
47
+ --mf-shadow-focus: 0 0 0 3px rgba(37, 99, 235, 0.1);
48
+
49
+ /* Typography */
50
+ --mf-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Roboto", "Helvetica", "Arial", sans-serif;
51
+ --mf-font-size-sm: 0.875rem;
52
+ --mf-font-size-base: 1rem;
53
+ --mf-font-size-lg: 1.125rem;
54
+ --mf-font-size-xl: 1.25rem;
55
+ --mf-line-height: 1.6;
56
+
57
+ /* Transitions */
58
+ --mf-transition: all 0.2s ease;
59
+ --mf-transition-fast: all 0.15s ease;
60
+ }
61
+
62
+ /* ========================================
63
+ ANIMATIONS
64
+ ======================================== */
65
+ @keyframes mf-fade-in {
66
+ from {
67
+ opacity: 0;
68
+ transform: translateY(8px);
69
+ }
70
+ to {
71
+ opacity: 1;
72
+ transform: translateY(0);
73
+ }
74
+ }
75
+
76
+ @keyframes mf-slide-in {
77
+ from {
78
+ opacity: 0;
79
+ transform: translateX(-16px);
80
+ }
81
+ to {
82
+ opacity: 1;
83
+ transform: translateX(0);
84
+ }
85
+ }
86
+
87
+ @keyframes mf-scale-in {
88
+ from {
89
+ opacity: 0;
90
+ transform: scale(0.95);
91
+ }
92
+ to {
93
+ opacity: 1;
94
+ transform: scale(1);
95
+ }
96
+ }
97
+
98
+ @keyframes mf-pulse {
99
+ 0%,
100
+ 100% {
101
+ opacity: 1;
102
+ }
103
+ 50% {
104
+ opacity: 0.8;
105
+ }
106
+ }
107
+
108
+ /* ========================================
109
+ BASE CONTAINER
110
+ ======================================== */
111
+ .magicfeedback-container {
112
+ width: 100%;
113
+ font-family: var(--mf-font-sans);
114
+ color: var(--mf-text-primary);
115
+ line-height: var(--mf-line-height);
116
+ animation: mf-fade-in 0.4s ease-out;
117
+ }
118
+
119
+ /* ========================================
120
+ MESSAGES
121
+ ======================================== */
122
+ .magicfeedback-success-message,
123
+ .magicfeedback-info-message,
124
+ .magicfeedback-start-message {
125
+ padding: var(--mf-space-lg);
126
+ margin: var(--mf-space-lg) 0;
127
+ border-radius: var(--mf-radius-lg);
128
+ background: var(--mf-bg-secondary);
129
+ animation: mf-scale-in 0.3s ease-out;
130
+ }
131
+
132
+ .magicfeedback-success-message p,
133
+ .magicfeedback-info-message p,
134
+ .magicfeedback-start-message p {
135
+ font-size: var(--mf-font-size-base);
136
+ color: var(--mf-text-secondary);
137
+ margin: 0;
138
+ line-height: var(--mf-line-height);
139
+ }
140
+
141
+ .magicfeedback-success-message img,
142
+ .magicfeedback-info-message img,
143
+ .magicfeedback-start-message img {
144
+ max-width: 100%;
145
+ height: auto;
146
+ margin: var(--mf-space-lg) auto;
147
+ display: block;
148
+ border-radius: var(--mf-radius-md);
149
+ }
150
+
151
+ .magicfeedback-image {
152
+ max-height: 400px;
153
+ height: auto;
154
+ max-width: 100%;
155
+ margin: var(--mf-space-lg) auto;
156
+ display: block;
157
+ border-radius: var(--mf-radius-md);
158
+ }
159
+
160
+ /* ========================================
161
+ FORM STRUCTURE
162
+ ======================================== */
163
+ .magicfeedback-form {
164
+ display: flex;
165
+ flex-direction: column;
166
+ gap: var(--mf-space-lg);
167
+ width: 100%;
168
+ }
169
+
170
+ .magicfeedback-questions {
171
+ display: flex;
172
+ flex-direction: column;
173
+ gap: var(--mf-space-xl);
174
+ width: 100%;
175
+ }
176
+
177
+ .magicfeedback-div {
178
+ display: flex;
179
+ flex-direction: column;
180
+ gap: var(--mf-space-sm);
181
+ width: 100%;
182
+ animation: mf-slide-in 0.3s ease-out;
183
+ }
184
+
185
+ /* ========================================
186
+ LABELS & TYPOGRAPHY
187
+ ======================================== */
188
+ .magicfeedback-label {
189
+ font-size: var(--mf-font-size-lg);
190
+ font-weight: 500;
191
+ color: var(--mf-text-primary);
192
+ line-height: var(--mf-line-height);
193
+ margin: 0 0 var(--mf-space-md) 0;
194
+ text-align: left;
195
+ }
196
+
197
+ h2 {
198
+ font-size: var(--mf-font-size-xl);
199
+ font-weight: 600;
200
+ color: var(--mf-text-primary);
201
+ margin: 0 0 var(--mf-space-xl) 0;
202
+ text-align: center;
203
+ letter-spacing: -0.01em;
204
+ }
205
+
206
+ p {
207
+ margin: 0;
208
+ font-size: var(--mf-font-size-sm);
209
+ color: var(--mf-text-secondary);
210
+ }
211
+
212
+ /* ========================================
213
+ FORM INPUTS
214
+ ======================================== */
215
+ input[type="date"],
216
+ input[type="text"],
217
+ input[type="number"],
218
+ input[type="email"],
219
+ input[type="password"],
220
+ textarea,
221
+ select {
222
+ width: auto;
223
+ padding: var(--mf-space-sm) var(--mf-space-md);
224
+ font-size: var(--mf-font-size-base);
225
+ font-family: inherit;
226
+ color: var(--mf-text-primary);
227
+ background-color: var(--mf-bg-primary);
228
+ border: 1.5px solid var(--mf-border);
229
+ border-radius: var(--mf-radius-md);
230
+ outline: none;
231
+ transition: var(--mf-transition);
232
+ -webkit-appearance: none;
233
+ -moz-appearance: none;
234
+ appearance: none;
235
+ }
236
+
237
+ textarea {
238
+ min-height: 100px;
239
+ resize: vertical;
240
+ }
241
+
242
+ input:focus,
243
+ select:focus,
244
+ textarea:focus {
245
+ border-color: var(--mf-border-focus);
246
+ box-shadow: var(--mf-shadow-focus);
247
+ }
248
+
249
+ input::placeholder,
250
+ textarea::placeholder {
251
+ color: var(--mf-text-muted);
252
+ }
253
+
254
+ /* Remove number input spinners */
255
+ input::-webkit-outer-spin-button,
256
+ input::-webkit-inner-spin-button {
257
+ -webkit-appearance: none;
258
+ margin: 0;
259
+ }
260
+
261
+ input[type="number"] {
262
+ -moz-appearance: textfield;
263
+ }
264
+
265
+ /* Custom Select Arrow */
266
+ select {
267
+ background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 12 12'%3E%3Cpath fill='%2364748b' d='M6 9L1 4h10z'/%3E%3C/svg%3E");
268
+ background-repeat: no-repeat;
269
+ background-position: right var(--mf-space-md) center;
270
+ padding-right: var(--mf-space-xl);
271
+ }
272
+
273
+ /* Error State */
274
+ input.error,
275
+ select.error,
276
+ textarea.error {
277
+ border-color: var(--mf-error);
278
+ }
279
+
280
+ .magicfeedback-error {
281
+ margin-top: var(--mf-space-xs);
282
+ font-size: var(--mf-font-size-sm);
283
+ color: var(--mf-error);
284
+ }
285
+
286
+ /* ========================================
287
+ CHECKBOX & RADIO OPTIONS
288
+ ======================================== */
289
+ .magicfeedback-checkbox,
290
+ .magicfeedback-radio {
291
+ display: flex;
292
+ flex-direction: column;
293
+ gap: var(--mf-space-sm);
294
+ width: 100%;
295
+ }
296
+
297
+ .magicfeedback-checkbox-container,
298
+ .magicfeedback-radio-container {
299
+ display: flex;
300
+ align-items: center;
301
+ gap: var(--mf-space-sm);
302
+ padding: var(--mf-space-md);
303
+ background-color: var(--mf-bg-primary);
304
+ border: 1.5px solid var(--mf-border);
305
+ border-radius: var(--mf-radius-md);
306
+ cursor: pointer;
307
+ transition: var(--mf-transition-fast);
308
+ }
309
+
310
+ .magicfeedback-checkbox-container:hover,
311
+ .magicfeedback-radio-container:hover {
312
+ background-color: var(--mf-bg-hover);
313
+ border-color: var(--mf-primary);
314
+ }
315
+
316
+ .magicfeedback-checkbox-container:has(input:checked),
317
+ .magicfeedback-radio-container:has(input:checked) {
318
+ background-color: var(--mf-primary-light);
319
+ border-color: var(--mf-primary);
320
+ }
321
+
322
+ .magicfeedback-checkbox input[type="checkbox"],
323
+ .magicfeedback-radio-container input[type="radio"] {
324
+ width: 18px;
325
+ height: 18px;
326
+ margin: 0;
327
+ cursor: pointer;
328
+ flex-shrink: 0;
329
+ accent-color: var(--mf-primary);
330
+ }
331
+
332
+ .magicfeedback-checkbox label,
333
+ .magicfeedback-radio-container label {
334
+ font-size: var(--mf-font-size-base);
335
+ color: var(--mf-text-primary);
336
+ cursor: pointer;
337
+ margin: 0;
338
+ flex: 1;
339
+ }
340
+
341
+ /* ========================================
342
+ BOOLEAN OPTIONS
343
+ ======================================== */
344
+ .magicfeedback-boolean-container {
345
+ display: flex;
346
+ gap: var(--mf-space-md);
347
+ width: 100%;
348
+ }
349
+
350
+ .magicfeedback-boolean-option {
351
+ flex: 1;
352
+ position: relative;
353
+ }
354
+
355
+ .magicfeedback-boolean-option input[type="radio"] {
356
+ position: absolute;
357
+ opacity: 0;
358
+ width: 0;
359
+ height: 0;
360
+ }
361
+
362
+ .magicfeedback-boolean-option label {
363
+ display: flex;
364
+ align-items: center;
365
+ justify-content: center;
366
+ padding: var(--mf-space-md);
367
+ font-size: var(--mf-font-size-base);
368
+ font-weight: 500;
369
+ color: var(--mf-text-secondary);
370
+ background-color: var(--mf-bg-primary);
371
+ border: 1.5px solid var(--mf-border);
372
+ border-radius: var(--mf-radius-md);
373
+ cursor: pointer;
374
+ transition: var(--mf-transition-fast);
375
+ margin: 0;
376
+ }
377
+
378
+ .magicfeedback-boolean-option label:hover {
379
+ background-color: var(--mf-bg-hover);
380
+ border-color: var(--mf-primary);
381
+ }
382
+
383
+ .magicfeedback-boolean-option input[type="radio"]:checked + label {
384
+ color: var(--mf-primary);
385
+ background-color: var(--mf-primary-light);
386
+ border-color: var(--mf-primary);
387
+ font-weight: 600;
388
+ }
389
+
390
+ /* ========================================
391
+ RATING SYSTEMS
392
+ ======================================== */
393
+ .magicfeedback-rating,
394
+ .magicfeedback-rating-number,
395
+ .magicfeedback-rating-star {
396
+ width: 100%;
397
+ }
398
+
399
+ .magicfeedback-rating-container,
400
+ .magicfeedback-rating-number-container,
401
+ .magicfeedback-rating-star-container {
402
+ display: flex;
403
+ flex-wrap: wrap;
404
+ gap: var(--mf-space-sm);
405
+ justify-content: center;
406
+ align-items: center;
407
+ padding: var(--mf-space-md) 0;
408
+ list-style: none;
409
+ margin: 0;
410
+ }
411
+
412
+ .magicfeedback-rating-placeholder,
413
+ .magicfeedback-rating-placeholder-value,
414
+ .magicfeedback-rating-number-top-placeholder,
415
+ .magicfeedback-rating-number-bottom-placeholder {
416
+ width: 100%;
417
+ text-align: center;
418
+ font-size: var(--mf-font-size-sm);
419
+ color: var(--mf-text-secondary);
420
+ margin: var(--mf-space-sm) 0;
421
+ }
422
+
423
+ /* Rating with Images */
424
+ .magicfeedback-rating-option-label-container input[type="radio"] {
425
+ position: absolute;
426
+ opacity: 0;
427
+ width: 0;
428
+ height: 0;
429
+ }
430
+
431
+ .magicfeedback-rating-option-label-container img {
432
+ width: 56px;
433
+ height: 56px;
434
+ cursor: pointer;
435
+ transition: var(--mf-transition-fast);
436
+ border-radius: var(--mf-radius-full);
437
+ border: 2px solid transparent;
438
+ }
439
+
440
+ .magicfeedback-rating-option-label-container img:hover {
441
+ transform: scale(1.1);
442
+ border-color: var(--mf-primary);
443
+ }
444
+
445
+ .magicfeedback-rating-option-label-container input[type="radio"]:checked + img {
446
+ border-color: var(--mf-primary);
447
+ box-shadow: 0 0 0 3px var(--mf-primary-light);
448
+ }
449
+
450
+ .magicfeedback-rating-option-label-container label {
451
+ display: block;
452
+ text-align: center;
453
+ font-size: var(--mf-font-size-sm);
454
+ color: var(--mf-text-secondary);
455
+ margin-top: var(--mf-space-xs);
456
+ cursor: pointer;
457
+ }
458
+
459
+ /* Rating Numbers */
460
+ .magicfeedback-rating-number-option {
461
+ flex: 1;
462
+ min-width: 60px;
463
+ }
464
+
465
+ .magicfeedback-rating-number-option-label-container {
466
+ position: relative;
467
+ }
468
+
469
+ .magicfeedback-rating-number-option-label-container input[type="radio"] {
470
+ position: absolute;
471
+ opacity: 0;
472
+ width: 0;
473
+ height: 0;
474
+ }
475
+
476
+ .magicfeedback-rating-number-option-label-container label {
477
+ display: flex;
478
+ align-items: center;
479
+ justify-content: center;
480
+ min-height: 48px;
481
+ padding: var(--mf-space-sm);
482
+ font-size: var(--mf-font-size-base);
483
+ font-weight: 500;
484
+ color: var(--mf-text-secondary);
485
+ background-color: var(--mf-bg-primary);
486
+ border: 1.5px solid var(--mf-border);
487
+ border-radius: var(--mf-radius-md);
488
+ cursor: pointer;
489
+ transition: var(--mf-transition-fast);
490
+ margin: 0;
491
+ }
492
+
493
+ .magicfeedback-rating-number-option-label-container label:hover {
494
+ background-color: var(--mf-bg-hover);
495
+ border-color: var(--mf-primary);
496
+ transform: translateY(-2px);
497
+ box-shadow: var(--mf-shadow-sm);
498
+ }
499
+
500
+ .magicfeedback-rating-number-option-label-container input[type="radio"]:checked + label {
501
+ color: var(--mf-primary);
502
+ background-color: var(--mf-primary-light);
503
+ border-color: var(--mf-primary);
504
+ font-weight: 600;
505
+ }
506
+
507
+ /* Star Rating */
508
+ .magicfeedback-rating-star-container {
509
+ justify-content: center;
510
+ }
511
+
512
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star {
513
+ font-size: 40px;
514
+ color: var(--mf-border);
515
+ cursor: pointer;
516
+ margin: 0 var(--mf-space-xs);
517
+ transition: var(--mf-transition-fast);
518
+ }
519
+
520
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star:hover,
521
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star:hover ~ span {
522
+ color: #fbbf24;
523
+ transform: scale(1.1);
524
+ }
525
+
526
+ .magicfeedback-rating-star-selected {
527
+ color: #fbbf24 !important;
528
+ }
529
+
530
+ /* ========================================
531
+ MULTIPLE CHOICE WITH IMAGES
532
+ ======================================== */
533
+ .magicfeedback-multiple-choice-image-option {
534
+ display: flex;
535
+ border-radius: var(--mf-radius-md);
536
+ overflow: hidden;
537
+ transition: var(--mf-transition-fast);
538
+ }
539
+
540
+ .magicfeedback-image-option-label-container {
541
+ cursor: pointer;
542
+ border-radius: var(--mf-radius-md);
543
+ overflow: hidden;
544
+ transition: var(--mf-transition-fast);
545
+ }
546
+
547
+ .magicfeedback-image-option-label-container input[type="radio"],
548
+ .magicfeedback-image-option-label-container input[type="checkbox"] {
549
+ position: absolute;
550
+ opacity: 0;
551
+ width: 0;
552
+ height: 0;
553
+ }
554
+
555
+ .magicfeedback-image-option-label-container img {
556
+ width: 100%;
557
+ height: auto;
558
+ display: block;
559
+ border: 2px solid var(--mf-border);
560
+ border-radius: var(--mf-radius-md);
561
+ transition: var(--mf-transition-fast);
562
+ }
563
+
564
+ .magicfeedback-image-option-label-container:hover img {
565
+ border-color: var(--mf-primary);
566
+ box-shadow: var(--mf-shadow-md);
567
+ }
568
+
569
+ .magicfeedback-image-option-label-container input:checked + img {
570
+ border-color: var(--mf-primary);
571
+ box-shadow: 0 0 0 3px var(--mf-primary-light);
572
+ }
573
+
574
+ /* ========================================
575
+ MATRIX QUESTIONS
576
+ ======================================== */
577
+ .magicfeedback-multi-question-matrix-container {
578
+ width: 100%;
579
+ overflow-x: auto;
580
+ border-radius: var(--mf-radius-md);
581
+ }
582
+
583
+ .magicfeedback-multi-question-matrix-table {
584
+ width: 100%;
585
+ border-collapse: separate;
586
+ border-spacing: 0 var(--mf-space-xs);
587
+ }
588
+
589
+ .magicfeedback-multi-question-matrix-table th {
590
+ padding: var(--mf-space-md);
591
+ text-align: center;
592
+ font-size: var(--mf-font-size-sm);
593
+ font-weight: 500;
594
+ color: var(--mf-text-secondary);
595
+ }
596
+
597
+ .magicfeedback-multi-question-matrix-row-tr {
598
+ background-color: var(--mf-bg-primary);
599
+ border-radius: var(--mf-radius-md);
600
+ transition: var(--mf-transition-fast);
601
+ }
602
+
603
+ .magicfeedback-multi-question-matrix-row-tr:nth-child(even) {
604
+ background-color: var(--mf-bg-secondary);
605
+ }
606
+
607
+ .magicfeedback-multi-question-matrix-row-tr:hover {
608
+ background-color: var(--mf-bg-hover);
609
+ box-shadow: var(--mf-shadow-sm);
610
+ }
611
+
612
+ .magicfeedback-multi-question-matrix-table td {
613
+ padding: var(--mf-space-md);
614
+ text-align: center;
615
+ }
616
+
617
+ .magicfeedback-multi-question-matrix-row-label {
618
+ text-align: left;
619
+ font-size: var(--mf-font-size-base);
620
+ color: var(--mf-text-primary);
621
+ }
622
+
623
+ .magicfeedback-multi-question-matrix-table input[type="radio"] {
624
+ width: 20px;
625
+ height: 20px;
626
+ cursor: pointer;
627
+ accent-color: var(--mf-primary);
628
+ }
629
+
630
+ /* ========================================
631
+ PRIORITY LIST
632
+ ======================================== */
633
+ .magicfeedback-priority-list-item {
634
+ display: flex;
635
+ align-items: center;
636
+ justify-content: space-between;
637
+ padding: var(--mf-space-md);
638
+ margin: var(--mf-space-sm) 0;
639
+ background-color: var(--mf-bg-primary);
640
+ border: 1.5px solid var(--mf-border);
641
+ border-radius: var(--mf-radius-md);
642
+ transition: var(--mf-transition-fast);
643
+ }
644
+
645
+ .magicfeedback-priority-list-item:hover {
646
+ box-shadow: var(--mf-shadow-sm);
647
+ border-color: var(--mf-primary);
648
+ }
649
+
650
+ .magicfeedback-priority-list-item-label {
651
+ flex: 1;
652
+ font-size: var(--mf-font-size-base);
653
+ color: var(--mf-text-primary);
654
+ margin: 0;
655
+ }
656
+
657
+ .magicfeedback-priority-list-arrow-up,
658
+ .magicfeedback-priority-list-arrow-down {
659
+ padding: var(--mf-space-xs);
660
+ font-size: var(--mf-font-size-lg);
661
+ color: var(--mf-text-secondary);
662
+ cursor: pointer;
663
+ transition: var(--mf-transition-fast);
664
+ user-select: none;
665
+ }
666
+
667
+ .magicfeedback-priority-list-arrow-up:hover,
668
+ .magicfeedback-priority-list-arrow-down:hover {
669
+ color: var(--mf-primary);
670
+ transform: scale(1.2);
671
+ }
672
+
673
+ /* ========================================
674
+ POINT SYSTEM
675
+ ======================================== */
676
+ .magicfeedback-point-system-item {
677
+ display: flex;
678
+ align-items: center;
679
+ justify-content: space-between;
680
+ padding: var(--mf-space-md);
681
+ margin: var(--mf-space-sm) 0;
682
+ background-color: var(--mf-bg-primary);
683
+ border: 1.5px solid var(--mf-border);
684
+ border-radius: var(--mf-radius-md);
685
+ min-height: 60px;
686
+ }
687
+
688
+ .magicfeedback-point-system-item label {
689
+ flex: 1;
690
+ font-size: var(--mf-font-size-base);
691
+ color: var(--mf-text-primary);
692
+ margin: 0;
693
+ }
694
+
695
+ .magicfeedback-point-system-input-container {
696
+ display: flex;
697
+ align-items: center;
698
+ gap: var(--mf-space-sm);
699
+ }
700
+
701
+ .magicfeedback-point-system-item input {
702
+ width: 80px;
703
+ min-width: 80px;
704
+ padding: var(--mf-space-sm);
705
+ text-align: center;
706
+ font-size: var(--mf-font-size-base);
707
+ border: 1.5px solid var(--mf-border);
708
+ border-radius: var(--mf-radius-md);
709
+ margin: 0;
710
+ }
711
+
712
+ .magicfeedback-point-system-total {
713
+ display: flex;
714
+ justify-content: flex-end;
715
+ margin-top: var(--mf-space-md);
716
+ font-size: var(--mf-font-size-base);
717
+ font-weight: 600;
718
+ color: var(--mf-text-primary);
719
+ }
720
+
721
+ /* ========================================
722
+ CONSENT
723
+ ======================================== */
724
+ .magicfeedback-consent-container {
725
+ display: flex;
726
+ align-items: flex-start;
727
+ gap: var(--mf-space-sm);
728
+ padding: var(--mf-space-md);
729
+ background-color: var(--mf-bg-secondary);
730
+ border-radius: var(--mf-radius-md);
731
+ margin: var(--mf-space-md) 0;
732
+ }
733
+
734
+ .magicfeedback-consent-container input[type="checkbox"] {
735
+ margin-top: 2px;
736
+ flex-shrink: 0;
737
+ accent-color: var(--mf-primary);
738
+ }
739
+
740
+ .magicfeedback-consent-container label {
741
+ flex: 1;
742
+ font-size: var(--mf-font-size-sm);
743
+ color: var(--mf-text-secondary);
744
+ line-height: var(--mf-line-height);
745
+ cursor: pointer;
746
+ }
747
+
748
+ /* ========================================
749
+ ACTION BUTTONS
750
+ ======================================== */
751
+ .magicfeedback-action-container {
752
+ display: flex;
753
+ align-items: center;
754
+ justify-content: space-between;
755
+ gap: var(--mf-space-md);
756
+ margin-top: var(--mf-space-xl);
757
+ padding-top: var(--mf-space-lg);
758
+ border-top: 1px solid var(--mf-border);
759
+ }
760
+
761
+ .magicfeedback-submit {
762
+ padding: var(--mf-space-sm) var(--mf-space-xl);
763
+ font-size: var(--mf-font-size-base);
764
+ font-weight: 500;
765
+ color: white;
766
+ background-color: var(--mf-primary);
767
+ border: none;
768
+ border-radius: var(--mf-radius-md);
769
+ cursor: pointer;
770
+ transition: var(--mf-transition-fast);
771
+ box-shadow: var(--mf-shadow-sm);
772
+ }
773
+
774
+ .magicfeedback-submit:hover {
775
+ background-color: var(--mf-primary-hover);
776
+ box-shadow: var(--mf-shadow-md);
777
+ transform: translateY(-1px);
778
+ }
779
+
780
+ .magicfeedback-submit:active {
781
+ transform: translateY(0);
782
+ box-shadow: var(--mf-shadow-sm);
783
+ }
784
+
785
+ .magicfeedback-submit:disabled {
786
+ opacity: 0.5;
787
+ cursor: not-allowed;
788
+ transform: none;
789
+ }
790
+
791
+ .magicfeedback-back {
792
+ padding: var(--mf-space-sm) var(--mf-space-md);
793
+ font-size: var(--mf-font-size-base);
794
+ font-weight: 500;
795
+ color: var(--mf-text-secondary);
796
+ background-color: transparent;
797
+ border: none;
798
+ cursor: pointer;
799
+ transition: var(--mf-transition-fast);
800
+ }
801
+
802
+ .magicfeedback-back:hover {
803
+ color: var(--mf-primary);
804
+ }
805
+
806
+ /* ========================================
807
+ SKIP & COUNTER
808
+ ======================================== */
809
+ .magicfeedback-skip-container {
810
+ display: flex;
811
+ align-items: center;
812
+ gap: var(--mf-space-xs);
813
+ padding: 0;
814
+ margin: 0;
815
+ font-size: var(--mf-font-size-sm);
816
+ color: var(--mf-text-muted);
817
+ background: transparent;
818
+ border: none;
819
+ cursor: pointer;
820
+ transition: var(--mf-transition-fast);
821
+ }
822
+
823
+ .magicfeedback-skip-container:hover {
824
+ color: var(--mf-primary);
825
+ }
826
+
827
+ .magicfeedback-skip-container input[type="checkbox"] {
828
+ margin: 0;
829
+ cursor: pointer;
830
+ accent-color: var(--mf-primary);
831
+ }
832
+
833
+ .magicfeedback-counter {
834
+ display: flex;
835
+ justify-content: flex-end;
836
+ margin-top: var(--mf-space-md);
837
+ font-size: var(--mf-font-size-sm);
838
+ color: var(--mf-text-muted);
839
+ }
840
+
841
+ /* ========================================
842
+ RESPONSIVE DESIGN
843
+ ======================================== */
844
+ @media (max-width: 768px) {
845
+ :root {
846
+ --mf-space-lg: 1.25rem;
847
+ --mf-space-xl: 1.5rem;
848
+ }
849
+
850
+ .magicfeedback-label {
851
+ font-size: var(--mf-font-size-base);
852
+ }
853
+
854
+ .magicfeedback-boolean-container {
855
+ flex-direction: column;
856
+ }
857
+
858
+ .magicfeedback-rating-number-container {
859
+ justify-content: flex-start;
860
+ }
861
+
862
+ .magicfeedback-rating-number-option {
863
+ min-width: calc(20% - var(--mf-space-sm));
864
+ }
865
+
866
+ .magicfeedback-action-container {
867
+ flex-direction: column-reverse;
868
+ }
869
+
870
+ .magicfeedback-submit,
871
+ .magicfeedback-back {
872
+ width: 100%;
873
+ text-align: center;
874
+ }
875
+ }
876
+
877
+ /* ========================================
878
+ ACCESSIBILITY
879
+ ======================================== */
880
+ @media (prefers-reduced-motion: reduce) {
881
+ *,
882
+ *::before,
883
+ *::after {
884
+ animation-duration: 0.01ms !important;
885
+ animation-iteration-count: 1 !important;
886
+ transition-duration: 0.01ms !important;
887
+ }
888
+ }
889
+
890
+ /* Focus visible for keyboard navigation */
891
+ *:focus-visible {
892
+ outline: 2px solid var(--mf-primary);
893
+ outline-offset: 2px;
894
+ }
895
+
896
+ /* ========================================
897
+ UTILITY CLASSES
898
+ ======================================== */
899
+ .magicfeedback-visually-hidden {
900
+ position: absolute;
901
+ width: 1px;
902
+ height: 1px;
903
+ padding: 0;
904
+ margin: -1px;
905
+ overflow: hidden;
906
+ clip: rect(0, 0, 0, 0);
907
+ white-space: nowrap;
908
+ border-width: 0;
909
+ }