Camille Hodoul

ft-paper

Surfaces

  • Paperpaper#fff1e5rgb(255, 241, 229)12.98:1 ink on this
    Page, editor and terminal background
  • Paper raisedpaper-raised#fff9f2rgb(255, 249, 242)13.74:1 ink on this · ANSI 15
    Code and quote blocks, popups, widgets
  • Surface 1surface-1#f7e7d8rgb(247, 231, 216)11.89:1 ink on this
    Panels, side bars, status lines, notes
  • Surface 2surface-2#f2dfcergb(242, 223, 206)11.10:1 ink on this
    Selection, inline code, active rows
  • Surface 3surface-3#efdccargb(239, 220, 202)10.78:1 ink on this
    Current and highlighted lines, meters, Herdr panels
  • Rulerule#b8afa5rgb(184, 175, 165)6.65:1 ink on this · ANSI 7
    Dividers, borders, whitespace glyphs

Ink

  • Slateink#262a33rgb(38, 42, 51)12.98:1 on paper · ANSI 0
    10.78:1 at worst, on surface-3
    Body text, terminal foreground
  • Mastheadmasthead#191817rgb(25, 24, 23)16.01:1 on paper
    The site's name, darker than body ink; the site onlyblack at 90% over paper
  • Slate 2ink-2#4a4f59rgb(74, 79, 89)7.43:1 on paper
    6.17:1 at worst, on surface-3
    Secondary text, parameters, properties, quotes
  • Mutedink-muted#6b6259rgb(107, 98, 89)5.39:1 on paper
    4.61:1 at worst, on surface-2
    Metadata, captions, code comments, line numbers
  • Faintink-faint#6f6862rgb(111, 104, 98)4.95:1 on paper
    4.53:1 at worst, on surface-1
    Hints and inactive labels; on paper, raised and surface 1
  • Disabledink-disabled#b8afa5rgb(184, 175, 165)1.95:1 on paper · ANSI 7
    Disabled textsame as rule

Highlight 1 — Claret

  • Claretclaret#990f3drgb(153, 15, 61)7.62:1 on paper · ANSI 1
    6.33:1 at worst, on surface-3
    Accent, links on hover, cursor, headings in editors
  • Candyclaret-bright#bf5f80rgb(191, 95, 128)3.67:1 on paper · ANSI 13
    Decorative only

Highlight 2 — Oxford

  • Oxfordoxford#0f5499rgb(15, 84, 153)6.90:1 on paper · ANSI 4
    5.73:1 at worst, on surface-3
    Links, information, focus
  • Oxford brightoxford-bright#1e6ec4rgb(30, 110, 196)4.65:1 on paper · ANSI 12
    Gradient starts, hovered buttons; base of the change fills

Supporting

  • Jadejade#00733argb(0, 115, 58)5.40:1 on paper · ANSI 2
    4.62:1 at worst, on surface-2
    Success, strings, additions
  • Jade brightjade-bright#00994drgb(0, 153, 77)3.35:1 on paper · ANSI 10
    Bright green; base of the add fill
  • Tealteal#0d7680rgb(13, 118, 128)4.84:1 on paper · ANSI 6
    Secondary category: types in editors, hints
  • Teal brightteal-bright#009aa8rgb(0, 154, 168)3.07:1 on paper · ANSI 14
    Bright cyan
  • Mandarinmandarin#99521frgb(153, 82, 31)5.30:1 on paper · ANSI 3
    4.53:1 at worst, on surface-2
    Warning, numbers, constants
  • Mandarin brightmandarin-bright#bf6626rgb(191, 102, 38)3.69:1 on paper · ANSI 11
    Bright yellow; base of the match fill
  • Velvetvelvet#593380rgb(89, 51, 128)8.58:1 on paper · ANSI 5
    7.13:1 at worst, on surface-3
    Tertiary category: keywords in editors
  • Crimsoncrimson#cc0000rgb(204, 0, 0)5.32:1 on paper · ANSI 9
    4.55:1 at worst, on surface-2
    Error, deletions, exceptions
  • Warm greywarm-grey#8a827argb(138, 130, 122)3.41:1 on paper · ANSI 8
    Dim glyphs, under 4.5:1

Derived fills

  • Addfill-add#ccdfc7rgb(204, 223, 199)10.23:1 ink on this
    Added linejade-bright at 20% over paper
  • Removefill-remove#f7cac0rgb(247, 202, 192)9.69:1 ink on this
    Removed linecrimson at 16% over paper
  • Changefill-change#dbdce0rgb(219, 220, 224)10.49:1 ink on this
    Changed lineoxford-bright at 16% over paper
  • Change focusfill-change-focus#b7c7dargb(183, 199, 218)8.34:1 ink on this
    The part that actually changed, inside a changed lineoxford-bright at 32% over paper
  • Matchfill-match#e9c2a4rgb(233, 194, 164)8.70:1 ink on this
    Every hit of a searchmandarin-bright at 34% over paper
  • Targetfill-target#d697a2rgb(214, 151, 162)6.03:1 ink on this
    The one hit being jumped toclaret at 40% over paper
  • Warning washcrimson-wash#fbded3rgb(251, 222, 211)11.28:1 ink on this
    Warning callouts on this sitecrimson at 8% over paper

Roles — Text and accents

  • Body textcamillehdl.dev · Ghostty · Herdr · Neovim · VS Code · glow · btopink on paper12.98:1
  • Site namecamillehdl.devmasthead on paper16.01:1
  • Secondary textcamillehdl.dev · Herdr · Neovim · VS Code · glowink-2 on paper7.43:1
  • Metadata, captionscamillehdl.dev · Herdr · Neovim · VS Code · btopink-muted on paper5.39:1
  • Hints, inactive labelsHerdr · Neovim · VS Codeink-muted on paper5.39:1
  • Inactive labels in btopbtopink-faint on paper4.95:1
  • Linkcamillehdl.dev · Neovim · VS Code · glowoxford on paper6.90:1
  • Link on hovercamillehdl.dev · VS Codeclaret on paper7.62:1
  • Identity accentCursor, headings, the active tab, quote borderscamillehdl.dev · Ghostty · Herdr · Neovim · VS Code · glow · btopclaret on paper7.62:1
  • Informationcamillehdl.dev · Neovim · VS Codeoxford on paper6.90:1
  • SuccessHerdr · Neovim · VS Codejade on paper5.40:1
  • WarningHerdr · Neovim · VS Codemandarin on paper5.30:1
  • Errorcamillehdl.dev · Herdr · Neovim · VS Codecrimson on paper5.32:1
  • HintNeovim · VS Codeteal on paper4.84:1

Roles — Interface

  • Panel, side bar, notecamillehdl.dev · Herdr · VS Codeink on surface-111.89:1
  • Status lineNeovim · VS Codeink-2 on surface-16.80:1
  • Inactive tabNeovim · VS Codeink-muted on surface-14.94:1
  • Popup, widgetNeovim · VS Codeink on paper-raised13.74:1
  • SelectionGhostty · Herdr · Neovim · VS Code · btopink on surface-211.10:1
  • Selection on this sitesurface-2 sits too close to paper to show a selection on a pagecamillehdl.devink on fill-change-focus8.34:1
  • Current line, active rowVS Code draws it as a border onlyHerdr · Neovim · VS Codeink on surface-310.78:1
  • Block cursorA thick cursor is claret, with paper as the character under it: the terminal and Herdr's panes, Neovim outside insert mode, VS Code's terminalGhostty · Herdr · Neovim · VS Codepaper on claret7.62:1
  • Bar cursorA thin cursor is ink: Neovim in insert mode, VS Code's editorNeovim · VS Codeink on paper12.98:1
  • Label on the accentCurrent search hit and jump labels in Neovim, the title band in glowNeovim · glowpaper on claret7.62:1
  • Marked textcamillehdl.devpaper-raised on claret8.07:1
  • Button, badgeVS Code · btoppaper on oxford6.90:1
  • Line numbercamillehdl.dev · Neovim · VS Codeink-muted on paper5.39:1
  • Border, dividerNot text: a line only has to be seencamillehdl.dev · Neovim · VS Code · glow · btoprule on paper1.95:1
  • DisabledNot content: disabled text is exemptVS Codeink-disabled on paper1.95:1

Roles — Code

  • Comment (italic)camillehdl.dev · Neovim · VS Code · glowink-muted on paper5.39:1
  • Punctuationcamillehdl.dev · Neovim · VS Code · glowink-2 on paper7.43:1
  • Keyword, importcamillehdl.dev · Neovim · VS Code · glowoxford on paper6.90:1
  • String, inserted, tag attributecamillehdl.dev · Neovim · VS Code · glowjade on paper5.40:1
  • Number, booleancamillehdl.dev · Neovim · VS Code · glowmandarin on paper5.30:1
  • Function, class, typecamillehdl.dev · Neovim · VS Code · glowvelvet on paper8.58:1
  • Operator, URLcamillehdl.dev · Neovim · VS Code · glowteal on paper4.84:1
  • Tag, property, constant, deletedcamillehdl.dev · Neovim · VS Code · glowclaret on paper7.62:1
  • Macro, escape, decoratorNeovim · VS Code · glowclaret on paper7.62:1
  • Regex, exception, importantcamillehdl.dev · Neovim · VS Code · glowcrimson on paper5.32:1
  • VariableThe site leaves plain names uncolored tooNeovim · VS Codeink on paper12.98:1
  • ParameterNeovim · VS Codeink-2 on paper7.43:1
  • Code blockcamillehdl.dev · Neovimink on paper-raised13.74:1
  • Inline codecamillehdl.dev · Neovim · VS Code · glowink on surface-211.10:1
  • Highlighted lineMarked by a claret left bordercamillehdl.devink on surface-310.78:1

Roles — Diff and search

  • Added lineNeovim · VS Code · glowink on fill-add10.23:1
  • Removed lineNeovim · VS Code · glowink on fill-remove9.69:1
  • Changed lineNeovimink on fill-change10.49:1
  • Changed partNeovimink on fill-change-focus8.34:1
  • Search hitNeovim · VS Codeink on fill-match8.70:1
  • Current search hitNeovim · VS Codeink on fill-target6.03:1
  • Warning calloutcamillehdl.devink on crimson-wash11.28:1

Terminal

  • Background and foregroundGhostty · VS Codeink on paper12.98:1
  • Block cursorcursor-color claret, cursor-text paperGhostty · VS Codepaper on claret7.62:1
  • Bar cursorA thin cursor, where a program asks for one, is inkNeovimink on paper12.98:1
  • SelectionGhostty · VS Codeink on surface-211.10:1
  • 0 · blackink#262a3312.98:1 on paper
  • 1 · redclaret#990f3d7.62:1 on paper
  • 2 · greenjade#00733a5.40:1 on paper
  • 3 · yellowmandarin#99521f5.30:1 on paper
  • 4 · blueoxford#0f54996.90:1 on paper
  • 5 · magentavelvet#5933808.58:1 on paper
  • 6 · cyanteal#0d76804.84:1 on paper
  • 7 · whiterule#b8afa51.95:1 on paper
  • 8 · bright blackwarm-grey#8a827a3.41:1 on paper
  • 9 · bright redcrimson#cc00005.32:1 on paper
  • 10 · bright greenjade-bright#00994d3.35:1 on paper
  • 11 · bright yellowmandarin-bright#bf66263.69:1 on paper
  • 12 · bright blueoxford-bright#1e6ec44.65:1 on paper
  • 13 · bright magentaclaret-bright#bf5f803.67:1 on paper
  • 14 · bright cyanteal-bright#009aa83.07:1 on paper
  • 15 · bright whitepaper-raised#fff9f21.06:1 on paper

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

© 2026