Camille Hodoul

ft-paper-night

Surfaces

  • Paperpaper#1f1915rgb(31, 25, 21)11.70:1 ink on this
    Page and terminal background
  • Paper raisedpaper-raised#261f1argb(38, 31, 26)10.93:1 ink on this
    Code and quote blocks
  • Surface 1surface-1#2b231drgb(43, 35, 29)10.39:1 ink on this
    Panels, popups, status lines
  • Surface 2surface-2#3a2f27rgb(58, 47, 39)8.75:1 ink on this
    Selection, inline code
  • Surface 3surface-3#40342brgb(64, 52, 43)8.11:1 ink on this
    Meters, highlighted and current lines
  • Rulerule#5c4f45rgb(92, 79, 69)5.32:1 ink on this
    Dividers, borders and disabled ink

Ink

  • Paper inkink#e3d1bfrgb(227, 209, 191)11.70:1 on paper
    8.11:1 at worst, on surface-3
    Body text, terminal foreground
  • Wheatink-bright#f2dfcergb(242, 223, 206)13.43:1 on paper · ANSI 15
    9.30:1 at worst, on surface-3
    Bold emphasis onlysurface-2 from ft-paper
  • Paper ink 2ink-2#c8b7a6rgb(200, 183, 166)8.92:1 on paper · ANSI 7
    6.18:1 at worst, on surface-3
    Secondary text
  • Mutedink-muted#b09f8frgb(176, 159, 143)6.79:1 on paper
    4.70:1 at worst, on surface-3
    Metadata, captions, code comments
  • Faintink-faint#998a7crgb(153, 138, 124)5.20:1 on paper · ANSI 8
    4.62:1 at worst, on surface-1
    Hints, autosuggestions — on paper, raised and surface 1
  • Disabledink-disabled#5c4f45rgb(92, 79, 69)2.20:1 on paper
    Disabled text, never content

Highlight 1 — Claret

  • Claretclaret#d28e9brgb(210, 142, 155)6.69:1 on paper · ANSI 1
    4.63:1 at worst, on surface-3
    Accent, links on hover, cursorclaret at 44% over day paper
  • Candyclaret-bright#d999a8rgb(217, 153, 168)7.51:1 on paper · ANSI 13
    5.20:1 at worst, on surface-3
    Decorative, bright magentaclaret-bright at 60% over day paper

Highlight 2 — Oxford

  • Oxfordoxford#7da5d2rgb(125, 165, 210)6.77:1 on paper · ANSI 4
    4.69:1 at worst, on surface-3
    Links, notes, informationoxford-bright at 58% over day paper
  • Oxford brightoxford-bright#9ab6d6rgb(154, 182, 214)8.31:1 on paper · ANSI 12
    5.75:1 at worst, on surface-3
    Emphasis, bright blueoxford-bright at 45% over day paper

Supporting

  • Jadejade#4db37brgb(77, 179, 123)6.66:1 on paper · ANSI 2
    4.62:1 at worst, on surface-3
    Success, stringsjade-bright at 70% over day paper
  • Jade brightjade-bright#80c599rgb(128, 197, 153)8.58:1 on paper · ANSI 10
    5.94:1 at worst, on surface-3
    Emphasis, bright greenjade-bright at 50% over day paper
  • Tealteal#4db4bargb(77, 180, 186)7.08:1 on paper · ANSI 6
    4.90:1 at worst, on surface-3
    Secondary category, variablesteal-bright at 70% over day paper
  • Teal brightteal-bright#73c1c3rgb(115, 193, 195)8.40:1 on paper · ANSI 14
    5.82:1 at worst, on surface-3
    Emphasis, bright cyanteal-bright at 55% over day paper
  • Mandarinmandarin#d2905frgb(210, 144, 95)6.53:1 on paper · ANSI 3
    4.53:1 at worst, on surface-3
    Warning, numbersmandarin-bright at 70% over day paper
  • Mandarin brightmandarin-bright#dca57crgb(220, 165, 124)8.04:1 on paper · ANSI 11
    5.57:1 at worst, on surface-3
    Emphasis, bright yellowmandarin-bright at 55% over day paper
  • Velvetvelvet#b49cb8rgb(180, 156, 184)6.94:1 on paper · ANSI 5
    4.81:1 at worst, on surface-3
    Tertiary category, functionsvelvet at 45% over day paper
  • Crimsoncrimson#e8857ergb(232, 133, 126)6.69:1 on paper · ANSI 9
    4.64:1 at worst, on surface-3
    Errorcrimson at 45% over day paper
  • Warm greywarm-grey#8a827argb(138, 130, 122)4.60:1 on paper · ANSI 0
    Dim glyphs; the darkest terminal slot, still text on paperunchanged from ft-paper

Derived fills

  • Addfill-add#183521rgb(24, 53, 33)9.01:1 ink on this
    Added linejade-bright at 22% over night paper
  • Removefill-remove#421411rgb(66, 20, 17)10.55:1 ink on this
    Removed linecrimson at 20% over night paper
  • Changefill-change#1f2a38rgb(31, 42, 56)9.77:1 ink on this
    Changed lineoxford-bright at 20% over night paper
  • Change focusfill-change-focus#1f3854rgb(31, 56, 84)8.07:1 ink on this
    The part that actually changed, inside a changed lineoxford-bright at 36% over night paper
  • Matchfill-match#55331brgb(85, 51, 27)7.54:1 ink on this
    Every hit of a searchmandarin-bright at 34% over night paper
  • Targetfill-target#561527rgb(86, 21, 39)9.23:1 ink on this
    The one hit being jumped toclaret at 45% over night paper
  • Warning washcrimson-wash#301713rgb(48, 23, 19)11.24:1 ink on this
    Warning callouts on the sitecrimson at 10% over night paper

Roles — Text and accents

  • Body textink on paper11.70:1
  • Strong emphasisink-bright on paper13.43:1
  • Secondary textink-2 on paper8.92:1
  • Metadata, captionsink-muted on paper6.79:1
  • Hints, placeholdersink-faint on paper5.20:1
  • Linkoxford on paper6.77:1
  • Link on hoverclaret on paper6.69:1
  • Identity accentclaret on paper6.69:1
  • Informationoxford on paper6.77:1
  • Successjade on paper6.66:1
  • Warningmandarin on paper6.53:1
  • Errorcrimson on paper6.69:1

Roles — Interface

  • Panel, popup, status lineink on surface-110.39:1
  • Selectionink on surface-28.75:1
  • Selection on camillehdl.devThe site selects text on the change fill; surface-2 sits too close to paper to show on a pageink on fill-change-focus8.07:1
  • Current lineink on surface-38.11:1
  • Block cursorA thick cursor is claret, with paper as the character under it: the terminal, Neovim outside insert modepaper on claret6.69:1
  • Bar cursorA thin cursor is ink: Neovim in insert modeink on paper11.70:1
  • Border, dividerNot text: a line only has to be seenrule on paper2.20:1
  • DisabledNot content: disabled text is exemptink-disabled on paper2.20:1

Roles — Code

  • Code blockink on paper-raised10.93:1
  • Inline codeink on surface-28.75:1
  • Comment (italic)ink-muted on paper-raised6.34:1
  • Punctuationink-2 on paper-raised8.34:1
  • Keyword, importoxford on paper-raised6.33:1
  • String, inserted, tag attributejade on paper-raised6.22:1
  • Number, booleanmandarin on paper-raised6.10:1
  • Function, class, typevelvet on paper-raised6.49:1
  • Operator, URLteal on paper-raised6.61:1
  • Tag, property, constant, deletedclaret on paper-raised6.25:1
  • Macro, escape, decoratorEditors onlyclaret on paper-raised6.25:1
  • Regex, exception, importantcrimson on paper-raised6.25:1
  • VariablePlain names stay uncoloredink on paper-raised10.93:1
  • ParameterEditors onlyink-2 on paper-raised8.34:1
  • Highlighted lineMarked by a claret left borderink on surface-38.11:1

Roles — Diff and search

  • Added lineink on fill-add9.01:1
  • Removed lineink on fill-remove10.55:1
  • Changed lineink on fill-change9.77:1
  • Changed partink on fill-change-focus8.07:1
  • Search hitink on fill-match7.54:1
  • Current search hitink on fill-target9.23:1
  • Warning calloutink on crimson-wash11.24:1

Terminal

  • Background and foregroundink on paper11.70:1
  • Block cursorcursor-color claret, cursor-text paperpaper on claret6.69:1
  • Bar cursorA thin cursor, where a program asks for one, is inkink on paper11.70:1
  • Selectionink on surface-28.75:1
  • 0 · blackwarm-grey#8a827a4.60:1 on paper
  • 1 · redclaret#d28e9b6.69:1 on paper
  • 2 · greenjade#4db37b6.66:1 on paper
  • 3 · yellowmandarin#d2905f6.53:1 on paper
  • 4 · blueoxford#7da5d26.77:1 on paper
  • 5 · magentavelvet#b49cb86.94:1 on paper
  • 6 · cyanteal#4db4ba7.08:1 on paper
  • 7 · whiteink-2#c8b7a68.92:1 on paper
  • 8 · bright blackink-faint#998a7c5.20:1 on paper
  • 9 · bright redcrimson#e8857e6.69:1 on paper
  • 10 · bright greenjade-bright#80c5998.58:1 on paper
  • 11 · bright yellowmandarin-bright#dca57c8.04:1 on paper
  • 12 · bright blueoxford-bright#9ab6d68.31:1 on paper
  • 13 · bright magentaclaret-bright#d999a87.51:1 on paper
  • 14 · bright cyanteal-bright#73c1c38.40:1 on paper
  • 15 · bright whiteink-bright#f2dfce13.43:1 on paper

Inspired by the Financial Times and its Origami o-colors palette.

© 2026