# Anatomy of a Light Theme: Tallinn

> Anatomy of Tallinn, a light IDE theme: Baltic morning blues, a midnight ink foreground, cobalt keywords, amethyst strings and the red brick of the Old Town.

- URL: https://codigrate.com/blog/anatomy-of-the-tallinn-theme
- Published: 2026-10-06
- Category: Inspiration
- Theme: [Tallinn](https://codigrate.com/theme?product=tallinn)
- Publisher: Codigrate (https://codigrate.com)

On the shortest day of the year the sun over Tallinn climbs about seven degrees above the horizon
and then gives up. It rises after nine, sets before half past three, and for the six hours in
between it never gets higher than a fist held out at arm's length. The light that reaches the Old Town
comes in sideways, low across the roofs, and most of what lights the streets is not the sun at all
but the sky, reflected off snow and pale stone. Everything takes a little of its blue.

That is the light Codigrate's Tallinn theme is built in. The city under it is a Hanseatic town that
has kept its walls, its towers and its red tile roofs well enough to sit on the UNESCO World Heritage
list since 1997, most of it raised from the grey limestone the city stands on. What follows takes the
theme apart color by color. It is the sixth city in this series after
[Miami](https://codigrate.com/blog/anatomy-of-the-miami-theme), [Istanbul](https://codigrate.com/blog/anatomy-of-the-istanbul-theme),
[Paris](https://codigrate.com/blog/anatomy-of-the-paris-theme), [Rio de Janeiro](https://codigrate.com/blog/anatomy-of-the-rio-de-janeiro-theme)
and [Tokyo](https://codigrate.com/blog/anatomy-of-the-tokyo-theme), and the second light city after Rio, cold where Rio
was tropical.

## A Town Of Limestone, Tile And Sky

The theme's own description is a short one: crisp light and Baltic calm, airy porcelain backgrounds
with cool Nordic blues, deep ink accents and a few lavender and rose highlights for warmth. Its palette
names read like a walk from the harbor up to Toompea: Baltic Morning, Winter Sky, Limestone Blue,
Cobalt Spire, Old Town Indigo, Pink Facade, Terracotta Roof, Weathered Brick.

Most of the theme is the sky. The backgrounds, the interface text, the keywords, the caret and the
line numbers all sit near the same blue, around 217 degrees, and differ in how light they are. A deep
cobalt [#3F4494](https://codigrate.com/tools/color/3F4494) runs through the interface as the accent, with a periwinkle
[#7179CC](https://codigrate.com/tools/color/7179CC) beside it. The town sits on top of that blue: the cobalt of the spires
[#425EB8](https://codigrate.com/tools/color/425EB8), an amethyst [#81549C](https://codigrate.com/tools/color/81549C), a harbor blue
[#377CC1](https://codigrate.com/tools/color/377CC1), a spruce green [#1E7857](https://codigrate.com/tools/color/1E7857) and the red of old
brick [#B6564B](https://codigrate.com/tools/color/B6564B).

## The Harmony: A Cold Sky And Its Red Roofs

On a wheel, Tallinn's cool colors make one long arc. The greens of the courtyards and the spruce sit
near 138 and 158 degrees, the harbor blue of members near 210, the cobalt keywords near 226, the
accent near 236 and the amethyst strings out at 278. That is an
[analogous](https://codigrate.com/blog/introduction-to-color-harmony) spread, wide enough to tell tokens apart and close
enough that the whole file reads as one cold morning.

The warm colors do not sit straight across from the blue. The exact opposite of 217 degrees is near
37, and only one color in the theme stands there, the old brass of annotations at 32. The rest of the
warmth sits about thirty degrees to one side of it: the brick of parameters at 6, the weathered brick
of tags at 5, the rust of global variables at 9, the pink facade and terracotta of the open tab at 0.
That is a [split complementary](https://codigrate.com/blog/harmony-in-opposites) layout. A pure opposite of a Baltic blue
would be an orange, which the Old Town does not have. Red tile under snow is what it has, and the theme
takes the red.

## Backgrounds, Lit By Snow

A light theme lives on its whites, and Tallinn's are not white. Three of them share one hue near 217
degrees, and only the lightness moves:

- Editor [#EDF2FA](https://codigrate.com/tools/color/EDF2FA), Baltic morning, the porcelain blue the code is written
  on and the brightest of the set.
- Window [#D0DCEF](https://codigrate.com/tools/color/D0DCEF), a winter sky for the tool windows, tabs and panels.
- Surface [#A9B9DA](https://codigrate.com/tools/color/A9B9DA), a limestone blue for the outer frame the whole window
  sits in.

Input fields sit on a pure white [#FFFFFF](https://codigrate.com/tools/color/FFFFFF), one step brighter than the editor,
so the place you type is always the front of the window, fresh snow on old snow. The gutter is a
paler wash [#E1E9F6](https://codigrate.com/tools/color/E1E9F6) and the current line lifts to
[#D9E5F4](https://codigrate.com/tools/color/D9E5F4). Selection stays in the sky: selected text turns
[#B7C3E3](https://codigrate.com/tools/color/B7C3E3), a hovered row [#B8D0F3](https://codigrate.com/tools/color/B8D0F3), and a selected row in
the project tree [#BECCEC](https://codigrate.com/tools/color/BECCEC) edged in [#7A96D0](https://codigrate.com/tools/color/7A96D0).

The one break is the open tab. The active editor tab sits on a pink facade
[#ECC2C2](https://codigrate.com/tools/color/ECC2C2) with a terracotta underline [#C17777](https://codigrate.com/tools/color/C17777), the color
of the merchant houses around the Town Hall Square. In a frame made entirely of cold blue, that single
warm tab tells you where you are before you read its name, the way a red roof is the first thing you
find from the walls. Search matches stay warm too: a dusty rose [#D8BEBE](https://codigrate.com/tools/color/D8BEBE) in
the interface, and in the editor a candlelit parchment [#F1E4D3](https://codigrate.com/tools/color/F1E4D3) with the
matched text in a dark amber [#855C27](https://codigrate.com/tools/color/855C27).

## One Foreground, Several Voices

The text is not black either. Code is written in a midnight Baltic ink
[#0F244F](https://codigrate.com/tools/color/0F244F), a blue so deep it only shows its color next to a true black, at
about 13.5:1 against the editor. The interface text around it is a deep cobalt
[#184092](https://codigrate.com/tools/color/184092) at about 8.5:1, the same hue lifted a step, so labels and hints come
from the same ink as the code.

Comments step back into a slate grey [#80899C](https://codigrate.com/tools/color/80899C) at around 3:1, set in italics,
the color of limestone in shadow. It keeps the blue hue but loses nearly all of its color, which is
enough to read as a note in the margin rather than part of the program. That is the ladder from
[the readability post](https://codigrate.com/blog/introduction-to-readability): the code you act on reads first, the notes
about it second.

The gutter is cut from the same stone. The caret is a steel blue [#4D6FA2](https://codigrate.com/tools/color/4D6FA2), the
line numbers a pale slate [#7988A0](https://codigrate.com/tools/color/7988A0), and the number on the current line darkens
to [#1D3E74](https://codigrate.com/tools/color/1D3E74), so your place on the left edge is marked by depth, not by a new
color.

## Syntax: Spires, Courtyards And Brick

Open a file and the town fills in, from the sky down to the roofs:

- Keywords in cobalt spire [#425EB8](https://codigrate.com/tools/color/425EB8), set in bold. They are the most frequent
  colored words in any file, and the weight does the work a louder color would do in another theme,
  so the shape of each line shows without shouting.
- Strings, numbers and escapes in amethyst [#81549C](https://codigrate.com/tools/color/81549C), the one violet in the
  theme and the clearest step away from the blue.
- Methods and fields in harbor blue [#377CC1](https://codigrate.com/tools/color/377CC1), and JavaScript member functions
  in a lighter tone of it [#3F8CC3](https://codigrate.com/tools/color/3F8CC3).
- Local variables in spruce green [#1E7857](https://codigrate.com/tools/color/1E7857), and static members in a softer
  courtyard green [#548A64](https://codigrate.com/tools/color/548A64), the trees of the Old Town gardens in winter.
- Parameters in brick [#B6564B](https://codigrate.com/tools/color/B6564B), and HTML and XML tags in weathered brick
  [#B1544B](https://codigrate.com/tools/color/B1544B), set in bold, the roofs and the walls.
- Global variables in a rust [#91473A](https://codigrate.com/tools/color/91473A), annotations in old brass
  [#8E6433](https://codigrate.com/tools/color/8E6433), and attributes in a slate blue [#6584AC](https://codigrate.com/tools/color/6584AC).

Class names, function names, types and constants stay a near black ink
[#131B25](https://codigrate.com/tools/color/131B25) at about 15:1, the darkest color in the theme. Leaving the names
uncolored keeps a Tallinn file quiet. The eye reads the structure first, keyword, name, value, and the
greens, violets and bricks only appear where a value, a member or an input is waiting to be found.

## Reading It Back

Taken apart, Tallinn is a cold sky over a red town. The whites share one Baltic blue so the code
has a calm page to sit on. The language itself is drawn in cobalt and set in bold, the values in
amethyst, the members in harbor blue and the variables in the greens of the courtyards, and the red
of the roofs is kept for the parameters and tags you look for. One pink tab marks where you are, the
comments fade into limestone grey, and the names stay a dark ink so nothing fights the structure.

It suits a bright room on a short winter day, which is also when the real city looks most like this,
the sun low over the Gulf of Finland and the snow on the roofs taking the color of the sky. Tallinn
installs free on JetBrains, VS Code, Cursor, Sublime Text, Chrome, Slack, Ghostty, iTerm2,
macOS Terminal and Rhino, all from its [theme page](https://codigrate.com/theme?product=tallinn).

## Frequently Asked Questions

### What is the Tallinn theme?

Tallinn is one of Codigrate's light city themes, built around the Estonian capital on a winter morning: pale limestone walls, red tile roofs under snow and a low Baltic sun. The editor is a cool porcelain white instead of a plain white, the text is a midnight blue ink instead of black, and the code is painted in the colors of the Old Town: cobalt for keywords, amethyst for strings, harbor blue for members, spruce and courtyard greens for variables and static members, and the red of old brick for parameters and tags.

### Why are the Tallinn backgrounds blue instead of white?

Because the whole frame is built from one cold light. The editor #EDF2FA, the tool windows #D0DCEF and the outer frame #A9B9DA share a hue near 217 degrees and differ only in lightness, the color snow takes when the sun stays low and the sky does the lighting. The keywords, the interface text, the caret and the line numbers sit on the same blue, so the code looks like it belongs to the page, and the panels separate by a soft step in depth rather than by drawn lines.

### How are the syntax colors chosen in Tallinn?

They follow the Old Town from the sky down to the roofs. Keywords are a bold cobalt, the color of the spires against a winter sky, and strings and numbers are a muted amethyst. Methods and fields are a harbor blue, local variables a spruce green and static members a courtyard green. The warm notes are the brick: a red for parameters, a weathered brick for tags, a rust for global variables and an old brass for annotations. Class and function names stay a near black ink, and comments drop to an italic slate grey.

### Is a pale blue light theme comfortable for long coding sessions?

In a bright room, yes. Code is a midnight blue #0F244F at about 13.5:1 against the editor and names are a near black at about 15:1, so the page reads firmly without the hard edge of pure black on pure white. The blue cast takes the glare off the background, keywords are bold so the structure of a line shows at a glance, and the only strong warm color in the frame is the open tab, so nothing around the code pulls at the eye.
