seoulnight

서울밤 Seoulnight

An editor color scheme drawn from Seoul after dark. Eight hues from neon, river, and ginkgo, tuned for late-night code.

night-shift.ts
// Seoul, 02:14. The signs are still on.
import { palette } from "seoulnight";

type Signal = {
  line: number;
  hue: string;
};

const lastTrain: Signal[] = [
  { line: 2, hue: palette.hangang },
  { line: 4, hue: palette.dancheong },
];

function nightShift(hour: number) {
  if (hour < 5) return palette.neon;
  // dawn turns the signs off
  return palette.dalbit;
}

Eight colors, numbered like transit lines

Every hue is sampled from the city at night, then desaturated until it can hold still for hours. Contrast is measured against the editor background.

  • dalbit달빛

    text and punctuation

    14.5:1

  • neon네온

    keywords and control flow

    5.4:1

  • hangang한강

    functions and calls

    7.1:1

  • dancheong단청

    types and constants

    6.1:1

  • namsan남산

    strings

    8.4:1

  • eunhaeng은행

    numbers and units

    9.1:1

  • jaha자하

    attributes and metadata

    6.0:1

  • angae안개

    comments

    5.2:1

Tuned for the hour after midnight

Most dark schemes are designed at noon, on bright monitors, by people who log off at six. Seoulnight is calibrated the other way around: every hue was checked at two in the morning, at low brightness, against the tired eyes it will actually meet. The background is not black but a deep river-blue, because true black turns bright accents into halos and makes every glyph vibrate at the edges.

The eight colors come from the city itself. Han River blue for functions, because calls flow into one another. Sign-neon magenta for keywords, the words that stay lit all night. Ginkgo yellow for numbers, vermilion from palace eaves for types, pine green off Namsan for strings. Comments sit back in fog.

Nothing in the scheme glows or pulses. A color scheme should hold still for six hours straight, and the best compliment it can earn is that you stopped noticing it.

Notes from the night shift

A devlog on how the scheme is tuned: one decision per note, with the measurements that backed it.

  • Release notes, version 1.0

    The scheme is frozen: eight colors, every one measured, none of them moving again without a note in this log.

  • The roundel legend

    The scheme needed a legend that works at thumbnail size. Metro line roundels turned out to be the answer.

  • Hangul in the margins

    Korean glyphs are visually denser than Latin ones. What that means for line height, UI labels, and the specimen on the landing page.