;;; omtose-softer-theme.el --- A dark, soothing theme with a cold bluish touch.

;; Created 2016 by Alexander F. Adhyatma

;; Author: Alexander F. Adhyatma
;; URL: http:/github.com/franksn/omtose-softer/
;; Version: 0.2.0
;; Package-Requires: ((emacs "24"))
;; This theme is like the illegitimate son of Gruvbox and Cyberpunk
;;
;; This file is free software: you can redistribute it and/or modify
;; it under the terms of the GNU General Public License as published by
;; the Free Software Foundation, either version 3 of the License, or
;; (at your option) any later version.

;; This file is distributed in the hope that it will be useful,
;; but WITHOUT ANY WARRANTY; without even the implied warranty of
;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
;; GNU General Public License for more details.

;; You should have received a copy of the GNU General Public License
;; along with GNU Emacs.  If not, see <http://www.gnu.org/licenses/>.

;;; Commentary:
;;
;;; Installation:
;;
;;   M-x package-install -> omtose-phellack
;;
;;   (load-theme 'omtose-softer t)
;;
;;; Bugs
;;
;; report any bugs to franksn@openmailbox.org
;;
;;; Code:

(unless (>= emacs-major-version 24)
  (error "omtose phellack requires Emacs 24 or later!"))

(deftheme omtose-softer "Dark and soothing colorscheme, with cool bluish touch")

(defgroup omtose-softer nil
  "omtose-softer options."
  :group 'faces)

(defcustom omtose-softer-variable-pitch t
  "Use variable pitch for latex, markdown, or org-mode"
  :type 'boolean
  :group 'omtose-softer)

(defcustom omtose-softer-org-height t
  "Use varying text heights for org headings."
  :type 'boolean
  :group 'omtose-softer)

(defcustom omtose-softer-tex-height-90 0.9
  "Font size 90%"
  :type 'number
  :group 'omtose-softer)

(defcustom omtose-softer-tex-height-110 1.1
  "Font size 110%"
  :type 'number
  :group 'omtose-softer)

(defcustom omtose-softer-tex-height-120 1.2
  "Font size 120%"
  :type 'number
  :group 'omtose-softer)

(defcustom omtose-softer-tex-height-130 1.3
  "Font size 130%"
  :type 'number
  :group 'omtose-softer)

(let* (;; variable pitch
       (omtose-softer-pitch (if omtose-softer-variable-pitch
                                  'variable-pitch
                                'default))
       (class '((class color) (min-colors 257)))
        ;; GUI color definition
       (dark0_hard      "#1E232B")
       (dark0           "#272D38")
       (dark0_soft      "#2C3440")
       (dark1           "#343C4D")
       (dark2           "#374052")
       (dark3           "#404B5C")
       (dark4           "#666B88")

       (light0_hard     "#C1CADE")
       (light0          "#A4ACBD")
       (light0_soft     "#9DA5B5")
       (light1          "#99A0B0")
       (light2          "#9299A8")
       (light3          "#8C92A1")
       (light4          "#858B99")

       (bright_red      "#C27CBE")
       (bright_green    "#7FBAB0")
       (bright_yellow   "#9FC7AD")
       (bright_blue     "#76A0C4")
       (bright_purple   "#898EC4")
       (bright_cyan     "#A4A4BD")

        ;; Needs some work
       (neutral_red    "#B26BB8")
       (neutral_green  "#76A8A0")
       (neutral_yellow "#C79474")
       (neutral_blue   "#6886A6")
       (neutral_purple "#7D81AD")
       (neutral_cyan   "#7D8AA8")

       (dark_red       "#5C4358")
       (dark_green     "#4D5E5C")
       (dark_yellow    "#B6D6C4")
       (dark_blue      "#3C4961")
       (dark_purple    "#515275")
       (dark_cyan      "#3D4E54")

       (delimiter-one  "#A84FA6")
       (delimiter-two  "#95c7c0")
       (delimiter-three "#ACC2C2")
       (delimiter-four "#72789E")

       (white          "#CCCCCC")
       (black          "#555B77")
       (match          "#98D9CE")
       (mline          "#3B3D54")

        ;; Color definitions for terminals that doesn't support 256 colors.
        ;; Needs some more work, expect some heavy color-regression in the mean time.
        ;; Proposed solution: re-work gui colorscheme to reflect its term colors (WIP)
       (t-class         '((class color) (min-colors 89)))

       (t-dark0_hard    "#222225")
       (t-dark0         "#262628")
       (t-dark0_soft    "#303030")
       (t-dark1         "#444444")
       (t-dark2         "#585858")
       (t-dark3         "#5F5F5F")
       (t-dark4         "#6c6c6c")

       (t-light0_hard     "#D0D0D0")
       (t-light0          "#B2B2B2")
       (t-light0_soft     "#A8A8A8")
       (t-light1          "#9E9E9E")
       (t-light2          "#949494")
       (t-light3          "#8A8A8A")
       (t-light4          "#878787")

       (t-bright_red      "#D75FD7")
       (t-bright_green    "#87D7AF")
       (t-bright_yellow   "#FF8700")
       (t-bright_blue     "#5FAFD7")
       (t-bright_purple   "#8787D7")
       (t-bright_cyan     "#AFAFD7")

       (t-neutral_red     "#AF5FAF")
       (t-neutral_green   "#87AFAF")
       (t-neutral_yellow  "#D78700")
       (t-neutral_blue    "#5F87AF")
       (t-neutral_purple  "#8787AF")
       (t-neutral_cyan    "#888888")

       (t-dark_red        "#8700D7")
       (t-dark_green      "#5F5F5F")
       (t-dark_yellow     "#87AF87")
       (t-dark_blue       "#5F5F87")
       (t-dark_purple     "#5F5FAF")
       (t-dark_cyan       "#0087AF")

       (t-delimiter-one   "#AF5F5F")
       (t-delimiter-two   "#AFD7D7")
       (t-delimiter-three "#D7FF87")
       (t-delimiter-four  "#D7D7FF")

       (t-white           "#FFFFFF")
       (t-black           "#4D4D4D")
       (t-match           "#AFD7FF"))


    (custom-theme-set-faces
     'omtose-softer

     ;; UI
     `(default                                   ((,class (:foreground ,light0 :background ,dark0))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark0))))
     `(cursor                                    ((,class (:background ,light0_soft :inverse-video t))
                                                  (,t-class (:background ,t-light0_soft :inverse-video t))))
     `(link                                      ((,class (:foreground ,bright_blue :underline t))
                                                  (,t-class (:foreground ,t-bright_blue :underline t))))
     `(link-visited                              ((,class (:foreground ,bright_red :underline t))
                                                  (,t-class (:foreground ,t-bright_red :underline t))))

     `(mode-line                                 ((,class (:foreground ,light0_soft :background ,dark_blue :height 0.9
                                                                       :box (:line-width 4 :color ,dark_blue))))
                                                 (,t-class (:foreground ,t-light0_soft :background ,t-dark_blue :height 0.9
                                                                        :box (:line-width 4 :color ,dark_blue))))
     `(mode-line-inactive                        ((,class (:foreground ,light3 :height 0.9 :background ,dark0_soft :height 0.9
                                                                       :box (:line-width 4 :color ,dark0_hard))))
                                                 (,t-class (:foreground ,t-light3 :background ,t-dark0_soft :height 0.9
                                                                        :box (:line-width 4 :color ,dark0_soft))))
     `(mode-line-buffer-id                       ((,class (:bold t :foreground ,bright_red))
                                                  (,t-class (:bold t :foreground ,t-bright_red))))
     `(fringe                                    ((,class (:background ,dark0))
                                                  (,t-class (:background ,t-dark0))))
     `(linum                                     ((,class (:foreground ,dark4 :background ,dark0))
                                                  (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(hl-line                                   ((,class (:background ,dark0_hard))
                                                  (,t-class (:background ,t-dark0_hard))))
     `(region                                    ((,class (:background ,dark_blue :distant-foreground ,light0))
                                                  (,t-class (:background ,t-dark_blue :distant-foreground ,t-light0))))
     `(secondary-selection                       ((,class (:background ,mline :foreground ,light0_hard))
                                                  (,t-class (:background ,t-dark2 :foreground ,t-light0_hard))))
     `(cua-rectangle                             ((,class (:background ,dark_blue))
                                                  (,t-class (:background ,t-dark_blue))))
     `(header-line                               ((,class (:foreground ,bright_purple :background ,dark0 :bold nil))
                                                  (,t-class (:foreground ,t-bright_purple :background ,t-dark0 :bold nil))))
     `(minibuffer-prompt                         ((,class (:foreground ,neutral_blue :background ,dark0 :bold nil))
                                                  (,t-class (:foreground ,t-neutral_blue :background ,t-dark0 :bold nil))))
     `(success                                   ((,class (:foreground ,match))
                                                  (,t-class (:foreground ,t-match))))
     `(eval-sexp-fu-flash                        ((,class (:foreground ,light0_soft :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light0_soft :background ,t-dark_blue))))
     `(eval-sexp-fu-flash-error                  ((,class (:foreground ,light0_hard :background ,dark_red))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_red))))

     ;; Built-in syntax
     `(font-lock-builtin-face                    ((,class (:foreground ,bright_cyan))
                                                  (,t-class (:foreground ,t-bright_cyan))))
     `(font-lock-constant-face                   ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(font-lock-comment-face                    ((,class (:foreground ,dark4 :background ,dark0 :slant italic))
                                                  (,t-class (:foreground ,t-dark4 :background ,t-dark0 :slant italic))))
     `(font-lock-doc-face                        ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(font-lock-doc-string-face                 ((,class (:inherit font-lock-string-face :slant italic))
                                                  (,t-class (:inherit font-lock-string-face :slant italic))))
     `(font-lock-function-name-face              ((,class (:foreground ,light1 :weight bold))
                                                  (,t-class (:foreground ,t-light1 :weight bold))))
     `(font-lock-keyword-face                    ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))
     `(font-lock-negation-char-face              ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(font-lock-preprocessor-face               ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(font-lock-reference-face                  ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,light1))))
     `(font-lock-string-face                     ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(font-lock-type-face                       ((,class (:foreground ,neutral_purple :italic t))
                                                  (,t-class (:foreground ,t-neutral_purple :italic t))))
     `(font-lock-variable-name-face              ((,class (:foreground ,light3))
                                                  (,t-class (:foreground ,t-light3))))
     `(font-lock-warning-face                    ((,class (:foreground ,neutral_yellow :bold t))
                                                  (,t-class (:foreground ,t-neutral_yellow :bold t))))

     ;; Font lock extras
     `(clojure-keyword-face                      ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(clojure-interop-method-face               ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(elixir-atom-face                          ((,class (:foreground ,dark4 :weight bold))
                                                  (,t-class (:foreground ,t-light4 :weight bold))))
     `(css-selector                              ((,class (:inherit font-lock-function-name-face))
                                                  (,t-class (:inherit font-lock-function-name-face))))
     `(css-property                              ((,class (:inherit font-lock-string-face))
                                                  (,t-class (:inherit font-lock-string-face))))

     ;; ag (The Silver Searcher)
     `(ag-hit-face                               ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(ag-match-face                             ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))

     ;; auctex / latex-mode
     `(font-latex-bold-face                      ((,class (:foreground ,light0_hard))
                                                  (,t-class (:foreground ,t-light0_hard))))
     `(font-latex-italic-face                    ((,class (:foreground ,light0_soft :italic t))
                                                  (,t-class (:foreground ,t-light0_soft :italic t))))
     `(font-latex-match-reference-keywords       ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(font-latex-match-variable-keywords        ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(font-latex-math-face                      ((,class (:foreground ,bright_green :weight bold))
                                                  (,t-class (:foreground ,t-bright_green :weight bold))))
     `(font-latex-sectioning-0-face              ((,class (:inherit font-latex-sectioning-1-face
                                                                    :height ,omtose-softer-tex-height-120))
                                                  (,t-class (:inherit font-latex-sectioning-1-face
                                                                      :height ,omtose-softer-tex-height-120))))
     `(font-latex-sectioning-1-face              ((,class (:inherit font-latex-sectioning-2-face
                                                                    :height ,omtose-softer-tex-height-110))
                                                  (,t-class (:inherit font-latex-sectioning-2-face
                                                                      :height ,omtose-softer-tex-height-110))))
     `(font-latex-sectioning-2-face              ((,class (:inherit font-latex-sectioning-3-face
                                                                    :height ,omtose-softer-tex-height-110))
                                                  (,t-class (:inherit font-latex-sectioning-3-face
                                                                      :height ,omtose-softer-tex-height-110))))
     `(font-latex-sectioning-3-face              ((,class (:inherit font-latex-sectioning-4-face
                                                                    :height ,omtose-softer-tex-height-110))
                                                  (,t-class (:inherit font-latex-sectioning-4-face
                                                                      :height ,omtose-softer-tex-height-110))))
     `(font-latex-sectioning-4-face              ((,class (:inherit font-latex-sectioning-5-face
                                                                    :height ,omtose-softer-tex-height-110))
                                                  (,t-class (:inherit font-latex-sectioning-5-face
                                                                      :height ,omtose-softer-tex-height-110))))
     `(font-latex-sectioning-5-face              ((,class (:inherit ,omtose-softer-pitch :foreground ,bright_yellow
                                                                    :weight bold))
                                                  (,t-class (:inherit ,omtose-softer-pitch :foreground ,t-bright_yellow
                                                                      :weight bold))))
     `(font-latex-sedate-face                    ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(font-latex-slide-title-face               ((,class (:inherit (,omtose-softer-pitch font-lock-type-face)
                                                                    :weight bold :height ,omtose-softer-tex-height-130))
                                                  (,t-class (:inherit (,omtose-softer-pitch font-lock-type-face)
                                                                      :weight bold :height ,omtose-softer-tex-height-130))))
     `(font-latex-string-face                    ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(font-latex-subscript-face                 ((,class (:height ,omtose-softer-tex-height-90))
                                                  (,t-class (:height ,omtose-softer-tex-height-90))))
     `(font-latex-superscript-face               ((,class (:height ,omtose-softer-tex-height-90))
                                                  (,t-class (:height ,omtose-softer-tex-height-90))))
     `(font-latex-warning-face                   ((,class (:inherit bold :foreground ,bright_yellow :underline t))
                                                  (,t-class (:inherit bold :foreground ,t-bright_yellow :underline t))))

     ;; Auto completion mode
     `(ac-dabbrev-menu-face                      ((,class (:inherit popup-face))
                                                  (,t-class (:inherit popup-face))))
     `(ac-dabbrev-selection-face                 ((,class (:inherit popup-menu-selection-face))
                                                  (,t-class (:inherit popup-menu-selection-face))))

     ;; AHS
     `(ahs-definition-face                       ((,class (:foreground ,bright_purple :background unspecified
                                                                       :slant normal))
                                                  (,t-class (:foreground ,t-bright_purple :background unspecified
                                                                         :slant normal))))
     `(ahs-edit-mode-face                        ((,class (:foreground ,dark0 :background ,bright_purple))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_purple))))
     `(ahs-face                                  ((,class (:foreground ,neutral_yellow :background unspecified))
                                                  (,t-class (:foreground ,t-neutral_yellow :background unspecified))))
     `(ahs-plugin-bod-face                       ((,class (:foreground ,dark0 :background ,bright_blue))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_blue))))
     `(ahs-plugin-defalt-face                    ((,class (:foreground ,dark0 :background ,bright_green))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_green))))
     `(ahs-plugin-whole-buffer-face              ((,class (:foreground ,light0  :background ,dark_cyan))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark_cyan))))
     `(ahs-warning-face                          ((,class (:foreground ,dark0 :background ,bright_yellow :weight bold))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_yellow :weight bold))))

     ;; Avy
     `(avy-lead-face-0                           ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(avy-lead-face-1                           ((,class (:foreground ,bright_cyan))
                                                  (,t-class (:foreground ,t-bright_cyan))))
     `(avy-lead-face-2                           ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(avy-lead-face                             ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(avy-background-face                       ((,class (:foreground ,dark3))
                                                  (,t-class (:foreground ,t-dark3))))
     `(avy-goto-char-timer-face                  ((,class (:inherit    highlight))
                                                  (,t-class (:inherit    highlight))))

     ;;Clojure-test-mode
     `(clojure-test-failure-face                 ((,class (:foreground ,bright_yellow :weight bold :underline t))
                                                  (,t-class (:foreground ,t-bright_yellow :weight bold :underline t))))
     `(clojure-test-error-face                   ((,class (:foreground ,bright_red :weight bold :underline t))
                                                  (,t-class (:foreground ,t-bright_red :weight bold :underline t))))
     `(clojure-test-success-face                 ((,class (:foreground ,neutral_green :weight bold :underline t))
                                                  (,t-class (:foreground ,t-neutral_green :weight bold :underline t))))

     ;; Cider-repl-mode
     `(cider-repl-err-output-face                ((,class (:inherit ,font-lock-warning-face :underline nil))
                                                  (,t-class (:inherit ,font-lock-warning-face :underline nil))))

     ;; Cider-test-mode
     `(cider-test-failure-face                   ((,class (:foreground ,dark_yellow :weight bold :underline t))
                                                  (,t-class (:foreground ,t-dark_yellow :weight bold :underline t))))
     `(cider-test-error-face                     ((,class (:foreground ,bright_red :weight bold :underline t))
                                                  (,t-class (:foreground ,t-bright_red :weight bold :underline t))))
     `(cider-test-success-face                   ((,class (:foreground ,neutral_green :weight bold :underline t))
                                                  (,t-class (:foreground ,t-neutral_green :weight bold :underline t))))

     ;; circe
     `(circe-prompt-face                         ((,class (:foreground ,neutral_red :weight bold :background nil))
                                                  (,t-class (:foreground ,t-neutral_red :weight bold :background nil))))
     `(circe-server-face                         ((,class (:foreground ,dark_purple))
                                                  (,t-class (:foreground ,t-dark_purple))))
     `(circe-highlight-nick-face                 ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(circe-topic-diff-new-face                 ((,class (:background ,dark_green :foreground ,bright_green))
                                                  (,t-class (:background ,t-dark_green :foreground ,t-bright_green))))
     `(circe-topic-diff-removed-face             ((,class (:background ,dark_red :foreground ,light0_soft))
                                                  (,t-class (:background ,t-dark_red :foreground ,t-light0_soft))))
     `(circe-fool-face                           ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))

     ;; Company Mode
     `(company-echo                              ((,class (:inherit company-echo-common))
                                                  (,t-class (:inherit company-echo-common))))
     `(company-echo-common                       ((,class (:foreground ,bright_blue :background nil))
                                                  (,t-class (:foreground ,t-bright_blue :background nil))))
     `(company-preview-common                    ((,class (:underline t :foreground ,light1))
                                                  (,t-class (:underline t :foreground ,t-light1))))
     `(company-preview                           ((,class (:inherit company-preview-common))
                                                  (,t-class (:inherit company-preview-common))))
     `(company-preview-search                    ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(company-template-field                    ((,class (:foreground ,bright_blue :background nil :underline ,dark_blue))
                                                  (,t-class (:foreground ,t-bright_blue :background nil :underline ,t-dark_blue))))
     `(company-scrollbar-fg                      ((,class (:foreground nil :background ,dark2))
                                                  (,t-class (:foreground nil :background ,t-dark2))))
     `(company-scrollbar-bg                      ((,class (:foreground nil :background ,dark3))
                                                  (,t-class (:foreground nil :background ,t-dark3))))
     `(company-tooltip                           ((,class (:foreground ,light0_hard :background ,dark1))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark1))))
     `(company-preview-common                    ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(company-tooltip-common                    ((,class (:foreground ,light1 :background ,dark1))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark1))))
     `(company-tooltip-annotation                ((,class (:foreground ,light4 :background ,dark1))
                                                  (,t-class (:foreground ,t-light4 :background ,t-dark1))))
     `(company-tooltip-annotation-selection      ((,class (:foreground ,bright_blue :background ,dark_blue))
                                                  (,t-class (:foreground ,t-bright_blue :background ,t-dark_blue))))
     `(company-tooltip-common-selection          ((,class (:foreground ,neutral_red :background ,dark_blue))
                                                  (,t-class (:foreground ,t-neutral_red :background ,t-dark_blue))))
     `(company-tooltip-mouse                     ((,class (:foreground ,dark0 :background ,bright_blue))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_blue))))
     `(company-tooltip-selection                 ((,class (:foreground ,neutral_red :background ,dark_blue))
                                                  (,t-class (:foreground ,t-neutral_red :background ,t-dark_blue))))

     ;; widget faces
     `(widget-field                              ((,class (:background ,dark_blue :box (:line-width 1 :color ,light4)))
                                                  (,t-class (:background ,t-dark_blue :box (:line-width 1 :color ,t-light4)))))
     `(widget-button                             ((,class (:inherit link))
                                                  (,t-class (:inherit link))))

     ;; custom gui only for the moment.
     `(custom-button                             ((,class (:background ,dark2 :box (:line-width 2 :style released-button)))))
     `(custom-button-mouse                       ((,class (:background ,dark_blue :box (:line-width 2 :style released-button)))))
     `(custom-button-pressed                     ((,class (:background ,dark_blue :box (:line-width 2 :style pressed-button)))))
     `(custom-group-tag                          ((,class (:foreground ,neutral_red :weight bold :height 1.4))))
     `(custom-variable-tag                       ((,class (:foreground ,neutral_red :weight bold))))
     `(custom-state                              ((,class (:foreground ,neutral_green))))

     ;; Diffs
     `(diff-changed                              ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(diff-added                                ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(diff-removed                              ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(diff-indicator-changed                    ((,class (:inherit diff-changed))
                                                  (,t-class (:inherit diff-changed))))
     `(diff-indicator-added                      ((,class (:inherit diff-added))
                                                  (,t-class (:inherit diff-added))))
     `(diff-indicator-removed                    ((,class (:inherit diff-removed))
                                                  (,t-class (:inherit diff-removed))))
     `(diff-file-header                          ((,class (:background ,dark2 :foreground ,bright_cyan))
                                                  (,t-class (:background ,t-dark2 :foreground ,t-bright_cyan))))
     `(diff-header                               ((,class (:background ,dark0_hard :foreground ,light1))
                                                  (,t-class (:background ,t-dark0_hard :foreground ,t-light1))))
     `(diff-hunk-header                          ((,class (:inherit diff-header))
                                                  (,t-class (:inherit diff-header))))
     `(diff-index                                ((,class (:background ,dark0_hard :foreground ,dark4))
                                                  (,t-class (:background ,dark0_hard :foreground ,dark4))))

     ;; Diff-hl
     `(diff-hl-change                            ((,class (:inherit diff-changed))
                                                  (,t-class (:inherit diff-changed))))
     `(diff-hl-delete                            ((,class (:inherit diff-removed))
                                                  (,t-class (:inherit diff-removed))))
     `(diff-hl-insert                            ((,class (:inherit diff-added))
                                                  (,t-class (:inherit diff-added))))
     `(diff-hl-unknown                           ((,class (:inherit highlight))
                                                  (,t-class (:inherit highlight))))

     ;; Dired
     `(dired-directory                           ((,class (:foreground ,neutral_purple :weight bold))
                                                  (,t-class (:foreground ,t-neutral_purple :weight bold))))
     `(dired-flagged                             ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(dired-header                              ((,class (:foreground ,dark4 :weight bold))
                                                  (,t-class (:foreground ,t-dark4 :weight bold))))
     `(dired-ignored                             ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(dired-mark                                ((,class (:foreground ,bright_red :weight bold))
                                                  (,t-class (:foreground ,t-bright_red :weight bold))))
     `(dired-marked                              ((,class (:foreground ,bright_cyan :weight bold))
                                                  (,t-class (:foreground ,t-bright_cyan :weight bold))))
     `(dired-perm-write                          ((,class (:foreground ,light1 :underline t))
                                                  (,t-class (:foreground ,t-light1 :underline t))))
     `(dired-symlink                             ((,class (:foreground ,dark3 :weight bold))
                                                  (,t-class (:foreground ,t-dark3 :weight bold))))
     `(dired-warning                             ((,class (:foreground ,bright_yellow :weight bold))
                                                  (,t-class (:foreground ,t-bright_yellow :weight bold))))

     ;; Elfeed
     `(elfeed-search-date-face                   ((,class (:foreground ,light2))
                                                  (,t-class (:foreground ,t-light2))))
     `(elfeed-search-feed-face                   ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(elfeed-search-tag-face                    ((,class (:foreground ,light4))
                                                  (,t-class (:foreground ,t-light4))))
     `(elfeed-search-title-face                  ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     ;; elscreen
     `(elscreen-tab-background-face              ((,class (:background ,dark0 :box nil))
                                                  (,t-class (:background ,t-dark0 :box nil)))) ;; Tab bar, not the tabs
     `(elscreen-tab-control-face                 ((,class (:foreground ,neutral_red :background ,dark2 :box nil :underline nil))
                                                  (,t-class (:foreground ,t-neutral_red :background ,t-dark2 :box nil :underline nil))))
     `(elscreen-tab-current-screen-face          ((,class (:foreground ,dark0 :background ,dark4 :box nil))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-dark4 :box nil)))) ;; Current tab
     `(elscreen-tab-other-screen-face            ((,class (:foreground ,light4 :background ,dark2 :box nil :underline nil))
                                                  (,class (:foreground ,light4 :background ,dark2 :box nil :underline nil))))

     ;; Eshell
     `(eshell-ls-archive                         ((,class (:foreground ,neutral_red :weight bold))
                                                  (,t-class (:foreground ,t-neutral_red :weight bold))))
     `(eshell-ls-backup                          ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(eshell-ls-clutter                         ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(eshell-ls-directory                       ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(eshell-ls-executable                      ((,class (:foreground ,dark_green :weight bold))
                                                  (,t-class (:foreground ,t-dark_green :weight bold))))
     `(eshell-ls-missing                         ((,class (:inherit font-lock-warning-face))
                                                  (,t-class (:inherit font-lock-warning-face))))
     `(eshell-ls-product                         ((,class (:inherit font-lock-doc-face))
                                                  (,t-class (:inherit font-lock-doc-face))))
     `(eshell-ls-special                         ((,class (:foreground ,bright_yellow :weight bold))
                                                  (,t-class (:foreground ,t-bright_yellow :weight bold))))
     `(eshell-ls-symlink                         ((,class (:foreground ,neutral_cyan :weight bold))
                                                  (,t-class (:foreground ,t-neutral_cyan :weight bold))))
     `(eshell-ls-unreadable                      ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(eshell-prompt                             ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))

     ;; ERT
     `(ert-test-result-expected                  ((,class (:foreground ,light1 :background ,dark_green))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_green))))
     `(ert-test-result-unexpected                ((,class (:foreground ,light1 :background ,dark_red))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_red))))

     ;; Evil
     `(evil-search-highlight-persist-highlight-face ((,class (:foreground ,dark3 :background ,bright_yellow))
                                                     (,t-class (:foreground ,t-dark3 :background ,t-bright_yellow))))
     `(evil-ex-substitute-replacement             ((,class (:foreground ,delimiter-one))
                                                   (,t-class (:foreground ,t-delimiter-one))))

     ;; Flycheck
     `(flycheck-error-list-checker-name          ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(flycheck-fringe-error                     ((,class (:foreground ,bright_red :background ,dark_red :weight bold :inverse-video t))
                                                  (,t-class (:foreground ,t-bright_red :background ,t-dark_red :weight bold :inverse-video t))))
     `(flycheck-fringe-info                      ((,class (:foreground ,bright_blue :background ,dark_blue :weight bold :inverse-video t))
                                                  (,t-class (:foreground ,t-bright_blue :background ,t-dark_blue :weight bold :inverse-video t))))
     `(flycheck-fringe-warning                   ((,class (:foreground ,dark3 :background ,dark_yellow :weight bold :inverse-video t))
                                                  (,t-class (:foreground ,t-dark1 :background ,t-bright_yellow :weight bold :inverse-video t))))
     `(flycheck-info                             ((,class (:foreground ,dark2 :background ,bright_purple :weight bold :underline t))
                                                  (,t-class (:foreground ,t-dark2 :background ,t-bright_purple :weight bold :underline t))))
     `(flycheck-warning                          ((,class (:underline (:color ,bright_yellow :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_yellow :style wave)))))
     `(flycheck-error                            ((,class (:underline (:color ,bright_red :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_red :style wave)))))


     ;; Haskell
     `(haskell-interactive-face-compile-warning  ((,class (:underline (:color ,bright_yellow :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_yellow :style wave)))))
     `(haskell-interactive-face-compile-error    ((,class (:underline (:color ,bright_red :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_red :style wave)))))
     `(haskell-interactive-face-garbage          ((,class (:foreground ,dark4 :background nil))
                                                  (,t-class (:foreground ,t-dark4 :background nil))))
     `(haskell-interactive-face-prompt           ((,class (:foreground ,light0 :background nil))
                                                  (,t-class (:foreground ,t-light0 :background nil))))
     `(haskell-interactive-face-result           ((,class (:foreground ,light3 :background nil))
                                                  (,t-class (:foreground ,t-light3 :background nil))))
     `(haskell-literate-comment-face             ((,class (:foreground ,light0 :background nil))
                                                  (,t-class (:foreground ,t-light0 :background nil))))
     `(haskell-pragma-face                       ((,class (:foreground ,light4 :background nil))
                                                  (,t-class (:foreground ,t-light4 :background nil))))
     `(haskell-constructor-face                  ((,class (:foreground ,neutral_cyan :background nil))
                                                  (,t-class (:foreground ,t-neutral_cyan :background nil))))

     ;; Helm
     `(helm-M-x-key                              ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(helm-action                               ((,class (:foreground ,white :underline t))
                                                  (,t-class (:foreground ,t-white :underline t))))
     `(helm-bookmark-addressbook                 ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-bookmark-directory                   ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-bookmark-file                        ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(helm-bookmark-gnus                        ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(helm-bookmark-info                        ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-bookmark-man                         ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(helm-bookmark-w3m                         ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(helm-buffer-directory                     ((,class (:foreground ,dark0 :background ,bright_blue))
                                                  (,t-class (:foreground ,t-dark0 :background ,t-bright_blue))))
     `(helm-buffer-file                          ((,class (:foreground ,light0_soft :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light0_soft :background ,t-dark_blue))))
     `(helm-buffer-not-saved                     ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-buffer-process                       ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(helm-buffer-saved-out                     ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(helm-buffer-size                          ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-candidate-number                     ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(helm-ff-dotted-directory                  ((,class (:foreground ,bright_red :background ,dark1))
                                                  (,t-class (:foreground ,t-bright_red :background ,t-dark1))))
     `(helm-ff-directory                         ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-ff-executable                        ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-ff-file                              ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(helm-ff-invalid-symlink                   ((,class (:foreground ,white :background ,bright_red))
                                                  (,t-class (:foreground ,t-white :background ,t-bright_red))))
     `(helm-ff-prefix                            ((,class (:foreground ,black :background ,neutral_yellow))
                                                  (,t-class (:foreground ,t-black :background ,t-neutral_yellow))))
     `(helm-ff-symlink                           ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(helm-grep-cmd-line                        ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(helm-grep-file                            ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-grep-finish                          ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-grep-lineno                          ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(helm-grep-match                           ((,class (:foreground ,match))
                                                  (,t-class (:foreground ,t-match))))
     `(helm-grep-running                         ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-header                               ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(helm-header-line-left-margin              ((,class (:foreground ,dark_blue))
                                                  (,t-class (:foreground ,t-dark_blue))))
     `(helm-helper                               ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(helm-history-deleted                      ((,class (:foreground ,black :background ,bright_red))
                                                  (,t-class (:foreground ,t-black :background ,t-bright_red))))
     `(helm-history-remote                       ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-lisp-completion-info                 ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(helm-lisp-show-completion                 ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(helm-locate-finish                        ((,class (:foreground ,white :background ,dark_blue))
                                                  (,t-class (:foreground ,t-white :background ,t-dark_blue))))
     `(helm-match                                ((,class (:foreground ,match))
                                                  (,t-class (:foreground ,t-match))))
     `(helm-moccur-buffer                        ((,class (:foreground ,bright_cyan :underline t))
                                                  (,t-class (:foreground ,t-bright_cyan :underline t))))
     `(helm-prefarg                              ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(helm-selection                            ((,class (:foreground ,white :background ,dark2))
                                                  (,t-class (:foreground ,t-white :background ,t-dark2))))
     `(helm-selection-line                       ((,class (:foreground ,white :background ,dark2))
                                                  (,t-class (:foreground ,t-white :background ,t-dark2))))
     `(helm-separator                            ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(helm-source-header                        ((,class (:foreground ,light2 :background ,dark1))
                                                  (,t-class (:foreground ,t-light2 :background ,t-dark1))))
     `(helm-swoop-target-line-block-face         ((,class (:foreground ,light1 :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_blue))))
     `(helm-swoop-target-line-face               ((,class (:foreground ,light1 :background ,dark_blue))
                                                  ((,t-class (:foreground ,t-light1 :background ,t-dark_blue)))))
     `(helm-swoop-target-word-face               ((,class (:foreground ,light0_hard :background ,dark_green))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_green))))
     `(helm-visible-mark                         ((,class (:foreground ,black :background ,light3))
                                                  (,t-class (:foreground ,t-black :background ,t-light3))))

     ;; Highlight indentation mode
     `(highlight-indentation-current-column-face ((,class (:background ,dark4))
                                                  (,t-class (:background ,t-dark4))))
     `(highlight-indentation-face                ((,class (:background ,dark1))
                                                  (,t-class (:background ,t-dark1))))

     ;; Highlight-numbers
     `(highlight-numbers-number                  ((,class (:background ,dark0_hard :foreground ,light0_hard :bold nil))
                                                  (,t-class (:background ,t-dark0_hard :foreground ,t-light0_hard :bold nil))))

     ;; Highlight-symbol
     `(highlight-symbol-face                     ((,class (:background ,dark4 :foreground ,bright_green))
                                                  (,t-class (:background ,t-dark4 :foreground ,t-bright_green))))

     ;; hydra
     `(hydra-face-red                            ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(hydra-face-blue                           ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(hydra-face-amaranth                       ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(hydra-face-pink                           ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(hydra-face-teal                           ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))

     ;; Ido
     `(ido-first-match                           ((,class (:foreground ,delimiter-one :background ,dark0_hard))
                                                  (,t-class (:foreground ,t-delimiter-one :background ,t-dark0_hard))))
     `(ido-incomplete-regexp                     ((,class (:foreground ,neutral_red :weight bold))
                                                  (,t-class (:foreground ,t-bright_red :weight bold))))
     `(ido-only-match                            ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(ido-subdir                                ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(ido-vertical-match-face                   ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))

     ;; info
     `(info-menu                                 ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(info-quoted-name                          ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))

     ;; ivy
     `(ivy-confirm-face                          ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(ivy-current-match                         ((,class (:foreground ,light0_hard :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_blue))))
     `(ivy-match-required-face                   ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,neutral_green))))
     `(ivy-minibuffer-match-face-1               ((,class (:foreground ,light3))
                                                  (,t-class (:foreground ,t-light3))))
     `(ivy-minibuffer-match-face-2               ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(ivy-minibuffer-match-face-3               ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(ivy-minibuffer-match-face-4               ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(ivy-remote                                ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))

     ;; Js2
     `(js2-warning                               ((,class (:underline (:color ,bright_yellow :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_yellow :style wave)))))
     `(js2-error                                 ((,class (:underline (:color ,bright_red :style wave)))
                                                  (,t-class (:underline (:color ,t-bright_red :style wave)))))
     `(js2-external-variable                     ((,class (:underline (:color ,light3 :style wave)))
                                                  (,t-class (:underline (:color ,t-light3 :style wave)))))
     `(js2-jsdoc-tag                             ((,class (:foreground ,light4 :background nil))
                                                  (,t-class (:foreground ,t-light4 :background nil))))
     `(js2-jsdoc-type                            ((,class (:foreground ,light4 :background nil))
                                                  (,t-class (:foreground ,t-light4 :background nil))))
     `(js2-jsdoc-value                           ((,class (:foreground ,dark4 :background nil))
                                                  (,t-class (:foreground ,t-dark4 :background nil))))
     `(js2-function-param                        ((,class (:foreground ,bright_cyan :background nil))
                                                  (,t-class (:foreground ,t-bright_cyan :background nil))))
     `(js2-function-call                         ((,class (:foreground ,bright_blue :background nil))
                                                  (,t-class (:foreground ,t-bright_blue :background nil))))
     `(js2-instance-member                       ((,class (:foreground ,bright_blue :background nil))
                                                  (,t-class (:foreground ,t-bright_blue :background nil))))
     `(js2-private-member                        ((,class (:foreground ,neutral_yellow :background nil))
                                                  (,t-class (:foreground ,t-neutral_yellow :background nil))))
     `(js2-private-function-call                 ((,class (:foreground ,neutral_red :background nil))
                                                  (,t-class (:foreground ,t-neutral_red :background nil))))
     `(js2-jsdoc-html-tag-name                   ((,class (:foreground ,neutral_blue :background nil))
                                                  (,t-class (:foreground ,t-neutral_blue :background nil))))
     `(js2-jsdoc-html-tag-delimiter              ((,class (:foreground ,neutral_purple :background nil))
                                                  (,t-class (:foreground ,t-neutral_purple :background nil))))

     ;; linum-relative
     `(linum-relative-current-face               ((,class (:foreground ,light4 :background ,dark1))
                                                  (,t-class (:foreground ,t-light4 :background ,t-dark1))))

     ;; lui
     `(lui-irc-colors-fg-1-face                  ((,class (:foreground ,dark3))
                                                  (,t-class (:foreground ,t-dark3))))
     `(lui-irc-colors-fg-2-face                  ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(lui-irc-colors-fg-3-face                  ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(lui-irc-colors-fg-4-face                  ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(lui-irc-colors-fg-5-face                  ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(lui-irc-colors-fg-6-face                  ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(lui-irc-colors-fg-7-face                  ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(lui-irc-colors-fg-8-face                  ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(lui-irc-colors-fg-9-face                  ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(lui-irc-colors-fg-10-face                  ((,class (:foreground ,bright_cyan))
                                                   (,t-class (:foreground ,t-bright_cyan))))
     `(lui-irc-colors-fg-11-face                  ((,class (:foreground ,dark4))
                                                   (,t-class (:foreground ,t-dark4))))
     `(lui-irc-colors-fg-12-face                  ((,class (:foreground ,neutral_blue))
                                                   (,t-class (:foreground ,t-neutral_blue))))
     `(lui-irc-colors-fg-13-face                  ((,class (:foreground ,delimiter-one))
                                                   (,t-class (:foreground ,t-delimiter-one))))
     `(lui-irc-colors-fg-14-face                  ((,class (:foreground ,light3))
                                                   (,t-class (:foreground ,t-light3))))
     `(lui-irc-colors-fg-15-face                  ((,class (:foreground ,light0_hard))
                                                   (,t-class (:foreground ,t-light0_hard))))
     `(lui-button-face                            ((,class (:inherit link))
                                                   (,t-class (:inherit link))))
     `(lui-highlight-face                         ((,class (:foreground ,light4 :weight bold))
                                                   (,t-class (:foreground ,t-light4 :weight bold))))
     `(lui-time-stamp-face                        ((,class (:inherit font-lock-comment-face))
                                                   (,t-class (:inherit font-lock-comment-face))))

     ;; Magit
     `(magit-blame-culprit                       ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(magit-blame-header                        ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(magit-blame-sha1                          ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-blame-subject                       ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(magit-blame-time                          ((,class (:foreground ,dark_cyan))
                                                  (,t-class (:foreground ,t-dark_cyan))))
     `(magit-blame-name                          ((,class (:foreground ,dark_yellow))
                                                  (,t-class (:foreground ,t-dark_yellow))))
     `(magit-blame-heading                       ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(magit-blame-hash                          ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-blame-summary                       ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(magit-blame-date                          ((,class (:foreground ,dark_green))
                                                  (,t-class (:foreground ,t-dark_green))))
     `(magit-branch                              ((,class (:foreground ,bright_purple :background nil))
                                                  (,t-class (:foreground ,t-bright_purple :background nil))))
     `(magit-branch-local                        ((,class (:foreground ,bright_purple :background nil))
                                                  (,t-class (:foreground ,t-bright_purple :background nil))))
     `(magit-branch-remote                       ((,class (:foreground ,neutral_yellow :background nil))
                                                  (,t-class (:foreground ,t-neutral_yellow :background nil))))
     `(magit-cherry-equivalent                   ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-cherry-unmatched                    ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(magit-diff-context                        ((,class (:foreground ,dark3 :background nil))
                                                  (,t-class (:foreground ,t-dark3 :background nil))))
     `(magit-diff-context-highlight              ((,class (:foreground ,dark4 :background ,dark0_soft))
                                                  (,t-class (:foreground ,t-dark4 :background ,t-dark0_soft))))
     `(magit-diff-added                          ((,class (:foreground ,match :background ,dark_green))
                                                  (,t-class (:foreground ,t-match :background ,t-dark_green))))
     `(magit-diff-added-highlight                ((,class (:foreground ,light1 :background ,dark_green))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_green))))
     `(magit-diff-removed                        ((,class (:foreground ,light1 :background ,dark_red))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_red))))
     `(magit-diff-removed-highlight              ((,class (:foreground ,light1 :background ,dark_red))
                                                  (,t-class (:foreground ,t-light1 :background ,t-dark_red))))
     `(magit-diff-add                            ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(magit-diff-del                            ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(magit-diff-file-header                    ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(magit-diff-hunk-header                    ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(magit-diff-merge-current                  ((,class (:background ,dark_yellow))
                                                  (,t-class (:background ,t-dark_yellow))))
     `(magit-diff-merge-diff3-separator          ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))
     `(magit-diff-merge-proposed                 ((,class (:background ,dark_green))
                                                  (,t-class (:background ,t-dark_green))))
     `(magit-diff-merge-separator                ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-diff-none                           ((,class (:foreground ,light4))
                                                  (,t-class (:foreground ,t-light4))))
     `(magit-item-highlight                      ((,class (:background ,dark1 :weight normal))
                                                  (,t-class (:background ,t-dark1 :weight normal))))
     `(magit-item-mark                           ((,class (:background ,dark0))
                                                  (,t-class (:background ,t-dark0))))
     `(magit-key-mode-args-face                  ((,class (:foreground ,light4))
                                                  (,t-class (:foreground ,t-light4))))
     `(magit-key-mode-button-face                ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))
     `(magit-key-mode-header-face                ((,class (:foreground ,light4 :weight bold))
                                                  (,t-class (:foreground ,t-light4 :weight bold))))
     `(magit-key-mode-switch-face                ((,class (:foreground ,bright_purple :weight bold))
                                                  (,t-class (:foreground ,t-bright_purple :weight bold))))
     `(magit-log-author                          ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(magit-log-date                            ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-log-graph                           ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,t-light1))))
     `(magit-log-head-label-bisect-bad           ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(magit-log-head-label-bisect-good          ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(magit-log-head-label-bisect-skip          ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(magit-log-head-label-default              ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-log-head-label-head                 ((,class (:foreground ,light0 :background ,dark_cyan))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark_cyan))))
     `(magit-log-head-label-local                ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))
     `(magit-log-head-label-patches              ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-log-head-label-remote               ((,class (:foreground ,neutral_blue :weight bold))
                                                  (,t-class (:foreground ,t-neutral_blue :weight bold))))
     `(magit-log-head-label-tags                 ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(magit-log-head-label-wip                  ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-log-message                         ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,t-light1))))
     `(magit-log-reflog-label-amend              ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(magit-log-reflog-label-checkout           ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(magit-log-reflog-label-cherry-pick        ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-log-reflog-label-commit             ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(magit-log-reflog-label-merge              ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(magit-log-reflog-label-other              ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-log-reflog-label-rebase             ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(magit-log-reflog-label-remote             ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(magit-log-reflog-label-reset              ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(magit-log-sha1                            ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(magit-process-ng                          ((,class (:foreground ,bright_blue :weight bold))
                                                  (,t-class (:foreground ,t-bright_blue :weight bold))))
     `(magit-process-ok                          ((,class (:foreground ,bright_green :weight bold))
                                                  (,t-class (:foreground ,t-bright_green :weight bold))))
     `(magit-section-heading                     ((,class (:foreground ,light2 :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light2 :background ,t-dark_blue))))
     `(magit-signature-bad                       ((,class (:foreground ,bright_red :weight bold))
                                                  (,t-class (:foreground ,t-bright_red :weight bold))))
     `(magit-signature-good                      ((,class (:foreground ,bright_green :weight bold))
                                                  (,t-class (:foreground ,t-bright_green :weight bold))))
     `(magit-signature-none                      ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-signature-untrusted                 ((,class (:foreground ,bright_purple :weight bold))
                                                  (,t-class (:foreground ,t-bright_purple :weight bold))))
     `(magit-tag                                 ((,class (:foreground ,match))
                                                  (,t-class (:foreground ,t-match))))
     `(magit-whitespace-warning-face             ((,class (:background ,neutral_red))
                                                  (,t-class (:background ,t-neutral_red))))
     `(magit-bisect-bad                          ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(magit-bisect-good                         ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(magit-bisect-skip                         ((,class (:foreground ,light2))
                                                  (,t-class (:foreground ,t-light2))))

     ;; Matches and Isearch
     `(lazy-highlight                            ((,class (:foreground ,light0 :background ,dark1))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark1))))
     `(highlight                                 ((,class (:foreground ,light0_hard :background ,dark_blue))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_blue))))
     `(match                                     ((,class (:foreground ,light0 :background ,dark2))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark2))))
     `(isearch                                   ((,class (:foreground ,light0 :background ,dark_purple))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark_purple))))
     `(isearch-fail                              ((,class (:foreground ,light0_hard :background ,dark_red))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_red))))
     `(show-paren-match                          ((,class (:background ,dark_blue))
                                                  (,t-class (:background ,t-dark_blue))))
     `(show-paren-mismatch                       ((,class (:foreground ,light0_hard :background ,bright_red))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-bright_red))))
     `(anzu-mode-line                            ((,class (:foreground ,light0 :height 100 :background ,neutral_blue))
                                                  (,t-class (:foreground ,t-light0 :height 100 :background ,t-neutral_blue))))
     `(visible-mark-face1                        ((,class (:foreground ,delimiter-two :inverse-video t))
                                                  (,t-class (:foreground ,t-delimiter-two :inverse-video t))))

     ;; Message faces
     `(message-header-name                       ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,t-light1))))
     `(message-header-cc                         ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(message-header-other                      ((,class (:foreground ,light3))
                                                  (,t-class (:foreground ,t-light3))))
     `(message-header-subject                    ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(message-header-to                         ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(message-cited-text                        ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(message-separator                         ((,class (:foreground ,light4))
                                                  (,t-class (:foreground ,t-light4))))

;;;;; mingus
     `(mingus-directory-face                           ((,class (:foreground ,neutral_cyan))
                                                        (,t-class (:foreground ,t-neutral_cyan))))
     `(mingus-pausing-face                             ((,class (:foreground ,bright_yellow))
                                                        (,t-class (:foreground ,t-bright_yellow))))
     `(mingus-playing-face                             ((,class (:foreground ,bright_green))
                                                        (,t-class (:foreground ,t-bright_green))))
     `(mingus-playlist-face                            ((,class (:foreground ,neutral_green))
                                                        (,t-class (:foreground ,t-neutral_green))))
     `(mingus-song-file-face                           ((,class (:foreground ,neutral_blue))
                                                        (,t-class (:foreground ,t-neutral_blue))))
     `(mingus-stopped-face                             ((,class (:foreground ,bright_red))
                                                        (,t-class (:foreground ,t-bright_red))))
     `(mingus-artist-face                              ((,class (:foreground ,neutral_purple))
                                                        (,t-class (:foreground ,t-neutral_purple))))
     `(mingus-album-face                               ((,class (:foreground ,neutral_yellow))
                                                        (,t-class (:foreground ,neutral_yellow))))
     `(mingus-album-stale-face                         ((,class (:foreground ,neutral_red))
                                                        (,t-class (:foreground ,t-neutral_red))))

     ;; Neotree
     `(neo-dir-link-face                         ((,class (:foreground ,bright_purple :weight bold))
                                                  (,t-class (:foreground ,t-bright_purple :weight bold))))
     `(neo-expand-btn-face                       ((,class (:foreground ,dark4))
                                                  (,t-class (:foreground ,t-dark4))))
     `(neo-file-link-face                        ((,class (:foreground ,light3))
                                                  (,t-class (:foreground ,t-light3))))
     `(neo-root-dir-face                         ((,class (:foreground ,neutral_red :weight bold))
                                                  (,t-class (:foreground ,t-neutral_red :weight bold))))

     ;; Org-mode
     `(org-agenda-date                           ((,class (:foreground ,dark4 :weight bold :background ,dark1 :box 1))
                                                  (,t-class (:foreground ,t-dark4 :weight bold :background ,t-dark1 :box 1))))
     `(org-agenda-date-today                     ((,class (:foreground ,bright_blue :weight bold :background ,dark_blue :box 1))
                                                  (,t-class (:foreground ,t-bright_blue :weight bold :background ,t-dark_blue :box 1))))
     `(org-agenda-structure                      ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(org-archived                              ((,class (:foreground ,light3 :weight bold))
                                                  (,t-class (:foreground ,t-light3 :weight bold))))
     `(org-block-begin-line                      ((,class (:background ,dark1 :foreground ,bright_green :height 0.9))
                                                  (,t-class (:background ,t-dark1 :foreground ,t-bright_green :height 0.9))))
     `(org-block-end-line                        ((,class (:background ,dark1 :foreground ,bright_green :height 0.9))
                                                  (,t-class (:background ,t-dark1 :foreground ,t-bright_green :height 0.9))))
     `(org-checkbox                              ((,class (:foreground ,light2 :background ,dark0 :box (:line-width 1 :style released-button)))
                                                  (,t-class (:foreground ,t-light2 :background ,t-dark0 :box (:line-width 1 :style released-button)))))
     `(org-date                                  ((,class (:foreground ,neutral_blue :underline t))
                                                  (,t-class (:foreground ,t-neutral_blue :underline t))))
     `(org-deadline-announce                     ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(org-document-title                        ((,class (:background ,dark0_hard :foreground ,neutral_red :weight bold :height ,(if omtose-softer-org-height 1.3 1.0) :underline t))
                                                  (,t-class (:background ,t-dark0_hard :foreground ,t-neutral_red :weight bold :height ,(if omtose-softer-org-height 1.3 1.0) :underline t))))
     `(org-done                                  ((,class (:background ,dark_green :foreground ,bright_green :bold t :weight bold))
                                                  (,t-class (:background ,t-dark_green :foreground ,t-bright_green :bold t :weight bold))))
     `(org-formula                               ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(org-headline-done                         ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(org-hide                                  ((,class (:foreground ,dark0))
                                                  (,t-class (:foreground ,t-dark0))))
     `(org-level-1                               ((,class (:foreground ,bright_blue :height ,(if omtose-softer-org-height 1.2 1.0)))
                                                  (,t-class (:foreground ,t-bright_blue :height ,(if omtose-softer-org-height 1.2 1.0)))))
     `(org-level-2                               ((,class (:foreground ,delimiter-one :height ,(if omtose-softer-org-height 1.1 1.0)))
                                                  (,t-class (:foreground ,t-delimiter-one :height ,(if omtose-softer-org-height 1.1 1.0)))))
     `(org-level-3                               ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(org-level-4                               ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(org-level-5                               ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(org-level-6                               ((,class (:foreground ,bright_cyan))
                                                  (,t-class (:foreground ,t-bright_cyan))))
     `(org-level-7                               ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(org-level-8                               ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(org-link                                  ((,class (:foreground ,bright_blue :underline t))
                                                  (,t-class (:foreground ,t-bright_blue :underline t))))
     `(org-scheduled                             ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,t-light1))))
     `(org-scheduled-previously                  ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(org-scheduled-today                       ((,class (:foreground ,light0_hard :height ,(if omtose-softer-org-height 1.1 1.0)))
                                                  (,t-class (:foreground ,t-light0_hard :height ,(if omtose-softer-org-height 1.1 1.0)))))
     `(org-sexp-date                             ((,class (:foreground ,bright_blue :underline t))
                                                  (,t-class (:foreground ,t-bright_blue :underline t))))
     `(org-special-keyword                       ((,class (:inherit font-lock-comment-face))
                                                  (,t-class (:inherit font-lock-comment-face))))
     `(org-table                                 ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(org-tag                                   ((,class (:bold t :weight bold))
                                                  (,t-class (:bold t :weight bold))))
     `(org-time-grid                             ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(org-todo                                  ((,class (:foreground ,bright_red :weight bold :bold t :background ,dark_red))
                                                  (,t-class (:foreground ,t-bright_red :weight bold :bold t :background ,t-dark_red))))
     `(org-upcoming-deadline                     ((,class (:inherit font-lock-function-name-face))
                                                  (,t-class (:inherit font-lock-function-name-face))))
     `(org-warning                               ((,class (:foreground ,bright_red :weight bold :underline nil :bold t))
                                                  (,t-class (:foreground ,t-bright_red :weight bold :underline nil :bold t))))
     `(org-column                                ((,class (:background ,dark0))
                                                  (,t-class (:background ,t-dark0))))
     `(org-column-title                          ((,class (:background ,dark0_hard :underline t :weight bold))
                                                  (,t-class (:background ,t-dark0_hard :underline t :weight bold))))
     `(org-mode-line-clock                       ((,class (:foreground ,light2 :background ,dark0))
                                                  (,t-class (:foreground ,t-light2 :background ,t-dark0))))
     `(org-mode-line-clock-overrun               ((,class (:foreground ,black :background ,bright_red))
                                                  (,t-class (:foreground ,t-black :background ,t-bright_red))))
     `(org-ellipsis                              ((,class (:foreground ,bright_yellow :underline t))
                                                  (,t-class (:foreground ,t-bright_yellow :underline t))))
     `(org-footnote                              ((,class (:foreground ,neutral_cyan :underline t))
                                                  (,t-class (:foreground ,t-neutral_cyan :underline t))))

     ;; Popup
     `(popup-face                                ((,class (:foreground ,light0 :background ,dark1))
                                                  (,t-class (:foreground ,t-light0 :background ,t-dark1))))
     `(popup-menu-mouse-face                     ((,class (:foreground ,light0 :background ,neutral_blue))
                                                  (,t-class (:foreground ,t-light0 :background ,t-neutral_blue))))
     `(popup-menu-selection-face                 ((,class (:foreground ,light0 :background ,neutral_blue))
                                                  (,t-class (:foreground ,t-light0 :background ,t-neutral_blue))))
     `(popup-tip-face                            ((,class (:foreground ,light0_hard :background ,dark_cyan))
                                                  (,t-class (:foreground ,t-light0_hard :background ,t-dark_cyan))))

     ;; Powerline
     `(powerline-active1                         ((,class (:background ,dark1 :height 0.9 :inherit mode-line))
                                                  (,t-class (:background ,t-dark1 :height 0.9 :inherit mode-line))))
     `(powerline-active2                         ((,class (:background ,dark2 :height 0.9 :inherit mode-line))
                                                  (,t-class (:background ,t-dark2 :height 0.9 :inherit mode-line))))
     `(powerline-inactive1                       ((,class (:background ,dark0_hard :height 0.9 :inherit mode-line-inactive))
                                                  (,t-class (:background ,t-dark0_hard :height 0.9 :inherit mode-line-inactive))))
     `(powerline-inactive2                       ((,class (:background ,dark0_hard :height 0.9 :inherit mode-line-inactive))
                                                  (,t-class (:background ,t-dark0_hard :height 0.9 :inherit mode-line-inactive))))

     ;; Rainbow-Blocks
     `(rainbow-blocks-depth-1-face               ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(rainbow-blocks-depth-2-face               ((,class (:foreground ,delimiter-two))
                                                  (,t-class (:foreground ,t-delimiter-two))))
     `(rainbow-blocks-depth-3-face               ((,class (:foreground ,delimiter-three))
                                                  (,t-class (:foreground ,t-delimiter-three))))
     `(rainbow-blocks-depth-4-face               ((,class (:foreground ,delimiter-four))
                                                  (,t-class (:foreground ,t-delimiter-four))))
     `(rainbow-blocks-depth-5-face               ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(rainbow-blocks-depth-6-face               ((,class (:foreground ,bright_yellow))
                                                  (,t-class (:foreground ,t-bright_yellow))))
     `(rainbow-blocks-depth-7-face               ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(rainbow-blocks-depth-8-face               ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(rainbow-blocks-depth-9-face               ((,class (:foreground ,bright_cyan))
                                                  (,t-class (:foreground ,t-bright_cyan))))
     `(rainbow-blocks-unmatched-face             ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))

     ;; Rainbow-Delimiters
     `(rainbow-delimiters-depth-1-face           ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(rainbow-delimiters-depth-2-face           ((,class (:foreground ,delimiter-two))
                                                  (,t-class (:foreground ,t-delimiter-two))))
     `(rainbow-delimiters-depth-3-face           ((,class (:foreground ,delimiter-three))
                                                  (,t-class (:foreground ,t-delimiter-three))))
     `(rainbow-delimiters-depth-4-face           ((,class (:foreground ,delimiter-four))
                                                  (,t-class (:foreground ,t-delimiter-four))))
     `(rainbow-delimiters-depth-5-face           ((,class (:foreground ,delimiter-one))
                                                  (,t-class (:foreground ,t-delimiter-one))))
     `(rainbow-delimiters-depth-6-face           ((,class (:foreground ,delimiter-two))
                                                  (,t-class (:foreground ,t-delimiter-two))))
     `(rainbow-delimiters-depth-7-face           ((,class (:foreground ,delimiter-three))
                                                  (,t-class (:foreground ,t-delimiter-three))))
     `(rainbow-delimiters-depth-8-face           ((,class (:foreground ,delimiter-four))
                                                  (,t-class (:foreground ,t-delimiter-four))))
     `(rainbow-delimiters-depth-9-face           ((,class (:foreground ,bright_red))
                                                  (,t-class (:foreground ,t-bright_red))))
     `(rainbow-delimiters-depth-10-face          ((,class (:foreground ,bright_blue))
                                                  (,t-class (:foreground ,t-bright_blue))))
     `(rainbow-delimiters-depth-11-face          ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(rainbow-delimiters-depth-12-face          ((,class (:foreground ,bright_purple))
                                                  (,t-class (:foreground ,t-bright_purple))))
     `(rainbow-delimiters-unmatched-face         ((,class (:foreground ,light0 :background nil))
                                                  (,t-class (:foreground ,t-light0 :background nil))))

     ;; sh mode
     `(sh-heredoc                                ((,class (:foreground ,match :background nil))
                                                  (,t-class (:foreground ,t-match :background nil))))
     `(sh-quoted-exec                            ((,class (:foreground ,match :background nil))
                                                  (,t-class (:foreground ,t-match :background nil))))

     ;; shm
     `(shm-current-face                          ((,class (:background ,dark_blue))
                                                  (,t-class (:background ,t-dark_blue))))

     ;; Smart-mode-line
     ;; use (setq sml/theme nil) to enable Omtose-Softer for sml
     `(sml/modes                                 ((,class (:foreground ,light0_hard :weight bold :bold t))
                                                  (,t-class (:foreground ,t-light0_hard :weight bold :bold t))))
     `(sml/minor-modes                           ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(sml/filename                              ((,class (:foreground ,light0_hard :weight bold :bold t))
                                                  (,t-class (:foreground ,t-light0_hard :weight bold :bold t))))
     `(sml/prefix                                ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(sml/git                                   ((,class (:inherit sml/prefix))
                                                  (,t-class (:inherit sml/prefix))))
     `(sml/process                               ((,class (:inherit sml/prefix))
                                                  (,t-class (:inherit sml/prefix))))
     `(sml/sudo                                  ((,class (:foreground ,dark_red :weight bold))
                                                  (,t-class (:foreground ,t-dark_red :weight bold))))
     `(sml/read-only                             ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(sml/outside-modified                      ((,class (:foreground ,dark_blue))
                                                  (,t-class (:foreground ,t-dark_blue))))
     `(sml/modified                              ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(sml/vc                                    ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(sml/vc-edited                             ((,class (:foreground ,bright_green))
                                                  (,t-class (:foreground ,t-bright_green))))
     `(sml/charging                              ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(sml/discharging                           ((,class (:foreground ,neutral_cyan :weight bold))
                                                  (,t-class (:foreground ,t-neutral_cyan :weight bold))))
     `(sml/col-number                            ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(sml/position-percentage                   ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))

     ;; Smartparens
     `(sp-pair-overlay-face                      ((,class (:background ,dark0_soft))
                                                  (,t-class (:background ,t-dark0_soft))))
     `(sp-show-pair-match-face                   ((,class (:background ,dark2 :foreground ,bright_green))
                                                  (,t-class (:background ,t-dark2 :foreground ,t-bright_green)))) ;; Pair tags highlight
     `(sp-show-pair-mismatch-face                ((,class (:background ,bright_red))
                                                  (,t-class (:background ,t-bright_red)))) ;; Highlight for bracket without pair
     `(sp-wrap-overlay-closing-pair              ((,class (:foreground ,bright_red :bold t))
                                                  (,t-class (:foreground ,t-bright_red :bold t))))
     `(sp-wrap-overlay-opening-pair              ((,class (:foreground ,bright_yellow :bold t))
                                                  (,t-class (:foreground ,t-bright_yellow :bold t))))

     ;;Smerge
     `(smerge-mine                               ((,class (:background ,dark_purple))
                                                  (,t-class (:background ,t-dark_purple))))
     `(smerge-other                              ((,class (:background ,dark_blue))
                                                  (,t-class (:background ,t-dark_blue))))
     `(smerge-markers                            ((,class (:background ,dark0_soft))
                                                  (,t-class (:background ,t-dark0_soft))))
     `(smerge-refined-added                      ((,class (:background ,dark_green))
                                                  (,t-class (:background ,t-dark_green))))
     `(smerge-refined-removed                    ((,class (:background ,dark_red))
                                                  (,t-class (:background ,t-dark_red))))

     ;; swiper
     `(swiper-line-face                          ((,class (:background ,dark1))
                                                  (,t-class (:background ,t-dark1))))
     `(swiper-match-face-1                       ((,class (:weight bold :foreground ,bright_blue))
                                                  (,t-class (:weight bold :foreground ,t-bright_blue))))
     `(swiper-match-face-2                       ((,class (:weight bold :foreground ,neutral_red))
                                                  (,t-class (:weight bold :foreground ,t-neutral_red))))
     `(swiper-match-face-3                       ((,class (:weight bold :foreground ,neutral_green))
                                                  (,t-class (:weight bold :foreground ,t-neutral_green))))
     `(swiper-match-face-4                       ((,class (:weight bold :foreground ,neutral_yellow))
                                                  (,t-class (:weight bold :foreground ,t-neutral_yellow))))

     ;; Term
     `(term-color-black                          ((,class (:foreground ,dark1))
                                                  (,t-class (:foreground ,t-dark1))))
     `(term-color-blue                           ((,class (:foreground ,neutral_blue))
                                                  (,t-class (:foreground ,t-neutral_blue))))
     `(term-color-cyan                           ((,class (:foreground ,neutral_cyan))
                                                  (,t-class (:foreground ,t-neutral_cyan))))
     `(term-color-green                          ((,class (:foreground ,neutral_green))
                                                  (,t-class (:foreground ,t-neutral_green))))
     `(term-color-magenta                        ((,class (:foreground ,neutral_purple))
                                                  (,t-class (:foreground ,t-neutral_purple))))
     `(term-color-red                            ((,class (:foreground ,neutral_red))
                                                  (,t-class (:foreground ,t-neutral_red))))
     `(term-color-white                          ((,class (:foreground ,light1))
                                                  (,t-class (:foreground ,t-light1))))
     `(term-color-yellow                         ((,class (:foreground ,neutral_yellow))
                                                  (,t-class (:foreground ,t-neutral_yellow))))
     `(term-default-fg-color                     ((,class (:foreground ,light0))
                                                  (,t-class (:foreground ,t-light0))))
     `(term-default-bg-color                     ((,class (:background ,dark0))
                                                  (,t-class (:background ,t-dark0))))

     ;; Web-mode
     `(web-mode-builtin-face ((,class (:inherit ,font-lock-builtin-face))
                              (,t-class (:inherit ,font-lock-builtin-face))))
     `(web-mode-comment-face ((,class (:inherit ,font-lock-comment-face))
                              (,t-class (:inherit ,font-lock-comment-face))))
     `(web-mode-constant-face ((,class (:inherit ,font-lock-constant-face))
                               (,t-class (:inherit ,font-lock-constant-face))))
     `(web-mode-doctype-face ((,class (:inherit ,font-lock-comment-face))
                              (,t-class (:inherit ,font-lock-comment-face))))
     `(web-mode-function-name-face ((,class (:inherit ,font-lock-function-name-face))
                                    (,t-class (:inherit ,font-lock-function-name-face))))
     `(web-mode-html-attr-name-face ((,class (:foreground ,neutral_red))
                                     (,t-class (:foreground ,t-neutral_red))))
     `(web-mode-html-attr-value-face ((,class (:foreground ,neutral_blue))
                                      (,t-class (:foreground ,t-neutral_blue))))
     `(web-mode-html-tag-face ((,class (:foreground ,bright_cyan))
                               (,t-class (:foreground ,t-bright_cyan))))
     `(web-mode-keyword-face ((,class (:foreground ,neutral_blue))
                              (,t-class (:foreground ,t-neutral_blue))))
     `(web-mode-string-face ((,class (:foreground ,neutral_green))
                             (,t-class (:foreground ,t-neutral_green))))
     `(web-mode-type-face ((,class (:inherit ,font-lock-type-face))
                           (,t-class (:inherit ,font-lock-type-face))))
     `(web-mode-warning-face ((,class (:inherit ,font-lock-warning-face))
                              (,t-class (:inherit ,font-lock-warning-face))))

     ;; which-func
     `(which-func                                 ((,class (:foreground ,bright_purple))
                                                   (,t-class (:foreground ,t-bright_purple))))

     ;; Which-key
     `(which-key-command-description-face         ((,class (:foreground ,light2))
                                                   (,t-class (:foreground ,t-light2))))
     `(which-key-group-description-face           ((,class (:foreground ,light4))
                                                   (,t-class (:foreground ,t-light4))))
     `(which-key-key-face                         ((,class (:foreground ,neutral_purple :weight bold))
                                                   (,t-class (:foreground ,t-neutral_purple :weight bold))))
     `(which-key-separator-face                   ((,class (:background nil :foreground ,dark_green))
                                                   (,t-class (:background nil :foreground ,t-dark_green))))
     `(which-key-special-key-face                 ((,class (:background ,neutral_red :foreground ,dark0))
                                                   (,t-class (:background ,t-neutral_red :foreground ,t-dark0))))

     ;; whitespace-mode
     `(whitespace-space                           ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-hspace                          ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-tab                             ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-newline                         ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-trailing                        ((,class (:foreground ,bright_yellow :background ,dark1))
                                                   (,t-class (:foreground ,t-bright_yellow))))
     `(whitespace-line                            ((,class (:foreground ,bright_red :background ,dark1))
                                                   (,t-class (:foreground ,t-bright_red :background ,t-dark1))))
     `(whitespace-space-before-tab                ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-indentation                     ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))
     `(whitespace-empty                           ((,class (:foreground nil :background nil))
                                                   (,t-class (:foreground nil :background nil))))
     `(whitespace-space-after-tab                 ((,class (:foreground ,dark4 :background ,dark0))
                                                   (,t-class (:foreground ,t-dark4 :background ,t-dark0))))

     ;; Weechat
     `(weechat-color-list
       `(unspecified ,dark1 ,dark3
                     ,neutral_red ,bright_red
                     ,neutral_green ,bright_green
                     ,neutral_yellow ,bright_yellow
                     ,neutral_blue ,bright_blue
                     ,neutral_purple ,bright_purple
                     ,neutral_cyan ,bright_cyan
                     ,light0_soft ,light3))


    ;; TODO:
    ;; Add these modes:
    ;; cscope, ERC, evil (perhaps), Gnus, etc.

     (custom-theme-set-variables
      'omtose-softer

      `(pos-tip-foreground-color ,light0_hard)
      `(pos-tip-background-color ,dark_cyan)

      `(ansi-color-names-vector [,dark3
                                 ,neutral_red
                                 ,neutral_green
                                 ,neutral_yellow
                                 ,neutral_blue
                                 ,dark_purple
                                 ,neutral_cyan
                                 ,light3])
      `(xterm-color-names [,dark3 ,neutral_red ,neutral_green ,neutral_yellow ,neutral_blue ,dark_purple ,neutral_cyan ,light3])
      `(xterm-color-names-bright
        [,dark4 ,bright_red ,bright_green ,bright_yellow ,bright_blue ,bright_purple ,bright_cyan ,light4]))))



;;;###autoload
(when (and (boundp 'custom-theme-load-path) load-file-name)
  (add-to-list 'custom-theme-load-path
               (file-name-as-directory (file-name-directory load-file-name))))

(provide-theme 'omtose-softer)

;; Local Variables:
;; no-byte-compile: t
;; fill-column: 95
;; End:

;;; omtose-softer-theme.el ends here