Pyrope
A deutan-aware dark colorscheme.
One palette. Seven design rules. Consistent roles across every tool.
The Colors
Every color earns its place. No arbitrary additions, no decorative noise without purpose.
Click any swatch to copy its hex value.
Backgrounds — the surface stack
Foreground — text on a surface
Accent & Status — meaning-bearing only
Sapphire (blue) is used for exactly one meaning across the entire scheme. Reserving a strong, reliable hue for one purpose is a core deutan-safe strategy.
Decorative — visual variety, never meaning
These are for visual texture only — tag chips, avatar rings, decorative accents. They never encode status or meaning.
Designed for Deutan Vision
Deuteranopia means the green photoreceptors are absent or non-functional. The blue channel runs at full strength. The red channel at ~75%. The green channel near zero. Most dark colorschemes ignore this entirely — Pyrope was built around it.
The green problem
Cool greens, mints, and seafoams carry a blue component that, under a fully-active blue cone, reads as blue instead of green. Amethyst and purple do the same thing. Pyrope's accent is a warm, yellow-leaning pear green — high red channel, low blue channel — so it actually reads as green-gold, not blue.
One palette, every tool
Sapphire is always 'success.' Amber is always 'warning.' Garnet is always 'error' — whether it's a terminal, a text editor, a browser game, or a desktop environment. Cognitive load drops when the color-role mapping never changes between tools.
Brightness as a backup signal
Every status and accent color in the palette differs in lightness as well as hue, so that if two colors ever blur together perceptually, one is still clearly brighter than the other. Hue alone is never the only signal.
ANSI 16 in Action
The 16-color ANSI palette is the backbone of terminal theming. Every color maps directly to a Pyrope token.
Click any color block to copy its hex value.
ANSI green is the Pear accent itself — not a teal substitute. This is intentional. The git diff pairing (garnet/red vs pear-green) gives two colors that are separated by both hue AND lightness, making them distinguishable even without reliable green-cone function.
Syntax Roles
The same role assignments apply identically across VS Code, Neovim, Zed, and Kate.
// Pyrope colorscheme — syntax role demoimport React, { useState, useEffect } from 'react' interface ThemeConfig { name: string variant: 'dark' | 'light' accentHex: string} const DEFAULT_CONFIG: ThemeConfig = { name: 'pyrope', variant: 'dark', accentHex: '#a8c155',} const ThemeProvider: React.FC<{ config?: ThemeConfig }> = ({ config = DEFAULT_CONFIG,}) => { const [active, setActive] = useState<boolean>(true) useEffect() => { // Apply theme tokens to document root document.documentElement.style.setProperty( '--accent', config.accentHex ) }, [config.accentHex]) if (!active) return null return <div className="pyrope-root" data-theme={config.variant} />} export default ThemeProviderAvailable For
One palette definition. Theme files generated per-application with consistent role assignments.
VS Code
theme.jsonSemantic token mapping for full language support
Neovim
init.luaTreesitter + LSP highlight group assignments
Zed
.zed-themeEditor and UI token configuration
Kate
kateschemaKDE-native syntax color scheme
KDE Plasma
.colorsFull Breeze palette override for the desktop
Kitty
kitty.conf16-color ANSI + extended color configuration
Alacritty
alacritty.tomlTerminal ANSI palette and cursor colors
Lichess
CSS variablesBoard, pieces, and interface theming
What Didn't Make It — and Why
Design by exclusion is as important as design by inclusion. These colors were considered and rejected for specific, documented reasons.
Amethyst / Purple
#7b6fb0Reads as blue once the blue cone overrides the muted red component. Looked 'blue' in practice despite the math suggesting otherwise.
Terracotta / Red as primary accent
#c96a3aDisliked aesthetically. Unrelated to vision — just not the right visual fit for the warm-dark-jeweltone direction.
Cool mint / Seafoam
#5bb8a0Same problem as amethyst — the blue component dominates perceptually under a fully-active blue cone.
Pure saturated green as meaning-bearing
#22c55eWith green cone function at ~0%, anything riding purely on green hue is invisible regardless of how 'safe' it looks in a color checker.
The blue-channel test: any color with a blue RGB component above ~20% of total is a candidate for perceptual collapse to blue. This is the actual filter applied when evaluating new palette additions.