Skip to content

The Kwapso design language

Work,
structured.

Every value measured off the live site — not invented, not approximated. A design language you can drop onto an existing app in one line.

What the site actually does

Restraint, counted.

0

box-shadows across 5,142px

1

accent, per view

3

curves in the system

2

weights. no bold

Four decisions

Everything else follows from these.


01

It is flat

kwapso.com uses zero box-shadows across its entire length. Not subtle ones — none. A card is sand on paper, and that colour step is the elevation. Only a genuinely detached surface — a modal, a popover — may opt out, and every use is counted by the linter.


02

One accent, held back

Mango means “this is the next action.” Across a five-thousand-pixel page it appears on eleven filled elements. Used twice on a view it stops being an instruction and becomes a colour. This is the rule people most want to break and the one that matters most.


03

Two faces, two weights

A condensed serif for statements, set at 0.8 line-height — the line box smaller than the type. A grotesk at 300 and 500 for everything else. There is no bold.


04

Tracking opens, not tightens

Headings carry +0.5px. Nearly every system of the last decade tightens heading tracking. This one opens it — which is why the brand reads deliberate rather than urgent.


In use

Four real screens, built only from the language.

Nothing below is a mockup or an image. Every screen is live HTML using the same classes you get on install — which is the only demonstration that actually proves anything.

01 — Marketing page · comfortable density

kwapso.com/services

Process audit & design

From chaos to full overview.

We map how work actually moves through your business, price the bottlenecks, and hand you a roadmap in priority order.

01Full operational process map
02Bottleneck cost calculation
03Prioritised action roadmap

02 — Operations dashboard · compact density

app.kwapso.com/operations

Operations

Week 34 · updated 8 minutes ago

68Operational health↑ 6 this month
41.75Hours / week manual↓ 3.2
7Active processes
3Blocked
ProcessOwnerStatusHrs / wkAutomatable
Quote to orderSalesBlocked21.2582%
Invoice approvalFinanceIn review12.5064%
OnboardingPeopleLive8.0045%
Supplier intakeOpsDraft4.7530%

03 — Assistant · compact density

app.kwapso.com/assistant
Where is our biggest bottleneck?
Quote-to-order, and it isn't close. It costs 21.25 hours a week across three people against 12.5 for invoice approval.1 The delay is manual re-keying between the CRM and the order sheet — about 82% of it is automatable.
Just now

04 — Scorecard, one question at a time · mobile

Question 12 of 30 Processes

When someone new joins, is there a written process to follow?

Type

Two faces. Two weights. No bold.

Serrif Condensed Light · display only

line-height 0.8 — negative leading

Make work
visible.

ABCDEFGHIJKLMNOPQRSTUVWXYZ 1234567890

Saans · 300 and 500

+0.5px tracking on headings

Structure you can see, data you can trust, and a team that works from one system instead of ten.

The scale

The repo ships no font files.

Saans and Serrif Condensed are licensed typefaces. This page loads a local copy that is gitignored and never published; consuming apps self-host their own. Without them the language falls back to an open stack that keeps the proportions but not the letterforms.

Colour

Ink and paper carry every screen.

Mango is the single accent. Sky, forest and poppy are marks — a dot, a series, a rule down the side of an alert. None of them is ever a section background.

30 pairings verified against WCAG 2.1, both themes, on every run.

The first run failed 12 of them — including one where the value's own documented ratio was wrong. Two tokens exist purely to make meaning safe: sky-deep for the informational role (brand sky is 1.99:1 on paper, invisible as a status mark), and the stroke rule, which outlines every chart mark so the boundary carries what a pale fill cannot. Deliberate exemptions print their reason on every run, so they must be re-argued rather than inherited.

Parts

Nearly two hundred, framework-free.

A sample below. The full gallery lives on Components, whole-screen scaffolds on Screens, and the waiting vocabulary on Loaders & states.

Buttons

44px · 24px padding · pill · 500 · 0.2s cubic-bezier(.645,.045,.355,1)

Marks

Featured Draft Archived Live Blocked Workflow AK

Colour never carries meaning alone — every dot ships with its label.

Form

As it appears on your invoices.

Navigation & disclosure

  1. Audit
  2. 2Design
  3. 3Build
Who or what is kwapso?
The operational partner for established, owner-led businesses in the DACH region.
How long does the scorecard take?
About five minutes — thirty questions from your everyday work.

Scale · the scorecard's core interaction

Feedback

Your process map is ready to review.
Three processes have no owner assigned.
Operational health68/100

Motion

Alive, without decoration.

Gradients, glow, drift and bounce are the usual answer to “make it feel alive”, and all four are forbidden here. So life comes from four other places — each under 400ms, each using one of only two easings, and all of it gone entirely under prefers-reduced-motion.

01 — arrival & stagger

A list arrives in sequence, 45ms apart
Quote to order21.25
Invoice approval12.50
Onboarding8.00
Supplier intake4.75

Capped at eight items — past that the last row arrives late enough to feel broken rather than choreographed.

02 — continuity: figures count, bars travel

The eye follows a change it can watch happen
68Operational health
41.75Hours / week manual
Automatable82%

03 — selection carries the relationship

The thumb travels between options, so the two read as one control

04 — response: the press, on the down stroke

Press and hold. Touch UI feels dead almost entirely because nothing answers the finger before the network does.
A whole card responds too.
What was deliberately not taken from the reference.

Gradients, glow, saturated multi-colour panels and bouncy overshoot all read as “alive” at a glance, and every one of them contradicts a rule this language is built on. The floating tab bar and the card rhythm came across; the decoration did not.

Cognitive load

Most systems ship taste. Taste loses to a deadline.

So the budgets are counted by the build. They live in tokens.json, which makes them versioned and arguable in a pull request rather than buried in a script.

RuleBudgetWhy
accent-budget1A second mango makes both mean “something”.
type-scale3Every size added is another thing the eye must rank.
grouping7Past seven, a list stops being scanned and starts being searched.
flatness2Only detached overlays may cast a shadow.
motion-budget400msBeyond this, motion reads as a wait, not feedback.
touch-target44pxThe brand's control height and the WCAG floor agree.
hardcoded-value0A literal colour cannot be re-themed or dark-moded.
colour-only-meaning0Colour alone is invisible to about one man in twelve.

Building this page, the grouping rule caught an eight-item sidebar and the flatness rule caught a regex bug that was silently passing every shadow. Both were real.

Adopt

Three doors. Take as much as you want.

01

Reskin, one line

Semantic HTML is styled for you. No markup changes, no build step, no framework. This is the Webflow path too.

02

Tokens only

Map the variables onto components you already have. CSS, SCSS, typed JS, Tailwind preset, or Figma.

03

React

Components that render exactly the same class names — one implementation, two front doors, so they cannot drift.

<link rel="stylesheet" href="structure.css">
<body data-density="comfortable">   <!-- or "compact" for app screens -->