@liminis/editor 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.
Files changed (35) hide show
  1. package/README.md +126 -14
  2. package/dist/annotations/types.d.ts +16 -0
  3. package/dist/app/App.d.ts +1 -1
  4. package/dist/app/App.js +3 -3
  5. package/dist/app/editor/AnchorScrollPlugin.js +2 -34
  6. package/dist/app/editor/AnnotationSurface.js +2 -1
  7. package/dist/app/editor/CorrectionPanelPlugin.js +10 -10
  8. package/dist/app/editor/DocumentOutline.d.ts +17 -0
  9. package/dist/app/editor/DocumentOutline.js +32 -0
  10. package/dist/app/editor/DragHandlePlugin.js +1 -1
  11. package/dist/app/editor/Editor.d.ts +10 -1
  12. package/dist/app/editor/Editor.js +3 -2
  13. package/dist/app/editor/OutlinePlugin.d.ts +14 -0
  14. package/dist/app/editor/OutlinePlugin.js +133 -0
  15. package/dist/app/editor/SelectionContextMenuPlugin.js +4 -4
  16. package/dist/app/editor/annotation-marks.d.ts +20 -0
  17. package/dist/app/editor/annotation-marks.js +40 -0
  18. package/dist/app/editor/documentOutlineHandle.d.ts +87 -0
  19. package/dist/app/editor/documentOutlineHandle.js +86 -0
  20. package/dist/app/editor/nodes/C4Component.js +6 -6
  21. package/dist/app/editor/nodes/DiagramContextMenu.js +5 -5
  22. package/dist/app/editor/scrollContainer.d.ts +18 -0
  23. package/dist/app/editor/scrollContainer.js +47 -0
  24. package/dist/index.d.ts +4 -0
  25. package/dist/index.js +6 -0
  26. package/dist/markdown/stringify.js +65 -0
  27. package/dist/styles.css +342 -221
  28. package/docs/decisions/adr-078.md +37 -2
  29. package/docs/decisions/adr-085.md +166 -0
  30. package/docs/decisions/adr-086.md +147 -0
  31. package/docs/decisions/adr-087.md +216 -0
  32. package/docs/decisions/adr-088.md +136 -0
  33. package/docs/decisions/adr-089.md +121 -0
  34. package/docs/editor-api.md +53 -1
  35. package/package.json +23 -46
package/dist/styles.css CHANGED
@@ -114,10 +114,10 @@
114
114
  body {
115
115
  margin: 0;
116
116
  padding: 0;
117
- font-family: var(--vscode-font-family);
118
- font-size: var(--vscode-font-size);
119
- color: var(--vscode-foreground);
120
- background: var(--vscode-background);
117
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
118
+ font-size: var(--liminis-editor-font-size, var(--vscode-font-size));
119
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
120
+ background: var(--liminis-editor-background, var(--vscode-background));
121
121
  line-height: 1.8; /* Slightly more generous line height like Loop */
122
122
  -webkit-font-smoothing: antialiased;
123
123
  -moz-osx-font-smoothing: grayscale;
@@ -127,8 +127,8 @@ body {
127
127
  .loading-spinner {
128
128
  width: 20px;
129
129
  height: 20px;
130
- border: 2px solid var(--vscode-border);
131
- border-top-color: var(--vscode-link);
130
+ border: 2px solid var(--liminis-editor-border, var(--vscode-border));
131
+ border-top-color: var(--liminis-editor-link, var(--vscode-link));
132
132
  border-radius: 50%;
133
133
  animation: spin 1s linear infinite;
134
134
  }
@@ -139,9 +139,49 @@ body {
139
139
  }
140
140
  }
141
141
 
142
- /* Editor inner wrapper - used for hover state targeting of drag handles */
142
+ /* Loading state - centered spinner + label, dimmed, fills viewport */
143
+ .editor-loading {
144
+ display: flex;
145
+ align-items: center;
146
+ justify-content: center;
147
+ gap: 0.75rem;
148
+ min-height: 100vh;
149
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
150
+ opacity: 0.7;
151
+ }
152
+
153
+ /* Error banner - fixed to top, spans full width, above editor content */
154
+ .editor-error-banner {
155
+ position: fixed;
156
+ top: 0;
157
+ left: 0;
158
+ right: 0;
159
+ padding: 0.5rem 1rem;
160
+ background: oklch(63.7% 0.237 25.331);
161
+ color: #fff;
162
+ text-align: center;
163
+ z-index: 1000;
164
+ }
165
+
166
+ /* App root wrapper - default className for the top-level container */
167
+ .editor-app-root {
168
+ min-height: 100vh;
169
+ padding: 0;
170
+ }
171
+
172
+ /* Editor content column - centered, fixed max width with left/right gutters */
173
+ .editor-container {
174
+ position: relative;
175
+ max-width: 800px;
176
+ margin-left: 1.25rem;
177
+ margin-right: 0.25rem;
178
+ padding-left: 1.5rem;
179
+ padding-right: 1.5rem;
180
+ }
181
+
182
+ /* Editor inner wrapper - positioned ancestor for drag handles, also targeted by hover state rules */
143
183
  .editor-inner {
144
- /* Layout handled by Tailwind - this class exists for CSS hover rules */
184
+ position: relative;
145
185
  }
146
186
 
147
187
  /* Editor content area */
@@ -155,7 +195,7 @@ body {
155
195
  position: absolute;
156
196
  top: 16px;
157
197
  left: 16px;
158
- color: var(--vscode-foreground);
198
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
159
199
  opacity: 0.5;
160
200
  pointer-events: none;
161
201
  user-select: none;
@@ -171,8 +211,8 @@ body {
171
211
  font-weight: 700;
172
212
  margin: 32px 0 24px 0; /* More generous margins */
173
213
  line-height: 1.2;
174
- color: var(--slashmd-h1-color);
175
- margin-left: var(--slashmd-h1-indent);
214
+ color: var(--liminis-editor-h1-color, var(--slashmd-h1-color));
215
+ margin-left: var(--liminis-editor-h1-indent, var(--slashmd-h1-indent));
176
216
  }
177
217
 
178
218
  .editor-heading-h2 {
@@ -180,8 +220,8 @@ body {
180
220
  font-weight: 600;
181
221
  margin: 28px 0 16px 0; /* More generous margins */
182
222
  line-height: 1.3;
183
- color: var(--slashmd-h2-color);
184
- margin-left: var(--slashmd-h2-indent);
223
+ color: var(--liminis-editor-h2-color, var(--slashmd-h2-color));
224
+ margin-left: var(--liminis-editor-h2-indent, var(--slashmd-h2-indent));
185
225
  }
186
226
 
187
227
  .editor-heading-h3 {
@@ -189,8 +229,8 @@ body {
189
229
  font-weight: 600;
190
230
  margin: 24px 0 12px 0; /* More generous margins */
191
231
  line-height: 1.4;
192
- color: var(--slashmd-h3-color);
193
- margin-left: var(--slashmd-h3-indent);
232
+ color: var(--liminis-editor-h3-color, var(--slashmd-h3-color));
233
+ margin-left: var(--liminis-editor-h3-indent, var(--slashmd-h3-indent));
194
234
  }
195
235
 
196
236
  .editor-heading-h4 {
@@ -198,8 +238,8 @@ body {
198
238
  font-weight: 600;
199
239
  margin: 20px 0 10px 0; /* More generous margins */
200
240
  line-height: 1.4;
201
- color: var(--slashmd-h4-color);
202
- margin-left: var(--slashmd-h4-indent);
241
+ color: var(--liminis-editor-h4-color, var(--slashmd-h4-color));
242
+ margin-left: var(--liminis-editor-h4-indent, var(--slashmd-h4-indent));
203
243
  }
204
244
 
205
245
  .editor-heading-h5 {
@@ -207,8 +247,8 @@ body {
207
247
  font-weight: 600;
208
248
  margin: 16px 0 8px 0; /* More generous margins */
209
249
  line-height: 1.4;
210
- color: var(--slashmd-h5-color);
211
- margin-left: var(--slashmd-h5-indent);
250
+ color: var(--liminis-editor-h5-color, var(--slashmd-h5-color));
251
+ margin-left: var(--liminis-editor-h5-indent, var(--slashmd-h5-indent));
212
252
  }
213
253
 
214
254
  /* Lists - Loop-inspired spacing */
@@ -244,14 +284,14 @@ body {
244
284
  top: 4px;
245
285
  width: 16px;
246
286
  height: 16px;
247
- border: 2px solid var(--checkbox-border);
287
+ border: 2px solid var(--liminis-editor-checkbox-border, var(--checkbox-border));
248
288
  border-radius: 3px;
249
289
  cursor: pointer;
250
290
  }
251
291
 
252
292
  .editor-listitem-checked::before {
253
- background: var(--vscode-link);
254
- border-color: var(--vscode-link);
293
+ background: var(--liminis-editor-link, var(--vscode-link));
294
+ border-color: var(--liminis-editor-link, var(--vscode-link));
255
295
  }
256
296
 
257
297
  .editor-listitem-checked::after {
@@ -286,14 +326,14 @@ body {
286
326
  top: 4px;
287
327
  width: 16px;
288
328
  height: 16px;
289
- border: 2px solid var(--checkbox-border);
329
+ border: 2px solid var(--liminis-editor-checkbox-border, var(--checkbox-border));
290
330
  border-radius: 3px;
291
331
  cursor: pointer;
292
332
  }
293
333
 
294
334
  .editor-listitem-ordered-checked::before {
295
- background: var(--vscode-link);
296
- border-color: var(--vscode-link);
335
+ background: var(--liminis-editor-link, var(--vscode-link));
336
+ border-color: var(--liminis-editor-link, var(--vscode-link));
297
337
  }
298
338
 
299
339
  .editor-listitem-ordered-checked::after {
@@ -313,8 +353,8 @@ body {
313
353
  .editor-quote {
314
354
  margin: 20px 0; /* More generous margins */
315
355
  padding: 12px 20px; /* More padding */
316
- border-left: 4px solid var(--vscode-border);
317
- background: var(--vscode-code-bg);
356
+ border-left: 4px solid var(--liminis-editor-border, var(--vscode-border));
357
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
318
358
  font-style: italic;
319
359
  }
320
360
 
@@ -324,7 +364,7 @@ body {
324
364
  position: relative;
325
365
  margin: 20px 0; /* More generous margins */
326
366
  padding: 16px 20px; /* More padding */
327
- background: var(--vscode-code-bg);
367
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
328
368
  border-radius: 10px; /* Friendlier rounded corners */
329
369
  font-family: 'Fira Code', 'Consolas', monospace;
330
370
  font-size: 0.9em;
@@ -345,10 +385,10 @@ body {
345
385
  .code-language-button {
346
386
  padding: 2px 8px;
347
387
  font-size: 11px;
348
- font-family: var(--vscode-font-family);
349
- color: var(--vscode-foreground);
350
- background: var(--vscode-code-bg);
351
- border: 1px solid var(--vscode-border);
388
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
389
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
390
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
391
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
352
392
  border-radius: 4px;
353
393
  cursor: pointer;
354
394
  opacity: 0.7;
@@ -357,7 +397,7 @@ body {
357
397
 
358
398
  .code-language-button:hover {
359
399
  opacity: 1;
360
- background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15));
400
+ background: var(--liminis-editor-toolbar-hoverBackground, var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15)));
361
401
  }
362
402
 
363
403
  /* Code Copy Button */
@@ -368,9 +408,9 @@ body {
368
408
  width: 24px;
369
409
  height: 20px;
370
410
  padding: 0;
371
- color: var(--vscode-foreground);
372
- background: var(--vscode-code-bg);
373
- border: 1px solid var(--vscode-border);
411
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
412
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
413
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
374
414
  border-radius: 4px;
375
415
  cursor: pointer;
376
416
  opacity: 0.7;
@@ -379,12 +419,12 @@ body {
379
419
 
380
420
  .code-copy-button:hover {
381
421
  opacity: 1;
382
- background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15));
422
+ background: var(--liminis-editor-toolbar-hoverBackground, var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.15)));
383
423
  }
384
424
 
385
425
  .code-copy-button.copied {
386
426
  opacity: 1;
387
- color: var(--vscode-notificationsInfoIcon-foreground, #3794ff);
427
+ color: var(--liminis-editor-notificationsInfoIcon-foreground, var(--vscode-notificationsInfoIcon-foreground, #3794ff));
388
428
  }
389
429
 
390
430
  /* Code Language Selector Menu */
@@ -393,8 +433,8 @@ body {
393
433
  max-height: 320px;
394
434
  display: flex;
395
435
  flex-direction: column;
396
- background: var(--vscode-background);
397
- border: 1px solid var(--vscode-border);
436
+ background: var(--liminis-editor-background, var(--vscode-background));
437
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
398
438
  border-radius: 12px; /* Friendlier rounded corners */
399
439
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
400
440
  z-index: 300;
@@ -405,16 +445,16 @@ body {
405
445
  margin: 8px;
406
446
  padding: 6px 10px;
407
447
  font-size: 13px;
408
- font-family: var(--vscode-font-family);
409
- color: var(--vscode-foreground);
410
- background: var(--vscode-code-bg);
411
- border: 1px solid var(--vscode-border);
448
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
449
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
450
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
451
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
412
452
  border-radius: 4px;
413
453
  outline: none;
414
454
  }
415
455
 
416
456
  .code-language-search:focus {
417
- border-color: var(--vscode-link);
457
+ border-color: var(--liminis-editor-link, var(--vscode-link));
418
458
  }
419
459
 
420
460
  .code-language-list {
@@ -430,8 +470,8 @@ body {
430
470
  width: 100%;
431
471
  padding: 6px 12px;
432
472
  font-size: 13px;
433
- font-family: var(--vscode-font-family);
434
- color: var(--vscode-foreground);
473
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
474
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
435
475
  background: transparent;
436
476
  border: none;
437
477
  text-align: left;
@@ -439,7 +479,7 @@ body {
439
479
  }
440
480
 
441
481
  .code-language-item:hover {
442
- background: var(--vscode-selection);
482
+ background: var(--liminis-editor-selection, var(--vscode-selection));
443
483
  }
444
484
 
445
485
  .code-language-item.current {
@@ -447,14 +487,14 @@ body {
447
487
  }
448
488
 
449
489
  .code-language-check {
450
- color: var(--vscode-link);
490
+ color: var(--liminis-editor-link, var(--vscode-link));
451
491
  font-size: 12px;
452
492
  }
453
493
 
454
494
  .code-language-empty {
455
495
  padding: 12px;
456
496
  text-align: center;
457
- color: var(--vscode-foreground);
497
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
458
498
  opacity: 0.6;
459
499
  font-size: 13px;
460
500
  }
@@ -462,12 +502,12 @@ body {
462
502
  /* Inline text formatting */
463
503
  .editor-text-bold {
464
504
  font-weight: 700;
465
- color: var(--slashmd-bold-color);
505
+ color: var(--liminis-editor-bold-color, var(--slashmd-bold-color));
466
506
  }
467
507
 
468
508
  .editor-text-italic {
469
509
  font-style: italic;
470
- color: var(--slashmd-italic-color);
510
+ color: var(--liminis-editor-italic-color, var(--slashmd-italic-color));
471
511
  }
472
512
 
473
513
  .editor-text-strikethrough {
@@ -480,7 +520,7 @@ body {
480
520
 
481
521
  .editor-text-code {
482
522
  font-family: 'Fira Code', 'Consolas', monospace;
483
- background: var(--vscode-code-bg);
523
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
484
524
  padding: 2px 6px;
485
525
  border-radius: 6px; /* Friendlier rounded corners */
486
526
  font-size: 0.9em;
@@ -488,7 +528,7 @@ body {
488
528
 
489
529
  /* Links */
490
530
  .editor-link {
491
- color: var(--vscode-link);
531
+ color: var(--liminis-editor-link, var(--vscode-link));
492
532
  text-decoration: none;
493
533
  cursor: text; /* Normal text cursor for editing */
494
534
  }
@@ -499,7 +539,7 @@ body {
499
539
 
500
540
  /* External links (http/https/mailto) - blue color to differentiate from wiki-links */
501
541
  .editor-link-external {
502
- color: var(--vscode-external-link);
542
+ color: var(--liminis-editor-external-link, var(--vscode-external-link));
503
543
  }
504
544
 
505
545
  /* When Cmd/Ctrl is held, show pointer cursor on links to indicate they can be opened */
@@ -524,11 +564,11 @@ body {
524
564
 
525
565
  /* Broken wiki links - links to non-existent files */
526
566
  .editor-link-broken {
527
- color: var(--vscode-errorForeground, #f14c4c) !important;
567
+ color: var(--liminis-editor-errorForeground, var(--vscode-errorForeground, #f14c4c)) !important;
528
568
  }
529
569
 
530
570
  .editor-link-broken:hover {
531
- color: var(--vscode-errorForeground, #f14c4c) !important;
571
+ color: var(--liminis-editor-errorForeground, var(--vscode-errorForeground, #f14c4c)) !important;
532
572
  opacity: 0.8;
533
573
  }
534
574
 
@@ -544,13 +584,13 @@ body {
544
584
 
545
585
  .editor-table-cell,
546
586
  .editor-table-cell-header {
547
- border: 1px solid var(--vscode-border);
587
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
548
588
  padding: 8px 12px;
549
589
  text-align: left;
550
590
  }
551
591
 
552
592
  .editor-table-cell-header {
553
- background: var(--vscode-code-bg);
593
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
554
594
  font-weight: 600;
555
595
  }
556
596
 
@@ -570,7 +610,7 @@ body {
570
610
  left: 0;
571
611
  right: 0;
572
612
  height: 1px;
573
- background: var(--vscode-border);
613
+ background: var(--liminis-editor-border, var(--vscode-border));
574
614
  }
575
615
 
576
616
  /* Image */
@@ -604,7 +644,7 @@ body {
604
644
  }
605
645
 
606
646
  .image-wrapper.selected img {
607
- outline: 2px solid var(--vscode-link);
647
+ outline: 2px solid var(--liminis-editor-link, var(--vscode-link));
608
648
  outline-offset: 2px;
609
649
  }
610
650
 
@@ -617,8 +657,8 @@ body {
617
657
  position: absolute;
618
658
  width: 12px;
619
659
  height: 12px;
620
- background: var(--vscode-link);
621
- border: 2px solid var(--vscode-background);
660
+ background: var(--liminis-editor-link, var(--vscode-link));
661
+ border: 2px solid var(--liminis-editor-background, var(--vscode-background));
622
662
  border-radius: 2px;
623
663
  z-index: 10;
624
664
  }
@@ -675,28 +715,28 @@ body {
675
715
  }
676
716
 
677
717
  .callout-note {
678
- background: var(--slashmd-callout-note-bg);
679
- border-left-color: var(--slashmd-callout-note-border);
718
+ background: var(--liminis-editor-callout-note-bg, var(--slashmd-callout-note-bg));
719
+ border-left-color: var(--liminis-editor-callout-note-border, var(--slashmd-callout-note-border));
680
720
  }
681
721
 
682
722
  .callout-tip {
683
- background: var(--slashmd-callout-tip-bg);
684
- border-left-color: var(--slashmd-callout-tip-border);
723
+ background: var(--liminis-editor-callout-tip-bg, var(--slashmd-callout-tip-bg));
724
+ border-left-color: var(--liminis-editor-callout-tip-border, var(--slashmd-callout-tip-border));
685
725
  }
686
726
 
687
727
  .callout-warning {
688
- background: var(--slashmd-callout-warning-bg);
689
- border-left-color: var(--slashmd-callout-warning-border);
728
+ background: var(--liminis-editor-callout-warning-bg, var(--slashmd-callout-warning-bg));
729
+ border-left-color: var(--liminis-editor-callout-warning-border, var(--slashmd-callout-warning-border));
690
730
  }
691
731
 
692
732
  .callout-important {
693
- background: var(--slashmd-callout-important-bg);
694
- border-left-color: var(--slashmd-callout-important-border);
733
+ background: var(--liminis-editor-callout-important-bg, var(--slashmd-callout-important-bg));
734
+ border-left-color: var(--liminis-editor-callout-important-border, var(--slashmd-callout-important-border));
695
735
  }
696
736
 
697
737
  .callout-caution {
698
- background: var(--slashmd-callout-caution-bg);
699
- border-left-color: var(--slashmd-callout-caution-border);
738
+ background: var(--liminis-editor-callout-caution-bg, var(--slashmd-callout-caution-bg));
739
+ border-left-color: var(--liminis-editor-callout-caution-border, var(--slashmd-callout-caution-border));
700
740
  }
701
741
 
702
742
  /* Remove bottom margin from last paragraph in callout */
@@ -707,7 +747,7 @@ body {
707
747
  /* Toggle - New ElementNode-based structure */
708
748
  .toggle-container {
709
749
  margin: 8px 0;
710
- border: 1px solid var(--vscode-border);
750
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
711
751
  border-radius: 10px; /* Friendlier rounded corners */
712
752
  overflow: hidden;
713
753
  }
@@ -717,7 +757,7 @@ body {
717
757
  align-items: center;
718
758
  padding: 10px 14px;
719
759
  padding-left: 32px;
720
- background: var(--vscode-code-bg);
760
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
721
761
  position: relative;
722
762
  min-height: 24px;
723
763
  }
@@ -730,7 +770,7 @@ body {
730
770
  top: 50%;
731
771
  transform: translateY(-50%);
732
772
  font-size: 10px;
733
- color: var(--vscode-foreground);
773
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
734
774
  opacity: 0.7;
735
775
  transition: transform 0.2s;
736
776
  cursor: pointer;
@@ -752,7 +792,7 @@ body {
752
792
  }
753
793
 
754
794
  .toggle-title:hover {
755
- background: var(--vscode-selection);
795
+ background: var(--liminis-editor-selection, var(--vscode-selection));
756
796
  }
757
797
 
758
798
  /* The paragraph inside the title */
@@ -766,7 +806,7 @@ body {
766
806
  .toggle-content-area {
767
807
  display: none;
768
808
  padding: 12px 14px;
769
- border-top: 1px solid var(--vscode-border);
809
+ border-top: 1px solid var(--liminis-editor-border, var(--vscode-border));
770
810
  }
771
811
 
772
812
  .toggle-container--open .toggle-content-area {
@@ -795,7 +835,7 @@ body {
795
835
  /* Empty content placeholder */
796
836
  .toggle-content-area:empty::before {
797
837
  content: 'Type content here...';
798
- color: var(--vscode-foreground);
838
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
799
839
  opacity: 0.4;
800
840
  }
801
841
 
@@ -805,7 +845,7 @@ body {
805
845
  }
806
846
 
807
847
  .toggle-block {
808
- border: 1px solid var(--vscode-border);
848
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
809
849
  border-radius: 6px;
810
850
  overflow: hidden;
811
851
  }
@@ -816,8 +856,8 @@ body {
816
856
  align-items: center;
817
857
  gap: 4px;
818
858
  padding: 8px;
819
- background: var(--vscode-background);
820
- border: 1px solid var(--vscode-border);
859
+ background: var(--liminis-editor-background, var(--vscode-background));
860
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
821
861
  border-radius: 10px; /* Friendlier rounded corners */
822
862
  box-shadow: 0 2px 12px rgba(0, 0, 0, 0.1); /* Softer shadow */
823
863
  z-index: 100;
@@ -833,22 +873,22 @@ body {
833
873
  background: transparent;
834
874
  border-radius: 4px;
835
875
  cursor: pointer;
836
- color: var(--vscode-foreground);
876
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
837
877
  font-size: 14px;
838
878
  }
839
879
 
840
880
  .toolbar-button:hover {
841
- background: var(--vscode-code-bg);
881
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
842
882
  }
843
883
 
844
884
  .toolbar-button.active {
845
- background: var(--vscode-selection);
885
+ background: var(--liminis-editor-selection, var(--vscode-selection));
846
886
  }
847
887
 
848
888
  .toolbar-divider {
849
889
  width: 1px;
850
890
  height: 20px;
851
- background: var(--vscode-border);
891
+ background: var(--liminis-editor-border, var(--vscode-border));
852
892
  margin: 0 4px;
853
893
  }
854
894
 
@@ -859,8 +899,8 @@ body {
859
899
  transform: translateX(-50%);
860
900
  margin-top: 4px;
861
901
  padding: 8px;
862
- background: var(--vscode-background);
863
- border: 1px solid var(--vscode-border);
902
+ background: var(--liminis-editor-background, var(--vscode-background));
903
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
864
904
  border-radius: 6px;
865
905
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
866
906
  }
@@ -869,15 +909,15 @@ body {
869
909
  width: 220px;
870
910
  padding: 6px 10px;
871
911
  font-size: 13px;
872
- color: var(--vscode-text);
873
- background: var(--vscode-input-bg, var(--vscode-code-bg));
874
- border: 1px solid var(--vscode-border);
912
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
913
+ background: var(--liminis-editor-input-bg, var(--vscode-input-bg, var(--liminis-editor-code-bg, var(--vscode-code-bg))));
914
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
875
915
  border-radius: 4px;
876
916
  outline: none;
877
917
  }
878
918
 
879
919
  .toolbar-link-input input:focus {
880
- border-color: var(--vscode-focus-border, #007acc);
920
+ border-color: var(--liminis-editor-focus-border, var(--vscode-focus-border, #007acc));
881
921
  }
882
922
 
883
923
  /* Slash Menu */
@@ -887,8 +927,8 @@ body {
887
927
  max-height: 320px;
888
928
  display: flex;
889
929
  flex-direction: column;
890
- background: var(--vscode-background);
891
- border: 1px solid var(--vscode-border);
930
+ background: var(--liminis-editor-background, var(--vscode-background));
931
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
892
932
  border-radius: 12px; /* Friendlier rounded corners */
893
933
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
894
934
  z-index: 200;
@@ -899,9 +939,9 @@ body {
899
939
  font-size: 11px;
900
940
  font-weight: 600;
901
941
  text-transform: uppercase;
902
- color: var(--vscode-foreground);
942
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
903
943
  opacity: 0.6;
904
- border-bottom: 1px solid var(--vscode-border);
944
+ border-bottom: 1px solid var(--liminis-editor-border, var(--vscode-border));
905
945
  flex-shrink: 0;
906
946
  }
907
947
 
@@ -923,7 +963,7 @@ body {
923
963
 
924
964
  .slash-menu-item:hover,
925
965
  .slash-menu-item.selected {
926
- background: var(--vscode-selection);
966
+ background: var(--liminis-editor-selection, var(--vscode-selection));
927
967
  }
928
968
 
929
969
  .slash-menu-icon {
@@ -932,7 +972,7 @@ body {
932
972
  justify-content: center;
933
973
  width: 32px;
934
974
  height: 32px;
935
- background: var(--vscode-code-bg);
975
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
936
976
  border-radius: 4px;
937
977
  font-size: 14px;
938
978
  }
@@ -954,7 +994,7 @@ body {
954
994
  .slash-menu-empty {
955
995
  padding: 16px;
956
996
  text-align: center;
957
- color: var(--vscode-foreground);
997
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
958
998
  opacity: 0.6;
959
999
  }
960
1000
 
@@ -992,13 +1032,13 @@ body {
992
1032
  height: 20px;
993
1033
  font-size: 14px;
994
1034
  letter-spacing: -3px;
995
- color: var(--vscode-foreground);
1035
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
996
1036
  user-select: none;
997
1037
  border-radius: 4px;
998
1038
  }
999
1039
 
1000
1040
  .drag-handle:hover .drag-handle-icon {
1001
- background: var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.1));
1041
+ background: var(--liminis-editor-toolbar-hoverBackground, var(--vscode-toolbar-hoverBackground, rgba(128, 128, 128, 0.1)));
1002
1042
  }
1003
1043
 
1004
1044
  /* Block Delete Button */
@@ -1030,47 +1070,47 @@ body {
1030
1070
  width: 20px;
1031
1071
  height: 20px;
1032
1072
  font-size: 16px;
1033
- color: var(--vscode-foreground);
1073
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1034
1074
  user-select: none;
1035
1075
  border-radius: 4px;
1036
1076
  }
1037
1077
 
1038
1078
  .block-delete-button:hover .block-delete-icon {
1039
- background: var(--vscode-inputValidation-errorBackground, rgba(255, 0, 0, 0.15));
1040
- color: var(--vscode-errorForeground, #f44336);
1079
+ background: var(--liminis-editor-inputValidation-errorBackground, var(--vscode-inputValidation-errorBackground, rgba(255, 0, 0, 0.15)));
1080
+ color: var(--liminis-editor-errorForeground, var(--vscode-errorForeground, #f44336));
1041
1081
  }
1042
1082
 
1043
1083
  /* Code syntax highlighting */
1044
1084
  .editor-tokenComment {
1045
- color: var(--slashmd-token-comment);
1085
+ color: var(--liminis-editor-token-comment, var(--slashmd-token-comment));
1046
1086
  }
1047
1087
 
1048
1088
  .editor-tokenPunctuation {
1049
- color: var(--slashmd-token-punctuation);
1089
+ color: var(--liminis-editor-token-punctuation, var(--slashmd-token-punctuation));
1050
1090
  }
1051
1091
 
1052
1092
  .editor-tokenProperty {
1053
- color: var(--slashmd-token-property);
1093
+ color: var(--liminis-editor-token-property, var(--slashmd-token-property));
1054
1094
  }
1055
1095
 
1056
1096
  .editor-tokenSelector {
1057
- color: var(--slashmd-token-selector);
1097
+ color: var(--liminis-editor-token-selector, var(--slashmd-token-selector));
1058
1098
  }
1059
1099
 
1060
1100
  .editor-tokenOperator {
1061
- color: var(--slashmd-token-operator);
1101
+ color: var(--liminis-editor-token-operator, var(--slashmd-token-operator));
1062
1102
  }
1063
1103
 
1064
1104
  .editor-tokenAttr {
1065
- color: var(--slashmd-token-keyword);
1105
+ color: var(--liminis-editor-token-keyword, var(--slashmd-token-keyword));
1066
1106
  }
1067
1107
 
1068
1108
  .editor-tokenVariable {
1069
- color: var(--slashmd-token-variable);
1109
+ color: var(--liminis-editor-token-variable, var(--slashmd-token-variable));
1070
1110
  }
1071
1111
 
1072
1112
  .editor-tokenFunction {
1073
- color: var(--slashmd-token-function);
1113
+ color: var(--liminis-editor-token-function, var(--slashmd-token-function));
1074
1114
  }
1075
1115
 
1076
1116
  /* Scrollbar - auto-hides on macOS, styled when visible */
@@ -1108,7 +1148,7 @@ body {
1108
1148
 
1109
1149
  /* Focus styles for accessibility */
1110
1150
  *:focus-visible {
1111
- outline: 2px solid var(--vscode-link);
1151
+ outline: 2px solid var(--liminis-editor-link, var(--vscode-link));
1112
1152
  outline-offset: 2px;
1113
1153
  }
1114
1154
 
@@ -1120,14 +1160,14 @@ body {
1120
1160
 
1121
1161
  /* Selection */
1122
1162
  ::selection {
1123
- background: var(--vscode-selection);
1163
+ background: var(--liminis-editor-selection, var(--vscode-selection));
1124
1164
  }
1125
1165
 
1126
1166
  /* Table Actions Menu */
1127
1167
  .table-actions-menu {
1128
1168
  min-width: 200px;
1129
- background: var(--vscode-background);
1130
- border: 1px solid var(--vscode-border);
1169
+ background: var(--liminis-editor-background, var(--vscode-background));
1170
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1131
1171
  border-radius: 12px; /* Friendlier rounded corners */
1132
1172
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.15); /* Softer shadow */
1133
1173
  z-index: 300;
@@ -1143,7 +1183,7 @@ body {
1143
1183
  font-size: 11px;
1144
1184
  font-weight: 600;
1145
1185
  text-transform: uppercase;
1146
- color: var(--vscode-foreground);
1186
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1147
1187
  opacity: 0.6;
1148
1188
  }
1149
1189
 
@@ -1155,14 +1195,14 @@ body {
1155
1195
  padding: 8px 12px;
1156
1196
  border: none;
1157
1197
  background: transparent;
1158
- color: var(--vscode-foreground);
1198
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1159
1199
  font-size: 13px;
1160
1200
  text-align: left;
1161
1201
  cursor: pointer;
1162
1202
  }
1163
1203
 
1164
1204
  .table-actions-button:hover {
1165
- background: var(--vscode-selection);
1205
+ background: var(--liminis-editor-selection, var(--vscode-selection));
1166
1206
  }
1167
1207
 
1168
1208
  .table-actions-button.table-actions-danger {
@@ -1183,7 +1223,7 @@ body {
1183
1223
 
1184
1224
  .table-actions-divider {
1185
1225
  height: 1px;
1186
- background: var(--vscode-border);
1226
+ background: var(--liminis-editor-border, var(--vscode-border));
1187
1227
  margin: 4px 0;
1188
1228
  }
1189
1229
 
@@ -1192,7 +1232,7 @@ body {
1192
1232
  .editor-table th:focus,
1193
1233
  .editor-table-cell:focus,
1194
1234
  .editor-table-cell-header:focus {
1195
- outline: 2px solid var(--vscode-link);
1235
+ outline: 2px solid var(--liminis-editor-link, var(--vscode-link));
1196
1236
  outline-offset: -2px;
1197
1237
  }
1198
1238
 
@@ -1232,8 +1272,8 @@ body {
1232
1272
  width: 480px;
1233
1273
  max-width: 90vw;
1234
1274
  max-height: 90vh;
1235
- background: var(--vscode-background);
1236
- border: 1px solid var(--vscode-border);
1275
+ background: var(--liminis-editor-background, var(--vscode-background));
1276
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1237
1277
  border-radius: 16px; /* Friendlier rounded corners */
1238
1278
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.2); /* Softer shadow */
1239
1279
  display: flex;
@@ -1246,7 +1286,7 @@ body {
1246
1286
  align-items: center;
1247
1287
  justify-content: space-between;
1248
1288
  padding: 16px;
1249
- border-bottom: 1px solid var(--vscode-border);
1289
+ border-bottom: 1px solid var(--liminis-editor-border, var(--vscode-border));
1250
1290
  }
1251
1291
 
1252
1292
  .image-modal-header h3 {
@@ -1266,18 +1306,18 @@ body {
1266
1306
  border-radius: 4px;
1267
1307
  cursor: pointer;
1268
1308
  font-size: 20px;
1269
- color: var(--vscode-foreground);
1309
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1270
1310
  opacity: 0.7;
1271
1311
  }
1272
1312
 
1273
1313
  .image-modal-close:hover {
1274
1314
  opacity: 1;
1275
- background: var(--vscode-code-bg);
1315
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1276
1316
  }
1277
1317
 
1278
1318
  .image-modal-tabs {
1279
1319
  display: flex;
1280
- border-bottom: 1px solid var(--vscode-border);
1320
+ border-bottom: 1px solid var(--liminis-editor-border, var(--vscode-border));
1281
1321
  }
1282
1322
 
1283
1323
  .image-modal-tab {
@@ -1285,7 +1325,7 @@ body {
1285
1325
  padding: 12px 16px;
1286
1326
  border: none;
1287
1327
  background: transparent;
1288
- color: var(--vscode-foreground);
1328
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1289
1329
  font-size: 14px;
1290
1330
  cursor: pointer;
1291
1331
  opacity: 0.7;
@@ -1294,12 +1334,12 @@ body {
1294
1334
 
1295
1335
  .image-modal-tab:hover {
1296
1336
  opacity: 1;
1297
- background: var(--vscode-code-bg);
1337
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1298
1338
  }
1299
1339
 
1300
1340
  .image-modal-tab.active {
1301
1341
  opacity: 1;
1302
- border-bottom: 2px solid var(--vscode-link);
1342
+ border-bottom: 2px solid var(--liminis-editor-link, var(--vscode-link));
1303
1343
  margin-bottom: -1px;
1304
1344
  }
1305
1345
 
@@ -1314,25 +1354,25 @@ body {
1314
1354
  align-items: center;
1315
1355
  justify-content: center;
1316
1356
  min-height: 160px;
1317
- border: 2px dashed var(--vscode-border);
1357
+ border: 2px dashed var(--liminis-editor-border, var(--vscode-border));
1318
1358
  border-radius: 8px;
1319
1359
  cursor: pointer;
1320
1360
  transition: border-color 0.15s, background 0.15s;
1321
1361
  }
1322
1362
 
1323
1363
  .image-modal-dropzone:hover {
1324
- border-color: var(--vscode-link);
1364
+ border-color: var(--liminis-editor-link, var(--vscode-link));
1325
1365
  background: rgba(0, 102, 204, 0.05);
1326
1366
  }
1327
1367
 
1328
1368
  .image-modal-dropzone.drag-over {
1329
- border-color: var(--vscode-link);
1369
+ border-color: var(--liminis-editor-link, var(--vscode-link));
1330
1370
  background: rgba(0, 102, 204, 0.1);
1331
1371
  }
1332
1372
 
1333
1373
  .image-modal-dropzone.has-preview {
1334
1374
  border-style: solid;
1335
- border-color: var(--vscode-border);
1375
+ border-color: var(--liminis-editor-border, var(--vscode-border));
1336
1376
  padding: 8px;
1337
1377
  }
1338
1378
 
@@ -1341,7 +1381,7 @@ body {
1341
1381
  flex-direction: column;
1342
1382
  align-items: center;
1343
1383
  gap: 8px;
1344
- color: var(--vscode-foreground);
1384
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1345
1385
  opacity: 0.7;
1346
1386
  }
1347
1387
 
@@ -1366,9 +1406,9 @@ body {
1366
1406
  display: flex;
1367
1407
  justify-content: center;
1368
1408
  padding: 8px;
1369
- border: 1px solid var(--vscode-border);
1409
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1370
1410
  border-radius: 8px;
1371
- background: var(--vscode-code-bg);
1411
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1372
1412
  }
1373
1413
 
1374
1414
  .image-modal-alt-section {
@@ -1379,7 +1419,7 @@ body {
1379
1419
  display: block;
1380
1420
  margin-bottom: 6px;
1381
1421
  font-size: 13px;
1382
- color: var(--vscode-foreground);
1422
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1383
1423
  opacity: 0.8;
1384
1424
  }
1385
1425
 
@@ -1387,20 +1427,20 @@ body {
1387
1427
  width: 100%;
1388
1428
  padding: 10px 12px;
1389
1429
  font-size: 14px;
1390
- font-family: var(--vscode-font-family);
1391
- color: var(--vscode-foreground);
1392
- background: var(--vscode-code-bg);
1393
- border: 1px solid var(--vscode-border);
1430
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
1431
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1432
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1433
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1394
1434
  border-radius: 6px;
1395
1435
  outline: none;
1396
1436
  }
1397
1437
 
1398
1438
  .image-modal-input:focus {
1399
- border-color: var(--vscode-link);
1439
+ border-color: var(--liminis-editor-link, var(--vscode-link));
1400
1440
  }
1401
1441
 
1402
1442
  .image-modal-input::placeholder {
1403
- color: var(--vscode-foreground);
1443
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1404
1444
  opacity: 0.5;
1405
1445
  }
1406
1446
 
@@ -1419,13 +1459,13 @@ body {
1419
1459
  justify-content: flex-end;
1420
1460
  gap: 8px;
1421
1461
  padding: 16px;
1422
- border-top: 1px solid var(--vscode-border);
1462
+ border-top: 1px solid var(--liminis-editor-border, var(--vscode-border));
1423
1463
  }
1424
1464
 
1425
1465
  .image-modal-button {
1426
1466
  padding: 8px 16px;
1427
1467
  font-size: 14px;
1428
- font-family: var(--vscode-font-family);
1468
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
1429
1469
  border: none;
1430
1470
  border-radius: 6px;
1431
1471
  cursor: pointer;
@@ -1433,17 +1473,17 @@ body {
1433
1473
  }
1434
1474
 
1435
1475
  .image-modal-button.secondary {
1436
- color: var(--vscode-foreground);
1437
- background: var(--vscode-code-bg);
1476
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1477
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1438
1478
  }
1439
1479
 
1440
1480
  .image-modal-button.secondary:hover {
1441
- background: var(--vscode-selection);
1481
+ background: var(--liminis-editor-selection, var(--vscode-selection));
1442
1482
  }
1443
1483
 
1444
1484
  .image-modal-button.primary {
1445
1485
  color: white;
1446
- background: var(--vscode-link);
1486
+ background: var(--liminis-editor-link, var(--vscode-link));
1447
1487
  }
1448
1488
 
1449
1489
  .image-modal-button.primary:hover {
@@ -1459,8 +1499,8 @@ body {
1459
1499
  align-items: center;
1460
1500
  gap: 8px;
1461
1501
  padding: 8px 12px;
1462
- background: var(--vscode-background);
1463
- border: 1px solid var(--vscode-border);
1502
+ background: var(--liminis-editor-background, var(--vscode-background));
1503
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1464
1504
  border-radius: 12px; /* Friendlier rounded corners */
1465
1505
  box-shadow: 0 4px 20px rgba(0, 0, 0, 0.12); /* Softer shadow */
1466
1506
  z-index: 500;
@@ -1470,8 +1510,8 @@ body {
1470
1510
  display: flex;
1471
1511
  align-items: center;
1472
1512
  gap: 8px;
1473
- background: var(--vscode-code-bg);
1474
- border: 1px solid var(--vscode-border);
1513
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1514
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1475
1515
  border-radius: 6px;
1476
1516
  padding: 4px 8px;
1477
1517
  }
@@ -1487,7 +1527,7 @@ body {
1487
1527
 
1488
1528
  .search-icon {
1489
1529
  flex-shrink: 0;
1490
- color: var(--vscode-foreground);
1530
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1491
1531
  opacity: 0.5;
1492
1532
  }
1493
1533
 
@@ -1495,9 +1535,9 @@ body {
1495
1535
  width: 200px;
1496
1536
  border: none;
1497
1537
  background: transparent;
1498
- color: var(--vscode-foreground);
1538
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1499
1539
  font-size: 14px;
1500
- font-family: var(--vscode-font-family);
1540
+ font-family: var(--liminis-editor-font-family, var(--vscode-font-family));
1501
1541
  outline: none !important;
1502
1542
  }
1503
1543
 
@@ -1508,14 +1548,14 @@ body {
1508
1548
  }
1509
1549
 
1510
1550
  .search-input::placeholder {
1511
- color: var(--vscode-foreground);
1551
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1512
1552
  opacity: 0.5;
1513
1553
  }
1514
1554
 
1515
1555
  .search-count {
1516
1556
  flex-shrink: 0;
1517
1557
  font-size: 12px;
1518
- color: var(--vscode-foreground);
1558
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1519
1559
  opacity: 0.7;
1520
1560
  white-space: nowrap;
1521
1561
  }
@@ -1537,13 +1577,13 @@ body {
1537
1577
  background: transparent;
1538
1578
  border-radius: 4px;
1539
1579
  cursor: pointer;
1540
- color: var(--vscode-foreground);
1580
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1541
1581
  transition: background 0.15s;
1542
1582
  }
1543
1583
 
1544
1584
  .search-nav-button:hover:not(:disabled),
1545
1585
  .search-close-button:hover {
1546
- background: var(--vscode-code-bg);
1586
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1547
1587
  }
1548
1588
 
1549
1589
  .search-nav-button:disabled {
@@ -1552,7 +1592,7 @@ body {
1552
1592
  }
1553
1593
 
1554
1594
  .search-close-button:hover {
1555
- color: var(--vscode-errorForeground, #f44336);
1595
+ color: var(--liminis-editor-errorForeground, var(--vscode-errorForeground, #f44336));
1556
1596
  }
1557
1597
 
1558
1598
  /* Search Highlight Layer */
@@ -1620,7 +1660,7 @@ body {
1620
1660
 
1621
1661
  /* Equation Editor Styles */
1622
1662
  .equation-editor-background {
1623
- background-color: var(--vscode-code-bg);
1663
+ background-color: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1624
1664
  padding: 4px 8px;
1625
1665
  border-radius: 4px;
1626
1666
  display: inline-flex;
@@ -1629,7 +1669,7 @@ body {
1629
1669
  }
1630
1670
 
1631
1671
  .equation-dollar-sign {
1632
- color: var(--vscode-foreground);
1672
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1633
1673
  opacity: 0.5;
1634
1674
  font-family: monospace;
1635
1675
  white-space: pre;
@@ -1693,13 +1733,13 @@ body {
1693
1733
  .mermaid-loading {
1694
1734
  padding: 2rem;
1695
1735
  text-align: center;
1696
- color: var(--vscode-foreground);
1736
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1697
1737
  opacity: 0.7;
1698
1738
  }
1699
1739
 
1700
1740
  /* Mermaid Editor Styles */
1701
1741
  .mermaid-editor-container {
1702
- background: var(--vscode-code-bg);
1742
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1703
1743
  border-radius: 8px;
1704
1744
  overflow: hidden;
1705
1745
  margin: 1em 0;
@@ -1717,14 +1757,14 @@ body {
1717
1757
  .mermaid-editor-label {
1718
1758
  font-family: monospace;
1719
1759
  font-size: 12px;
1720
- color: var(--vscode-foreground);
1760
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1721
1761
  opacity: 0.7;
1722
1762
  }
1723
1763
 
1724
1764
  .mermaid-editor-close {
1725
1765
  background: transparent;
1726
1766
  border: none;
1727
- color: var(--vscode-foreground);
1767
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1728
1768
  cursor: pointer;
1729
1769
  padding: 4px 8px;
1730
1770
  border-radius: 4px;
@@ -1744,7 +1784,7 @@ body {
1744
1784
  padding: 12px;
1745
1785
  border: none;
1746
1786
  background: transparent;
1747
- color: var(--vscode-foreground);
1787
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1748
1788
  font-family: monospace;
1749
1789
  font-size: 14px;
1750
1790
  line-height: 1.5;
@@ -1753,7 +1793,7 @@ body {
1753
1793
  }
1754
1794
 
1755
1795
  .mermaid-editor-textarea::placeholder {
1756
- color: var(--vscode-foreground);
1796
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1757
1797
  opacity: 0.5;
1758
1798
  }
1759
1799
 
@@ -1780,13 +1820,13 @@ body {
1780
1820
  .c4-loading {
1781
1821
  padding: 2rem;
1782
1822
  text-align: center;
1783
- color: var(--vscode-foreground);
1823
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1784
1824
  opacity: 0.7;
1785
1825
  }
1786
1826
 
1787
1827
  /* C4 Editor Styles */
1788
1828
  .c4-editor-container {
1789
- background: var(--vscode-code-bg);
1829
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1790
1830
  border-radius: 8px;
1791
1831
  overflow: hidden;
1792
1832
  margin: 1em 0;
@@ -1804,14 +1844,14 @@ body {
1804
1844
  .c4-editor-label {
1805
1845
  font-family: monospace;
1806
1846
  font-size: 12px;
1807
- color: var(--vscode-foreground);
1847
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1808
1848
  opacity: 0.7;
1809
1849
  }
1810
1850
 
1811
1851
  .c4-editor-close {
1812
1852
  background: transparent;
1813
1853
  border: none;
1814
- color: var(--vscode-foreground);
1854
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1815
1855
  cursor: pointer;
1816
1856
  padding: 4px 8px;
1817
1857
  border-radius: 4px;
@@ -1831,7 +1871,7 @@ body {
1831
1871
  padding: 12px;
1832
1872
  border: none;
1833
1873
  background: transparent;
1834
- color: var(--vscode-foreground);
1874
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1835
1875
  font-family: monospace;
1836
1876
  font-size: 14px;
1837
1877
  line-height: 1.5;
@@ -1840,7 +1880,7 @@ body {
1840
1880
  }
1841
1881
 
1842
1882
  .c4-editor-textarea::placeholder {
1843
- color: var(--vscode-foreground);
1883
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1844
1884
  opacity: 0.5;
1845
1885
  }
1846
1886
 
@@ -1863,10 +1903,10 @@ body {
1863
1903
  width: 32px;
1864
1904
  height: 32px;
1865
1905
  padding: 0;
1866
- border: 1px solid var(--vscode-border);
1906
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1867
1907
  border-radius: 6px;
1868
- background: var(--vscode-background);
1869
- color: var(--vscode-foreground);
1908
+ background: var(--liminis-editor-background, var(--vscode-background));
1909
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1870
1910
  cursor: pointer;
1871
1911
  opacity: 0.7;
1872
1912
  transition: opacity 0.15s, background-color 0.15s, border-color 0.15s;
@@ -1874,13 +1914,13 @@ body {
1874
1914
 
1875
1915
  .frontmatter-toggle-button:hover {
1876
1916
  opacity: 1;
1877
- background: var(--vscode-code-bg);
1917
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1878
1918
  }
1879
1919
 
1880
1920
  .frontmatter-toggle-button.frontmatter-toggle-active {
1881
1921
  opacity: 1;
1882
- background: var(--vscode-link);
1883
- border-color: var(--vscode-link);
1922
+ background: var(--liminis-editor-link, var(--vscode-link));
1923
+ border-color: var(--liminis-editor-link, var(--vscode-link));
1884
1924
  color: #ffffff;
1885
1925
  }
1886
1926
 
@@ -1891,8 +1931,8 @@ body {
1891
1931
  left: 0;
1892
1932
  right: 0;
1893
1933
  z-index: 5;
1894
- background: var(--vscode-background);
1895
- border-bottom: 1px solid var(--vscode-border);
1934
+ background: var(--liminis-editor-background, var(--vscode-background));
1935
+ border-bottom: 1px solid var(--liminis-editor-border, var(--vscode-border));
1896
1936
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
1897
1937
  transform: translateY(-100%);
1898
1938
  opacity: 0;
@@ -1915,14 +1955,14 @@ body {
1915
1955
  align-items: center;
1916
1956
  justify-content: space-between;
1917
1957
  padding: 8px 12px;
1918
- border-bottom: 1px solid var(--vscode-border);
1919
- background: var(--vscode-code-bg);
1958
+ border-bottom: 1px solid var(--liminis-editor-border, var(--vscode-border));
1959
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
1920
1960
  }
1921
1961
 
1922
1962
  .frontmatter-tray-title {
1923
1963
  font-size: 12px;
1924
1964
  font-weight: 600;
1925
- color: var(--vscode-foreground);
1965
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1926
1966
  text-transform: uppercase;
1927
1967
  letter-spacing: 0.5px;
1928
1968
  }
@@ -1937,7 +1977,7 @@ body {
1937
1977
  border: none;
1938
1978
  border-radius: 4px;
1939
1979
  background: transparent;
1940
- color: var(--vscode-foreground);
1980
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1941
1981
  cursor: pointer;
1942
1982
  opacity: 0.7;
1943
1983
  transition: opacity 0.15s, background-color 0.15s;
@@ -1945,7 +1985,7 @@ body {
1945
1985
 
1946
1986
  .frontmatter-tray-close:hover {
1947
1987
  opacity: 1;
1948
- background: var(--vscode-border);
1988
+ background: var(--liminis-editor-border, var(--vscode-border));
1949
1989
  }
1950
1990
 
1951
1991
  .frontmatter-tray-content {
@@ -1957,10 +1997,10 @@ body {
1957
1997
  min-height: 80px;
1958
1998
  max-height: 300px;
1959
1999
  padding: 12px;
1960
- border: 1px solid var(--vscode-border);
2000
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1961
2001
  border-radius: 4px;
1962
- background: var(--vscode-code-bg);
1963
- color: var(--vscode-foreground);
2002
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2003
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1964
2004
  font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
1965
2005
  font-size: 13px;
1966
2006
  line-height: 1.5;
@@ -1970,11 +2010,11 @@ body {
1970
2010
 
1971
2011
  .frontmatter-tray-textarea:focus {
1972
2012
  outline: none;
1973
- border-color: var(--vscode-link);
2013
+ border-color: var(--liminis-editor-link, var(--vscode-link));
1974
2014
  }
1975
2015
 
1976
2016
  .frontmatter-tray-textarea::placeholder {
1977
- color: var(--vscode-foreground);
2017
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1978
2018
  opacity: 0.5;
1979
2019
  }
1980
2020
 
@@ -1987,10 +2027,10 @@ body {
1987
2027
 
1988
2028
  .frontmatter-tray-toggle-raw {
1989
2029
  padding: 4px 8px;
1990
- border: 1px solid var(--vscode-border);
2030
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
1991
2031
  border-radius: 4px;
1992
2032
  background: transparent;
1993
- color: var(--vscode-foreground);
2033
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
1994
2034
  font-size: 11px;
1995
2035
  font-weight: 500;
1996
2036
  cursor: pointer;
@@ -1998,8 +2038,8 @@ body {
1998
2038
  }
1999
2039
 
2000
2040
  .frontmatter-tray-toggle-raw:hover {
2001
- background: var(--vscode-border);
2002
- border-color: var(--vscode-foreground-muted, var(--vscode-border));
2041
+ background: var(--liminis-editor-border, var(--vscode-border));
2042
+ border-color: var(--liminis-editor-foreground-muted, var(--vscode-foreground-muted, var(--liminis-editor-border, var(--vscode-border))));
2003
2043
  }
2004
2044
 
2005
2045
  /* MDC Form Styles */
@@ -2021,7 +2061,7 @@ body {
2021
2061
  gap: 6px;
2022
2062
  font-size: 12px;
2023
2063
  font-weight: 600;
2024
- color: var(--vscode-foreground);
2064
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2025
2065
  text-transform: uppercase;
2026
2066
  letter-spacing: 0.3px;
2027
2067
  }
@@ -2040,42 +2080,42 @@ body {
2040
2080
 
2041
2081
  .mdc-form-input {
2042
2082
  padding: 8px 12px;
2043
- border: 1px solid var(--vscode-border);
2083
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
2044
2084
  border-radius: 4px;
2045
- background: var(--vscode-code-bg);
2046
- color: var(--vscode-foreground);
2085
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2086
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2047
2087
  font-size: 14px;
2048
2088
  line-height: 1.4;
2049
2089
  }
2050
2090
 
2051
2091
  .mdc-form-input:focus {
2052
2092
  outline: none;
2053
- border-color: var(--vscode-link);
2093
+ border-color: var(--liminis-editor-link, var(--vscode-link));
2054
2094
  }
2055
2095
 
2056
2096
  .mdc-form-input::placeholder {
2057
- color: var(--vscode-foreground);
2097
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2058
2098
  opacity: 0.5;
2059
2099
  }
2060
2100
 
2061
2101
  .mdc-form-select {
2062
2102
  padding: 8px 12px;
2063
- border: 1px solid var(--vscode-border);
2103
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
2064
2104
  border-radius: 4px;
2065
- background: var(--vscode-code-bg);
2066
- color: var(--vscode-foreground);
2105
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2106
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2067
2107
  font-size: 14px;
2068
2108
  cursor: pointer;
2069
2109
  }
2070
2110
 
2071
2111
  .mdc-form-select:focus {
2072
2112
  outline: none;
2073
- border-color: var(--vscode-link);
2113
+ border-color: var(--liminis-editor-link, var(--vscode-link));
2074
2114
  }
2075
2115
 
2076
2116
  .mdc-form-hint {
2077
2117
  font-size: 11px;
2078
- color: var(--vscode-foreground);
2118
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2079
2119
  opacity: 0.7;
2080
2120
  line-height: 1.4;
2081
2121
  }
@@ -2085,7 +2125,7 @@ body {
2085
2125
  background: rgba(6, 150, 215, 0.08);
2086
2126
  border-radius: 4px;
2087
2127
  opacity: 1;
2088
- color: var(--vscode-link);
2128
+ color: var(--liminis-editor-link, var(--vscode-link));
2089
2129
  }
2090
2130
 
2091
2131
  .dark .mdc-form-hint-info {
@@ -2118,15 +2158,15 @@ body {
2118
2158
  align-items: center;
2119
2159
  justify-content: space-between;
2120
2160
  padding: 6px 10px;
2121
- background: var(--vscode-code-bg);
2122
- border: 1px solid var(--vscode-border);
2161
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2162
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
2123
2163
  border-radius: 4px;
2124
2164
  }
2125
2165
 
2126
2166
  .mdc-glob-pattern {
2127
2167
  font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
2128
2168
  font-size: 13px;
2129
- color: var(--vscode-link);
2169
+ color: var(--liminis-editor-link, var(--vscode-link));
2130
2170
  }
2131
2171
 
2132
2172
  .mdc-glob-remove {
@@ -2139,7 +2179,7 @@ body {
2139
2179
  border: none;
2140
2180
  border-radius: 4px;
2141
2181
  background: transparent;
2142
- color: var(--vscode-foreground);
2182
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2143
2183
  cursor: pointer;
2144
2184
  opacity: 0.5;
2145
2185
  transition: opacity 0.15s, background-color 0.15s;
@@ -2162,10 +2202,10 @@ body {
2162
2202
 
2163
2203
  .mdc-glob-add-btn {
2164
2204
  padding: 8px 16px;
2165
- border: 1px solid var(--vscode-link);
2205
+ border: 1px solid var(--liminis-editor-link, var(--vscode-link));
2166
2206
  border-radius: 4px;
2167
2207
  background: transparent;
2168
- color: var(--vscode-link);
2208
+ color: var(--liminis-editor-link, var(--vscode-link));
2169
2209
  font-size: 13px;
2170
2210
  font-weight: 500;
2171
2211
  cursor: pointer;
@@ -2173,7 +2213,7 @@ body {
2173
2213
  }
2174
2214
 
2175
2215
  .mdc-glob-add-btn:hover:not(:disabled) {
2176
- background: var(--vscode-link);
2216
+ background: var(--liminis-editor-link, var(--vscode-link));
2177
2217
  color: #ffffff;
2178
2218
  }
2179
2219
 
@@ -2186,13 +2226,13 @@ body {
2186
2226
  .mdc-other-yaml {
2187
2227
  margin: 0;
2188
2228
  padding: 10px 12px;
2189
- background: var(--vscode-code-bg);
2190
- border: 1px solid var(--vscode-border);
2229
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2230
+ border: 1px solid var(--liminis-editor-border, var(--vscode-border));
2191
2231
  border-radius: 4px;
2192
2232
  font-family: 'Menlo', 'Monaco', 'Courier New', monospace;
2193
2233
  font-size: 12px;
2194
2234
  line-height: 1.5;
2195
- color: var(--vscode-foreground);
2235
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2196
2236
  opacity: 0.8;
2197
2237
  white-space: pre-wrap;
2198
2238
  overflow-x: auto;
@@ -2245,7 +2285,7 @@ body {
2245
2285
  focusable, so they are reachable by Tab. */
2246
2286
  .annotation-mark-highlight:focus-visible,
2247
2287
  .annotation-mark-squiggle:focus-visible {
2248
- outline: 2px solid var(--vscode-link);
2288
+ outline: 2px solid var(--liminis-editor-link, var(--vscode-link));
2249
2289
  outline-offset: 1px;
2250
2290
  }
2251
2291
 
@@ -2304,6 +2344,87 @@ body {
2304
2344
  }
2305
2345
  }
2306
2346
 
2347
+ /* ===== Document Outline Styles ===== */
2348
+
2349
+ .editor-outline {
2350
+ font-size: 13px;
2351
+ line-height: 1.4;
2352
+ }
2353
+
2354
+ .editor-outline-list {
2355
+ list-style: none;
2356
+ margin: 0;
2357
+ padding: 0;
2358
+ }
2359
+
2360
+ .editor-outline-item {
2361
+ margin: 0;
2362
+ }
2363
+
2364
+ .editor-outline-item-button {
2365
+ display: flex;
2366
+ align-items: center;
2367
+ gap: 8px;
2368
+ width: 100%;
2369
+ padding: 4px 8px;
2370
+ border: none;
2371
+ background: transparent;
2372
+ color: var(--liminis-editor-foreground, var(--vscode-foreground));
2373
+ opacity: 0.7;
2374
+ text-align: left;
2375
+ cursor: pointer;
2376
+ transition: opacity 0.15s, background-color 0.15s, color 0.15s;
2377
+ }
2378
+
2379
+ .editor-outline-item-button:hover {
2380
+ opacity: 1;
2381
+ background: var(--liminis-editor-code-bg, var(--vscode-code-bg));
2382
+ }
2383
+
2384
+ .editor-outline-item-active .editor-outline-item-button {
2385
+ opacity: 1;
2386
+ color: var(--liminis-editor-link, var(--vscode-link));
2387
+ }
2388
+
2389
+ .editor-outline-indicator {
2390
+ flex: 0 0 auto;
2391
+ width: 2px;
2392
+ align-self: stretch;
2393
+ border-radius: 1px;
2394
+ background: transparent;
2395
+ }
2396
+
2397
+ .editor-outline-item-active .editor-outline-indicator {
2398
+ background: var(--liminis-editor-link, var(--vscode-link));
2399
+ }
2400
+
2401
+ .editor-outline-item-text {
2402
+ overflow: hidden;
2403
+ text-overflow: ellipsis;
2404
+ white-space: nowrap;
2405
+ }
2406
+
2407
+ /* Indent by heading level (H1-H5; the editor theme has no H6 class to indent). */
2408
+ .editor-outline-item[data-outline-level="1"] .editor-outline-item-button {
2409
+ padding-left: 8px;
2410
+ }
2411
+
2412
+ .editor-outline-item[data-outline-level="2"] .editor-outline-item-button {
2413
+ padding-left: 20px;
2414
+ }
2415
+
2416
+ .editor-outline-item[data-outline-level="3"] .editor-outline-item-button {
2417
+ padding-left: 32px;
2418
+ }
2419
+
2420
+ .editor-outline-item[data-outline-level="4"] .editor-outline-item-button {
2421
+ padding-left: 44px;
2422
+ }
2423
+
2424
+ .editor-outline-item[data-outline-level="5"] .editor-outline-item-button {
2425
+ padding-left: 56px;
2426
+ }
2427
+
2307
2428
  /* ============================================================
2308
2429
  Print Styles for Editor Content
2309
2430
  ============================================================