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

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,912 @@
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
+ text-align: left;
336
+ color: var(--mf-text-primary);
337
+ cursor: pointer;
338
+ margin: 0;
339
+ flex: 1;
340
+ }
341
+
342
+ /* ========================================
343
+ BOOLEAN OPTIONS
344
+ ======================================== */
345
+ .magicfeedback-boolean-container {
346
+ display: flex;
347
+ gap: var(--mf-space-md);
348
+ width: 100%;
349
+ }
350
+
351
+ .magicfeedback-boolean-option {
352
+ flex: 1;
353
+ position: relative;
354
+ }
355
+
356
+ .magicfeedback-boolean-option input[type="radio"] {
357
+ position: absolute;
358
+ opacity: 0;
359
+ width: 0;
360
+ height: 0;
361
+ }
362
+
363
+ .magicfeedback-boolean-option label {
364
+ display: flex;
365
+ align-items: center;
366
+ justify-content: center;
367
+ padding: var(--mf-space-md);
368
+ font-size: var(--mf-font-size-base);
369
+ font-weight: 500;
370
+ color: var(--mf-text-secondary);
371
+ background-color: var(--mf-bg-primary);
372
+ border: 1.5px solid var(--mf-border);
373
+ border-radius: var(--mf-radius-md);
374
+ cursor: pointer;
375
+ transition: var(--mf-transition-fast);
376
+ margin: 0;
377
+ }
378
+
379
+ .magicfeedback-boolean-option label:hover {
380
+ background-color: var(--mf-bg-hover);
381
+ border-color: var(--mf-primary);
382
+ }
383
+
384
+ .magicfeedback-boolean-option input[type="radio"]:checked + label {
385
+ color: var(--mf-primary);
386
+ background-color: var(--mf-primary-light);
387
+ border-color: var(--mf-primary);
388
+ font-weight: 600;
389
+ }
390
+
391
+ /* ========================================
392
+ RATING SYSTEMS
393
+ ======================================== */
394
+ .magicfeedback-rating,
395
+ .magicfeedback-rating-number,
396
+ .magicfeedback-rating-star {
397
+ width: 100%;
398
+ }
399
+
400
+ .magicfeedback-rating-container,
401
+ .magicfeedback-rating-number-container,
402
+ .magicfeedback-rating-star-container {
403
+ display: flex;
404
+ flex-wrap: wrap;
405
+ gap: var(--mf-space-sm);
406
+ justify-content: center;
407
+ align-items: center;
408
+ padding: var(--mf-space-md) 0;
409
+ list-style: none;
410
+ margin: 0;
411
+ }
412
+
413
+ .magicfeedback-rating-placeholder,
414
+ .magicfeedback-rating-placeholder-value,
415
+ .magicfeedback-rating-number-top-placeholder,
416
+ .magicfeedback-rating-number-bottom-placeholder {
417
+ width: 100%;
418
+ text-align: center;
419
+ font-size: var(--mf-font-size-sm);
420
+ color: var(--mf-text-secondary);
421
+ margin: var(--mf-space-sm) 0;
422
+ }
423
+
424
+ /* Rating with Images */
425
+ .magicfeedback-rating-option-label-container input[type="radio"] {
426
+ position: absolute;
427
+ opacity: 0;
428
+ width: 0;
429
+ height: 0;
430
+ }
431
+
432
+ .magicfeedback-rating-option-label-container img {
433
+ width: 56px;
434
+ height: 56px;
435
+ cursor: pointer;
436
+ transition: var(--mf-transition-fast);
437
+ border-radius: var(--mf-radius-full);
438
+ border: 2px solid transparent;
439
+ }
440
+
441
+ .magicfeedback-rating-option-label-container img:hover {
442
+ transform: scale(1.1);
443
+ border-color: var(--mf-primary);
444
+ }
445
+
446
+ .magicfeedback-rating-option-label-container input[type="radio"]:checked + img {
447
+ border-color: var(--mf-primary);
448
+ box-shadow: 0 0 0 3px var(--mf-primary-light);
449
+ }
450
+
451
+ .magicfeedback-rating-option-label-container label {
452
+ display: block;
453
+ text-align: center;
454
+ font-size: var(--mf-font-size-sm);
455
+ color: var(--mf-text-secondary);
456
+ margin-top: var(--mf-space-xs);
457
+ cursor: pointer;
458
+ }
459
+
460
+ /* Rating Numbers */
461
+ .magicfeedback-rating-number-option {
462
+ flex: 1;
463
+ min-width: 60px;
464
+ }
465
+
466
+ .magicfeedback-rating-number-option-label-container {
467
+ position: relative;
468
+ }
469
+
470
+ .magicfeedback-rating-number-option-label-container input[type="radio"] {
471
+ position: absolute;
472
+ opacity: 0;
473
+ width: 0;
474
+ height: 0;
475
+ }
476
+
477
+ .magicfeedback-rating-number-option-label-container label {
478
+ display: flex;
479
+ align-items: center;
480
+ justify-content: center;
481
+ min-height: 48px;
482
+ padding: var(--mf-space-sm);
483
+ font-size: var(--mf-font-size-base);
484
+ font-weight: 500;
485
+ color: var(--mf-text-secondary);
486
+ background-color: var(--mf-bg-primary);
487
+ border: 1.5px solid var(--mf-border);
488
+ border-radius: var(--mf-radius-md);
489
+ cursor: pointer;
490
+ transition: var(--mf-transition-fast);
491
+ margin: 0;
492
+ }
493
+
494
+ .magicfeedback-rating-number-option-label-container label:hover {
495
+ background-color: var(--mf-bg-hover);
496
+ border-color: var(--mf-primary);
497
+ transform: translateY(-2px);
498
+ box-shadow: var(--mf-shadow-sm);
499
+ }
500
+
501
+ .magicfeedback-rating-number-option-label-container input[type="radio"]:checked + label {
502
+ color: var(--mf-primary);
503
+ background-color: var(--mf-primary-light);
504
+ border-color: var(--mf-primary);
505
+ font-weight: 600;
506
+ }
507
+
508
+ /* Star Rating */
509
+ .magicfeedback-rating-star-container {
510
+ justify-content: center;
511
+ }
512
+
513
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star {
514
+ font-size: 40px;
515
+ color: var(--mf-border);
516
+ cursor: pointer;
517
+ margin: 0 var(--mf-space-xs);
518
+ transition: var(--mf-transition-fast);
519
+ }
520
+
521
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star:hover,
522
+ .magicfeedback-rating-star-option:not(:checked) > .rating__star:hover ~ span {
523
+ color: #fbbf24;
524
+ transform: scale(1.1);
525
+ }
526
+
527
+ .magicfeedback-rating-star-selected {
528
+ color: #fbbf24 !important;
529
+ }
530
+
531
+ /* ========================================
532
+ MULTIPLE CHOICE WITH IMAGES
533
+ ======================================== */
534
+ .magicfeedback-multiple-choice-image-option {
535
+ display: flex;
536
+ border-radius: var(--mf-radius-md);
537
+ overflow: hidden;
538
+ transition: var(--mf-transition-fast);
539
+ }
540
+
541
+ .magicfeedback-image-option-label-container {
542
+ cursor: pointer;
543
+ border-radius: var(--mf-radius-md);
544
+ overflow: hidden;
545
+ transition: var(--mf-transition-fast);
546
+ }
547
+
548
+ .magicfeedback-image-option-label-container input[type="radio"],
549
+ .magicfeedback-image-option-label-container input[type="checkbox"] {
550
+ position: absolute;
551
+ opacity: 0;
552
+ width: 0;
553
+ height: 0;
554
+ }
555
+
556
+ .magicfeedback-image-option-label-container img {
557
+ width: 100%;
558
+ height: auto;
559
+ display: block;
560
+ border: 2px solid var(--mf-border);
561
+ border-radius: var(--mf-radius-md);
562
+ transition: var(--mf-transition-fast);
563
+ }
564
+
565
+ .magicfeedback-image-option-label-container:hover img {
566
+ border-color: var(--mf-primary);
567
+ box-shadow: var(--mf-shadow-md);
568
+ }
569
+
570
+ .magicfeedback-image-option-label-container input:checked + img {
571
+ border-color: var(--mf-primary);
572
+ box-shadow: 0 0 0 3px var(--mf-primary-light);
573
+ }
574
+
575
+ /* ========================================
576
+ MATRIX QUESTIONS
577
+ ======================================== */
578
+ .magicfeedback-multi-question-matrix-container {
579
+ width: 100%;
580
+ overflow-x: auto;
581
+ border-radius: var(--mf-radius-md);
582
+ }
583
+
584
+ .magicfeedback-multi-question-matrix-table {
585
+ width: 100%;
586
+ border-collapse: separate;
587
+ border-spacing: 0 var(--mf-space-xs);
588
+ }
589
+
590
+ .magicfeedback-multi-question-matrix-table th {
591
+ padding: var(--mf-space-md);
592
+ text-align: center;
593
+ font-size: var(--mf-font-size-sm);
594
+ font-weight: 500;
595
+ color: var(--mf-text-secondary);
596
+ }
597
+
598
+ .magicfeedback-multi-question-matrix-row-tr {
599
+ background-color: var(--mf-bg-primary);
600
+ border-radius: var(--mf-radius-md);
601
+ transition: var(--mf-transition-fast);
602
+ }
603
+
604
+ .magicfeedback-multi-question-matrix-row-tr:nth-child(even) {
605
+ background-color: var(--mf-bg-secondary);
606
+ }
607
+
608
+ .magicfeedback-multi-question-matrix-row-tr:hover {
609
+ background-color: var(--mf-bg-hover);
610
+ box-shadow: var(--mf-shadow-sm);
611
+ }
612
+
613
+ .magicfeedback-multi-question-matrix-table td {
614
+ padding: var(--mf-space-md);
615
+ text-align: center;
616
+ }
617
+
618
+ .magicfeedback-multi-question-matrix-row-label {
619
+ text-align: left;
620
+ font-size: var(--mf-font-size-base);
621
+ color: var(--mf-text-primary);
622
+ }
623
+
624
+ .magicfeedback-multi-question-matrix-table input[type="radio"] {
625
+ width: 20px;
626
+ height: 20px;
627
+ cursor: pointer;
628
+ accent-color: var(--mf-primary);
629
+ }
630
+
631
+ /* ========================================
632
+ PRIORITY LIST
633
+ ======================================== */
634
+ .magicfeedback-priority-list-item {
635
+ display: flex;
636
+ align-items: center;
637
+ justify-content: space-between;
638
+ padding: var(--mf-space-md);
639
+ margin: var(--mf-space-sm) 0;
640
+ background-color: var(--mf-bg-primary);
641
+ border: 1.5px solid var(--mf-border);
642
+ border-radius: var(--mf-radius-md);
643
+ transition: var(--mf-transition-fast);
644
+ }
645
+
646
+ .magicfeedback-priority-list-item:hover {
647
+ box-shadow: var(--mf-shadow-sm);
648
+ border-color: var(--mf-primary);
649
+ }
650
+
651
+ .magicfeedback-priority-list-item-label {
652
+ flex: 1;
653
+ font-size: var(--mf-font-size-base);
654
+ text-align: left;
655
+ color: var(--mf-text-primary);
656
+ margin: 0;
657
+ }
658
+
659
+ .magicfeedback-priority-list-arrow-up,
660
+ .magicfeedback-priority-list-arrow-down {
661
+ padding: var(--mf-space-xs);
662
+ font-size: var(--mf-font-size-lg);
663
+ color: var(--mf-text-secondary);
664
+ cursor: pointer;
665
+ transition: var(--mf-transition-fast);
666
+ user-select: none;
667
+ }
668
+
669
+ .magicfeedback-priority-list-arrow-up:hover,
670
+ .magicfeedback-priority-list-arrow-down:hover {
671
+ color: var(--mf-primary);
672
+ transform: scale(1.2);
673
+ }
674
+
675
+ /* ========================================
676
+ POINT SYSTEM
677
+ ======================================== */
678
+ .magicfeedback-point-system-item {
679
+ display: flex;
680
+ align-items: center;
681
+ justify-content: space-between;
682
+ padding: var(--mf-space-md);
683
+ margin: var(--mf-space-sm) 0;
684
+ background-color: var(--mf-bg-primary);
685
+ border: 1.5px solid var(--mf-border);
686
+ border-radius: var(--mf-radius-md);
687
+ min-height: 60px;
688
+ }
689
+
690
+ .magicfeedback-point-system-item label {
691
+ flex: 1;
692
+ font-size: var(--mf-font-size-base);
693
+ color: var(--mf-text-primary);
694
+ margin: 0;
695
+ }
696
+
697
+ .magicfeedback-point-system-input-container {
698
+ display: flex;
699
+ align-items: center;
700
+ gap: var(--mf-space-sm);
701
+ }
702
+
703
+ .magicfeedback-point-system-item input {
704
+ width: 80px;
705
+ min-width: 80px;
706
+ padding: var(--mf-space-sm);
707
+ text-align: center;
708
+ font-size: var(--mf-font-size-base);
709
+ border: 1.5px solid var(--mf-border);
710
+ border-radius: var(--mf-radius-md);
711
+ margin: 0;
712
+ }
713
+
714
+ .magicfeedback-point-system-total {
715
+ display: flex;
716
+ justify-content: flex-end;
717
+ margin-top: var(--mf-space-md);
718
+ font-size: var(--mf-font-size-base);
719
+ font-weight: 600;
720
+ color: var(--mf-text-primary);
721
+ }
722
+
723
+ /* ========================================
724
+ CONSENT
725
+ ======================================== */
726
+ .magicfeedback-consent-container {
727
+ display: flex;
728
+ align-items: flex-start;
729
+ gap: var(--mf-space-sm);
730
+ padding: var(--mf-space-md);
731
+ background-color: var(--mf-bg-secondary);
732
+ border-radius: var(--mf-radius-md);
733
+ margin: var(--mf-space-md) 0;
734
+ }
735
+
736
+ .magicfeedback-consent-container input[type="checkbox"] {
737
+ margin-top: 2px;
738
+ flex-shrink: 0;
739
+ accent-color: var(--mf-primary);
740
+ }
741
+
742
+ .magicfeedback-consent-container label {
743
+ flex: 1;
744
+ font-size: var(--mf-font-size-sm);
745
+ text-align: left;
746
+ color: var(--mf-text-secondary);
747
+ line-height: var(--mf-line-height);
748
+ cursor: pointer;
749
+ }
750
+
751
+ /* ========================================
752
+ ACTION BUTTONS
753
+ ======================================== */
754
+ .magicfeedback-action-container {
755
+ display: flex;
756
+ align-items: center;
757
+ justify-content: space-between;
758
+ gap: var(--mf-space-md);
759
+ margin-top: var(--mf-space-xl);
760
+ padding-top: var(--mf-space-lg);
761
+ border-top: 1px solid var(--mf-border);
762
+ }
763
+
764
+ .magicfeedback-submit {
765
+ padding: var(--mf-space-sm) var(--mf-space-xl);
766
+ font-size: var(--mf-font-size-base);
767
+ font-weight: 500;
768
+ color: white;
769
+ background-color: var(--mf-primary);
770
+ border: none;
771
+ border-radius: var(--mf-radius-md);
772
+ cursor: pointer;
773
+ transition: var(--mf-transition-fast);
774
+ box-shadow: var(--mf-shadow-sm);
775
+ }
776
+
777
+ .magicfeedback-submit:hover {
778
+ background-color: var(--mf-primary-hover);
779
+ box-shadow: var(--mf-shadow-md);
780
+ transform: translateY(-1px);
781
+ }
782
+
783
+ .magicfeedback-submit:active {
784
+ transform: translateY(0);
785
+ box-shadow: var(--mf-shadow-sm);
786
+ }
787
+
788
+ .magicfeedback-submit:disabled {
789
+ opacity: 0.5;
790
+ cursor: not-allowed;
791
+ transform: none;
792
+ }
793
+
794
+ .magicfeedback-back {
795
+ padding: var(--mf-space-sm) var(--mf-space-md);
796
+ font-size: var(--mf-font-size-base);
797
+ font-weight: 500;
798
+ color: var(--mf-text-secondary);
799
+ background-color: transparent;
800
+ border: none;
801
+ cursor: pointer;
802
+ transition: var(--mf-transition-fast);
803
+ }
804
+
805
+ .magicfeedback-back:hover {
806
+ color: var(--mf-primary);
807
+ }
808
+
809
+ /* ========================================
810
+ SKIP & COUNTER
811
+ ======================================== */
812
+ .magicfeedback-skip-container {
813
+ display: flex;
814
+ align-items: center;
815
+ gap: var(--mf-space-xs);
816
+ padding: 0;
817
+ margin: 0;
818
+ font-size: var(--mf-font-size-sm);
819
+ color: var(--mf-text-muted);
820
+ background: transparent;
821
+ border: none;
822
+ cursor: pointer;
823
+ transition: var(--mf-transition-fast);
824
+ }
825
+
826
+ .magicfeedback-skip-container:hover {
827
+ color: var(--mf-primary);
828
+ }
829
+
830
+ .magicfeedback-skip-container input[type="checkbox"] {
831
+ margin: 0;
832
+ cursor: pointer;
833
+ accent-color: var(--mf-primary);
834
+ }
835
+
836
+ .magicfeedback-counter {
837
+ display: flex;
838
+ justify-content: flex-end;
839
+ margin-top: var(--mf-space-md);
840
+ font-size: var(--mf-font-size-sm);
841
+ color: var(--mf-text-muted);
842
+ }
843
+
844
+ /* ========================================
845
+ RESPONSIVE DESIGN
846
+ ======================================== */
847
+ @media (max-width: 768px) {
848
+ :root {
849
+ --mf-space-lg: 1.25rem;
850
+ --mf-space-xl: 1.5rem;
851
+ }
852
+
853
+ .magicfeedback-label {
854
+ font-size: var(--mf-font-size-base);
855
+ }
856
+
857
+ .magicfeedback-boolean-container {
858
+ flex-direction: column;
859
+ }
860
+
861
+ .magicfeedback-rating-number-container {
862
+ justify-content: flex-start;
863
+ }
864
+
865
+ .magicfeedback-rating-number-option {
866
+ min-width: calc(20% - var(--mf-space-sm));
867
+ }
868
+
869
+ .magicfeedback-action-container {
870
+ flex-direction: column-reverse;
871
+ }
872
+
873
+ .magicfeedback-submit,
874
+ .magicfeedback-back {
875
+ width: 100%;
876
+ text-align: center;
877
+ }
878
+ }
879
+
880
+ /* ========================================
881
+ ACCESSIBILITY
882
+ ======================================== */
883
+ @media (prefers-reduced-motion: reduce) {
884
+ *,
885
+ *::before,
886
+ *::after {
887
+ animation-duration: 0.01ms !important;
888
+ animation-iteration-count: 1 !important;
889
+ transition-duration: 0.01ms !important;
890
+ }
891
+ }
892
+
893
+ /* Focus visible for keyboard navigation */
894
+ *:focus-visible {
895
+ outline: 2px solid var(--mf-primary);
896
+ outline-offset: 2px;
897
+ }
898
+
899
+ /* ========================================
900
+ UTILITY CLASSES
901
+ ======================================== */
902
+ .magicfeedback-visually-hidden {
903
+ position: absolute;
904
+ width: 1px;
905
+ height: 1px;
906
+ padding: 0;
907
+ margin: -1px;
908
+ overflow: hidden;
909
+ clip: rect(0, 0, 0, 0);
910
+ white-space: nowrap;
911
+ border-width: 0;
912
+ }