Mahindra Finance · Design System

Rise

A centralised library of reusable components, tokens, patterns and standards — so teams ship consistent, scalable experiences without rebuilding the basics.

“Our purpose is to drive positive change in the lives of our communities. Only when we enable others to rise, will we rise.”

The idea the system is named for
0Colour tokens
0Palette families
0Type styles
0Typefaces
The problem

Every screen started from zero

Before Rise there was no design system. Every button, every field, every spacing decision was rebuilt by hand on each new screen — which meant no visual consistency across products, and no shared vocabulary between design and engineering.

The real cost wasn't the redrawing. It was attention. Time spent re-deciding what a secondary button looks like is time not spent on the complex problems that actually needed designers. Rise was built to take those decisions off the table permanently — to increase speed and consistency, and hand the team back its focus.

Token architecture

Three tiers, one source of truth

Rise separates what a colour is from what a colour means. A raw palette sits at the bottom, a semantic layer names intent in the middle, and components only ever consume the top. Rebrand the middle layer and every screen follows — nothing downstream is touched.

Raw values

Root palette

The raw values. Named for what they look like, never for where they're used.

CRT/Barn Red/$barn red 6
→ #691A1E
Intent

Core alias

Intent. Roles like Primary and CTA point at root values — this is the swap layer.

Token Core/Primary/P-6
→ $barn red 6
Usage

Component

Components bind to roles only. No component ever references a hex directly.

Button/button-primary
→ Primary/P-6
Why three tiers and not two

States get the same treatment — button-primary, -hover, -active. Interaction feedback becomes a property of the system rather than a decision re-made on every screen.

Foundations

Colour

Two brand ramps carry the identity; four extended families carry meaning and warmth across cards, states and illustration. Click any swatch to copy its hex.

Barn Red — Primary

CRT/Barn Red

Rising Red — Secondary

CRT/Rising Red

Grass

CRT/Grass

Sky

CRT/Sky

Flower

CRT/Flower

Bird

CRT/Bird

Neutral

CRT/Neutral Color

Dark palette

CRT/Dark Palette
Foundations

Semantic tokens

Status colour is paired, not single: a RAG value for the signal itself and a surface for the container it sits in. Pairing them at token level means a success message can never be assembled from a mismatched green.

Success
rag#238823
surface#DCEEED
Warning
rag#E68600
surface#FFF5E8
Error
rag#9A0D00
surface#EDE0E3
Info
default#0F62FE
surface#E3EFFB
Open issue — RAG values aren't text-safe on their own surfaces

Three of the four pairings fail AA when the RAG value is used as label text on its paired surface: Success 3.79:1, Warning 2.51:1, Info 4.29:1. Only Error clears it, at 6.73:1. The badges on this page therefore darken the label while keeping the token surface intact. The system needs a third value per status — an -on-surface text token — rather than reusing the RAG signal for two different jobs.

Foundations

Typography

A two-typeface split with a clear division of labour: Quicksand carries voice, Karla carries information. Every style below is live text at its specified size, weight and leading — not an image of type.

Aa
Display · Headline · Title
Quicksand

Rounded geometric terminals keep large type approachable — the warmth in a category that usually reads cold.

Aa
Body
Karla

A grotesque with tall x-height and open apertures, built to stay legible at 11–16px on dense financial screens.

Display

Quicksand
Only when we enable others to rise
Display 1Semibold · 57/64 · +0.25
Only when we enable others to rise
Display 2Semibold · 45/52 · 0
Only when we enable others to rise
Display 3Regular · 36/44 · 0

Headline

Quicksand
Drive positive change in our communities
Headline 1Semibold · 32/40 · 0
Drive positive change in our communities
Headline 2Semibold · 28/36 · 0
Drive positive change in our communities
Headline 3Medium · 24/30 · 0

Title

Quicksand
Loan against property
Title 1Semibold · 22/28 · 0
Loan against property
Title 2Semibold · 16/24 · 0
Loan against property
Title 3Semibold · 14/20 · 0
Library

Components

Every element below is built from the tokens above — no hardcoded values. They're interactive: hover, focus and press to see the state tokens resolve.

Button — primary & secondaryButton/button-primary
Button — dangerButton/button-danger-primary
Badge — statusBadge/*
Approved Under review Rejected Processing
Text field — statesAtoms/Input
As printed on your PAN card0/10
Resting · underline barn red 4
Type to see the counter fill0/16
Filled · label floats to 12/16
Exceeds the sanctioned limit0/7
Error · error rag throughout
Fixed for this product
Disabled · dropdown
Tabs — segmentedBuilding Blocks/Tab Single Unit
Patterns

Surfaces & overlays

The four extended families exist to make dense product screens navigable — a category gets a surface, and users learn the mapping without reading a label.

SkyAccounts & balances
BirdOffers & rewards
FlowerAlerts & attention
GrassCompleted & secure
Overlay — scrim tokensOverlay/*
mobile · 40%
web · 50%
Foundations

Illustration

A single hand-drawn line style, always in Barn Red, set on one of the four tinted surfaces. Keeping illustration to one weight and one colour means it reads as part of the interface rather than decoration dropped on top of it.

Line illustration — a folder of documents
DocumentsFolder · records & filing
Line illustration — a notepad and pen
ApplicationNotepad · forms & entry
Line illustration — a tractor
Farm equipmentTractor · rural lending
One hand

Every asset is drawn with the same loose, slightly imperfect stroke — closer to a sketch than a vector icon.

One colour

Barn Red only, line and fill alike. Never recoloured per product — the surface underneath does the categorising.

Held on a tint

Always placed on a soft surface, never pure white, so the line keeps its weight against the page.

Foundations

Accessibility

Contrast was measured across the palette rather than assumed. The results set real usage rules — a few values are deliberately restricted to surfaces and large type.

PairingRatioWCAG AARule
Barn Red 6 on White11.88:1PassHeadings & body
Barn Red 6 on Bird11.02:1PassText on tinted cards
Barn Red 5 on White7.74:1PassHeadings & body
Error RAG on Error surface6.73:1PassLabel text
Rising Red 6 on White4.72:1Pass, tightAccent & ≥16px only
Barn Red 4 on White4.69:1Pass, tightSecondary text ≥16px
Info on Info surface4.29:1FailNeeds -on-surface token
Success RAG on Success surface3.79:1FailNeeds -on-surface token
Barn Red 1–3 on White1.28–2.82:1FailSurfaces & borders only
Warning RAG on Warning surface2.51:1FailNeeds -on-surface token
Tag copy on Dark 71.95:1FailOpen — see note
Known gap — dark mode is partial

The dark mode currently overrides 3 of 76 tokens: body copy, display/heading, and Rising Red 6. Surfaces, neutrals and semantic tokens still resolve to their light values, and tag copy is mode-independent — so it drops to 1.95:1 on a dark surface. Dark Palette 1–7 exists and is the intended fix; it just isn't aliased into the mode yet. Documenting it beats shipping it quietly.

Impact

What changed

40%

Reduction in design–development cycle time, measured across handoff to build.

1×

Every colour and type decision made once, at token level, instead of per screen.

0

Hardcoded values in component definitions — rebrands propagate from the alias layer.

The number worth caring about isn't the 40%. It's what the 40% freed up — designers arguing about lending logic and edge cases instead of button radii.

← Back to portfolio Rise · Mahindra Finance · Sep 2024 — Present
Copied