This guide covers typography, layout, and color palettes to ensure consistency across all GEM charts, maps, and graphics — whether produced in Flourish, R, or other tools.
Below you can see an updated GEM-style chart, with annotations outlining the key characteristics of the main components that make up a plot. The specifications here are for the HTML styles developed for Flourish, where they stay consistent across different screen sizes.

Typography
Fonts
- Plus Jakarta Sans — used for chart header and footer text (titles, subtitles, source lines, notes).
- Barlow Semi Condensed — used for all chart body text (axis labels, axis titles, legend text, data labels, annotations, small multiples headers).
Text color
All text elements use a single color now: #3A4A50 (dark teal-grey). When using colored text in charts, ensure enough contrast — follow WCAG guidelines and use the Colour Contrast Checker.
Text sizes and hierarchy
We maintain consistent ratios between text elements regardless of platform. The table below shows each element's ratio (relative to axis text as the base) and an example at a 16px base size.
| Element | Ratio | Size with 16px base | Font weight | Line height |
|---|---|---|---|---|
| Title | 1.75 | 28px | Bold | 1.2 |
| Subtitle | 1.125 | 18px | Regular | 1.45 |
| Axis text | 1 | 16px | Regular | 1.125 |
| Axis title | 1 | 16px | Bold | - |
| Legend text | 1 | 16px | Regular | - |
| Annotations | 1 | 16px | Regular | - |
| Small multiples | 1 | 16px | Regular | 1.25 |
| Source / footer | 0.875 | 14px | Regular | - |
The line heights above apply to Flourish. R uses slightly different values because static images scale differently than dynamic HTML — see the appendix below for platform-specific details. The appendix also includes full Flourish and R specs.
Color
A complete color guide lives in the GEM Color Guide Observable notebook. Below is a summary of the key palettes for quick reference.
Brand colors
| Name | Hex |
|---|---|
| Midnight | #002430 |
| Navy | #004A63 |
| Teal | #016B83 |
| Orange | #FE4F2D |
| Mint (Data Viz) | #A5E9E4 |
| Warm White | #F2F2EB |
| White | #FFFFFF |
Core categorical palette
Five color-blind friendly colors for categorical visualizations:
| Name | Hex |
|---|---|
| Teal | #016B83 |
| Orange | #FE4F2D |
| Indigo | #4A57A8 |
| Deep Red | #7F142A |
| Green | #65BD8B |
An extended core is available if needed, which adds four more colors:
| Name | Hex |
|---|---|
| Blue | #099ED8 |
| Clay Red | #CA4A50 |
| Midnight Green | #004F61 |
| Midnight Purple | #061F5F |
Full Color Guide
The color guide covers many topics, including:
- Pop color guidance
- Positive / negative / neutral colors
- Sequential scales for various asset types
- Diverging scales
Map style
This section covers static maps produced for reports, briefings, social media, and other GEM content, as well as basic interactive maps built in tools like Flourish. The basemap colors below are aligned with the 2026 tracker basemap so static maps and the live tracker maps read as one family.
Maps should follow the template above for 'what makes a GEM plot' and use the same fonts, font sizes and text hierarchy, colors, and spacing as the chart style.
Basemap colors
| Element | Hex | Notes |
|---|---|---|
| Ocean / water | #C8D5D9 | - |
| Country in focus | #C2C2C2 | At 20-30% opacity |
| Land / other countries | #F2F2EB | Warm white (brand). |
| Borders | #555555 | At 40% opacity (rgba(85, 85, 85, 0.40)) for country borders; 18% for sub-national. |
| Border stroke | - | 1 pt (adjust per platform). |
Elements such as border thickness/stroke however will depend on the platform or tool you are using to draw your map, the above value is a general guide - always make sure it looks right to you and adjust accordingly if needed.
Appendix
Flourish theme settings
| Property | Value |
|---|---|
| Main font | Barlow Semi Condensed |
| Header/footer font | Plus Jakarta Sans |
| Background color | Transparent |
| Maximum width | 800px (includes header and footer) |
| Layout order | Header - controls - graphic |
| Margins | 0 (all sides) |
| Borders | None |
| Space between sections | 32px |
| Header alignment | Left |
Flourish element specs
| Element | Property | Value |
|---|---|---|
| Subtitle | Space from title | 8px |
| Axis title | Padding (top) | 12px |
| Gridlines | Color | #CBCBCB |
| Gridlines | Style | Solid |
| Gridlines | Width | 0.5px |
| Legend swatches | Size | 1.1 x 1.1 rem |
| Legend swatches | Roundness | 0 (square) |
| Legend swatches | Gap between items | 16px |
| Legend swatches | Gap swatch to label | 4px |
| Annotations | Text outline | #FFFFFF |
| Annotations | Stroke width | 2px |
| Annotations | Stroke color | #3A4A50 |
| Annotations | Line marker | Open arrow |
| Annotations | Max text width | 20px |
| Footer | Alignment | Left |
| GEM Logo | Position | Bottom right |
| GEM Logo | Height | 40px |
| GEM Logo | Margin | 28px |
R specs
R line heights
Where R line heights differ from Flourish:
| Element | Flourish | R |
|---|---|---|
| Axis text | 1.125 | 1 |
| Small multiples | 1.25 | 1.2 |
| Source / footer | - | 1.2 |
R layout details
| Property | Value |
|---|---|
| Header/footer font | Plus Jakarta Sans |
| Chart body font | Barlow Semi Condensed |
| Background color | #FFFFFF |
| Margins | 0 (all sides) |
| Space: title to subtitle | 8px |
| Space: subtitle to plot | 24px |
| Gridline color | #CBCBCB |
| Gridline width | 0.5px |