main
  1;;; modus-alabaster-bg-dark-theme.el --- Alabaster BG dark on modus-vivendi -*- lexical-binding: t -*-
  2
  3;; Author: Vincent Demeester
  4;; Based on: https://github.com/tonsky/sublime-scheme-alabaster (Alabaster BG + Dark)
  5;;           https://github.com/dpassen/modus-alabaster
  6;; Keywords: faces, theme, accessibility
  7
  8;;; Commentary:
  9;;
 10;; Alabaster BG dark: background-wash syntax highlighting on a dark
 11;; canvas.  Strings get a dark green wash, comments a dark yellow wash,
 12;; definitions a dark blue wash.  Only constants use a distinct
 13;; foreground color.
 14
 15;;; Code:
 16
 17(require 'modus-alabaster-bg)
 18
 19(defconst modus-alabaster-bg-dark-palette
 20  (modus-themes-generate-palette
 21   '(
 22     ;; Base surfaces — Tonsky Alabaster Dark upstream values
 23     (bg-main      "#0E1415")
 24     (bg-dim       "#1D2324")   ; line_highlight (#ffffff10 over #0E1415)
 25     (bg-active    "#293334")   ; selection
 26     (bg-inactive  "#293334")
 27     (border       "#708B8D")
 28     (fringe       "#0E1415")
 29     (fg-main      "#CECECE")
 30     (fg-dim       "#708B8D")
 31     (fg-alt       "#AAAAAA")
 32     (cursor       "#CD974B")
 33
 34     ;; BG-variant background washes — dark equivalents of the light washes
 35     ;; Subtle tints over the dark background
 36     (alabaster-bg-string-bg      "#1A2A1A")   ; dark green wash
 37     (alabaster-bg-escape-bg      "#253525")   ; slightly brighter green
 38     (alabaster-bg-comment-bg     "#2A2A1A")   ; dark yellow wash
 39     (alabaster-bg-definition-bg  "#1A2030")   ; dark blue wash
 40     (alabaster-bg-error-bg       "#2B1D1E")   ; dark red wash (upstream)
 41
 42     ;; Foreground accents
 43     (alabaster-bg-constant    "#CC8BC9")
 44     (alabaster-bg-active      "#CD974B")
 45     (alabaster-bg-error-fg    "#CC3333")
 46     (alabaster-bg-punctuation "#708B8D")
 47     (alabaster-bg-operator    "#708B8D")
 48     (alabaster-bg-bracket     "#CECECE")
 49
 50     ;; Modus accent vocabulary
 51     (red          "#CC3333")
 52     (red-warmer   "#CC3333")
 53     (red-cooler   "#CC3333")
 54     (red-faint    "#CC3333")
 55     (red-intense  "#CC3333")
 56     (green        "#95CB82")
 57     (green-warmer "#95CB82")
 58     (green-cooler "#95CB82")
 59     (green-faint  "#95CB82")
 60     (green-intense "#95CB82")
 61     (yellow        "#DFDF8E")
 62     (yellow-warmer "#DFDF8E")
 63     (yellow-cooler "#DFDF8E")
 64     (yellow-faint  "#DFDF8E")
 65     (yellow-intense "#DFDF8E")
 66     (blue         "#71ADE7")
 67     (blue-warmer  "#71ADE7")
 68     (blue-cooler  "#71ADE7")
 69     (blue-faint   "#71ADE7")
 70     (blue-intense "#71ADE7")
 71     (magenta         "#CC8BC9")
 72     (magenta-warmer  "#CC8BC9")
 73     (magenta-cooler  "#CC8BC9")
 74     (magenta-faint   "#CC8BC9")
 75     (magenta-intense "#CC8BC9")
 76     (cyan         "#CD974B")
 77     (cyan-warmer  "#CD974B")
 78     (cyan-cooler  "#CD974B")
 79     (cyan-faint   "#CD974B")
 80     (cyan-intense "#CD974B")
 81     (rust   "#CD974B")
 82     (gold   "#CD974B")
 83     (olive  "#95CB82")
 84     (slate  "#71ADE7")
 85     (indigo "#CC8BC9")
 86     (maroon "#CC3333")
 87     (pink   "#CC8BC9")
 88
 89     ;; Colored backgrounds — dark washes
 90     (bg-red-intense "#2B1D1E")
 91     (bg-red-subtle  "#2B1D1E")
 92     (bg-red-nuanced "#2B1D1E")
 93     (bg-green-intense   "#1A2A1A")
 94     (bg-green-subtle    "#1A2A1A")
 95     (bg-green-nuanced   "#1A2A1A")
 96     (bg-yellow-intense  "#2A2A1A")
 97     (bg-yellow-subtle   "#2A2A1A")
 98     (bg-yellow-nuanced  "#2A2A1A")
 99     (bg-blue-intense    "#1A2030")
100     (bg-blue-subtle     "#1A2030")
101     (bg-blue-nuanced    "#1A2030")
102     (bg-magenta-intense "#2A1A2A")
103     (bg-magenta-subtle  "#2A1A2A")
104     (bg-magenta-nuanced "#2A1A2A")
105     (bg-cyan-intense    "#1A2030")
106     (bg-cyan-subtle     "#1A2030")
107     (bg-cyan-nuanced    "#1A2030")
108
109     ;; Thematic slots
110     (bg-clay     "#0E1415")
111     (fg-clay     "#CC3333")
112     (bg-ochre    "#0E1415")
113     (fg-ochre    "#CD974B")
114     (bg-lavender "#0E1415")
115     (fg-lavender "#CC8BC9")
116     (bg-sage     "#0E1415")
117     (fg-sage     "#95CB82")
118     (bg-graph-red-0     "#D2322D")
119     (bg-graph-red-1     "#D2322D")
120     (bg-graph-green-0   "#6ABF40")
121     (bg-graph-green-1   "#6ABF40")
122     (bg-graph-yellow-0  "#EC8013")
123     (bg-graph-yellow-1  "#EC8013")
124     (bg-graph-blue-0    "#71ADE7")
125     (bg-graph-blue-1    "#71ADE7")
126     (bg-graph-magenta-0 "#CC8BC9")
127     (bg-graph-magenta-1 "#CC8BC9")
128     (bg-graph-cyan-0    "#CD974B")
129     (bg-graph-cyan-1    "#CD974B")
130
131     ;; Editor chrome
132     (bg-completion      "#293334")
133     (bg-popup           "#0E1415")
134     (bg-hover           "#293334")
135     (bg-hover-secondary "#1D2324")
136     (bg-hl-line         "#1D2324")
137     (bg-region          "#293334")
138     (fg-region          "#CECECE")
139     (bg-mode-line-active       "#293334")
140     (fg-mode-line-active       "#CECECE")
141     (border-mode-line-active   "#708B8D")
142     (bg-mode-line-inactive     "#1D2324")
143     (fg-mode-line-inactive     "#708B8D")
144     (border-mode-line-inactive "#293334")
145     (modeline-err     "#CC3333")
146     (modeline-warning "#CC3333")
147     (modeline-info    "#CD974B")
148     (bg-tab-bar     "#1D2324")
149     (bg-tab-current "#0E1415")
150     (bg-tab-other   "#293334")
151     (fg-line-number-inactive "#708B8D")
152     (fg-line-number-active   "#CECECE")
153     (bg-line-number-inactive "#0E1415")
154     (bg-line-number-active   "#1D2324")
155
156     ;; Diff — dark washes
157     (bg-added         "#1A2A1A")
158     (bg-added-faint   "#1A2A1A")
159     (bg-added-refine  "#253525")
160     (bg-added-fringe  "#6ABF40")
161     (fg-added         "#6ABF40")
162     (fg-added-intense "#95CB82")
163     (bg-removed         "#2B1D1E")
164     (bg-removed-faint   "#2B1D1E")
165     (bg-removed-refine  "#3A2528")
166     (bg-removed-fringe  "#D2322D")
167     (fg-removed         "#D2322D")
168     (fg-removed-intense "#D2322D")
169     (bg-changed         "#2A2A1A")
170     (bg-changed-faint   "#2A2A1A")
171     (bg-changed-refine  "#3A3520")
172     (bg-changed-fringe  "#EC8013")
173     (fg-changed         "#EC8013")
174     (fg-changed-intense "#EC8013")
175     (bg-diff-context "#0E1415")
176
177     ;; Search
178     (bg-search-current    "#CD974B")
179     (bg-search-lazy       "#CD974B")
180     (bg-search-static     "#CD974B")
181     (bg-search-replace    "#CD974B")
182     (bg-search-rx-group-0 "#CD974B")
183     (bg-search-rx-group-1 "#CD974B")
184     (bg-search-rx-group-2 "#CD974B")
185     (bg-search-rx-group-3 "#CD974B")
186     (bg-paren-match      "#0E1415")
187     (bg-paren-expression "#0E1415")
188     (fg-paren-match      "#CECECE")
189     (bg-prose-block-delimiter "#1D2324")
190     (fg-prose-block-delimiter "#CECECE")
191     (bg-prose-block-contents  "#1D2324")
192
193     ;; Terminal
194     (bg-term-black        "#0E1415")
195     (fg-term-black        "#0E1415")
196     (bg-term-black-bright "#708B8D")
197     (fg-term-black-bright "#708B8D")
198     (bg-term-white        "#AAAAAA")
199     (fg-term-white        "#AAAAAA")
200     (bg-term-white-bright "#CECECE")
201     (fg-term-white-bright "#CECECE"))
202   nil
203   modus-themes-vivendi-palette
204   modus-alabaster-bg-common-palette-mappings)
205  "Full palette for `modus-alabaster-bg-dark'.")
206
207(defcustom modus-alabaster-bg-dark-palette-overrides nil
208  "Palette overrides for `modus-alabaster-bg-dark'."
209  :group 'modus-themes
210  :type '(repeat (list symbol (choice symbol string))))
211
212;; Dark BG washes: subtle tints visible against the dark background.
213(defconst modus-alabaster-bg-dark-custom-faces
214  '(
215    ;; No bold/italic for syntax
216    '(modus-themes-bold ((t (:weight normal))))
217    '(modus-themes-slant ((t (:slant normal))))
218
219    ;; Strings: dark green wash
220    '(font-lock-string-face
221      ((t (:foreground "#CECECE" :background "#1A2A1A"))))
222    '(font-lock-doc-face
223      ((t (:foreground "#CECECE" :background "#1A2A1A"))))
224
225    ;; Comments: dark yellow/olive wash
226    '(font-lock-comment-face
227      ((t (:foreground "#CECECE" :background "#2A2A1A"))))
228    '(font-lock-comment-delimiter-face
229      ((t (:foreground "#CECECE" :background "#2A2A1A"))))
230
231    ;; Definitions: dark blue wash
232    '(font-lock-function-name-face
233      ((t (:foreground "#CECECE" :background "#1A2030"))))
234
235    ;; Constants: purple foreground (the one fg exception)
236    '(font-lock-constant-face
237      ((t (:foreground "#CC8BC9"))))
238
239    ;; Escapes: slightly brighter green wash
240    '(font-lock-escape-face
241      ((t (:foreground "#CECECE" :background "#253525"))))
242    '(font-lock-regexp-grouping-backslash
243      ((t (:foreground "#CECECE" :background "#253525"))))
244
245    ;; Errors: dark red wash
246    '(font-lock-warning-face
247      ((t (:foreground "#CC3333" :background "#2B1D1E" :weight normal))))
248
249    ;; Bracket matching: underline with active color
250    '(show-paren-match
251      ((t (:foreground "#CECECE" :background unspecified
252           :underline (:color "#CD974B" :style line)))))
253    '(show-paren-match-expression
254      ((t (:foreground "#CECECE" :background unspecified
255           :underline (:color "#CD974B" :style line)))))
256
257    ;; Org TODO/DONE: background washes
258    '(org-todo
259      ((t (:foreground "#CECECE" :background "#2B1D1E" :weight bold))))
260    '(org-done
261      ((t (:foreground "#CECECE" :background "#1A2A1A"))))
262    '(org-headline-done
263      ((t (:foreground "#708B8D"))))
264    '(org-agenda-done
265      ((t (:foreground "#CECECE" :background "#1A2A1A"))))
266    '(org-checkbox-statistics-todo
267      ((t (:foreground "#CECECE" :background "#2B1D1E"))))
268    '(org-checkbox-statistics-done
269      ((t (:foreground "#CECECE" :background "#1A2A1A"))))
270
271    ;; Tree-sitter faces — plain
272    '(font-lock-function-call-face
273      ((t (:foreground "#CECECE" :background unspecified))))
274    '(font-lock-variable-use-face
275      ((t (:foreground "#CECECE" :background unspecified))))
276    '(font-lock-property-use-face
277      ((t (:foreground "#CECECE" :background unspecified)))))
278  "Custom face specifications for `modus-alabaster-bg-dark'.")
279
280;;;###theme-autoload
281(modus-themes-theme
282 'modus-alabaster-bg-dark
283 'modus-alabaster-bg
284 "Alabaster BG dark palette on modus-vivendi."
285 'dark
286 'modus-themes-vivendi-palette
287 'modus-alabaster-bg-dark-palette
288 'modus-alabaster-bg-dark-palette-overrides
289 'modus-alabaster-bg-dark-custom-faces)
290
291(provide-theme 'modus-alabaster-bg-dark)
292;;; modus-alabaster-bg-dark-theme.el ends here