MSRVSStyle guide

MSRVS style guide: the full guide#

How the Model Steam Road Vehicle Society looks, on the website, in print and anywhere else. It is the authority on the Society's colours, type and artwork: where something else disagrees with this guide, this guide wins.

Making a poster or a post? The basics has all you need. This full guide is for designers, printers and whoever looks after the website.

Every file named here is in the file list. The values come from tokens.json, and the colour, type and contrast tables are generated from it, so they always match.

  1. The look
  2. Name and wording
  3. Logos
  4. Colour
  5. Type
  6. Ornament and layout
  7. Photography
  8. Using it: website, email, social media, print, merchandise

1. The look#

Heritage editorial. The colours come from the club emblem and from the engines themselves: steam blue and brass, on warm cream paper. Headings are set in a serif, and fine brass double rules echo the lining-out on an engine's panels. Photographs of members' engines carry the pages.

Keep it calm. Cream does most of the work, blue gives the structure, brass is the accent and crimson is rare. As a rough guide for a page or a sheet:

2. Name and wording#

3. Logos#

The emblem, the mark and the one-colour mark in steam blue and in white

The lockups: light lettering on deep steam blue, dark lettering on cream

Artwork What it is Use it for
Emblem The wheel on its blue panel, under the lettered ribbon Formal and full-size uses: programme covers, certificates, stand banners, share images
Mark The wheel on a blue disc with a brass ring Small or square spaces: the website footer, profile pictures, the favicon, app icons, beside a heading
Lockup The mark with MSRVS and the full name The website header, letterheads, email, anything that needs the name as well as the mark
Compact lockup The mark with MSRVS Where the full name would be too small to read: the forum header, narrow spaces
One-colour mark The wheel in a single ink Embroidery, engraving, rubber stamps, one-colour print

Each lockup comes in two versions. On dark has white and light-brass lettering, for deep steam blue, night blue or a darkened photo. On light has steam blue and dark-brass lettering, for cream or white. The emblem and the mark carry their own blue ground, so they work on either.

Files#

All lettering is converted to outlines, so no fonts are needed to open the artwork.

Clear space#

Clear space: a quarter of the mark's diameter on every side

Leave clear space of a quarter of the mark's diameter around the mark and the lockups (the small square above), and an eighth of its width around the emblem. Nothing else goes inside it: no text, no other logos, no edge of the page.

Minimum sizes#

Artwork On screen In print
Emblem 180 px wide 40 mm wide
Mark 24 px (16 px only as a favicon) 8 mm
Lockup with the full name 56 px tall 15 mm tall
Compact lockup 28 px tall 8 mm tall
One-colour mark 24 px 8 mm; 40 mm for embroidery

Below these sizes the spokes fill in or the full name can't be read. If the lockup has to be smaller, use the compact one.

Don't#

4. Colour#

Brand palette#

Colour Hex RGB Use LESS / CSS
Steam blue #0B3A66 11 58 102 Links on light surfaces, the facts strip, secondary buttons, the lockup lettering on light backgrounds @msrvs-steam-blue --msrvs-steam-blue
Brass #E3B23C 227 178 60 Primary buttons, lining-out, rules and accents. Never text on a light surface @msrvs-brass --msrvs-brass
Cream #F6F1E6 246 241 230 Light-scheme page background; paper colour for print @msrvs-cream --msrvs-cream
Deep steam blue #0A2A4A 10 42 74 Header (light scheme), plain heroes, the membership band @msrvs-deep-blue --msrvs-deep-blue
Night blue #071B30 7 27 48 Footer, behind hero photos, header (dark scheme), text on brass @msrvs-night-blue --msrvs-night-blue
Dark brass #7F5B14 127 91 20 Brass-coloured text on light surfaces: eyebrows, small labels @msrvs-brass-dark --msrvs-brass-dark
Light brass #F1D79A 241 215 154 Brass-coloured text on blue; links in the dark scheme @msrvs-brass-light --msrvs-brass-light
Crimson lake #A12A2B 161 42 43 Date tiles and the odd highlight. Sparingly, and never as text on a dark surface @msrvs-crimson --msrvs-crimson
White #FFFFFF 255 255 255 Text on blue @msrvs-white --msrvs-white

Light and dark schemes#

The website has a light and a dark scheme. These are the roles, with each scheme's colour. surface and sunk are derived from page in the same way Flarum derives them, so they match the forum exactly. In LESS each role is @msrvs-light-<role> and @msrvs-dark-<role>. In CSS it is --msrvs-<role>, which switches with the scheme.

Role Light Dark Use
page #F6F1E6 #0C1520 Page background
surface #FDFCF9 #132133 Cards, panels, dropdowns. Flarum derives this (--body-bg-light)
sunk #F2EBDB #080E15 Alternate sections. Flarum derives this (--body-bg-shaded)
control #ECE4D3 #172434 Control backgrounds, borders, dividers
control-text #5C5447 #B5AC9C Text on controls
text #1E1B16 #EDE6D8 Body text and headings
muted #6E6455 #A0978A Secondary text
subtle #766B59 #7F8996 Least important text (Flarum's muted-more): list metadata, placeholders
read-title #6E6455 #A0978A Titles of discussions already read (Flarum's --discussion-title-color)
link #0B3A66 #F1D79A Links
accent-text #7F5B14 #E3B23C Eyebrows and other brass-coloured text
code #EFE8D9 #101C2A Code and quote backgrounds
header #0A2A4A #071B30 Site header
header-text #FFFFFF #FFFFFF Header text

The header is blue in both schemes.

Livery colours#

Each primary forum tag has a livery colour, named after the paints and metals of the engines. Child tags have no colour of their own and read as part of their parent. Secondary tags (engine type, maker, scale) have no colour or icon.

Livery Hex Tag Icon As an icon or text: light / dark Label text
Brass #E3B23C Announcements fas fa-bullhorn #7E5E00 / #E3B23C dark
Crimson lake #A12A2B Rallies & Events fas fa-calendar-days #A12A2B / #EF736C cream
Brunswick green #1F5C3A Workshop fas fa-screwdriver-wrench #1F5C3A / #72AE88 cream
Chocolate #6B4226 Marketplace fas fa-shop #6B4226 / #C29375 cream
Verdigris #296E66 Chit Chat fas fa-mug-hot #296E66 / #6AADA4 cream
Steam blue #0B3A66 Blog fas fa-newspaper #0B3A66 / #74A2D6 cream
Slate #5B6875 Using This Site fas fa-life-ring #586572 / #92A0AE cream

Livery colours as icons or text. As a background, such as a tag label or a hero, a livery colour is used as it is. As a foreground, such as a tag's icon or an active link, it keeps its hue and chroma, but its OKLCH lightness is held at or below 0.5 on light surfaces and at or above 0.7 on dark ones. Colours already in range pass through unchanged. In CSS, with the colour in --color:

.tag-icon {
  color: var(--color);
}
/* A fallback line doesn't work here: a declaration with var() in it is only
   checked once computed, so an unsupported one leaves the colour unset. */
@supports (color: oklch(from red l c h)) {
  .tag-icon {
    color: oklch(from var(--color) min(l, 0.5) c h);
  }
  [data-theme^="dark"] .tag-icon {
    color: oklch(from var(--color) max(l, 0.7) c h);
  }
}

The "as an icon or text" column above gives the exact results. Label text is the colour Flarum puts on a label of that colour: cream on the darker liveries, dark on brass.

Group colours#

Group Hex Icon
Site Admin #4A148C fas fa-shield-halved
Committee #0D47A1 fas fa-users
Chairman #3E2723 fas fa-crown
Treasurer #1B5E20 fas fa-coins
Boiler Tester #BF360C fas fa-gauge-high
Rally Co-ordinator #00695C fas fa-calendar-days

These are the colours the forum's groups have today. Their badges carry their own icon colour, so they don't need the foreground rule.

Contrast#

Everything that can be read meets WCAG AA, 4.5:1, including small text such as the date and author under a discussion title. Decorative rules and borders are exempt. Before changing any colour, run uv run msrvs check; the build refuses to run if a pairing fails.

All 107 pairings pass. The closest is scheme.dark.subtle on scheme.dark.surface at 4.58:1 (needs 4.5:1). Every pairing is listed in guide/contrast.md.

Colour in print#

The hex values are the masters; no CMYK or Pantone values are set yet. Send the printer RGB artwork (SVG or PDF) and let them convert it with their own profile. UK printers usually use FOGRA39 or PSO Coated v3 for coated paper. Ask for a proof whenever the brass or steam blue matters, because brass prints flatter and browner, especially on uncoated paper. If a printer matches a spot colour, add the Pantone reference they proofed to this guide.

5. Type#

Typeface Role Weights Licence
Source Serif 4 Headings, the wordmark, display figures 600 and 700 SIL Open Font License
Inter Body text, interface, eyebrows, buttons 400 to 700 SIL Open Font License

Both are free for any use, including print, merchandise and embedding in PDFs.

Styles#

Style Font Weight Size Line height Tracking Case
display Source Serif 4 700 clamp(34px, 3.4vw + 14px, 62px) 1.15 -0.01em as written
h2 Source Serif 4 700 clamp(26px, 2.2vw + 14px, 36px) 1.15 -0.01em as written
h3 Source Serif 4 600 20px 1.25 -0.005em as written
body Inter 400 16px 1.6 0 as written
small Inter 400 14px 1.5 0 as written
button Inter 600 15px 1 0 as written
eyebrow Inter 600 12px 1 0.16em uppercase
wordmark Source Serif 4 700 to fit 0.08em uppercase
subline Inter 600 to fit 0.17em uppercase
Text Font In print On screen
Headings Source Serif 4 Bold 18–36 pt 26–62 px
Body text Inter Regular 9.5–11 pt 16 px
Captions and small print Inter Regular 8–9 pt 14 px

6. Ornament and layout#

Lining-out#

The signature detail: a fine brass double rule, like the lining on an engine's panels. It has three parts: a 1 px brass line at 75%, a 4 px gap in the surface colour, then a 1 px brass line at 40%. Use it on one feature per page, such as the membership card on the join page, a certificate's border or a programme cover. Lining-out on everything stops it being special.

Rules, cards and corners#

Icons#

Font Awesome 6 Free, solid style, which is what the forum uses. The tag icons are listed in Livery colours. An icon sits beside a label; it doesn't replace one.

Photo overlays#

Text never goes straight onto a photo. Lay night blue over it first:

Recipes#

For websites other than the forum, link dist/tokens/msrvs.css and dist/fonts/fonts.css, then:

body {
  background: var(--msrvs-page);
  color: var(--msrvs-text);
  font: 400 16px/1.6 var(--msrvs-font-sans);
}
h1, h2, h3 { font-family: var(--msrvs-font-serif); color: var(--msrvs-text); }
a { color: var(--msrvs-link); }

.eyebrow {
  display: inline-flex;
  align-items: center;
  gap: 10px;
  font: var(--msrvs-type-eyebrow-weight) var(--msrvs-type-eyebrow-size)/1 var(--msrvs-font-sans);
  letter-spacing: var(--msrvs-type-eyebrow-tracking);
  text-transform: uppercase;
  color: var(--msrvs-accent-text);
}
.eyebrow::before { content: ""; width: var(--msrvs-eyebrow-rule); height: 1px; background: currentColor; }

.card {
  background: var(--msrvs-surface);
  border: 1px solid var(--msrvs-control);
  border-radius: var(--msrvs-radius-card);
  box-shadow: var(--msrvs-card-shadow);
}

.lined {
  border: 1px solid var(--msrvs-lining-outer);
  box-shadow: inset 0 0 0 var(--msrvs-lining-gap) var(--msrvs-surface),
              inset 0 0 0 calc(var(--msrvs-lining-gap) + 1px) var(--msrvs-lining-inner);
}

.button-primary {
  min-height: 46px;
  padding: 0 22px;
  border: 0;
  border-radius: var(--msrvs-radius-pill);
  background: var(--msrvs-brass);
  color: var(--msrvs-night-blue);
  font: var(--msrvs-type-button-weight) var(--msrvs-type-button-size)/1 var(--msrvs-font-sans);
}

.photo-hero { position: relative; background: var(--msrvs-night-blue); color: var(--msrvs-white); }
.photo-hero::after { content: ""; position: absolute; inset: 0; background: var(--msrvs-photo-overlay); }
.photo-hero > * { position: relative; z-index: 1; }

The dark scheme follows the visitor's system setting. To force a scheme, set data-theme="light" or data-theme="dark" on <html>, as Flarum does.

7. Photography#

Photographs of members' engines are what make the Society look like itself. Real club photos always beat stock.

What to shoot#

How#

Permission and credit#

8. Using it#

The website (Flarum)#

The forum is themed by the ianm/msrvs extension, which takes its values from this guide's exports (see the file list). Anyone styling the forum works within these rules:

  1. Theme through Flarum's own variables. The extension imports msrvs-tokens.less and maps it onto Flarum's LESS variables (@body-bg-light, @control-bg-dark, @text-color-light, @header-bg-light and the rest), so core and other extensions pick the colours up in both schemes. Keep bespoke custom properties to a minimum. Never copy hex values into the extension by hand.
  2. Leave the brand slots to the admin panel. The logo, favicon and email logo are uploaded in Admin → Appearance and Admin → Email, and the share image in Admin → SEO (files in dist/flarum/admin/). They are never overridden with CSS or <head> tags. No dark-mode logo is needed, because the header is blue in both schemes. The extension adds only what has no slot: the home-screen icons and the web app manifest.
  3. Reuse core components (Hero, DiscussionListItem and so on) rather than hand-built look-alikes, and style them through the theme.
  4. Tag colours are entered in Admin → Tags using the livery hex values. Child and secondary tags are left without a colour. Tag icons follow the livery foreground rule.
  5. Every hero is core's Hero. Photo heroes use the admin-set hero photo with the night-blue overlay.

Email#

Flarum's emails are white, so they use the "on light" lockup (email-logo.png). In email templates, use web-safe fallbacks: Georgia for headings, Arial for body text, and steam blue for links.

Website icons#

dist/icons/ holds the full set for any website: the favicon (.ico, SVG and PNG), the Apple touch icon, the Android icons, a maskable icon and a web app manifest. Serve them together from the site root, and add:

<link rel="icon" href="/favicon.ico" sizes="32x32">
<link rel="icon" href="/favicon.svg" type="image/svg+xml">
<link rel="apple-touch-icon" href="/apple-touch-icon.png">
<link rel="manifest" href="/site.webmanifest">

All the icons use the mark. The Apple touch icon and the maskable icon sit it on deep steam blue, because iOS and Android fill any transparency themselves.

Social media#

Print#

Merchandise, signage and regalia#