Trailwise design system

The Field Guide system

How Trailwise looks, sounds and moves. Calm and premium on the surface, instrument-grade where the data lives. Forest and cream carry the brand; alpenglow is a highlighter, never the headline.

Hanken GroteskJetBrains MonoWCAG AA targeted
Foundations

Lettermark

A compact monogram for square spaces the wordmark cannot fill: app icons, favicons, avatars and loading states. A bold forest “T” with an upward-tilted crossbar for momentum, a small “w”, and the alpenglow sun as the single accent, a direct echo of the icon.

Forest and cream carry it; the sun is the one warm note, never a second accent. Keep clear space equal to the sun on all sides. Legible to about 24px; on dark surfaces the letters go cream and the sun warms to alpenglow 400.

Foundations

Colour

Forest and cream do the heavy lifting. Alpenglow is reserved: one primary action per view, live data, or a single accent word. Treat orange like a trail blaze, you should always be able to find the one on the page.

Brand

Forest 900
ink & dark surfaces
#16301F
Forest 700
primary brand
#234A31
Forest 500
secondary, success
#2E5E3F
Alpenglow 500
accent & live (sparing)
#D75928
Cream 100
warm fills, labels
#EFE7D6
Paper
page background
#FBFAF6

Neutrals & semantic

Text
#1A2C21
Text muted
#48584E
Snow / surface
#FFFFFF
Success
#2E5E3F
Warning
#BE7A1F
Danger
#B23A2A
Foundations

Typography

Hanken Grotesk is the single family for display and body. JetBrains Mono carries every label, kicker, counter and metric. Headings get hierarchy from weight, not a second face. Emphasis is colour, never italic.

Run wiser.
H1 / Display
Hanken 800
−0.04em
Built around your body
H2
Hanken 800
A coach that never logs off
H3
Hanken 700
Adaptive coaching that protects you first, then pushes you.
Lead
Hanken 500
Body copy sits at 15 to 16px with a 1.55 line height. Comfortable measure, generous spacing, nothing cramped.
Body
Hanken 400
Weekly load · zone 2 · readiness
Label / kicker
Mono 500
4:52 /km · 178 spm
Data
Mono 600 · tabular
Foundations

Tokens

The values that build everything. Spacing follows an 8px rhythm; radii step from controls to cards to heroes; motion stays calm and consistent.

Radius & spacing

--tw-r-sm8pxchips, small controls
--tw-r-md12pxbuttons, inputs
--tw-r-lg16pxcards
--tw-r-xl22pxhero panels
spacing8px base4 / 8 / 16 / 24 / 32 / 48

Elevation & motion

--tw-shadow-sm0 1px 2px /6%resting cards
--tw-shadow-md0 6px 24px /10%popovers, hover
micro180ms easeinteractions
page320ms ease-outtransitions
focus ring3px /14%forest, all inputs
Foundations

Iconography

Line icons, 1.7px stroke, rounded joins. Outdoor and physiological metaphors over generic UI glyphs where it makes sense. One set, one weight.

ridgeline
route
heart rate
24/7
readiness
sync
injury-safe
Components

Buttons

One primary action per view, set in forest. Alpenglow buttons are for the single highest-intent moment only. Ghost and quiet buttons carry everything secondary.

states:· rest· hover· focus 3px ring· disabled 0.4
Components

Chips & badges

Mono, uppercase, tracked. Brand chips are cream; status uses a dot plus colour so meaning never rests on colour alone.

Injury-safeWearable-agnosticLiveOn planGarmin · Polar · Coros · Whoop
Components

Forms

Labels are always visible, set in mono above the field. Helper text is persistent. Focus is a soft forest ring. Inputs are never below 44px tall on touch.

We anchor your whole plan to this date.
Plans degrade gracefully around real life.
One tap, every morning. This is how the coach adapts today's session before you head out.
Components

Data & telemetry

Where the instrument language lives inside the calmer shell. Numbers are mono and tabular so columns never shift. Metric cards, telemetry grids and tables share one language.

Metric cards

Readiness86rested, good to go
Weekly load · 7d312ACWR 1.1, balanced
Risk flags0all clear

Telemetry block

Pace
4:52
HR zone
Z2
Cadence
178
Elevation
+340
Sleep
7:12
HRV
62

Trend chart

FitnessFatigue

Data table

SessionTypeDistanceAvg paceLoad
MonEasy8.0 km5:3844
WedIntervals10.2 km4:2192
SatLong24.0 km5:55176
Components

Alerts & coaching notes

The coach speaks in plain language and always gives the why. Notes are warm cream by default; the accent variant is reserved for the rare moment that needs attention.

Today is easy on purpose. Your sleep dipped last night, so we softened the session. Same goal, gentler road.
Load is climbing fast. Three hard days in a row. We are holding tomorrow back to keep your shins happy.
You are ready. Everything points green for Saturday's effort. Trust the work you have banked.
Patterns

Video hero

The flagship hero. Full-bleed trail footage carries the outdoor feel; a forest scrim keeps copy legible without dimming the footage, heaviest behind the text and fading to transparent on the right. Footage is the moment, not a backdrop.

Your 24/7 running coach
Run wiser.
Stay unbroken.

A coach that adapts every day. Bring any wearable, keep your whole story in one place.

Scrim recipe

layer 1100deg, forest-900 .62 → 0, left to right
layer 20deg, forest-900 .30 → 0, anchors the base
textshadow 0 2px 18px /.55
accentone accent word only, in alpenglow

Rules

  • Video is muted, looped, autoplay, playsinline, with a poster fallback.
  • Reduced-motion: hide the video, show the poster still.
  • No line motif or texture over footage. Keep it clean.
  • Header stays a solid paper bar so nav and the CTA read clearly.
Patterns

Motion

Fluid and in the reader's control, never decorative. Media holds while content moves through it, reveals stay calm, and the one signature is the trail rail: a logo-shaped switchback that climbs as you scroll, summiting at 4,808 m (Mont Blanc), a quiet nod to the UTMB. Everything degrades cleanly under reduced-motion.

Pin the scene
Media holds while the copy moves through it.
Reveal on enter
One calm 24px rise at 800ms ease-out. Never staggered to death.
Sticky pass
A panel holds while beats of copy scroll beside it.
Counters mean something
Numbers only animate when they encode real progress.

Timing tokens

reveal800msopacity + 24px translateY
easingcubic-bezier(.22,.61,.36,1)calm ease-out everywhere
hero scrubscale 1.02 → 1.14tied to scroll, not time
chart draw1.9sstroke-dashoffset on enter
count-up1.4scubic ease, on enter
reduced-motionrespectedreveals + draws resolve instantly
Brand

Voice

Expert, but plain-spoken. Calm under pressure. We explain the reasoning behind every call, celebrate showing up, and protect people from overdoing it. We are our own thing and never measure ourselves against anyone else.

We sound like
  • “Today is easy on purpose. Here is why.”
  • “You showed up nine days running. That is the real win.”
  • “Bring any watch. Your history lives here for good.”
  • “We held you back today so you can go hard Saturday.”
We never sound like
  • Hype, hustle, or shouting about crushing goals.
  • Jargon walls with no plain-language why.
  • Comparisons to other apps or coaches.
  • Generic AI filler. Every line earns its place.
Brand

Do & don't

Do
  • Let forest and cream carry the page.
  • Use alpenglow for one thing per view.
  • Set every metric in mono, tabular figures.
  • Keep generous whitespace and a calm rhythm.
  • Explain the why in plain language.
Don't
  • Flood screens with orange.
  • Use italics for emphasis (use colour).
  • Add a second display typeface.
  • Use emoji as interface icons.
  • Use em dashes in any copy.
Brand

Downloads

The full guidelines as a PDF, and a brand kit with the logo, the lettermark, icons and the Trailly avatar.