Does `TryGetValue()` specifically assign `default(T)` if the key is not found? I guess it *might* at least. I'll change it to be immune to that.

Light backgrounds - it crossed my mind too but for now I just went with replicating the default behaviour of the NLog `ColoredConsoleTarget` with regard to the chosen foreground colors as well as not altering the background color. I guess something clever to detect the lightness of the background and switch to a dark foreground scheme could be added later.