oh-my-design-cli 1.8.1 → 1.8.6

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (93) hide show
  1. package/README.ja.md +5 -5
  2. package/README.ko.md +7 -7
  3. package/README.md +7 -7
  4. package/README.zh-TW.md +5 -5
  5. package/agents/omd-master.md +1 -1
  6. package/data/reference-fingerprints.json +1978 -58
  7. package/package.json +3 -1
  8. package/skills/omd-feel/SKILL.md +152 -0
  9. package/skills/omd-feel/provenance.md +233 -0
  10. package/skills/omd-feel/reference.md +254 -0
  11. package/skills/omd-harness/SKILL.md +1 -1
  12. package/skills/omd-init/SKILL.md +1 -1
  13. package/skills/omd-reference-capture/SKILL.md +1 -1
  14. package/web/references/591/DESIGN.md +460 -0
  15. package/web/references/asana/DESIGN.md +485 -0
  16. package/web/references/asos/DESIGN.md +475 -0
  17. package/web/references/bahamut/DESIGN.md +416 -0
  18. package/web/references/bbc/DESIGN.md +439 -0
  19. package/web/references/bito/DESIGN.md +394 -0
  20. package/web/references/cashapp/DESIGN.md +449 -0
  21. package/web/references/chunghwa/DESIGN.md +419 -0
  22. package/web/references/cuboai/DESIGN.md +435 -0
  23. package/web/references/cybozu/DESIGN.md +453 -0
  24. package/web/references/databricks/DESIGN.md +467 -0
  25. package/web/references/datadog/DESIGN.md +441 -0
  26. package/web/references/deliveroo/DESIGN.md +458 -0
  27. package/web/references/digital-agency-jp/DESIGN.md +439 -0
  28. package/web/references/dmm/DESIGN.md +455 -0
  29. package/web/references/doordash/DESIGN.md +429 -0
  30. package/web/references/easywallet/DESIGN.md +449 -0
  31. package/web/references/esunbank/DESIGN.md +445 -0
  32. package/web/references/farfetch/DESIGN.md +436 -0
  33. package/web/references/fubon/DESIGN.md +438 -0
  34. package/web/references/gaudiy/DESIGN.md +387 -0
  35. package/web/references/gitlab/DESIGN.md +546 -0
  36. package/web/references/goodpatch/DESIGN.md +429 -0
  37. package/web/references/govuk/DESIGN.md +450 -0
  38. package/web/references/hana/DESIGN.md +439 -0
  39. package/web/references/headspace/DESIGN.md +505 -0
  40. package/web/references/heptabase/DESIGN.md +448 -0
  41. package/web/references/hubspot/DESIGN.md +485 -0
  42. package/web/references/hyundai/DESIGN.md +468 -0
  43. package/web/references/icook/DESIGN.md +432 -0
  44. package/web/references/iicombined/DESIGN.md +421 -0
  45. package/web/references/instacart/DESIGN.md +439 -0
  46. package/web/references/ipassmoney/DESIGN.md +407 -0
  47. package/web/references/kakaopage/DESIGN.md +439 -0
  48. package/web/references/kbpay/DESIGN.md +442 -0
  49. package/web/references/kia/DESIGN.md +411 -0
  50. package/web/references/liner/DESIGN.md +465 -0
  51. package/web/references/maicoin/DESIGN.md +484 -0
  52. package/web/references/mailchimp/DESIGN.md +450 -0
  53. package/web/references/mikan/DESIGN.md +450 -0
  54. package/web/references/monzo/DESIGN.md +461 -0
  55. package/web/references/moze/DESIGN.md +423 -0
  56. package/web/references/naverpay/DESIGN.md +478 -0
  57. package/web/references/ncsoft/DESIGN.md +488 -0
  58. package/web/references/nhn/DESIGN.md +441 -0
  59. package/web/references/nintendo/DESIGN.md +445 -0
  60. package/web/references/octopusenergy/DESIGN.md +436 -0
  61. package/web/references/openpoint/DESIGN.md +431 -0
  62. package/web/references/patreon/DESIGN.md +439 -0
  63. package/web/references/paypal/DESIGN.md +459 -0
  64. package/web/references/pepabo/DESIGN.md +486 -0
  65. package/web/references/pinkfong/DESIGN.md +450 -0
  66. package/web/references/plaid/DESIGN.md +472 -0
  67. package/web/references/portaly/DESIGN.md +441 -0
  68. package/web/references/readmoo/DESIGN.md +492 -0
  69. package/web/references/reddit/DESIGN.md +537 -0
  70. package/web/references/samsung/DESIGN.md +465 -0
  71. package/web/references/shiftup/DESIGN.md +433 -0
  72. package/web/references/shinhanbank/DESIGN.md +429 -0
  73. package/web/references/skyscanner/DESIGN.md +563 -0
  74. package/web/references/snapchat/DESIGN.md +460 -0
  75. package/web/references/sparkful/DESIGN.md +434 -0
  76. package/web/references/speeda/DESIGN.md +422 -0
  77. package/web/references/spindle/DESIGN.md +470 -0
  78. package/web/references/spoqa/DESIGN.md +422 -0
  79. package/web/references/squarespace/DESIGN.md +454 -0
  80. package/web/references/ssg/DESIGN.md +439 -0
  81. package/web/references/starling/DESIGN.md +404 -0
  82. package/web/references/stibee/DESIGN.md +424 -0
  83. package/web/references/taiwanmobile/DESIGN.md +445 -0
  84. package/web/references/tmap/DESIGN.md +423 -0
  85. package/web/references/trainline/DESIGN.md +454 -0
  86. package/web/references/twilio/DESIGN.md +515 -0
  87. package/web/references/twitch/DESIGN.md +431 -0
  88. package/web/references/vocus/DESIGN.md +450 -0
  89. package/web/references/workday/DESIGN.md +452 -0
  90. package/web/references/wrtn/DESIGN.md +454 -0
  91. package/web/references/xrex/DESIGN.md +475 -0
  92. package/web/references/zepeto/DESIGN.md +463 -0
  93. package/web/references/zoom/DESIGN.md +457 -0
@@ -0,0 +1,454 @@
1
+ ---
2
+ id: trainline
3
+ name: Trainline
4
+ country: UK
5
+ category: consumer-tech
6
+ homepage: "https://www.thetrainline.com"
7
+ primary_color: "#00a88f"
8
+ logo:
9
+ type: favicon
10
+ slug: "https://www.google.com/s2/favicons?domain=thetrainline.com&sz=128"
11
+ verified: "2026-06-22"
12
+ omd: "0.1"
13
+ tokens:
14
+ source: live-extract
15
+ extracted: "2026-06-22"
16
+ note: "primary = live homepage CTA teal (#00a88f 'Find cheap tickets'); navy (#2332c4) dominates results/action surfaces. TLCircular is the custom brand font on headings."
17
+ colors:
18
+ primary: "#00a88f"
19
+ primary-dark: "#007f6c"
20
+ action: "#2332c4"
21
+ action-dark: "#0035a9"
22
+ ink: "#192325"
23
+ body: "#3f4b4e"
24
+ muted: "#5b6466"
25
+ canvas: "#ffffff"
26
+ surface: "#f2f4f4"
27
+ surface-alt: "#ebf2ff"
28
+ sign-in-bg: "#e7ebeb"
29
+ hairline: "#d0d4d5"
30
+ warning-bg: "#fdf7c9"
31
+ warning-text: "#502e00"
32
+ on-primary: "#ffffff"
33
+ typography:
34
+ family: { display: "TLCircular", body: "-apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif" }
35
+ display-hero: { size: 28, weight: 700, lineHeight: 1.71, use: "Hero headline — 'Buy train tickets for travel in the UK and Europe'" }
36
+ section: { size: 32, weight: 700, lineHeight: 1.25, use: "Section heads, TLCircular — 'Save 1/3 with a Season Ticket'" }
37
+ subsection: { size: 20, weight: 700, lineHeight: 1.40, use: "Feature card heads, TLCircular — 'Spend less, travel more'" }
38
+ nav: { size: 14, weight: 600, lineHeight: 1.71, use: "Nav links — 'Railcards', 'Business'" }
39
+ body: { size: 14, weight: 400, lineHeight: 1.71, use: "Standard reading text, system font stack" }
40
+ button: { size: 16, weight: 600, lineHeight: 1.00, use: "CTA labels" }
41
+ spacing: { xs: 4, sm: 8, md: 12, base: 16, lg: 24, xl: 32, xxl: 48, section: 64 }
42
+ rounded: { sm: 2, md: 4, lg: 8, pill: 26, full: 9999 }
43
+ shadow:
44
+ card: "0px 2px 8px rgba(0,0,0,0.08)"
45
+ elevated: "0px 4px 16px rgba(0,0,0,0.12)"
46
+ components:
47
+ button-primary: { type: button, bg: "#00a88f", fg: "#ffffff", radius: "4px", padding: "10px 12px", height: "48px", font: "16px / 600 TLCircular", use: "Primary booking CTA — 'Find cheap tickets'" }
48
+ button-action: { type: button, bg: "#2332c4", fg: "#ffffff", radius: "4px", padding: "8px 16px", height: "40px", font: "14px / 400 system-ui", use: "Search/change action button on results surface" }
49
+ button-secondary: { type: button, bg: "#ffffff", fg: "#192325", border: "1px solid #d0d4d5", radius: "4px", padding: "8px 16px", height: "40px", font: "16px / 700 system-ui", use: "Secondary white outlined CTAs — 'Buy now', 'Buy your Railcard'" }
50
+ button-sign-in: { type: button, bg: "#e7ebeb", fg: "#192325", radius: "26px", padding: "2px 8px 2px 16px", height: "40px", font: "16px / 600 system-ui", use: "Sign-in pill button in nav" }
51
+ input-station: { type: input, bg: "#f2f4f4", fg: "#000000", border: "2px solid transparent", radius: "4px", padding: "16px 16px 16px 96px", height: "56px", font: "16px / 400 system-ui", use: "Station autocomplete inputs — departure and arrival" }
52
+ input-date: { type: input, bg: "#f2f4f4", fg: "#000000", radius: "4px", padding: "16px", height: "56px", font: "16px / 600 system-ui", use: "Date/time selector field" }
53
+ card-feature: { type: card, bg: "#ffffff", radius: "4px", use: "Feature promotional cards — Season Ticket, Railcard promotions" }
54
+ badge-warning: { type: badge, bg: "#fdf7c9", fg: "#502e00", radius: "0px", use: "Service disruption banner at top of page" }
55
+ tab-nav: { type: tab, fg: "#192325", font: "14px / 600 system-ui", use: "Top nav items", active: "text #192325 highlighted" }
56
+ components_harvested: true
57
+ ---
58
+
59
+ # Design System Inspiration of Trainline
60
+
61
+ ## 1. Visual Theme & Atmosphere
62
+
63
+ Trainline is Europe's leading independent rail and coach booking platform, and its interface reflects a practical, optimistic approach to travel — clean, confident, and task-focused. The homepage opens on a white canvas (`#ffffff`) with a prominent booking form using soft grey input fields (`#f2f4f4`) and an eye-catching teal primary CTA (`#00a88f` — "Find cheap tickets") that immediately signals the main action. The overall atmosphere is functional yet bright: a booking utility that doesn't feel utilitarian.
64
+
65
+ The signature Trainline mint-teal (`#00a88f`) is one of the UK consumer-tech world's most recognisable transport-brand colours — energetic and optimistic without the red urgency of transport alerts or the cold neutrality of enterprise SaaS. On the results and action surfaces, a deep navy-blue (`#2332c4`) takes over as the primary interactive color for key actions like "Change" search parameters. This two-color interactive system — teal for booking initiation, navy for action within flow — creates a clear visual hierarchy across the funnel.
66
+
67
+ Typography is anchored by `TLCircular`, a custom rounded geometric typeface that appears on all marketing headings and feature cards, giving promotional content a friendly, approachable character. The body and UI layer falls back to the system font stack (`-apple-system`, `Segoe UI`, Roboto), keeping the transactional interface fast-loading and native-feeling. Headings are uniformly bold (weight 700), creating strong visual anchors across all screen sizes.
68
+
69
+ **Key Characteristics:**
70
+ - Teal primary CTA (`#00a88f`) — Trainline's most distinctive brand colour, reserved for the main booking action
71
+ - Navy action color (`#2332c4`) for interactive elements within the search flow
72
+ - `TLCircular` custom geometric rounded font for all marketing and feature headings
73
+ - System font stack for all transactional / body UI — fast, native, legible
74
+ - Soft grey input fields (`#f2f4f4`) on the booking form — calm, non-distracting
75
+ - Conservative 4px radius across buttons and inputs — professional, not playful
76
+ - Deep ink (`#192325`) for primary text — almost-black with a warm dark-teal undertone
77
+ - Minimal shadow usage — flat depth with surface color differentiation
78
+
79
+ ## 2. Color Palette & Roles
80
+
81
+ ### Primary Brand
82
+ - **Trainline Teal** (`#00a88f`): The primary brand color. Used for the main booking CTA "Find cheap tickets" — the single highest-priority action on the homepage.
83
+ - **Teal Dark** (`#007f6c`): Darker shade for hover states on the primary teal button.
84
+
85
+ ### Interactive / Action
86
+ - **Action Blue** (`#2332c4`): Deep navy-blue that functions as the primary interactive color on booking-flow surfaces — the "Change" search button, cookie accept CTA, key actions within results.
87
+ - **Action Dark** (`#0035a9`): Deeper navy for hover/pressed states on action buttons.
88
+
89
+ ### Text & Ink
90
+ - **Ink** (`#192325`): Primary heading and nav text — a very dark warm-teal near-black, warmer than pure `#000000`.
91
+ - **Body** (`#3f4b4e`): Secondary body copy, descriptions.
92
+ - **Muted** (`#5b6466`): Tertiary text, metadata, captions.
93
+ - **On Primary** (`#ffffff`): Text on teal or navy backgrounds.
94
+
95
+ ### Surface & Structure
96
+ - **Canvas** (`#ffffff`): Page background, card surfaces.
97
+ - **Surface** (`#f2f4f4`): Input field backgrounds — the main form backdrop.
98
+ - **Surface Alt** (`#ebf2ff`): Light blue tint for selected states and highlights.
99
+ - **Sign-in Bg** (`#e7ebeb`): The muted pill background for the "Sign in" nav button.
100
+ - **Hairline** (`#d0d4d5`): Borders, dividers, outlines on secondary buttons.
101
+
102
+ ### Semantic
103
+ - **Warning Bg** (`#fdf7c9`): Service disruption banner background.
104
+ - **Warning Text** (`#502e00`): Text on warning banners.
105
+
106
+ ## 3. Typography Rules
107
+
108
+ ### Font Family
109
+ - **Display / Brand**: `TLCircular` — Trainline's custom rounded geometric typeface, used for all marketing and feature headings. Falls back to system-ui.
110
+ - **Body / UI**: System font stack: `-apple-system, system-ui, Segoe UI, Roboto, Helvetica, Arial, sans-serif` — native feel across platforms.
111
+
112
+ ### Hierarchy
113
+
114
+ | Role | Font | Size | Weight | Line Height | Notes |
115
+ |------|------|------|--------|-------------|-------|
116
+ | Hero Headline | System stack | 28px | 700 | 1.71 | Homepage main H1 |
117
+ | Section Head | TLCircular | 32px | 700 | 1.25 | Feature section headings |
118
+ | Sub-section | TLCircular | 20px | 700 | 1.40 | Feature card headings |
119
+ | Section (cookie/info) | TLCircular | 32px | 700 | 1.25 | Overlay headers |
120
+ | Nav Link | System stack | 14px | 600 | 1.71 | Horizontal nav items |
121
+ | Button | System stack | 16px | 600 | 1.00 | Primary CTAs |
122
+ | Button Secondary | System stack | 16px | 700 | 1.00 | Outlined buttons |
123
+ | Body | System stack | 14px | 400 | 1.71 | Standard reading text |
124
+ | Input Label | System stack | 16px | 400 | 1.00 | Form field text |
125
+
126
+ ### Principles
127
+ - **Custom font for brand moments, system for function**: TLCircular only appears in marketing / promotional sections — the booking form and results use the system stack for speed and native legibility.
128
+ - **Bold only**: weight 700 for headings consistently across both typefaces. UI labels use weight 600. Body is 400. No medium (500) weight observed.
129
+ - **Flat line-heights**: Heading line-heights are tight (1.25–1.40); body is more generous (1.71) for legibility.
130
+
131
+ ## 4. Component Stylings
132
+
133
+ ### Buttons
134
+
135
+ **Primary Booking CTA**
136
+ - Background: `#00a88f`
137
+ - Text: `#ffffff`
138
+ - Radius: 4px
139
+ - Padding: 10px 12px
140
+ - Height: 48px
141
+ - Font: 16px weight 600
142
+ - Use: Main "Find cheap tickets" booking action on the homepage form
143
+
144
+ **Action Blue Button**
145
+ - Background: `#2332c4`
146
+ - Text: `#ffffff`
147
+ - Radius: 4px
148
+ - Padding: 8px 16px
149
+ - Height: 40px
150
+ - Font: 14px weight 400
151
+ - Use: "Change" search parameters on results; "Accept Cookies"
152
+
153
+ **Secondary Outlined**
154
+ - Background: `#ffffff`
155
+ - Text: `#192325`
156
+ - Border: 1px solid `#d0d4d5`
157
+ - Radius: 4px
158
+ - Padding: 8px 16px
159
+ - Height: 40px
160
+ - Font: 16px weight 700
161
+ - Use: Secondary CTAs — "Buy now", "Buy your Railcard", "Take a look"
162
+
163
+ **Sign In Pill**
164
+ - Background: `#e7ebeb`
165
+ - Text: `#192325`
166
+ - Radius: 26px
167
+ - Padding: 2px 8px 2px 16px
168
+ - Height: 40px
169
+ - Font: 16px weight 600
170
+ - Use: "Sign in" button in the top navigation
171
+
172
+ ### Inputs & Forms
173
+
174
+ **Station Autocomplete**
175
+ - Background: `#f2f4f4`
176
+ - Text: `#000000`
177
+ - Border: 2px solid transparent (no visible border at rest)
178
+ - Radius: 4px (top-only for departure, bottom-only for arrival — paired field)
179
+ - Padding: 16px 16px 16px 96px
180
+ - Height: 56px
181
+ - Font: 16px weight 400
182
+ - Use: Departure and arrival station fields with icon prefix area
183
+
184
+ **Date / Passenger Selector**
185
+ - Background: `#f2f4f4`
186
+ - Text: `#000000`
187
+ - Radius: 4px
188
+ - Padding: 16px
189
+ - Height: 56px–64px
190
+ - Font: 16px weight 600
191
+ - Use: Date/time and passenger-count selector buttons within the booking form
192
+
193
+ ### Cards & Containers
194
+
195
+ **Feature Promotional Card**
196
+ - Background: `#ffffff`
197
+ - Radius: 4px
198
+ - Use: Marketing feature cards — Season Ticket promotions, Railcard banners, journey highlights
199
+
200
+ ### Badges
201
+
202
+ **Service Disruption Banner**
203
+ - Background: `#fdf7c9`
204
+ - Text: `#502e00`
205
+ - Radius: 0px
206
+ - Padding: 16px
207
+ - Use: Full-width service alert banner at the top of the page
208
+
209
+ ### Navigation
210
+
211
+ **Top Navigation**
212
+ - Background: `#ffffff`
213
+ - Text: `#192325`
214
+ - Font: 14px weight 600
215
+ - Height: 56px (approx)
216
+ - Active: `#192325` text maintained; no underline or color change observed
217
+ - Use: "Railcards", "Business", "My Bookings", "Register" links
218
+
219
+ ---
220
+
221
+ **Verified:** 2026-06-22 (omd:add-reference CREATE — Tier 1 live inspect)
222
+ **Tier 1 sources:** https://www.thetrainline.com/ (homepage — booking form, nav, feature cards), https://www.thetrainline.com/book/results (search results surface)
223
+ **Tier 2 sources:** getdesign.md/trainline — not found (404); styles.refero.design/?q=trainline — no Trainline entry found after search
224
+ **Conflicts unresolved:** none
225
+
226
+ ## 5. Layout Principles
227
+
228
+ ### Spacing System
229
+ - Base unit: 8px
230
+ - Scale: 4px, 8px, 12px, 16px, 24px, 32px, 48px, 64px
231
+ - Notable: Station inputs use 96px left padding to accommodate the large station-icon prefix area
232
+
233
+ ### Grid & Container
234
+ - Centered content max-width ~1200px
235
+ - Hero: booking form centered on a clean white background, two stacked station inputs above a single row of date/passenger pickers
236
+ - Marketing sections: 2–3 column card grids for feature promotions (Season Ticket, Railcard, Holiday Pass)
237
+ - Full-width warning banner at the top for service disruptions
238
+
239
+ ### Whitespace Philosophy
240
+ - **Task-first**: the booking form is the page — generous padding, minimal decoration
241
+ - **Clean separation**: sections divide by white space and subtle card boundaries, not heavy dividers
242
+ - **Card rhythm**: feature cards use consistent 4px radius and white background with hairline borders
243
+
244
+ ### Border Radius Scale
245
+ - Sharp (2px): Cookie choice button outline
246
+ - Standard (4px): All buttons, inputs, cards — the universal default
247
+ - Pill (26px): Sign-in nav button
248
+ - Full (9999px): Not observed on primary UI; reserved for potential badge/tag use
249
+
250
+ ## 6. Depth & Elevation
251
+
252
+ | Level | Treatment | Use |
253
+ |-------|-----------|-----|
254
+ | Flat (Level 0) | No shadow | Page background, inline text, form fields |
255
+ | Card (Level 1) | Subtle shadow `rgba(0,0,0,0.08)` | Feature promotional cards |
256
+ | Elevated (Level 2) | `rgba(0,0,0,0.12)` deeper shadow | Dropdowns, autocomplete panels |
257
+
258
+ **Shadow Philosophy**: Trainline uses minimal elevation. The booking form itself is essentially flat — inputs use background-color (`#f2f4f4`) rather than elevation to differentiate from the page. Feature cards use light shadows for gentle lift. Depth is communicated primarily through surface color (white vs grey vs tinted blue).
259
+
260
+ ## 7. Do's and Don'ts
261
+
262
+ ### Do
263
+ - Use teal (`#00a88f`) exclusively for the primary booking CTA — it is the highest-priority action signal
264
+ - Use navy (`#2332c4`) for in-flow interactive actions within the search and booking journey
265
+ - Use `TLCircular` for all marketing and feature headings — it defines the brand personality
266
+ - Use system fonts for all transactional UI, form fields, and body text — speed and native legibility matter
267
+ - Keep border-radius at 4px for buttons and inputs — professional, not playful
268
+ - Use `#f2f4f4` for input field backgrounds — the soft grey creates calm focus without distraction
269
+ - Use `#192325` (deep ink) for primary text — warmer and more distinctive than pure black
270
+ - Use full-width warning banners (`#fdf7c9`) for service disruption — highly visible but low-alarm
271
+
272
+ ### Don't
273
+ - Don't use teal for secondary or tertiary actions — dilutes the single booking CTA signal
274
+ - Don't use rounded/pill borders on booking inputs or main content cards — 4px is the standard
275
+ - Don't substitute the system font for body text with TLCircular — TLCircular is for brand/marketing moments only
276
+ - Don't add decorative gradients or heavy shadows — Trainline is clean and functional
277
+ - Don't use pure black (`#000000`) for headings — use ink (`#192325`) for the brand-warm tone
278
+ - Don't use the warning yellow (`#fdf7c9`) outside of genuine service disruption alerts
279
+ - Don't hide the primary teal CTA in complex layouts — it should be the visual focal point
280
+
281
+ ## 8. Responsive Behavior
282
+
283
+ ### Breakpoints
284
+ | Name | Width | Key Changes |
285
+ |------|-------|-------------|
286
+ | Mobile | <640px | Stacked single-column form, compressed headings |
287
+ | Tablet | 640–1024px | 2-column feature card grid, moderate form padding |
288
+ | Desktop | 1024–1280px | Full booking form centered, 3-column marketing sections |
289
+ | Large Desktop | >1280px | Centered content with generous margins |
290
+
291
+ ### Touch Targets
292
+ - Station inputs at 56px height — comfortable for tap on mobile
293
+ - Buttons at 40–48px height — all meet touch accessibility minimums
294
+ - Nav links with 8px–16px padding — adequate spacing for thumbs
295
+
296
+ ### Collapsing Strategy
297
+ - Booking form: single-column stacked on mobile, 2-column date/passenger row collapses to stacked
298
+ - Feature cards: 3-column → 2-column → single column
299
+ - Navigation: horizontal nav → hamburger menu on mobile
300
+ - Hero headline: 28px maintained on mobile (already body-friendly scale)
301
+
302
+ ### Image Behavior
303
+ - Promotional hero images maintain aspect ratio at all breakpoints
304
+ - Feature card images use 4px radius consistently
305
+ - No heavy background imagery on the booking form surface — stays clean white
306
+
307
+ ## 9. Agent Prompt Guide
308
+
309
+ ### Quick Color Reference
310
+ - Primary booking CTA: Trainline Teal (`#00a88f`)
311
+ - In-flow action buttons: Action Navy (`#2332c4`)
312
+ - Page background: Pure White (`#ffffff`)
313
+ - Form inputs: Soft Grey (`#f2f4f4`)
314
+ - Primary text: Deep Ink (`#192325`)
315
+ - Secondary text: Dark Slate (`#3f4b4e`)
316
+ - Muted text: Medium Slate (`#5b6466`)
317
+ - Borders: Light Grey (`#d0d4d5`)
318
+ - Sign-in pill bg: Muted Grey (`#e7ebeb`)
319
+ - Warning surface: Warm Yellow (`#fdf7c9`)
320
+
321
+ ### Example Component Prompts
322
+ - "Create a train booking form on white background. Two station inputs stacked: `#f2f4f4` bg, 4px radius (top corners on first, bottom on second), 56px height, 16px padding with 96px left offset for icon. Date button same style. Teal CTA: `#00a88f` bg, white text, 4px radius, 48px height, 16px font weight 600."
323
+ - "Design a top nav: white `#ffffff`, 56px height. TLCircular links in `#192325`, 14px weight 600. Right-aligned: sign-in pill with `#e7ebeb` bg, `#192325` text, 26px radius."
324
+ - "Build a feature marketing card: white `#ffffff` bg, 4px radius, light shadow. TLCircular heading 32px weight 700 `#192325`. Body 14px system-ui weight 400 `#3f4b4e`. White outlined CTA: `#ffffff` bg, `#d0d4d5` border, 4px radius, 16px 700."
325
+ - "Create a service disruption banner: full-width, `#fdf7c9` bg, `#502e00` text, 14px system-ui weight 400. No radius — full bleed."
326
+
327
+ ### Iteration Guide
328
+ 1. Teal (`#00a88f`) is the single booking CTA — protect it; don't use elsewhere
329
+ 2. Navy (`#2332c4`) for all in-flow actions (search, change, confirm)
330
+ 3. TLCircular for headings; system-ui for everything else
331
+ 4. 4px radius everywhere (26px pill only for sign-in nav)
332
+ 5. Input backgrounds are `#f2f4f4` — never pure white on white canvas
333
+ 6. Text color `#192325` (not `#000000`) for all primary headings
334
+ 7. White cards with `#d0d4d5` border for secondary CTAs
335
+
336
+ ---
337
+
338
+ ## 10. Voice & Tone
339
+
340
+ Trainline's voice is practical, encouraging, and price-conscious — the smart friend who knows how to find the best deal on rail travel. The tagline approach ("Search, Compare & Buy Cheap Train Tickets") is purely functional: Trainline names the actions and delivers. Copy is direct, benefit-led, and avoids hype. Percentage savings are stated plainly ("save 61%*", "save 1/3*") — let the numbers speak. Navigation labels are terse single-words ("Railcards", "Business", "Basket").
341
+
342
+ | Context | Tone |
343
+ |---|---|
344
+ | Hero headline | Declarative utility. "Buy train tickets for travel in the UK and Europe." No exclamation. |
345
+ | Promotional cards | Benefit-first, punchy. "Save 1/3 with a Season Ticket." "Spend less, travel more." |
346
+ | CTAs | Action verbs, plain. "Find cheap tickets", "Buy now", "Buy your Railcard". |
347
+ | Service disruptions | Calm, factual, proactive. States the disruption and links to more information. |
348
+ | Railcard promotions | Opportunity-framing. "Your pass to Japan!" — slightly more expressive on emotive travel moments. |
349
+ | Footer / legal | Minimal legalese; links named plainly. |
350
+
351
+ **Voice samples (verbatim from live site):**
352
+ - "Buy train tickets for travel in the UK and Europe" — hero H1. *(verified live 2026-06-22)*
353
+ - "Cheap train tickets – buy in advance and save 61%*" — section heading. *(verified live 2026-06-22)*
354
+ - "Other ways to save on train travel" — section heading. *(verified live 2026-06-22)*
355
+
356
+ **Forbidden register**: Travel hype ("amazing deals", "incredible savings"), urgency dark patterns ("only 2 seats left!" as a persistent scare), jargon ("yield-managed pricing"), corporate speak.
357
+
358
+ ## 11. Brand Narrative
359
+
360
+ Trainline was founded in **1999** as a joint venture between Virgin and National Express, originally operating as thetrainline.com — one of the UK's first e-commerce platforms, born at the peak of the dot-com era but built around a genuinely useful problem: you shouldn't have to go to a station to book a train. The platform went independent and pivoted from rail-only to a multi-operator aggregator, eventually expanding to cover **coach travel** and **pan-European rail**.
361
+
362
+ The company's founding premise — that buying a train ticket should be as easy as buying anything online — has held consistent for over two decades. Trainline positions itself as the independent alternative to individual train company booking sites: it shows all operators and all fares in one place, so travellers can compare and find the cheapest option. The "1/3 off with Railcard" framing and the prominent "save 61%*" messaging on the homepage make savings the core brand promise, not just a feature.
363
+
364
+ In 2019 Trainline listed on the London Stock Exchange, becoming one of the UK's most prominent consumer-tech IPOs of that year. The brand refactored its visual identity around that period: TLCircular replaced older type choices, and the teal-navy dual-color system became the standardised interactive palette. The product now serves millions of journeys across the UK and continental Europe, with the Interrail/Eurail pass business and Japan Rail Pass as notable international expansions.
365
+
366
+ What Trainline refuses: the fragmented UX of individual train company booking sites. What it embraces: aggregation, transparency on prices across operators, and a booking experience that feels like a consumer app rather than a government portal.
367
+
368
+ ## 12. Principles
369
+
370
+ 1. **Every fare, every operator.** Trainline's value is comparison — the full picture in one place. *UI implication:* results show all operators and fare types without hiding cheaper alternatives behind additional clicks.
371
+ 2. **The saving is the message.** Percentage savings ("save 61%") and Railcard discounts ("save 1/3") are the primary marketing hooks. *UI implication:* price and saving information is the most prominent data point in search results and promotional cards.
372
+ 3. **Booking in seconds, not minutes.** The homepage booking form is a single-screen, five-field interaction. *UI implication:* minimal form steps; no account required to search; progressive disclosure for passenger details.
373
+ 4. **Calm on disruption.** Rail disruptions are common; Trainline addresses them with a top-of-page warning banner in measured, calm amber — not alarming red, not hidden. *UI implication:* service state is always surfaced, never minimised.
374
+ 5. **System fonts for speed.** The transactional surface uses the device's native font — TLCircular is for brand moments. *UI implication:* booking flow pages load and feel native; brand personality lives in marketing content, not the checkout funnel.
375
+
376
+ ## 13. Personas
377
+
378
+ *Personas below are fictional archetypes informed by publicly observable Trainline user segments (UK commuters, leisure travellers, European rail tourists), not individual people.*
379
+
380
+ **Sarah Chen, 34, London.** A commuter who books weekly between Manchester and London for client work. Uses Trainline because she can see off-peak vs peak prices side by side. Has a 16-25 Railcard (now 26-30) and the Trainline app manages her etickets automatically. The "save 1/3" framing on the app homepage validates her railcard purchase every time she opens it.
381
+
382
+ **Tom Williams, 28, Bristol.** A leisure traveller booking weekend trips to the Lake District or Edinburgh. Doesn't care about operators — books whichever service is cheapest for his travel window. Uses the "buy in advance and save" messaging as a mental cue to book early. Finds price calendars the most useful feature.
383
+
384
+ **Ingrid Andersen, 52, Copenhagen.** A European tourist planning a UK rail holiday — the Cotswolds, Bath, Cornwall. Trainline was recommended as the best way to book multi-leg UK journeys. Compares Trainline with the national rail site and chooses Trainline for its simpler multi-leg booking UX. Also looked at Interrail through Trainline for a separate European trip.
385
+
386
+ **Marcus Obi, 41, Birmingham.** Head of travel at a mid-size consultancy, uses Trainline for Business. Values the consolidated invoicing and the ability to book for team members without needing individual accounts. The clean, functional interface reduces friction for non-frequent rail users in his team.
387
+
388
+ ## 14. States
389
+
390
+ | State | Treatment |
391
+ |---|---|
392
+ | **Empty (no search entered)** | Booking form shows placeholder text in station inputs ("Departure station", "Arrival station"). CTA button `#00a88f` is present but search is blocked until both stations are filled. |
393
+ | **Empty (no results for route)** | Informational message with alternative route suggestions. System-font body text in `#3f4b4e`. |
394
+ | **Loading (search results)** | Skeleton result rows on white background while fares are fetched from operator APIs. |
395
+ | **Loading (page)** | Standard system-native browser loading; no custom splash or skeleton on homepage. |
396
+ | **Error (invalid station)** | Inline field-level message below the input; directs user to enter a valid UK station name. |
397
+ | **Error (no trains on date)** | Full-page messaging with adjacent date suggestions — "try these dates" pattern. |
398
+ | **Error (booking failed)** | Inline error within booking flow; plain-language explanation and retry option. |
399
+ | **Success (ticket booked)** | Confirmation page with ticket QR code / eticket; clean white canvas, teal confirmation accent. |
400
+ | **Service disruption (active)** | Full-width amber banner (`#fdf7c9` / `#502e00`) at top of every page. Links to status page. |
401
+ | **Skeleton** | Grey placeholder blocks at expected card/result dimensions while data loads. |
402
+ | **Disabled** | Input fields pre-filled and read-only during multi-step booking; reduced opacity on locked elements. |
403
+
404
+ ## 15. Motion & Easing
405
+
406
+ **Durations**:
407
+
408
+ | Token | Value | Use |
409
+ |---|---|---|
410
+ | `motion-instant` | 0ms | Checkbox ticks, radio selections |
411
+ | `motion-fast` | 120ms | Button hover, focus highlight |
412
+ | `motion-standard` | 200ms | Autocomplete dropdown open/close, modal appear |
413
+ | `motion-slow` | 300ms | Page-level section transitions |
414
+
415
+ **Easings**:
416
+
417
+ | Token | Curve | Use |
418
+ |---|---|---|
419
+ | `ease-enter` | `cubic-bezier(0.2, 0.6, 0.25, 1)` | Dropdowns and panels arriving |
420
+ | `ease-exit` | `cubic-bezier(0.4, 0.0, 1, 1)` | Dismissals |
421
+ | `ease-standard` | `cubic-bezier(0.25, 0.1, 0.25, 1)` | Two-way transitions |
422
+
423
+ **Motion rules**: Motion is minimal and functional — appropriate for a transactional booking utility used in high-stress moments (commuters running for trains). The autocomplete station dropdown uses a short ease-in fade; the booking form button uses a fast hover darkening. No decorative animation anywhere. Under `prefers-reduced-motion: reduce`, all transitions collapse to instant; the search and booking flow remain fully functional.
424
+
425
+ **Teal CTA hover**: The "Find cheap tickets" button darkens from `#00a88f` to `#007f6c` at `motion-fast` — confident, quick, transactional.
426
+
427
+ <!--
428
+ OmD v0.1 Sources — Philosophy Layer (sections 10–15)
429
+
430
+ Tier 1 live inspect (2026-06-22) via global playwright (chromium, headless) on:
431
+ - https://www.thetrainline.com/ (homepage)
432
+ - https://www.thetrainline.com/book/results (search results surface)
433
+
434
+ Key observations:
435
+ - Primary CTA "Find cheap tickets": bg rgb(0,168,143) = #00a88f; radius 4px; padding 10px 12px; height 48px; font 16px/600
436
+ - Action button "Change": bg rgb(35,50,196) = #2332c4; radius 4px; padding 8px 16px; height 40px
437
+ - "Accept Cookies": bg rgb(35,50,196) = #2332c4; font 18px/700; radius 4px; height 44px
438
+ - "Sign in" nav: bg rgb(231,235,235) = #e7ebeb; color rgb(25,35,37) = #192325; radius 26px; height 40px
439
+ - Secondary buttons ("Buy now", "Buy your Railcard"): bg #ffffff; border 1px solid rgb(208,212,213) = #d0d4d5; font 16px/700
440
+ - Station inputs: bg rgb(242,244,244) = #f2f4f4; height 56px; radius 4px; padding 16px 16px 16px 96px
441
+ - H1 "Buy train tickets for travel in the UK and Europe": 28px / weight 700 / color rgb(0,0,0); system font
442
+ - H3 "Save 1/3 with a Season Ticket": 32px / weight 700 / color rgb(25,35,37) = #192325; font-family TLCircular
443
+ - H3 "Spend less, travel more": 20px / weight 700 / color rgb(255,255,255); TLCircular (on colored bg)
444
+ - Body color: rgb(25,35,37) = #192325; font-size 14px; system font stack
445
+ - Top bg frequency: rgb(255,255,255) ×48, rgb(91,100,102) ×30 (#5b6466 — icon fills), rgb(242,244,244) ×23 (#f2f4f4), rgb(208,212,213) ×19 (#d0d4d5), rgb(35,50,196) ×8 (#2332c4), rgb(235,242,255) ×2 (#ebf2ff)
446
+ - document.title: "Trainline : Search, Compare & Buy Cheap Train Tickets"
447
+
448
+ Voice samples (§10) are verbatim from the live homepage.
449
+ Brand narrative (§11): Trainline founded 1999; IPO 2019 on London Stock Exchange; these are widely documented public facts.
450
+ Personas (§13) are fictional archetypes — names are illustrative; not real people.
451
+ Interpretive claims (e.g., "teal-navy dual-color system", "system fonts for speed") are editorial readings from observed design patterns.
452
+
453
+ Tier 2: getdesign.md/trainline — 404/not found. styles.refero.design — no Trainline match after search.
454
+ -->