Skip to content

One stylesheet for the website and the product.

This page shows every token and every component in the file dist/levelwork.css, in every state, on black and on cream. It links that one file and nothing else. If something looks wrong here, it is wrong in the system.

The look is not new. It is what the current website and the current product pages do, written down once. Where pages disagreed, one variant was picked. Each such choice is listed in docs/decisions.md, so it can be overruled.

Websitetaken from the live site Producttaken from the product pages Newon no current page, drawn to match, needs a verdict

The button top right switches the whole page between black and cream. Components are also shown on both grounds side by side.

01Brand

The frame is the role as designed. The bar is the role as lived.

The bar starts inside the frame and breaks out on the right. The part that breaks out is the part nobody wrote down, and it is the only element in colour.

Every logo file on its ground

Eight SVG files ship in dist/logos/. The wordmark is converted to outlines, so no font is needed.

Levelwork lockup, colour, on cream
Lockup, colour
levelwork-lockup.svg · for white, cream and other light grounds
Levelwork lockup, colour, on black
Lockup, colour, dark ground
levelwork-lockup-dark.svg · for black and other dark grounds
Levelwork lockup, one colour black, on white
Lockup, one colour, black
levelwork-lockup-mono-black.svg · pure black #000000, for one-colour print
Levelwork lockup, one colour cream, on ink
Lockup, one colour, cream
levelwork-lockup-mono-cream.svg · Cream #EDEAE2, not white
Levelwork mark, colour, on cream
Mark, colour
levelwork-mark.svg
Levelwork mark, colour, on black
Mark, dark ground
levelwork-mark-dark.svg
Levelwork mark, one colour black
Mark, black
levelwork-mark-mono-black.svg
Levelwork mark, one colour cream
Mark, cream
levelwork-mark-mono-cream.svg

The inline mark

In a header the mark is inline SVG with the class .mark. Frame and bar take the text colour and flip with the ground. The short bar is always the brand accent. Next to it the name is set as a mono label, not as the kit wordmark.

Levelwork .nav__brand › .mark · 26px
Constat by Levelwork .mark.mark--sm · 20px

Clear space

At least one mark height on all four sides, for the mark and for the lockup. The dashed line is that distance.

Mark 64px high, 64px of space around it.

Minimum size

On screen the mark is never smaller than 16px and the lockup never narrower than 120px. In print: 8 mm and 30 mm.

Levelwork mark at 16 pixels Mark · 16px
Levelwork lockup at 120 pixels Lockup · 120px

Do not

Six ways to break the logo. Four of them need an inline style to do it. Apart from the lengths set on bars, those are the only inline styles on this page.

Do not recolour it or any part of it.
Do not rotate it.
Do not stretch or compress it.
Do not add a shadow, a glow, an outline or a gradient.
Do not put a light-ground file on a dark ground. It disappears.
Constat · Loop · Pricing
Do not set it below the minimum size or crowd its clear space.
02Colour

Black, cream and one orange. Everything else is a step between them.

Three brand colours come from the logo kit: Ink, Cream and Accent. The ramps below hold the values the pages already use around them. Each swatch prints the value the browser resolved, so the page cannot disagree with the stylesheet.

Ink ramp

Grounds, surfaces and lines on dark, text on cream. Utilities: bg-ink-700, text-ink-300, border-ink-600. Variables: var(--color-ink-700).

black

Dark ground

ink-900

Surface on dark, field ground

ink-800

Second surface on dark, bar tracks

ink-700 · Ink

Brand Ink. Text on cream, the mark

ink-600

Hairline on dark

ink-500

Field border on dark

ink-400

Secondary text on cream

ink-300

Muted text on cream

ink-200

Muted text on dark

ink-100

Secondary text on dark

Cream ramp

The light ground and its two surfaces. White is used for input fields on cream and nowhere else.

white

Field ground on cream

cream-100 · Cream

Brand Cream. Light ground, text on dark

cream-200

Surface on cream

cream-300

Second surface on cream, bar tracks

Accent ramp

The brand orange is 500. 400 and 600 are its hover and pressed steps. 600 and 700 exist because the brand orange on cream has a contrast of 2.77 to 1 and cannot carry text there.

accent-300

Reserve: accent text on a dark tint

accent-400

Hover of the primary button

accent-500 · Accent

Brand Accent. Button, bars, dots, the mark

accent-600

Pressed. Large accent text and focus ring on cream

accent-700

Small accent text on cream

accent-900

Resting underline of the mail link

Status colours

New

The current pages have no error colour. Orange means brand, action, selected, success and critical at once. These three pairs are proposed for errors, confirmations and warnings only. The 700 step is for cream, the 300 step for black.

danger-700

Error on cream

danger-300

Error on dark

success-700

Confirmation on cream

success-300

Confirmation on dark

warning-700

Warning on cream

warning-300

Warning on dark

Roles

Components never name a ramp step. They name a role, and the role points at a different step on each ground. Utilities: bg-surface, text-muted, border-line. Variables: var(--lw-surface).

ground

Page and band ground

surface

Raised cards, panels, the answer block

surface-2

Bar tracks, badges

field

Input ground

text

Running text, headlines

text-2

Secondary text

muted

Labels, captions, help

line

Hairlines, card borders

line-strong

Field and tag borders

accent

Fills: button, bar, dot

accent-strong

Large accent text, icons, accent borders

accent-text

Small accent text, links

accent-tint

Fill of accent boxes, 5 %

focus

Focus ring

danger

Errors

success

Confirmations

warning

Warnings

Text and ground pairs

Every pair the system offers for text, with the contrast ratio measured in this browser from the rendered colours. WCAG AA asks for 4.5 to 1 for text and 3 to 1 for large text (24px and up) and for graphic parts.

Text on ground
Text on surface
Text on surface-2
Text on field
Secondary text on ground
Secondary text on surface
Muted on ground
Muted on surface
Muted on surface-2
Muted on field (placeholder)
Accent text on ground
Accent text on surface
Accent text on accent tint
Accent strong on ground, large text only
Button label on accent
Button label on hover
Button label, pressed
Solid tag: ground on text
Danger on ground
Danger on surface
Success on ground
Success on surface
Warning on ground
Warning on surface

Not offered as text: the brand orange (accent) on cream, 2.77 to 1. On cream it fills buttons, bars and dots only. Hairlines and field borders are below 3 to 1 on both grounds by design of the look; see Open points.

03Typography

Two typefaces, two weights, no bold and no italic.

Space Grotesk carries headlines, figures, quotes and product text. Fragment Mono carries labels and, on the website, running text. Both are served from dist/fonts/. Emphasis is a change of colour, never of weight or slant, because neither file has a bold or an italic.

Space Grotesk

font-display · var(--font-display) · one variable file, weights 300 to 500 · in use: 300 and 400

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 ÄÖÜ äöü ß é è ñ ç
. , : ; ! ? “ ” ‘ ’ ( ) [ ] / & @ % € § → · –

Light 300. Every role exists twice: on paper, and in reality.

Regular 400. Every role exists twice: on paper, and in reality.

Fragment Mono

font-mono · var(--font-mono) · one weight, 400

ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
0123456789 ÄÖÜ äöü ß é è ñ ç
. , : ; ! ? “ ” ‘ ’ ( ) [ ] / & @ % € § → · –

Regular 400. No evidence, no finding.

Regular 400, as a label. No evidence, no finding.

Headings and display

Sizes are fluid: the token is a clamp, and the line under each sample prints what it resolves to at this window width. A heading tag has no size of its own. Pick the tag for the outline and the class for the look.

.displayWebsiteSpace Grotesk 400 · clamp(42px, 11vw, 124px) · line 0.98 · tracking 0.055em · the wordmark size, capitals typed

CONSTAT

.h1WebsiteSpace Grotesk 400 · clamp(34px, 6vw, 64px) · line 1.04 · tracking -0.02em · page headline

Evidence for how organizations really work.

.h2WebsiteSpace Grotesk 400 · clamp(30px, 5.2vw, 58px) · line 1.04 · tracking -0.02em · section headline

Establish the picture. Then keep it true.

.h3WebsiteSpace Grotesk 400 · clamp(20px, 2.4vw, 27px) · line 1.18 · tracking -0.02em · sub headline

A deviation is not a verdict. It's a finding.

.h4ProductSpace Grotesk 400 · 16px · line 1.3 · card and finding headline

Coordination between sales and service has no owner on paper.

.claimWebsiteSpace Grotesk 400 · clamp(23px, 3.6vw, 42px) · line 1.14 · max 20ch · the sentence under the wordmark

A finding that changes nothing was just a well-written report.

.quoteWebsiteSpace Grotesk 300 · clamp(21px, 3.1vw, 34px) · line 1.26 · tracking -0.015em · max 24ch · quotation marks typed
“You cannot put an assessment in front of someone with forty years in the house and four months to go. You can only come with curiosity.”A managing director, in the first conversation

Text styles

.leadWebsiteFragment Mono 400 · 13.5px · line 1.72 · muted · max 64ch · the website lead: body text in muted, not larger

Two products, one arc. The first tells you where you actually stand. The second keeps that answer from going stale.

.lead-sansProductSpace Grotesk 300 · clamp(17px, 2.1vw, 22px) · line 1.42 · max 56ch · the larger lead of the product landing page

Two products, one arc. The first tells you where you actually stand. The second keeps that answer from going stale.

.bodyWebsiteFragment Mono 400 · 13.5px · line 1.72 · running text on the website

Org charts, role descriptions, job profiles. Written at one moment, then filed. Meanwhile the work moves. Someone quietly takes on the thing nobody else will.

.body.body--mutedWebsiteThe same in muted · most paragraphs on the website

Within two years the document and the work have little left in common. And every decision about people is still made from the document.

.body-sansProductSpace Grotesk 300 · 16px · line 1.5 · running text in the product, also the default of the body element

Think of last week. Which task took the most time that nobody would find in your job description?

.smallWebsiteFragment Mono 400 · 12px · line 1.5 · muted · form notes, help text, values

Or simply write to get@levelwork.ai.

.captionWebsiteFragment Mono 400 · 10.5px · line 1.5 · tracking 0.04em · muted · source notes

Deloitte, A skills-based model for work, 8 September 2022. 1,021 employees and 225 executives across ten countries.

.lblWebsiteFragment Mono 400 · 11px · line 1.5 · tracking 0.14em · capitals · muted · eyebrow, nav, form label, figure caption

Scroll through the week

.lbl.lbl--accentWebsiteThe same in accent text · section numbers, the current item

01 · Available now

.lbl.lbl--smProduct10.5px · tracking 0.12em · keys and small headings inside cards

Signal after 90 days

.codeProductFragment Mono 400 · 12px · breaks anywhere · share links

https://levelwork.ai/m/7f3a-91c2-4be0

.scene-capWebsiteSpace Grotesk 300 · clamp(17px, 2.2vw, 25px) · line 1.25 · tracking -0.015em · max 26ch · the sentence next to a scroll-driven scene · one word may be marked with <b>

Wednesday. The calendar fills with work that is written down nowhere.

And the work the role exists for did not happen. Again.

Links

Every finding stays linked to its source. Hover: its source.

.link · inline text link, underlined
get@levelwork.ai
get@levelwork.ai
.link-display · the mail link that closes a page, at rest and on hover · 21px on a phone, so it takes the small-text orange
See how Constat works
See how Constat works
.link-go · foot of a card, quiet secondary action, at rest and on hover

Prose

Long documents such as the legal notice. Wrap the text in .prose and write plain tags.

Who is responsible for this site

This page explains which data the site processes when you visit it. The site sets no cookies and loads no fonts from a third party. Questions go to get@levelwork.ai.

What the contact form sends

  • Your name and your company, as you typed them.
  • Your e-mail address, so that we can answer.
  • The role you would start with.
Contact
get@levelwork.ai
Place
Konstanz, Germany

Icons

IBM Carbon glyphs, 32 by 32 view box, inline SVG, one colour. Five are in use: clock, arrow, group, chart, building.

.ico · 22px, accent
.ico.ico--muted
.ico.ico--sm · 14px
26 findings
.ico.ico--current · takes the colour of the text around it
04Spacing, radius, shadow, motion

Square, flat and unhurried.

Named spacing steps

The rhythm of a page. These are fluid and replace the fifteen different inline margins on the current website. The orange block is the step at this window width.

gutter
clamp(20px, 5vw, 72px) · Page side padding
section
clamp(64px, 10vw, 132px) · Top and bottom of a section
block
clamp(34px, 5vw, 62px) · Headline to first block
break
clamp(48px, 7vw, 90px) · Before a figure or a second block
stack
18px · Paragraph to paragraph
field
14px · Form field to form field

Numeric scale

Tailwind's scale, one unit is 4px. For gaps and padding between components: gap-4, mt-6, p-3.5.

1 · 4px
2 · 8px
3 · 12px
4 · 16px
5 · 20px
6 · 24px
8 · 32px
10 · 40px
12 · 48px
16 · 64px
20 · 80px
24 · 96px

Widths and breakpoints

TokenValueUsed for
max-w-page1180px.wrap, the page container
max-w-app900px.wrap--app, a report or a form page in the product
max-w-prose74ch.prose, legal text
max-w-lead64ch.lead
max-w-turn60ch.turn, one turn in the interview
max-w-form520px.form
sm:560px and uptwo-column details: four-field grid, marker rows
md:860px and uppage layout: grids, the interview side panel
lg:1180px and upfree for pages, no component uses it

Radius

Cards, boxes, pictures and tables are square. Only controls get 2px. Round is for dots.

rounded-none · 0 · cards, boxes, images
rounded-control · 2px · buttons, fields, chips
rounded-full · dots, the switch

Shadow

The look has no shadows. Depth is a hairline, a fill, or a picture under a gradient. One token exists for a box that stays put while content scrolls under it.

shadow-none · everything
shadow-sticky · .coverage--sticky only

Lines


.rule · 1px hairline between sections

.levelline · the one drawn orange line, fading at both ends

Motion

Two durations and one curve. Things change colour in 180ms. Things that enter or fill take 400ms on the curve cubic-bezier(.2,.8,.3,1). With reduced motion set in the system, all of it stops.

Hover me --duration-fast · 180ms · hover, focus
--duration-scene · 400ms · ease-brand
--animate-spin · 0.9s · --animate-typing · 1.2s

Team coordination

--animate-pop · 350ms · a card that was just captured

The drifting field

.glow · three blurred orange shapes behind a band, 26 to 33 seconds per pass

The drifting field on cream

.band--light › .glow · multiplies instead of screens, 20 % instead of 30 %

05Buttons and chips

One call to action. Black on orange, everywhere.

The website's button has a black label, the product's a white one. White on the brand orange is 3.3 to 1 and fails for an 12px label. The system takes the website's black, 6.31 to 1. The class works on <button> and on <a> alike.

Variants

.btn · primaryWebsite
.btn.btn--secondaryNew
.btn.btn--ghostProduct
.btn.btn--dangerNew
.btn.btn--textWebsite
A link as a buttona.btn · same look, no extra class

Sizes

.btn--sm · 8 × 14 · 11px
.btn · 14 × 22 · 12px
.btn--lg · 16 × 26 · 12px
.btn--block · full width of its container

States

Hover, focus and pressed are pinned here with the helper classes .is-hover, .is-focus and .is-active, so they can be compared without a pointer. Pages never use these classes. Hover, pressed and loading did not exist in the product; pressed and loading did not exist anywhere.

StatePrimarySecondaryGhostDestructive
Default
Hover
Focus
Pressed
Disabled
Loading

Disabled: the disabled attribute, or aria-disabled="true" on a link. Loading: aria-busy="true"; keep the label so the width holds.

Default
Hover
Focus
Pressed
Disabled

.btn.btn--text · hover and pressed are the same accent text; it has no fill that could go darker.

Open the reporta.btn · aria-disabled="true"
Copy the linka.btn.btn--ghost · aria-disabled="true"

A link has no disabled attribute. Set aria-disabled="true" and leave out the href, so the keyboard cannot reach it either.

Chips

Product

A button that stays pressed: role toggles, attribute pickers. Use aria-pressed. Selected is the accent with a black label. The product set it white.

.chip · aria-pressed="true" selects
.segmented › button[aria-pressed] · mode and language switch
Hover turns the label to the text colour. The focus ring sits inside the option, in the text colour, because the frame would clip a ring outside. Disabled is new.

Picker

Product

Choose one from a grid of named options. From the event demo, where a visitor picks the role to be interviewed in. Each cell is a button with aria-pressed.

.picker › button.picker__item › .picker__name + .picker__teaser · selected: aria-pressed="true" · hover is the accent tint
06Form fields

A label above, mono inside, and an error that says what is wrong.

Text field and text area come from the website's contact form. Select, checkbox, radio, switch, help and error text are new: today an error is written into the grey hint line and looks like help.

Field with label, help and error

This is not a complete address. It needs a part after the @.

One role is enough. Sixty minutes with the person who holds it.

Sent. We answer within two working days.

.form › .field › .field__label + .input | .textarea | .select + .field__help | .field__error · .form__note.form__note--ok after sending .form__note.form__note--error · the same line when sending failed, in place of the confirmation

Field states

Focus turns the border accent and doubles it to 2px. The website only changes the 1px border colour.

Text area states

Too short to work with. One full sentence is enough.

.textarea in the same six states as the text field, drawn at the height of .textarea--chat to keep the grid short.

Select states

Choose a size, so the offer fits.

.select has no read-only state, because the attribute does not exist for it. Show a fixed choice as a read-only text field.

Checkbox, radio, switch

New
Who should see the result? .choice › .checkbox
Interview language .choice › .radio

Settings

.choice › .switch · input[role=switch]

Hover darkens the border to the text colour. Invalid turns it to the danger colour and needs an error line under the group, as for a field. The switch has no invalid state.

07Cards, tags, badges

A hairline and square corners.

Cards

a.card.card--link · left: default · right: hover (accent border, 5 % orange fill)

Plain

A hairline and nothing else.

.card.card--compact

Raised

The surface colour as ground. The product's report card.

.card--raised

Accent

For the one thing on a screen that must be seen: a share link, a result that is ready.

.card--accent

Tags and badges

The pages had five looks for a small status marker. Two remain. A tag is an outline label on a thing. A badge is a filled marker for a count or a state.

Unnamed work Gives energy Drains energy Failed Complete Expires soon
.tag · .tag--accent · .tag--solid · .tag--danger · .tag--success · .tag--warning
12 interviews 3 new Draft Report ready Waiting for answers
.badge · .badge--accent · .badge--outline · .badge__dot
As planned Deviation
.legend › .legend__item › .legend__swatch
08Alerts, notices, states

Say what happened and what to do next.

Alerts and notices

New

Only the accent notice has a precedent, the product's info banner. The status versions are new. Each carries a title in words, so colour is never the only signal.

Note

Your answers are saved after every turn. You can close this window and come back.

How this conversation is used

Nothing you say here can be used to rate you. The result describes the role, not the person.

Sent

The invitation went to three people. You will see their answers here.

Link expires in two days

Two of five invited people have not answered yet.

.alert · .alert--accent · .alert--success · .alert--warning · .alert--danger · .alert--dismissible · .alert__title

Empty, loading and error states

New

The product shows these as a bare line of text, different on every page. One line inside a panel stays (.empty). A block that replaces content is new (.state).

Nothing captured yet.

.empty · one line in a panel or a cell

No interviews yet.

Start with one role. The first finding appears here about an hour after the conversation.

Invite the first person
.state › .state__title + .state__text + .state__action

Comparing the interview with the role profile. This takes about a minute.

.state.state--loading › .spinner .state.state--error

Progress, spinner, steps

.progress · 3px · style="--value:62%"
.progress.progress--lg · 6px
.spinner · .spinner--lg
  1. Interview transcribed (done)
  2. Comparing with the role profile (running)
  3. Writing the findings
  4. Sending the report failed
.steps › .steps__item (.is-done | .is-active | .is-error) › .steps__dot · structure from the earlier admin pages, new skin
09Tables and figures

Numbers in the display face. Everything around them in mono.

Tables

Classic HR analyticsConstat
Self-ratings on scales.Structured interviews, evidenced.
Aggregated dashboards.Evidenced individual findings.
Rating people.Analyzing roles and structures.
.table-wrap › table.data-table.data-table--compare · the last column is ours
RoleStatusTurnsCoverageFindings
Head of customer service Report ready4192 %7
Team lead, production planning In conversation1854 %0
Working student, marketingInvited00 %0
.data-table.data-table--dense · th.num and td.num align right with tabular numerals · td.is-muted

Figures

Two sizes existed for the same job. Both are kept as one component with a size and an accent modifier until one is chosen.

63%

of current work falls outside people's core job descriptions.

Deloitte, A skills-based model for work, 8 September 2022.

26

evidenced findings from one interview of sixty minutes.

12 : 5

task areas lived versus planned, in a single case.

.stat.stat--lg.stat--accent › .stat__n + .stat__t + .stat__src · .stat · .stat.stat--accent

Statistics tiles

Product
128Interviews started+12 this week
94Completed73 % of started
27Median turns
6.4Roles per person
41Mirror invites
.hairgrid › .kpi › .kpi__n + .kpi__l + .kpi__d

Calendar event chip

One appointment in a drawn week, from the scroll sequence on the Constat page. The sequence itself stays page code. The chip and its legend are system parts and work on cream too, which the website version did not.

MonWeekly kickoffTicket triageFocus timeSupport escalation
TueTeam syncFeature workVendor call1:1
Role Invisible overhead Crowded out
.event · .event.event--core · .event.event--overhead · .event.event--dropped · legend: .legend__swatch, --tint, --outline

Bar encoding

How a deviation is drawn: the role as designed is an outline, the week as worked is a fill, what runs past the plan is orange, and what falls short of it is a dashed orange outline. From the second scroll sequence of the Constat page.

Expected Actual More than planned Not reached
.bars › .bars__label + .bars__row (.bars__row--short) › .bars__expected + .bars__actual + .bars__delta · lengths: --expected, --actual, --from, --size on the row · legend: .legend__swatch--outline, --accent, --dashed
10Header, footer, layout

Bands of black and cream, one container, two grids.

Header

Two forms of one component. On the website it sits open on the hero. In the product it is a bar with a rule and a slot on the right. Neither is sticky and neither has a mobile menu; the links wrap.

.nav › .nav__brand + .nav__links · current: aria-current="page" · last link shown in hover .nav.nav--bar › .nav__brand + .nav__meta · here: step indicator and identity The key badge of the interview header is a .tag in the .nav__meta slot. It says whose model key the conversation runs on. .tag--accent marks the customer's own key.

Footer

The website had four versions of the left side and the product had no legal links at all. One footer: mark and name as a link home, legal links and place on the right.

.footer › .footer__inner › .footer__brand + .footer__links (a, .footer__note) · second link shown in hover

Section header and two-tone headline

02The method

From assumption to evidence.

The role as it was designed. The week as it is actually worked.

.sec-no › .lbl.lbl--accent + .lbl · .h2 › .h-muted

The system comes later.

Evidence first.

.h3.h-accent · .h2.h-accent · the one accent headline a page may have. On cream it is the darker small-text orange, because an .h3 is 20px on a phone.

Grids

One column on a phone, columns from 860px.

01

Capture.

Two sources, never mixed. The role as it is meant to be, and the working week as it really runs.

02

Compare.

The system compares tasks, competencies and accountability between role and reality.

03

Evidence.

Every finding stays linked to its source. Observation and hypothesis are reported separately.

.grid-3 › .step › .step__n + .h3 + .body

Evidence, not assumption.

Every statement stays linked to where it came from. Observation and interpretation are reported separately, never blended. No source, no finding.

Roles, not people.

We analyze how work is distributed across an organization. We do not measure how well a person performs, and we build no instrument that could.

Never a verdict.

Nobody is ever asked to rate themselves, and nothing we produce can be used against the person who said it.

.step.step--ruled › .h3 + .body · a hairline on top in place of the number, for principles
“Everyone somehow knew he was the hub. But only once it was written down did it become clear: this is too much.”

Cross-team coordination absorbs a substantial share of the working week. It appears in no role profile, and only the person carrying it can see it.

.grid-2 · 1.05 to 0.95, centred · .grid-2--top aligns to the top · .grid-cards for two cards

Marker rows

A year or a stage name in a narrow column, a hairline on top. Three column widths existed for the same pattern; they are modifiers now.

01

Role. Everyone knows their role or roles: the specific tasks and the bounded scope.

2024

We started with ourselves.

Our own agency was the first organisation we mapped with the framework.

Evaluation

Success is recorded against things that actually happened: objectives reached, methods newly put into practice.

.mrow.mrow--sm (44px) · .mrow (96px) · .mrow.mrow--lg (150px) › .mrow__marker

Cycle strip

The five steps of Loop in one row, each with a bar that shows how much of the gap is left. Five across from 860px, wrapping below. On the website the caption is the original German term of the step.

  1. 01RoleWho does what
  2. 02RequirementWhat it takes
  3. 03MeasureWhat changes
  4. 04EvaluationWhat it did
  5. 05Follow-upWhat stays
ol.cycle › li.cycle__step › .cycle__n + .cycle__name + .cycle__sub + .progress

Returns line

Under the cycle strip. The third drawn orange line next to the level line, and the only one that fades to one side.

Returns to 01The gap is smaller, the picture is current
.returns › .lbl.lbl--accent + .returns__line + .lbl

Audience item

Who a product is for: an icon and a label heading, one sentence below. Three in a row.

For employees

The work they actually do becomes visible, and gets recognition and room.

For managers

Workload distribution across the team rests on facts, not gut feeling.

For HR and leadership

Role design, onboarding, and succession get an evidenced basis.

.grid-3 › .audience › .audience__head (.ico + h4.lbl) + .body.body--muted

Person block

Who is behind it, at the foot of the home page. The label is the person's name on the website. This page prints the part each one plays, because it carries no names.

Method and delivery

Spent years inside other people's companies with the same brief under changing names: make this fit for what comes next. Every time, the work began the same way: by finding out what people actually do. Levelwork is that beginning, made repeatable.

Design and language

Shapes how Levelwork looks and reads. The brochure, the visual system, and the way a finding is laid out so that it can be understood before anyone explains it.

.person › .lbl.lbl--accent + .body.body--muted · two in a .grid-2.grid-2--top

Short hero and closing section

The hero without its height, for a page that opens with a headline and no wordmark, such as the legal pages. And the section that closes every page: a rule on top, a label, a headline and the mail link.

§Privacy

What this site knows about you.

.band.band--dark.hero.hero--short › .hero__img + .wrap › .nav + .wrap.hero__body · no minimum height

The first step is smaller than you think

Start with one role.

We take one role from your organization, capture the profile and the reality, and show you the difference. Then you decide whether the whole team should follow.

get@levelwork.ai

section.band.section.section--cta › .glow + .lbl + .h2 + .lead + .link-display

Containers and vertical rhythm

The page container is this column, 1180px. The product column is 900px.

You are filling six roles. Two of them are written down.

.wrap.wrap--app · 900px, centred, with the page gutter inside

Capture.

Compare.

Evidence.

.stack · 18px between children

Capture.

Compare.

Evidence.

.stack.stack--block · 34 to 62px, headline to first block

Capture.

Compare.

Evidence.

.stack.stack--break · 48 to 90px, before a figure or a second block

Hairline grid in two columns

Two cells side by side from 560px, one above the other below. On the Loop page this holds what exists today next to what is being built.

In use today

The cycle is delivered by hand inside client engagements: role profiles, structured interviews, development plans out of measured deltas, and follow-up through learning groups.

In development

The product version: the same cycle without a consultant in the room for every step, so that a company can keep its own picture current after we leave.

.hairgrid.hairgrid--2 › cells · .hairgrid alone fits as many 150px cells as there is room for

Helpers

ClassDoes
.wrap · .wrap--appCentred container, 1180px or 900px, with the page gutter
.band · .band--light · .band--darkA full-width stripe that paints its ground and re-points every role colour inside
.theme-light · .theme-darkThe same switch for any box. On <html> use data-theme="light" or "dark"
.section · .section--ctaTop and bottom rhythm of a section; the closing section with a rule on top
.stack · .stack--block · .stack--breakVertical gap between children: 18px, the block step, the break step
.clusterA row that wraps, 12px gap: buttons, tags, chips
.hairgrid · .hairgrid--2Cells divided by 1px lines with no gaps
11Images

Dark rooms, one band of orange, one person in focus.

Work is a blur of people, paper and motion, and somewhere in it one conversation is sharp. Pictures are cropped to a wide band, have square corners and are never shown at full strength. The three pictures here are small previews from the image library, so they are soft at this size.

Figure

The website shows a picture at 80 % so the ground comes through: darker on black, paler on cream. Both are shown. The modifier .fig--dark keeps the room dark on cream as well.

A man at a laptop in a dark room, seen between two blurred figures, an orange light behind him
Present, and not identifiable.
figure.fig › .fig__frame › img + figcaption.lbl
The same picture on a black backing
The picture is of the work, not the person.
figure.fig.fig--dark · black behind the picture on any ground

Figure with a caption on the picture

A woman at a table in front of a glowing orange glass wall, blurred people passing in the foreground

One role, one interview, sixty minutes.

figure.fig.fig--scrim › .fig__frame › img + .fig__overlay
One lit desk in a dark hall of blurred desks and flying paper
.fig--portrait · 3 to 4, for a column

The hero treatment (picture at 62 % under a black gradient) is shown in the first composed example below.

12Product: the interview

A conversation, not a chat widget.

The product is cream. Its parts work on black as well and are shown on both. All of them come from the product pages unless marked.

Turns, both sides

There are no bubbles. The interviewer speaks as plain text on the page. The participant's answer is a block pushed to the right with an accent rail.

Levelwork

Think of last week. Which task took the most time that nobody would find in your job description?

You

Probably sorting out who does what between sales and service. Nobody asked me to, it just lands on my desk.

Levelwork
.turn › .turn__who + p · .turn.turn--me · .typing (new) · .turn.turn--error (new)

Quick replies and the text box

Does it give you energy or cost you energy?
Team coordination
Quotations
1,240 of 2,000 characters
.chat__compose › .quick › .quick__row › .quick__name + .chip.chip--reply (.chip--gives | .chip--drains) · .textarea.textarea--chat · .chat__actions

In each row one chip is shown in hover. The character count is new; today the limit is silent.

Coverage and distribution

Coverage
62 % of your week accounted for4 roles
.coverage › .lbl + .progress + .coverage__line
Coverage
62 % of your week accounted for4 roles

Team coordination

Keeps sales and service from working against each other.

Customer escalations

Takes the calls nobody else wants to take.

Quotations

Writes the offer once the scope is clear.

Onboarding

Shows working students where things are.

.coverage.coverage--sticky · stays in view while the panel scrolls, with the one shadow the system has. Scroll the box to see it.
Team coordination38 %
Customer escalations24 %
Quotations11 %
.dist › .dist__row › .dist__label + .progress.progress--lg

Role card

Team coordination

Keeps sales and service from working against each other.

Tasks
  • Decides who takes an incoming request 20 %
  • Runs the Monday hand-over 10 %
Accountability
  • None on paper
Unnamed workDrains

Quotations

Nothing captured yet.

Gives
.role-card › .role-card__title + .role-card__purpose + .role-card__sub + .role-card__list (.role-card__pct) + .role-card__tags · .role-card--new animates in
13Product: the findings report

No evidence, no finding.

Summary block

Your result

You are filling six roles. Two of them are written down.

Most of your week matches the profile. What does not is listed below, each point with the passage it comes from.

26 findings15 criticalInterview of 60 minutes
.summary › .lbl + .summary__title + .summary__text + .summary__facts

Finding card with quote and severity

Three levels. The level is printed as a word and also shown by the rail and the ground. The quote style is new: the product had none and set evidence in grey mono or in a slanted face the fonts do not have.

Critical · F-07

Coordination between sales and service has no owner on paper.

“Nobody asked me to, it just lands on my desk.”Interview passage 14:22 · observation, evidenced

If this person is away for two weeks, requests wait until someone notices. The work is real and it is in no role profile.

One stepName the task in the role profile and give it a share of the week.

Signal after 90 days: hand-overs on Monday take less than thirty minutes.

Needs a decision soon · F-11

Quotations are written by two people who do not know of each other.

Both describe the same task as theirs. Neither profile mentions it.

Worth watching · F-19

Onboarding of working students happens on Friday afternoons.

It works today. It depends on one person's free Fridays.

.finding.finding--critical | --soon | --watch › .finding__severity + .finding__title + .finding__quote (.finding__source) + .finding__text + .finding__step + .finding__signal
F-07
Critical
Source
Interview passage 14:22
Status
Observation, evidenced
Type
Deviation from role profile
.finding › dl.finding__rows › .finding__row › dt + dd · the short form shown on the website

Delta list

Plan against reality, one row per difference. The structure comes from the earlier result page. The coloured round pills are replaced by tags.

Tasks

Critical

Carries cross-team coordination. The profile lists none.

Recommendation: add it to the profile or move it to a named owner.

Soon

Monthly reporting is in the profile and has not been done since spring.

Recommendation: decide whether it is still needed.

Watch

Spends about a tenth of the week on quotations, planned as a fifth.

.delta-list › .delta-list__title + .delta › .tag + .delta__text + .delta__rec

The four-field grid

Three versions existed, one with three cells. This is the hairline two by two from the event demo, with all four fields. The blind field is tinted.

Seen by both
  • Customer escalations
  • Quotations
Seen by others only
  • Go-to person for the new tool
  • Calms things down between teams
Carried, but unnamed
  • Team coordination
Seen by nobody yet

No entries.

.quad › .quad__cell (.quad__cell--blind) › .quad__label + .quad__list | .empty

Measure card

Product

What to do about one finding. From the event demo. It shares the accent rail with the summary block.

F-07 · Coordination between sales and service has no owner on paper.

Write the coordination into one role profile and give it a fifth of the week.

Signal in 90 days

The Monday hand-over takes less than thirty minutes.

First step

Ask both team leads who decides on an incoming request today.

F-11 · Quotations are written by two people who do not know of each other.

Name one owner for quotations.

Signal in 90 days

No quotation goes out twice.

First step

Put both people in one room for twenty minutes.

.measure › .measure__finding + .measure__title + .measure__cols › .measure__key + .measure__value

Sources

Product

The list that closes a report: every comparison number with where it comes from.

Where the comparison numbers come from
  • 63 % of current work falls outside people's core job descriptions.Deloitte, A skills-based model for work, 8 September 2022. 1,021 employees and 225 executives across ten countries. Open the source
  • One in two employees worldwide strongly agree that they know what is expected of them.Gallup Q12, item 1: knowing what is expected at work.
.sources › .lbl + ul.sources__list › li › .sources__claim + source text (+ .link)

Share link and invitation

Product

One block for two jobs: the link that brings a participant back to the same conversation, and the invitation to a second person. The product set the link bare on the tint in one and in a box in the other. The system takes the box.

.share › .lbl.lbl--accent + .code.code--box + .share__actions · the link back to a conversation After a click on Copy. The changed label is the only feedback today.

The invitation in its three states.

1 · No link yet · .share.share--lg › .share__title + .share__text + .share__actions 2 · Link created · adds .code.code--box, two .btn.btn--ghost and a .small hint 3 · Answers received · the same block around a .quad, with the open link as inline .code

Offer

Product

The paid step at the end of a report. The button leaves for an external checkout. What the page shows after payment, while it is pending or when it fails is not designed.

Go through this with us.

Sixty minutes on what this report actually found. We read your report before the session and come with questions about your roles, not with general advice.

€25060 minutes · one founder, one report

  • Which role to test first, and which blockade is real rather than habit.
  • What the inventory says about the next hire, before you write the job ad.
  • You get our first questions in writing beforehand. Reading them is half the value.
Book the session, €250

Within 24 hours you get two or three slots and our first questions in writing. If you work with us afterwards, this comes off the price.

.offer › .offer__title + .offer__text + .offer__price (.offer__figure + .lbl) + .offer__list + .btn + .offer__small

Go through this with us.

€25060 minutes · one founder, one report

Ask for the session

Without a checkout link the button opens a mail to us.

The fallback: same block, the button is a mail link
14Composed examples

Two screens, system classes only.

Neither example has a class of its own. The only style attribute is the value of the progress bar. The first is always black and the second always cream, whatever the page switch says, because that is where each one lives.

Marketing hero

The hero of the website, value for value, with one addition: the two buttons. The website hero has none. They are here to show the call to action in place and need a verdict.

CONSTAT

Evidence for how organizations really work.

01The gap

Every role exists twice: on paper, and in reality.

Extra tasks. Silent overhead. Core work pushed aside. Everyone feels it. Nobody can prove it.

63%

of current work falls outside people's core job descriptions.

Deloitte, A skills-based model for work, 8 September 2022.


Interview screen with a finding card

Levelwork

You said the Monday hand-over is yours. Who asked you to take it on?

You

Nobody asked me to, it just lands on my desk. I have done it since the two teams were merged.

Levelwork

That is the third task today that is in no profile. Here is what I have noted. Tell me if it is wrong.

Critical · F-07

Coordination between sales and service has no owner on paper.

“Nobody asked me to, it just lands on my desk.”Interview passage 14:22 · observation, evidenced
One stepName the task in the role profile and give it a share of the week.
Levelwork
Saved after every turn.
15Open points

What this page cannot decide.

Every choice between two existing variants is in docs/decisions.md, one sentence each, numbered. These are the ones most visible on this page.

Decided for now, easy to overrule

  • Button label is black, as on the website. The product had white.
  • Orange text on cream is darker than the brand orange: accent-700 for small text, accent-600 for large figures and the focus ring. The brand orange itself fails contrast there.
  • Muted grey is one step stronger on both grounds than on the website, so that it passes on surfaces as well as on the bare ground.
  • The lead is not larger than body text, as on the website. A larger lead in the display face exists as .lead-sans.
  • Default ground is black. The product sets data-theme="light" on the page.
  • Pictures on cream turn pale. Shown as it is today; .fig--dark is the alternative.

Not designed yet

  • Tabs, modal or confirm dialog, toast, tooltip, pagination, avatar.
  • A sticky header and a mobile menu. Links wrap today.
  • Payment follow-up states: paid, pending, failed. The offer block ends at the button.
  • Feedback after copying a link, beyond the changed button label.
  • The two scroll-driven scenes of the Constat page as wholes: the week panel and the stage of bars. Their parts are here, the scenes stay page code.
  • The language bar above the chat and the row of meta chips of the event demo. A segmented control and tags would do both.
  • A table with row actions and sorting.
  • Field borders and hairlines are below 3 to 1 against their ground. A field is recognisable by its fill and label, but a stricter reading of the contrast rules would ask for a stronger border.
  • An italic or a second weight for emphasis. Neither font file has one.