DESIGN.mdVersion beta

Answerable

A presentation and product design system for a professional development and accountability platform for the built environment. Output must never include a logo, wordmark or brand name. The system has two layers: a quiet Interface layer of utilitarian, modernist components that get out of the way, and a bold Statement layer for headline moments, oversized numbers and quotes. Pure white (#FFFFFF) is the default background and pure black (#000000) the default text colour. A cool neutral scale supports surfaces, secondary text and separators. Four equal accent colours — Coral (#E9895E), Sky Blue (#A8DCE8), Yellow (#F3DD8F) and Green (#98AF48) — are used only for highlights and semantic states, always with black text and square corners, and are rotated so no single accent (especially Coral) dominates. Only three weights of Public Sans are used: Regular (400) for body text, Bold (700) for subheadings and labels, and Black (900) for main headings and big statements. Everything must be readable and clear in all situations. Components are defined by fill, space, typography and elevation — never by outlines or borders.

Answerable profile
0 errors · 0 warnings · 20 info
Official linter
20 errors · 99 warnings · 1 info

01

Output rules

These rules apply every time this system is used to produce a presentation, page or screen.

  • No logos. Never draw, insert or imitate a logo, wordmark, monogram, corner marks or any other brand device.
  • No brand name. Never write the brand or company name in titles, headers, footers, slide masters, captions or alt text. The only exception is when it appears in the user's own supplied content.
  • No brand furniture. No branded title slides, closing slides, taglines, copyright lines or "Presented by" credits.
  • Just the presentation. Spend the space on the content. The design language itself (type, colour, shape) is the only identity needed.

02

Overview

Read the rule

Most of what people see is the content: data, arguments, steps and evidence. That content should feel calm and precise. It should be easy to scan and should never compete with the message.

The system also has something to say. Its voice comes through in a small number of deliberate statement moments: a huge number, a confident headline or a black quote panel. These moments are bold because everything around them is quiet.

The system is built from two layers that share one typeface, one colour logic and one shape language.

LayerCharacterWeightsColourShare of a typical screen
InterfaceUtilitarian, modernist, recessiveRegular 400 for text, Bold 700 for subheadings and labelsWhite, black, cool neutrals~90%
StatementEditorial, confident, oversizedBlack 900, with Regular 400 supporting copyBlack, white, one accent highlight~10%

Rule of thumb: use at most one statement moment per screen or slide. If everything shouts, nothing is heard.

Key characteristics

  • Pure white (#FFFFFF) is the default background and pure black (#000000) the default text colour.
  • A cool neutral scale (#FAFAFA–#18181B) supports fills, secondary text, hover states and separators. It never uses warm greys, beige or cream.
  • Four equal accent colours — Coral, Sky Blue, Yellow and Green — are used only for highlights and semantic states. They are rotated so no single accent dominates. They are always paired with black text and always square-cornered.
  • Public Sans is used in three weights only:
    • Regular (400) for all body text. This is the default.
    • Bold (700) for subheadings, labels and buttons.
    • Black (900) for main headings and big statements.
  • Everything must be readable and clear in all situations: projectors, small screens, bright rooms and print.
  • All components are square-cornered. The only exceptions are radio buttons and avatars, which are circular by function.
  • Components are defined by fill, space, typography and soft elevation. They never have outlines or perimeter borders.
  • Interface separators are 1px neutral lines between rows or groups. Statement dividers are 2–4px black.
  • Every interactive element shows a black focus ring on keyboard focus.

For everything you put your name to.

The people who change a practice aren’t always the first to try something new. They’re the ones who make it worthwhile for everyone else.

03

Readability

Every output must be readable and clear in all situations, including projected slides, small laptop screens, bright rooms, screenshots and print. When in doubt, choose the larger size and the stronger contrast.

  • Contrast: all text reaches at least 4.5:1 against its background. Pure black on white is the default. Black text on all four accents passes.
  • Minimum sizes:
    • Regular text is never smaller than 14px.
    • Bold labels (badges, eyebrows, table headers) are never smaller than 12px.
  • Slides: body text is never smaller than body-lg (18px on a 1280×720 canvas). Scale all sizes proportionally for larger canvases, for example ×1.5 at 1920×1080.
  • Muted text: grey text uses neutral-600 only, on white, neutral-50 or neutral-100 surfaces. Never put grey text on black or on an accent. Never use neutral-500 for anything a reader needs.
  • Line length: keep paragraphs to around 680px (roughly 60–75 characters) so lines are easy to follow.
  • Density on slides: prefer fewer, larger words. If text doesn't fit at the minimum size, split the slide rather than shrinking the type.
  • Don't rely on colour alone. Accent highlights and semantic states always come with a label, marker or text that carries the meaning.

04

Colour

Read the rule

Core

  • Background (#FFFFFF): the default page, slide and component surface.
  • Foreground (#000000): primary text, icons and the default button fill.
  • Surface Dark (#000000): tooltips, toasts and statement panels, always with white text.

Neutrals

The neutral scale lets the interface recede. It is cool and slightly blue-grey, never warm.

TokenHexUse
neutral-50#FAFAFAApp shell and sidebar background, table row hover
neutral-100#F4F4F5Input fills, muted cards, tab lists, secondary buttons, skeletons
neutral-200#E4E4E7Interface separators, hover fills, unchecked controls, active nav item
neutral-300#D4D4D8Pressed fills, disabled control fills
neutral-500#71717ADisabled states only. Never meaningful text
neutral-600#52525BMuted foreground: helper text, metadata, descriptions, placeholders (about 7:1 on white)
neutral-800#27272AHover state on black buttons
neutral-900#18181BPressed state on black buttons

Muted grey text is for secondary information only. Primary content, headings and anything essential stay pure black.

Accent colours

The four accents have equal status. None is the primary or default.

AccentHexHighlight useSemantic role (interface only)
Coral#E9895EHighlights, data points, stat blocks, accent buttonDestructive / error
Sky Blue#A8DCE8Highlights, data points, stat blocks, accent buttonInfo
Yellow#F3DD8FHighlights, data points, stat blocks, accent buttonWarning
Green#98AF48Highlights, data points, stat blocks, accent buttonSuccess

Accent rotation

  • Do not default to Coral. Coral should appear no more often than any other accent.
  • Vary by section. Across a presentation or multi-section page, give each section or slide its own accent and cycle through all four. A sensible default order is Sky Blue → Yellow → Green → Coral.
  • One accent per slide or local area. Within a single slide or section, use one accent for highlights so the area stays coherent.
  • Charts are the exception. All four may be used together as a series palette.
  • Choose by meaning when it exists. If the content is positive, cautionary or informational, Green, Yellow or Sky Blue may be chosen to match. Otherwise follow the rotation.
  • Never use a run of the same accent. Three or more consecutive slides or sections with the same accent is a mistake.

Accent rules

  • Black text only. All four accents pass WCAG AA with black text. Never set text in an accent colour.
  • Square corners always. No rounding on any accent-filled element.
  • Small areas only. Use accents for badges, markers, chart data, a highlighted word, a single CTA or a stat highlight. Never use them as page, section, slide or card backgrounds.
  • Semantic use inside app interfaces: in functional app screens, Coral means destructive or error, so the primary app action stays black. In presentations and statement contexts, Coral is just one of the four rotating highlights.

Core

  • background#ffffffoklch(1 0 0)
  • foreground#000000oklch(0 0 0)
  • on-dark#ffffffoklch(1 0 0)
  • on-accent#000000oklch(0 0 0)
  • surface-card#ffffffoklch(1 0 0)
  • surface-dark#000000oklch(0 0 0)
  • overlay#00000080oklch(0 0 0 / 0.502)
  • ring#000000oklch(0 0 0)
  • rule-statement#000000oklch(0 0 0)

Neutral

  • neutral-50#fafafaoklch(0.9851 0 0)
  • neutral-100#f4f4f5oklch(0.9674 0.0013 286.37)
  • neutral-200#e4e4e7oklch(0.9197 0.004 286.32)
  • neutral-300#d4d4d8oklch(0.8711 0.0055 286.29)
  • neutral-500#71717aoklch(0.5517 0.0138 285.94)
  • neutral-600#52525boklch(0.4419 0.0146 285.79)
  • neutral-800#27272aoklch(0.2739 0.0055 286.03)
  • neutral-900#18181boklch(0.2103 0.0059 285.89)

Accent

  • accent-sky#a8dce8oklch(0.8624 0.056 213.44)
  • accent-yellow#f3dd8foklch(0.8984 0.1005 94.2)
  • accent-green#98af48oklch(0.7151 0.1318 120.42)
  • accent-coral#e9895eoklch(0.7238 0.131 44.33)

Semantic

  • primary#000000oklch(0 0 0)= foreground
  • muted#f4f4f5oklch(0.9674 0.0013 286.37)= neutral-100
  • muted-foreground#52525boklch(0.4419 0.0146 285.79)= neutral-600
  • separator#e4e4e7oklch(0.9197 0.004 286.32)= neutral-200
  • success#98af48oklch(0.7151 0.1318 120.42)= accent-green
  • warning#f3dd8foklch(0.8984 0.1005 94.2)= accent-yellow
  • info#a8dce8oklch(0.8624 0.056 213.44)= accent-sky
  • destructive#e9895eoklch(0.7238 0.131 44.33)= accent-coral

Contrast

Every text-on-fill pair of the roles, against WCAG 2: AA needs 4.5:1 for normal text, 3:1 for large.

Text on fillSampleContrastNormal textLarge text
foreground on backgroundAa21.00:1AAAAAA
muted-foreground on backgroundAa7.73:1AAAAAA
muted-foreground on mutedAa7.03:1AAAAAA
card-foreground on cardAa21.00:1AAAAAA
popover-foreground on popoverAa21.00:1AAAAAA
primary-foreground on primaryAa21.00:1AAAAAA
secondary-foreground on secondaryAa19.11:1AAAAAA
accent-foreground on accentAa19.11:1AAAAAA
foreground on inputAa19.11:1AAAAAA
destructive-foreground on destructiveAa8.20:1AAAAAA
sidebar-foreground on sidebarAa20.12:1AAAAAA
sidebar-primary-foreground on sidebar-primaryAa21.00:1AAAAAA
sidebar-accent-foreground on sidebar-accentAa19.11:1AAAAAA
on-dark on surface-darkAa21.00:1AAAAAA
on-accent on highlight-1Aa14.07:1AAAAAA
on-accent on highlight-2Aa15.55:1AAAAAA
on-accent on highlight-3Aa8.56:1AAAAAA
on-accent on highlight-4Aa8.20:1AAAAAA

Accent rotation

Sky Blue, Yellow, Green, Coral: one per section, never the same three times in a row.

  1. 1. accent-sky
  2. 2. accent-yellow
  3. 3. accent-green
  4. 4. accent-coral
4
accents of equal status; none is the default
1
accent per section or slide, charts excepted
3
sections in a row with one accent is a mistake
8.2:1
the lowest contrast of accent text on an accent fill

05

Typography

Read the rule

Public Sans is the only typeface, and only three weights are used. Weight does the heavy lifting in the hierarchy. Body text is Regular and calm, so the Black moments really land.

  • Regular text is never smaller than 14px. Bold labels are never smaller than 12px.
  • All text must reach at least 4.5:1 contrast with its background. Prefer pure black.
  • On slides, body text is never smaller than body-lg (18px at a 1280×720 canvas); scale proportionally for larger canvases.

Weight roles

WeightRole
Regular (400)All body text: paragraphs, lead copy, bullet text, captions, table cells, inputs, inactive nav. This is the default.
Bold (700)Subheadings (H2–H4), form labels, buttons, badges, eyebrows, table headers, active nav.
Black (900)Main headings (H1), statement headlines, big numbers, list markers and statement quotes. Use it whenever you want to make a big statement on screen.

No other weights. Never use Thin (100), Extra Light (200), Light (300), Medium (500), Semibold (600) or Extra Bold (800).

Heading hierarchy

ElementTokenWeightSizeUse
H1heading-h1Black 90036pxMain heading, page or slide title (one per page/slide)
H2heading-h2Bold 70024pxSubheading for major sections, dialog titles
H3heading-h3Bold 70018pxSubsections, card titles
H4heading-h4Bold 70016pxMinor groups, form section titles

Use headings in semantic order. If a page or slide needs a giant headline, apply a statement style (such as statement-xl) to the H1 element. Do not skip levels.

Full scale

TokenSizeWeightLine heightTrackingUse
statement-xl72px9001.0-2pxHero statement
statement-lg56px9001.02-1.5pxSection statement
statement-md40px9001.05-1pxHighlight panel heading
statement-quote28px9001.2-0.4pxStatement quotes
number-display96px9000.9-3pxHero numerals
number-stat48px9001.0-1.5pxHeadline metrics
list-marker32px9001.0-1pxStep markers
heading-h136px9001.1-0.8pxMain heading
heading-h224px7001.25-0.3pxSubheading
heading-h318px7001.35-0.1pxCard / subsection title
heading-h416px7001.40Minor heading
lead-lg28px4001.35-0.3pxHero supporting copy
lead22px4001.45-0.2pxIntro paragraphs
body-lg18px4001.60Presentation body, long-form reading
body-md16px4001.60Default running text
body-sm14px4001.50Supporting text, descriptions
caption14px4001.40Metadata, helper text, chart labels
ui-text14px4001.430Dense interface text
label14px7001.20Form labels
button14px7001.00Button labels
badge12px7001.00.1pxBadges
table-head12px7001.30.2pxTable headers
nav-link14px4001.40Nav items (700 when active)
eyebrow12px7001.21.2pxUppercase category labels

Pairing the extremes

The signature typographic move is a Black headline over Regular body text. The contrast in weight does the work, so no colour, box or decoration is needed. Bold sits between them, only for subheadings and functional labels.

Numbers

Use tabular-nums in tables, metrics and anything that updates or aligns in columns. Right-align numeric table columns.

LevelSpecimenSizeWeightLeadingTracking
statement-xlFor everything you put your name to.72px9001-2px
statement-lgAI needs that kind of leadership.56px9001.02-1.5px
statement-mdJoin the founding cohort40px9001.05-1px
statement-quoteWe hold ourselves answerable for our work.28px9001.2-0.4px
number-display100+96px9000.9-3px
number-stat648px9001-1.5px
list-marker1 2 3 432px9001-1px
heading-h1The AI Lead role36px9001.1-0.8px
heading-h2Built upon six core values24px7001.25-0.3px
heading-h3The people behind the programme18px7001.35-0.1px
heading-h4Join the founding cohort16px7001.40
lead-lgWhen a client asks how your practice uses AI, the answer should give them another reason to choose you.28px4001.35-0.3px
leadThe people who change a practice aren’t always the first to try something new. They’re the ones who make it worthwhile for everyone else.22px4001.45-0.2px
body-lgAI needs that kind of leadership: grounded in the work, generous with colleagues, and clear about what good looks like.18px4001.60
body-mdAn AI Lead helps build the substance behind that answer: better ways of working, colleagues who know how to use the tools well, and standards the practice can explain and uphold.16px4001.60
body-smWe’re limiting the founding cohort to give participants the support and assessment the programme requires.14px4001.50
captionRegistering interest does not reserve a place or commit you to enrol.14px4001.40
ui-textLeave your email and we’ll send you programme details and let you know when enrolment opens.14px4001.430
labelEmail14px7001.20
buttonRegister your interest14px70010
nav-linkCore values14px4001.40
nav-link-activeThe AI Lead role14px7001.40
badgeFounding cohort12px70010.1px
eyebrowAccreditation12px7001.21.2px
table-headContrast12px7001.30.2px
numeric0123456789nonenonenonenone

Weights

  • Regular 400Body text: paragraphs, captions, table cells, inputs
  • Bold 700Subheadings, labels, buttons, badges
  • Black 900Main headings, statements, big numbers

Reading width

Paragraphs stop at prose-max.

When a client asks how your practice uses AI, the answer should give them another reason to choose you.

An AI Lead helps build the substance behind that answer: better ways of working, colleagues who know how to use the tools well, and standards the practice can explain and uphold.

06

Shape

Read the rule

Everything is square. A single radius of 0 applies to every button, input, card, menu, dialog, tab, badge, toast and tooltip. This keeps the family coherent: a square button never sits awkwardly inside a rounded card.

The only exceptions are radio buttons and avatars. They use rounded.full because the circle is part of their meaning. Neither may be accent-filled.

Square

Every button, input, card, badge and accent element: radius: 0px

Founding cohortAccredited
The AI Lead role
When a client asks how your practice uses AI, the answer should give them another reason to choose you.

Round by function

Radio buttons and avatars only, never accent-filled: radius-full: 9999px

KRSMKeir Regan-Alexander and Sadie Morgan OBE

07

Lines, separators and focus

Read the rule

Never use outlines or perimeter borders. No component is drawn by a stroke around its edge. Shape comes from fill, elevation and space.

There are two kinds of line, and both are standalone separators that never enclose anything.

LineSpecUse
Interface separator1px, neutral-200Table rows, menu groups, beneath the top nav, between settings rows
Statement divider2px / 3px / 4px, blackMajor editorial section breaks on statement pages and slides

Do not use black statement dividers inside dense interface areas, and do not use faint 1px lines on statement pages.

Focus ring: every interactive element shows 0 0 0 2px #FFFFFF, 0 0 0 4px #000000 on :focus-visible. This is a temporary state indicator required for accessibility, not a border. Never remove it.

Interface separator

Between rows and groups, never around them: line-separator-width: 1px

  1. 1We hold ourselves answerable for our work.

  2. 2We use AI only where we are competent to do so.

  3. 3We are honest about how we use AI.

  4. 4We respect the intellectual and creative work of others.

Statement divider

Major editorial breaks on statement pages and slides, in black.


standard, 2px


emphasis, 3px


heavy, 4px

Focus ring

On :focus-visible for every interactive element; press Tab to move it: focus-ring: 0 0 0 2px #FFFFFF, 0 0 0 4px #000000

08

Layout

Read the rule
  • Spacing: 4px base unit. Use the spacing scale only.
  • Controls: 32px (sm), 36px (default) and 40px (lg) heights. 48px is reserved for statement-layer CTAs.
  • App shell:
    • 56px top nav with a 1px separator beneath and a page title at left. No logo.
    • Optional 256px neutral-50 sidebar.
    • Content area on white or neutral-50.
  • Cards on surfaces:
    • On a white page, use card-muted, which has a neutral-100 fill and no shadow.
    • On a neutral-50 shell, use card, which has a white fill and xs shadow.
    • Never place a white card with no shadow on a white page.
  • Content width:
    • 1200px maximum for app layouts.
    • 680px maximum for long-form reading.
  • Density: interface screens are compact (16–24px gaps). Statement sections and slides are generous (64–96px vertical padding).
  • Grid: 12 columns for app layouts. Editorial square-tile grids (3 / 2 / 1 columns) for presentations and statement pages.

Join the founding cohort

card, on the neutral-50 shell

The skills to lead your practice’s approach to AI.
Practical training grounded in six core values, equipping you to guide decisions and help colleagues use AI well.

card-muted, on white

An accreditation others can verify.
Demonstrate your competence through formal examination, and take your place on the public register of Accredited Professionals.

nav-height: 56pxsidebar-width: 256pxcontent-max: 1200pxprose-max: 680px

09

Elevation

Read the rule

Elevation separates floating layers from the page without outlines. Shadows are soft, neutral and always blurred.

TokenUse
xsCards on neutral-50 shells, active tab, switch thumb
smSticky headers, raised cards on hover
mdDropdowns, popovers, comboboxes
lgDialogs, toasts, sheets

Never use a zero-blur or spread-only shadow. That is an outline in disguise.

Statement components (quote panels, highlight panels, hero) are flat. Their contrast comes from solid black and white, not shadow.

xsCards on neutral-50 shells, active tab, switch thumb0 1px 2px rgba(0, 0, 0, 0.06)
smSticky headers, raised cards on hover0 2px 8px rgba(0, 0, 0, 0.08)
mdDropdowns, popovers, comboboxes0 8px 24px rgba(0, 0, 0, 0.12)
lgDialogs, toasts, sheets0 16px 48px rgba(0, 0, 0, 0.16)
Flat

Statement panels take their contrast from solid black and white, not shadow.

Shadows must always have blur. Never use zero-blur or spread-only shadows that imitate an outline.

10

Components — Interface layer

Read the rule

These components should feel familiar to anyone who has used a modern app. They are neutral, predictable and quiet.

Buttons

VariantAppearanceUse
DefaultBlack fill, white Bold labelThe primary action in a view
Secondaryneutral-100 fill, black labelAlternative actions
GhostTransparent, neutral-100 on hoverToolbars, tertiary actions, icon buttons
LinkText only, 2px underline on hoverInline navigation
DestructiveCoral fill, black labelDelete, remove, irreversible actions

All buttons are square, 36px tall by default and have no outline. Use one Default button per view region. Icons are 16px with an 8px gap from the label.

Form controls

  • Input, textarea, select:
    • neutral-100 fill, square, no border, Regular text.
    • Hover deepens the fill to neutral-200.
    • Focus switches to a white fill with the black focus ring.
  • Label: 14px Bold, 8px above the field.
  • Helper text: 14px Regular in muted-foreground, 6px below the field.
  • Errors:
    • Place a small square Coral marker beside the label.
    • Show the error message as black helper text.
    • Never use red or Coral text.
  • Checkbox: 16px square. Unchecked is neutral-200. Checked is a black fill with a white check.
  • Radio: 16px circle. Unchecked is neutral-200. Checked is a black fill with a white dot.
  • Switch: square 36×20 track (neutral-200 off, black on) with a white square thumb.

Surfaces

  • Card: white, xs elevation, 24px padding. Bold H3 title with a Regular body-sm description beneath in muted-foreground.
  • Card (muted): neutral-100 fill, no shadow. Use on white pages.
  • Dialog:
    • White, lg elevation, 50% black overlay, 24px padding, 480px max width.
    • Bold H2 title.
    • Actions right-aligned: Secondary, then Default.
  • Dropdown menu / popover:
    • White, md elevation, 4px inner padding.
    • Menu items are 32px tall with a neutral-100 hover.
    • Groups are divided by interface separators.

Navigation

  • Top nav: white, 56px, 1px separator beneath. Page title at left (no logo), nav links in Regular (Bold when active), actions at right.
  • Sidebar:
    • neutral-50 background.
    • Items are 36px tall, with a neutral-100 hover.
    • The active item has a neutral-200 fill and Bold text.
    • Group labels use the eyebrow style in muted-foreground.
  • Tabs:
    • The tab list sits on a neutral-100 fill.
    • The active trigger is white with xs elevation and Bold text.
    • Inactive triggers use Regular muted-foreground text.

Feedback

  • Badge: neutral-100 fill or an accent fill, black 12px Bold, square, 4px × 8px padding.
  • Alert:
    • neutral-100 fill.
    • An 8px square accent marker sits beside a Bold title, indicating the semantic type.
    • Regular body text.
  • Toast: black surface, white Regular text, lg elevation.
  • Tooltip: black, white 14px Regular text.
  • Skeleton: neutral-100 with a gentle pulse.
  • Progress: neutral-100 track with a black indicator.

Data

  • Table:
    • Header row in 12px Bold muted-foreground.
    • Cells in 14px Regular black.
    • 1px neutral-200 row separators.
    • neutral-50 row hover and neutral-100 selected rows.
    • Tabular, right-aligned numbers.
    • No outer border or frame.
  • Charts:
    • Black for the primary series. All four accents for comparisons and highlights; do not lead with Coral.
    • neutral-200 for gridlines.
    • Square bar ends.
    • Labels in caption style. Label series directly where possible so meaning doesn't depend on colour alone.

Buttons

Default, secondary, ghost, link and destructive at sm, default, lg and xl, then the icon sizes. The accent button belongs to the statement layer: one per screen.

default
secondary
ghost
link
destructive
accent

Forms

Filled, square, no border. An invalid field takes a square marker beside its label; its message stays black.

Leave your email and we’ll send you programme details and let you know when enrolment opens.

That doesn't look like a valid email address.
The value you would start with

Surfaces

Card, dialog, dropdown menu, popover and tooltip.

A policy suite your practice can put to work.
Develop your AI policy and handbook with guided resources and templates, shaped around your practice rather than written from scratch.

Navigation

Tabs on the muted fill, and the sidebar on neutral-50.

When a client asks how your practice uses AI, the answer should give them another reason to choose you.

Feedback

Badges, alerts with their square marker, the toast, the skeleton and progress.

Founding cohortAccredited⏎
The interface layer’s share of a screen
x

Data

A table with tabular, right-aligned figures and a selected row, and a chart in the five chart colours.

The neutral scale against the background.
TokenHexoklchContrast
neutral-50#fafafaoklch(0.9851 0 0)1.04:1
neutral-100#f4f4f5oklch(0.9674 0.0013 286.37)1.10:1
neutral-200#e4e4e7oklch(0.9197 0.004 286.32)1.27:1
neutral-300#d4d4d8oklch(0.8711 0.0055 286.29)1.48:1
neutral-500#71717aoklch(0.5517 0.0138 285.94)4.83:1
neutral-600#52525boklch(0.4419 0.0146 285.79)7.73:1
neutral-800#27272aoklch(0.2739 0.0055 286.03)14.89:1
neutral-900#18181boklch(0.2103 0.0059 285.89)17.72:1
Font size of the statement levels, in pixels.

11

Components — Statement layer

Read the rule

Use these components to make a point. Limit them to one per screen or slide inside an app. They may appear more freely in presentations, onboarding and report pages.

  • Hero statement:
    • statement-xl headline in Black, with a lead-lg paragraph in Regular beneath it.
    • Optionally followed by a single accent button, with the accent chosen by rotation.
    • White background with generous space.
  • Stat:
    • number-stat (48px Black) with a Regular body-sm label beneath in muted-foreground.
    • May use a square accent block as a highlight. When showing several stats in a row, either use one shared accent or none. Never default to Coral.
    • Use for headline metrics, ideally 1–4 in a row.
  • Stat display: number-display (96px Black) with a Regular lead label, for reports and milestone moments.
  • Quote panel:
    • Either a black fill with white statement-quote text, or white with black.
    • Attribution in Regular body-sm.
    • Never accent-coloured and never bordered.
  • Highlight panel:
    • Black fill with a white statement-md heading and white Regular body text.
    • For a key message, milestone or call to commitment.
  • Numbered steps:
    • 32px Black numerals with a Bold H3 title and Regular body text.
    • One marker per item, all the same size.
  • Accent button:
    • Any one accent fill (by rotation), black Bold label, square, 48px tall.
    • One per screen or slide, for the most important action.
  • Statement divider: 3px black rule for major editorial breaks.
  • Photo tile: full-bleed collage imagery, square, unframed.

Bringing the layers together

A typical dashboard combines both layers:

  • Statement: one row of stats in 48px Black numerals.
  • Interface: filters, a table, a sidebar and buttons, all quiet and neutral.

A typical presentation inverts the ratio:

  • Statement: Black headlines, big numbers, quote panels and numbered steps, with the accent rotating from slide to slide.
  • Body: Regular supporting text at body-lg or larger, with Bold subheadings, calm and readable.
  • No branding: no logo, no brand name, no branded title or closing slides.

Stat row

One to four metrics; one shared accent or none.

6
core values behind everything the programme teaches
100+
AEC firms helped to develop their approach to AI
3
years of that work behind the programme
4
things the founding cohort gets

Stat display

For reports and milestone moments.

100+
Keir Regan-Alexander has spent the past three years helping more than 100 AEC firms develop their approach to AI.

Quote panels

Black with white, or white with black; never accent-coloured, never bordered.

We hold ourselves answerable for our work.
The first of six core values
We use AI to strengthen our professions, not to diminish them.
The sixth core value

Highlight panel

For a key message, milestone or call to commitment.

Join the founding cohort

We’re limiting the founding cohort to give participants the support and assessment the programme requires. Leave your email and we’ll send you programme details and let you know when enrolment opens.

Numbered steps

32px Black numerals, one marker per item, all the same size.

  1. The skills to lead your practice’s approach to AI.

    Practical training grounded in six core values, equipping you to guide decisions and help colleagues use AI well.
  2. A policy suite your practice can put to work.

    Develop your AI policy and handbook with guided resources and templates, shaped around your practice rather than written from scratch.
  3. An accreditation others can verify.

    Demonstrate your competence through formal examination, and take your place on the public register of Accredited Professionals.
  4. A community to keep learning with.

    Exchange experience, explore difficult questions, and continue developing alongside fellow AI Leads beyond the programme.

Statement divider

3px black, for major editorial breaks.


12

Lists

  • Use numbers for primary list levels and letters (a, b, c) for nested subsections.
  • Show exactly one visible marker per item. When using a custom marker, set list-style: none on the native list.
  • Keep all markers in one list at the same size, weight and alignment.
  • Interface lists (settings, menus, simple bullets) use body-sized Regular text and markers.
  • Statement lists use list-marker (32px Black) numerals.
  • Use semantic <ol> and <ul> markup with nested lists for subsections.

13

Imagery

Imagery follows a heterogeneous architectural collage methodology.

  • Visual registers: combine illustrated or painted figures, flat single-colour background buildings, architecturally sourced material textures and clean digital cut-outs.
  • Figures: gouache-adjacent, with flat tonal modelling and clean masked silhouettes. Figures in one image should feel like one family.
  • Background buildings: flat graphic masses, one colour per building, with simplified flat windows.
  • Principal architecture: keeps selective material character, restrained tonal modelling and lightly painted texture.
  • Depth: created through overlap, scale, vertical position and tonal hierarchy. Never use blur or haze.
  • Overall feel: the result should read as an authored architectural competition board.
  • Negative space: pure white. No paper, beige or cream effects.
  • Accents: restrained highlights only, following the same rotation as the page.
  • Text in imagery: always black or white, and never placed over busy areas of an image. No logos, brand names or signage branding.
  • No frames: no outlines or frames around tiles, figures or collage elements.
  • In the app: keep imagery to empty states, onboarding and presentation surfaces. Never place it behind data or forms.

14

Do's and don'ts

Do

  • Use only three weights: Regular for body, Bold for subheadings and labels, Black for main headings and statements.
  • Default to Regular for all running and UI text.
  • Use Black whenever you want to make a big statement on screen.
  • Make everything readable in all situations: at least 4.5:1 contrast, Regular text at 14px or larger, slide body text at body-lg or larger.
  • Split a crowded slide rather than shrinking the text.
  • Rotate accents across sections and slides so all four appear.
  • Let the interface recede. Neutral fills, soft elevation and space should define components.
  • Limit app screens to one statement moment.
  • Use black as the primary button colour inside the app.
  • Keep all components square, except radios and avatars.
  • Use 1px neutral separators between rows and groups in the interface.
  • Use 2–4px black dividers only on statement pages and slides.
  • Show the black focus ring on every interactive element.
  • Pair every accent fill with black text.
  • Use tabular numerals in tables and metrics.
  • Use muted grey text only for genuinely secondary information.

Don't

  • Don't include a logo, wordmark, corner marks or any brand device.
  • Don't write the brand name anywhere in the output.
  • Don't add branded title slides, closing slides, footers or taglines.
  • Don't use Thin, Light, Medium, Semibold or Extra Bold weights.
  • Don't set Regular text below 14px or Bold labels below 12px.
  • Don't put grey text on black or accent surfaces, or use neutral-500 for meaningful text.
  • Don't rely on colour alone to carry meaning.
  • Don't default to Coral, and don't use the same accent on three or more consecutive sections or slides.
  • Don't use more than one accent in a single slide or local area (charts excepted).
  • Don't draw outlines, borders or perimeter strokes around any component.
  • Don't use more than one statement moment per app screen.
  • Don't use accent colours for text, quotes, page backgrounds or card backgrounds.
  • Don't use Coral for non-destructive actions inside functional app interfaces.
  • Don't round buttons, badges, inputs, cards or accent elements.
  • Don't use pill-shaped tags or buttons.
  • Don't use warm greys, beige, cream or ivory anywhere.
  • Don't use zero-blur shadows that imitate an outline.
  • Don't combine browser list markers with custom markers.
  • Don't skip heading levels for visual effect.
  • Don't remove focus indicators.

15

Lint

Google’s official linter reads the base groups; the Answerable profile reads the rest and resolves the references the official linter reports as broken.

Answerable profile0 errors · 0 warnings · 20 infoShow
SeverityRulePathMessage
infoprofile-resolved-referencecomponents.button-defaultReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.button-secondaryReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.button-ghostReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.button-destructiveReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.button-iconReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.inputReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.cardReference {elevation.xs} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.card-mutedReference {elevation.none} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.tableReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.dropdown-menuReference {elevation.md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.dropdown-menuReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.popoverReference {elevation.md} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.dialogReference {elevation.lg} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.toastReference {elevation.lg} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.sidebarReference {sizes.sidebar-width} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.top-navReference {sizes.nav-height} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.top-navReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.separatorReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.button-accentReference {sizes.control-xl} resolves through the profile; the official linter reports it as broken-ref.
infoprofile-resolved-referencecomponents.statement-dividerReference {lines.statement-emphasis} resolves through the profile; the official linter reports it as broken-ref.
Official linter20 errors · 99 warnings · 1 infoShow
SeverityRulePathMessage
errorbroken-refcomponents.button-defaultReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.button-secondaryReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.button-ghostReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.button-destructiveReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.button-iconReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.inputReference {sizes.control-md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.cardReference {elevation.xs} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.card-mutedReference {elevation.none} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.tableReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.dropdown-menuReference {elevation.md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.dropdown-menuReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.popoverReference {elevation.md} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.dialogReference {elevation.lg} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.toastReference {elevation.lg} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.sidebarReference {sizes.sidebar-width} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.top-navReference {sizes.nav-height} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.top-navReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.separatorReference {lines.interface-separator} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.button-accentReference {sizes.control-xl} resolves through the profile; the official linter reports it as broken-ref.
errorbroken-refcomponents.statement-dividerReference {lines.statement-emphasis} resolves through the profile; the official linter reports it as broken-ref.
warningnonetypography.eyebrow.textTransform'textTransform' is not a recognized typography property. Valid properties: fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature, fontVariation.
warningnonetypography.numeric.fontVariantNumeric'fontVariantNumeric' is not a recognized typography property. Valid properties: fontFamily, fontSize, fontWeight, lineHeight, letterSpacing, fontFeature, fontVariation.
warningbroken-refcomponents.button-default.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-default.pressed'pressed' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-secondary.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-secondary.pressed'pressed' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-ghost.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-link.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-destructive.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-icon.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-icon.iconSize'iconSize' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.input.placeholderColor'placeholderColor' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.input.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.input.focus'focus' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.input.invalid'invalid' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.textarea.inherits'inherits' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.textarea.minHeight'minHeight' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.select.inherits'inherits' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.select.chevron'chevron' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.label.gap'gap' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.checkbox.unchecked'unchecked' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.checkbox.checked'checked' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.radio.unchecked'unchecked' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.radio.checked'checked' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.switch.track'track' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.switch.off'off' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.switch.on'on' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.switch.thumb'thumb' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.card.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.card.titleTypography'titleTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.card.descriptionTypography'descriptionTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.card.descriptionColor'descriptionColor' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.card-muted.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.badge-accent.variants'variants' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.alert.marker'marker' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.tabs.list'list' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.tabs.trigger'trigger' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.tabs.triggerActive'triggerActive' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.headTypography'headTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.headColor'headColor' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.cellTypography'cellTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.rowSeparator'rowSeparator' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.rowHover'rowHover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.rowSelected'rowSelected' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.numbers'numbers' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.table.cellPadding'cellPadding' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dropdown-menu.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dropdown-menu.item'item' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dropdown-menu.itemHover'itemHover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dropdown-menu.groupSeparator'groupSeparator' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.popover.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dialog.overlay'overlay' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dialog.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dialog.titleTypography'titleTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.dialog.maxWidth'maxWidth' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.toast.elevation'elevation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.sidebar.item'item' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.sidebar.itemHover'itemHover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.sidebar.itemActive'itemActive' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.sidebar.groupLabel'groupLabel' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.top-nav.left'left' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.top-nav.bottomSeparator'bottomSeparator' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.avatar.initials'initials' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.skeleton.animation'animation' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.progress.track'track' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.progress.indicator'indicator' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.separator.line'line' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-accent.hover'hover' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.button-accent.usage'usage' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.hero-statement.headline'headline' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.hero-statement.lead'lead' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat.number'number' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat.label'label' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat.labelColor'labelColor' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat.highlight'highlight' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat-display.number'number' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.stat-display.label'label' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.quote-panel-black.attribution'attribution' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.highlight-panel-black.headingTypography'headingTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.highlight-panel-black.bodyTypography'bodyTypography' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.numbered-steps.marker'marker' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.numbered-steps.title'title' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.numbered-steps.body'body' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.numbered-steps.gap'gap' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningbroken-refcomponents.statement-divider.line'line' is not a recognized component sub-token. Valid sub-tokens: backgroundColor, textColor, typography, rounded, padding, size, height, width.
warningcontrast-ratiocomponents.button-ghosttextColor (#000000) on backgroundColor (#00000000) has contrast ratio 1.00:1, below WCAG AA minimum of 4.5:1.
warningcontrast-ratiocomponents.button-linktextColor (#000000) on backgroundColor (#00000000) has contrast ratio 1.00:1, below WCAG AA minimum of 4.5:1.
warningorphaned-tokenscolors.accent-sky'accent-sky' is defined but never referenced by any component.
warningorphaned-tokenscolors.accent-yellow'accent-yellow' is defined but never referenced by any component.
warningorphaned-tokenscolors.accent-green'accent-green' is defined but never referenced by any component.
warningorphaned-tokenscolors.neutral-500'neutral-500' is defined but never referenced by any component.
warningorphaned-tokenscolors.ring'ring' is defined but never referenced by any component.
warningorphaned-tokenscolors.rule-statement'rule-statement' is defined but never referenced by any component.
warningorphaned-tokenscolors.success'success' is defined but never referenced by any component.
warningorphaned-tokenscolors.warning'warning' is defined but never referenced by any component.
warningorphaned-tokenscolors.info'info' is defined but never referenced by any component.
infotoken-summarynoneDesign system defines 29 colors, 26 typography scales, 3 rounding levels, 13 spacing tokens, 42 components.
warningtoken-like-ignoredsizes"sizes" looks like a design-token map but is not a recognized schema key (colors, typography, spacing, rounded, components). It will be silently ignored by export commands. Rename it to a supported key or move its values under a recognized section.
warningtoken-like-ignoredlines"lines" looks like a design-token map but is not a recognized schema key (colors, typography, spacing, rounded, components). It will be silently ignored by export commands. Rename it to a supported key or move its values under a recognized section.
warningtoken-like-ignoredmotion"motion" looks like a design-token map but is not a recognized schema key (colors, typography, spacing, rounded, components). It will be silently ignored by export commands. Rename it to a supported key or move its values under a recognized section.