Trainyard Design System

Combined reference for Trainyard: the brand (illustration, palette, voice, celebration) followed by the full product app system. The marketing website is not documented separately. For the app-only export use design-system-app.html and design-system-app.json.

Brand

Playful but never silly: a yellow brand, flat line-art spot illustrations on bright fields, and a warm first-person voice. Inside the app the brand shows up in small doses (the yellow action, card caps, empty-state art, celebration moments) so lessons stay the star.

Essence

Friendly, plain-spoken team training. Yellow means 'do the thing'; everything else stays calm gray and white so lessons, not chrome, carry the personality.

Wordmark

Hand-lettered script wordmark with the last letters in brand yellow (#FBCF02). In the app, the customer's own logo replaces it in the top-left.

TrainyardPlaceholder lockup for the codename: script-like italic with the tail in yellow.

Scopes in this system

AppFull product UI. See design-system-app.html / design-system-app.json.
BrandIllustration palette and style, badge art, voice and celebration rules (this page).
WebsiteNot documented; the marketing site is out of scope.

Illustration Style

Spot illustrations are the brand's loudest element: one friendly object in flat line-art on a solid yellow, light-blue, teal or red-orange field. They head learning cards, fill empty states and anchor celebration moments.

#FACF35
yellow
#A8D8E4
light-blue
#3E878D
teal
#3096A2
teal-bright
#E46658
coral
#F04E36
red-orange
#5F5E70
purple-slate
#6060A2
periwinkle
#8EC977
green
#243036
ink
#4C6971
slate-legacy

Recreations built from the tokens: one object, 2px ink line, halftone on one surface, an offset white fill, sparkles and open circles.

Rules

styleFlat line-art spot illustrations: a single everyday object (headset, plant, medal, laptop, chat bubbles, trophy, bike) centered on a solid color field
stroke2px ink (#243036), rounded caps and joins, no gradients
fillsObjects mostly unfilled (field shows through) plus one flat accent fill offset a few px from the outline, like misregistered print
textureHalftone dot fills on one or two surfaces
accentsSmall four-point sparkles, open circles and plus marks scattered around the object
format16:9 tiles; objects occupy ~40-50% of the height, centered
fieldsYellow, light blue, bright teal, red-orange; periwinkle and green less often
inProductLearning-library card headers, empty states, onboarding, certification badges, marketing composites with a browser frame (red/yellow/light-blue traffic dots)
handsCelebration art uses the same ink line with yellow sparkles (high-five hands, confetti)

From the product

Spot illustration 3
Spot illustration 6
Spot illustration 7
Spot illustration 11
Spot illustration 12
Spot illustration 18
Spot illustration 34
Spot illustration 37
Spot illustration 43
Spot illustration 48
Spot illustration 53
Spot illustration 60

Voice & Tone

Friendly, plain and a little goofy in the right places. The product explains itself like a coworker would; release notes lean on puns and emoji bullets; the UI keeps jokes out of buttons and saves exclamation points for real wins.

Warm, like a coworkerWrite like a teammate texting you about something they built. Contractions, first names, exclamation points where they are earned.
Plain first, playful secondThe label says exactly what happens (Assign, Share Assessment, Next Section). Play lives in titles, empty states and celebrations.
Celebrate outcomes, not clicksNo points or leaderboards for finishing content. Big moments (a certification, a submitted assessment) get confetti or a high five; everyday saves get a quick 'Good job!'
Make practice feel safeLabel ungraded attempts 'Let's Practice!', allow retakes, always offer a way out ('Skip recording for now').
Puns and emoji, in moderationRelease notes use month puns and emoji bullets; product UI keeps emoji to reactions and celebration moments.
Plain words are kindShort sentences, one idea per line, no jargon. Feedback criteria are called Tips, not rubrics.

Microcopy

Celebration modal
New Assessment Submitted!
What would you like to do next?
Save toast
Good job!
Your changes are saved.
Practice label
Let's Practice!
Try it as many times as you like. Only your best take gets shared.
Recorder escape hatch
Can't make a recording?
Skip recording for now.
Library search
What do you want to learn today?
Empty lesson
Oops, this lesson is empty!
Add a section to get the party started.
Nav counter
7 Lessons to Grade
Assign step
Who should be assigned?
Search people and groups
Feedback prompts
What went really well?
What could be improved?
Event RSVP
You are attending this event
Change your RSVP
Confirm
Are you sure?
This removes the lesson from every path it's in.
Release note
Big news, small wins
Three updates this month, plus one we're a little too proud of.

Do / Don't

Do"Nice work! Your lesson is live." · "Can't make a recording? Skip for now." · "What went really well?"
Don't"Submission successful (code 200)." · "Recording required to proceed." · "Rate performance against rubric matrix."

Celebration ladder

MomentTreatmentArt
Save / small editQuiet toast 'Good job!'None
Submit practice / assessmentHigh-five modal with next-step choicesLine-art hands, sparkles
Feedback receivedEmail + report card note, emoji reactionReaction picker
Certification completeDigital confetti, badge, shareable certificateConfetti + badge art

At a Glance

What makes the product feel like itself, in six rules.

Yellow means actOne solid #F9CF36 button per screen (Assign, Save, Share). It is also the focus glow, card cap and progress color.
Calm gray chrome#F7F7F7 page, white cards, gray text links. Personality comes from content, illustrations and copy.
Charcoal authoring railThe builder and filter bands use warm charcoal (#535450 / #72736E) so the white canvas reads like paper.
Hairline + soft dropCards use a 1px ring at 3% plus a 1px drop at 10%. No heavy elevation; radius stays 2-4px.
Reading comes firstLessons sit in a ~75-character column at 18/32, with an optional FF Tisa serif mode.
Celebrate outcomesHigh-five modals, badges and confetti mark submissions and certifications, never simple clicks.

Colors

Named constants from the product's compiled bundle, ranked by how often they appear in the stylesheet, plus values sampled from product screenshots. The palette barely moved across the product's life; the midnight neutral scale was added later for type.

Brand yellow colors.brand

brand-yellow
#F9CF36
Brand yellow. Primary CTA (Assign, Save Changes, Share), focus ring, card top-cap, count bubbles, radial progress
brand-yellow-hover
#F5C207
Yellow button hover / nav dropdown active text
brand-yellow-pressed
#F6BF35
Yellow pressed / darker yellow
brand-yellow-border
#F8C91D
Legacy yellow button border
brand-yellow-light
#F9E2A7
Soft yellow highlight
brand-yellow-tint
#FEF5D4
Selected table row, grading table field, callout background
brand-yellow-cap
#F4CB49
Learning-library card 4px top border (older builds)
brand-yellow-wordmark
#FBCF02
Wordmark accent yellow

Action blue, links, chart colors.action

action-blue
#4A90E2
Secondary primary: .Button--primary, pills, selected list rows, Create Group, Schedule Assignment
action-blue-hover
#609DE6
Blue button hover
action-blue-border
#2887E5
Blue button border
action-blue-tint
rgba(40,135,229,0.10)
Rule-builder variable chip background
action-link
#3E719B
Text links (body-link)
action-link-legacy
#4277A4
Older link blue
action-link-hover
#33638C
Link hover / pressed
action-indigo
#5C62A4
Chart line / accent
action-indigo-fill
#EFEFF7
Area fill under chart lines

Text colors.text

text-heading
#292933
Headings and type-scale text (midnight 100)
text-strong
#2D2D2D
Strong text, button text, active nav link, dark badge
text-body
#4A4A4A
Default body text (base 14px)
text-secondary
#696970
Secondary text, instructions (midnight 70)
text-secondary-warm
#70706D
Tab labels, gray pill text
text-nav
#949499
Inactive top-nav links, eyebrow text (midnight 50)
text-muted
#A3A2A1
Icons, descriptions, disabled pagination, dropdown items
text-disabled
#BEBEC1
Disabled text (midnight 30)
text-inverse
#FFFFFF
Text on dark rails, dark headers, blue buttons
text-on-rail
#ACACAC
Inactive section titles in the builder rail

Surfaces colors.surface

surface-page
#F7F7F7
App page background (body)
surface-card
#FFFFFF
Cards, nav, modals, tables
surface-input
#EFF1F2
Form-control / search field fill
surface-hover
#F2F4F7
Row, radio label, flat-button hover
surface-subtle
#F8F9FA
Zebra rows in DataTable
surface-gray
#EBEAEA
Gray button fill, dividers
surface-button-default
#F9F9F9
Legacy default button fill
surface-overlay
rgba(67,67,67,0.5)
Modal backdrop
surface-tooltip
rgba(35,35,35,0.9)
Tooltip fill

Borders colors.border

border-default
#DEDDDD
Button, card-body, pill-gray border
border-divider
#D9DCDE
Choice inputs, dividers
border-light
#EBEAEA
Dotted table rows, modal header rule
border-hairline
#E9E9EA
Hairline (midnight 10)
border-input
#CCCCCC
Form-control border
border-table
#DDDDDD
DataTable borders
border-grid
#C4C6C8
Gradebook grid lines

Dark chrome (rails, bands, table headers) colors.chrome

chrome-rail
#535450
Lesson-builder section rail
chrome-rail-header
#737470
Rail header band holding the New Section button
chrome-rail-button
#868684
New Section button on the rail
chrome-rail-active
#393938
Active section row; dark dropdown menu
chrome-rail-hover
#5F605C
Hovered section row
chrome-rail-divider
#4F504C
1px rule between rail sections
chrome-menu-dark
#3A3A3A
Add Element menu surface
chrome-band
#72736E
Filter bands: gradebook rail, grading-station filter bar, lesson-overview toolbar
chrome-table-header
#464656
Dark table header row
chrome-table-header-border
#292933
Dark table header border
chrome-table-header-text
#EBEAEA
Dark table header text
chrome-settings-nav
#5E5F5B
Settings left nav block

Status and feedback colors.status

status-complete
#8AD476
Progress / completion green, active trigger dot, Completed bar
status-success
#4AA81F
Success text
status-success-dark
#3D6D27
Success dark
status-success-light
#EEF5EB
Success background
status-success-banner
#72BC51
Success notification banner, attending-event pill
status-error
#DA3418
Errors, instructional error text
status-error-dark
#863C32
Error dark
status-danger
#E36659
Danger pill, failure banner, Overdue bar/tag
status-danger-dark
#CE463C
Danger pressed
status-caution
#E2A73D
Warnings
status-warning-banner
#F9D778
Warning banner
status-notice-banner
#88BFE5
Notice / secondary banner
status-recording
#F04E36
RECORDING dot and STOP button

Gradebook cells colors.gradebook

gradebook-complete
#B8DEAF
Completed / scored cell
gradebook-overdue
#E7B0AB
Overdue cell
gradebook-incomplete
#C9C9C9
Assigned, not finished
gradebook-unassigned
#FFFFFF
Not assigned
gradebook-name-cell
#F2F4F7
Sticky learner-name column
gradebook-name-cell-alt
#E5E7EA
Sticky column on odd rows
gradebook-average-row
#D0D1D3
Average Score row
gradebook-stripe
rgba(0,0,0,0.10)
Odd-row overlay on score cells

Midnight neutral scale colors.midnight

midnight-100
#292933
Headings, dark table-header border, tab underline
midnight-90
#3E3E47
midnight-80
#54545C
midnight-70
#696970
Secondary text
midnight-60
#78787F
midnight-50
#949499
Placeholders
midnight-40
#A9A9AD
midnight-30
#BEBEC1
midnight-20
#D4D4D6
Strokes
midnight-10
#E9E9EA
Fills
midnight-5
#F4F4F5
midnight-3
#F8F8F9

Customer theming

Accounts can set a Branding Color and a Custom Link Color. The branding color replaces yellow on the Assign button, card caps, the lesson progress rule and Next Section; the link color replaces link blue. Demo tenants showed teal #45A09F and red #EF5A4A. Build every yellow surface against a --brand variable so this works.

default yellow / customer teal / customer red

Typography

One humanist sans for the whole interface, a warm slab-ish serif reserved for reading, and a compact type scale defined as utility classes.

Sans, all UI
Aa Bb 123
proxima-nova, Helvetica Neue, sans-serif

Stand-in here: Figtree. 158 declarations in the stylesheet.

Serif, reading
Aa Bb 123
FF Tisa (ff-tisa-web-pro), Georgia

Stand-in here: Merriweather. Lesson Serif / Mixed Serif modes, older page titles, topic cards.

Mono, code elements
{ a: 1 }
Monaco, Menlo, Consolas

Used only for code inside lessons.

Scale

page-title
36px / 1.1 / 400
Lesson Builder
Page titles: Content, Lesson Builder, Insights
page-title-serif
36px / 1.1 / 400
Lesson Builder
Serif page titles (Settings, Grading Station) in 2016-17 builds
takeover-title
32px / 1 / 400
How to Sell Our Product
Full-screen modal titles
lesson-title
30px / 36px / 400
How to Sell Our Product
Lesson title on the builder canvas
section-title
26px / 32px / 400
How to Sell Our Product
Viewer section title
title
1.5rem / 2rem / 400
How to Sell Our Product
Type-scale title (bold variant 700)
subheader
1.25rem / 1.75rem / 400
How to Sell Our Product
Card and panel headers (bold variant 700)
lesson-body
18px / 32px / 400
Clarity is kind. Keep every line short and friendly.
Lesson reading text, ~75 characters per line
body
1rem / 1.5rem / 400
Clarity is kind. Keep every line short and friendly.
Default body (bold variant 700)
body-light
1rem / 1.5rem / 400
Clarity is kind. Keep every line short and friendly.
Secondary body
body-link
1rem / 1.5rem / 400
Clarity is kind. Keep every line short and friendly.
Inline links
instrux
1rem / 1.25rem / 600
Clarity is kind. Keep every line short and friendly.
Form instructions / labels
ui
14px / 1.428571429 / 400
Clarity is kind. Keep every line short and friendly.
Base UI text (body element)
nav
15px / 20px / 400
Clarity is kind. Keep every line short and friendly.
Top-nav links; active = #2D2D2D weight 600
small
13px / 18px / 400
Clarity is kind. Keep every line short and friendly.
Meta rows, card progress labels
instrux-small
.75rem / 1rem / 600
Clarity is kind. Keep every line short and friendly.
Small labels
tag
.75rem / 1rem / 700
Clarity is kind. Keep every line short and friendly.
Tags, rail labels
badge
10px / 1 / 700
5 days awaiting grade
Uppercase badges (text-transform: uppercase)

Lesson font modes (per account)

Titles
Paragraphs
Captions
Titles
Paragraphs
Captions
Titles
Paragraphs
Captions
Serif / Sans Serif / Mixed Serif. The same tiles appear in Settings > Customization.

Base is Bootstrap-era: body{font-size:14px;line-height:1.428571429;color:#4A4A4A}, headings weight 400 at line-height 1.1. Weight bold is the most common declaration, then 600. Page titles are big and light (36px/400); emphasis inside components is bold, not bigger.

Spacing & Layout

An 8px grid (8/16/24/32) sitting on Bootstrap 3 leftovers (10/15/20/30). Card padding modifiers are 16, 24 and 32px.

Spacing scale

0 · 0
0.5 · 2px
1 · 4px
2 · 8px
2.5 · 10px
3 · 12px
4 · 16px
5 · 20px
6 · 24px
7 · 30px
8 · 32px
12 · 48px

Layout dimensions

Top nav height54px (current) / 72px (older builds)
Nav logo inset16-20px left; links start ~120px from left
Page background#F7F7F7 full-bleed
Content container~960-1170px centered (Bootstrap 3 grid, 15px gutters)
Builder section rail~170-240px wide, full height of the canvas card
Section row min-height74px
Lesson reading measure~680px (~75 characters)
Modal480px (wide 590px), body padding 18px
Full-screen modalheader + main padding 32px, top offset 90px
Assign modalmin 708px, max 960px, min-height 504px
Learning cardheight 332px, margin 12px
Gradebook sticky column200px; rows 40-45px; score columns ~180px
Card padding16 / 24 / 32px (medium / large / larger)
Breakpoints768 / 992 / 1200px (Bootstrap 3)

Radius & Shadows

Small radii everywhere: 3px is the default, 4px for inputs and modals, 2px for the newer flat buttons. Shadows are the signature: a hairline ring plus a soft drop, layered, never heavy.

Radius

0
none
Tables, rail
2px
xs
NewButton / NewInput, dropdown items, pagination
3px
sm
Default: Button, Card, tooltip, rule chips
4px
md
Inputs, modals, badges
5px
lg
Full-screen modal, Assign modal, chat container
6px
xl
Dashed blank slate
999px
pill
Pills, count bubbles
50%
full
Avatars, status dots

Shadows

cardCard: hairline ring + soft 1px drop
0 1px 2px 0 rgba(0,0,0,0.1), 0 0 0 1px rgba(0,0,0,0.03)
buttonNewButton
0 0 0 1px rgba(0,0,0,0.1), 0 1px 4px 0 rgba(0,0,0,0.1), inset 0 1px 0 0 rgba(255,255,255,0.2)
button-yellowYellow brand button
inset 0 0 0 1px rgba(0,0,0,0.1), inset 0 1px 0 0 #f9cf36, inset 0 2px 0 0 rgba(255,255,255,0.2), 0 1px 2px 0 rgba(0,0,0,0.09)
button-pressedPressed/active button
inset 0 0 0 1px rgba(0,0,0,0.1), inset 0 1px 0 0 rgba(0,0,0,0.2)
modalModals and Assign modal
0 10px 21px 0 rgba(0,0,0,0.06), 0 0 0 1px rgba(0,0,0,0.08), 0 2px 7px 0 rgba(0,0,0,0.2)
navTop navigation bar
0 1px 0 0 rgba(0,0,0,0.1), 0 1px 5px 0 rgba(0,0,0,0.1)
heroPageHero band
0 1px 0 rgba(0,0,0,0.05), 0 1px 4px rgba(0,0,0,0.1)
tableTables, rule-builder container
0 1px 4px 0 rgba(0,0,0,0.04)
dropdownLight dropdown list
0 2px 5px 0 rgba(0,0,0,0.05), 0 0 0 1px rgba(0,0,0,0.05), 0 1px 1px 0 rgba(0,0,0,0.05)
dropdown-darkDark dropdown / Add Element menu
0 1px 4px 0 rgba(0,0,0,0.3)
tooltipTooltip
0 1px 2px 0 rgba(0,0,0,0.2), inset 0 1px 0 0 rgba(255,255,255,0.02)
focusForm-control focus: yellow glow + yellow border
inset 0 1px 1px rgba(0,0,0,0.075), 0 0 8px rgba(249,207,54,0.6)
stackedPath card: a stack of lessons
0 0 0 1px #dedede, 4px 4px 0 0 #fff, 4px 4px 0 1px #dedede, 8px 8px 0 0 #fff, 8px 8px 0 1px #dedede
chatPractice chat container
0 1px 4px 0 rgba(0,0,0,0.4)

Motion & Focus

Quick and functional: 200ms ease is the house transition. Modals pop from 80% scale, progress bars grow from the left on a springy curve, and builder controls slide in on hover after a 100ms delay.

TokenValueUse
defaultall 0.2s easeButtons, rail controls, dropdowns: the house transition
ease-outall 0.2s ease-outSidebar inputs, toggles
fadeopacity 0.3s easeFades, reveal controls
modal-inmodal 200ms ease / from {opacity:.5; transform:scale(.8)} to {opacity:1; transform:scale(1)}Every modal container pops in
overlay-inbackground 200ms ease / from {opacity:.1}Backdrop fades up
dropdown-inslideIn 0.2s easeDropdown lists
progressprogress 1s cubic-bezier(0.23,1,0.32,1) / from {transform:scaleX(0)}Path/lesson progress bars grow from the left
rail-controlsall 0.2s ease 0.1s / translate3d(100%,0,0) -> 0Section drag/duplicate/delete controls slide in on hover
add-siblingall 0.1s ease-in 0.2s / max-width 0 -> 130pxAdd Element label expands on the insertion line
rowbackground-color 300ms easeTable row hover/selection
bannerall 300ms ease / transform-origin: topNotification banners
radiobackground-color 0.1s ease-outRadio option hover
countdown1s per step, 3 -> 2 -> 1 -> recordingPractice recorder countdown before capture

Focus

Inputs take a yellow border plus 0 0 8px rgba(249,207,54,.6) glow. Buttons show a 2px yellow outline on keyboard focus. Rail section titles drop the outline; their active state carries focus.

Live

Modal pop (replay)
Progress grow
Focus glow (click)
Hover

Icons

An inline SVG icon component with named glyphs, joined later by Feather-style line icons. 2px strokes with round caps; gray #A3A2A1 by default, #292933 when strong. Sizes: 14px inline, 20px nav, 21px builder controls.

gear
search
eye
star
thumb
calendar
check
x
plus
chev
drag
trash
copy
comment
send
lock
info
users
image
video
file
mic
flip
layers

Buttons

Two families shipped side by side: Button (white, 3px radius, 16px text) and the flatter NewButton (2px radius, 36px line-height) that carries the yellow brand variant. Yellow is the one primary action per screen; blue is the secondary-primary inside admin flows.

Default
Hover
Pressed
Focus
Disabled

Variants

Older small-caps style (2015-17)

VariantSpec
Yellow (brand)bg #F9CF36, text #2D2D2D 600, h 36px, radius 2px, shadow button-yellow; hover #F5C207; pressed #F6BF35
Bluebg #4A90E2, border 1px #2887E5, text #fff; hover #609DE6; radius 3px; min-h 36px; 0 16px
Defaultbg #fff, border 1px #DEDDDD, text #2D2D2D 16px, icon #A3A2A1 + 8px gap; hover #F7F7F7
Gray / Flatgray #EBEAEA + button shadow; flat transparent, hover #F2F4F7
Disabledopacity .4, pointer-events none

Inputs & Selects

Form controls are Bootstrap-derived: a cool gray fill #EFF1F2, 1px #CCC border, 4px radius and a faint inset. Focus turns the border yellow with a soft yellow glow. Choice rows highlight #F2F4F7 on hover.

Please give your lesson a title.
Ask a clarifying question
Repeat the price back
Offer a discount right away
Account ExecutivesCustomer Support

Pills, Badges & Chips

Pills are fully round and outlined in blue until selected. Badges are tiny uppercase slabs with 1px tracking. Counters are 18px circles: yellow in the nav, dark for selected counts, gray for totals. Feedback chips are square-cornered and fill yellow when chosen.

Pills

PeopleGroupsOnboardingOverdue

Badges, labels, counters

5 days awaiting gradeAdminLabsDraft7Lessons to Grade82

Assignment tags

OverdueDue May 28 Required

Status dots and rule variables

ActivePaused{first_name}Department

Feedback chips (toggle)

ClarityConfidenceConversational ToneRelevanceIntroduction

Cards

White, 3px, hairline shadow. The signature is the top cap: an 8px brand-color strip across assignment and library cards (4px #F4CB49 on older library topics). Paths use a stacked shadow that reads as a pile of lessons. Learner cards are 332px tall with an illustration header.

Overdue
Handling Tough Calls
Five moves for when a customer is having a rough day.
Completed
Due May 28
Your First Week
Everything you need to hit the ground running.
40%
Featured
Learning
1 course, 5 lessons, and 1 resource

Card variants

Card
radius 3px, shadow card
Top cap
8px brand strip
Left cap
8px left border
Stacked (path)
3 offset outlines = a stack of lessons

Tables

Index tables have a dark header band (#464656 with a #292933 border and #EBEAEA text) that also hosts white filter pills and a white search field. Rows are white with dotted #EBEAEA separators; a selected row turns yellow tint #FEF5D4. Reports use a lighter DataTable.

All ContentLessonsPaths
Title
Owner
Updated
Assigned
5 Cold-Calling Strategies
Maya Ortiz
Jul 14
28
Product Launch Certification
Dev Patel
Jul 12
112
Our Mission and Values
Sam Lee
Jun 30
141

DataTable (light header, zebra)

SectionViewsAvg. timeCorrect
Introduction4121m 20s—
Asking better questions3983m 05s86%
Responding to objections3774m 12s74%

Tabs, Pagination, Menus

Tabs are 16px gray with a bold dark label and 2px #292933 underline when selected, on a 1px #DEDDDD inset rule. Menus come light (white, 2px items that darken on hover) or dark (#393938) and slide in over 200ms. Tooltips are near-black at 90% with a 3px radius.

Overview
Activity
Settings

Insights tab variant

Learner Engagement
Learner Satisfaction
Learner Impact
Activity Feed
More Reports

Pagination

  • 1
  • 2
  • 3
  • …
  • 9

Dropdowns & tooltip

My Account
Settings
Help Center

Sign Out
Duplicate
Preview
Archive
Share a link learners can open without signing in

Notifications

Full-width banners under the nav: 60px min-height, white text on flat status fills, an icon, the message and a translucent dismiss button. Saving shows a short dark toast.

Good job! Your changes are saved.

Modals

Modals pop in from 80% scale over 200ms on a rgba(67,67,67,.5) backdrop. Standard modals are 480px (590px wide variant) with 4px radius and a three-layer shadow. Full-screen flows use a 5px radius, a gray header band and a 32px title.

Standard + confirm

Full-screen (takeover)

×
New Practice Scenario

Pick how learners will respond.

Webcam videoScreen recordingAudioEmail replyChat

High-five celebration

Shown after submitting an assessment, a coaching plan or a practice attempt. Line-art hands with yellow sparkles, a bold exclamation title, one status line, a question and two stacked full-width actions. Replay the pop.

×

New Assessment Submitted!

The assessment has not been shared with Jordan yet.

What would you like to do next?

Assign modal

Two panes on #F7F7F7: pick people or groups on the left; the right rail tracks the steps. The active step has a 6px yellow strip; selections become blue chips.

Who should be assigned?

PeopleGroups
Customer Service Reps6 Users
Account Executives15 Users
CX Managers3 Users
All Company141 Users
Content 2
A Guide to Great Service ×
Company Goals ×
Assignees 8
Customer Service Reps ×
CX Managers ×
Scheduling
Review and Assign

Empty States

Centered blank slates up to 540px wide, optionally inside a 4px dashed #DEDDDD frame, with a spot illustration, a friendly one-liner in gray and a single yellow action. Simple variants are one gray 18px line with an icon.

Oops, this lesson is empty!

Add a section to get the party started. Text, video, a quick question: whatever helps your team learn.

No results for “onboarding” yet.

App Shell & Navigation

A white 54px bar with a soft shadow: customer logo, gray text links (the active one dark and semibold), then a yellow count bubble for grading, a gear menu and the solid yellow Assign button. Pages open with a large light title on #F7F7F7.

Content

Lessons, paths and practice scenarios your team has built.

Nav history: early builds had Home / Browse / Create a Lesson; mid-life Lessons · People · Gradebook · Learning Library; the mature product settled on Content · Events · People · Gradebook · Insights · Learn. Learners see a pared-down bar with only Learn and a gear.

Lesson Builder

The authoring surface: a charcoal section rail on the left, a paper-white canvas on the right. Hover between elements to reveal a blue insertion line with an Add Element tab; it opens a dark menu of content types (Text, Flipcard, Reveal, Image, Embed, Video, Document, Question, Practice).

Lesson Builder
Overview
How to Sell Our Product
What Makes a Great Demo
Asking Better Questions
Responding to Objections
Creating Urgency to Close
A Guide to Closing the Deal
How to Sell Our Product
Add Element
Text
Flipcard
Reveal
Image
Embed
Video
Document

Question
Practice

Element Library
BI</>A↕•≡1.⇤⇥▦
In this lesson we will cover how to:
• Run a great demo call
• Ask clarifying questions
• Respond to objections
Rail#535450, 15px; header band #737470 with New Section (#868684); rows min-h 74px, text #ACACAC; hover #5F605C; active #393938 white
Section controlsdrag / duplicate / delete slide in from the right: all .2s ease .1s, gradient mask in the row color
Insertion line2px rgba(0,0,0,.06) → rgba(74,144,226,.6) on hover; blue #4990E2 tab, label expands 0 → 130px
Add Element menu#3A3A3A, 13px #D0D0D0 items, hover #4A4A4A; Question and Practice open submenus
Element controls21px icons 39px right of the element, opacity .5 → 1 on hover

Lesson Viewer

Reading is the product. A white header shows the lesson name, the section title and a Section 1 / 11 table-of-contents dropdown; a 3px brand-color rule fills as you advance. Content sits in a ~680px column at 18/32, and a sticky footer holds Next Section (Finish on the last page).

Welcome to the Team
Introduction
Section 1 / 11
Welcome!

This lesson walks you through your first week: who to meet, what to read, and where to find help.

By the end you will:
  • Know your team's goals
  • Have your tools set up
  • Finish your first practice
About 11 minutes
Handling Tough Calls
Check your understanding
Section 4 / 6

A customer says your price is too high. What do you do first?

Offer a discount
Ask what they are comparing it to
Move on to the next topic

Left: Sans mode. Right header in Serif mode. The progress rule and Next Section take the account branding color when set (a pale teal in one demo tenant).

Practice Recorder

Rehearsal made safe. A prompt card with numbered yellow criteria sits above a 16:9 capture frame. While capturing, a white RECORDING label with a red dot pins top-left and a red STOP button sits bottom-center. A 3-2-1 countdown in a black ring precedes every take.

How would you respond to a prospect who says our product is too expensive? Required
1Audience Target — clearly states who we are targeting
2Brevity — under two minutes
Recording

Can't make a recording? Skip recording for now.

3

3 → 2 → 1 at one-second steps, then capture starts. Run countdown

Let's Practice!Evaluation

Response types: webcam video, screen recording (with a picker for what to share), audio with waveform playback, a simulated email reply, and a chat conversation with a scripted customer. Ungraded attempts are labelled Let's Practice! and can be repeated; graded ones are Evaluation.

Grading Station & Feedback

Graders work down a queue. A charcoal filter band sits over a yellow-tint table of question, answer, correct/incorrect and per-criterion 5-star ratings. Coaching feedback swaps rubrics for friendly chip pickers: What went really well? and What could be improved?

Filter By
Alex Rivera
5 days awaiting grade
QuestionGiven AnswerCorrect AnswerGrader Feedback
1. A customer asks for help logging in. How do you start the call?
Correct
Incorrect
Audience Target
Brevity
Comments
Give Feedback!
What went really well?
ClarityConfidenceContext SettingEngagementRelevance
What could be improved?
ClarityConfidenceConversational ToneIntroduction

Gradebook

A status grid: learners down a sticky 200px bold column, lessons across with two-line clamped bold headers, and pastel status fills in every cell. A charcoal #72736E filter rail on the left picks groups and courses with white checkboxes.

Groups Deselect All
Choose a group…
2 Selected Hide Full List
Account Executives
Customer Support
Sales Development
Courses Deselect All
Choose a course…
Service Best Practices
Management Techniques
Coaching: The Path to SuccessEmployee RecognitionNavigating the CRMSecurity Basics
Average Score100%92%
Arlie P.IncompleteIncomplete100%100%
Bess R.IncompleteIncomplete100%
Carl B.IncompleteIncompleteOverdueIncomplete
Casey D.100%100%
Edgar D.IncompleteIncompleteOverdue
Jamie B.100%IncompleteOverdue100%
Complete / scoreOverdueIncompleteNot assigned

Insights

Reports are calm and sparse: filter selects, a tab strip, a stat tile with an icon and a big bold number, and a single #5C62A4 line over a lavender fill. Status bars reuse the semantic trio: red overdue, gray incomplete, green completed.

Learner Engagement
Learner Satisfaction
Learner Impact
Activity Feed
More Reports
7,318
Lesson Views
Last 90 Days
Lesson Views by Week
Last 90 Days
Most-Viewed Lessons
1Best Practices for Phone Conversations157
2Industry Updates152
3Why Customers Choose Us128

Lesson overview: assignment status

Overdue2View all
Incomplete14View all
Completed12View all
Learner ratings 8   0

Certifications, Badges & Reactions

The only place the product hands out badges. Shield shapes with a thick ink outline and one line icon, filled from the illustration palette. Everyday appreciation is an emoji reaction.

Customer Service Essentials
How great support teams learn, practice and perform.
7 Steps
Welcome!

Badge library

×
Send a reaction
☺️✍️👏👍👌💛🎉

Reactions answer feedback with one tap. Native emoji at 28px; the chosen one gets a ring.

Completing a certification path fires a digital confetti burst, awards the badge and unlocks a shareable certificate (856×620: badge, 36px learner name, 18px acknowledgement, customer logo). Badges are customizable: pick an icon and a badge color in an editor modal.

Smart Groups & Automation

Rule builders are plain: gray rule panels with field / operator / value, OR links inside a panel, AND separators between panels, and a blue Create action. Automations read as sentences with blue variable chips and a status dot.

When a person joins New Hires assign Welcome Path due in 14 days
When Role changes to Manager assign Coaching 101

Events

Live training sits next to lessons. Event cards are compact white cards: a bold date line, a small timezone, key/value rows, a green attending pill with an underlined RSVP link, and a default Add To Calendar button.

March 29, 1:00 PM to 2:00 PM
Eastern Time (US & Canada)
Location Meeting Room 1
Instructor Priya Shah
You are attending this eventChange your RSVP

Settings & Customization

Settings use a dark left block of uppercase tabs (active item darker with a white notch) beside a white form column. Customization lets each account set its branding color, link color, lesson font mode and logo.

My Account
Global Lesson Settings
Notifications
Customization
Anonymous Login
API & Webhook
Stylize
Titles
Paragraphs
Captions
Serif
Titles
Paragraphs
Captions
Sans Serif
Titles
Paragraphs
Captions
Mixed Serif

Tailwind Mapping

The paired JSON export includes a tailwind section with theme extensions and component recipes. Use these mappings instead of default Tailwind tokens when recreating Trainyard.

// tailwind.config.js
import designSystem from './design-system.json';

export default {
  theme: {
    extend: designSystem.tailwind.app.theme.extend,
  },
};

// Also reuse designSystem.tailwind.app.componentRecipes for common surfaces, e.g.
// <button className={recipes.buttonPrimary.className}>Assign</button>
ScopePrimaryActionBody FontRadiusCard shadowBreakpoints
Appbrand-yellow #F9CF36action-blue #4A90E2font-sans (proxima-nova)rounded-sm 3px / rounded-md 4px / rounded-xs 2pxshadow-cardsm 768 / md 992 / lg 1200
ScopeRecipeClass PatternNotes
AppnavBarflex items-center h-nav px-5 bg-surface-card shadow-nav font-sans z-[12]White 54px bar, logo left, links, right cluster
AppnavLinktext-nav text-text-nav hover:text-text-body transition-all duration-200 data-[active=true]:text-text-strong data-[active=true]:font-semiboldTop-nav text link
ApppageTitlefont-sans text-page-title font-normal text-text-strong36px light page title
AppbuttonPrimaryinline-flex items-center justify-center gap-2 h-9 px-6 rounded-xs bg-brand-yellow text-text-strong text-[15px] font-semibold shadow-button-yellow hover:bg-brand-yellow-hover active:bg-brand-yellow-pressed active:shadow-button-pressed disabled:opacity-40 transition-all duration-200 ease-in-out focus-visible:outline-none focus-visible:shadow-focusYellow brand action (Assign, Save, Share)
AppbuttonActioninline-flex items-center justify-center gap-2 min-h-9 px-4 rounded-sm border border-action-blue-border bg-action-blue text-text-inverse text-body hover:bg-action-blue-hover transition-all duration-200Blue secondary-primary (Create Group, Schedule Assignment)
AppbuttonDefaultinline-flex items-center justify-center gap-2 min-h-9 px-4 rounded-sm border border-border-default bg-surface-card text-text-strong text-body hover:bg-surface-page transition-all duration-200White default button
AppbuttonFlatinline-flex items-center h-9 px-2.5 rounded-xs bg-transparent text-text-strong hover:bg-surface-hover transition-all duration-200Flat (Cancel)
AppbuttonRecordinline-flex items-center px-4 py-2 rounded-xs bg-status-recording text-text-inverse font-bold uppercase tracking-wideSTOP while recording
AppinputFieldh-[34px] w-full px-3 py-1.5 rounded-md border border-border-input bg-surface-input text-ui text-text-body shadow-input-inset placeholder:text-midnight-50 focus:outline-none focus:border-brand-yellow focus:shadow-focus transition-all duration-200Form control with yellow focus glow
AppsearchFieldh-10 w-full pl-8 pr-8 rounded-md bg-surface-input shadow-[inset_0_0_0_1px_rgba(0,0,0,0.05)] focus:bg-surface-hover transition-all duration-200 ease-outSearch field
Apppillinline-flex items-center rounded-pill px-3 py-1 border border-action-blue bg-surface-card text-action-bluePill (unselected)
ApppillSelectedinline-flex items-center rounded-pill px-3 py-1 border border-action-blue bg-action-blue text-text-inversePill (selected)
AppbadgeDarkinline-flex items-center rounded-md px-1 pt-0.5 pb-px text-badge font-bold uppercase tracking-[1px] bg-text-strong text-text-inverseDark uppercase badge
AppcountBubbleinline-flex items-center justify-center size-[18px] rounded-full bg-brand-yellow text-[11px] font-bold text-text-strongYellow count circle
Appcardbg-surface-card rounded-sm shadow-card p-6Default card
AppcardTopCaprelative bg-surface-card rounded-sm shadow-card overflow-hidden before:absolute before:inset-x-0 before:top-0 before:h-2 before:bg-brand-yellowCard with 8px yellow top cap
AppcardStackedbg-surface-card rounded-sm shadow-stacked p-6Path card (stack of lessons)
ApptableHeaderflex bg-chrome-table-header border border-chrome-table-header-border text-chrome-table-header-textDark table header row
ApptableRowflex bg-surface-card border-b border-dotted border-border-light transition-colors duration-300 aria-selected:bg-brand-yellow-tintTable row
ApptableCellflex-1 flex items-center justify-between px-[18px] py-3Table cell
Appmodalw-[480px] rounded-md bg-surface-card shadow-modal animate-modal-inStandard modal
AppmodalBackdropfixed inset-0 bg-surface-overlay animate-overlay-inBackdrop
AppcelebrationModalw-[620px] rounded-md bg-surface-card shadow-modal px-16 pt-12 pb-14 text-center animate-modal-inHigh-five celebration modal
AppnotificationSuccessflex items-center min-h-[60px] px-5 pt-2 pb-3 bg-status-success-banner text-text-inverseFull-width success banner
ApprailSectionrelative flex flex-col justify-center min-h-[74px] pl-3 text-text-on-rail shadow-[0_1px_0_#4f504c] hover:bg-chrome-rail-hover hover:text-text-inverse aria-[current=true]:bg-chrome-rail-active aria-[current=true]:text-text-inverse transition-all duration-200Builder rail section row
AppaddElementMenuw-40 py-1 rounded-xs bg-chrome-menu-dark shadow-dropdown-dark text-[13px] text-[#d0d0d0]Dark Add Element menu
ApprecordingBadgeinline-flex items-center gap-2 text-[20px] font-bold uppercase text-text-inverse after:size-3 after:rounded-full after:bg-status-recordingRECORDING label
AppgradebookCellCompletetext-center text-ui px-2.5 h-10 bg-gradebook-complete border-r border-t border-border-gridGradebook cell (complete)
AppgradebookCellOverduetext-center text-ui px-2.5 h-10 bg-gradebook-overdue border-r border-t border-border-gridGradebook cell (overdue)
AppfeedbackChipinline-flex items-center px-4 py-2 rounded-xs border border-midnight-30 text-[13px] font-bold text-text-strong aria-pressed:bg-brand-yellow aria-pressed:border-brand-yellowFeedback chip
Apptooltiprounded-sm bg-surface-tooltip px-2.5 py-1.5 text-small text-text-inverse shadow-tooltipTooltip

CSS custom properties

:root {
  --ty-brand-yellow: #F9CF36;
  --ty-brand-yellow-hover: #F5C207;
  --ty-brand-yellow-pressed: #F6BF35;
  --ty-brand-yellow-border: #F8C91D;
  --ty-brand-yellow-light: #F9E2A7;
  --ty-brand-yellow-tint: #FEF5D4;
  --ty-brand-yellow-cap: #F4CB49;
  --ty-brand-yellow-wordmark: #FBCF02;
  --ty-action-blue: #4A90E2;
  --ty-action-blue-hover: #609DE6;
  --ty-action-blue-border: #2887E5;
  --ty-action-blue-tint: rgba(40,135,229,0.10);
  --ty-action-link: #3E719B;
  --ty-action-link-legacy: #4277A4;
  --ty-action-link-hover: #33638C;
  --ty-action-indigo: #5C62A4;
  --ty-action-indigo-fill: #EFEFF7;
  --ty-text-heading: #292933;
  --ty-text-strong: #2D2D2D;
  --ty-text-body: #4A4A4A;
  --ty-text-secondary: #696970;
  --ty-text-secondary-warm: #70706D;
  --ty-text-nav: #949499;
  --ty-text-muted: #A3A2A1;
  --ty-text-disabled: #BEBEC1;
  --ty-text-inverse: #FFFFFF;
  --ty-text-on-rail: #ACACAC;
  --ty-surface-page: #F7F7F7;
  --ty-surface-card: #FFFFFF;
  --ty-surface-input: #EFF1F2;
  --ty-surface-hover: #F2F4F7;
  --ty-surface-subtle: #F8F9FA;
  --ty-surface-gray: #EBEAEA;
  --ty-surface-button-default: #F9F9F9;
  --ty-surface-overlay: rgba(67,67,67,0.5);
  --ty-surface-tooltip: rgba(35,35,35,0.9);
  --ty-border-default: #DEDDDD;
  --ty-border-divider: #D9DCDE;
  --ty-border-light: #EBEAEA;
  --ty-border-hairline: #E9E9EA;
  --ty-border-input: #CCCCCC;
  --ty-border-table: #DDDDDD;
  --ty-border-grid: #C4C6C8;
  --ty-chrome-rail: #535450;
  --ty-chrome-rail-header: #737470;
  --ty-chrome-rail-button: #868684;
  --ty-chrome-rail-active: #393938;
  --ty-chrome-rail-hover: #5F605C;
  --ty-chrome-rail-divider: #4F504C;
  --ty-chrome-menu-dark: #3A3A3A;
  --ty-chrome-band: #72736E;
  --ty-chrome-table-header: #464656;
  --ty-chrome-table-header-border: #292933;
  --ty-chrome-table-header-text: #EBEAEA;
  --ty-chrome-settings-nav: #5E5F5B;
  --ty-status-complete: #8AD476;
  --ty-status-success: #4AA81F;
  --ty-status-success-dark: #3D6D27;
  --ty-status-success-light: #EEF5EB;
  --ty-status-success-banner: #72BC51;
  --ty-status-error: #DA3418;
  --ty-status-error-dark: #863C32;
  --ty-status-danger: #E36659;
  --ty-status-danger-dark: #CE463C;
  --ty-status-caution: #E2A73D;
  --ty-status-warning-banner: #F9D778;
  --ty-status-notice-banner: #88BFE5;
  --ty-status-recording: #F04E36;
}

Screenshot Reference

Product screenshots collected for this extraction, grouped by area. The full set lives in ./screenshots/ by category (builder, learner, practice, coaching, celebration, analytics, paths, admin, integrations, illustration, knowledge, mobile).