branch: externals/ef-themes
commit 70c81a957445beedcd88e4df929551ac77f1d0c5
Author: Protesilaos Stavrou <[email protected]>
Commit: Protesilaos Stavrou <[email protected]>

    Use modus-themes-generate-palette in all themes
    
    I did the changes with keyboard macros as usual. I now notice that
    some themes have 26 changes while others have 28. This should probably
    be due to some older inconsequential irregularities. I loaded each
    theme right now and they all seem okay, so I will let this pass. If
    anybody reports a bug, I am always happy to fix it.
    
    At any rate, the main point for this change is to (i) ensure that we
    get a complete palette while (ii) that we register the theme's palette
    as a "core palette" because these are the correct semantics (e.g. that
    ef-light ultimately may have inherited something from modus-operandi
    is not relevant to the question "what is your core theme?").
---
 ef-arbutus-theme.el            | 26 +++++++++++++++-----------
 ef-autumn-theme.el             | 26 +++++++++++++++-----------
 ef-bio-theme.el                | 26 +++++++++++++++-----------
 ef-cherie-theme.el             | 26 +++++++++++++++-----------
 ef-cyprus-theme.el             | 26 +++++++++++++++-----------
 ef-dark-theme.el               | 26 +++++++++++++++-----------
 ef-day-theme.el                | 26 +++++++++++++++-----------
 ef-deuteranopia-dark-theme.el  | 26 +++++++++++++++-----------
 ef-deuteranopia-light-theme.el | 26 +++++++++++++++-----------
 ef-dream-theme.el              | 26 +++++++++++++++-----------
 ef-duo-dark-theme.el           | 26 +++++++++++++++-----------
 ef-duo-light-theme.el          | 26 +++++++++++++++-----------
 ef-eagle-theme.el              | 26 +++++++++++++++-----------
 ef-elea-dark-theme.el          | 26 +++++++++++++++-----------
 ef-elea-light-theme.el         | 26 +++++++++++++++-----------
 ef-frost-theme.el              | 26 +++++++++++++++-----------
 ef-kassio-theme.el             | 26 +++++++++++++++-----------
 ef-light-theme.el              | 26 +++++++++++++++-----------
 ef-maris-dark-theme.el         | 26 +++++++++++++++-----------
 ef-maris-light-theme.el        | 26 +++++++++++++++-----------
 ef-melissa-dark-theme.el       | 26 +++++++++++++++-----------
 ef-melissa-light-theme.el      | 26 +++++++++++++++-----------
 ef-night-theme.el              | 28 ++++++++++++++++------------
 ef-owl-theme.el                | 28 ++++++++++++++++------------
 ef-reverie-theme.el            | 28 ++++++++++++++++------------
 ef-rosa-theme.el               | 28 ++++++++++++++++------------
 ef-spring-theme.el             | 28 ++++++++++++++++------------
 ef-summer-theme.el             | 28 ++++++++++++++++------------
 ef-symbiosis-theme.el          | 28 ++++++++++++++++------------
 ef-trio-dark-theme.el          | 28 ++++++++++++++++------------
 ef-trio-light-theme.el         | 28 ++++++++++++++++------------
 ef-tritanopia-dark-theme.el    | 28 ++++++++++++++++------------
 ef-tritanopia-light-theme.el   | 28 ++++++++++++++++------------
 ef-winter-theme.el             | 28 ++++++++++++++++------------
 34 files changed, 522 insertions(+), 386 deletions(-)

diff --git a/ef-arbutus-theme.el b/ef-arbutus-theme.el
index d529088df0..34e65038eb 100644
--- a/ef-arbutus-theme.el
+++ b/ef-arbutus-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#f5bfc5")
     (bg-hl-line "#fad8bf")
     (bg-paren-match "#efafbf")
-    (bg-region "#dbe0c0")
     (bg-err "#ffd4b5") ; check with err
     (bg-warning "#efe48f") ; check with warning
     (bg-info "#d0f0bc") ; check with info
+    (bg-region "#dbe0c0")))
 
-    (err red-warmer)
+(defconst ef-arbutus-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
     (fg-link green-cooler)
-    (fg-link-alt magenta-cooler)
+    (fg-link-visited magenta-cooler)
     (name red-cooler)
     (keybind red)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type red)
     (variable red-cooler)
     (variable-use red-faint)
-    (rx-escape yellow-warmer) ; compare with `string'
+    (rx-backslash yellow-warmer) ; compare with `string'
     (rx-construct cyan-cooler)
 
     (accent-0 green)
@@ -156,16 +157,16 @@
     (date-weekday green-cooler)
     (date-weekend red)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green)
-    (prose-macro yellow-warmer)
+    (fg-prose-macro yellow-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag cyan-faint)
     (prose-todo yellow-warmer)
-    (prose-verbatim blue-cooler)
+    (fg-prose-verbatim blue-cooler)
 
     (mail-cite-0 green-cooler)
     (mail-cite-1 green-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 cyan-cooler)
     (rainbow-6 yellow-cooler)
     (rainbow-7 red-cooler)
-    (rainbow-8 cyan))
-  "Legible light pink theme with red and green colors.")
+    (rainbow-8 cyan)))
 
 (defcustom ef-arbutus-palette-overrides nil
   "Overrides for `ef-arbutus-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-arbutus-palette
-  (append ef-themes-common-palette-overrides ef-arbutus-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-arbutus-palette-partial
+   nil
+   nil
+   (append ef-arbutus-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-arbutus
  'ef-themes
  "Legible light pink theme with red and green colors."
  'light
- 'modus-operandi-palette
  'ef-arbutus-palette
+ nil
  'ef-arbutus-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-autumn-theme.el b/ef-autumn-theme.el
index 93df365261..dbea6ce08e 100644
--- a/ef-autumn-theme.el
+++ b/ef-autumn-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#55345a")
     (bg-hl-line "#302a3a")
     (bg-paren-match "#2f6c4a")
-    (bg-region "#3f1324")
     (bg-err "#461204") ; check with err
     (bg-warning "#353504") ; check with warning
     (bg-info "#1f3b0a") ; check with info
+    (bg-region "#3f1324")))
 
-    (err red-warmer)
+(defconst ef-autumn-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green-cooler)
 
     (fg-link yellow)
-    (fg-link-alt cyan-cooler)
+    (fg-link-visited cyan-cooler)
     (name green-warmer)
     (keybind red-warmer)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green)
     (variable cyan-warmer)
     (variable-use cyan-faint)
-    (rx-escape green-cooler) ; compare with `string'
+    (rx-backslash green-cooler) ; compare with `string'
     (rx-construct magenta-cooler)
 
     (accent-0 green-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done green-cooler)
-    (prose-macro cyan-cooler)
+    (fg-prose-macro cyan-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag fg-alt)
     (prose-todo red-warmer)
-    (prose-verbatim green-cooler)
+    (fg-prose-verbatim green-cooler)
 
     (mail-cite-0 yellow-warmer)
     (mail-cite-1 green-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 blue)
     (rainbow-6 red-cooler)
     (rainbow-7 green)
-    (rainbow-8 yellow))
-  "Legible dark brown-black theme with warm colors (red, yellow, green, 
teal).")
+    (rainbow-8 yellow)))
 
 (defcustom ef-autumn-palette-overrides nil
   "Overrides for `ef-autumn-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-autumn-palette
-  (append ef-themes-common-palette-overrides ef-autumn-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-autumn-palette-partial
+   nil
+   nil
+   (append ef-autumn-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-autumn
  'ef-themes
  "Legible dark brown-black theme with warm colors (red, yellow, green, teal)."
  'dark
- 'modus-vivendi-palette
  'ef-autumn-palette
+ nil
  'ef-autumn-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-bio-theme.el b/ef-bio-theme.el
index dac50be355..c9419fcd5d 100644
--- a/ef-bio-theme.el
+++ b/ef-bio-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#003e5f")
     (bg-hl-line "#00331f")
     (bg-paren-match "#664950")
-    (bg-region "#3a3027")
     (bg-err "#48100f") ; check with err
     (bg-warning "#3b3400") ; check with warning
     (bg-info "#1a3b0f") ; check with info
+    (bg-region "#3a3027")))
 
-    (err red)
+(defconst ef-bio-palette-mappings-partial
+  '((err red)
     (warning yellow-cooler)
     (info green)
 
     (fg-link green-cooler)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name green)
     (keybind green)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type cyan-warmer)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape yellow-cooler) ; compare with `string'
+    (rx-backslash yellow-cooler) ; compare with `string'
     (rx-construct green)
 
     (accent-0 green-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code blue-warmer)
+    (fg-prose-code blue-warmer)
     (prose-done green)
-    (prose-macro magenta-warmer)
+    (fg-prose-macro magenta-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red)
-    (prose-verbatim green-cooler)
+    (fg-prose-verbatim green-cooler)
 
     (mail-cite-0 green-cooler)
     (mail-cite-1 blue-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 yellow-cooler)
     (rainbow-6 blue)
     (rainbow-7 cyan)
-    (rainbow-8 magenta))
-  "Legible dark green-black theme with green, teal, blue, purple colors.")
+    (rainbow-8 magenta)))
 
 (defcustom ef-bio-palette-overrides nil
   "Overrides for `ef-bio-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-bio-palette
-  (append ef-themes-common-palette-overrides ef-bio-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-bio-palette-partial
+   nil
+   nil
+   (append ef-bio-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-bio
  'ef-themes
  "Legible dark green-black theme with green, teal, blue, purple colors."
  'dark
- 'modus-vivendi-palette
  'ef-bio-palette
+ nil
  'ef-bio-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-cherie-theme.el b/ef-cherie-theme.el
index e67a2f2be0..c9af87eed6 100644
--- a/ef-cherie-theme.el
+++ b/ef-cherie-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#66364f")
     (bg-hl-line "#401f33")
     (bg-paren-match "#3f5f75")
-    (bg-region "#232f3f")
     (bg-err "#461017") ; check with err
     (bg-warning "#3a3004") ; check with warning
     (bg-info "#00352a") ; check with info
+    (bg-region "#232f3f")))
 
-    (err red-warmer)
+(defconst ef-cherie-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link magenta-cooler)
-    (fg-link-alt yellow)
+    (fg-link-visited yellow)
     (name yellow-cooler)
     (keybind yellow-warmer)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type magenta-warmer)
     (variable magenta-cooler)
     (variable-use magenta-faint)
-    (rx-escape cyan-warmer) ; compare with `string'
+    (rx-backslash cyan-warmer) ; compare with `string'
     (rx-construct red)
 
     (accent-0 magenta-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow)
+    (fg-prose-code yellow)
     (prose-done green)
-    (prose-macro blue-warmer)
+    (fg-prose-macro blue-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim magenta-warmer)
+    (fg-prose-verbatim magenta-warmer)
 
     (mail-cite-0 magenta)
     (mail-cite-1 yellow)
@@ -196,8 +197,7 @@
     (rainbow-5 blue-warmer)
     (rainbow-6 red-cooler)
     (rainbow-7 cyan-warmer)
-    (rainbow-8 magenta-cooler))
-  "Legible dark purple-black theme with warm colors (mostly pink, magenta, 
gold).")
+    (rainbow-8 magenta-cooler)))
 
 (defcustom ef-cherie-palette-overrides nil
   "Overrides for `ef-cherie-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-cherie-palette
-  (append ef-themes-common-palette-overrides ef-cherie-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-cherie-palette-partial
+   nil
+   nil
+   (append ef-cherie-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-cherie
  'ef-themes
  "Legible dark purple-black theme with warm colors (mostly pink, magenta, 
gold)."
  'dark
- 'modus-vivendi-palette
  'ef-cherie-palette
+ nil
  'ef-cherie-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-cyprus-theme.el b/ef-cyprus-theme.el
index 07d615a5f4..55d77694cb 100644
--- a/ef-cyprus-theme.el
+++ b/ef-cyprus-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#afc0f0")
     (bg-hl-line "#f0e0d4")
     (bg-paren-match "#9fcfdf")
-    (bg-region "#e0e7e5")
     (bg-err "#ffd4bf") ; check with err
     (bg-warning "#f0e8ba") ; check with warning
     (bg-info "#d0efbf") ; check with info
+    (bg-region "#e0e7e5")))
 
-    (err red-warmer)
+(defconst ef-cyprus-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
     (fg-link yellow)
-    (fg-link-alt cyan)
+    (fg-link-visited cyan)
     (name green-warmer)
     (keybind red)
     (identifier green-faint)
@@ -136,7 +137,7 @@
     (type blue-warmer)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape magenta-cooler) ; compare with `string'
+    (rx-backslash magenta-cooler) ; compare with `string'
     (rx-construct cyan-cooler)
 
     (accent-0 green)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code red-cooler)
+    (fg-prose-code red-cooler)
     (prose-done green)
-    (prose-macro cyan-cooler)
+    (fg-prose-macro cyan-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim green)
+    (fg-prose-verbatim green)
 
     (mail-cite-0 green-warmer)
     (mail-cite-1 yellow-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta)
     (rainbow-6 yellow-cooler)
     (rainbow-7 cyan-cooler)
-    (rainbow-8 red))
-  "Legible light ochre theme with green, yellow, teal, red colors.")
+    (rainbow-8 red)))
 
 (defcustom ef-cyprus-palette-overrides nil
   "Overrides for `ef-cyprus-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-cyprus-palette
-  (append ef-themes-common-palette-overrides ef-cyprus-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-cyprus-palette-partial
+   nil
+   nil
+   (append ef-cyprus-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-cyprus
  'ef-themes
  "Legible light ochre theme with green, yellow, teal, red colors."
  'light
- 'modus-operandi-palette
  'ef-cyprus-palette
+ nil
  'ef-cyprus-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-dark-theme.el b/ef-dark-theme.el
index fc269c611f..c991b804d0 100644
--- a/ef-dark-theme.el
+++ b/ef-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#551f5a")
     (bg-hl-line "#002435")
     (bg-paren-match "#20577a")
-    (bg-region "#2a234a")
     (bg-err "#461210") ; check with err
     (bg-warning "#3a3004") ; check with warning
     (bg-info "#10350a") ; check with info
+    (bg-region "#2a234a")))
 
-    (err red-warmer)
+(defconst ef-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
     (fg-link cyan)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name blue-warmer)
     (keybind blue-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape green-warmer) ; compare with `string'
+    (rx-backslash green-warmer) ; compare with `string'
     (rx-construct red)
 
     (accent-0 blue)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim blue)
+    (fg-prose-verbatim blue)
 
     (mail-cite-0 blue)
     (mail-cite-1 magenta-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta-cooler)
     (rainbow-6 red-cooler)
     (rainbow-7 green-warmer)
-    (rainbow-8 yellow))
-  "Legible dark theme with blue, magenta, cyan, purple colors.")
+    (rainbow-8 yellow)))
 
 (defcustom ef-dark-palette-overrides nil
   "Overrides for `ef-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-dark-palette
-  (append ef-themes-common-palette-overrides ef-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-dark-palette-partial
+   nil
+   nil
+   (append ef-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-dark
  'ef-themes
  "Legible dark theme with blue, magenta, cyan, purple colors."
  'dark
- 'modus-vivendi-palette
  'ef-dark-palette
+ nil
  'ef-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-day-theme.el b/ef-day-theme.el
index e61c2fe9eb..453747b31e 100644
--- a/ef-day-theme.el
+++ b/ef-day-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#febccf")
     (bg-hl-line "#f9e2b2")
     (bg-paren-match "#8fcfdf")
-    (bg-region "#f0d2df")
     (bg-err "#ffdde5") ; check with err
     (bg-warning "#ffe0aa") ; check with warning
     (bg-info "#ddf5cc") ; check with info
+    (bg-region "#f0d2df")))
 
-    (err red-warmer)
+(defconst ef-day-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
     (fg-link cyan-warmer)
-    (fg-link-alt green-warmer)
+    (fg-link-visited green-warmer)
     (name yellow)
     (keybind red-warmer)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable magenta-cooler)
     (variable-use magenta-faint)
-    (rx-escape blue) ; compare with `string'
+    (rx-backslash blue) ; compare with `string'
     (rx-construct magenta-warmer)
 
     (accent-0 red)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code green-cooler)
+    (fg-prose-code green-cooler)
     (prose-done green)
-    (prose-macro yellow)
+    (fg-prose-macro yellow)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim red)
+    (fg-prose-verbatim red)
 
     (mail-cite-0 red)
     (mail-cite-1 green-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 yellow-cooler)
     (rainbow-6 magenta-cooler)
     (rainbow-7 red-cooler)
-    (rainbow-8 green-cooler))
-  "Legible light sandy theme with warm, varied colors (yellow, red, green, 
purple).")
+    (rainbow-8 green-cooler)))
 
 (defcustom ef-day-palette-overrides nil
   "Overrides for `ef-day-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-day-palette
-  (append ef-themes-common-palette-overrides ef-day-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-day-palette-partial
+   nil
+   nil
+   (append ef-day-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-day
  'ef-themes
  "Legible light sandy theme with warm, varied colors (yellow, red, green, 
purple)."
  'light
- 'modus-operandi-palette
  'ef-day-palette
+ nil
  'ef-day-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-deuteranopia-dark-theme.el b/ef-deuteranopia-dark-theme.el
index 2aed94562f..37a5becf7f 100644
--- a/ef-deuteranopia-dark-theme.el
+++ b/ef-deuteranopia-dark-theme.el
@@ -111,17 +111,18 @@
     (bg-hover-secondary "#00405f")
     (bg-hl-line "#2e2e1b")
     (bg-paren-match "#0f4f9a")
-    (bg-region "#223848")
     (bg-err "#442f00") ; check with err
     (bg-warning "#3a3a1f") ; check with warning
     (bg-info "#002b60") ; check with info
+    (bg-region "#223848")))
 
-    (err yellow-warmer)
+(defconst ef-deuteranopia-dark-palette-mappings-partial
+  '((err yellow-warmer)
     (warning yellow-cooler)
     (info blue-cooler)
 
     (fg-link blue)
-    (fg-link-alt yellow-cooler)
+    (fg-link-visited yellow-cooler)
     (name blue-warmer)
     (keybind yellow-warmer)
     (identifier cyan-faint)
@@ -139,7 +140,7 @@
     (type magenta-cooler)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape yellow-faint) ; compare with `string'
+    (rx-backslash yellow-faint) ; compare with `string'
     (rx-construct yellow-warmer)
 
     (accent-0 blue-cooler)
@@ -159,16 +160,16 @@
     (date-weekday cyan)
     (date-weekend magenta-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done blue-cooler)
-    (prose-macro cyan-warmer)
+    (fg-prose-macro cyan-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag fg-alt)
     (prose-todo yellow-warmer)
-    (prose-verbatim blue-cooler)
+    (fg-prose-verbatim blue-cooler)
 
     (mail-cite-0 blue-warmer)
     (mail-cite-1 yellow)
@@ -199,8 +200,7 @@
     (rainbow-5 cyan-warmer)
     (rainbow-6 yellow-faint)
     (rainbow-7 blue-faint)
-    (rainbow-8 magenta-faint))
-  "Legible dark theme, optimized for red-green color deficiency.")
+    (rainbow-8 magenta-faint)))
 
 (defcustom ef-deuteranopia-dark-palette-overrides nil
   "Overrides for `ef-deuteranopia-dark-palette'.
@@ -220,15 +220,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-deuteranopia-dark-palette
-  (append ef-themes-common-palette-overrides 
ef-deuteranopia-dark-palette-partial ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-deuteranopia-dark-palette-partial
+   nil
+   nil
+   (append ef-deuteranopia-dark-palette-mappings-partial 
ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-deuteranopia-dark
  'ef-themes
  "Legible dark theme, optimized for red-green color deficiency."
  'dark
- 'modus-vivendi-deuteranopia-palette
  'ef-deuteranopia-dark-palette
+ nil
  'ef-deuteranopia-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-deuteranopia-light-theme.el b/ef-deuteranopia-light-theme.el
index de51389052..5170b1fa75 100644
--- a/ef-deuteranopia-light-theme.el
+++ b/ef-deuteranopia-light-theme.el
@@ -111,17 +111,18 @@
     (bg-hover-secondary "#afafef")
     (bg-hl-line "#f3e0d5")
     (bg-paren-match "#8fc0cf")
-    (bg-region "#dadadf")
     (bg-err "#f0e0a0") ; check with err
     (bg-warning "#e3ea9a") ; check with warning
     (bg-info "#d0dfff") ; check with info
+    (bg-region "#dadadf")))
 
-    (err yellow-warmer)
+(defconst ef-deuteranopia-light-palette-mappings-partial
+  '((err yellow-warmer)
     (warning yellow-cooler)
     (info blue-cooler)
 
     (fg-link blue)
-    (fg-link-alt yellow-cooler)
+    (fg-link-visited yellow-cooler)
     (name blue-warmer)
     (keybind yellow-warmer)
     (identifier cyan-faint)
@@ -139,7 +140,7 @@
     (type yellow)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape cyan-faint) ; compare with `string'
+    (rx-backslash cyan-faint) ; compare with `string'
     (rx-construct blue-warmer)
 
     (accent-0 blue-cooler)
@@ -159,16 +160,16 @@
     (date-weekday cyan)
     (date-weekend magenta-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done blue-cooler)
-    (prose-macro cyan)
+    (fg-prose-macro cyan)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag green-faint)
     (prose-todo yellow-warmer)
-    (prose-verbatim blue-cooler)
+    (fg-prose-verbatim blue-cooler)
 
     (mail-cite-0 blue-warmer)
     (mail-cite-1 yellow-cooler)
@@ -199,8 +200,7 @@
     (rainbow-5 yellow-warmer)
     (rainbow-6 blue-faint)
     (rainbow-7 yellow-faint)
-    (rainbow-8 cyan))
-  "Legible light theme, optimized for red-green color deficiency.")
+    (rainbow-8 cyan)))
 
 (defcustom ef-deuteranopia-light-palette-overrides nil
   "Overrides for `ef-deuteranopia-light-palette'.
@@ -220,15 +220,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-deuteranopia-light-palette
-  (append ef-themes-common-palette-overrides 
ef-deuteranopia-light-palette-partial ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-deuteranopia-light-palette-partial
+   nil
+   nil
+   (append ef-deuteranopia-light-palette-mappings-partial 
ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-deuteranopia-light
  'ef-themes
  "Legible light theme, optimized for red-green color deficiency."
  'light
- 'modus-operandi-deuteranopia-palette
  'ef-deuteranopia-light-palette
+ nil
  'ef-deuteranopia-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-dream-theme.el b/ef-dream-theme.el
index cf199febbc..ccf9e19938 100644
--- a/ef-dream-theme.el
+++ b/ef-dream-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#665f7a")
     (bg-hl-line "#412f4f")
     (bg-paren-match "#885566")
-    (bg-region "#544a50")
     (bg-err "#501a2d") ; check with err
     (bg-warning "#4e3930") ; check with warning
     (bg-info "#0f3f4f") ; check with info
+    (bg-region "#544a50")))
 
-    (err magenta-warmer)
+(defconst ef-dream-palette-mappings-partial
+  '((err magenta-warmer)
     (warning yellow-warmer)
     (info cyan)
 
     (fg-link yellow-cooler)
-    (fg-link-alt cyan-warmer)
+    (fg-link-visited cyan-warmer)
     (name cyan-warmer)
     (keybind cyan)
     (identifier yellow-cooler)
@@ -136,7 +137,7 @@
     (type green-faint)
     (variable magenta)
     (variable-use magenta-faint)
-    (rx-escape cyan-cooler) ; compare with `string'
+    (rx-backslash cyan-cooler) ; compare with `string'
     (rx-construct red-cooler)
 
     (accent-0 yellow-cooler)
@@ -156,16 +157,16 @@
     (date-weekday magenta)
     (date-weekend blue-faint)
 
-    (prose-code blue-warmer)
+    (fg-prose-code blue-warmer)
     (prose-done cyan-warmer)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo yellow-warmer)
-    (prose-verbatim magenta-warmer)
+    (fg-prose-verbatim magenta-warmer)
 
     (mail-cite-0 yellow-cooler)
     (mail-cite-1 red-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 green-cooler)
     (rainbow-6 cyan)
     (rainbow-7 yellow)
-    (rainbow-8 red-faint))
-  "Legible dark purple grey theme with gold and nuanced colors.")
+    (rainbow-8 red-faint)))
 
 (defcustom ef-dream-palette-overrides nil
   "Overrides for `ef-dream-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-dream-palette
-  (append ef-themes-common-palette-overrides ef-dream-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-dream-palette-partial
+   nil
+   nil
+   (append ef-dream-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-dream
  'ef-themes
  "Legible dark purple grey theme with gold and nuanced colors."
  'dark
- 'modus-vivendi-palette
  'ef-dream-palette
+ nil
  'ef-dream-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-duo-dark-theme.el b/ef-duo-dark-theme.el
index 158e5b3c03..14588eba41 100644
--- a/ef-duo-dark-theme.el
+++ b/ef-duo-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#264f4a")
     (bg-hl-line "#301a4f")
     (bg-paren-match "#2f608e")
-    (bg-region "#042a50")
     (bg-err "#461210") ; check with err
     (bg-warning "#3a3004") ; check with warning
     (bg-info "#10350a") ; check with info
+    (bg-region "#042a50")))
 
-    (err red)
+(defconst ef-duo-dark-palette-mappings-partial
+  '((err red)
     (warning yellow)
     (info green)
 
     (fg-link cyan-warmer)
-    (fg-link-alt green-cooler)
+    (fg-link-visited green-cooler)
     (name blue)
     (keybind blue-cooler)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type blue-cooler)
     (variable magenta-cooler)
     (variable-use magenta-faint)
-    (rx-escape magenta-cooler) ; compare with `string'
+    (rx-backslash magenta-cooler) ; compare with `string'
     (rx-construct blue)
 
     (accent-0 blue-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 cyan)
     (mail-cite-1 yellow-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 yellow)
     (rainbow-6 blue-cooler)
     (rainbow-7 red-cooler)
-    (rainbow-8 green-cooler))
-  "Legible dark theme with mostly blue and orange colors.")
+    (rainbow-8 green-cooler)))
 
 (defcustom ef-duo-dark-palette-overrides nil
   "Overrides for `ef-duo-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-duo-dark-palette
-  (append ef-themes-common-palette-overrides ef-duo-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-duo-dark-palette-partial
+   nil
+   nil
+   (append ef-duo-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-duo-dark
  'ef-themes
  "Legible dark theme with mostly blue and orange colors."
  'dark
- 'modus-vivendi-palette
  'ef-duo-dark-palette
+ nil
  'ef-duo-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-duo-light-theme.el b/ef-duo-light-theme.el
index 098462ecb0..f360135cad 100644
--- a/ef-duo-light-theme.el
+++ b/ef-duo-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#aaeccf")
     (bg-hl-line "#f9e8c0")
     (bg-paren-match "#afbfef")
-    (bg-region "#caeafa")
     (bg-err "#ffdfe6") ; check with err
     (bg-warning "#ffe5ba") ; check with warning
     (bg-info "#cff5d0") ; check with info
+    (bg-region "#caeafa")))
 
-    (err red)
+(defconst ef-duo-light-palette-mappings-partial
+  '((err red)
     (warning yellow)
     (info green)
 
     (fg-link cyan)
-    (fg-link-alt green-cooler)
+    (fg-link-visited green-cooler)
     (name blue)
     (keybind blue-cooler)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type blue-cooler)
     (variable magenta-cooler)
     (variable-use magenta-faint)
-    (rx-escape cyan) ; compare with `string'
+    (rx-backslash cyan) ; compare with `string'
     (rx-construct red-warmer)
 
     (accent-0 blue-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag yellow-faint)
     (prose-todo red)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 blue)
     (mail-cite-1 yellow-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 green-warmer)
     (rainbow-6 cyan-warmer)
     (rainbow-7 yellow)
-    (rainbow-8 green-cooler))
-  "Legible light theme with mostly blue and yellow colors.")
+    (rainbow-8 green-cooler)))
 
 (defcustom ef-duo-light-palette-overrides nil
   "Overrides for `ef-duo-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-duo-light-palette
-  (append ef-themes-common-palette-overrides ef-duo-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-duo-light-palette-partial
+   nil
+   nil
+   (append ef-duo-light-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-duo-light
  'ef-themes
  "Legible light theme with mostly blue and yellow colors."
  'light
- 'modus-operandi-palette
  'ef-duo-light-palette
+ nil
  'ef-duo-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-eagle-theme.el b/ef-eagle-theme.el
index d2458a7131..5985173c29 100644
--- a/ef-eagle-theme.el
+++ b/ef-eagle-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#c5d8a2")
     (bg-hl-line "#ecdfba")
     (bg-paren-match "#9fd0cc")
-    (bg-region "#ddc5af")
     (bg-err "#f2d4b5") ; check with err
     (bg-warning "#e7de80") ; check with warning
     (bg-info "#cdeeb0") ; check with info
+    (bg-region "#ddc5af")))
 
-    (err red-warmer)
+(defconst ef-eagle-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link yellow-cooler)
-    (fg-link-alt cyan-faint)
+    (fg-link-visited cyan-faint)
     (name green)
     (keybind red-warmer)
     (identifier cyan-faint)
@@ -136,7 +137,7 @@
     (type green)
     (variable cyan)
     (variable-use cyan-faint)
-    (rx-escape magenta-warmer) ; compare with `string'
+    (rx-backslash magenta-warmer) ; compare with `string'
     (rx-construct blue-cooler)
 
     (accent-0 red)
@@ -156,16 +157,16 @@
     (date-weekday red)
     (date-weekend cyan)
 
-    (prose-code green-cooler)
+    (fg-prose-code green-cooler)
     (prose-done green-warmer)
-    (prose-macro blue)
+    (fg-prose-macro blue)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim red-cooler)
+    (fg-prose-verbatim red-cooler)
 
     (mail-cite-0 red)
     (mail-cite-1 yellow)
@@ -196,8 +197,7 @@
     (rainbow-5 red-cooler)
     (rainbow-6 blue-faint)
     (rainbow-7 yellow-warmer)
-    (rainbow-8 green))
-  "Legible light beige theme with brown, red, and desatured colors.")
+    (rainbow-8 green)))
 
 (defcustom ef-eagle-palette-overrides nil
   "Overrides for `ef-eagle-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-eagle-palette
-  (append ef-themes-common-palette-overrides ef-eagle-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-eagle-palette-partial
+   nil
+   nil
+   (append ef-eagle-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-eagle
  'ef-themes
  "Legible light beige theme with brown, red, and desatured colors."
  'light
- 'modus-operandi-palette
  'ef-eagle-palette
+ nil
  'ef-eagle-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-elea-dark-theme.el b/ef-elea-dark-theme.el
index 7f0a25d879..95ac8f44f7 100644
--- a/ef-elea-dark-theme.el
+++ b/ef-elea-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#425d4a")
     (bg-hl-line "#2f413f")
     (bg-paren-match "#3f6f5f")
-    (bg-region "#543040")
     (bg-err "#551525") ; check with err
     (bg-warning "#424223") ; check with warning
     (bg-info "#104420") ; check with info
+    (bg-region "#543040")))
 
-    (err red-warmer)
+(defconst ef-elea-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green-cooler)
 
     (fg-link green-warmer)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name green)
     (keybind magenta)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type cyan)
     (variable magenta)
     (variable-use magenta-faint)
-    (rx-escape magenta-cooler) ; compare with `string'
+    (rx-backslash magenta-cooler) ; compare with `string'
     (rx-construct red)
 
     (accent-0 green-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan-cooler)
     (date-weekend red-faint)
 
-    (prose-code magenta)
+    (fg-prose-code magenta)
     (prose-done green-warmer)
-    (prose-macro magenta-cooler)
+    (fg-prose-macro magenta-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag cyan-faint)
     (prose-todo red-warmer)
-    (prose-verbatim cyan-cooler)
+    (fg-prose-verbatim cyan-cooler)
 
     (mail-cite-0 cyan-cooler)
     (mail-cite-1 magenta)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta)
     (rainbow-6 green)
     (rainbow-7 yellow-cooler)
-    (rainbow-8 blue-faint))
-  "Legible dark green theme with brown, magenta, and green colors.")
+    (rainbow-8 blue-faint)))
 
 (defcustom ef-elea-dark-palette-overrides nil
   "Overrides for `ef-elea-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-elea-dark-palette
-  (append ef-themes-common-palette-overrides ef-elea-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-elea-dark-palette-partial
+   nil
+   nil
+   (append ef-elea-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-elea-dark
  'ef-themes
  "Legible dark green theme with brown, magenta, and green colors."
  'dark
- 'modus-vivendi-palette
  'ef-elea-dark-palette
+ nil
  'ef-elea-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-elea-light-theme.el b/ef-elea-light-theme.el
index 3ed47e16e8..30147bbb22 100644
--- a/ef-elea-light-theme.el
+++ b/ef-elea-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#b5dfbf")
     (bg-hl-line "#d0e7c4")
     (bg-paren-match "#8ad3a2")
-    (bg-region "#d9d2ef")
     (bg-err "#f2d5b5") ; check with err
     (bg-warning "#e8e8aa") ; check with warning
     (bg-info "#b4efc6") ; check with info
+    (bg-region "#d9d2ef")))
 
-    (err red-warmer)
+(defconst ef-elea-light-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green-cooler)
 
     (fg-link green)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name green-warmer)
     (keybind magenta)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type blue-cooler)
     (variable magenta)
     (variable-use magenta-faint)
-    (rx-escape magenta-cooler) ; compare with `string'
+    (rx-backslash magenta-cooler) ; compare with `string'
     (rx-construct red)
 
     (accent-0 green-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan-cooler)
     (date-weekend red-faint)
 
-    (prose-code magenta)
+    (fg-prose-code magenta)
     (prose-done green-cooler)
-    (prose-macro magenta-cooler)
+    (fg-prose-macro magenta-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag cyan-faint)
     (prose-todo red)
-    (prose-verbatim cyan-cooler)
+    (fg-prose-verbatim cyan-cooler)
 
     (mail-cite-0 cyan-cooler)
     (mail-cite-1 magenta)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta-warmer)
     (rainbow-6 green)
     (rainbow-7 yellow)
-    (rainbow-8 magenta-faint))
-  "Legible light green theme with brown, magenta, and green colors.")
+    (rainbow-8 magenta-faint)))
 
 (defcustom ef-elea-light-palette-overrides nil
   "Overrides for `ef-elea-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-elea-light-palette
-  (append ef-themes-common-palette-overrides ef-elea-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-elea-light-palette-partial
+   nil
+   nil
+   (append ef-elea-light-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-elea-light
  'ef-themes
  "Legible light green theme with brown, magenta, and green colors."
  'light
- 'modus-operandi-palette
  'ef-elea-light-palette
+ nil
  'ef-elea-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-frost-theme.el b/ef-frost-theme.el
index ebfd02df86..20315ffad4 100644
--- a/ef-frost-theme.el
+++ b/ef-frost-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#aae0bf")
     (bg-hl-line "#dff6e4")
     (bg-paren-match "#cab0ef")
-    (bg-region "#d4eaf3")
     (bg-err "#ffdfda") ; check with err
     (bg-warning "#ffe9bf") ; check with warning
     (bg-info "#ccefcf") ; check with info
+    (bg-region "#d4eaf3")))
 
-    (err red)
+(defconst ef-frost-palette-mappings-partial
+  '((err red)
     (warning yellow-cooler)
     (info green)
 
     (fg-link cyan)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name cyan-warmer)
     (keybind blue-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type magenta-cooler)
     (variable cyan-warmer)
     (variable-use cyan-faint)
-    (rx-escape yellow-cooler) ; compare with `string'
+    (rx-backslash yellow-cooler) ; compare with `string'
     (rx-construct red-cooler)
 
     (accent-0 blue-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code green-cooler)
+    (fg-prose-code green-cooler)
     (prose-done green)
-    (prose-macro magenta-warmer)
+    (fg-prose-macro magenta-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 blue)
     (mail-cite-1 cyan-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 blue-warmer)
     (rainbow-6 green-warmer)
     (rainbow-7 magenta)
-    (rainbow-8 cyan-warmer))
-  "Legible light cool theme with blue, cyan, teal, purple colors.")
+    (rainbow-8 cyan-warmer)))
 
 (defcustom ef-frost-palette-overrides nil
   "Overrides for `ef-frost-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-frost-palette
-  (append ef-themes-common-palette-overrides ef-frost-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-frost-palette-partial
+   nil
+   nil
+   (append ef-frost-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-frost
  'ef-themes
  "Legible light cool theme with blue, cyan, teal, purple colors."
  'light
- 'modus-operandi-palette
  'ef-frost-palette
+ nil
  'ef-frost-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-kassio-theme.el b/ef-kassio-theme.el
index 9491d3ed80..c35496d1b9 100644
--- a/ef-kassio-theme.el
+++ b/ef-kassio-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#efd5ff")
     (bg-hl-line "#f2e5d9")
     (bg-paren-match "#b0dffa")
-    (bg-region "#dfe4f4")
     (bg-err "#ffdde5") ; check with err
     (bg-warning "#ffe0aa") ; check with warning
     (bg-info "#ddf5cc") ; check with info
+    (bg-region "#dfe4f4")))
 
-    (err red-warmer)
+(defconst ef-kassio-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link blue)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name magenta)
     (keybind red)
     (identifier yellow-cooler)
@@ -136,7 +137,7 @@
     (type red)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape cyan-cooler) ; compare with `string'
+    (rx-backslash cyan-cooler) ; compare with `string'
     (rx-construct red-cooler)
 
     (accent-0 blue)
@@ -156,16 +157,16 @@
     (date-weekday blue)
     (date-weekend red)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green-warmer)
-    (prose-macro magenta-cooler)
+    (fg-prose-macro magenta-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table yellow-faint)
     (prose-table-formula info)
     (prose-tag magenta-faint)
     (prose-todo red-warmer)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 yellow-cooler)
     (mail-cite-1 magenta-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta-warmer)
     (rainbow-6 red-cooler)
     (rainbow-7 cyan-cooler)
-    (rainbow-8 green-cooler))
-  "Legible light grey theme with blue, red, magenta, and earthly colors.")
+    (rainbow-8 green-cooler)))
 
 (defcustom ef-kassio-palette-overrides nil
   "Overrides for `ef-kassio-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-kassio-palette
-  (append ef-themes-common-palette-overrides ef-kassio-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-kassio-palette-partial
+   nil
+   nil
+   (append ef-kassio-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-kassio
  'ef-themes
  "Legible light grey theme with blue, red, magenta, and earthly colors."
  'light
- 'modus-operandi-palette
  'ef-kassio-palette
+ nil
  'ef-kassio-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-light-theme.el b/ef-light-theme.el
index 62d5b76482..6813620457 100644
--- a/ef-light-theme.el
+++ b/ef-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#ccbfff")
     (bg-hl-line "#e4efd8")
     (bg-paren-match "#dfa0f3")
-    (bg-region "#bfefff")
     (bg-err "#ffd5ea") ; check with err
     (bg-warning "#ffeabb") ; check with warning
     (bg-info "#d0efda") ; check with info
+    (bg-region "#bfefff")))
 
-    (err red-warmer)
+(defconst ef-light-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link blue-warmer)
-    (fg-link-alt magenta)
+    (fg-link-visited magenta)
     (name magenta-cooler)
     (keybind blue-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape green-cooler) ; compare with `string'
+    (rx-backslash green-cooler) ; compare with `string'
     (rx-construct magenta)
 
     (accent-0 blue-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag green-faint)
     (prose-todo red-warmer)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 blue-warmer)
     (mail-cite-1 magenta)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta-cooler)
     (rainbow-6 red-cooler)
     (rainbow-7 green-cooler)
-    (rainbow-8 yellow))
-  "Legible light theme with blue, magenta, cyan, purple colors.")
+    (rainbow-8 yellow)))
 
 (defcustom ef-light-palette-overrides nil
   "Overrides for `ef-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-light-palette
-  (append ef-themes-common-palette-overrides ef-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-light-palette-partial
+   nil
+   nil
+   (append ef-light-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-light
  'ef-themes
  "Legible light theme with blue, magenta, cyan, purple colors."
  'light
- 'modus-operandi-palette
  'ef-light-palette
+ nil
  'ef-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-maris-dark-theme.el b/ef-maris-dark-theme.el
index d71c50c925..829a1e9aab 100644
--- a/ef-maris-dark-theme.el
+++ b/ef-maris-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#49516a")
     (bg-hl-line "#243242")
     (bg-paren-match "#6c5d54")
-    (bg-region "#183c65")
     (bg-err "#551327") ; check with err
     (bg-warning "#403f22") ; check with warning
     (bg-info "#104324") ; check with info
+    (bg-region "#183c65")))
 
-    (err red-warmer)
+(defconst ef-maris-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green-cooler)
 
     (fg-link blue)
-    (fg-link-alt magenta-cooler)
+    (fg-link-visited magenta-cooler)
     (name blue)
     (keybind blue-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green)
     (variable cyan)
     (variable-use cyan-faint)
-    (rx-escape yellow) ; compare with `string'
+    (rx-backslash yellow) ; compare with `string'
     (rx-construct red)
 
     (accent-0 blue-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan-warmer)
     (date-weekend red-faint)
 
-    (prose-code cyan)
+    (fg-prose-code cyan)
     (prose-done green-cooler)
-    (prose-macro magenta-cooler)
+    (fg-prose-macro magenta-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag cyan-faint)
     (prose-todo red-cooler)
-    (prose-verbatim green-warmer)
+    (fg-prose-verbatim green-warmer)
 
     (mail-cite-0 cyan-cooler)
     (mail-cite-1 magenta)
@@ -196,8 +197,7 @@
     (rainbow-5 blue-cooler)
     (rainbow-6 magenta)
     (rainbow-7 cyan-cooler)
-    (rainbow-8 yellow-cooler))
-  "Legible dark marine theme with blue, cyan, and green colors.")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-maris-dark-palette-overrides nil
   "Overrides for `ef-maris-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-maris-dark-palette
-  (append ef-themes-common-palette-overrides ef-maris-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-maris-dark-palette-partial
+   nil
+   nil
+   (append ef-maris-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-maris-dark
  'ef-themes
  "Legible dark marine theme with blue, cyan, and green colors."
  'dark
- 'modus-vivendi-palette
  'ef-maris-dark-palette
+ nil
  'ef-maris-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-maris-light-theme.el b/ef-maris-light-theme.el
index eff1aada46..a8cd2f5b50 100644
--- a/ef-maris-light-theme.el
+++ b/ef-maris-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#b7bbea")
     (bg-hl-line "#dae5f0")
     (bg-paren-match "#cab3b2")
-    (bg-region "#c8dcff")
     (bg-err "#f2c2b5") ; check with err
     (bg-warning "#e8df9a") ; check with warning
     (bg-info "#a4e2cf") ; check with info
+    (bg-region "#c8dcff")))
 
-    (err red-warmer)
+(defconst ef-maris-light-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green-cooler)
 
     (fg-link blue)
-    (fg-link-alt magenta-cooler)
+    (fg-link-visited magenta-cooler)
     (name blue)
     (keybind blue-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type green)
     (variable cyan)
     (variable-use cyan-faint)
-    (rx-escape yellow) ; compare with `string'
+    (rx-backslash yellow) ; compare with `string'
     (rx-construct red)
 
     (accent-0 blue-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan-warmer)
     (date-weekend red-faint)
 
-    (prose-code cyan)
+    (fg-prose-code cyan)
     (prose-done green-cooler)
-    (prose-macro magenta-cooler)
+    (fg-prose-macro magenta-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag cyan-faint)
     (prose-todo red-cooler)
-    (prose-verbatim green-warmer)
+    (fg-prose-verbatim green-warmer)
 
     (mail-cite-0 cyan)
     (mail-cite-1 magenta)
@@ -196,8 +197,7 @@
     (rainbow-5 blue-cooler)
     (rainbow-6 magenta)
     (rainbow-7 cyan-cooler)
-    (rainbow-8 yellow-cooler))
-  "Legible light marine theme with blue, cyan, and green colors.")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-maris-light-palette-overrides nil
   "Overrides for `ef-maris-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-maris-light-palette
-  (append ef-themes-common-palette-overrides ef-maris-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-maris-light-palette-partial
+   nil
+   nil
+   (append ef-maris-light-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-maris-light
  'ef-themes
  "Legible light marine theme with blue, cyan, and green colors."
  'light
- 'modus-operandi-palette
  'ef-maris-light-palette
+ nil
  'ef-maris-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-melissa-dark-theme.el b/ef-melissa-dark-theme.el
index 117c930f13..6a4670a594 100644
--- a/ef-melissa-dark-theme.el
+++ b/ef-melissa-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#5a661f")
     (bg-hl-line "#4f311f")
     (bg-paren-match "#5f6f1f")
-    (bg-region "#443a4f")
     (bg-err "#571a05") ; check with err
     (bg-warning "#4e4310") ; check with warning
     (bg-info "#2f4302") ; check with info
+    (bg-region "#443a4f")))
 
-    (err red-warmer)
+(defconst ef-melissa-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link yellow)
-    (fg-link-alt magenta-cooler)
+    (fg-link-visited magenta-cooler)
     (name yellow-cooler)
     (keybind yellow-warmer)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable cyan)
     (variable-use cyan-faint)
-    (rx-escape green) ; compare with `string'
+    (rx-backslash green) ; compare with `string'
     (rx-construct magenta-cooler)
 
     (accent-0 yellow-warmer)
@@ -156,16 +157,16 @@
     (date-weekday green-warmer)
     (date-weekend red-cooler)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done green)
-    (prose-macro green-warmer)
+    (fg-prose-macro green-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim red)
+    (fg-prose-verbatim red)
 
     (mail-cite-0 yellow-warmer)
     (mail-cite-1 blue-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta)
     (rainbow-6 green-cooler)
     (rainbow-7 magenta-warmer)
-    (rainbow-8 cyan-cooler))
-  "Legible dark honeybee theme with warm colors (yellow, red, green, cyan).")
+    (rainbow-8 cyan-cooler)))
 
 (defcustom ef-melissa-dark-palette-overrides nil
   "Overrides for `ef-melissa-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-melissa-dark-palette
-  (append ef-themes-common-palette-overrides ef-melissa-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-melissa-dark-palette-partial
+   nil
+   nil
+   (append ef-melissa-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-melissa-dark
  'ef-themes
  "Legible dark honeybee theme with warm colors (yellow, red, green, cyan)."
  'dark
- 'modus-vivendi-palette
  'ef-melissa-dark-palette
+ nil
  'ef-melissa-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-melissa-light-theme.el b/ef-melissa-light-theme.el
index cb5253596c..4e6749fccf 100644
--- a/ef-melissa-light-theme.el
+++ b/ef-melissa-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#c4d47a")
     (bg-hl-line "#fae7b0")
     (bg-paren-match "#afcf8f")
-    (bg-region "#f0d4d8")
     (bg-err "#ffd4b5") ; check with err
     (bg-warning "#ffe89f") ; check with warning
     (bg-info "#ddf5ac") ; check with info
+    (bg-region "#f0d4d8")))
 
-    (err red-warmer)
+(defconst ef-melissa-light-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
     (fg-link yellow)
-    (fg-link-alt magenta-cooler)
+    (fg-link-visited magenta-cooler)
     (name yellow-cooler)
     (keybind yellow-warmer)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape green) ; compare with `string'
+    (rx-backslash green) ; compare with `string'
     (rx-construct magenta-cooler)
 
     (accent-0 yellow-warmer)
@@ -156,16 +157,16 @@
     (date-weekday green-warmer)
     (date-weekend red-faint)
 
-    (prose-code yellow-warmer)
+    (fg-prose-code yellow-warmer)
     (prose-done green)
-    (prose-macro green-warmer)
+    (fg-prose-macro green-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim red)
+    (fg-prose-verbatim red)
 
     (mail-cite-0 yellow-warmer)
     (mail-cite-1 cyan-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 magenta)
     (rainbow-6 green-cooler)
     (rainbow-7 magenta-warmer)
-    (rainbow-8 cyan-cooler))
-  "Legible light honeybee theme with warm colors (yellow, red, green, cyan).")
+    (rainbow-8 cyan-cooler)))
 
 (defcustom ef-melissa-light-palette-overrides nil
   "Overrides for `ef-melissa-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-melissa-light-palette
-  (append ef-themes-common-palette-overrides ef-melissa-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-melissa-light-palette-partial
+   nil
+   nil
+   (append ef-melissa-light-palette-mappings-partial 
ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-melissa-light
  'ef-themes
  "Legible light honeybee theme with warm colors (yellow, red, green, cyan)."
  'light
- 'modus-operandi-palette
  'ef-melissa-light-palette
+ nil
  'ef-melissa-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-night-theme.el b/ef-night-theme.el
index 151b148753..7561c9692b 100644
--- a/ef-night-theme.el
+++ b/ef-night-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#493737")
     (bg-hl-line "#002255")
     (bg-paren-match "#664950")
-    (bg-region "#253146")
     (bg-err "#471014") ; check with err
     (bg-warning "#3b2f04") ; check with warning
     (bg-info "#103512") ; check with info
+    (bg-region "#253146")))
 
-    (err red)
+(defconst ef-night-palette-mappings-partial
+  '((err red)
     (warning yellow-warmer)
     (info green-cooler)
 
-    (link cyan-warmer)
-    (link-alt magenta)
+    (fg-link cyan-warmer)
+    (fg-link-visited magenta)
     (name blue-warmer)
     (keybind green-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type magenta-faint)
     (variable cyan-warmer)
     (variable-use cyan-faint)
-    (rx-escape green) ; compare with `string'
+    (rx-backslash green) ; compare with `string'
     (rx-construct magenta-warmer)
 
     (accent-0 blue-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green-cooler)
-    (prose-macro cyan-cooler)
+    (fg-prose-macro cyan-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag fg-alt)
     (prose-todo red)
-    (prose-verbatim blue-cooler)
+    (fg-prose-verbatim blue-cooler)
 
     (mail-cite-0 blue)
     (mail-cite-1 magenta-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 green)
     (rainbow-6 yellow)
     (rainbow-7 cyan)
-    (rainbow-8 green-warmer))
-  "Legible dark sky blue theme with mostly green, blue, purple colors.")
+    (rainbow-8 green-warmer)))
 
 (defcustom ef-night-palette-overrides nil
   "Overrides for `ef-night-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-night-palette
-  (append ef-themes-common-palette-overrides ef-night-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-night-palette-partial
+   nil
+   nil
+   (append ef-night-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-night
  'ef-themes
  "Legible dark sky blue theme with mostly green, blue, purple colors."
  'dark
- 'modus-vivendi-palette
  'ef-night-palette
+ nil
  'ef-night-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-owl-theme.el b/ef-owl-theme.el
index 0fd3b7386d..614fab1b1a 100644
--- a/ef-owl-theme.el
+++ b/ef-owl-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#415960")
     (bg-hl-line "#344255")
     (bg-paren-match "#706069")
-    (bg-region "#404f66")
     (bg-err "#4f231f") ; check with err
     (bg-warning "#3f3c2f") ; check with warning
     (bg-info "#104032") ; check with info
+    (bg-region "#404f66")))
 
-    (err red-warmer)
+(defconst ef-owl-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
-    (link cyan-warmer)
-    (link-alt yellow-cooler)
+    (fg-link cyan-warmer)
+    (fg-link-visited yellow-cooler)
     (name blue)
     (keybind green-cooler)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type magenta-cooler)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape yellow) ; compare with `string'
+    (rx-backslash yellow) ; compare with `string'
     (rx-construct red)
 
     (accent-0 cyan-cooler)
@@ -156,16 +157,16 @@
     (date-weekday cyan-cooler)
     (date-weekend red-faint)
 
-    (prose-code green-warmer)
+    (fg-prose-code green-warmer)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag cyan-faint)
     (prose-todo red-warmer)
-    (prose-verbatim blue)
+    (fg-prose-verbatim blue)
 
     (mail-cite-0 cyan)
     (mail-cite-1 green-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 green-warmer)
     (rainbow-6 magenta-warmer)
     (rainbow-7 cyan-warmer)
-    (rainbow-8 yellow))
-  "Legible dark grey theme with blue, cyan, magenta and desaturated colors.")
+    (rainbow-8 yellow)))
 
 (defcustom ef-owl-palette-overrides nil
   "Overrides for `ef-owl-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-owl-palette
-  (append ef-themes-common-palette-overrides ef-owl-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-owl-palette-partial
+   nil
+   nil
+   (append ef-owl-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-owl
  'ef-themes
  "Legible dark grey theme with blue, cyan, magenta and desaturated colors."
  'dark
- 'modus-vivendi-palette
  'ef-owl-palette
+ nil
  'ef-owl-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-reverie-theme.el b/ef-reverie-theme.el
index c09eafb66c..e1bfff21fc 100644
--- a/ef-reverie-theme.el
+++ b/ef-reverie-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#d0c4e4")
     (bg-hl-line "#e7d9e0")
     (bg-paren-match "#bf9fbf")
-    (bg-region "#e0d0ba")
     (bg-err "#ffc4d4") ; check with err
     (bg-warning "#f0e0a4") ; check with warning
     (bg-info "#dddef0") ; check with info
+    (bg-region "#e0d0ba")))
 
-    (err magenta-warmer)
+(defconst ef-reverie-palette-mappings-partial
+  '((err magenta-warmer)
     (warning yellow-warmer)
     (info cyan)
 
-    (link yellow-cooler)
-    (link-alt cyan-warmer)
+    (fg-link yellow-cooler)
+    (fg-link-visited cyan-warmer)
     (name cyan-warmer)
     (keybind cyan)
     (identifier yellow-cooler)
@@ -136,7 +137,7 @@
     (type green-faint)
     (variable magenta)
     (variable-use magenta-faint)
-    (rx-escape cyan-cooler) ; compare with `string'
+    (rx-backslash cyan-cooler) ; compare with `string'
     (rx-construct red-warmer)
 
     (accent-0 yellow)
@@ -156,16 +157,16 @@
     (date-weekday magenta)
     (date-weekend blue-faint)
 
-    (prose-code blue-warmer)
+    (fg-prose-code blue-warmer)
     (prose-done cyan-cooler)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo yellow-warmer)
-    (prose-verbatim magenta-warmer)
+    (fg-prose-verbatim magenta-warmer)
 
     (mail-cite-0 yellow-cooler)
     (mail-cite-1 red-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 green-cooler)
     (rainbow-6 cyan)
     (rainbow-7 yellow)
-    (rainbow-8 red-faint))
-  "Legible light cream theme with gold and nuanced colors.")
+    (rainbow-8 red-faint)))
 
 (defcustom ef-reverie-palette-overrides nil
   "Overrides for `ef-reverie-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-reverie-palette
-  (append ef-themes-common-palette-overrides ef-reverie-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-reverie-palette-partial
+   nil
+   nil
+   (append ef-reverie-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-reverie
  'ef-themes
  "Legible light cream theme with gold and nuanced colors."
  'light
- 'modus-operandi-palette
  'ef-reverie-palette
+ nil
  'ef-reverie-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-rosa-theme.el b/ef-rosa-theme.el
index 084ea4eb90..38c4c8bd87 100644
--- a/ef-rosa-theme.el
+++ b/ef-rosa-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#6a4f5f")
     (bg-hl-line "#42352f")
     (bg-paren-match "#7c454f")
-    (bg-region "#45524a")
     (bg-err "#551a07") ; check with err
     (bg-warning "#4f3f13") ; check with warning
     (bg-info "#0f4312") ; check with info
+    (bg-region "#45524a")))
 
-    (err red-warmer)
+(defconst ef-rosa-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
-    (link green-cooler)
-    (link-alt magenta-cooler)
+    (fg-link green-cooler)
+    (fg-link-visited magenta-cooler)
     (name magenta-warmer)
     (keybind magenta-warmer)
     (identifier green-faint)
@@ -136,7 +137,7 @@
     (type cyan-warmer)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape red-cooler) ; compare with `string'
+    (rx-backslash red-cooler) ; compare with `string'
     (rx-construct blue-cooler)
 
     (accent-0 green-warmer)
@@ -156,16 +157,16 @@
     (date-weekday magenta-cooler)
     (date-weekend red-cooler)
 
-    (prose-code magenta-warmer)
+    (fg-prose-code magenta-warmer)
     (prose-done green-cooler)
-    (prose-macro red-cooler)
+    (fg-prose-macro red-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim cyan-cooler)
+    (fg-prose-verbatim cyan-cooler)
 
     (mail-cite-0 green-warmer)
     (mail-cite-1 cyan-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 red-cooler)
     (rainbow-6 green)
     (rainbow-7 yellow-warmer)
-    (rainbow-8 cyan-cooler))
-  "Legible dark rosewood theme with magenta and green colors.")
+    (rainbow-8 cyan-cooler)))
 
 (defcustom ef-rosa-palette-overrides nil
   "Overrides for `ef-rosa-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-rosa-palette
-  (append ef-themes-common-palette-overrides ef-rosa-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-rosa-palette-partial
+   nil
+   nil
+   (append ef-rosa-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-rosa
  'ef-themes
  "Legible dark rosewood theme with magenta and green colors."
  'dark
- 'modus-vivendi-palette
  'ef-rosa-palette
+ nil
  'ef-rosa-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-spring-theme.el b/ef-spring-theme.el
index f6c0187560..e4a95f9297 100644
--- a/ef-spring-theme.el
+++ b/ef-spring-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#f0bfff")
     (bg-hl-line "#f9e0e5")
     (bg-paren-match "#7fddd0")
-    (bg-region "#d0e6ff")
     (bg-err "#ffe8e0") ; check with err
     (bg-warning "#ffecba") ; check with warning
     (bg-info "#ccf5dd") ; check with info
+    (bg-region "#d0e6ff")))
 
-    (err red-warmer)
+(defconst ef-spring-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
-    (link cyan-cooler)
-    (link-alt yellow-cooler)
+    (fg-link cyan-cooler)
+    (fg-link-visited yellow-cooler)
     (name green-cooler)
     (keybind magenta-warmer)
     (identifier magenta-faint)
@@ -136,7 +137,7 @@
     (type magenta-cooler)
     (variable cyan)
     (variable-use cyan-faint)
-    (rx-escape cyan) ; compare with `string'
+    (rx-backslash cyan) ; compare with `string'
     (rx-construct magenta-warmer)
 
     (accent-0 green)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code red-cooler)
+    (fg-prose-code red-cooler)
     (prose-done green)
-    (prose-macro blue)
+    (fg-prose-macro blue)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag magenta-faint)
     (prose-todo red-warmer)
-    (prose-verbatim green)
+    (fg-prose-verbatim green)
 
     (mail-cite-0 green)
     (mail-cite-1 yellow-cooler)
@@ -196,8 +197,7 @@
     (rainbow-5 cyan)
     (rainbow-6 magenta)
     (rainbow-7 magenta-cooler)
-    (rainbow-8 yellow-cooler))
-  "Legible light floral theme with cool, varied colors (green, cyan, red).")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-spring-palette-overrides nil
   "Overrides for `ef-spring-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-spring-palette
-  (append ef-themes-common-palette-overrides ef-spring-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-spring-palette-partial
+   nil
+   nil
+   (append ef-spring-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-spring
  'ef-themes
  "Legible light floral theme with cool, varied colors (green, cyan, red)."
  'light
- 'modus-operandi-palette
  'ef-spring-palette
+ nil
  'ef-spring-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-summer-theme.el b/ef-summer-theme.el
index 9f444b7b9e..a3cb4eb006 100644
--- a/ef-summer-theme.el
+++ b/ef-summer-theme.el
@@ -109,17 +109,18 @@
     (bg-hover-secondary "#aaeccf")
     (bg-hl-line "#ffd6e5")
     (bg-paren-match "#9fc0ef")
-    (bg-region "#eecfff")
     (bg-err "#ffd0e6") ; check with err
     (bg-warning "#ffe5ba") ; check with warning
     (bg-info "#bbefda") ; check with info
+    (bg-region "#eecfff")))
 
-    (err red-warmer)
+(defconst ef-summer-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green-cooler)
 
-    (link blue)
-    (link-alt green-cooler)
+    (fg-link blue)
+    (fg-link-visited green-cooler)
     (name magenta-warmer)
     (keybind red-cooler)
     (identifier magenta-faint)
@@ -137,7 +138,7 @@
     (type cyan-warmer)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape cyan-cooler) ; compare with `string'
+    (rx-backslash cyan-cooler) ; compare with `string'
     (rx-construct red-cooler)
 
     (accent-0 magenta-cooler)
@@ -157,16 +158,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow)
+    (fg-prose-code yellow)
     (prose-done green-cooler)
-    (prose-macro cyan-cooler)
+    (fg-prose-macro cyan-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag yellow-faint)
     (prose-todo red-warmer)
-    (prose-verbatim magenta-cooler)
+    (fg-prose-verbatim magenta-cooler)
 
     (mail-cite-0 yellow-cooler)
     (mail-cite-1 magenta)
@@ -195,8 +196,7 @@
     (rainbow-5 blue-warmer)
     (rainbow-6 red-cooler)
     (rainbow-7 cyan-cooler)
-    (rainbow-8 yellow-cooler))
-  "Legible light warm pink theme with magenta, purple, gold, cyan colors.")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-summer-palette-overrides nil
   "Overrides for `ef-summer-palette'.
@@ -216,15 +216,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-summer-palette
-  (append ef-themes-common-palette-overrides ef-summer-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-summer-palette-partial
+   nil
+   nil
+   (append ef-summer-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-summer
  'ef-themes
  "Legible light warm pink theme with magenta, purple, gold, cyan colors."
  'light
- 'modus-operandi-palette
  'ef-summer-palette
+ nil
  'ef-summer-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-symbiosis-theme.el b/ef-symbiosis-theme.el
index e548a355fe..defa43cc0c 100644
--- a/ef-symbiosis-theme.el
+++ b/ef-symbiosis-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#5f3f3a")
     (bg-hl-line "#1f2f3f")
     (bg-paren-match "#005f4a")
-    (bg-region "#3f2f40")
     (bg-err "#461309") ; check with err
     (bg-warning "#3a3104") ; check with warning
     (bg-info "#163505") ; check with info
+    (bg-region "#3f2f40")))
 
-    (err red-warmer)
+(defconst ef-symbiosis-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
-    (link cyan)
-    (link-alt magenta-cooler)
+    (fg-link cyan)
+    (fg-link-visited magenta-cooler)
     (name blue)
     (keybind yellow-cooler)
     (identifier yellow-faint)
@@ -136,7 +137,7 @@
     (type green-cooler)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape green-cooler) ; compare with `string'
+    (rx-backslash green-cooler) ; compare with `string'
     (rx-construct red)
 
     (accent-0 cyan)
@@ -156,16 +157,16 @@
     (date-weekday yellow-cooler)
     (date-weekend blue)
 
-    (prose-code cyan-cooler)
+    (fg-prose-code cyan-cooler)
     (prose-done green)
-    (prose-macro green-warmer)
+    (fg-prose-macro green-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula warning)
     (prose-tag magenta-faint)
     (prose-todo red)
-    (prose-verbatim blue-warmer)
+    (fg-prose-verbatim blue-warmer)
 
     (mail-cite-0 yellow-cooler)
     (mail-cite-1 blue-faint)
@@ -196,8 +197,7 @@
     (rainbow-5 green-cooler)
     (rainbow-6 red-faint)
     (rainbow-7 yellow)
-    (rainbow-8 cyan-warmer))
-  "Legible dark brown-black theme with blue, green, cyan, gold colors.")
+    (rainbow-8 cyan-warmer)))
 
 (defcustom ef-symbiosis-palette-overrides nil
   "Overrides for `ef-symbiosis-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-symbiosis-palette
-  (append ef-themes-common-palette-overrides ef-symbiosis-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-symbiosis-palette-partial
+   nil
+   nil
+   (append ef-symbiosis-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-symbiosis
  'ef-themes
  "Legible dark brown-black theme with blue, green, cyan, gold colors."
  'dark
- 'modus-vivendi-palette
  'ef-symbiosis-palette
+ nil
  'ef-symbiosis-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-trio-dark-theme.el b/ef-trio-dark-theme.el
index 454fbcdd98..13921baba1 100644
--- a/ef-trio-dark-theme.el
+++ b/ef-trio-dark-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#452f5f")
     (bg-hl-line "#34223f")
     (bg-paren-match "#2f605e")
-    (bg-region "#16304f")
     (bg-err "#461018") ; check with err
     (bg-warning "#3a330f") ; check with warning
     (bg-info "#103515") ; check with info
+    (bg-region "#16304f")))
 
-    (err red-warmer)
+(defconst ef-trio-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
-    (link cyan)
-    (link-alt green-warmer)
+    (fg-link cyan)
+    (fg-link-visited green-warmer)
     (name blue)
     (keybind magenta-warmer)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type cyan-cooler)
     (variable cyan-warmer)
     (variable-use cyan-faint)
-    (rx-escape blue-warmer) ; compare with `string'
+    (rx-backslash blue-warmer) ; compare with `string'
     (rx-construct red)
 
     (accent-0 magenta-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code green-cooler)
+    (fg-prose-code green-cooler)
     (prose-done green)
-    (prose-macro blue-warmer)
+    (fg-prose-macro blue-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag magenta-faint)
     (prose-todo red-warmer)
-    (prose-verbatim magenta-warmer)
+    (fg-prose-verbatim magenta-warmer)
 
     (mail-cite-0 blue-warmer)
     (mail-cite-1 magenta-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 green-warmer)
     (rainbow-6 magenta-cooler)
     (rainbow-7 cyan-warmer)
-    (rainbow-8 yellow-cooler))
-  "Legible dark purple grey theme with magenta, blue, teal colors.")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-trio-dark-palette-overrides nil
   "Overrides for `ef-trio-dark-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-trio-dark-palette
-  (append ef-themes-common-palette-overrides ef-trio-dark-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-trio-dark-palette-partial
+   nil
+   nil
+   (append ef-trio-dark-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-trio-dark
  'ef-themes
  "Legible dark purple grey theme with magenta, blue, teal colors."
  'dark
- 'modus-vivendi-palette
  'ef-trio-dark-palette
+ nil
  'ef-trio-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-trio-light-theme.el b/ef-trio-light-theme.el
index f2b124a71e..685de1b1c1 100644
--- a/ef-trio-light-theme.el
+++ b/ef-trio-light-theme.el
@@ -108,17 +108,18 @@
     (bg-hover-secondary "#b4cfff")
     (bg-hl-line "#cfe6ff")
     (bg-paren-match "#dfadaf")
-    (bg-region "#eed0ff")
     (bg-err "#ffdfe6") ; check with err
     (bg-warning "#ffe5bf") ; check with warning
     (bg-info "#d0efdf") ; check with info
+    (bg-region "#eed0ff")))
 
-    (err red-warmer)
+(defconst ef-trio-light-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow-warmer)
     (info green)
 
-    (link cyan)
-    (link-alt green-warmer)
+    (fg-link cyan)
+    (fg-link-visited green-warmer)
     (name blue)
     (keybind magenta-warmer)
     (identifier red-faint)
@@ -136,7 +137,7 @@
     (type cyan-cooler)
     (variable cyan-warmer)
     (variable-use cyan-faint)
-    (rx-escape blue-warmer) ; compare with `string'
+    (rx-backslash blue-warmer) ; compare with `string'
     (rx-construct red)
 
     (accent-0 magenta-warmer)
@@ -156,16 +157,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code green-cooler)
+    (fg-prose-code green-cooler)
     (prose-done green)
-    (prose-macro blue-warmer)
+    (fg-prose-macro blue-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag magenta-faint)
     (prose-todo red-warmer)
-    (prose-verbatim magenta-warmer)
+    (fg-prose-verbatim magenta-warmer)
 
     (mail-cite-0 blue-warmer)
     (mail-cite-1 magenta-warmer)
@@ -196,8 +197,7 @@
     (rainbow-5 green-warmer)
     (rainbow-6 magenta-cooler)
     (rainbow-7 cyan-warmer)
-    (rainbow-8 yellow-cooler))
-  "Legible light purple grey theme with magenta, blue, and teal colors.")
+    (rainbow-8 yellow-cooler)))
 
 (defcustom ef-trio-light-palette-overrides nil
   "Overrides for `ef-trio-light-palette'.
@@ -217,15 +217,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-trio-light-palette
-  (append ef-themes-common-palette-overrides ef-trio-light-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-trio-light-palette-partial
+   nil
+   nil
+   (append ef-trio-light-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-trio-light
  'ef-themes
  "Legible light purple grey theme with magenta, blue, and teal colors."
  'light
- 'modus-operandi-palette
  'ef-trio-light-palette
+ nil
  'ef-trio-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-tritanopia-dark-theme.el b/ef-tritanopia-dark-theme.el
index d807dc6625..bd783a398b 100644
--- a/ef-tritanopia-dark-theme.el
+++ b/ef-tritanopia-dark-theme.el
@@ -111,17 +111,18 @@
     (bg-hover-secondary "#5e3e5b")
     (bg-hl-line "#3f1515")
     (bg-paren-match "#2f5f7a")
-    (bg-region "#293140")
     (bg-err "#451212") ; check with err
     (bg-warning "#40173d") ; check with warning
     (bg-info "#00354f") ; check with info
+    (bg-region "#293140")))
 
-    (err red-warmer)
+(defconst ef-tritanopia-dark-palette-mappings-partial
+  '((err red-warmer)
     (warning magenta-warmer)
     (info cyan)
 
-    (link cyan)
-    (link-alt magenta-cooler)
+    (fg-link cyan)
+    (fg-link-visited magenta-cooler)
     (name magenta)
     (keybind red-cooler)
     (identifier magenta-faint)
@@ -139,7 +140,7 @@
     (type cyan-warmer)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape cyan-cooler) ; compare with `string'
+    (rx-backslash cyan-cooler) ; compare with `string'
     (rx-construct red)
 
     (accent-0 cyan)
@@ -159,16 +160,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code red)
+    (fg-prose-code red)
     (prose-done cyan)
-    (prose-macro cyan-warmer)
+    (fg-prose-macro cyan-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag fg-alt)
     (prose-todo red-warmer)
-    (prose-verbatim cyan)
+    (fg-prose-verbatim cyan)
 
     (mail-cite-0 cyan)
     (mail-cite-1 red-cooler)
@@ -199,8 +200,7 @@
     (rainbow-5 magenta)
     (rainbow-6 cyan-faint)
     (rainbow-7 magenta-faint)
-    (rainbow-8 red-faint))
-  "Legible dark theme, optimized for blue-yellow color deficiency.")
+    (rainbow-8 red-faint)))
 
 (defcustom ef-tritanopia-dark-palette-overrides nil
   "Overrides for `ef-tritanopia-dark-palette'.
@@ -220,15 +220,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-tritanopia-dark-palette
-  (append ef-themes-common-palette-overrides 
ef-tritanopia-dark-palette-partial ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-tritanopia-dark-palette-partial
+   nil
+   nil
+   (append ef-tritanopia-dark-palette-mappings-partial 
ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-tritanopia-dark
  'ef-themes
  "Legible dark theme, optimized for blue-yellow color deficiency."
  'dark
- 'modus-vivendi-tritanopia-palette
  'ef-tritanopia-dark-palette
+ nil
  'ef-tritanopia-dark-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-tritanopia-light-theme.el b/ef-tritanopia-light-theme.el
index 97cad5dd28..97ab7cb94a 100644
--- a/ef-tritanopia-light-theme.el
+++ b/ef-tritanopia-light-theme.el
@@ -111,17 +111,18 @@
     (bg-hover-secondary "#eda9dc")
     (bg-hl-line "#ffdadf")
     (bg-paren-match "#8fc0cf")
-    (bg-region "#dadadf")
     (bg-err "#ffbfca") ; check with err
     (bg-warning "#efcae6") ; check with warning
     (bg-info "#cfdfef") ; check with info
+    (bg-region "#dadadf")))
 
-    (err red-warmer)
+(defconst ef-tritanopia-light-palette-mappings-partial
+  '((err red-warmer)
     (warning magenta)
     (info cyan)
 
-    (link cyan)
-    (link-alt magenta-cooler)
+    (fg-link cyan)
+    (fg-link-visited magenta-cooler)
     (name magenta)
     (keybind red-cooler)
     (identifier magenta-faint)
@@ -139,7 +140,7 @@
     (type cyan-warmer)
     (variable cyan-cooler)
     (variable-use cyan-faint)
-    (rx-escape cyan-warmer) ; compare with `string'
+    (rx-backslash cyan-warmer) ; compare with `string'
     (rx-construct red-warmer)
 
     (accent-0 cyan)
@@ -159,16 +160,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code red)
+    (fg-prose-code red)
     (prose-done cyan)
-    (prose-macro cyan-warmer)
+    (fg-prose-macro cyan-warmer)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula err)
     (prose-tag fg-alt)
     (prose-todo red-warmer)
-    (prose-verbatim cyan)
+    (fg-prose-verbatim cyan)
 
     (mail-cite-0 cyan-cooler)
     (mail-cite-1 red-cooler)
@@ -199,8 +200,7 @@
     (rainbow-5 magenta)
     (rainbow-6 cyan-faint)
     (rainbow-7 magenta-faint)
-    (rainbow-8 red-faint))
-  "Legible light theme, optimized for blue-yellow color deficiency.")
+    (rainbow-8 red-faint)))
 
 (defcustom ef-tritanopia-light-palette-overrides nil
   "Overrides for `ef-tritanopia-light-palette'.
@@ -220,15 +220,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-tritanopia-light-palette
-  (append ef-themes-common-palette-overrides 
ef-tritanopia-light-palette-partial ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-tritanopia-light-palette-partial
+   nil
+   nil
+   (append ef-tritanopia-light-palette-mappings-partial 
ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-tritanopia-light
  'ef-themes
  "Legible light theme, optimized for blue-yellow color deficiency."
  'light
- 'modus-operandi-tritanopia-palette
  'ef-tritanopia-light-palette
+ nil
  'ef-tritanopia-light-palette-overrides
  'ef-themes-custom-faces)
 
diff --git a/ef-winter-theme.el b/ef-winter-theme.el
index b185bdcef6..5a9a7b9457 100644
--- a/ef-winter-theme.el
+++ b/ef-winter-theme.el
@@ -109,17 +109,18 @@
     (bg-hover-secondary "#44196f")
     (bg-hl-line "#003045")
     (bg-paren-match "#2f608e")
-    (bg-region "#342464")
     (bg-err "#44101a") ; check with err
     (bg-warning "#393312") ; check with warning
     (bg-info "#0f3518") ; check with info
+    (bg-region "#342464")))
 
-    (err red-warmer)
+(defconst ef-winter-palette-mappings-partial
+  '((err red-warmer)
     (warning yellow)
     (info green)
 
-    (link magenta)
-    (link-alt cyan-warmer)
+    (fg-link magenta)
+    (fg-link-visited cyan-warmer)
     (name magenta)
     (keybind cyan-cooler)
     (identifier magenta-faint)
@@ -137,7 +138,7 @@
     (type cyan)
     (variable blue-warmer)
     (variable-use blue-faint)
-    (rx-escape green) ; compare with `string'
+    (rx-backslash green) ; compare with `string'
     (rx-construct blue)
 
     (accent-0 magenta-cooler)
@@ -157,16 +158,16 @@
     (date-weekday cyan)
     (date-weekend red-faint)
 
-    (prose-code yellow)
+    (fg-prose-code yellow)
     (prose-done green)
-    (prose-macro green-cooler)
+    (fg-prose-macro green-cooler)
     (prose-metadata fg-dim)
     (prose-metadata-value fg-alt)
     (prose-table fg-alt)
     (prose-table-formula info)
     (prose-tag cyan-faint)
     (prose-todo red-warmer)
-    (prose-verbatim magenta-cooler)
+    (fg-prose-verbatim magenta-cooler)
 
     (mail-cite-0 magenta-cooler)
     (mail-cite-1 yellow-cooler)
@@ -195,8 +196,7 @@
     (rainbow-5 magenta-warmer)
     (rainbow-6 green-cooler)
     (rainbow-7 yellow-cooler)
-    (rainbow-8 cyan-warmer))
-  "Legible dark purple-black theme with magenta, purple, fawn, teal colors.")
+    (rainbow-8 cyan-warmer)))
 
 (defcustom ef-winter-palette-overrides nil
   "Overrides for `ef-winter-palette'.
@@ -216,15 +216,19 @@ further details)."
   :link '(info-link "(ef-themes) Palette overrides"))
 
 (defconst ef-winter-palette
-  (append ef-themes-common-palette-overrides ef-winter-palette-partial 
ef-themes-palette-common))
+  (modus-themes-generate-palette
+   ef-winter-palette-partial
+   nil
+   nil
+   (append ef-winter-palette-mappings-partial ef-themes-palette-common)))
 
 (modus-themes-theme
  'ef-winter
  'ef-themes
  "Legible dark purple-black theme with magenta, purple, fawn, teal colors."
  'dark
- 'modus-vivendi-palette
  'ef-winter-palette
+ nil
  'ef-winter-palette-overrides
  'ef-themes-custom-faces)
 


Reply via email to