Shyft SolutionsClarity
Clarity
Shyft Solutions design system · v0.2

The shared language behind every Shyft tool.

Tokens, components, and patterns for our internal apps — Stipend Tracker, TADS, Recruiting, and the rest — with a foundation rounded enough to share with customer-facing products.

Anchor color
#329af0
Shyft blue
Display type
Sora
echoes the S2 mark
UI type
Inter
tabular numerics on
Grid
4 pt
8/10/14/20 radii
Themes
Light · Dark
WCAG AA across

Color

Anchored on Shyft blue #329af0 and Shyft charcoal #212529. Brights are reserved for data viz, category tags, and per-app accents in the app switcher — never primary UI chrome.
Primary scales
BluePrimary brand. Use 500 for buttons and active states; 600 for hover; 700+ for high-contrast text on tints.
25--blue-25
50--blue-50
100--blue-100
200--blue-200
300--blue-300
400--blue-400
500--blue-500
600--blue-600
700--blue-700
800--blue-800
900--blue-900
CharcoalNeutral chrome. 25 → page backgrounds. 900 → primary text. The original Shyft black is 900.
25--charcoal-25
50--charcoal-50
100--charcoal-100
200--charcoal-200
300--charcoal-300
400--charcoal-400
500--charcoal-500
600--charcoal-600
700--charcoal-700
800--charcoal-800
900--charcoal-900
Data viz / category palette
Green
300--green-300
500--green-500
700--green-700
Success, approved, healthy budget.
Orange
300--orange-300
500--orange-500
700--orange-700
Warning, pending review, attention.
Pink
300--pink-300
500--pink-500
700--pink-700
Danger, denied, destructive actions.
Purple
300--purple-300
500--purple-500
700--purple-700
Category color. Internet & Phone.
Yellow
300--yellow-300
500--yellow-500
700--yellow-700
Highlight, drafts, low-priority callout.
Semantic tokens
Always reference these in components — never the raw scale values. The semantic layer is what makes light/dark mode + per-app accents possible.
--bgcharcoal-25Page background
--bg-elev#ffffffCard / panel surfaces
--bg-subtlecharcoal-50Hover, table header, secondary surfaces
--bg-sunkencharcoal-100Recessed wells, dropzones
--bordercharcoal-100Default 1px hairlines
--border-strongcharcoal-200Inputs, buttons, focusable controls
--textcharcoal-900Primary text
--text-mutedcharcoal-600Secondary text, descriptions
--text-subtlecharcoal-500Captions, metadata, placeholders
--accentblue-500Primary action, links, focus
--accent-softblue-tintActive nav, accent badges, focus rings
--successgreen-700Approved, healthy, completed
--warnorange-500Pending, caution
--dangerpink-700Denied, destructive, error

Typography

Two faces. Sora for display moments — page titles, stat values, hero headlines. Geometric and slightly rounded, it echoes the S2 mark. Inter for everything else — buttons, body, table rows. Numbers use the JetBrains Mono tabular set so columns align without forcing equal-width layouts.
Display 40
Sora · 600
Reimbursements made effortless
Display 28
Sora · 600
Pending review queue
Title 22
Sora · 600
9 awaiting decision
Heading 17
Sora · 600
Stipend categories
Subtitle 16
Inter · 500
Submit a new stipend request
Body 14
Inter · 400
Quarterly stipend programs let employees expense wellness, learning, and home-office needs.
Label 12.5
Inter · 500
Annual budget per employee
Caption 11.5
Inter · 400
FY 2026 · resets Apr 1, 2027
Mono 13
JetBrains Mono · 500
$4,180.00 · REQ-5031 · 2026-05-08T10:14

Spacing & radii

Spacing on a 4 pt base — eight named steps cover 95% of cases. Radii follow a parallel scale so cards, buttons, and inputs nest cleanly.
Space scale
s-14px
inline icon padding
s-28px
between inline elements
s-312px
tight group
s-416px
between fields, default gap
s-520px
card padding
s-624px
section dividers
s-832px
page padding
s-1248px
section spacing
s-1664px
hero / large breathing room
Radii
r-sm
tags, kbd, tiny chrome
r-md
buttons, inputs, nav items
r-lg
category icon tiles
r-xl
cards, tables
r-2xl
modals, dialogs
r-full
pills, avatars

Elevation

Three layers. The system is mostly flat — shadows are a last resort, after color and border. Everything above shadow-2 should be temporary (popovers, modals, drag).
shadow-1
Default cards, table wraps, stat tiles
shadow-2
Hover lift, dropdowns
shadow-3
App switcher, command palette
shadow-pop
Modals, drag preview

Clearspace & sizing

Always keep clearspace equal to the height of the “S” stem around the entire mark. Smaller, and the mark stops reading; tighter, and it competes with adjacent UI.
1x
S2 mark with clearspace
22 / nav22 / nav
28 / brand block28 / brand block
40 / login40 / login
64 / hero64 / hero

Do's & don'ts

A few rules. They mostly come down to: respect the two-tone treatment, don't squish, don't recolor the mark to fit a context.
DO — Two-tone, original colors

Always use the mark in its native split — Shyft charcoal #212529 + Shyft blue #329af0.

DON'T — Single-color fill

Never collapse to one fill. The two-tone treatment is the brand identity, not decoration.

DO — Maintain aspect ratio

The mark is square. Always scale uniformly.

DON'T — Stretch or distort

Never stretch, skew, or rotate. Get a bigger asset slot instead.

DO — On solid surfaces

Place on solid backgrounds — white, charcoal-900, or our blues. Both tones survive.

DON'T — On busy imagery

If you must place over imagery, add a solid backplate first.

Voice & tone

Internal tools. Be useful before being friendly. Direct verbs in titles, sentence case in body, never apologize for product behavior the user didn't cause.
DO
  • “Submit request”
  • “9 awaiting decision”
  • “Over your remaining budget”
  • “Reset Apr 1, 2027”
  • “Nothing here yet — when someone submits a request, it'll show up here.”
DON'T
  • “Submit Your Awesome Request! ✨”
  • “You have 9 pending items that need your attention”
  • “Oops! That's over budget 😬”
  • “Resets on April 1st, 2027 at 12:00 AM UTC”
  • “No requests found. Please try a different filter.”

Buttons

One primary per surface. secondary for navigation between equal options. ghost for tertiary inline actions. danger for destructive confirmations.
Heights: 36 · 28 · 24 px

Inputs

38 px tall (32 px in compact). Same radius as buttons. Focus uses a 3-px ring at the accent hue / 22% opacity — never thicker.
$
Radio cards
Segmented control

Badges & tags

Pills carry one piece of state — never two. Tags are softer, used for category and metadata.
Status pills
PendingApprovedCompletedDenied
Category tags (full palette)
📚 Learning🏋️ Wellness🖥️ Equipment📡 Internet🧠 Mental Health🤝 Team
Neutral tags
REQ-5031TaxableNon-tax receipt.pdf

Stat tiles

The hero number reads in Sora; supporting numbers stay in mono. Use deltas sparingly and only when comparison is requested.
Pending review
9
Avg approval ~1.4 days
Reimbursed YTD
$28,510
19%vs. last year
Days until reset
324
Apr 1, 2027

Tables

Header is 11.5 px, all-caps, sticky. Rows are 48 px in comfortable mode, 40 px in compact. Numbers right-aligned, in JetBrains Mono.
EmployeeCategoryDescriptionAmountStatus
MP
Maya Patel
REQ-5031
🏋️ WellnessMonthly yoga studio membership$349.00Pending
JC
Jordan Chen
REQ-5030
📚 LearningPluralsight annual subscription$299.00Approved
RP
Riley Park
REQ-5029
🖥️ EquipmentExternal monitor — home office$420.00Pending

Cards & tiles

Three card types. Stat card for single metrics (above). Content card for grouped content with a header. Action card for items in a grid.

Content card

With header, body, and actions

Card body content goes here. The header is sticky inside scrollable cards; the body uses 20 px padding by default.

🏋️
Wellness & Fitness
$600 annual
Non-tax
Gym, classes, meditation apps
40%

Empty states

Center content, hint the next action, never apologize. Icon → title → one sentence → action.
No pending requests
When someone submits a request, it'll show up here.
Nothing matches
Try clearing the filter or expanding the date range.

App shell

Every internal app uses the same shell — fixed left sidebar with the S2 mark, app switcher, and nav; sticky topbar for breadcrumbs and global actions. The shell is shared. The content is yours.
Shyft Solutions
Stipend Tracker
Dashboard
New request
My requests
Categories
Stipend Tracker › Dashboard
Page title
Page subtitle goes here

Login screen

A split layout — brand on the left in dark, sign-in on the right in light. The only place the full corporate lockup appears inside a product surface.

Sign in to Stipend Tracker

Use your Shyft Google account.