+;;; BTCSB-theme.el --- Baby, the Code Shines Bright -*- lexical-binding: t; -*-
+;;
+;; Author: Joe Wreschnig
+;; Package-Version: 20170806
+;; Package-Requires: ((emacs "24"))
+;; Keywords: faces
+;; URL: https://git.korewanetadesu.com/BTCSB-theme.git
+;;
+;; This is free and unencumbered software released into the public
+;; domain. Anyone is free to copy, modify, publish, use, compile,
+;; sell, or distribute this software, either in source code form or as
+;; a compiled binary, for any purpose, commercial or non-commercial,
+;; and by any means.
+\f
+;;; Commentary:
+;;
+;; "Baby, The Code Shines Bright" is an Emacs adaptation of Jessica
+;; Allen's TextMate theme of the same name, which is in turn a
+;; TextMate adaptation of frilly dresses.
+;;
+;; Because Emacs is not TextMate, it doesn't look exactly the same,
+;; but it uses the same color palette and basic color choices.
+\f
+;;; Code:
+
+(require 'color)
+
+(deftheme BTCSB "Baby, The Code Shines Bright theme
+
+Baby, The Code Shines Bright is an Emacs adaptation of Jessica
+Allen's TextMate theme of the same name, a pastel-on-dark color
+palette inspired by lolita dresses. URL
+`http://spacekat.github.com/blog/2010/08/26/cute-code-overload/'
+
+That's in turn a TextMate adaptation of frilly dresses. URL
+`http://www.babyssb.co.jp/'
+
+The theme doesn't provide a default font family or size, but
+recommended pairings are Fantasque Sans or Monaco.")
+
+(defun BTCSB-theme-dim (color dark desaturate)
+ "Darken COLOR by DARK and desaturate it by DESATURATE."
+ (color-desaturate-name (color-darken-name color dark) desaturate))
+
+(let (;; These are the colors from the original TextMate theme, along
+ ;; with what they were used for. These do not map cleanly either
+ ;; way to Emacs faces (I'm not sure what a "CSS constructor
+ ;; argument" even is) so the comments are more for reference
+ ;; back to the original file than any current use.
+ ;;
+ ;; "Support" refers to built-ins along with interfaces which are
+ ;; part of standard libraries; Emacs modes generally do not
+ ;; distinguish between library and client code.
+ ;;
+ ;; Most colors that were used as background colors are instead
+ ;; used as accents (e.g. underline and fringe), because Emacs
+ ;; doesn't blend colors when given multiple faces. Background
+ ;; colors are reserved for short-lived states that need
+ ;; immediate attention, e.g. region and search selection.
+
+ ;; TODO: Several of these colors are too dark to be reasonable,
+ ;; even if I assume they were in Generic RGB γ=2.2 originally.
+ ;; Also a few are indistinguishable to me on the displays
+ ;; I've tested so far (e.g. the two bright yellows). We could
+ ;; either merge them or pick a few more shades from more recent
+ ;; Baby design palettes.
+
+ (clr01 "#000000") ; background
+ (clr02 "#041C1A") ; line highlight
+ (clr03 "#1C1C1C") ; CSS constructor background
+
+ (clr04 "#F6F6F6") ; default foreground
+ (clr05 "#3E3E3E") ; precomposed "invisibles" foreground
+ (clr06 "#FFFFFF") ; caret
+
+ (clr07 "#4D605F") ; comment
+ (clr08 "#8693A5") ; CSS @at-rule
+ (clr09 "#9CA8D4") ; deprecated foreground
+
+ (clr10 "#D99ED1") ; entity
+ (clr11 "#DE99BF") ; support function, CSS property value
+ (clr12 "#F465B6") ; variable, string variable, CSS additional constant
+
+ (clr13 "#94579E") ; keyword
+ (clr14 "#9C69F6") ; regexp special
+ (clr15 "#A768EF") ; selection overlay
+ (clr16 "#442A61") ; premultiplied selection overlay, 41% opacity
+
+ (clr17 "#B3F382") ; string constant, support constant, CSS pseudo-class
+ (clr18 "#BFF294") ; constant
+
+ (clr19 "#FFC53B") ; old selection highlight at 48% opacity
+ (clr20 "#F9EE99") ; regexp
+ (clr21 "#FFF39E") ; storage (i.e. type)
+
+ (clr22 "#2A1852") ; deprecated background
+ (clr23 "#4B7FD4") ; support, inheritance, CSS constructor argument
+ (clr24 "#5BB5D0") ; CSS class name
+ (clr25 "#61C8C3") ; strings, embedded source
+ (clr26 "#9CEFF2") ; CSS tag name, ID
+ (clr27 "#D44741") ; illegal background
+
+ ;; Additional colors from a variant by Zak Remer
+ (clr28 "#240C29") ; alternate line highlight
+ (clr29 "#100E2D") ; alternate highlight
+ (clr30 "#DB558F") ; alternate storage modifier