Lumasis case study cover — gradient wordmark and glass track UI on dark background
Company
Glydways
Project
Lumasis Design System
Role
Principal Designer
Scope
Color
Material
Depth
Token Architecture
Products
Live Activities
Operations Command & Control
Vehicle Software
Kiosk / VMS
Year
2026
Problem
Transit environments are high-stress, high-motion, and multilingual. Riders and operators need information that's immediately legible and behaviorally consistent, especially during disruptions.
Goal
Build a system that doesn't just standardize UI—it calmly guides people through complex environments and makes advanced autonomy easier to understand across product, operations, and storytelling.
Core Thesis

Lumasis is the design system for an autonomous transit network, where the same value has to hold in daylight and after dark, on a vehicle, a platform, a kiosk, and in the control room. Every token states its own value, so the color a rider reads is the one an operator reads.

Six views of the Lumasis system — the guideway track and Build control, the Blue Haven to Nova Purple light ramp, a live route comparison against ride share and bus, the vehicle software mark, the cabin mood and climate controls under construction in Figma, and an arrival Live Activity on iPhone.
Parameters

Type and pictograms came from Metro fixed, and stayed fixed, so they read the same on every surface. Color could not, because every surface runs in daylight and after dark and the same value has to hold through both. So color is the only parameter given a parametric build: light is that color read through glass, material is the glass, depth is opacity. The values themselves come next, each pair with the number it is checked on.

Color
Light
Glass
Frosted
Dark
Tinted
Prismatic
Opacities
Refractions
Depth
.05
.11
.19
.28
.40
SwatchFamilyColorLightΔLToken architecture
Bronzehue 34°#93744Bhsl(34, 32%, 44%)#3E2E1Ahsl(33, 41%, 17%)−27--lum-bronze44 / 17
Amberhue 34°#ECA74Ahsl(34, 81%, 61%)#AA6405hsl(35, 94%, 34%)−27--lum-amber61 / 34
Tealhue 168°#33A68Fhsl(168, 53%, 43%)#044E41hsl(169, 90%, 16%)−27--lum-teal43 / 16
Azurehue 198°#2C81A5hsl(198, 58%, 41%)#12465Dhsl(198, 68%, 22%)−19--lum-azure41 / 22
Bluehue 221°#2D64DDhsl(221, 72%, 52%)#142B5Chsl(221, 64%, 22%)−30--lum-blue52 / 22
Indigohue 241°#4A49A9hsl(241, 40%, 47%)#292861hsl(241, 42%, 27%)−20--lum-indigo47 / 27
Violethue 288°#793989hsl(288, 41%, 38%)#401E48hsl(289, 41%, 20%)−18--lum-violet38 / 20
Magentahue 328°#AE3375hsl(328, 55%, 44%)#471222hsl(342, 60%, 17%)−27--lum-magenta44 / 17
Emberhue 10°#C44E37hsl(10, 56%, 49%)#65120Ehsl(3, 76%, 23%)−26--lum-ember49 / 23
SurfaceGlass & DepthValueCompositionToken architecture
Frostedlayer 03 · glassrgba(255,255,255,.045)blur 22px--lum-glass-frosted
Darklayer 03 · glassrgba(0,0,0,.44)blur 22px--lum-glass-dark
Tintedlayer 03 · glassrgba(79,73,169,.30)blur 22px · takes the family--lum-glass-tinted
Prismaticlayer 03 · glasslinear-gradient(122deg)magenta · blue · teal at .20--lum-glass-prismatic
Opacitieslayer 03 · glass.05 / .11 / .19 / .28 / .40five steps--lum-glass-opacity-scale
Refractionlayer 03 · glasslinear-gradient(100deg).04 · .22 · .04--lum-glass-refraction
Level 1layer 04 · depthrgba(255,255,255,.05)step 1 of 5--lum-depth-1
Level 2layer 04 · depthrgba(255,255,255,.11)step 2 of 5--lum-depth-2
Level 3layer 04 · depthrgba(255,255,255,.19)step 3 of 5--lum-depth-3
Level 4layer 04 · depthrgba(255,255,255,.28)step 4 of 5--lum-depth-4
Level 5layer 04 · depthrgba(255,255,255,.40)step 5 of 5--lum-depth-5

Token names are derived, not assigned. The stem is the family and the step is the HSL lightness, so --lum-blue-52 states its own value and two designers naming the same swatch independently arrive at the same token. The swatch is the stack from the diagram above, seen edge-on and in the same order: 01 color at the base, 02 light, 03 the glass ground, 04 depth. Color is the flat, brightest shade the Metro standard hands down; light is that color seen through refractive glass at 34%. Bands 02 and 03 carry no visible seam because they are one value reached two ways — 02 painted from the stored hex, 03 composited live in the browser — and that agreement is the premise, drawn rather than asserted. The application is subtractive: the surface is dark, so glass takes lightness away and the delta runs negative. ΔL is the number the pair is checked on, 18 to 30 points in every family, and that band is also what clears AA. Depth is carried by opacity alone — .05 · .11 · .19 · .28 · .40, against a blur that does not change. Every translucent value here composites over the page ground, #0E0E0E, and never over the plate it sits on, so a token reads the same here as it does in the figure. Blur belongs to motion, where it measures the gap between a moving object and the trail it leaves.

Token Architecture
Token Architecture

The plate lists the values; the stack says what derives from what. Four parameters, one object: the core is the only value anyone chooses, and everything above it is derived from that value or applied over it.

  1. 04 Depth
  2. 03 Glass
  3. 02 Light
  4. 01 Color
Color
Glass
Depth

Read from the bottom. Color is the value Metro hands down; light is that color once the glass sits over it, which on a dark surface lands darker — hence the negative delta. Every parameter is picked rather than dragged: nine families, four grounds, five depths, and nothing in between any two of them. The grounds are ordered by density rather than by name — .045, .20, .30, .44 — so both material rows run the same direction and the surface gets heavier toward the right. Only Tinted takes its cast from the family; the other three are fixed materials, so stepping the color moves one ground and leaves the rest where they are. Every value shown is a shipped token.

Color & Light

One family read at two levels. Color is the flat, brightest shade the Metro standard hands down; light is that same color through glass at 34% — subtractive, so on a dark surface it lands darker.

Rejected

A parallel palette for dark surfaces. Doubles the token count and lets the two drift apart.

Consequence

ΔL is the number the pair is checked on: 18 to 30 points in every family, which is also the band that clears AA.

Depth

Screens stack — a sheet over a panel over the ground — and something has to say which one is nearer. Here that is a single number: opacity, five steps, .05 → .40. The blur behind it never changes.

Rejected

A parallel blur ladder stepping down as priority rises. Two properties expressing one idea, disagreeing at the edges.

Consequence

Depth is a single number an engineer can read off a token, and blur became a function of velocity rather than a decoration.

Nomenclature

Token names come from the value itself — the family from where the hue sits, the step from the lightness. Two designers naming the same swatch independently arrive at --lum-blue-52.

Rejected

A curated semantic vocabulary. Readable on day one, contested by month three.

Consequence

Naming stops being a review topic. The token is checkable against its own value.

Accessibility
Contrast

A dark theme with glowing accents has to clear WCAG AA[1] on every primary text and control; each applied value sits 18 to 30 points of lightness above its core.

Glass

Frosted, Dark, Tinted, and Prismatic all carry text at the same lightness-lifted values, so contrast doesn't reset depending on which surface a control lands on.

Material : Glass

Glass is the one material Lumasis does not define on its own terms. It is authored as a Figma tool built on Apple’s Human Interface Guidelines[2], with refraction, depth, dispersion, frost and splay carried as named values rather than approximated by eye, so a designer specifies glass the way the platform specifies it. That is what lets the same pill render on the Dynamic Island and the Lock Screen without being rebuilt for either.

Pill token architecture

{
  "pill": {
    "bg": {
      "default":  { "value": "{color.surface.1}" },
      "hover":    { "value": "{color.surface.2}" },
      "pressed":  { "value": "rgba(255,255,255,0.08)" },
      "disabled": { "value": "rgba(255,255,255,0.03)" }
    },
    "text": {
      "default":  { "value": "{color.ink.primary}" },
      "disabled": { "value": "rgba(255,255,255,0.35)" }
    },
    "radius": { "value": "{radius.pill}" },
    "height": { "value": "{size.pillHeightMd}" },
    "stroke": {
      "width": { "value": "{stroke.hairline}" },
      "color": { "value": "rgba(255,255,255,0.14)" }
    },
    "glass": {
      "blur":                  { "value": "{blur.glassMd}" },
      "specularOpacity":       { "value": 0.55 },
      "innerHighlightOpacity": { "value": 0.18 },
      "chromaticShift":        { "value": "0.6px" }
    }
  }
}
The glass material authored as a Figma tool — refraction, depth, dispersion, frost, and splay carried as named values in the effects panel rather than approximated by eye.
Live Activities

Everything to this point holds on screens Glydways controls. The arrival follows the rider across the Dynamic Island, the Lock Screen, and StandBy[2], so one activity has to hold from a compact pill to a full screen. The track, the position on it, and the time never drop, and the route’s gradient carries the line identity at every size. That is one rider reading one vehicle; the control room reads two hundred at once.

Live Activities plate — Dynamic Island compact, expanded, and minimal presentations above a full-screen arrival and three route activities, each with its own gradient.
Operations Command & Control

An operator watches two hundred vehicles move across three circuit maps. The field carries position and nothing else; everything the vehicle reports, and everything the system infers about it, opens in a window when the operator interrogates a dot. Status encoded into the dots themselves was rejected — legible at five vehicles, unreadable at two hundred.

Components
Operations control center components with a color token swatch row above vehicle status list, alerts icons, and a monitoring terminal.
The Outcome
A rider on a platform can tell what the vehicle is about to do, and an operator watching two hundred in motion can tell which one needs attention. Both are reading the same tokens at the same lightness thresholds. Nothing was translated for either of them, which is the whole of it — a value that names itself does not need an interpreter on the way to a screen.
A living system where light flows through — a refuge of clarity in complexity, over an image of an autonomous transit vehicle in a neon-lit tunnelDark glass material reference: opacity and refraction swatchesLumasis design system detail from FigmaLumasis design system detail, secondary view from Figma
A living system where light flows through — a refuge of clarity in complexity, over an image of an autonomous transit vehicle in a neon-lit tunnelDark glass material reference: opacity and refraction swatchesLumasis design system detail from FigmaLumasis design system detail, secondary view from Figma
Related Work
Lumasis design system coverGlydways Brand Guidelines cover