@echozedlabs/react 0.1.0 → 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.
package/src/styles.css CHANGED
@@ -1,1395 +1,1700 @@
1
- .me-editor {
2
- --me-font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
3
- --me-font-mono: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
4
- --me-surface: #ffffff;
5
- --me-surface-muted: #f6f7f8;
6
- /* Themeable surfaces (light defaults). A host can remap these — and the core
7
- vars above — to its own tokens so the editor follows the site light/dark
8
- theme. */
9
- --me-surface-raised: #ffffff;
10
- --me-code-bg: #f8fafc;
11
- --me-callout-bg: #eff6ff;
12
- --me-error-bg: #fff1f2;
13
- --me-border: #d9dee5;
14
- --me-text: #18202a;
15
- --me-muted: #5d6978;
16
- --me-accent: #2563eb;
17
- --me-radius: 8px;
18
- display: flex;
19
- min-height: 240px;
20
- flex-direction: column;
21
- overflow: hidden;
22
- border: 1px solid var(--me-border);
23
- border-radius: var(--me-radius);
24
- background: var(--me-surface);
25
- color: var(--me-text);
26
- font-family: var(--me-font-ui);
27
- }
28
-
29
- .me-toolbar {
30
- display: flex;
31
- flex-wrap: wrap;
32
- gap: 4px;
33
- align-items: center;
34
- padding: 8px;
35
- border-bottom: 1px solid var(--me-border);
36
- background: var(--me-surface-muted);
37
- }
38
-
39
- .me-mode-button {
40
- min-height: 32px;
41
- border: 1px solid transparent;
42
- border-radius: 6px;
43
- background: transparent;
44
- color: var(--me-muted);
45
- cursor: pointer;
46
- font: inherit;
47
- padding: 0 10px;
48
- display: inline-flex;
49
- align-items: center;
50
- justify-content: center;
51
- gap: 6px;
52
- }
53
-
54
- .me-mode-button[data-icon-only="true"] {
55
- width: 34px;
56
- padding: 0;
57
- }
58
-
59
- .me-mode-button-icon {
60
- display: inline-flex;
61
- align-items: center;
62
- justify-content: center;
63
- width: 1em;
64
- height: 1em;
65
- }
66
-
67
- .me-sr-only {
68
- position: absolute;
69
- width: 1px;
70
- height: 1px;
71
- padding: 0;
72
- margin: -1px;
73
- overflow: hidden;
74
- clip: rect(0, 0, 0, 0);
75
- white-space: nowrap;
76
- border: 0;
77
- }
78
-
79
- .me-mode-button[data-active="true"] {
80
- border-color: var(--me-border);
81
- background: var(--me-surface);
82
- color: var(--me-text);
83
- }
84
-
85
- .me-properties-toggle {
86
- margin-left: auto;
87
- }
88
-
89
- .me-host-tools {
90
- position: relative;
91
- display: flex;
92
- flex: 1 1 280px;
93
- flex-wrap: wrap;
94
- gap: 6px;
95
- align-items: center;
96
- justify-content: flex-end;
97
- min-width: 0;
98
- margin-left: auto;
99
- }
100
-
101
- .me-link-search {
102
- position: relative;
103
- min-width: min(220px, 100%);
104
- }
105
-
106
- .me-link-search input {
107
- width: 100%;
108
- min-height: 32px;
109
- min-width: 0;
110
- border: 1px solid var(--me-border);
111
- border-radius: 6px;
112
- background: var(--me-surface);
113
- color: var(--me-text);
114
- font: inherit;
115
- padding: 0 10px;
116
- }
117
-
118
- .me-link-search input:focus {
119
- border-color: var(--me-accent);
120
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
121
- }
122
-
123
- .me-link-suggestions {
124
- position: absolute;
125
- z-index: 8;
126
- top: calc(100% + 4px);
127
- right: 0;
128
- display: grid;
129
- width: min(320px, 86vw);
130
- max-height: 240px;
131
- overflow: auto;
132
- border: 1px solid var(--me-border);
133
- border-radius: 6px;
134
- background: var(--me-surface);
135
- box-shadow: 0 12px 28px rgba(24, 32, 42, 0.16);
136
- }
137
-
138
- .me-link-suggestion {
139
- display: grid;
140
- gap: 2px;
141
- width: 100%;
142
- min-height: 38px;
143
- border: 0;
144
- border-bottom: 1px solid var(--me-border);
145
- border-radius: 0;
146
- background: transparent;
147
- color: var(--me-text);
148
- cursor: pointer;
149
- font: inherit;
150
- padding: 8px 10px;
151
- text-align: left;
152
- }
153
-
154
- .me-link-suggestion:last-child {
155
- border-bottom: 0;
156
- }
157
-
158
- .me-link-suggestion:hover,
159
- .me-link-suggestion:focus-visible {
160
- background: var(--me-callout-bg);
161
- outline: none;
162
- }
163
-
164
- .me-link-suggestion small,
165
- .me-link-suggestion-status {
166
- color: var(--me-muted);
167
- font-size: 12px;
168
- }
169
-
170
- .me-link-suggestion-status {
171
- padding: 8px 10px;
172
- }
173
-
174
- .me-upload-control {
175
- display: inline-flex;
176
- align-items: center;
177
- }
178
-
179
- .me-upload-control input {
180
- position: absolute;
181
- width: 1px;
182
- height: 1px;
183
- overflow: hidden;
184
- clip: rect(0 0 0 0);
185
- white-space: nowrap;
186
- }
187
-
188
- .me-upload-button {
189
- display: inline-flex;
190
- min-height: 32px;
191
- align-items: center;
192
- justify-content: center;
193
- border: 1px solid var(--me-border);
194
- border-radius: 6px;
195
- background: var(--me-surface);
196
- color: var(--me-text);
197
- cursor: pointer;
198
- font: inherit;
199
- padding: 0 10px;
200
- }
201
-
202
- .me-upload-button:hover,
203
- .me-upload-control input:focus-visible + .me-upload-button {
204
- border-color: var(--me-accent);
205
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
206
- }
207
-
208
- .me-visually-hidden {
209
- position: absolute;
210
- width: 1px;
211
- height: 1px;
212
- overflow: hidden;
213
- clip: rect(0 0 0 0);
214
- white-space: nowrap;
215
- }
216
-
217
- .me-editor-surface {
218
- min-height: inherit;
219
- flex: 1;
220
- }
221
-
222
- .me-preview {
223
- min-height: inherit;
224
- flex: 1;
225
- overflow: auto;
226
- padding: 16px;
227
- line-height: 1.65;
228
- }
229
-
230
- .me-preview h1,
231
- .me-preview h2,
232
- .me-preview h3,
233
- .me-preview p,
234
- .me-preview ul,
235
- .me-preview ol,
236
- .me-preview pre,
237
- .me-preview blockquote,
238
- .me-preview table {
239
- margin-top: 0;
240
- }
241
-
242
- .me-renderer-list {
243
- padding-left: 1.45rem;
244
- }
245
-
246
- .me-renderer-list li {
247
- margin: 4px 0;
248
- }
249
-
250
- .me-renderer-task-list {
251
- padding-left: 0;
252
- list-style: none;
253
- }
254
-
255
- .me-renderer-task-item {
256
- display: flex;
257
- gap: 8px;
258
- align-items: flex-start;
259
- }
260
-
261
- .me-renderer-task-checkbox {
262
- position: relative;
263
- appearance: none;
264
- width: 1.05em;
265
- height: 1.05em;
266
- flex: 0 0 auto;
267
- margin: 0.25em 0 0;
268
- border: 1px solid #9aa7b2;
269
- border-radius: 4px;
270
- background: var(--me-surface);
271
- opacity: 1;
272
- }
273
-
274
- .me-renderer-task-checkbox:checked {
275
- border-color: var(--me-accent);
276
- background-color: var(--me-accent);
277
- background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
278
- linear-gradient(-45deg, transparent 48%, #ffffff 48%),
279
- linear-gradient(45deg, #ffffff 42%, transparent 42%);
280
- background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
281
- background-repeat: no-repeat;
282
- background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
283
- }
284
-
285
- .me-preview pre,
286
- .me-renderer-code,
287
- .me-renderer-error {
288
- overflow: auto;
289
- border: 1px solid var(--me-border);
290
- border-radius: 6px;
291
- background: var(--me-code-bg);
292
- padding: 12px;
293
- }
294
-
295
- .me-renderer-code-highlight {
296
- margin: 14px 0;
297
- }
298
-
299
- .me-renderer-code-highlight .shiki {
300
- margin: 0;
301
- border: 1px solid var(--me-border);
302
- background: var(--me-surface);
303
- }
304
-
305
- .me-renderer-diagram {
306
- overflow: auto;
307
- margin: 14px 0;
308
- padding: 12px;
309
- border: 1px solid var(--me-border);
310
- border-radius: 6px;
311
- background: var(--me-surface);
312
- }
313
-
314
- .me-renderer-diagram svg {
315
- display: block;
316
- max-width: 100%;
317
- height: auto;
318
- margin: 0 auto;
319
- }
320
-
321
- .me-preview table {
322
- width: 100%;
323
- border-collapse: collapse;
324
- }
325
-
326
- .me-renderer-properties {
327
- margin: 0 0 16px;
328
- padding: 8px;
329
- border: 1px solid var(--me-border);
330
- border-radius: 6px;
331
- background: var(--me-surface-muted);
332
- }
333
-
334
- .me-renderer-properties-table {
335
- width: 100%;
336
- border-collapse: collapse;
337
- font-size: 13px;
338
- line-height: 1.45;
339
- }
340
-
341
- .me-renderer-properties-table th,
342
- .me-renderer-properties-table td {
343
- border-bottom: 1px solid var(--me-border);
344
- padding: 6px 8px;
345
- vertical-align: top;
346
- }
347
-
348
- .me-renderer-properties-table tr:last-child th,
349
- .me-renderer-properties-table tr:last-child td {
350
- border-bottom: 0;
351
- }
352
-
353
- .me-renderer-properties-table th {
354
- width: 160px;
355
- color: var(--me-muted);
356
- font-weight: 600;
357
- text-align: left;
358
- }
359
-
360
- .me-preview td,
361
- .me-preview th {
362
- border: 1px solid var(--me-border);
363
- padding: 6px 8px;
364
- }
365
-
366
- .me-preview .me-renderer-properties-table td,
367
- .me-preview .me-renderer-properties-table th {
368
- border-right: 0;
369
- border-left: 0;
370
- border-top: 0;
371
- }
372
-
373
- .me-renderer-callout {
374
- border-left: 4px solid var(--me-accent);
375
- background: var(--me-callout-bg);
376
- padding: 10px 12px;
377
- }
378
-
379
- .me-codemirror {
380
- min-height: inherit;
381
- height: 100%;
382
- font-family: var(--me-font-mono);
383
- font-size: 14px;
384
- }
385
-
386
- .me-codemirror .cm-scroller {
387
- min-height: inherit;
388
- }
389
-
390
- .me-codemirror .cm-content {
391
- padding: 16px;
392
- }
393
-
394
- .me-codemirror .cm-me-hybrid-heading {
395
- color: var(--me-text);
396
- font-weight: 700;
397
- }
398
-
399
- .me-codemirror .cm-me-hybrid-heading-1 {
400
- font-size: 1.65em;
401
- }
402
-
403
- .me-codemirror .cm-me-hybrid-heading-2 {
404
- font-size: 1.35em;
405
- }
406
-
407
- .me-codemirror .cm-me-hybrid-heading-3 {
408
- font-size: 1.18em;
409
- }
410
-
411
- .me-codemirror .cm-me-hybrid-blockquote {
412
- border-left: 3px solid var(--me-border);
413
- color: var(--me-muted);
414
- padding-left: 10px;
415
- }
416
-
417
- .me-codemirror .cm-me-list-bullet,
418
- .me-codemirror .cm-me-ordered-marker {
419
- display: inline-block;
420
- min-width: 1.4em;
421
- color: var(--me-muted);
422
- }
423
-
424
- .me-codemirror .cm-me-list-bullet {
425
- text-align: center;
426
- }
427
-
428
- .me-codemirror .cm-me-task-checkbox {
429
- display: inline-block;
430
- width: 1.05em;
431
- height: 1.05em;
432
- margin-right: 0.45em;
433
- vertical-align: -0.16em;
434
- border: 1px solid #9aa7b2;
435
- border-radius: 4px;
436
- background: var(--me-surface);
437
- }
438
-
439
- .me-codemirror .cm-me-task-checkbox-checked {
440
- border-color: var(--me-accent);
441
- background-color: var(--me-accent);
442
- background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
443
- linear-gradient(-45deg, transparent 48%, #ffffff 48%),
444
- linear-gradient(45deg, #ffffff 42%, transparent 42%);
445
- background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
446
- background-repeat: no-repeat;
447
- background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
448
- }
449
-
450
- .me-codemirror .cm-me-hybrid-link {
451
- color: var(--me-accent);
452
- cursor: text;
453
- text-decoration: underline;
454
- text-underline-offset: 2px;
455
- }
456
-
457
- .me-codemirror .cm-me-hybrid-wiki-link {
458
- border-radius: 4px;
459
- background: var(--me-callout-bg);
460
- padding: 0 3px;
461
- text-decoration: none;
462
- }
463
-
464
- .me-codemirror .cm-me-rendered-block {
465
- margin: 8px 0;
466
- color: var(--me-text);
467
- cursor: text;
468
- font-family: var(--me-font-ui);
469
- line-height: 1.55;
470
- }
471
-
472
- .me-codemirror .cm-me-rendered-block:focus {
473
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 65%);
474
- outline-offset: 2px;
475
- }
476
-
477
- .me-codemirror .cm-me-rendered-block pre {
478
- white-space: pre;
479
- }
480
-
481
- .me-codemirror .cm-me-rendered-block .me-renderer-code-highlight,
482
- .me-codemirror .cm-me-rendered-block .me-renderer-diagram {
483
- margin: 8px 0;
484
- }
485
-
486
- .me-codemirror .cm-me-rendered-block table {
487
- width: 100%;
488
- border-collapse: collapse;
489
- margin: 8px 0;
490
- }
491
-
492
- .me-codemirror .cm-me-rendered-block td,
493
- .me-codemirror .cm-me-rendered-block th {
494
- border: 1px solid var(--me-border);
495
- padding: 6px 8px;
496
- }
497
-
498
- .me-codemirror .cm-me-rendered-block img {
499
- display: block;
500
- max-width: 100%;
501
- height: auto;
502
- margin: 8px 0;
503
- }
504
-
505
- .me-codemirror .cm-me-rendered-block .me-renderer-callout {
506
- margin: 8px 0;
507
- }
508
-
509
- .me-codemirror .cm-me-rendered-block-error {
510
- overflow: auto;
511
- border: 1px solid #fecaca;
512
- border-radius: 6px;
513
- background: var(--me-error-bg);
514
- color: #991b1b;
515
- padding: 12px;
516
- }
517
-
518
- .me-codemirror .cm-me-properties {
519
- margin: 2px 0 12px;
520
- padding: 10px 12px 12px;
521
- border-radius: 7px;
522
- background: color-mix(in srgb, var(--me-surface-muted), var(--me-surface) 44%);
523
- color: var(--me-text);
524
- font-family: var(--me-font-ui);
525
- }
526
-
527
- .me-codemirror .cm-me-properties-heading {
528
- display: flex;
529
- flex-wrap: wrap;
530
- gap: 8px;
531
- align-items: center;
532
- margin-bottom: 8px;
533
- color: var(--me-text);
534
- font-size: 13px;
535
- font-weight: 700;
536
- cursor: pointer;
537
- list-style: none;
538
- }
539
-
540
- .me-codemirror .cm-me-properties-heading::-webkit-details-marker {
541
- display: none;
542
- }
543
-
544
- .me-codemirror .cm-me-properties-heading::before {
545
- content: '▸';
546
- color: var(--me-text-muted);
547
- transition: transform 120ms ease;
548
- }
549
-
550
- .me-codemirror .cm-me-properties-details[open] > .cm-me-properties-heading::before {
551
- transform: rotate(90deg);
552
- }
553
-
554
- .me-codemirror .cm-me-properties-heading:focus-visible {
555
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
556
- outline-offset: 2px;
557
- }
558
-
559
- .me-codemirror .cm-me-properties-heading-text {
560
- white-space: nowrap;
561
- }
562
-
563
- .me-codemirror .cm-me-properties-chips {
564
- display: inline-flex;
565
- flex: 1 1 240px;
566
- flex-wrap: wrap;
567
- gap: 6px;
568
- min-width: 0;
569
- }
570
-
571
- .me-codemirror .cm-me-property-chip {
572
- max-width: 220px;
573
- overflow: hidden;
574
- border: 1px solid color-mix(in srgb, var(--me-border), transparent 20%);
575
- border-radius: 999px;
576
- background: var(--me-surface);
577
- color: var(--me-text-muted);
578
- font-size: 12px;
579
- font-weight: 600;
580
- padding: 2px 8px;
581
- text-overflow: ellipsis;
582
- white-space: nowrap;
583
- }
584
-
585
- .me-codemirror .cm-me-property-chip[data-property-key='topic'] {
586
- border-color: color-mix(in srgb, var(--me-accent), transparent 50%);
587
- color: var(--me-text);
588
- }
589
-
590
- .me-codemirror .cm-me-property-chip--muted {
591
- color: var(--me-text-muted);
592
- }
593
-
594
- .me-codemirror .cm-me-properties-table {
595
- display: grid;
596
- gap: 2px;
597
- font-size: 13px;
598
- line-height: 1.45;
599
- }
600
-
601
- .me-codemirror .cm-me-property-row {
602
- position: relative;
603
- display: grid;
604
- grid-template-columns: 24px minmax(130px, 190px) minmax(180px, 1fr) 28px;
605
- gap: 8px;
606
- align-items: center;
607
- min-height: 34px;
608
- border-radius: 6px;
609
- padding: 2px 0;
610
- }
611
-
612
- .me-codemirror .cm-me-property-row:hover,
613
- .me-codemirror .cm-me-property-row:focus-within {
614
- background: color-mix(in srgb, var(--me-accent), transparent 94%);
615
- }
616
-
617
- .me-codemirror .cm-me-property-order-cell,
618
- .me-codemirror .cm-me-property-remove-cell {
619
- display: flex;
620
- align-items: center;
621
- justify-content: center;
622
- }
623
-
624
- .me-codemirror .cm-me-property-key-input,
625
- .me-codemirror .cm-me-property-tag-input,
626
- .me-codemirror .cm-me-property-input {
627
- min-height: 28px;
628
- border: 1px solid transparent;
629
- border-radius: 4px;
630
- background: transparent;
631
- color: var(--me-text);
632
- font: inherit;
633
- padding: 2px 4px;
634
- }
635
-
636
- .me-codemirror .cm-me-property-menu-details {
637
- position: relative;
638
- }
639
-
640
- .me-codemirror .cm-me-property-menu-details[open] {
641
- z-index: 6;
642
- }
643
-
644
- .me-codemirror .cm-me-property-summary {
645
- display: inline-flex;
646
- width: 100%;
647
- min-height: 30px;
648
- box-sizing: border-box;
649
- gap: 8px;
650
- align-items: center;
651
- border-radius: 5px;
652
- color: var(--me-text);
653
- cursor: pointer;
654
- list-style: none;
655
- padding: 2px 4px;
656
- }
657
-
658
- .me-codemirror .cm-me-property-summary::-webkit-details-marker {
659
- display: none;
660
- }
661
-
662
- .me-codemirror .cm-me-property-summary:focus-visible {
663
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
664
- outline-offset: 1px;
665
- }
666
-
667
- .me-codemirror .cm-me-property-type-icon,
668
- .me-codemirror .cm-me-inline-icon,
669
- .me-inline-icon {
670
- display: inline-block;
671
- width: 1em;
672
- height: 1em;
673
- }
674
-
675
- .me-codemirror .cm-me-property-type-icon {
676
- display: inline-grid;
677
- width: 20px;
678
- height: 20px;
679
- flex: 0 0 auto;
680
- place-content: center;
681
- border-radius: 5px;
682
- color: var(--me-muted);
683
- font-size: 13px;
684
- font-weight: 700;
685
- }
686
-
687
- .me-codemirror .cm-me-property-name {
688
- min-width: 0;
689
- overflow: hidden;
690
- text-overflow: ellipsis;
691
- white-space: nowrap;
692
- }
693
-
694
- .me-codemirror .cm-me-property-menu {
695
- position: absolute;
696
- top: calc(100% + 3px);
697
- left: 0;
698
- display: grid;
699
- gap: 8px;
700
- width: min(290px, 78vw);
701
- box-sizing: border-box;
702
- border: 1px solid var(--me-border);
703
- border-radius: 7px;
704
- background: var(--me-surface);
705
- box-shadow: 0 14px 34px rgba(24, 32, 42, 0.18);
706
- padding: 10px;
707
- }
708
-
709
- .me-codemirror .cm-me-property-menu-label {
710
- display: grid;
711
- gap: 4px;
712
- color: var(--me-muted);
713
- font-size: 12px;
714
- }
715
-
716
- .me-codemirror .cm-me-property-key-input {
717
- width: 100%;
718
- min-width: 0;
719
- box-sizing: border-box;
720
- border-color: var(--me-border);
721
- background: var(--me-surface);
722
- }
723
-
724
- .me-codemirror .cm-me-property-type-menu,
725
- .me-codemirror .cm-me-property-suggestions {
726
- display: flex;
727
- flex-wrap: wrap;
728
- gap: 4px;
729
- }
730
-
731
- .me-codemirror .cm-me-property-type-option,
732
- .me-codemirror .cm-me-property-suggestion,
733
- .me-codemirror .cm-me-property-picker,
734
- .me-codemirror .cm-me-property-remove,
735
- .me-codemirror .cm-me-property-add,
736
- .me-codemirror .cm-me-property-tag-remove {
737
- min-height: 28px;
738
- border: 1px solid var(--me-border);
739
- border-radius: 5px;
740
- background: var(--me-surface);
741
- color: var(--me-text);
742
- cursor: pointer;
743
- font: inherit;
744
- padding: 0 8px;
745
- }
746
-
747
- .me-codemirror .cm-me-property-type-option[data-active="true"] {
748
- border-color: color-mix(in srgb, var(--me-accent), transparent 20%);
749
- background: color-mix(in srgb, var(--me-accent), transparent 90%);
750
- color: var(--me-accent);
751
- }
752
-
753
- .me-codemirror .cm-me-property-drag-handle {
754
- position: relative;
755
- width: 24px;
756
- height: 28px;
757
- border: 0;
758
- border-radius: 5px;
759
- background: transparent;
760
- cursor: grab;
761
- padding: 0;
762
- }
763
-
764
- .me-codemirror .cm-me-property-drag-handle:disabled {
765
- cursor: default;
766
- }
767
-
768
- .me-codemirror .cm-me-property-drag-handle::before {
769
- position: absolute;
770
- top: 8px;
771
- left: 6px;
772
- width: 12px;
773
- height: 10px;
774
- border-top: 2px solid var(--me-muted);
775
- border-bottom: 2px solid var(--me-muted);
776
- content: "";
777
- opacity: 0.72;
778
- }
779
-
780
- .me-codemirror .cm-me-property-drag-handle::after {
781
- position: absolute;
782
- top: 13px;
783
- left: 6px;
784
- width: 12px;
785
- border-top: 2px solid var(--me-muted);
786
- content: "";
787
- opacity: 0.72;
788
- }
789
-
790
- .me-codemirror .cm-me-property-drag-handle:focus-visible {
791
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 76%);
792
- }
793
-
794
- .me-codemirror .cm-me-property-type-option:disabled,
795
- .me-codemirror .cm-me-property-suggestion:disabled,
796
- .me-codemirror .cm-me-property-picker:disabled,
797
- .me-codemirror .cm-me-property-remove:disabled,
798
- .me-codemirror .cm-me-property-add:disabled,
799
- .me-codemirror .cm-me-property-tag-remove:disabled {
800
- cursor: not-allowed;
801
- opacity: 0.55;
802
- }
803
-
804
- .me-codemirror .cm-me-property-input {
805
- width: 100%;
806
- min-width: 0;
807
- box-sizing: border-box;
808
- }
809
-
810
- .me-codemirror .cm-me-property-input-wrap {
811
- display: flex;
812
- gap: 4px;
813
- align-items: center;
814
- min-width: 0;
815
- }
816
-
817
- .me-codemirror .cm-me-property-boolean-input {
818
- width: 18px;
819
- height: 18px;
820
- min-height: 18px;
821
- accent-color: var(--me-accent);
822
- vertical-align: middle;
823
- }
824
-
825
- .me-codemirror .cm-me-property-add {
826
- margin-top: 8px;
827
- border-color: transparent;
828
- background: transparent;
829
- color: var(--me-muted);
830
- padding-left: 4px;
831
- }
832
-
833
- .me-codemirror .cm-me-property-add:hover,
834
- .me-codemirror .cm-me-property-add:focus-visible {
835
- color: var(--me-text);
836
- }
837
-
838
- .me-codemirror .cm-me-property-remove {
839
- width: 26px;
840
- min-width: 26px;
841
- padding: 0;
842
- opacity: 0;
843
- color: var(--me-muted);
844
- }
845
-
846
- .me-codemirror .cm-me-property-remove:hover,
847
- .me-codemirror .cm-me-property-remove:focus-visible {
848
- color: #dc2626;
849
- border-color: color-mix(in srgb, #dc2626, transparent 70%);
850
- background: color-mix(in srgb, #dc2626, transparent 92%);
851
- }
852
-
853
- .me-codemirror .cm-me-property-row:hover .cm-me-property-remove,
854
- .me-codemirror .cm-me-property-row:focus-within .cm-me-property-remove {
855
- opacity: 1;
856
- }
857
-
858
- .me-codemirror .cm-me-property-tags {
859
- display: flex;
860
- flex-wrap: wrap;
861
- gap: 5px;
862
- align-items: center;
863
- min-height: 30px;
864
- min-width: 0;
865
- }
866
-
867
- .me-codemirror .cm-me-property-tag {
868
- display: inline-flex;
869
- max-width: 100%;
870
- align-items: center;
871
- gap: 4px;
872
- border-radius: 5px;
873
- background: color-mix(in srgb, var(--me-accent), transparent 90%);
874
- color: var(--me-text);
875
- padding: 2px 3px 2px 7px;
876
- }
877
-
878
- .me-codemirror .cm-me-property-tag span {
879
- min-width: 0;
880
- overflow: hidden;
881
- text-overflow: ellipsis;
882
- }
883
-
884
- .me-codemirror .cm-me-property-tag-remove {
885
- width: 20px;
886
- min-width: 20px;
887
- min-height: 20px;
888
- border: 0;
889
- background: transparent;
890
- color: var(--me-muted);
891
- padding: 0;
892
- }
893
-
894
- .me-codemirror .cm-me-property-tag-input {
895
- flex: 1 1 90px;
896
- min-width: 74px;
897
- }
898
-
899
- .me-codemirror .cm-me-property-empty {
900
- color: var(--me-muted);
901
- padding: 6px 0;
902
- }
903
-
904
- .me-codemirror .cm-me-property-key-input:focus,
905
- .me-codemirror .cm-me-property-tag-input:focus,
906
- .me-codemirror .cm-me-property-input:focus {
907
- border-color: var(--me-border);
908
- background: var(--me-surface);
909
- outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
910
- }
911
-
912
- .me-wysiwyg {
913
- position: relative;
914
- min-height: inherit;
915
- flex: 1;
916
- overflow: auto;
917
- background: var(--me-surface);
918
- color: var(--me-text);
919
- font-family: var(--me-font-ui);
920
- }
921
-
922
- .me-wysiwyg-toolbar {
923
- display: flex;
924
- flex-wrap: wrap;
925
- gap: 6px;
926
- align-items: center;
927
- border-bottom: 1px solid var(--me-border);
928
- background: var(--me-surface-muted);
929
- padding: 8px;
930
- }
931
-
932
- .me-wysiwyg-toolbar button,
933
- .me-wysiwyg-toolbar select {
934
- min-height: 30px;
935
- border: 1px solid var(--me-border);
936
- border-radius: 6px;
937
- background: var(--me-surface);
938
- color: var(--me-text);
939
- font: inherit;
940
- padding: 0 8px;
941
- }
942
-
943
- .me-wysiwyg-toolbar button {
944
- display: inline-flex;
945
- align-items: center;
946
- justify-content: center;
947
- min-width: 32px;
948
- cursor: pointer;
949
- }
950
-
951
- .me-wysiwyg-toolbar button svg {
952
- width: 0.95em;
953
- height: 0.95em;
954
- }
955
-
956
- .me-wysiwyg-toolbar button[data-active="true"] {
957
- border-color: color-mix(in srgb, var(--me-accent), transparent 25%);
958
- background: color-mix(in srgb, var(--me-accent), transparent 88%);
959
- color: var(--me-accent);
960
- }
961
-
962
- .me-wysiwyg-toolbar-group {
963
- display: inline-flex;
964
- gap: 3px;
965
- align-items: center;
966
- min-width: 0;
967
- padding-right: 6px;
968
- border-right: 1px solid var(--me-border);
969
- }
970
-
971
- .me-wysiwyg-toolbar-group:last-child {
972
- border-right: 0;
973
- }
974
-
975
- .me-wysiwyg-block-select {
976
- min-width: 150px;
977
- }
978
-
979
- .me-wysiwyg-insert-select {
980
- min-width: 112px;
981
- }
982
-
983
- .me-wysiwyg-loading {
984
- display: grid;
985
- min-height: inherit;
986
- place-items: center;
987
- color: var(--me-muted);
988
- font-size: 13px;
989
- }
990
-
991
- .me-wysiwyg-input {
992
- min-height: inherit;
993
- padding: 16px;
994
- outline: none;
995
- line-height: 1.65;
996
- }
997
-
998
- .me-wysiwyg-placeholder-text {
999
- position: absolute;
1000
- top: 16px;
1001
- left: 16px;
1002
- color: var(--me-muted);
1003
- pointer-events: none;
1004
- }
1005
-
1006
- .me-wysiwyg-heading {
1007
- margin: 0 0 10px;
1008
- line-height: 1.2;
1009
- }
1010
-
1011
- .me-wysiwyg-heading-1 {
1012
- font-size: 1.75rem;
1013
- }
1014
-
1015
- .me-wysiwyg-heading-2 {
1016
- font-size: 1.4rem;
1017
- }
1018
-
1019
- .me-wysiwyg-heading-3 {
1020
- font-size: 1.2rem;
1021
- }
1022
-
1023
- .me-wysiwyg-paragraph,
1024
- .me-wysiwyg-list,
1025
- .me-wysiwyg-quote,
1026
- .me-wysiwyg-code {
1027
- margin-top: 0;
1028
- }
1029
-
1030
- .me-wysiwyg-list {
1031
- padding-left: 1.45rem;
1032
- }
1033
-
1034
- /* Render real list markers. ul/ol share the .me-wysiwyg-list class, so target by
1035
- element; the element+class selector also wins over a generic `ul {}` reset in
1036
- a host app. Check lists use a separate class and keep their custom markers. */
1037
- ul.me-wysiwyg-list {
1038
- list-style: disc outside;
1039
- }
1040
- ol.me-wysiwyg-list {
1041
- list-style: decimal outside;
1042
- }
1043
- ul.me-wysiwyg-list ul.me-wysiwyg-list {
1044
- list-style-type: circle;
1045
- }
1046
- ul.me-wysiwyg-list ul.me-wysiwyg-list ul.me-wysiwyg-list {
1047
- list-style-type: square;
1048
- }
1049
- .me-wysiwyg-list-item {
1050
- margin: 0;
1051
- }
1052
-
1053
- .me-wysiwyg-check-list {
1054
- padding-left: 0;
1055
- list-style: none;
1056
- }
1057
-
1058
- .me-wysiwyg-list-item-checked,
1059
- .me-wysiwyg-list-item-unchecked {
1060
- position: relative;
1061
- list-style: none;
1062
- padding-left: 1.7rem;
1063
- }
1064
-
1065
- .me-wysiwyg-list-item-checked::before,
1066
- .me-wysiwyg-list-item-unchecked::before {
1067
- position: absolute;
1068
- top: 0.36em;
1069
- left: 0.1rem;
1070
- width: 1.05em;
1071
- height: 1.05em;
1072
- box-sizing: border-box;
1073
- border: 1px solid #9aa7b2;
1074
- border-radius: 4px;
1075
- background: var(--me-surface);
1076
- content: "";
1077
- }
1078
-
1079
- .me-wysiwyg-list-item-checked {
1080
- color: var(--me-muted);
1081
- text-decoration: line-through;
1082
- }
1083
-
1084
- .me-wysiwyg-list-item-checked::before {
1085
- border-color: var(--me-accent);
1086
- background-color: var(--me-accent);
1087
- background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
1088
- linear-gradient(-45deg, transparent 48%, #ffffff 48%),
1089
- linear-gradient(45deg, #ffffff 42%, transparent 42%);
1090
- background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
1091
- background-repeat: no-repeat;
1092
- background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
1093
- }
1094
-
1095
- .me-wysiwyg-quote {
1096
- border-left: 4px solid var(--me-accent);
1097
- color: var(--me-muted);
1098
- padding-left: 12px;
1099
- }
1100
-
1101
- .me-wysiwyg-code {
1102
- display: block;
1103
- width: 100%;
1104
- box-sizing: border-box;
1105
- overflow: auto;
1106
- border: 1px solid var(--me-border);
1107
- border-radius: 6px;
1108
- background: var(--me-code-bg);
1109
- margin: 14px 0;
1110
- padding: 40px 12px 12px;
1111
- font-family: var(--me-font-mono);
1112
- line-height: 1.55;
1113
- tab-size: 2;
1114
- }
1115
-
1116
- .me-wysiwyg-code-language-popover {
1117
- position: absolute;
1118
- z-index: 4;
1119
- display: flex;
1120
- gap: 8px;
1121
- align-items: center;
1122
- justify-content: space-between;
1123
- min-height: 30px;
1124
- box-sizing: border-box;
1125
- border-bottom: 1px solid var(--me-border);
1126
- color: var(--me-muted);
1127
- font-size: 12px;
1128
- pointer-events: auto;
1129
- }
1130
-
1131
- .me-wysiwyg-code-language-popover select {
1132
- min-height: 26px;
1133
- border: 1px solid var(--me-border);
1134
- border-radius: 5px;
1135
- background: var(--me-surface);
1136
- color: var(--me-text);
1137
- font: inherit;
1138
- }
1139
-
1140
- .me-wysiwyg-token-comment,
1141
- .me-wysiwyg-token-prolog,
1142
- .me-wysiwyg-token-doctype,
1143
- .me-wysiwyg-token-cdata {
1144
- color: #64748b;
1145
- }
1146
-
1147
- .me-wysiwyg-token-punctuation,
1148
- .me-wysiwyg-token-operator,
1149
- .me-wysiwyg-token-namespace {
1150
- color: #475569;
1151
- }
1152
-
1153
- .me-wysiwyg-token-property,
1154
- .me-wysiwyg-token-tag,
1155
- .me-wysiwyg-token-boolean,
1156
- .me-wysiwyg-token-number,
1157
- .me-wysiwyg-token-constant,
1158
- .me-wysiwyg-token-symbol,
1159
- .me-wysiwyg-token-deleted {
1160
- color: #b45309;
1161
- }
1162
-
1163
- .me-wysiwyg-token-selector,
1164
- .me-wysiwyg-token-attr-name,
1165
- .me-wysiwyg-token-string,
1166
- .me-wysiwyg-token-char,
1167
- .me-wysiwyg-token-builtin,
1168
- .me-wysiwyg-token-inserted {
1169
- color: #047857;
1170
- }
1171
-
1172
- .me-wysiwyg-token-function,
1173
- .me-wysiwyg-token-class-name,
1174
- .me-wysiwyg-token-entity,
1175
- .me-wysiwyg-token-url {
1176
- color: #2563eb;
1177
- }
1178
-
1179
- .me-wysiwyg-token-keyword,
1180
- .me-wysiwyg-token-atrule,
1181
- .me-wysiwyg-token-attr-value,
1182
- .me-wysiwyg-token-important,
1183
- .me-wysiwyg-token-regex,
1184
- .me-wysiwyg-token-variable {
1185
- color: #7c3aed;
1186
- }
1187
-
1188
- .me-wysiwyg-link {
1189
- color: var(--me-accent);
1190
- text-decoration: underline;
1191
- }
1192
-
1193
- .me-wysiwyg-text-bold {
1194
- font-weight: 700;
1195
- }
1196
-
1197
- .me-wysiwyg-text-italic {
1198
- font-style: italic;
1199
- }
1200
-
1201
- .me-wysiwyg-text-code {
1202
- border-radius: 4px;
1203
- background: var(--me-surface-muted);
1204
- font-family: var(--me-font-mono);
1205
- padding: 0 3px;
1206
- }
1207
-
1208
- .me-wysiwyg-mermaid,
1209
- .me-wysiwyg-plantuml,
1210
- .me-wysiwyg-image {
1211
- margin: 14px 0;
1212
- overflow: auto;
1213
- border: 1px solid var(--me-border);
1214
- border-radius: 6px;
1215
- background: var(--me-surface);
1216
- }
1217
-
1218
- .me-wysiwyg-mermaid figcaption,
1219
- .me-wysiwyg-plantuml figcaption,
1220
- .me-wysiwyg-image figcaption {
1221
- display: flex;
1222
- gap: 8px;
1223
- align-items: center;
1224
- justify-content: space-between;
1225
- border-bottom: 1px solid var(--me-border);
1226
- background: var(--me-code-bg);
1227
- color: var(--me-muted);
1228
- font-size: 13px;
1229
- padding: 7px 10px;
1230
- }
1231
-
1232
- .me-wysiwyg-mermaid figcaption button,
1233
- .me-wysiwyg-plantuml figcaption button,
1234
- .me-wysiwyg-image figcaption button,
1235
- .me-wysiwyg-mermaid-editor button,
1236
- .me-wysiwyg-diagram-editor button,
1237
- .me-wysiwyg-image-editor button {
1238
- min-height: 28px;
1239
- border: 1px solid var(--me-border);
1240
- border-radius: 6px;
1241
- background: var(--me-surface);
1242
- color: var(--me-text);
1243
- cursor: pointer;
1244
- font: inherit;
1245
- padding: 0 8px;
1246
- }
1247
-
1248
- .me-wysiwyg-mermaid-rendered,
1249
- .me-wysiwyg-mermaid-loading,
1250
- .me-wysiwyg-mermaid-error,
1251
- .me-wysiwyg-diagram-rendered,
1252
- .me-wysiwyg-diagram-loading,
1253
- .me-wysiwyg-diagram-error {
1254
- margin: 0;
1255
- padding: 12px;
1256
- }
1257
-
1258
- .me-wysiwyg-mermaid-rendered svg,
1259
- .me-wysiwyg-diagram-rendered svg {
1260
- display: block;
1261
- max-width: 100%;
1262
- height: auto;
1263
- margin: 0 auto;
1264
- }
1265
-
1266
- .me-wysiwyg-mermaid-editor,
1267
- .me-wysiwyg-diagram-editor {
1268
- display: grid;
1269
- gap: 8px;
1270
- padding: 10px;
1271
- }
1272
-
1273
- .me-wysiwyg-mermaid-editor textarea,
1274
- .me-wysiwyg-diagram-editor textarea {
1275
- width: 100%;
1276
- min-width: 0;
1277
- resize: vertical;
1278
- border: 1px solid var(--me-border);
1279
- border-radius: 6px;
1280
- color: var(--me-text);
1281
- font: 13px/1.45 var(--me-font-mono);
1282
- padding: 8px;
1283
- }
1284
-
1285
- .me-wysiwyg-mermaid-error,
1286
- .me-wysiwyg-diagram-error {
1287
- color: #991b1b;
1288
- background: var(--me-error-bg);
1289
- font-family: var(--me-font-mono);
1290
- }
1291
-
1292
- .me-wysiwyg-image img {
1293
- display: block;
1294
- max-width: calc(100% - 24px);
1295
- height: auto;
1296
- margin: 12px auto;
1297
- border-radius: 6px;
1298
- }
1299
-
1300
- .me-wysiwyg-image p {
1301
- margin: -2px 12px 12px;
1302
- color: var(--me-muted);
1303
- font-size: 13px;
1304
- text-align: center;
1305
- }
1306
-
1307
- .me-wysiwyg-image-editor {
1308
- display: grid;
1309
- gap: 8px;
1310
- padding: 10px;
1311
- }
1312
-
1313
- .me-wysiwyg-image-editor label {
1314
- display: grid;
1315
- gap: 4px;
1316
- color: var(--me-muted);
1317
- font-size: 12px;
1318
- }
1319
-
1320
- .me-wysiwyg-image-editor input {
1321
- min-height: 30px;
1322
- min-width: 0;
1323
- border: 1px solid var(--me-border);
1324
- border-radius: 6px;
1325
- color: var(--me-text);
1326
- font: 13px/1.4 var(--me-font-ui);
1327
- padding: 0 8px;
1328
- }
1329
-
1330
- @media (max-width: 640px) {
1331
- .me-editor {
1332
- border-right: 0;
1333
- border-left: 0;
1334
- border-radius: 0;
1335
- }
1336
-
1337
- .me-mode-button {
1338
- flex: 1 1 auto;
1339
- }
1340
-
1341
- .me-properties-toggle {
1342
- margin-left: 0;
1343
- }
1344
-
1345
- .me-host-tools {
1346
- flex-basis: 100%;
1347
- justify-content: stretch;
1348
- margin-left: 0;
1349
- }
1350
-
1351
- .me-link-search,
1352
- .me-upload-control,
1353
- .me-upload-button {
1354
- flex: 1 1 100%;
1355
- }
1356
-
1357
- .me-codemirror .cm-me-properties {
1358
- padding-right: 8px;
1359
- padding-left: 8px;
1360
- }
1361
-
1362
- .me-codemirror .cm-me-property-row {
1363
- grid-template-columns: 24px minmax(0, 1fr) 28px;
1364
- gap: 6px;
1365
- align-items: start;
1366
- }
1367
-
1368
- .me-codemirror .cm-me-property-key-cell {
1369
- grid-column: 2;
1370
- }
1371
-
1372
- .me-codemirror .cm-me-property-value-cell {
1373
- grid-column: 2 / 4;
1374
- }
1375
-
1376
- .me-codemirror .cm-me-property-remove-cell {
1377
- grid-column: 3;
1378
- grid-row: 1;
1379
- }
1380
-
1381
- .me-codemirror .cm-me-property-menu {
1382
- width: min(290px, 84vw);
1383
- }
1384
- }
1385
-
1386
- @media (prefers-reduced-motion: reduce) {
1387
- .me-editor *,
1388
- .me-editor *::before,
1389
- .me-editor *::after {
1390
- animation-duration: 0.01ms !important;
1391
- animation-iteration-count: 1 !important;
1392
- scroll-behavior: auto !important;
1393
- transition-duration: 0.01ms !important;
1394
- }
1395
- }
1
+ .me-editor {
2
+ --me-font-ui: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
3
+ --me-font-mono: "Cascadia Code", "SFMono-Regular", Consolas, monospace;
4
+ --me-surface: #ffffff;
5
+ --me-surface-muted: #f6f7f8;
6
+ /* Themeable surfaces (light defaults). A host can remap these — and the core
7
+ vars above — to its own tokens so the editor follows the site light/dark
8
+ theme. */
9
+ --me-surface-raised: #ffffff;
10
+ --me-code-bg: #f8fafc;
11
+ --me-callout-bg: #eff6ff;
12
+ --me-error-bg: #fff1f2;
13
+ --me-border: #d9dee5;
14
+ --me-text: #18202a;
15
+ --me-muted: #5d6978;
16
+ --me-accent: #2563eb;
17
+ --me-radius: 8px;
18
+ display: flex;
19
+ min-height: 240px;
20
+ flex-direction: column;
21
+ overflow: hidden;
22
+ border: 1px solid var(--me-border);
23
+ border-radius: var(--me-radius);
24
+ background: var(--me-surface);
25
+ color: var(--me-text);
26
+ font-family: var(--me-font-ui);
27
+ }
28
+
29
+ .me-toolbar {
30
+ display: flex;
31
+ flex-wrap: wrap;
32
+ gap: 4px;
33
+ align-items: center;
34
+ padding: 8px;
35
+ border-bottom: 1px solid var(--me-border);
36
+ background: var(--me-surface-muted);
37
+ }
38
+
39
+ .me-mode-button {
40
+ min-height: 30px;
41
+ border: 1px solid transparent;
42
+ border-radius: 6px;
43
+ background: transparent;
44
+ color: var(--me-muted);
45
+ cursor: pointer;
46
+ font: inherit;
47
+ font-size: 0.9em;
48
+ padding: 0 11px;
49
+ display: inline-flex;
50
+ align-items: center;
51
+ justify-content: center;
52
+ gap: 6px;
53
+ transition:
54
+ background-color 0.12s ease,
55
+ border-color 0.12s ease,
56
+ color 0.12s ease;
57
+ }
58
+
59
+ .me-mode-button:hover {
60
+ color: var(--me-text);
61
+ background: var(--me-surface);
62
+ border-color: var(--me-border);
63
+ }
64
+
65
+ .me-mode-button:focus-visible {
66
+ outline: 2px solid var(--me-accent);
67
+ outline-offset: 1px;
68
+ }
69
+
70
+ .me-mode-button[data-icon-only="true"] {
71
+ width: 34px;
72
+ padding: 0;
73
+ }
74
+
75
+ .me-mode-button-icon {
76
+ display: inline-flex;
77
+ align-items: center;
78
+ justify-content: center;
79
+ width: 1em;
80
+ height: 1em;
81
+ }
82
+
83
+ .me-sr-only {
84
+ position: absolute;
85
+ width: 1px;
86
+ height: 1px;
87
+ padding: 0;
88
+ margin: -1px;
89
+ overflow: hidden;
90
+ clip: rect(0, 0, 0, 0);
91
+ white-space: nowrap;
92
+ border: 0;
93
+ }
94
+
95
+ .me-mode-button[data-active="true"],
96
+ .me-mode-button[data-active="true"]:hover {
97
+ border-color: var(--me-accent);
98
+ background: var(--me-accent);
99
+ color: #ffffff;
100
+ }
101
+
102
+ .me-properties-toggle {
103
+ margin-left: auto;
104
+ }
105
+
106
+ .me-host-tools {
107
+ position: relative;
108
+ display: flex;
109
+ flex: 1 1 280px;
110
+ flex-wrap: wrap;
111
+ gap: 6px;
112
+ align-items: center;
113
+ justify-content: flex-end;
114
+ min-width: 0;
115
+ margin-left: auto;
116
+ }
117
+
118
+ .me-link-search {
119
+ position: relative;
120
+ min-width: min(220px, 100%);
121
+ }
122
+
123
+ .me-link-search input {
124
+ width: 100%;
125
+ min-height: 32px;
126
+ min-width: 0;
127
+ border: 1px solid var(--me-border);
128
+ border-radius: 6px;
129
+ background: var(--me-surface);
130
+ color: var(--me-text);
131
+ font: inherit;
132
+ padding: 0 10px;
133
+ }
134
+
135
+ .me-link-search input:focus {
136
+ border-color: var(--me-accent);
137
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
138
+ }
139
+
140
+ .me-link-suggestions {
141
+ position: absolute;
142
+ z-index: 8;
143
+ top: calc(100% + 4px);
144
+ right: 0;
145
+ display: grid;
146
+ width: min(320px, 86vw);
147
+ max-height: 240px;
148
+ overflow: auto;
149
+ border: 1px solid var(--me-border);
150
+ border-radius: 6px;
151
+ background: var(--me-surface);
152
+ box-shadow: 0 12px 28px rgba(24, 32, 42, 0.16);
153
+ }
154
+
155
+ .me-link-suggestion {
156
+ display: grid;
157
+ gap: 2px;
158
+ width: 100%;
159
+ min-height: 38px;
160
+ border: 0;
161
+ border-bottom: 1px solid var(--me-border);
162
+ border-radius: 0;
163
+ background: transparent;
164
+ color: var(--me-text);
165
+ cursor: pointer;
166
+ font: inherit;
167
+ padding: 8px 10px;
168
+ text-align: left;
169
+ }
170
+
171
+ .me-link-suggestion:last-child {
172
+ border-bottom: 0;
173
+ }
174
+
175
+ .me-link-suggestion:hover,
176
+ .me-link-suggestion:focus-visible {
177
+ background: var(--me-callout-bg);
178
+ outline: none;
179
+ }
180
+
181
+ .me-link-suggestion small,
182
+ .me-link-suggestion-status {
183
+ color: var(--me-muted);
184
+ font-size: 12px;
185
+ }
186
+
187
+ .me-link-suggestion-status {
188
+ padding: 8px 10px;
189
+ }
190
+
191
+ .me-upload-control {
192
+ display: inline-flex;
193
+ align-items: center;
194
+ }
195
+
196
+ .me-upload-control input {
197
+ position: absolute;
198
+ width: 1px;
199
+ height: 1px;
200
+ overflow: hidden;
201
+ clip: rect(0 0 0 0);
202
+ white-space: nowrap;
203
+ }
204
+
205
+ .me-upload-button {
206
+ display: inline-flex;
207
+ min-height: 32px;
208
+ align-items: center;
209
+ justify-content: center;
210
+ border: 1px solid var(--me-border);
211
+ border-radius: 6px;
212
+ background: var(--me-surface);
213
+ color: var(--me-text);
214
+ cursor: pointer;
215
+ font: inherit;
216
+ padding: 0 10px;
217
+ }
218
+
219
+ .me-upload-button:hover,
220
+ .me-upload-control input:focus-visible + .me-upload-button {
221
+ border-color: var(--me-accent);
222
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
223
+ }
224
+
225
+ .me-visually-hidden {
226
+ position: absolute;
227
+ width: 1px;
228
+ height: 1px;
229
+ overflow: hidden;
230
+ clip: rect(0 0 0 0);
231
+ white-space: nowrap;
232
+ }
233
+
234
+ .me-editor-surface {
235
+ min-height: inherit;
236
+ flex: 1;
237
+ }
238
+
239
+ .me-preview {
240
+ min-height: inherit;
241
+ flex: 1;
242
+ overflow: auto;
243
+ /* Reserve the scrollbar gutter so content height crossing the boundary never
244
+ toggles the scrollbar and reflows (no flicker). */
245
+ scrollbar-gutter: stable;
246
+ padding: 16px;
247
+ line-height: 1.65;
248
+ }
249
+
250
+ .me-renderer-wiki-link {
251
+ color: var(--me-accent);
252
+ text-decoration: none;
253
+ border-bottom: 1px solid color-mix(in srgb, var(--me-accent), transparent 70%);
254
+ cursor: pointer;
255
+ }
256
+
257
+ .me-renderer-wiki-link:hover {
258
+ border-bottom-color: var(--me-accent);
259
+ }
260
+
261
+ .me-preview h1,
262
+ .me-preview h2,
263
+ .me-preview h3,
264
+ .me-preview p,
265
+ .me-preview ul,
266
+ .me-preview ol,
267
+ .me-preview pre,
268
+ .me-preview blockquote,
269
+ .me-preview table {
270
+ margin-top: 0;
271
+ }
272
+
273
+ .me-renderer-list {
274
+ padding-left: 1.45rem;
275
+ }
276
+
277
+ .me-renderer-list li {
278
+ margin: 4px 0;
279
+ }
280
+
281
+ .me-renderer-task-list {
282
+ padding-left: 0;
283
+ list-style: none;
284
+ }
285
+
286
+ .me-renderer-task-item {
287
+ display: flex;
288
+ gap: 8px;
289
+ align-items: flex-start;
290
+ }
291
+
292
+ .me-renderer-task-checkbox {
293
+ position: relative;
294
+ appearance: none;
295
+ width: 1.05em;
296
+ height: 1.05em;
297
+ flex: 0 0 auto;
298
+ margin: 0.25em 0 0;
299
+ border: 1px solid #9aa7b2;
300
+ border-radius: 4px;
301
+ background: var(--me-surface);
302
+ opacity: 1;
303
+ }
304
+
305
+ .me-renderer-task-checkbox:checked {
306
+ border-color: var(--me-accent);
307
+ background-color: var(--me-accent);
308
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
309
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
310
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
311
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
312
+ background-repeat: no-repeat;
313
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
314
+ }
315
+
316
+ .me-preview pre,
317
+ .me-renderer-code,
318
+ .me-renderer-error {
319
+ overflow: auto;
320
+ border: 1px solid var(--me-border);
321
+ border-radius: 6px;
322
+ background: var(--me-code-bg);
323
+ padding: 12px;
324
+ }
325
+
326
+ .me-renderer-code-highlight {
327
+ margin: 14px 0;
328
+ }
329
+
330
+ .me-renderer-code-highlight .shiki {
331
+ margin: 0;
332
+ border: 1px solid var(--me-border);
333
+ background: var(--me-surface);
334
+ }
335
+
336
+ .me-renderer-diagram {
337
+ overflow: auto;
338
+ margin: 14px 0;
339
+ padding: 12px;
340
+ border: 1px solid var(--me-border);
341
+ border-radius: 6px;
342
+ background: var(--me-surface);
343
+ }
344
+
345
+ .me-renderer-diagram svg {
346
+ display: block;
347
+ max-width: 100%;
348
+ height: auto;
349
+ margin: 0 auto;
350
+ }
351
+
352
+ .me-preview table {
353
+ width: 100%;
354
+ border-collapse: collapse;
355
+ }
356
+
357
+ .me-preview table th,
358
+ .me-preview table td {
359
+ border: 1px solid var(--me-border);
360
+ padding: 6px 10px;
361
+ text-align: left;
362
+ }
363
+
364
+ .me-renderer-properties {
365
+ margin: 0 0 16px;
366
+ padding: 8px;
367
+ border: 1px solid var(--me-border);
368
+ border-radius: 6px;
369
+ background: var(--me-surface-muted);
370
+ }
371
+
372
+ .me-renderer-properties-table {
373
+ width: 100%;
374
+ border-collapse: collapse;
375
+ font-size: 13px;
376
+ line-height: 1.45;
377
+ }
378
+
379
+ .me-renderer-properties-table th,
380
+ .me-renderer-properties-table td {
381
+ border-bottom: 1px solid var(--me-border);
382
+ padding: 6px 8px;
383
+ vertical-align: top;
384
+ }
385
+
386
+ .me-renderer-properties-table tr:last-child th,
387
+ .me-renderer-properties-table tr:last-child td {
388
+ border-bottom: 0;
389
+ }
390
+
391
+ .me-renderer-properties-table th {
392
+ width: 160px;
393
+ color: var(--me-muted);
394
+ font-weight: 600;
395
+ text-align: left;
396
+ }
397
+
398
+ .me-preview td,
399
+ .me-preview th {
400
+ border: 1px solid var(--me-border);
401
+ padding: 6px 8px;
402
+ }
403
+
404
+ .me-preview .me-renderer-properties-table td,
405
+ .me-preview .me-renderer-properties-table th {
406
+ border-right: 0;
407
+ border-left: 0;
408
+ border-top: 0;
409
+ }
410
+
411
+ .me-renderer-callout {
412
+ border-left: 4px solid var(--me-accent);
413
+ background: var(--me-callout-bg);
414
+ padding: 10px 12px;
415
+ }
416
+
417
+ .me-codemirror {
418
+ min-height: inherit;
419
+ height: 100%;
420
+ font-family: var(--me-font-mono);
421
+ font-size: 14px;
422
+ }
423
+
424
+ .me-codemirror .cm-scroller {
425
+ min-height: inherit;
426
+ }
427
+
428
+ .me-codemirror .cm-content {
429
+ padding: 16px;
430
+ }
431
+
432
+ .me-codemirror .cm-me-hybrid-heading {
433
+ color: var(--me-text);
434
+ font-weight: 700;
435
+ }
436
+
437
+ .me-codemirror .cm-me-hybrid-heading-1 {
438
+ font-size: 1.65em;
439
+ }
440
+
441
+ .me-codemirror .cm-me-hybrid-heading-2 {
442
+ font-size: 1.35em;
443
+ }
444
+
445
+ .me-codemirror .cm-me-hybrid-heading-3 {
446
+ font-size: 1.18em;
447
+ }
448
+
449
+ .me-codemirror .cm-me-hybrid-blockquote {
450
+ border-left: 3px solid var(--me-border);
451
+ color: var(--me-muted);
452
+ padding-left: 10px;
453
+ }
454
+
455
+ .me-codemirror .cm-me-list-bullet,
456
+ .me-codemirror .cm-me-ordered-marker {
457
+ display: inline-block;
458
+ min-width: 1.4em;
459
+ color: var(--me-muted);
460
+ }
461
+
462
+ .me-codemirror .cm-me-list-bullet {
463
+ text-align: center;
464
+ }
465
+
466
+ .me-codemirror .cm-me-task-checkbox {
467
+ display: inline-block;
468
+ width: 1.05em;
469
+ height: 1.05em;
470
+ margin-right: 0.45em;
471
+ vertical-align: -0.16em;
472
+ border: 1px solid #9aa7b2;
473
+ border-radius: 4px;
474
+ background: var(--me-surface);
475
+ }
476
+
477
+ .me-codemirror .cm-me-task-checkbox-checked {
478
+ border-color: var(--me-accent);
479
+ background-color: var(--me-accent);
480
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
481
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
482
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
483
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
484
+ background-repeat: no-repeat;
485
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
486
+ }
487
+
488
+ .me-codemirror .cm-me-hybrid-link {
489
+ color: var(--me-accent);
490
+ cursor: text;
491
+ text-decoration: underline;
492
+ text-underline-offset: 2px;
493
+ }
494
+
495
+ .me-codemirror .cm-me-hybrid-wiki-link {
496
+ border-radius: 4px;
497
+ background: var(--me-callout-bg);
498
+ padding: 0 3px;
499
+ text-decoration: none;
500
+ }
501
+
502
+ .me-codemirror .cm-me-rendered-block {
503
+ margin: 8px 0;
504
+ color: var(--me-text);
505
+ cursor: text;
506
+ font-family: var(--me-font-ui);
507
+ line-height: 1.55;
508
+ }
509
+
510
+ .me-codemirror .cm-me-rendered-block:focus {
511
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 65%);
512
+ outline-offset: 2px;
513
+ }
514
+
515
+ .me-codemirror .cm-me-rendered-block pre {
516
+ white-space: pre;
517
+ }
518
+
519
+ .me-codemirror .cm-me-rendered-block .me-renderer-code-highlight,
520
+ .me-codemirror .cm-me-rendered-block .me-renderer-diagram {
521
+ margin: 8px 0;
522
+ }
523
+
524
+ .me-codemirror .cm-me-rendered-block table {
525
+ width: 100%;
526
+ border-collapse: collapse;
527
+ margin: 8px 0;
528
+ }
529
+
530
+ .me-codemirror .cm-me-rendered-block td,
531
+ .me-codemirror .cm-me-rendered-block th {
532
+ border: 1px solid var(--me-border);
533
+ padding: 6px 8px;
534
+ }
535
+
536
+ .me-codemirror .cm-me-rendered-block img {
537
+ display: block;
538
+ max-width: 100%;
539
+ height: auto;
540
+ margin: 8px 0;
541
+ }
542
+
543
+ /* Hybrid editable table (Obsidian-style inline editing). */
544
+ .me-codemirror .cm-me-table-wrap {
545
+ margin: 10px 0;
546
+ max-width: 100%;
547
+ overflow-x: auto;
548
+ }
549
+
550
+ .me-codemirror .cm-me-table {
551
+ border-collapse: collapse;
552
+ width: 100%;
553
+ /* No table-level min-width: the per-cell min-widths drive horizontal scroll
554
+ (contained by .cm-me-table-wrap) only when a table is genuinely too wide, so
555
+ small tables fit narrow containers (phone frames) without scrolling. */
556
+ border: 1px solid var(--me-border);
557
+ background: var(--me-surface);
558
+ font-size: 0.95em;
559
+ }
560
+
561
+ .me-codemirror .cm-me-table-row {
562
+ border-bottom: 1px solid var(--me-border);
563
+ }
564
+
565
+ .me-codemirror .cm-me-table-row:last-child {
566
+ border-bottom: 0;
567
+ }
568
+
569
+ .me-codemirror .cm-me-table-cell {
570
+ border-right: 1px solid var(--me-border);
571
+ padding: 6px 9px;
572
+ min-width: 60px;
573
+ vertical-align: top;
574
+ outline: none;
575
+ }
576
+
577
+ .me-codemirror .cm-me-table-cell:last-child {
578
+ border-right: 0;
579
+ }
580
+
581
+ .me-codemirror .cm-me-table-cell-header {
582
+ background: var(--me-surface-muted, var(--me-code-bg));
583
+ font-weight: 600;
584
+ }
585
+
586
+ .me-codemirror .cm-me-table-cell:focus {
587
+ box-shadow: inset 0 0 0 2px var(--me-accent);
588
+ border-radius: 2px;
589
+ }
590
+
591
+ /* Contextual table toolbar (Word/Excel-style ribbon). */
592
+ .me-codemirror .cm-me-table-toolbar {
593
+ display: flex;
594
+ flex-wrap: wrap;
595
+ align-items: center;
596
+ gap: 3px;
597
+ margin-top: 6px;
598
+ padding: 3px;
599
+ width: fit-content;
600
+ max-width: 100%;
601
+ border: 1px solid var(--me-border);
602
+ border-radius: 8px;
603
+ background: var(--me-surface);
604
+ opacity: 0;
605
+ transition: opacity 0.12s ease;
606
+ }
607
+
608
+ .me-codemirror .cm-me-table-wrap:hover .cm-me-table-toolbar,
609
+ .me-codemirror .cm-me-table-wrap:focus-within .cm-me-table-toolbar {
610
+ opacity: 1;
611
+ }
612
+
613
+ .me-codemirror .cm-me-table-sep {
614
+ width: 1px;
615
+ align-self: stretch;
616
+ margin: 2px 3px;
617
+ background: var(--me-border);
618
+ }
619
+
620
+ .me-codemirror .cm-me-table-btn {
621
+ font: inherit;
622
+ font-size: 0.8em;
623
+ line-height: 1.4;
624
+ min-width: 26px;
625
+ padding: 3px 7px;
626
+ border: 1px solid transparent;
627
+ border-radius: 5px;
628
+ background: transparent;
629
+ color: var(--me-muted);
630
+ cursor: pointer;
631
+ }
632
+
633
+ .me-codemirror .cm-me-table-btn-icon {
634
+ display: inline-flex;
635
+ align-items: center;
636
+ justify-content: center;
637
+ min-width: 0;
638
+ padding: 4px;
639
+ }
640
+
641
+ .me-codemirror .cm-me-table-btn-icon svg {
642
+ display: block;
643
+ }
644
+
645
+ .me-codemirror .cm-me-table-btn:hover {
646
+ color: var(--me-text);
647
+ background: var(--me-surface-muted, var(--me-code-bg));
648
+ border-color: var(--me-border);
649
+ }
650
+
651
+ .me-codemirror .cm-me-table-btn[aria-pressed='true'] {
652
+ color: var(--me-accent);
653
+ border-color: var(--me-accent);
654
+ background: var(--me-surface-muted, var(--me-code-bg));
655
+ }
656
+
657
+ .me-codemirror .cm-me-table-btn-danger:hover {
658
+ color: #b91c1c;
659
+ border-color: #fca5a5;
660
+ background: var(--me-error-bg, #fef2f2);
661
+ }
662
+
663
+ /* Right-click context menu (appended to <body>, so not scoped to .me-codemirror). */
664
+ .cm-me-table-menu {
665
+ position: fixed;
666
+ z-index: 2147483000;
667
+ min-width: 184px;
668
+ padding: 5px;
669
+ border: 1px solid var(--me-border, #d4d4d8);
670
+ border-radius: 10px;
671
+ background: var(--me-surface, #ffffff);
672
+ color: var(--me-text, #18181b);
673
+ box-shadow: 0 10px 30px rgba(0, 0, 0, 0.18);
674
+ font-size: 0.875rem;
675
+ font-family: inherit;
676
+ }
677
+
678
+ .cm-me-table-menu-item {
679
+ display: flex;
680
+ align-items: center;
681
+ gap: 8px;
682
+ width: 100%;
683
+ padding: 6px 10px;
684
+ border: 0;
685
+ border-radius: 6px;
686
+ background: transparent;
687
+ color: inherit;
688
+ font: inherit;
689
+ text-align: left;
690
+ cursor: pointer;
691
+ }
692
+
693
+ .cm-me-table-menu-item:hover {
694
+ background: var(--me-surface-muted, #f4f4f5);
695
+ }
696
+
697
+ .cm-me-table-menu-item[aria-disabled='true'] {
698
+ opacity: 0.4;
699
+ cursor: default;
700
+ }
701
+
702
+ .cm-me-table-menu-item[aria-disabled='true']:hover {
703
+ background: transparent;
704
+ }
705
+
706
+ .cm-me-table-menu-item[data-align]::before {
707
+ content: '';
708
+ width: 1em;
709
+ flex: 0 0 auto;
710
+ }
711
+
712
+ .cm-me-table-menu-item[data-align].cm-me-table-menu-item-active::before {
713
+ content: '✓';
714
+ }
715
+
716
+ .cm-me-table-menu-item-danger {
717
+ color: #b91c1c;
718
+ }
719
+
720
+ .cm-me-table-menu-item-danger:hover {
721
+ background: var(--me-error-bg, #fef2f2);
722
+ }
723
+
724
+ .cm-me-table-menu-sep {
725
+ height: 1px;
726
+ margin: 4px 6px;
727
+ background: var(--me-border, #e4e4e7);
728
+ }
729
+
730
+ .me-codemirror .cm-me-rendered-block .me-renderer-callout {
731
+ margin: 8px 0;
732
+ }
733
+
734
+ .me-codemirror .cm-me-rendered-block-error {
735
+ overflow: auto;
736
+ border: 1px solid #fecaca;
737
+ border-radius: 6px;
738
+ background: var(--me-error-bg);
739
+ color: #991b1b;
740
+ padding: 12px;
741
+ }
742
+
743
+ .me-codemirror .cm-me-properties {
744
+ margin: 2px 0 12px;
745
+ padding: 10px 12px 12px;
746
+ border-radius: 7px;
747
+ background: color-mix(in srgb, var(--me-surface-muted), var(--me-surface) 44%);
748
+ color: var(--me-text);
749
+ font-family: var(--me-font-ui);
750
+ }
751
+
752
+ .me-codemirror .cm-me-properties-heading {
753
+ display: flex;
754
+ flex-wrap: wrap;
755
+ gap: 8px;
756
+ align-items: center;
757
+ margin-bottom: 8px;
758
+ color: var(--me-text);
759
+ font-size: 13px;
760
+ font-weight: 700;
761
+ cursor: pointer;
762
+ list-style: none;
763
+ }
764
+
765
+ .me-codemirror .cm-me-properties-heading::-webkit-details-marker {
766
+ display: none;
767
+ }
768
+
769
+ .me-codemirror .cm-me-properties-heading::before {
770
+ content: '▸';
771
+ color: var(--me-text-muted);
772
+ transition: transform 120ms ease;
773
+ }
774
+
775
+ .me-codemirror .cm-me-properties-details[open] > .cm-me-properties-heading::before {
776
+ transform: rotate(90deg);
777
+ }
778
+
779
+ .me-codemirror .cm-me-properties-heading:focus-visible {
780
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
781
+ outline-offset: 2px;
782
+ }
783
+
784
+ .me-codemirror .cm-me-properties-heading-text {
785
+ white-space: nowrap;
786
+ }
787
+
788
+ .me-codemirror .cm-me-properties-chips {
789
+ display: inline-flex;
790
+ flex: 1 1 240px;
791
+ flex-wrap: wrap;
792
+ gap: 6px;
793
+ min-width: 0;
794
+ }
795
+
796
+ .me-codemirror .cm-me-property-chip {
797
+ max-width: 220px;
798
+ overflow: hidden;
799
+ border: 1px solid color-mix(in srgb, var(--me-border), transparent 20%);
800
+ border-radius: 999px;
801
+ background: var(--me-surface);
802
+ color: var(--me-text-muted);
803
+ font-size: 12px;
804
+ font-weight: 600;
805
+ padding: 2px 8px;
806
+ text-overflow: ellipsis;
807
+ white-space: nowrap;
808
+ }
809
+
810
+ .me-codemirror .cm-me-property-chip[data-property-key='topic'] {
811
+ border-color: color-mix(in srgb, var(--me-accent), transparent 50%);
812
+ color: var(--me-text);
813
+ }
814
+
815
+ .me-codemirror .cm-me-property-chip--muted {
816
+ color: var(--me-text-muted);
817
+ }
818
+
819
+ .me-codemirror .cm-me-properties-table {
820
+ display: grid;
821
+ gap: 2px;
822
+ font-size: 13px;
823
+ line-height: 1.45;
824
+ }
825
+
826
+ .me-codemirror .cm-me-property-row {
827
+ position: relative;
828
+ display: grid;
829
+ grid-template-columns: 24px minmax(130px, 190px) minmax(180px, 1fr) 28px;
830
+ gap: 8px;
831
+ align-items: center;
832
+ min-height: 34px;
833
+ border-radius: 6px;
834
+ padding: 2px 0;
835
+ }
836
+
837
+ .me-codemirror .cm-me-property-row:hover,
838
+ .me-codemirror .cm-me-property-row:focus-within {
839
+ background: color-mix(in srgb, var(--me-accent), transparent 94%);
840
+ }
841
+
842
+ .me-codemirror .cm-me-property-order-cell,
843
+ .me-codemirror .cm-me-property-remove-cell {
844
+ display: flex;
845
+ align-items: center;
846
+ justify-content: center;
847
+ }
848
+
849
+ .me-codemirror .cm-me-property-key-input,
850
+ .me-codemirror .cm-me-property-tag-input,
851
+ .me-codemirror .cm-me-property-input {
852
+ min-height: 28px;
853
+ border: 1px solid transparent;
854
+ border-radius: 4px;
855
+ background: transparent;
856
+ color: var(--me-text);
857
+ font: inherit;
858
+ padding: 2px 4px;
859
+ }
860
+
861
+ .me-codemirror .cm-me-property-menu-details {
862
+ position: relative;
863
+ }
864
+
865
+ .me-codemirror .cm-me-property-menu-details[open] {
866
+ z-index: 6;
867
+ }
868
+
869
+ .me-codemirror .cm-me-property-summary {
870
+ display: inline-flex;
871
+ width: 100%;
872
+ min-height: 30px;
873
+ box-sizing: border-box;
874
+ gap: 8px;
875
+ align-items: center;
876
+ border-radius: 5px;
877
+ color: var(--me-text);
878
+ cursor: pointer;
879
+ list-style: none;
880
+ padding: 2px 4px;
881
+ }
882
+
883
+ .me-codemirror .cm-me-property-summary::-webkit-details-marker {
884
+ display: none;
885
+ }
886
+
887
+ .me-codemirror .cm-me-property-summary:focus-visible {
888
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
889
+ outline-offset: 1px;
890
+ }
891
+
892
+ .me-codemirror .cm-me-property-type-icon,
893
+ .me-codemirror .cm-me-inline-icon,
894
+ .me-inline-icon {
895
+ display: inline-block;
896
+ width: 1em;
897
+ height: 1em;
898
+ }
899
+
900
+ .me-codemirror .cm-me-property-type-icon {
901
+ display: inline-grid;
902
+ width: 20px;
903
+ height: 20px;
904
+ flex: 0 0 auto;
905
+ place-content: center;
906
+ border-radius: 5px;
907
+ color: var(--me-muted);
908
+ font-size: 13px;
909
+ font-weight: 700;
910
+ }
911
+
912
+ .me-codemirror .cm-me-property-name {
913
+ min-width: 0;
914
+ overflow: hidden;
915
+ text-overflow: ellipsis;
916
+ white-space: nowrap;
917
+ }
918
+
919
+ .me-codemirror .cm-me-property-menu {
920
+ position: absolute;
921
+ top: calc(100% + 3px);
922
+ left: 0;
923
+ display: grid;
924
+ gap: 8px;
925
+ width: min(290px, 78vw);
926
+ box-sizing: border-box;
927
+ border: 1px solid var(--me-border);
928
+ border-radius: 7px;
929
+ background: var(--me-surface);
930
+ box-shadow: 0 14px 34px rgba(24, 32, 42, 0.18);
931
+ padding: 10px;
932
+ }
933
+
934
+ .me-codemirror .cm-me-property-menu-label {
935
+ display: grid;
936
+ gap: 4px;
937
+ color: var(--me-muted);
938
+ font-size: 12px;
939
+ }
940
+
941
+ .me-codemirror .cm-me-property-key-input {
942
+ width: 100%;
943
+ min-width: 0;
944
+ box-sizing: border-box;
945
+ border-color: var(--me-border);
946
+ background: var(--me-surface);
947
+ }
948
+
949
+ .me-codemirror .cm-me-property-type-menu,
950
+ .me-codemirror .cm-me-property-suggestions {
951
+ display: flex;
952
+ flex-wrap: wrap;
953
+ gap: 4px;
954
+ }
955
+
956
+ .me-codemirror .cm-me-property-type-option,
957
+ .me-codemirror .cm-me-property-suggestion,
958
+ .me-codemirror .cm-me-property-picker,
959
+ .me-codemirror .cm-me-property-remove,
960
+ .me-codemirror .cm-me-property-add,
961
+ .me-codemirror .cm-me-property-tag-remove {
962
+ min-height: 28px;
963
+ border: 1px solid var(--me-border);
964
+ border-radius: 5px;
965
+ background: var(--me-surface);
966
+ color: var(--me-text);
967
+ cursor: pointer;
968
+ font: inherit;
969
+ padding: 0 8px;
970
+ }
971
+
972
+ .me-codemirror .cm-me-property-picker {
973
+ display: inline-flex;
974
+ align-items: center;
975
+ justify-content: center;
976
+ width: 28px;
977
+ padding: 0;
978
+ color: var(--me-muted);
979
+ }
980
+
981
+ .me-codemirror .cm-me-property-picker svg {
982
+ display: block;
983
+ }
984
+
985
+ .me-codemirror .cm-me-property-picker:hover {
986
+ border-color: var(--me-accent);
987
+ color: var(--me-accent);
988
+ }
989
+
990
+ .me-codemirror .cm-me-property-type-option[data-active="true"] {
991
+ border-color: color-mix(in srgb, var(--me-accent), transparent 20%);
992
+ background: color-mix(in srgb, var(--me-accent), transparent 90%);
993
+ color: var(--me-accent);
994
+ }
995
+
996
+ .me-codemirror .cm-me-property-drag-handle {
997
+ position: relative;
998
+ width: 24px;
999
+ height: 28px;
1000
+ border: 0;
1001
+ border-radius: 5px;
1002
+ background: transparent;
1003
+ cursor: grab;
1004
+ padding: 0;
1005
+ }
1006
+
1007
+ .me-codemirror .cm-me-property-drag-handle:disabled {
1008
+ cursor: default;
1009
+ }
1010
+
1011
+ .me-codemirror .cm-me-property-drag-handle::before {
1012
+ position: absolute;
1013
+ top: 8px;
1014
+ left: 6px;
1015
+ width: 12px;
1016
+ height: 10px;
1017
+ border-top: 2px solid var(--me-muted);
1018
+ border-bottom: 2px solid var(--me-muted);
1019
+ content: "";
1020
+ opacity: 0.72;
1021
+ }
1022
+
1023
+ .me-codemirror .cm-me-property-drag-handle::after {
1024
+ position: absolute;
1025
+ top: 13px;
1026
+ left: 6px;
1027
+ width: 12px;
1028
+ border-top: 2px solid var(--me-muted);
1029
+ content: "";
1030
+ opacity: 0.72;
1031
+ }
1032
+
1033
+ .me-codemirror .cm-me-property-drag-handle:focus-visible {
1034
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 76%);
1035
+ }
1036
+
1037
+ .me-codemirror .cm-me-property-type-option:disabled,
1038
+ .me-codemirror .cm-me-property-suggestion:disabled,
1039
+ .me-codemirror .cm-me-property-picker:disabled,
1040
+ .me-codemirror .cm-me-property-remove:disabled,
1041
+ .me-codemirror .cm-me-property-add:disabled,
1042
+ .me-codemirror .cm-me-property-tag-remove:disabled {
1043
+ cursor: not-allowed;
1044
+ opacity: 0.55;
1045
+ }
1046
+
1047
+ .me-codemirror .cm-me-property-input {
1048
+ width: 100%;
1049
+ min-width: 0;
1050
+ box-sizing: border-box;
1051
+ }
1052
+
1053
+ .me-codemirror .cm-me-property-input-wrap {
1054
+ display: flex;
1055
+ gap: 4px;
1056
+ align-items: center;
1057
+ min-width: 0;
1058
+ }
1059
+
1060
+ .me-codemirror .cm-me-property-boolean-input {
1061
+ width: 18px;
1062
+ height: 18px;
1063
+ min-height: 18px;
1064
+ accent-color: var(--me-accent);
1065
+ vertical-align: middle;
1066
+ }
1067
+
1068
+ .me-codemirror .cm-me-property-add {
1069
+ margin-top: 8px;
1070
+ border-color: transparent;
1071
+ background: transparent;
1072
+ color: var(--me-muted);
1073
+ padding-left: 4px;
1074
+ }
1075
+
1076
+ .me-codemirror .cm-me-property-add:hover,
1077
+ .me-codemirror .cm-me-property-add:focus-visible {
1078
+ color: var(--me-text);
1079
+ }
1080
+
1081
+ .me-codemirror .cm-me-property-remove {
1082
+ width: 26px;
1083
+ min-width: 26px;
1084
+ padding: 0;
1085
+ opacity: 0;
1086
+ color: var(--me-muted);
1087
+ }
1088
+
1089
+ .me-codemirror .cm-me-property-remove:hover,
1090
+ .me-codemirror .cm-me-property-remove:focus-visible {
1091
+ color: #dc2626;
1092
+ border-color: color-mix(in srgb, #dc2626, transparent 70%);
1093
+ background: color-mix(in srgb, #dc2626, transparent 92%);
1094
+ }
1095
+
1096
+ .me-codemirror .cm-me-property-row:hover .cm-me-property-remove,
1097
+ .me-codemirror .cm-me-property-row:focus-within .cm-me-property-remove {
1098
+ opacity: 1;
1099
+ }
1100
+
1101
+ .me-codemirror .cm-me-property-tags {
1102
+ display: flex;
1103
+ flex-wrap: wrap;
1104
+ gap: 5px;
1105
+ align-items: center;
1106
+ min-height: 30px;
1107
+ min-width: 0;
1108
+ }
1109
+
1110
+ .me-codemirror .cm-me-property-tag {
1111
+ display: inline-flex;
1112
+ max-width: 100%;
1113
+ align-items: center;
1114
+ gap: 4px;
1115
+ border-radius: 5px;
1116
+ background: color-mix(in srgb, var(--me-accent), transparent 90%);
1117
+ color: var(--me-text);
1118
+ padding: 2px 3px 2px 7px;
1119
+ }
1120
+
1121
+ .me-codemirror .cm-me-property-tag span {
1122
+ min-width: 0;
1123
+ overflow: hidden;
1124
+ text-overflow: ellipsis;
1125
+ }
1126
+
1127
+ .me-codemirror .cm-me-property-tag-remove {
1128
+ width: 20px;
1129
+ min-width: 20px;
1130
+ min-height: 20px;
1131
+ border: 0;
1132
+ background: transparent;
1133
+ color: var(--me-muted);
1134
+ padding: 0;
1135
+ }
1136
+
1137
+ .me-codemirror .cm-me-property-tag-input {
1138
+ flex: 1 1 90px;
1139
+ min-width: 74px;
1140
+ }
1141
+
1142
+ .me-codemirror .cm-me-property-empty {
1143
+ color: var(--me-muted);
1144
+ padding: 6px 0;
1145
+ }
1146
+
1147
+ .me-codemirror .cm-me-property-key-input:focus,
1148
+ .me-codemirror .cm-me-property-tag-input:focus,
1149
+ .me-codemirror .cm-me-property-input:focus {
1150
+ border-color: var(--me-border);
1151
+ background: var(--me-surface);
1152
+ outline: 2px solid color-mix(in srgb, var(--me-accent), transparent 78%);
1153
+ }
1154
+
1155
+ .me-wysiwyg {
1156
+ position: relative;
1157
+ min-height: inherit;
1158
+ flex: 1;
1159
+ overflow: auto;
1160
+ background: var(--me-surface);
1161
+ color: var(--me-text);
1162
+ font-family: var(--me-font-ui);
1163
+ }
1164
+
1165
+ .me-wysiwyg-toolbar {
1166
+ display: flex;
1167
+ flex-wrap: wrap;
1168
+ gap: 6px;
1169
+ align-items: center;
1170
+ border-bottom: 1px solid var(--me-border);
1171
+ background: var(--me-surface-muted);
1172
+ padding: 8px;
1173
+ }
1174
+
1175
+ .me-wysiwyg-toolbar button,
1176
+ .me-wysiwyg-toolbar select {
1177
+ min-height: 30px;
1178
+ border: 1px solid var(--me-border);
1179
+ border-radius: 6px;
1180
+ background: var(--me-surface);
1181
+ color: var(--me-text);
1182
+ font: inherit;
1183
+ padding: 0 8px;
1184
+ }
1185
+
1186
+ .me-wysiwyg-toolbar button {
1187
+ display: inline-flex;
1188
+ align-items: center;
1189
+ justify-content: center;
1190
+ min-width: 32px;
1191
+ cursor: pointer;
1192
+ }
1193
+
1194
+ .me-wysiwyg-toolbar button svg {
1195
+ width: 0.95em;
1196
+ height: 0.95em;
1197
+ }
1198
+
1199
+ .me-wysiwyg-toolbar button[data-active="true"] {
1200
+ border-color: color-mix(in srgb, var(--me-accent), transparent 25%);
1201
+ background: color-mix(in srgb, var(--me-accent), transparent 88%);
1202
+ color: var(--me-accent);
1203
+ }
1204
+
1205
+ .me-wysiwyg-toolbar-group {
1206
+ display: inline-flex;
1207
+ gap: 3px;
1208
+ align-items: center;
1209
+ min-width: 0;
1210
+ padding-right: 6px;
1211
+ border-right: 1px solid var(--me-border);
1212
+ }
1213
+
1214
+ .me-wysiwyg-toolbar-group:last-child {
1215
+ border-right: 0;
1216
+ }
1217
+
1218
+ .me-wysiwyg-block-select {
1219
+ min-width: 150px;
1220
+ }
1221
+
1222
+ .me-wysiwyg-insert-select {
1223
+ min-width: 112px;
1224
+ }
1225
+
1226
+ .me-wysiwyg-loading {
1227
+ display: grid;
1228
+ min-height: inherit;
1229
+ place-items: center;
1230
+ color: var(--me-muted);
1231
+ font-size: 13px;
1232
+ }
1233
+
1234
+ .me-wysiwyg-input {
1235
+ min-height: inherit;
1236
+ padding: 16px;
1237
+ outline: none;
1238
+ line-height: 1.65;
1239
+ }
1240
+
1241
+ .me-wysiwyg-placeholder-text {
1242
+ position: absolute;
1243
+ top: 16px;
1244
+ left: 16px;
1245
+ color: var(--me-muted);
1246
+ pointer-events: none;
1247
+ }
1248
+
1249
+ .me-wysiwyg-heading {
1250
+ margin: 0 0 10px;
1251
+ line-height: 1.2;
1252
+ }
1253
+
1254
+ .me-wysiwyg-heading-1 {
1255
+ font-size: 1.75rem;
1256
+ }
1257
+
1258
+ .me-wysiwyg-heading-2 {
1259
+ font-size: 1.4rem;
1260
+ }
1261
+
1262
+ .me-wysiwyg-heading-3 {
1263
+ font-size: 1.2rem;
1264
+ }
1265
+
1266
+ .me-wysiwyg-paragraph,
1267
+ .me-wysiwyg-list,
1268
+ .me-wysiwyg-quote,
1269
+ .me-wysiwyg-code {
1270
+ margin-top: 0;
1271
+ }
1272
+
1273
+ .me-wysiwyg-list {
1274
+ padding-left: 1.45rem;
1275
+ }
1276
+
1277
+ /* Render real list markers. ul/ol share the .me-wysiwyg-list class, so target by
1278
+ element; the element+class selector also wins over a generic `ul {}` reset in
1279
+ a host app. Check lists use a separate class and keep their custom markers. */
1280
+ ul.me-wysiwyg-list {
1281
+ list-style: disc outside;
1282
+ }
1283
+ ol.me-wysiwyg-list {
1284
+ list-style: decimal outside;
1285
+ }
1286
+ ul.me-wysiwyg-list ul.me-wysiwyg-list {
1287
+ list-style-type: circle;
1288
+ }
1289
+ ul.me-wysiwyg-list ul.me-wysiwyg-list ul.me-wysiwyg-list {
1290
+ list-style-type: square;
1291
+ }
1292
+ .me-wysiwyg-list-item {
1293
+ margin: 0;
1294
+ }
1295
+
1296
+ .me-wysiwyg-check-list {
1297
+ padding-left: 0;
1298
+ list-style: none;
1299
+ }
1300
+
1301
+ .me-wysiwyg-list-item-checked,
1302
+ .me-wysiwyg-list-item-unchecked {
1303
+ position: relative;
1304
+ list-style: none;
1305
+ padding-left: 1.7rem;
1306
+ }
1307
+
1308
+ .me-wysiwyg-list-item-checked::before,
1309
+ .me-wysiwyg-list-item-unchecked::before {
1310
+ position: absolute;
1311
+ top: 0.36em;
1312
+ left: 0.1rem;
1313
+ width: 1.05em;
1314
+ height: 1.05em;
1315
+ box-sizing: border-box;
1316
+ border: 1px solid #9aa7b2;
1317
+ border-radius: 4px;
1318
+ background: var(--me-surface);
1319
+ content: "";
1320
+ }
1321
+
1322
+ .me-wysiwyg-list-item-checked {
1323
+ color: var(--me-muted);
1324
+ text-decoration: line-through;
1325
+ }
1326
+
1327
+ .me-wysiwyg-list-item-checked::before {
1328
+ border-color: var(--me-accent);
1329
+ background-color: var(--me-accent);
1330
+ background-image: linear-gradient(45deg, transparent 58%, #ffffff 58%),
1331
+ linear-gradient(-45deg, transparent 48%, #ffffff 48%),
1332
+ linear-gradient(45deg, #ffffff 42%, transparent 42%);
1333
+ background-position: 0.14em 0.42em, 0.42em 0.42em, 0.28em 0.58em;
1334
+ background-repeat: no-repeat;
1335
+ background-size: 0.36em 0.12em, 0.48em 0.12em, 0.12em 0.28em;
1336
+ }
1337
+
1338
+ .me-wysiwyg-quote {
1339
+ border-left: 4px solid var(--me-accent);
1340
+ color: var(--me-muted);
1341
+ padding-left: 12px;
1342
+ }
1343
+
1344
+ /* Rich Text (WYSIWYG) tables. Kept in sync with @echozedlabs/wysiwyg-lexical's
1345
+ stylesheet; consumers only import this (react) stylesheet, so the table rules
1346
+ must live here too. */
1347
+ .me-wysiwyg-table-action {
1348
+ font-family: var(--me-font-mono, ui-monospace, monospace);
1349
+ font-size: 12px;
1350
+ font-weight: 650;
1351
+ }
1352
+
1353
+ .me-wysiwyg-table-scroll {
1354
+ max-width: 100%;
1355
+ margin: 14px 0;
1356
+ overflow-x: auto;
1357
+ }
1358
+
1359
+ .me-wysiwyg-table {
1360
+ width: 100%;
1361
+ border-collapse: collapse;
1362
+ border: 1px solid var(--me-border, #d9dee5);
1363
+ background: var(--me-surface, #ffffff);
1364
+ font-size: 0.95rem;
1365
+ }
1366
+
1367
+ .me-wysiwyg-table-row {
1368
+ border-bottom: 1px solid var(--me-border, #d9dee5);
1369
+ }
1370
+
1371
+ .me-wysiwyg-table-row:last-child {
1372
+ border-bottom: 0;
1373
+ }
1374
+
1375
+ .me-wysiwyg-table-cell {
1376
+ min-width: 120px;
1377
+ border-right: 1px solid var(--me-border, #d9dee5);
1378
+ padding: 8px 10px;
1379
+ text-align: left;
1380
+ vertical-align: top;
1381
+ }
1382
+
1383
+ .me-wysiwyg-table-cell:last-child {
1384
+ border-right: 0;
1385
+ }
1386
+
1387
+ .me-wysiwyg-table-cell-header {
1388
+ background: var(--me-surface-muted, #f8fafc);
1389
+ color: var(--me-text, #18202a);
1390
+ font-weight: 650;
1391
+ }
1392
+
1393
+ .me-wysiwyg-table-cell-selected {
1394
+ outline: 2px solid color-mix(in srgb, var(--me-accent, #2563eb), transparent 15%);
1395
+ outline-offset: -2px;
1396
+ }
1397
+
1398
+ .me-wysiwyg-table-selection {
1399
+ user-select: none;
1400
+ }
1401
+
1402
+ .me-wysiwyg-table-cell .me-wysiwyg-paragraph {
1403
+ margin: 0;
1404
+ }
1405
+
1406
+ .me-wysiwyg-code {
1407
+ display: block;
1408
+ width: 100%;
1409
+ box-sizing: border-box;
1410
+ overflow: auto;
1411
+ border: 1px solid var(--me-border);
1412
+ border-radius: 6px;
1413
+ background: var(--me-code-bg);
1414
+ margin: 14px 0;
1415
+ padding: 40px 12px 12px;
1416
+ font-family: var(--me-font-mono);
1417
+ line-height: 1.55;
1418
+ tab-size: 2;
1419
+ }
1420
+
1421
+ .me-wysiwyg-code-language-popover {
1422
+ position: absolute;
1423
+ z-index: 4;
1424
+ display: flex;
1425
+ gap: 8px;
1426
+ align-items: center;
1427
+ justify-content: space-between;
1428
+ min-height: 30px;
1429
+ box-sizing: border-box;
1430
+ border-bottom: 1px solid var(--me-border);
1431
+ color: var(--me-muted);
1432
+ font-size: 12px;
1433
+ pointer-events: auto;
1434
+ }
1435
+
1436
+ .me-wysiwyg-code-language-popover select {
1437
+ min-height: 26px;
1438
+ border: 1px solid var(--me-border);
1439
+ border-radius: 5px;
1440
+ background: var(--me-surface);
1441
+ color: var(--me-text);
1442
+ font: inherit;
1443
+ }
1444
+
1445
+ .me-wysiwyg-token-comment,
1446
+ .me-wysiwyg-token-prolog,
1447
+ .me-wysiwyg-token-doctype,
1448
+ .me-wysiwyg-token-cdata {
1449
+ color: #64748b;
1450
+ }
1451
+
1452
+ .me-wysiwyg-token-punctuation,
1453
+ .me-wysiwyg-token-operator,
1454
+ .me-wysiwyg-token-namespace {
1455
+ color: #475569;
1456
+ }
1457
+
1458
+ .me-wysiwyg-token-property,
1459
+ .me-wysiwyg-token-tag,
1460
+ .me-wysiwyg-token-boolean,
1461
+ .me-wysiwyg-token-number,
1462
+ .me-wysiwyg-token-constant,
1463
+ .me-wysiwyg-token-symbol,
1464
+ .me-wysiwyg-token-deleted {
1465
+ color: #b45309;
1466
+ }
1467
+
1468
+ .me-wysiwyg-token-selector,
1469
+ .me-wysiwyg-token-attr-name,
1470
+ .me-wysiwyg-token-string,
1471
+ .me-wysiwyg-token-char,
1472
+ .me-wysiwyg-token-builtin,
1473
+ .me-wysiwyg-token-inserted {
1474
+ color: #047857;
1475
+ }
1476
+
1477
+ .me-wysiwyg-token-function,
1478
+ .me-wysiwyg-token-class-name,
1479
+ .me-wysiwyg-token-entity,
1480
+ .me-wysiwyg-token-url {
1481
+ color: #2563eb;
1482
+ }
1483
+
1484
+ .me-wysiwyg-token-keyword,
1485
+ .me-wysiwyg-token-atrule,
1486
+ .me-wysiwyg-token-attr-value,
1487
+ .me-wysiwyg-token-important,
1488
+ .me-wysiwyg-token-regex,
1489
+ .me-wysiwyg-token-variable {
1490
+ color: #7c3aed;
1491
+ }
1492
+
1493
+ .me-wysiwyg-link {
1494
+ color: var(--me-accent);
1495
+ text-decoration: underline;
1496
+ }
1497
+
1498
+ .me-wysiwyg-text-bold {
1499
+ font-weight: 700;
1500
+ }
1501
+
1502
+ .me-wysiwyg-text-italic {
1503
+ font-style: italic;
1504
+ }
1505
+
1506
+ .me-wysiwyg-text-code {
1507
+ border-radius: 4px;
1508
+ background: var(--me-surface-muted);
1509
+ font-family: var(--me-font-mono);
1510
+ padding: 0 3px;
1511
+ }
1512
+
1513
+ .me-wysiwyg-mermaid,
1514
+ .me-wysiwyg-plantuml,
1515
+ .me-wysiwyg-image {
1516
+ margin: 14px 0;
1517
+ overflow: auto;
1518
+ border: 1px solid var(--me-border);
1519
+ border-radius: 6px;
1520
+ background: var(--me-surface);
1521
+ }
1522
+
1523
+ .me-wysiwyg-mermaid figcaption,
1524
+ .me-wysiwyg-plantuml figcaption,
1525
+ .me-wysiwyg-image figcaption {
1526
+ display: flex;
1527
+ gap: 8px;
1528
+ align-items: center;
1529
+ justify-content: space-between;
1530
+ border-bottom: 1px solid var(--me-border);
1531
+ background: var(--me-code-bg);
1532
+ color: var(--me-muted);
1533
+ font-size: 13px;
1534
+ padding: 7px 10px;
1535
+ }
1536
+
1537
+ .me-wysiwyg-mermaid figcaption button,
1538
+ .me-wysiwyg-plantuml figcaption button,
1539
+ .me-wysiwyg-image figcaption button,
1540
+ .me-wysiwyg-mermaid-editor button,
1541
+ .me-wysiwyg-diagram-editor button,
1542
+ .me-wysiwyg-image-editor button {
1543
+ min-height: 28px;
1544
+ border: 1px solid var(--me-border);
1545
+ border-radius: 6px;
1546
+ background: var(--me-surface);
1547
+ color: var(--me-text);
1548
+ cursor: pointer;
1549
+ font: inherit;
1550
+ padding: 0 8px;
1551
+ }
1552
+
1553
+ .me-wysiwyg-mermaid-rendered,
1554
+ .me-wysiwyg-mermaid-loading,
1555
+ .me-wysiwyg-mermaid-error,
1556
+ .me-wysiwyg-diagram-rendered,
1557
+ .me-wysiwyg-diagram-loading,
1558
+ .me-wysiwyg-diagram-error {
1559
+ margin: 0;
1560
+ padding: 12px;
1561
+ }
1562
+
1563
+ .me-wysiwyg-mermaid-rendered svg,
1564
+ .me-wysiwyg-diagram-rendered svg {
1565
+ display: block;
1566
+ max-width: 100%;
1567
+ height: auto;
1568
+ margin: 0 auto;
1569
+ }
1570
+
1571
+ .me-wysiwyg-mermaid-editor,
1572
+ .me-wysiwyg-diagram-editor {
1573
+ display: grid;
1574
+ gap: 8px;
1575
+ padding: 10px;
1576
+ }
1577
+
1578
+ .me-wysiwyg-mermaid-editor textarea,
1579
+ .me-wysiwyg-diagram-editor textarea {
1580
+ width: 100%;
1581
+ min-width: 0;
1582
+ resize: vertical;
1583
+ border: 1px solid var(--me-border);
1584
+ border-radius: 6px;
1585
+ color: var(--me-text);
1586
+ font: 13px/1.45 var(--me-font-mono);
1587
+ padding: 8px;
1588
+ }
1589
+
1590
+ .me-wysiwyg-mermaid-error,
1591
+ .me-wysiwyg-diagram-error {
1592
+ color: #991b1b;
1593
+ background: var(--me-error-bg);
1594
+ font-family: var(--me-font-mono);
1595
+ }
1596
+
1597
+ .me-wysiwyg-image img {
1598
+ display: block;
1599
+ max-width: calc(100% - 24px);
1600
+ height: auto;
1601
+ margin: 12px auto;
1602
+ border-radius: 6px;
1603
+ }
1604
+
1605
+ .me-wysiwyg-image p {
1606
+ margin: -2px 12px 12px;
1607
+ color: var(--me-muted);
1608
+ font-size: 13px;
1609
+ text-align: center;
1610
+ }
1611
+
1612
+ .me-wysiwyg-image-editor {
1613
+ display: grid;
1614
+ gap: 8px;
1615
+ padding: 10px;
1616
+ }
1617
+
1618
+ .me-wysiwyg-image-editor label {
1619
+ display: grid;
1620
+ gap: 4px;
1621
+ color: var(--me-muted);
1622
+ font-size: 12px;
1623
+ }
1624
+
1625
+ .me-wysiwyg-image-editor input {
1626
+ min-height: 30px;
1627
+ min-width: 0;
1628
+ border: 1px solid var(--me-border);
1629
+ border-radius: 6px;
1630
+ color: var(--me-text);
1631
+ font: 13px/1.4 var(--me-font-ui);
1632
+ padding: 0 8px;
1633
+ }
1634
+
1635
+ @media (max-width: 640px) {
1636
+ .me-editor {
1637
+ border-right: 0;
1638
+ border-left: 0;
1639
+ border-radius: 0;
1640
+ }
1641
+
1642
+ .me-mode-button {
1643
+ flex: 1 1 auto;
1644
+ }
1645
+
1646
+ .me-properties-toggle {
1647
+ margin-left: 0;
1648
+ }
1649
+
1650
+ .me-host-tools {
1651
+ flex-basis: 100%;
1652
+ justify-content: stretch;
1653
+ margin-left: 0;
1654
+ }
1655
+
1656
+ .me-link-search,
1657
+ .me-upload-control,
1658
+ .me-upload-button {
1659
+ flex: 1 1 100%;
1660
+ }
1661
+
1662
+ .me-codemirror .cm-me-properties {
1663
+ padding-right: 8px;
1664
+ padding-left: 8px;
1665
+ }
1666
+
1667
+ .me-codemirror .cm-me-property-row {
1668
+ grid-template-columns: 24px minmax(0, 1fr) 28px;
1669
+ gap: 6px;
1670
+ align-items: start;
1671
+ }
1672
+
1673
+ .me-codemirror .cm-me-property-key-cell {
1674
+ grid-column: 2;
1675
+ }
1676
+
1677
+ .me-codemirror .cm-me-property-value-cell {
1678
+ grid-column: 2 / 4;
1679
+ }
1680
+
1681
+ .me-codemirror .cm-me-property-remove-cell {
1682
+ grid-column: 3;
1683
+ grid-row: 1;
1684
+ }
1685
+
1686
+ .me-codemirror .cm-me-property-menu {
1687
+ width: min(290px, 84vw);
1688
+ }
1689
+ }
1690
+
1691
+ @media (prefers-reduced-motion: reduce) {
1692
+ .me-editor *,
1693
+ .me-editor *::before,
1694
+ .me-editor *::after {
1695
+ animation-duration: 0.01ms !important;
1696
+ animation-iteration-count: 1 !important;
1697
+ scroll-behavior: auto !important;
1698
+ transition-duration: 0.01ms !important;
1699
+ }
1700
+ }