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
change xkylzksnmpnloktyoumpxmqlvsupokwm
commit 3452a043ec3fd9d9c21922fe931446b544bd487d
author Alpha Chen <alpha@kejadlen.dev>
date
parent vzztyywn
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