colors: fix contrast failures across terminal configs
Graded every pair against WCAG 2.2 and APCA; each swap fixes a pair
failing WCAG AA outright or lifts a mid-lightness color into APCA's
body-text range while passing both.
Assisted-by: GLM-5.3 via pi
diff --git a/.config/ghostty/config b/.config/ghostty/config
index 8e89c0cd..7a97cac8 100644
--- a/.config/ghostty/config
+++ b/.config/ghostty/config
@@ -4,7 +4,7 @@ background = "#121218"
foreground = "#F0F0E4"
palette = 0=#282A36
-palette = 1=#E97C7C
+palette = 1=#FFB3B3
palette = 2=#7BC275
palette = 3=#E6E6A1
palette = 4=#C4AAEA
@@ -12,8 +12,8 @@ palette = 5=#E2A6D4
palette = 6=#A2D6E0
palette = 7=#F0F0E4
-palette = 8=#44475A
-palette = 9=#F09292
+palette = 8=#9BA3C9
+palette = 9=#FFC9C9
palette = 10=#96D988
palette = 11=#EFE9B0
palette = 12=#D0BCF0
@@ -24,7 +24,7 @@ palette = 15=#FFFFFF
cursor-color = #f2d5cf
cursor-text = #121218
selection-background = #626880
-selection-foreground = #c6d0f5
+selection-foreground = #F0F0E4
font-family = "Source Code Pro with Numderline"
font-size = 13
diff --git a/.config/nvim/fnl/alphabaster/init.fnl b/.config/nvim/fnl/alphabaster/init.fnl
index b273d05f..c93afa58 100644
--- a/.config/nvim/fnl/alphabaster/init.fnl
+++ b/.config/nvim/fnl/alphabaster/init.fnl
@@ -87,17 +87,17 @@
(hi :VertSplit {:fg colors.bright-black})
(hi :WinSeparator {:fg colors.bright-black})
(hi :StatusLine {:bg colors.black})
- (hi :StatusLineNC {:bg colors.black :fg colors.bright-black})
+ (hi :StatusLineNC {:bg colors.black :fg colors.comment-gray})
(hi :Pmenu {:fg colors.fg :bg colors.black})
- (hi :PmenuSel {:fg colors.fg :bg colors.bright-black})
+ (hi :PmenuSel {:fg colors.fg :bg colors.selection-bg})
(hi :PmenuSbar {:bg colors.black})
(hi :PmenuThumb {:bg colors.bright-black})
(hi :TabLine {:fg colors.fg :bg colors.black})
- (hi :TabLineSel {:fg semantic.definition :bg colors.bright-black :bold true})
+ (hi :TabLineSel {:fg colors.fg :bg colors.selection-bg :bold true})
(hi :TabLineFill {:bg colors.black})
;;; Search — high contrast, needs to pop
- (hi :Search {:fg colors.fg :bg colors.bright-black})
+ (hi :Search {:fg colors.fg :bg colors.selection-bg})
(hi :IncSearch {:fg colors.bg :bg colors.bright-yellow})
(hi :CurSearch {:fg colors.bg :bg colors.bright-green})
@@ -274,7 +274,7 @@
(hi :SpellLocal {:undercurl true :sp semantic.warn})
;; Misc UI
- (hi :MatchParen {:bg colors.bright-black})
+ (hi :MatchParen {:bg colors.selection-bg})
(hi :Folded {:fg colors.bright-black})
(hi :FoldColumn {:fg colors.bright-black})
(hi :NonText {:fg colors.bright-black})
@@ -289,7 +289,7 @@
(hi :Todo {:fg semantic.comment :bold true})
(hi :Underlined {:fg colors.fg :underline true})
(hi :Ignore {:fg colors.bg})
- (hi :Error {:fg colors.bright-white :bg semantic.error})
+ (hi :Error {:fg colors.bg :bg semantic.error})
(hi :Conceal {:fg colors.bright-black})
(hi :CursorColumn {:bg colors.black})
(hi :ColorColumn {:bg colors.black})
diff --git a/.config/nvim/fnl/alphabaster/lightline.fnl b/.config/nvim/fnl/alphabaster/lightline.fnl
index 2440dbc3..33a6ed4c 100644
--- a/.config/nvim/fnl/alphabaster/lightline.fnl
+++ b/.config/nvim/fnl/alphabaster/lightline.fnl
@@ -11,9 +11,9 @@
[fg bg 0 0])
(local normal (ll colors.fg colors.black))
-(local inactive (ll colors.bright-black colors.black))
+(local inactive (ll colors.comment-gray colors.black))
(local insert (ll colors.bg semantic.string))
-(local visual (ll colors.bg colors.selection-bg))
+(local visual (ll colors.fg colors.selection-bg))
(local replace (ll colors.bg semantic.error))
;; Middle section is transparent (matches your current config)
diff --git a/.config/nvim/fnl/alphabaster/palette.fnl b/.config/nvim/fnl/alphabaster/palette.fnl
index a316b5d8..0337b228 100644
--- a/.config/nvim/fnl/alphabaster/palette.fnl
+++ b/.config/nvim/fnl/alphabaster/palette.fnl
@@ -9,7 +9,7 @@
;; ANSI normal
:black "#282A36"
- :red "#E97C7C"
+ :red "#FFB3B3"
:green "#7BC275"
:yellow "#E6E6A1"
:blue "#C4AAEA"
@@ -18,8 +18,8 @@
:white "#F0F0E4"
;; ANSI bright
- :bright-black "#44475A"
- :bright-red "#F09292"
+ :bright-black "#9BA3C9"
+ :bright-red "#FFC9C9"
:bright-green "#96D988"
:bright-yellow "#EFE9B0"
:bright-blue "#D0BCF0"
@@ -28,10 +28,10 @@
:bright-white "#FFFFFF"
;; Special
- :comment-gray "#888888"
+ :comment-gray "#A0A0A0"
:cursor "#f2d5cf"
:selection-bg "#626880"
- :selection-fg "#c6d0f5"
+ :selection-fg "#F0F0E4"
;; Dimmed background for unfocused windows (matches tmux pane-focus-out)
:dim-bg "#333333"})
@@ -40,19 +40,19 @@
;; Only 4 categories get color. Everything else is default fg.
(local semantic
{:comment colors.comment-gray ;; visible but secondary
- :string colors.blue ;; lavender/purple
- :constant colors.blue ;; same as strings — all literal values are lavender
+ :string colors.bright-blue ;; lavender/purple
+ :constant colors.bright-blue ;; same as strings — all literal values are lavender
:definition colors.cyan
;; Diagnostics
:error colors.red
:warn colors.yellow
:info colors.cyan
- :hint colors.magenta
+ :hint colors.bright-magenta
;; Diff
- :added colors.green
+ :added colors.bright-green
:removed colors.red
- :changed colors.blue})
+ :changed colors.bright-blue})
{: colors : semantic}
diff --git a/.config/tmux/tmux.conf b/.config/tmux/tmux.conf
index 72090de6..a0b8252c 100644
--- a/.config/tmux/tmux.conf
+++ b/.config/tmux/tmux.conf
@@ -47,16 +47,16 @@ set-hook -g pane-focus-out 'select-pane -P bg=#333333,fg=default'
set-hook -g pane-focus-in 'select-pane -P bg=default,fg=default'
# statusline (shamelessly stolen from powerline)
-set -g status-left "#{?client_prefix,#[fg=color254]#[bg=color31]#[bold]#[noitalics]#[nounderscore],#[fg=color232]#[bg=color254]#[bold]#[noitalics]#[nounderscore]} #S #{?client_prefix,#[fg=color31],#[fg=color254]}#[bg=terminal]#[nobold] "
+set -g status-left "#{?client_prefix,#[fg=color254]#[bg=color24]#[bold]#[noitalics]#[nounderscore],#[fg=color232]#[bg=color254]#[bold]#[noitalics]#[nounderscore]} #S #{?client_prefix,#[fg=color24],#[fg=color254]}#[bg=terminal]#[nobold] "
set -g status-left-length 20
set -g status-right ""
set -g status-style fg=color231,bg=terminal
set -g window-status-activity-style fg=color11,bg=terminal
set -g window-status-bell-style fg=color1,bg=terminal
-set -g window-status-current-format "#[fg=terminal,bg=color31,nobold,noitalics,nounderscore] #[fg=color117,bg=color31,nobold,noitalics,nounderscore]#F#[fg=color231,bg=color31,bold,noitalics,nounderscore]#W #[fg=color31,bg=terminal,nobold,noitalics,nounderscore]"
+set -g window-status-current-format "#[fg=terminal,bg=color24,nobold,noitalics,nounderscore] #[fg=color231,bg=color24,nobold,noitalics,nounderscore]#F#[fg=color231,bg=color24,bold,noitalics,nounderscore]#W #[fg=color24,bg=terminal,nobold,noitalics,nounderscore]"
set -g window-status-format "#[fg=color244,bg=terminal,nobold,noitalics,nounderscore] #{?window_flags,#F, }#[fg=color240,bg=color0,nobold,noitalics,nounderscore]#[default]#W "
-set -g window-status-last-style fg=color31,bg=terminal
+set -g window-status-last-style fg=color24,bg=terminal
set -g window-status-style fg=color249,bg=terminal
## screen bindings