Overview
Trainline sells train and coach tickets across the United Kingdom and Europe. Its site is drawn from a token set that ships with the live pages, named by role: actions, selection, text, backdrops, messages and fields. Mint marks the main action, an indigo scale marks choices, and headlines are set in Circular over the device's own system font for text. [Measured]
What defines the look:
- Mint action, indigo choice.
#00a88fis the primary action (hover#00705f, pressed#003e34).#2332c4is the secondary action and the selected state, deepening to#160078for the home headline. [Measured] - System text, Circular headlines. Body text, labels and fields use the system font stack. Headlines use Circular (and a Trainline cut, TLCircular) at 700 with slight negative tracking. [Measured]
- Gray filled fields. Search fields are
#f2f4f4blocks 56 high with a 4px corner and no visible border at rest. [Measured] - Midnight search panel. On route pages the search form sits on
#001848. [Measured] - Tinted messages. Messages pair a pale backdrop with a left edge and a dark text tone: warning
#fdf7c9with#502e00, info#ebf2ff, positive#e1fbd7. [Measured]
Source for this file: the home page with its search form, the London to Manchester route page and a not-found page, measured in a browser at 1440 and 390 wide on 2026-10-15, with a dark color scheme pass, plus the role-named tokens the live site declares on its root element. Trainline's design system documentation is not public. Results, seat choice and checkout were not measured. No app captures were used. See Known Gaps.
Core
Colors
| Role | Value | Token name in the shipped set |
|---|---|---|
| Primary action | #00a88f, hover #00705f, pressed #003e34 | action primary, button primary background [Measured] |
| Secondary action and selection | #2332c4, hover #2d00b1, pressed #160078 | action secondary, selected background dull [Measured] |
| Selection washes | #f3f1fd, #ece8fc, #d5cef7 | selection brightest, brighter, bright [Measured] |
| Text | #192325, #3f4b4e, #5b6466 | text base, subtle, subdued [Measured] |
| Link | #004ff9, hover #001848, visited #2d00b1 | link base, hover, visited [Measured] |
| Backdrops | #ffffff, #f2f4f4, #e7ebeb | backdrop base, dull, duller [Measured] |
| Borders | #d0d4d5, #8a9497 for fields | border base, text field border [Measured] |
| Search panel | #001848 | search form background [Measured] |
| Dark brand band | #002620 | backdrop primary dullest [Measured] |
| Negative | #c70d00, wash #ffeff0 | negative dull, message negative [Measured] |
| Warning | #ffc508, wash #fdf7c9, text #502e00 | warning mid, brightest, dullest [Measured] |
| Positive | #11ac23, wash #e1fbd7, text #0c732b | positive mid, brightest, text positive [Measured] |
| Focus ring | #2332c4 at 48 percent | focus ring [Measured] |
Overlays are the text color at 24, 48 and 80 percent, and tooltips and snackbars are #192325. [Measured]
Typography
| Role | Desktop | Mobile | Face and weight |
|---|---|---|---|
| Home headline | 48 on 56 | 24 on 28 | TLCircular 700, #160078 [Measured] |
| Route headline | 48 on 54, -0.72px | 24 on 32 | Circular 700 [Measured] |
| Section headline | 32 on 40, -0.48px | 24 on 30 | Circular 700 [Measured] |
| Title | 24 on 30 to 38, -0.36px | 24 on 30 | Circular 700 [Measured] |
| Subtitle | 20 on 30, -0.3px | 18 on 26 | Circular 700 [Measured] |
| Body | 16 on 24 | 15 to 16 | system font 400 [Measured] |
| Label and button | 14 on 20 | same | system font 600 [Measured] |
| Caption | 12 on 16 | same | system font 400 [Measured] |
Headline tracking is -1.5 percent of the size. The token set names weights 400, 500, 600 and 700. [Measured]
Shape and spacing
The shipped radius scale is 2, 4, 8, 12 and 16. Buttons and fields use 4, cards and message panels 8, and chips 999. The sign-in button is a 40 high pill. [Measured] Buttons carry 8 by 16 (header) or 14 by 20 (main) padding, and list rows 12 by 16. [Measured]
Iconography and motion
Icons fill with the text tones (#192325, #3f4b4e, #5b6466) per the token set. [Measured] Motion was not measured. [Inferred]
Themes
Light only on the web. The dark color scheme pass changed nothing, though the token set carries inverted text and focus values for dark panels. [Measured]
Platform: iOS
How the Trainline iOS app looks and behaves was not captured. The token set ships on the web, but its documentation is not public, so it cannot be shown that the apps use the same set. Every item below is inferred. No device capture was done.
Back and up navigation
Expected on iOS: Chevron plus previous title, swipe from the left edge.
Not measured. [Inferred]
Primary navigation
Expected on iOS: Bottom tab bar, about five items.
A bottom tab bar for search, tickets, live times and the account is expected. [Inferred]
Main action
Expected on iOS: Nav bar or bottom bar button.
A mint search or buy button. [Inferred]
Sheets, dialogs and messages
Expected on iOS: Action sheets, alerts, modals.
Not measured. [Inferred]
Controls
Expected on iOS: Cupertino switches, pickers, segmented controls.
Not measured. [Inferred]
Text sizing
Expected on iOS: Dynamic Type.
Not measured. [Inferred]
Touch and pointer targets
Expected on iOS: 44pt minimum.
Not measured. [Inferred]
Insets and system bars
Expected on iOS: Safe areas, status bar.
Not measured. [Inferred]
Icons
Expected on iOS: SF Symbols or custom.
Not measured. [Inferred]
Account and sign-in rules
Expected on iOS: Equivalent login option when third-party sign-in exists (Guideline 4.8) and in-app account deletion. Note the date checked.
Not verified. Sign-in rules and account deletion were not checked. [Inferred] Checked: 2026-10-15 against the public web only.
Platform conformance
Expected on iOS: For each important component: what iOS expects, what this app does, and why it deviates.
The app is expected to share the mint action, the indigo selection and the gray fields with the web. [Inferred]
Platform: Android
How the Trainline Android app looks and behaves was not captured. The token set ships on the web, but its documentation is not public, so it cannot be shown that the apps use the same set. Every item below is inferred. No device capture was done.
Back and up navigation
Expected on Android: System back and gesture, up arrow in the top bar.
Not measured. [Inferred]
Primary navigation
Expected on Android: Navigation bar, rail on tablets.
A bottom navigation bar for search, tickets, live times and the account is expected. [Inferred]
Main action
Expected on Android: Floating action button.
A mint search or buy button. [Inferred]
Sheets, dialogs and messages
Expected on Android: Bottom sheets, dialogs, snackbars.
Not measured. [Inferred]
Controls
Expected on Android: Material switches, pickers, chips.
Not measured. [Inferred]
Text sizing
Expected on Android: Font scale.
Not measured. [Inferred]
Touch and pointer targets
Expected on Android: 48dp minimum.
Not measured. [Inferred]
Insets and system bars
Expected on Android: Edge to edge, system bars.
Not measured. [Inferred]
Icons
Expected on Android: Material Symbols or custom.
Not measured. [Inferred]
Account and sign-in rules
Expected on Android: Account deletion and data safety requirements. Note the date checked.
Not verified. Sign-in rules and account deletion were not checked. [Inferred] Checked: 2026-10-15 against the public web only.
Platform conformance
Expected on Android: For each important component: what Android expects, what this app does, and why it deviates.
The app is expected to share the mint action, the indigo selection and the gray fields with the web. [Inferred]
Platform: Web
The home page with its search form, a route page and a not-found page, measured at 1440 and 390 wide.
Back and up navigation
Expected on Web: Browser back, breadcrumbs.
Browser back. [Observed]
Primary navigation
Expected on Web: Top nav or sidebar.
A white header with Railcards and other links as 36 high text buttons, Cart and Register, and a gray #e7ebeb Sign in pill. On mobile, a product switcher lists Tickets, Stays and Attractions as 64 high rows. [Measured]
Main action
Expected on Web: Page-level button.
A mint #00a88f button with white 18px semibold text, 52 high with a 4px corner ("Get times in app" on mobile). [Measured]
Sheets, dialogs and messages
Expected on Web: Modals, toasts.
The mobile menu opens over the text color at 24 percent. Promotion banners use the warning wash with dark brown text. [Measured]
Controls
Expected on Web: Native or custom.
Origin, destination and date fields are 56 high gray blocks with a 4px corner and a 2px border that only shows on focus; on mobile they are 56 to 64 high. "Via / Avoid" and "Add a voucher code" are indigo inline text buttons, 32 high. [Measured] Field borders turn #4c4fdf on hover and #2332c4 on focus, per the tokens. [Measured]
Text sizing
Expected on Web: Browser zoom.
Radius and space tokens are in rem, so they follow the browser root size. Type sizes step down at the mobile width. [Measured]
Touch and pointer targets
Expected on Web: Pointer and keyboard.
Fields are 56 to 64 high, main buttons 52, header buttons 36 to 40 and inline text buttons 32. [Measured]
Insets and system bars
Expected on Web: Viewport, scrollbars.
Not measured. [Inferred]
Icons
Expected on Web: Any.
Icon fills follow the text tones. [Measured]
Account and sign-in rules
Expected on Web: Not applicable unless the product has accounts.
Not checked on the pages measured. [Observed]
Platform conformance
Expected on Web: For each important component: what the web norm is, what this app does, and why it deviates.
Body text uses the visitor's system font, so the site reads like the device it is on, while headlines carry the brand face. [Measured]
Cross-platform consistency
Consistent across platforms: the mint action, the indigo selection, gray filled fields and Circular headlines. [Measured for web, Inferred for the apps]
Intentionally different: not measured. [Inferred]
Do's and Don'ts
Do
- Use mint for the one main action and indigo for every selected or secondary state.
- Set headlines in Circular 700 and everything else in the system font.
- Use gray filled fields without a resting border.
- Pair every message tint with its darker text tone and a left edge.
Don't
- Don't use mint for selection, or indigo for the main action.
- Don't add borders to fields at rest.
- Don't set long text in Circular.
Known Gaps
- Results, seat choice, checkout and the signed-in account were not measured, and the railcards address returned a not-found page.
- The iOS and Android apps were not captured. The token set ships on the web, but its documentation is not public, so every mobile topic is inferred.
- Motion was not measured. The secondary indigo button's size was not seen on the pages measured, only its token colors.
- White text on mint
#00a88fmeasures 3.0 to 1, below the 4.5 to 1 minimum. That is the shipped pairing and was kept. - Circular and TLCircular are private. Figtree was chosen by comparing the same 48px headline side by side: its round geometric shapes match and it runs about 1 percent narrower. Albert Sans matched width more exactly but its letters are less round.
- Account deletion and store policy rules were not verified.