mrmd-editor 0.6.0 → 0.7.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -9,7 +9,7 @@
9
9
  * 1. Explicit config (config.appearance.widgetTheme)
10
10
  * 2. CodeMirror theme class (.cm-theme-dark)
11
11
  * 3. System preference (prefers-color-scheme)
12
- * 4. Default: 'midnight' (dark)
12
+ * 4. Default: 'wizard-study-dark' (dark)
13
13
  *
14
14
  * ## Watching for Changes
15
15
  *
@@ -20,7 +20,7 @@
20
20
  * @module widgets/theme-utils
21
21
  */
22
22
 
23
- import { getTheme, midnightTheme, daylightTheme } from './theme.js';
23
+ import { getTheme } from './theme.js';
24
24
 
25
25
  // #region DETECTION
26
26
 
@@ -31,12 +31,12 @@ import { getTheme, midnightTheme, daylightTheme } from './theme.js';
31
31
  * 1. Explicit theme name passed as parameter
32
32
  * 2. CodeMirror theme class on the editor element
33
33
  * 3. System color scheme preference
34
- * 4. Default: 'midnight'
34
+ * 4. Default: 'wizard-study-dark'
35
35
  *
36
36
  * @param {Object} [options]
37
37
  * @param {string} [options.themeName] - Explicit theme name (highest priority)
38
38
  * @param {HTMLElement} [options.editorElement] - Editor DOM element to check for .cm-theme-dark
39
- * @returns {string} Theme name ('midnight', 'daylight', etc.)
39
+ * @returns {string} Theme name ('wizard-study-dark', 'wizard-study-light', etc.)
40
40
  *
41
41
  * @example
42
42
  * // Detect based on CodeMirror and system preference
@@ -57,25 +57,25 @@ export function detectTheme({ themeName, editorElement } = {}) {
57
57
  // CodeMirror adds this class when using oneDark or similar dark themes
58
58
  const hasDarkTheme = editorElement.closest('.cm-theme-dark') !== null;
59
59
  if (hasDarkTheme) {
60
- return 'midnight';
60
+ return 'wizard-study-dark';
61
61
  }
62
62
 
63
63
  // If there's any cm-theme class but not dark, assume light
64
64
  const hasAnyTheme = editorElement.matches('[class*="cm-theme"]') ||
65
65
  editorElement.closest('[class*="cm-theme"]') !== null;
66
66
  if (hasAnyTheme) {
67
- return 'daylight';
67
+ return 'wizard-study-light';
68
68
  }
69
69
  }
70
70
 
71
71
  // 3. System preference
72
72
  if (typeof window !== 'undefined' && window.matchMedia) {
73
73
  const prefersDark = window.matchMedia('(prefers-color-scheme: dark)').matches;
74
- return prefersDark ? 'midnight' : 'daylight';
74
+ return prefersDark ? 'wizard-study-dark' : 'wizard-study-light';
75
75
  }
76
76
 
77
77
  // 4. Default
78
- return 'midnight';
78
+ return 'wizard-study-dark';
79
79
  }
80
80
 
81
81
  /**
@@ -208,7 +208,7 @@ const THEME_FONTS_ID = 'mrmd-widget-theme-fonts';
208
208
  *
209
209
  * @example
210
210
  * // Apply by name
211
- * applyTheme('midnight');
211
+ * applyTheme('wizard-study-dark');
212
212
  *
213
213
  * // Apply custom theme object
214
214
  * applyTheme({
@@ -225,7 +225,7 @@ export function applyTheme(themeOrName, { target, useStyleTag = true } = {}) {
225
225
 
226
226
  if (!theme) {
227
227
  console.warn(`Theme "${themeOrName}" not found, using midnight`);
228
- return applyTheme('midnight', { target, useStyleTag });
228
+ return applyTheme('wizard-study-dark', { target, useStyleTag });
229
229
  }
230
230
 
231
231
  // Get token values (exclude name, description, fontFace, isDark)
@@ -330,7 +330,7 @@ export function removeThemeStyles() {
330
330
  * @returns {string} CSS string with :root variables and optional font-face
331
331
  *
332
332
  * @example
333
- * const css = generateThemeCSS('midnight');
333
+ * const css = generateThemeCSS('wizard-study-dark');
334
334
  * // :root {
335
335
  * // --widget-surface: rgba(0, 0, 0, 0.35);
336
336
  * // ...
@@ -346,7 +346,7 @@ export function generateThemeCSS(themeOrName, { includeFontFace = true } = {}) {
346
346
  : themeOrName;
347
347
 
348
348
  if (!theme) {
349
- return generateThemeCSS('midnight', { includeFontFace });
349
+ return generateThemeCSS('wizard-study-dark', { includeFontFace });
350
350
  }
351
351
 
352
352
  const vars = Object.entries(theme)
@@ -2419,6 +2419,522 @@ export const openresponsesTheme = {
2419
2419
  '--header-fg-hover': '#0f172a', // slate-900
2420
2420
  };
2421
2421
 
2422
+ // ===========================================================================
2423
+ // WIZARD'S STUDY THEMES
2424
+ // ===========================================================================
2425
+
2426
+ /**
2427
+ * Wizard's Study Dark Theme
2428
+ *
2429
+ * Deep midnight background like aged oak walls, warm parchment text
2430
+ * like candlelit scrolls. Muted jewel tones: amethyst, sage, gold, ember.
2431
+ *
2432
+ * Inspired by late-night reading in a wizard's tower — the warm glow
2433
+ * of candles on old wood, ink on parchment, crystals catching starlight.
2434
+ *
2435
+ * ## Color Palette
2436
+ *
2437
+ * **Backgrounds** — midnight oak, shadow, twilight velvet
2438
+ * - #1a1b2e (midnight oak — main background)
2439
+ * - #2a2b3d (shadow — elevated surfaces)
2440
+ * - #3d3552 (twilight velvet — selections, highlights)
2441
+ *
2442
+ * **Text** — warm parchment tones
2443
+ * - #d4c4a8 (warm parchment — primary text)
2444
+ * - #a49478 (worn scroll — muted text)
2445
+ * - #c8a654 (candlelight gold — accent)
2446
+ *
2447
+ * **Syntax** — aged jewel tones
2448
+ * - #a87cc4 (amethyst crystal — keywords)
2449
+ * - #8aab7c (sage leaf — strings)
2450
+ * - #c8a654 (candlelight gold — numbers, cursor)
2451
+ * - #c47862 (fading ember — errors, tags)
2452
+ * - #7c8ec4 (twilight sky — functions)
2453
+ * - #7caab0 (moonlit water — types)
2454
+ */
2455
+ export const wizardStudyDarkTheme = {
2456
+ name: 'wizard-study-dark',
2457
+ description: "Deep midnight study with candlelit parchment tones. The Wizard's Study (dark).",
2458
+ isDark: true,
2459
+ fontFace: defaultFontFace,
2460
+
2461
+ // ===========================================================================
2462
+ // SPACING
2463
+ // ===========================================================================
2464
+ '--widget-line-height': 'inherit',
2465
+ '--widget-padding-x': '12px',
2466
+ '--widget-padding-y': '8px',
2467
+ '--widget-margin-y': '4px',
2468
+ '--widget-border-radius': '6px',
2469
+ '--widget-border-width': '1px',
2470
+ '--widget-border-accent-width': '3px',
2471
+
2472
+ // Text layout
2473
+ '--widget-white-space': 'pre-wrap',
2474
+ '--widget-word-break': 'break-word',
2475
+
2476
+ // ===========================================================================
2477
+ // TYPOGRAPHY
2478
+ // ===========================================================================
2479
+ '--widget-font-mono': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
2480
+ '--widget-font-sans': "Literata, Charter, Georgia, serif",
2481
+ '--editor-font-family': "Literata, Charter, Georgia, serif",
2482
+ '--widget-font-size': '0.9em',
2483
+ '--widget-font-size-small': '0.8em',
2484
+ '--widget-font-size-label': '11px',
2485
+
2486
+ // ===========================================================================
2487
+ // SURFACES (midnight oak tones)
2488
+ // ===========================================================================
2489
+ '--widget-surface': '#222336', // slightly lighter than editor bg
2490
+ '--widget-surface-hover': '#2a2b3d', // shadow
2491
+ '--widget-surface-elevated': '#2a2b3d', // shadow — tooltips, dropdowns
2492
+ '--widget-surface-inset': '#141524', // deeper shadow
2493
+
2494
+ // ===========================================================================
2495
+ // BORDERS
2496
+ // ===========================================================================
2497
+ '--widget-border': '#3d3552', // twilight velvet
2498
+ '--widget-border-accent': 'rgba(200, 166, 84, 0.6)', // candlelight gold
2499
+ '--widget-border-focus': '#c8a654', // molten gold
2500
+
2501
+ // ===========================================================================
2502
+ // TEXT COLORS (parchment tones)
2503
+ // ===========================================================================
2504
+ '--widget-text': '#d4c4a8', // warm parchment
2505
+ '--widget-text-muted': '#8a7a5e', // worn scroll
2506
+ '--widget-text-accent': '#c8a654', // candlelight gold
2507
+
2508
+ // ===========================================================================
2509
+ // SEMANTIC COLORS (jewel tones)
2510
+ // ===========================================================================
2511
+ '--widget-success': '#8aab7c', // sage leaf
2512
+ '--widget-warning': '#c8a654', // candlelight gold
2513
+ '--widget-error': '#c47862', // fading ember
2514
+ '--widget-info': '#7c8ec4', // twilight sky
2515
+
2516
+ // ===========================================================================
2517
+ // ANSI TERMINAL COLORS (from Alacritty theme)
2518
+ // ===========================================================================
2519
+ '--ansi-black': '#2a2b3d', // shadow
2520
+ '--ansi-red': '#c47862', // fading ember
2521
+ '--ansi-green': '#8aab7c', // sage leaf
2522
+ '--ansi-yellow': '#c8a654', // candlelight gold
2523
+ '--ansi-blue': '#7c8ec4', // twilight sky
2524
+ '--ansi-magenta': '#a87cc4', // amethyst crystal
2525
+ '--ansi-cyan': '#7caab0', // moonlit water
2526
+ '--ansi-white': '#d4c4a8', // parchment
2527
+ '--ansi-bright-black': '#4a4b5d', // lighter shadow
2528
+ '--ansi-bright-red': '#d49882', // warm hearth
2529
+ '--ansi-bright-green': '#a4c896', // spring moss
2530
+ '--ansi-bright-yellow': '#e8c874', // sunbeam
2531
+ '--ansi-bright-blue': '#9caed4', // morning sky
2532
+ '--ansi-bright-magenta': '#c49cd4', // lavender mist
2533
+ '--ansi-bright-cyan': '#9ccad0', // clear brook
2534
+ '--ansi-bright-white': '#ebe0cc', // aged linen
2535
+
2536
+ // ===========================================================================
2537
+ // TERMINAL COLORS
2538
+ // ===========================================================================
2539
+ '--term-background': '#1a1b2e', // midnight oak
2540
+ '--term-foreground': '#d4c4a8', // warm parchment
2541
+ '--term-cursor': '#c8a654', // molten gold
2542
+ '--term-cursor-accent': '#1a1b2e', // midnight oak
2543
+ '--term-selection': '#3d3552', // twilight velvet
2544
+ '--term-border': '#3d3552', // twilight velvet
2545
+ '--term-header-bg': '#2a2b3d', // shadow
2546
+ '--term-header-fg': '#8a7a5e', // worn scroll
2547
+
2548
+ // ===========================================================================
2549
+ // COLLABORATOR COLORS
2550
+ // ===========================================================================
2551
+ '--collab-human': '#7c8ec4', // twilight sky
2552
+ '--collab-ai': '#a87cc4', // amethyst crystal
2553
+ '--collab-runtime': '#8aab7c', // sage leaf
2554
+
2555
+ // ===========================================================================
2556
+ // EDITOR
2557
+ // ===========================================================================
2558
+ '--editor-background': '#1a1b2e', // midnight oak
2559
+ '--editor-foreground': '#d4c4a8', // warm parchment
2560
+ '--editor-line-number': '#4a4b5d', // lighter shadow
2561
+ '--editor-line-number-active': '#d4c4a8', // warm parchment
2562
+ '--editor-selection': '#3d3552', // twilight velvet
2563
+ '--editor-selection-match': '#33304a', // deeper velvet
2564
+ '--editor-cursor': '#c8a654', // molten gold
2565
+ '--editor-active-line': 'rgba(61, 53, 82, 0.4)', // twilight velvet hint
2566
+ '--editor-gutter': '#1a1b2e', // midnight oak
2567
+ '--editor-matching-bracket': 'rgba(200, 166, 84, 0.3)', // gold shimmer
2568
+
2569
+ // ===========================================================================
2570
+ // SYNTAX HIGHLIGHTING (jewel tones — muted, aged, wise)
2571
+ // ===========================================================================
2572
+ '--syntax-keyword': '#a87cc4', // amethyst crystal
2573
+ '--syntax-control': '#a87cc4', // amethyst crystal
2574
+ '--syntax-string': '#8aab7c', // sage leaf
2575
+ '--syntax-number': '#c8a654', // candlelight gold
2576
+ '--syntax-comment': '#5a5b6d', // dim stone
2577
+ '--syntax-function': '#7c8ec4', // twilight sky
2578
+ '--syntax-variable': '#d4c4a8', // warm parchment
2579
+ '--syntax-variable-special': '#a87cc4', // amethyst crystal
2580
+ '--syntax-property': '#9caed4', // morning sky
2581
+ '--syntax-operator': '#d4c4a8', // parchment
2582
+ '--syntax-punctuation': '#8a7a5e', // worn scroll
2583
+ '--syntax-type': '#7caab0', // moonlit water
2584
+ '--syntax-class': '#7caab0', // moonlit water
2585
+ '--syntax-constant': '#c8a654', // candlelight gold
2586
+ '--syntax-parameter': '#d4c4a8', // warm parchment
2587
+ '--syntax-regexp': '#c47862', // fading ember
2588
+ '--syntax-escape': '#e8c874', // sunbeam
2589
+ '--syntax-tag': '#c47862', // fading ember
2590
+ '--syntax-attribute': '#9caed4', // morning sky
2591
+ '--syntax-attribute-value': '#8aab7c', // sage leaf
2592
+ '--syntax-heading': '#c8a654', // candlelight gold
2593
+ '--syntax-link': '#7c8ec4', // twilight sky
2594
+ '--syntax-link-text': '#9caed4', // morning sky
2595
+ '--syntax-emphasis': '#c49cd4', // lavender mist
2596
+ '--syntax-strong': '#ebe0cc', // aged linen
2597
+ '--syntax-strikethrough': '#4a4b5d', // lighter shadow
2598
+ '--syntax-quote': '#5a5b6d', // dim stone
2599
+ '--syntax-code': '#c8a654', // candlelight gold
2600
+ '--syntax-code-background': 'rgba(42, 43, 61, 0.6)', // shadow
2601
+ '--syntax-meta': '#5a5b6d', // dim stone
2602
+ '--syntax-inserted': '#8aab7c', // sage leaf
2603
+ '--syntax-deleted': '#c47862', // fading ember
2604
+ '--syntax-changed': '#c8a654', // candlelight gold
2605
+
2606
+ // ===========================================================================
2607
+ // MARKDOWN RENDERING
2608
+ // ===========================================================================
2609
+ '--md-heading-1-size': '1.75em',
2610
+ '--md-heading-2-size': '1.4em',
2611
+ '--md-heading-3-size': '1.2em',
2612
+ '--md-heading-4-size': '1.1em',
2613
+ '--md-heading-5-size': '1.05em',
2614
+ '--md-heading-6-size': '1em',
2615
+ '--md-heading-weight': '600',
2616
+ '--md-heading-line-height': '1.3',
2617
+ '--md-heading-margin-top': '0.5em',
2618
+ '--md-heading-color': '#e8c874', // sunbeam for headings
2619
+ '--md-marker-color': '#5a5b6d', // dim stone
2620
+ '--md-marker-font': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
2621
+ '--md-link-color': '#7c8ec4', // twilight sky
2622
+ '--md-link-decoration': 'underline',
2623
+ '--md-code-background': 'rgba(42, 43, 61, 0.6)', // shadow
2624
+ '--md-code-color': '#c8a654', // candlelight gold
2625
+ '--md-code-padding': '0.15em 0.35em',
2626
+ '--md-code-radius': '3px',
2627
+ '--md-blockquote-border': 'rgba(200, 166, 84, 0.4)', // candlelight gold
2628
+ '--md-blockquote-border-width': '3px',
2629
+ '--md-blockquote-color': '#8a7a5e', // worn scroll
2630
+ '--md-blockquote-padding': '1em',
2631
+ '--md-list-marker-color': '#8a7a5e', // worn scroll
2632
+ '--md-hr-color': '#3d3552', // twilight velvet
2633
+ '--md-hr-height': '1px',
2634
+ '--md-hr-margin': '1.5em 0',
2635
+ '--md-table-border': '#3d3552', // twilight velvet
2636
+ '--md-table-header-bg': '#2a2b3d', // shadow
2637
+ '--md-table-header-weight': '600',
2638
+ '--md-table-cell-padding': '0.5em 0.75em',
2639
+ '--md-table-stripe-bg': 'transparent',
2640
+ '--md-image-max-width': '100%',
2641
+ '--md-image-border-radius': '6px',
2642
+ '--md-checkbox-size': '1em',
2643
+ '--md-checkbox-color': '#c8a654', // candlelight gold
2644
+ '--md-alert-note-color': '#7c8ec4', // twilight sky
2645
+ '--md-alert-tip-color': '#8aab7c', // sage leaf
2646
+ '--md-alert-important-color': '#a87cc4', // amethyst crystal
2647
+ '--md-alert-warning-color': '#c8a654', // candlelight gold
2648
+ '--md-alert-caution-color': '#c47862', // fading ember
2649
+
2650
+ // ===========================================================================
2651
+ // SHELL (status bar, menus, dialogs)
2652
+ // ===========================================================================
2653
+ '--mrmd-ui-font': "Literata, Charter, Georgia, serif",
2654
+ '--mrmd-ui-font-size': '13px',
2655
+ '--mrmd-ui-font-size-sm': '11px',
2656
+ '--mrmd-panel-bg': '#1a1b2e', // midnight oak
2657
+ '--mrmd-popup-bg': '#2a2b3d', // shadow
2658
+ '--mrmd-bg': '#1a1b2e', // midnight oak
2659
+ '--mrmd-fg': '#d4c4a8', // warm parchment
2660
+ '--mrmd-fg-muted': '#8a7a5e', // worn scroll
2661
+ '--mrmd-border': '#3d3552', // twilight velvet
2662
+ '--mrmd-hover-bg': 'rgba(200, 166, 84, 0.08)', // gold hint
2663
+ '--mrmd-active-bg': 'rgba(200, 166, 84, 0.12)', // gold hint
2664
+ '--mrmd-selection-bg': 'rgba(200, 166, 84, 0.2)', // gold selection
2665
+ '--mrmd-accent': '#c8a654', // candlelight gold
2666
+ '--mrmd-accent-hover': '#e8c874', // sunbeam
2667
+ '--mrmd-success': '#8aab7c', // sage leaf
2668
+ '--mrmd-warning': '#c8a654', // candlelight gold
2669
+ '--mrmd-error': '#c47862', // fading ember
2670
+ '--mrmd-shadow-md': '0 4px 12px rgba(0, 0, 0, 0.4)',
2671
+ '--mrmd-shadow-lg': '0 8px 32px rgba(0, 0, 0, 0.5)',
2672
+ '--mrmd-shadow-xl': '0 16px 48px rgba(0, 0, 0, 0.6)',
2673
+ '--mrmd-menu-border': '#3d3552', // twilight velvet
2674
+ '--mrmd-dialog-border': '#3d3552', // twilight velvet
2675
+ '--mrmd-input-border': '#3d3552', // twilight velvet
2676
+ '--mrmd-button-bg': '#2a2b3d', // shadow
2677
+ '--mrmd-button-border': '#3d3552', // twilight velvet
2678
+ '--mrmd-button-hover': '#3d3552', // twilight velvet
2679
+ '--mrmd-button-active': '#4a4b5d', // lighter shadow
2680
+ };
2681
+
2682
+ /**
2683
+ * Wizard's Study Light Theme
2684
+ *
2685
+ * Sunlit parchment background like an open grimoire, deep ink foreground
2686
+ * like fresh calligraphy. Warm jewel tones: amber, forest, dusty rose, deep sea.
2687
+ *
2688
+ * The same wizard's study in daylight — morning sun streaming through
2689
+ * leaded glass, illuminating pages of aged manuscripts.
2690
+ *
2691
+ * ## Color Palette
2692
+ *
2693
+ * **Backgrounds** — sunlit parchment, warm vellum
2694
+ * - #f2e8d5 (sunlit parchment — main background)
2695
+ * - #e8dcc6 (bleached linen — elevated surfaces)
2696
+ * - #d4c4a8 (warm vellum — selections)
2697
+ *
2698
+ * **Text** — aged ink, deep calligraphy
2699
+ * - #2a2540 (aged ink — primary text)
2700
+ * - #5a5470 (faded ink — muted text)
2701
+ * - #a07830 (deep amber quill — accent)
2702
+ *
2703
+ * **Syntax** — rich inks on parchment
2704
+ * - #7a4a8a (dried lavender — keywords)
2705
+ * - #4a7a42 (forest herb — strings)
2706
+ * - #8a6a20 (aged amber — numbers)
2707
+ * - #a04040 (sealing wax — errors, tags)
2708
+ * - #3a5a9a (lapis lazuli — functions)
2709
+ * - #3a7a7a (deep well water — types)
2710
+ */
2711
+ export const wizardStudyLightTheme = {
2712
+ name: 'wizard-study-light',
2713
+ description: "Sunlit parchment with rich ink tones. The Wizard's Study (light).",
2714
+ isDark: false,
2715
+ fontFace: defaultFontFace,
2716
+
2717
+ // ===========================================================================
2718
+ // SPACING
2719
+ // ===========================================================================
2720
+ '--widget-line-height': 'inherit',
2721
+ '--widget-padding-x': '12px',
2722
+ '--widget-padding-y': '8px',
2723
+ '--widget-margin-y': '4px',
2724
+ '--widget-border-radius': '6px',
2725
+ '--widget-border-width': '1px',
2726
+ '--widget-border-accent-width': '3px',
2727
+
2728
+ // Text layout
2729
+ '--widget-white-space': 'pre-wrap',
2730
+ '--widget-word-break': 'break-word',
2731
+
2732
+ // ===========================================================================
2733
+ // TYPOGRAPHY
2734
+ // ===========================================================================
2735
+ '--widget-font-mono': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
2736
+ '--widget-font-sans': "Literata, Charter, Georgia, serif",
2737
+ '--editor-font-family': "Literata, Charter, Georgia, serif",
2738
+ '--widget-font-size': '0.9em',
2739
+ '--widget-font-size-small': '0.8em',
2740
+ '--widget-font-size-label': '11px',
2741
+
2742
+ // ===========================================================================
2743
+ // SURFACES (sunlit parchment tones)
2744
+ // ===========================================================================
2745
+ '--widget-surface': '#eaddc8', // aged parchment
2746
+ '--widget-surface-hover': '#e2d4bc', // touched parchment
2747
+ '--widget-surface-elevated': '#f2e8d5', // sunlit parchment
2748
+ '--widget-surface-inset': '#e0d2ba', // deeper parchment
2749
+
2750
+ // ===========================================================================
2751
+ // BORDERS
2752
+ // ===========================================================================
2753
+ '--widget-border': '#d4c4a8', // warm vellum
2754
+ '--widget-border-accent': 'rgba(160, 120, 48, 0.5)', // deep amber quill
2755
+ '--widget-border-focus': '#a07830', // deep amber quill
2756
+
2757
+ // ===========================================================================
2758
+ // TEXT COLORS (aged ink)
2759
+ // ===========================================================================
2760
+ '--widget-text': '#2a2540', // aged ink
2761
+ '--widget-text-muted': '#6a6480', // ghosted ink
2762
+ '--widget-text-accent': '#a07830', // deep amber quill
2763
+
2764
+ // ===========================================================================
2765
+ // SEMANTIC COLORS
2766
+ // ===========================================================================
2767
+ '--widget-success': '#4a7a42', // forest herb
2768
+ '--widget-warning': '#8a6a20', // aged amber
2769
+ '--widget-error': '#a04040', // sealing wax
2770
+ '--widget-info': '#3a5a9a', // lapis lazuli
2771
+
2772
+ // ===========================================================================
2773
+ // ANSI TERMINAL COLORS (from Alacritty light theme)
2774
+ // ===========================================================================
2775
+ '--ansi-black': '#2a2540', // deep ink
2776
+ '--ansi-red': '#a04040', // sealing wax
2777
+ '--ansi-green': '#4a7a42', // forest herb
2778
+ '--ansi-yellow': '#8a6a20', // aged amber
2779
+ '--ansi-blue': '#3a5a9a', // lapis lazuli
2780
+ '--ansi-magenta': '#7a4a8a', // dried lavender
2781
+ '--ansi-cyan': '#3a7a7a', // deep well water
2782
+ '--ansi-white': '#e8dcc6', // bleached linen
2783
+ '--ansi-bright-black': '#5a5470', // faded ink
2784
+ '--ansi-bright-red': '#c45a4a', // phoenix feather
2785
+ '--ansi-bright-green': '#5a9a52', // spring canopy
2786
+ '--ansi-bright-yellow': '#b08a30', // gilded edge
2787
+ '--ansi-bright-blue': '#4a72b8', // sapphire shard
2788
+ '--ansi-bright-magenta': '#9a62a8', // amethyst glow
2789
+ '--ansi-bright-cyan': '#4a9494', // enchanted pool
2790
+ '--ansi-bright-white': '#f2e8d5', // sunlit parchment
2791
+
2792
+ // ===========================================================================
2793
+ // TERMINAL COLORS
2794
+ // ===========================================================================
2795
+ '--term-background': '#f2e8d5', // sunlit parchment
2796
+ '--term-foreground': '#2a2540', // aged ink
2797
+ '--term-cursor': '#a07830', // deep amber quill
2798
+ '--term-cursor-accent': '#f2e8d5', // sunlit parchment
2799
+ '--term-selection': '#d4c4a8', // warm vellum
2800
+ '--term-border': '#d4c4a8', // warm vellum
2801
+ '--term-header-bg': '#e8dcc6', // bleached linen
2802
+ '--term-header-fg': '#6a6480', // ghosted ink
2803
+
2804
+ // ===========================================================================
2805
+ // COLLABORATOR COLORS
2806
+ // ===========================================================================
2807
+ '--collab-human': '#3a5a9a', // lapis lazuli
2808
+ '--collab-ai': '#7a4a8a', // dried lavender
2809
+ '--collab-runtime': '#4a7a42', // forest herb
2810
+
2811
+ // ===========================================================================
2812
+ // EDITOR
2813
+ // ===========================================================================
2814
+ '--editor-background': '#f2e8d5', // sunlit parchment
2815
+ '--editor-foreground': '#2a2540', // aged ink
2816
+ '--editor-line-number': '#a49478', // worn scroll
2817
+ '--editor-line-number-active': '#5a5470', // faded ink
2818
+ '--editor-selection': '#d4c4a8', // warm vellum
2819
+ '--editor-selection-match': '#e0d2ba', // deeper parchment
2820
+ '--editor-cursor': '#a07830', // deep amber quill
2821
+ '--editor-active-line': 'rgba(212, 196, 168, 0.4)', // warm vellum hint
2822
+ '--editor-gutter': '#f2e8d5', // sunlit parchment
2823
+ '--editor-matching-bracket': 'rgba(160, 120, 48, 0.25)', // amber shimmer
2824
+
2825
+ // ===========================================================================
2826
+ // SYNTAX HIGHLIGHTING (rich inks on parchment)
2827
+ // ===========================================================================
2828
+ '--syntax-keyword': '#7a4a8a', // dried lavender
2829
+ '--syntax-control': '#7a4a8a', // dried lavender
2830
+ '--syntax-string': '#4a7a42', // forest herb
2831
+ '--syntax-number': '#8a6a20', // aged amber
2832
+ '--syntax-comment': '#a49478', // worn scroll
2833
+ '--syntax-function': '#3a5a9a', // lapis lazuli
2834
+ '--syntax-variable': '#2a2540', // aged ink
2835
+ '--syntax-variable-special': '#7a4a8a', // dried lavender
2836
+ '--syntax-property': '#4a72b8', // sapphire shard
2837
+ '--syntax-operator': '#2a2540', // aged ink
2838
+ '--syntax-punctuation': '#6a6480', // ghosted ink
2839
+ '--syntax-type': '#3a7a7a', // deep well water
2840
+ '--syntax-class': '#3a7a7a', // deep well water
2841
+ '--syntax-constant': '#8a6a20', // aged amber
2842
+ '--syntax-parameter': '#2a2540', // aged ink
2843
+ '--syntax-regexp': '#a04040', // sealing wax
2844
+ '--syntax-escape': '#b08a30', // gilded edge
2845
+ '--syntax-tag': '#a04040', // sealing wax
2846
+ '--syntax-attribute': '#4a72b8', // sapphire shard
2847
+ '--syntax-attribute-value': '#4a7a42', // forest herb
2848
+ '--syntax-heading': '#2a2540', // aged ink — bold on parchment
2849
+ '--syntax-link': '#3a5a9a', // lapis lazuli
2850
+ '--syntax-link-text': '#4a72b8', // sapphire shard
2851
+ '--syntax-emphasis': '#7a4a8a', // dried lavender
2852
+ '--syntax-strong': '#2a2540', // aged ink
2853
+ '--syntax-strikethrough': '#a49478', // worn scroll
2854
+ '--syntax-quote': '#6a6480', // ghosted ink
2855
+ '--syntax-code': '#8a6a20', // aged amber
2856
+ '--syntax-code-background': 'rgba(212, 196, 168, 0.5)', // warm vellum
2857
+ '--syntax-meta': '#a49478', // worn scroll
2858
+ '--syntax-inserted': '#4a7a42', // forest herb
2859
+ '--syntax-deleted': '#a04040', // sealing wax
2860
+ '--syntax-changed': '#8a6a20', // aged amber
2861
+
2862
+ // ===========================================================================
2863
+ // MARKDOWN RENDERING
2864
+ // ===========================================================================
2865
+ '--md-heading-1-size': '1.75em',
2866
+ '--md-heading-2-size': '1.4em',
2867
+ '--md-heading-3-size': '1.2em',
2868
+ '--md-heading-4-size': '1.1em',
2869
+ '--md-heading-5-size': '1.05em',
2870
+ '--md-heading-6-size': '1em',
2871
+ '--md-heading-weight': '600',
2872
+ '--md-heading-line-height': '1.3',
2873
+ '--md-heading-margin-top': '0.5em',
2874
+ '--md-heading-color': '#2a2540', // aged ink
2875
+ '--md-marker-color': '#a49478', // worn scroll
2876
+ '--md-marker-font': "'Monaspace Neon Var', 'SF Mono', Monaco, Consolas, monospace",
2877
+ '--md-link-color': '#3a5a9a', // lapis lazuli
2878
+ '--md-link-decoration': 'underline',
2879
+ '--md-code-background': 'rgba(212, 196, 168, 0.5)', // warm vellum
2880
+ '--md-code-color': '#8a6a20', // aged amber
2881
+ '--md-code-padding': '0.15em 0.35em',
2882
+ '--md-code-radius': '3px',
2883
+ '--md-blockquote-border': 'rgba(160, 120, 48, 0.4)', // amber quill
2884
+ '--md-blockquote-border-width': '3px',
2885
+ '--md-blockquote-color': '#6a6480', // ghosted ink
2886
+ '--md-blockquote-padding': '1em',
2887
+ '--md-list-marker-color': '#a49478', // worn scroll
2888
+ '--md-hr-color': '#d4c4a8', // warm vellum
2889
+ '--md-hr-height': '1px',
2890
+ '--md-hr-margin': '1.5em 0',
2891
+ '--md-table-border': '#d4c4a8', // warm vellum
2892
+ '--md-table-header-bg': '#e8dcc6', // bleached linen
2893
+ '--md-table-header-weight': '600',
2894
+ '--md-table-cell-padding': '0.5em 0.75em',
2895
+ '--md-table-stripe-bg': 'transparent',
2896
+ '--md-image-max-width': '100%',
2897
+ '--md-image-border-radius': '6px',
2898
+ '--md-checkbox-size': '1em',
2899
+ '--md-checkbox-color': '#a07830', // deep amber quill
2900
+ '--md-alert-note-color': '#3a5a9a', // lapis lazuli
2901
+ '--md-alert-tip-color': '#4a7a42', // forest herb
2902
+ '--md-alert-important-color': '#7a4a8a', // dried lavender
2903
+ '--md-alert-warning-color': '#8a6a20', // aged amber
2904
+ '--md-alert-caution-color': '#a04040', // sealing wax
2905
+
2906
+ // ===========================================================================
2907
+ // SHELL (status bar, menus, dialogs)
2908
+ // ===========================================================================
2909
+ '--mrmd-ui-font': "Literata, Charter, Georgia, serif",
2910
+ '--mrmd-ui-font-size': '13px',
2911
+ '--mrmd-ui-font-size-sm': '11px',
2912
+ '--mrmd-panel-bg': '#f2e8d5', // sunlit parchment
2913
+ '--mrmd-popup-bg': '#f2e8d5', // sunlit parchment
2914
+ '--mrmd-bg': '#f2e8d5', // sunlit parchment
2915
+ '--mrmd-fg': '#2a2540', // aged ink
2916
+ '--mrmd-fg-muted': '#6a6480', // ghosted ink
2917
+ '--mrmd-border': '#d4c4a8', // warm vellum
2918
+ '--mrmd-hover-bg': 'rgba(160, 120, 48, 0.08)', // amber hint
2919
+ '--mrmd-active-bg': 'rgba(160, 120, 48, 0.12)', // amber hint
2920
+ '--mrmd-selection-bg': 'rgba(160, 120, 48, 0.15)', // amber selection
2921
+ '--mrmd-accent': '#a07830', // deep amber quill
2922
+ '--mrmd-accent-hover': '#8a6a20', // aged amber
2923
+ '--mrmd-success': '#4a7a42', // forest herb
2924
+ '--mrmd-warning': '#8a6a20', // aged amber
2925
+ '--mrmd-error': '#a04040', // sealing wax
2926
+ '--mrmd-shadow-md': '0 4px 12px rgba(0, 0, 0, 0.1)',
2927
+ '--mrmd-shadow-lg': '0 8px 32px rgba(0, 0, 0, 0.12)',
2928
+ '--mrmd-shadow-xl': '0 16px 48px rgba(0, 0, 0, 0.15)',
2929
+ '--mrmd-menu-border': '#d4c4a8', // warm vellum
2930
+ '--mrmd-dialog-border': '#d4c4a8', // warm vellum
2931
+ '--mrmd-input-border': '#d4c4a8', // warm vellum
2932
+ '--mrmd-button-bg': '#e8dcc6', // bleached linen
2933
+ '--mrmd-button-border': '#d4c4a8', // warm vellum
2934
+ '--mrmd-button-hover': '#d4c4a8', // warm vellum
2935
+ '--mrmd-button-active': '#c8bca6', // worn scroll
2936
+ };
2937
+
2422
2938
  // #endregion BUILT_IN_THEMES
2423
2939
 
2424
2940
  // #region THEME_REGISTRY
@@ -2428,6 +2944,8 @@ export const openresponsesTheme = {
2428
2944
  * @type {Map<string, object>}
2429
2945
  */
2430
2946
  const themeRegistry = new Map([
2947
+ ['wizard-study-dark', wizardStudyDarkTheme],
2948
+ ['wizard-study-light', wizardStudyLightTheme],
2431
2949
  ['midnight', midnightTheme],
2432
2950
  ['daylight', daylightTheme],
2433
2951
  ['moonlight', moonlightTheme],
@@ -2536,6 +3054,8 @@ export default {
2536
3054
  tokenDefinitions,
2537
3055
 
2538
3056
  // Built-in themes
3057
+ wizardStudyDarkTheme,
3058
+ wizardStudyLightTheme,
2539
3059
  midnightTheme,
2540
3060
  daylightTheme,
2541
3061
  moonlightTheme,