@visns-studio/visns-components 6.34.0 → 6.35.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,922 @@
1
+ @use 'surface' as *;
2
+
3
+ // ---------------------------------------------------------------------------
4
+ // Email campaigns (components/emailCampaigns/*)
5
+ // ---------------------------------------------------------------------------
6
+ // On the shared surface tokens (_surface.scss), so a project's own palette
7
+ // carries through, and every control states its own box: this screen is
8
+ // mounted inside host layouts whose generic `button` and `input` rules would
9
+ // otherwise decide how it looks.
10
+ // ---------------------------------------------------------------------------
11
+
12
+ .page {
13
+ @include surface-tokens;
14
+
15
+ --ec-control: 36px;
16
+ --ec-good: #1f7a47;
17
+ --ec-bad: var(--pr-danger);
18
+ --ec-warn: #a36a14;
19
+
20
+ display: flex;
21
+ flex-direction: column;
22
+ gap: 1rem;
23
+ color: var(--pr-ink);
24
+ }
25
+
26
+ /* -- the breadcrumb (PageTrail's spec, restated: the library has no shared one) */
27
+
28
+ .trail {
29
+ display: flex;
30
+ flex-wrap: wrap;
31
+ align-items: center;
32
+ column-gap: 0.3em;
33
+ margin: 0;
34
+ color: var(--pr-heading);
35
+ font-size: var(--page-header-title-size, 1.25rem);
36
+ font-weight: 700;
37
+ line-height: 1.25;
38
+ letter-spacing: -0.02em;
39
+ }
40
+
41
+ .trailParent {
42
+ padding: 0;
43
+ border: 0;
44
+ background: none;
45
+ color: var(--pr-muted);
46
+ font: inherit;
47
+ font-weight: 500;
48
+ cursor: pointer;
49
+
50
+ &:hover,
51
+ &:focus-visible {
52
+ color: var(--pr-ink);
53
+ text-decoration: underline;
54
+ }
55
+ }
56
+
57
+ .trailChevron {
58
+ max-width: 15px;
59
+ margin: 0 0.4rem;
60
+ color: var(--pr-muted);
61
+ }
62
+
63
+ /* -- controls ----------------------------------------------------------- */
64
+
65
+ %control {
66
+ box-sizing: border-box;
67
+ min-height: var(--ec-control);
68
+ font-family: inherit;
69
+ font-size: 0.875rem;
70
+ line-height: 1.3;
71
+ }
72
+
73
+ .button,
74
+ .buttonPrimary,
75
+ .dangerButton {
76
+ @extend %control;
77
+
78
+ display: inline-flex;
79
+ gap: 0.4rem;
80
+ align-items: center;
81
+ justify-content: center;
82
+ padding: 0 0.85rem;
83
+ border: 1px solid var(--pr-line);
84
+ border-radius: var(--btn-br, 6px);
85
+ background: var(--pr-surface);
86
+ color: var(--pr-ink);
87
+ font-weight: 600;
88
+ white-space: nowrap;
89
+ cursor: pointer;
90
+
91
+ &:hover:not(:disabled) {
92
+ border-color: var(--pr-heading);
93
+ color: var(--pr-heading);
94
+ }
95
+
96
+ &:disabled {
97
+ cursor: default;
98
+ opacity: 0.55;
99
+ }
100
+ }
101
+
102
+ .buttonPrimary {
103
+ border-color: var(--pr-heading);
104
+ background: var(--pr-heading);
105
+ color: #fff;
106
+
107
+ &:hover:not(:disabled) {
108
+ color: #fff;
109
+ filter: brightness(1.1);
110
+ }
111
+ }
112
+
113
+ .dangerButton {
114
+ color: var(--ec-bad);
115
+
116
+ &:hover:not(:disabled) {
117
+ border-color: var(--ec-bad);
118
+ color: var(--ec-bad);
119
+ }
120
+ }
121
+
122
+ .linkButton {
123
+ padding: 0 0.5rem;
124
+ border: 0;
125
+ background: none;
126
+ color: var(--pr-muted);
127
+ font: inherit;
128
+ font-weight: 600;
129
+ cursor: pointer;
130
+
131
+ &:hover {
132
+ color: var(--pr-ink);
133
+ text-decoration: underline;
134
+ }
135
+ }
136
+
137
+ .iconButton,
138
+ .iconAction {
139
+ display: inline-flex;
140
+ align-items: center;
141
+ justify-content: center;
142
+ width: 28px;
143
+ height: 28px;
144
+ padding: 0;
145
+ border: 1px solid transparent;
146
+ border-radius: 6px;
147
+ background: none;
148
+ color: var(--pr-muted);
149
+ cursor: pointer;
150
+
151
+ &:hover:not(:disabled) {
152
+ border-color: var(--pr-line);
153
+ color: var(--pr-ink);
154
+ }
155
+
156
+ &:disabled {
157
+ cursor: default;
158
+ opacity: 0.4;
159
+ }
160
+ }
161
+
162
+ .iconAction {
163
+ width: var(--ec-control);
164
+ height: var(--ec-control);
165
+ border-color: var(--pr-line);
166
+ }
167
+
168
+ .iconDanger:hover:not(:disabled) {
169
+ border-color: var(--ec-bad);
170
+ color: var(--ec-bad);
171
+ }
172
+
173
+ .iconOn {
174
+ background: color-mix(in srgb, var(--pr-accent) 16%, var(--pr-surface));
175
+ color: var(--pr-heading);
176
+ }
177
+
178
+ .input,
179
+ .select {
180
+ @extend %control;
181
+
182
+ width: 100%;
183
+ min-width: 0;
184
+ padding: 0 0.65rem;
185
+ border: 1px solid var(--pr-line);
186
+ border-radius: 6px;
187
+ background: var(--pr-surface);
188
+ color: var(--pr-ink);
189
+
190
+ &:focus {
191
+ border-color: var(--pr-heading);
192
+ outline: 2px solid color-mix(in srgb, var(--pr-accent) 40%, transparent);
193
+ outline-offset: 0;
194
+ }
195
+
196
+ &:disabled {
197
+ background: var(--pr-quiet);
198
+ color: var(--pr-muted);
199
+ }
200
+ }
201
+
202
+ .field {
203
+ display: flex;
204
+ flex-direction: column;
205
+ gap: 0.3rem;
206
+ min-width: 0;
207
+ }
208
+
209
+ .fieldLabel {
210
+ color: var(--pr-ink);
211
+ font-size: 0.8125rem;
212
+ font-weight: 700;
213
+ }
214
+
215
+ .hint,
216
+ .quiet {
217
+ margin: 0;
218
+ color: var(--pr-muted);
219
+ font-size: 0.8125rem;
220
+ }
221
+
222
+ .fieldError {
223
+ margin: 0;
224
+ color: var(--ec-bad);
225
+ font-size: 0.8125rem;
226
+ }
227
+
228
+ .fieldRow {
229
+ display: flex;
230
+ flex-wrap: wrap;
231
+ gap: 0.5rem;
232
+ align-items: center;
233
+
234
+ > .input,
235
+ > .withTags {
236
+ flex: 1 1 12rem;
237
+ }
238
+
239
+ > .select {
240
+ width: auto;
241
+ }
242
+ }
243
+
244
+ .twoCol {
245
+ display: grid;
246
+ grid-template-columns: 1fr 1fr;
247
+ gap: 0.75rem;
248
+ }
249
+
250
+ .check,
251
+ .inline {
252
+ display: inline-flex;
253
+ gap: 0.5rem;
254
+ align-items: center;
255
+ font-size: 0.875rem;
256
+ }
257
+
258
+ .withTags {
259
+ display: flex;
260
+ gap: 0.35rem;
261
+ min-width: 0;
262
+ }
263
+
264
+ .tagSelect {
265
+ @extend %control;
266
+
267
+ width: auto;
268
+ padding: 0 0.4rem;
269
+ border: 1px dashed var(--pr-line);
270
+ border-radius: 6px;
271
+ background: var(--pr-surface);
272
+ color: var(--pr-muted);
273
+ font-size: 0.8125rem;
274
+ }
275
+
276
+ /* -- tones ------------------------------------------------------------ */
277
+
278
+ .good {
279
+ color: var(--ec-good);
280
+ }
281
+
282
+ .warn {
283
+ color: var(--ec-warn);
284
+ }
285
+
286
+ .bad {
287
+ color: var(--ec-bad);
288
+ }
289
+
290
+ .pill {
291
+ display: inline-block;
292
+ padding: 0.1rem 0.55rem;
293
+ border-radius: 999px;
294
+ font-size: 0.75rem;
295
+ font-weight: 700;
296
+ white-space: nowrap;
297
+ }
298
+
299
+ .tone_quiet {
300
+ background: var(--pr-quiet);
301
+ color: var(--pr-muted);
302
+ }
303
+
304
+ .tone_warn {
305
+ background: color-mix(in srgb, var(--ec-warn) 14%, var(--pr-surface));
306
+ color: var(--ec-warn);
307
+ }
308
+
309
+ .tone_good {
310
+ background: color-mix(in srgb, var(--ec-good) 14%, var(--pr-surface));
311
+ color: var(--ec-good);
312
+ }
313
+
314
+ .tone_bad {
315
+ background: color-mix(in srgb, var(--ec-bad) 12%, var(--pr-surface));
316
+ color: var(--ec-bad);
317
+ }
318
+
319
+ .notice {
320
+ padding: 0.7rem 0.9rem;
321
+ border: 1px solid var(--pr-line);
322
+ border-radius: var(--pr-radius);
323
+ font-size: 0.875rem;
324
+
325
+ p {
326
+ margin: 0;
327
+ }
328
+
329
+ ul {
330
+ margin: 0.4rem 0 0;
331
+ padding-left: 1.2rem;
332
+ }
333
+ }
334
+
335
+ .notice_bad {
336
+ border-color: color-mix(in srgb, var(--ec-bad) 40%, transparent);
337
+ background: color-mix(in srgb, var(--ec-bad) 7%, var(--pr-surface));
338
+ }
339
+
340
+ .notice_warn {
341
+ border-color: color-mix(in srgb, var(--ec-warn) 40%, transparent);
342
+ background: color-mix(in srgb, var(--ec-warn) 8%, var(--pr-surface));
343
+ }
344
+
345
+ .state {
346
+ margin: 1rem 0;
347
+ color: var(--pr-muted);
348
+ }
349
+
350
+ .empty {
351
+ display: flex;
352
+ flex-direction: column;
353
+ gap: 0.5rem;
354
+ align-items: center;
355
+ padding: 3rem 1rem;
356
+ color: var(--pr-muted);
357
+ text-align: center;
358
+ }
359
+
360
+ /* -- tables ----------------------------------------------------------- */
361
+
362
+ .table {
363
+ width: 100%;
364
+ border-collapse: collapse;
365
+ font-size: 0.875rem;
366
+
367
+ th {
368
+ padding: 0.5rem 0.6rem;
369
+ border-bottom: 1px solid var(--pr-line);
370
+ color: var(--pr-muted);
371
+ font-size: 0.75rem;
372
+ font-weight: 700;
373
+ letter-spacing: 0.04em;
374
+ text-align: left;
375
+ text-transform: uppercase;
376
+ }
377
+
378
+ td {
379
+ padding: 0.6rem;
380
+ border-bottom: 1px solid var(--pr-line);
381
+ vertical-align: top;
382
+ }
383
+ }
384
+
385
+ .num {
386
+ text-align: right !important;
387
+ font-variant-numeric: tabular-nums;
388
+ white-space: nowrap;
389
+ }
390
+
391
+ .clickRow {
392
+ cursor: pointer;
393
+
394
+ &:hover td {
395
+ background: var(--pr-quiet);
396
+ }
397
+ }
398
+
399
+ .rowLink {
400
+ padding: 0;
401
+ border: 0;
402
+ background: none;
403
+ color: var(--pr-heading);
404
+ font: inherit;
405
+ font-weight: 700;
406
+ text-align: left;
407
+ cursor: pointer;
408
+
409
+ &:hover {
410
+ text-decoration: underline;
411
+ }
412
+ }
413
+
414
+ .linkCell {
415
+ max-width: 24rem;
416
+ overflow: hidden;
417
+ text-overflow: ellipsis;
418
+ white-space: nowrap;
419
+
420
+ a {
421
+ color: var(--pr-heading);
422
+ }
423
+ }
424
+
425
+ .toolbar {
426
+ display: flex;
427
+ flex-wrap: wrap;
428
+ gap: 0.75rem;
429
+ align-items: center;
430
+ justify-content: space-between;
431
+ }
432
+
433
+ .toolbarRight {
434
+ display: inline-flex;
435
+ gap: 0.5rem;
436
+ }
437
+
438
+ .tabBody {
439
+ display: flex;
440
+ flex-direction: column;
441
+ gap: 0.9rem;
442
+ }
443
+
444
+ /* -- cards -------------------------------------------------------------- */
445
+
446
+ .card,
447
+ .blockersCard {
448
+ display: flex;
449
+ flex-direction: column;
450
+ gap: 0.85rem;
451
+ padding: 1rem;
452
+ border: 1px solid var(--pr-line);
453
+ border-radius: var(--pr-radius);
454
+ background: var(--pr-surface);
455
+ }
456
+
457
+ .blockersCard {
458
+ border-color: color-mix(in srgb, var(--ec-warn) 40%, transparent);
459
+
460
+ ul {
461
+ margin: 0;
462
+ padding-left: 1.2rem;
463
+ font-size: 0.875rem;
464
+ }
465
+ }
466
+
467
+ .cardTitle {
468
+ margin: 0;
469
+ color: var(--pr-heading);
470
+ font-size: 0.95rem;
471
+ font-weight: 700;
472
+ }
473
+
474
+ /* -- the editor --------------------------------------------------------- */
475
+
476
+ .editor {
477
+ display: flex;
478
+ flex-direction: column;
479
+ gap: 1rem;
480
+ }
481
+
482
+ .editorHead {
483
+ display: flex;
484
+ flex-wrap: wrap;
485
+ gap: 0.75rem;
486
+ align-items: center;
487
+ justify-content: space-between;
488
+ }
489
+
490
+ .editorTitle {
491
+ display: flex;
492
+ flex-wrap: wrap;
493
+ gap: 0.5rem;
494
+ align-items: center;
495
+ }
496
+
497
+ .saveMark {
498
+ color: var(--pr-muted);
499
+ font-size: 0.8125rem;
500
+ }
501
+
502
+ .editorActions {
503
+ display: flex;
504
+ flex-wrap: wrap;
505
+ gap: 0.45rem;
506
+ align-items: center;
507
+ }
508
+
509
+ .editorBody {
510
+ display: grid;
511
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
512
+ gap: 1rem;
513
+ align-items: start;
514
+ }
515
+
516
+ .editorForm {
517
+ display: flex;
518
+ flex-direction: column;
519
+ gap: 1rem;
520
+ min-width: 0;
521
+ }
522
+
523
+ .previewPane {
524
+ position: sticky;
525
+ top: 1rem;
526
+ display: flex;
527
+ flex-direction: column;
528
+ overflow: hidden;
529
+ border: 1px solid var(--pr-line);
530
+ border-radius: var(--pr-radius);
531
+ background: var(--pr-quiet);
532
+ }
533
+
534
+ .previewBar {
535
+ display: flex;
536
+ align-items: center;
537
+ justify-content: space-between;
538
+ padding: 0.5rem 0.75rem;
539
+ border-bottom: 1px solid var(--pr-line);
540
+ background: var(--pr-surface);
541
+ }
542
+
543
+ .deviceToggle {
544
+ display: inline-flex;
545
+ gap: 0.2rem;
546
+ }
547
+
548
+ .device,
549
+ .deviceOn {
550
+ display: inline-flex;
551
+ align-items: center;
552
+ justify-content: center;
553
+ width: 30px;
554
+ height: 28px;
555
+ padding: 0;
556
+ border: 1px solid var(--pr-line);
557
+ border-radius: 6px;
558
+ background: var(--pr-surface);
559
+ color: var(--pr-muted);
560
+ cursor: pointer;
561
+ }
562
+
563
+ .deviceOn {
564
+ border-color: var(--pr-heading);
565
+ color: var(--pr-heading);
566
+ }
567
+
568
+ /* How it reads in an inbox list, above the email itself. */
569
+ .inboxLine {
570
+ display: flex;
571
+ flex-direction: column;
572
+ gap: 0.1rem;
573
+ padding: 0.55rem 0.75rem;
574
+ border-bottom: 1px solid var(--pr-line);
575
+ background: var(--pr-surface);
576
+ font-size: 0.8125rem;
577
+
578
+ span {
579
+ overflow: hidden;
580
+ text-overflow: ellipsis;
581
+ white-space: nowrap;
582
+ }
583
+ }
584
+
585
+ .frame,
586
+ .framePhone {
587
+ display: block;
588
+ width: 100%;
589
+ height: 75vh;
590
+ min-height: 480px;
591
+ border: 0;
592
+ background: #fff;
593
+ }
594
+
595
+ .framePhone {
596
+ width: 390px;
597
+ max-width: 100%;
598
+ margin: 0.75rem auto;
599
+ border: 1px solid var(--pr-line);
600
+ border-radius: 18px;
601
+ }
602
+
603
+ /* What went out, on a campaign that can no longer change. */
604
+ .details {
605
+ display: grid;
606
+ grid-template-columns: max-content 1fr;
607
+ gap: 0.45rem 1rem;
608
+ margin: 0;
609
+ font-size: 0.875rem;
610
+
611
+ dt {
612
+ color: var(--pr-muted);
613
+ font-weight: 600;
614
+ }
615
+
616
+ dd {
617
+ margin: 0;
618
+ overflow-wrap: anywhere;
619
+ }
620
+ }
621
+
622
+ /* -- blocks ------------------------------------------------------------- */
623
+
624
+ .blocks {
625
+ display: flex;
626
+ flex-direction: column;
627
+ gap: 0.75rem;
628
+ }
629
+
630
+ .block {
631
+ display: flex;
632
+ flex-direction: column;
633
+ gap: 0.55rem;
634
+ padding: 0.7rem;
635
+ border: 1px solid var(--pr-line);
636
+ border-radius: 8px;
637
+ background: var(--pr-surface);
638
+ }
639
+
640
+ .blockHead {
641
+ display: flex;
642
+ align-items: center;
643
+ justify-content: space-between;
644
+ }
645
+
646
+ .blockType {
647
+ color: var(--pr-muted);
648
+ font-size: 0.75rem;
649
+ font-weight: 700;
650
+ letter-spacing: 0.04em;
651
+ text-transform: uppercase;
652
+ }
653
+
654
+ .blockTools,
655
+ .alignPicker {
656
+ display: inline-flex;
657
+ gap: 0.15rem;
658
+ }
659
+
660
+ .addRow {
661
+ display: flex;
662
+ flex-wrap: wrap;
663
+ gap: 0.35rem;
664
+ align-items: center;
665
+ padding-top: 0.25rem;
666
+ }
667
+
668
+ .addLabel {
669
+ margin-right: 0.25rem;
670
+ color: var(--pr-muted);
671
+ font-size: 0.8125rem;
672
+ font-weight: 700;
673
+ }
674
+
675
+ .addButton {
676
+ padding: 0.3rem 0.65rem;
677
+ border: 1px dashed var(--pr-line);
678
+ border-radius: 999px;
679
+ background: var(--pr-surface);
680
+ color: var(--pr-ink);
681
+ font-family: inherit;
682
+ font-size: 0.8125rem;
683
+ cursor: pointer;
684
+
685
+ &:hover {
686
+ border-color: var(--pr-heading);
687
+ border-style: solid;
688
+ color: var(--pr-heading);
689
+ }
690
+ }
691
+
692
+ .rich {
693
+ overflow: hidden;
694
+ border: 1px solid var(--pr-line);
695
+ border-radius: 6px;
696
+ }
697
+
698
+ .richBar {
699
+ display: flex;
700
+ flex-wrap: wrap;
701
+ gap: 0.15rem;
702
+ align-items: center;
703
+ padding: 0.25rem;
704
+ border-bottom: 1px solid var(--pr-line);
705
+ background: var(--pr-quiet);
706
+ }
707
+
708
+ .richBox {
709
+ min-height: 5.5rem;
710
+ padding: 0.6rem 0.7rem;
711
+ background: var(--pr-surface);
712
+ font-size: 0.9rem;
713
+ line-height: 1.6;
714
+ outline: none;
715
+
716
+ p {
717
+ margin: 0 0 0.6rem;
718
+ }
719
+
720
+ a {
721
+ color: var(--pr-heading);
722
+ }
723
+ }
724
+
725
+ .columnsEdit {
726
+ display: grid;
727
+ grid-template-columns: 1fr 1fr;
728
+ gap: 0.5rem;
729
+ }
730
+
731
+ .imageEdit {
732
+ display: flex;
733
+ gap: 0.75rem;
734
+ }
735
+
736
+ .imageThumb,
737
+ .imageEmpty {
738
+ flex: 0 0 7rem;
739
+ width: 7rem;
740
+ height: 5rem;
741
+ border-radius: 6px;
742
+ object-fit: cover;
743
+ }
744
+
745
+ .imageEmpty {
746
+ display: flex;
747
+ align-items: center;
748
+ justify-content: center;
749
+ border: 1px dashed var(--pr-line);
750
+ color: var(--pr-muted);
751
+ font-size: 0.75rem;
752
+ }
753
+
754
+ .imageFields {
755
+ display: flex;
756
+ flex: 1 1 auto;
757
+ flex-direction: column;
758
+ gap: 0.45rem;
759
+ min-width: 0;
760
+ }
761
+
762
+ /* -- the report ----------------------------------------------------------- */
763
+
764
+ .report {
765
+ display: flex;
766
+ flex-direction: column;
767
+ gap: 0.75rem;
768
+ }
769
+
770
+ .reportGrid {
771
+ display: grid;
772
+ grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
773
+ gap: 1rem;
774
+ }
775
+
776
+ .activity {
777
+ display: flex;
778
+ flex-direction: column;
779
+ gap: 0.4rem;
780
+ max-height: 22rem;
781
+ margin: 0;
782
+ padding: 0;
783
+ overflow: auto;
784
+ font-size: 0.8125rem;
785
+ list-style: none;
786
+ }
787
+
788
+ .activityWhen {
789
+ display: block;
790
+ color: var(--pr-muted);
791
+ font-size: 0.75rem;
792
+ }
793
+
794
+ /* -- dialogs ---------------------------------------------------------------- */
795
+
796
+ .dialog {
797
+ display: flex;
798
+ flex-direction: column;
799
+ gap: 0.9rem;
800
+ }
801
+
802
+ .dialogActions {
803
+ display: flex;
804
+ gap: 0.5rem;
805
+ align-items: center;
806
+ justify-content: flex-end;
807
+ }
808
+
809
+ .segmented {
810
+ display: inline-flex;
811
+ align-self: flex-start;
812
+ padding: 2px;
813
+ border: 1px solid var(--pr-line);
814
+ border-radius: 8px;
815
+ background: var(--pr-quiet);
816
+ }
817
+
818
+ .segment,
819
+ .segmentOn {
820
+ padding: 0.4rem 0.8rem;
821
+ border: 0;
822
+ border-radius: 6px;
823
+ background: none;
824
+ color: var(--pr-muted);
825
+ font-family: inherit;
826
+ font-size: 0.875rem;
827
+ font-weight: 600;
828
+ cursor: pointer;
829
+ }
830
+
831
+ .segmentOn {
832
+ background: var(--pr-surface);
833
+ color: var(--pr-heading);
834
+ box-shadow: 0 1px 2px rgb(0 0 0 / 8%);
835
+ }
836
+
837
+ .chips {
838
+ display: flex;
839
+ flex-wrap: wrap;
840
+ gap: 0.35rem;
841
+ }
842
+
843
+ .chip {
844
+ padding: 0.2rem 0.6rem;
845
+ border: 1px solid var(--pr-heading);
846
+ border-radius: 999px;
847
+ background: color-mix(in srgb, var(--pr-accent) 12%, var(--pr-surface));
848
+ color: var(--pr-heading);
849
+ font-family: inherit;
850
+ font-size: 0.8125rem;
851
+ cursor: pointer;
852
+ }
853
+
854
+ .results {
855
+ display: flex;
856
+ flex-wrap: wrap;
857
+ gap: 0.35rem;
858
+ }
859
+
860
+ .result {
861
+ padding: 0.25rem 0.6rem;
862
+ border: 1px solid var(--pr-line);
863
+ border-radius: 999px;
864
+ background: var(--pr-surface);
865
+ color: var(--pr-ink);
866
+ font-family: inherit;
867
+ font-size: 0.8125rem;
868
+ cursor: pointer;
869
+
870
+ &:hover {
871
+ border-color: var(--pr-heading);
872
+ color: var(--pr-heading);
873
+ }
874
+ }
875
+
876
+ .drop {
877
+ display: flex;
878
+ gap: 0.6rem;
879
+ align-items: center;
880
+ padding: 1rem;
881
+ border: 1px dashed var(--pr-line);
882
+ border-radius: 8px;
883
+ color: var(--pr-muted);
884
+ font-size: 0.875rem;
885
+ cursor: pointer;
886
+
887
+ &:hover {
888
+ border-color: var(--pr-heading);
889
+ color: var(--pr-heading);
890
+ }
891
+ }
892
+
893
+ .mapping {
894
+ display: grid;
895
+ grid-template-columns: repeat(2, minmax(0, 1fr));
896
+ gap: 0.6rem;
897
+ }
898
+
899
+ /* -- narrow ------------------------------------------------------------------ */
900
+
901
+ @media (max-width: 1100px) {
902
+ .editorBody,
903
+ .reportGrid {
904
+ grid-template-columns: minmax(0, 1fr);
905
+ }
906
+
907
+ .previewPane {
908
+ position: static;
909
+ }
910
+ }
911
+
912
+ @media (max-width: 640px) {
913
+ .twoCol,
914
+ .columnsEdit,
915
+ .mapping {
916
+ grid-template-columns: minmax(0, 1fr);
917
+ }
918
+
919
+ .imageEdit {
920
+ flex-direction: column;
921
+ }
922
+ }