Skip to content
Subway SeatSubway SeatSubway Seat

The palette

Twenty-six roles, six flavors.

Every port is written against these roles, not raw hex, so each flavor fills the same slots — and the role keeps its own name in each city. Rows show the flavors of the city you're riding, with each color's contrast on that flavor's base. Pick any value to copy it.

Ground
SwatchRoleWalnutTunnelEnamelMoquetteDeep LevelPortlandGuimardCatacombesCarrelageUsed for
BlackoutRunning tunnelBallastcrustgrooves and borders between panes
EspressoConcourseFontemantlechrome: sidebars, title and status bars
PanelingMoquetteGuimardbasethe editor and terminal ground
CoppertoneArmrestBanquettesurface0the current line, inputs, popovers
SaddleGrab railRambardesurface1raised controls, terminal black
CorduroyIronworkFerronneriesurface2selection
PecanHoardingArdoiseoverlay0gutters, whitespace, indent guides
CardboardEtched glassZincoverlay1comments, line numbers, bright black
BurlapFrostedBrumeoverlay2punctuation, muted labels
Text
SwatchRoleWalnutTunnelEnamelMoquetteDeep LevelPortlandGuimardCatacombesCarrelageUsed for
KhakiChalkCalcairesubtext06.8:1 · AA7.7:1 · AAA6.7:1 · AA6.8:1 · AA7.8:1 · AAA6.6:1 · AA6.7:1 · AA7.7:1 · AAA6.7:1 · AAplaceholders, quiet labels
AlmondVitreousCraiesubtext18.7:1 · AAA10.0:1 · AAA8.6:1 · AAA8.7:1 · AAA10.1:1 · AAA8.4:1 · AAA8.6:1 · AAA10.0:1 · AAA8.6:1 · AAAsidebar and secondary text
ParchmentJohnston whiteFaiencetext10.7:1 · AAA12.3:1 · AAA11.6:1 · AAA10.7:1 · AAA12.4:1 · AAA11.5:1 · AAA10.7:1 · AAA12.3:1 · AAA11.5:1 · AAAbody text, variables
IvoryTile whitePorcelainetextHi12.4:1 · AAA14.5:1 · AAA14.3:1 · AAA12.4:1 · AAA14.5:1 · AAA14.2:1 · AAA12.1:1 · AAA14.3:1 · AAA14.4:1 · AAAheadings, the active line number, bold
Accents
SwatchRoleWalnutTunnelEnamelMoquetteDeep LevelPortlandGuimardCatacombesCarrelageUsed for
Harvest goldHazard lineLaitonyellow8.5:1 · AAA10.2:1 · AAA4.4:1 · large8.6:1 · AAA10.2:1 · AAA4.3:1 · large8.3:1 · AAA10.0:1 · AAA4.2:1 · largefunctions, commands, the cursor
Broadway yellowHazard brightLaiton clairyellowHi10.2:1 · AAA12.2:1 · AAA3.6:1 · large10.2:1 · AAA12.2:1 · AAA3.6:1 · large10.2:1 · AAA12.3:1 · AAA3.5:1 · largebright yellow, emphasis on gold
Burnt orangeLondon brickBronzeorange5.3:1 · AA6.3:1 · AA5.4:1 · AA5.4:1 · AA6.4:1 · AA5.4:1 · AA5.2:1 · AA6.3:1 · AA6.6:1 · AAkeywords, tags, the Claude spinner
Sixth AvenueBrick brightBronze clairorangeHi7.0:1 · AAA8.4:1 · AAA4.4:1 · large7.2:1 · AAA8.6:1 · AAA4.3:1 · large6.8:1 · AA8.2:1 · AAA5.3:1 · AAbright magenta, the Claude spinner shimmer
RedbirdCorporate redTerre cuitered4.0:1 · large4.8:1 · AA7.0:1 · AAA4.0:1 · large4.8:1 · AA7.0:1 · AA3.7:1 · large4.5:1 · large8.0:1 · AAAerrors, terminal red
Redbird brightCorporate brightTerre cuite claireredHi6.0:1 · AA7.2:1 · AAA4.6:1 · AA6.1:1 · AA7.2:1 · AAA4.6:1 · AA5.5:1 · AA6.7:1 · AA5.4:1 · AAnumbers, constants, deletions
AvocadoDistrict greenPatinegreen6.8:1 · AA8.1:1 · AAA4.5:1 · AA7.0:1 · AA8.3:1 · AAA4.4:1 · large7.3:1 · AAA8.7:1 · AAA4.1:1 · largestrings, additions
Avocado brightDistrict brightPatine clairegreenHi8.2:1 · AAA9.8:1 · AAA4.3:1 · large8.4:1 · AAA10.0:1 · AAA4.1:1 · large9.0:1 · AAA10.8:1 · AAA3.6:1 · largebright green
Seafoam tileDockland tealVert-de-grissage5.8:1 · AA7.0:1 · AA5.0:1 · AA5.9:1 · AA7.1:1 · AAA4.9:1 · AA4.5:1 · large5.4:1 · AA6.3:1 · AAtypes, classes, options
Seafoam brightDockland brightVert-de-gris clairsageHi8.0:1 · AAA9.6:1 · AAA3.9:1 · large8.1:1 · AAA9.7:1 · AAA3.8:1 · large6.1:1 · AA7.3:1 · AAA4.9:1 · AAbright cyan
Faded denimCorporate blueEmaildenim5.0:1 · AA5.9:1 · AA5.5:1 · AA4.9:1 · AA5.8:1 · AA10.8:1 · AAA4.9:1 · AA5.9:1 · AA5.6:1 · AAlinks and info, the only cool color
Denim brightCornflowerEmail clairdenimHi6.9:1 · AA8.2:1 · AAA4.2:1 · large6.7:1 · AA8.1:1 · AAA4.3:1 · large6.7:1 · AA8.1:1 · AAA4.3:1 · largebright blue
TerracottaElizabeth violetBriqueclay7.4:1 · AAA8.9:1 · AAA7.2:1 · AAA6.0:1 · AA7.2:1 · AAA4.6:1 · AA8.2:1 · AAA9.9:1 · AAA3.6:1 · largeescapes, regex, decorators

Take it with you

For your design tools.

The palette as files, in the flavor you're riding. Each one has its own page under Palettes & formats.

Side by side

The same code, three ways.

One file, highlighted by each flavor's own generated theme. The roles stay put; only the light changes.

Walnutdark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Tunneldark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Enamellight
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Moquettedark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Deep Leveldark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Portlandlight
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Guimarddark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Catacombesdark
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None
Carrelagelight
# The next northbound F
from dataclasses import dataclass

@dataclass(frozen=True)
class Seat:
    car: str
    row: int = 7
    window: bool = True

def find(seats, line="F"):
    """A window seat, facing forward."""
    free = [s for s in seats if s.window]
    return free[0] if free else None