Talk to the Director →
designesy.

Operating rules

Contracts

Design contracts turn principles into reusable operating rules for artifacts, interfaces, and review.

Designesy Contracts are portable design agreements that let people and agents carry design judgment across tools, sessions, codebases, and artifacts. They make design judgment inspectable — not reliant on slogans or vibes.

Published now

Why contracts matter

The question a contract answers

What exact value should I use? Why does this value exist? Where may this value be applied? What behavior does this component need? What should I avoid? How do I know if I broke the system?

A useful contract helps a future agent or team member answer all of these without relearning the design system from scratch. Contracts are the operational bridge between philosophy and execution.

Contract contents

A Designesy Contract should include all of the following — structured values for machines, rationale for humans, and verification criteria for both.

Contract discipline

Keep upstream-compatible schema names visible when compatibility matters: colors, typography, rounded, spacing, components. Use local extensions for doctrine, review, provenance, agent instructions, and verification — but do not hide the standard contract from tools.

Anti-patterns

Published contract

Designesy design system · v0.3.0

Public design contract for designesy.org. Derived from the live site token foundation, with Lab One · Poise, Lab Two · Takt, and Lab Three · Cadence rules adopted. Provisional, doctrine-referenced, and meant to be verified against the running site — not a frozen brand bible.

Contract home · /contracts/design-system · Machine export · /contracts/design-system.json · Public review · /review/designesy-org

01 · Source and provenance

02 · Primitive tokens

Colors (exact values)

TokenValueRole
--ink#ffffffPrimary text / foreground
--muted#a0a0a0Secondary text
--muted-dim#6b6b6bTertiary / meta text
--paper#000000Page background
--surface#0a0a0aCard / panel base
--surface-raised#111111Elevated surface
--signal#0133cbBrand signal accent
--signal-light#3358e8Signal hover / focus lift
--activation#fecc34Activation highlight (reserved)

Surfaces and lines

TokenValueRole
--surface-softrgba(255, 255, 255, 0.03)Soft fill / note background
--surface-hoverrgba(255, 255, 255, 0.06)Hover wash
--linergba(255, 255, 255, 0.12)Default border
--line-strongrgba(255, 255, 255, 0.22)Emphasized border
--line-faintrgba(255, 255, 255, 0.06)Subtle divider
--signal-dimrgba(1, 51, 203, 0.14)Signal wash / badge fill

Shape, shell, motion primitives

TokenValueRole
--radius6pxDefault corner radius
--radius-sm4pxCompact controls / nav chips
--maxw1080pxContent shell max width
--duration0.6sPrimary entrance duration
--easecubic-bezier(0.22, 0.61, 0.36, 1)Default ease
--ease-outcubic-bezier(0.23, 1, 0.32, 1)Exit / settle
--ease-in-outcubic-bezier(0.77, 0, 0.175, 1)Symmetric motion
--ease-drawercubic-bezier(0.32, 0.72, 0, 1)Drawer / panel slide

Shadows (supporting elevation, borders lead): --shadow-sm 0 1px 3px rgba(0,0,0,0.4) · --shadow-md 0 8px 30px rgba(0,0,0,0.35) · --shadow-lg 0 24px 80px rgba(0,0,0,0.5)

Color roles
--ink
--muted
--muted-dim
--signal
--signal-light
--activation
Each chip renders the exact token value. Dark roles on dark surfaces — contrast is the product.
Surface depth
--paper
--surface
--raised
--soft
--hover
--signal-dim
Near-black surfaces, not gray. Depth from opacity layers, not heavy shadows.
Radius scale
6px
4px
none
6px default · 4px compact — no pill inflation.

03 · Semantic tokens

Surface roles

paper = page void · surface = default panel · surface-raised = hover/emphasis panel · surface-soft = quiet note fill · surface-hover = interactive wash

Line roles

line = default structure · line-strong = active/emphasis edge · line-faint = quiet subdivision

Signal roles

signal = brand action and wordmark dot · signal-light = hover and focus lift · signal-dim = badge/wash · activation = reserved highlight, not general chrome

Type roles

ink = primary claim · muted = supporting body · muted-dim = eyebrows, meta, footers

04 · Typography rules

05 · Spacing and layout rules

TokenValueRole
Shell horizontal1.5rem (1rem ≤560px).site-shell / .surface-page
Section vertical3.5rem / 3rem doctrine.section / .doctrine-section
Card padding1.25–1.5rempillars, surfaces, items
Grid gap0.75–1rempillar / surface grids
Control min height42px buttons, 32px sound toggletouch-friendly targets
Breakpoints860px · 720px · 560pxgrids · topbar · single-column

Layout doctrine: one max-width shell, editorial vertical rhythm, grids collapse before type becomes unreadable. Prefer fewer columns over cramped four-up layouts on mid widths.

06 · Shape and surface rules

07 · Component behavior and states

01

Primary button

default signal fill · hover signal-light · active scale(0.97) · focus-visible 2px signal-light

02

Ghost button

transparent + line-strong · hover surface-hover · active scale(0.97)

03

Nav link

muted · hover ink + surface-hover · sticky topbar blur when scrolled

04

Card / pillar

surface + line · hover raised + line-strong · active scale(0.985); lift only on fine pointer hover

05

Sound toggle

aria-pressed sync · pressed shows signal-light · Cuelume setEnabled(true|false)

06

Definition block

bordered surface · hover line-strong · label uppercase muted-dim

Primary button states
DefaultPrimary
HoverPrimary
ActivePrimary
FocusPrimary
default → hover (signal-light) → active (scale 0.97) → focus-visible (2px ring)
Ghost button
DefaultGhost
ActiveGhost
transparent + line-strong · hover surface-hover · active scale(0.97)
Easing curves
--ease
--ease-out
--ease-in-out
--ease-drawer
Four timing functions. Watch the dot travel — same distance, different feel.

08 · Accessibility requirements

09 · Motion and reduced-motion

09a · Ten non-negotiable motion standards

The positive form of the motion anti-patterns below. Every motion-bearing artifact must pass all ten.

01

Easing is deliberate — use contract cubicBezier tokens, not bare CSS keywords

02

Properties are explicit — never transition:all; name the exact properties

03

Entrances have opacity — animate from scale(0.9–0.97) + opacity, never scale(0)

04

Keyboard is still — no motion on keyboard-initiated or 100+/day actions

05

Layout is not animated — never animate width, height, margin, padding, top, left

06

Touch is gated — :hover motion on touch-visible surfaces requires explicit gating

07

Duration is bounded — UI animation stays ≤ 300ms unless justified

08

Reduced-motion is handled — every movement has a prefers-reduced-motion path

09

Press is asymmetric — press and release use asymmetric timing

10

Easing is never ease-in — deceleration (ease-out) or custom curves only

09b · Motion anti-patterns

Block on sight

Caution

09c · Spring physics

Custom $type: spring via $extensions.designesy. Net-new relative to W3C DTCG 2025.10.

TokenValueRole
spring.defaultdamping 1.0 · response 0.4Default spring physics for natural motion
spring.momentumdamping 0.8 · response 0.3Momentum spring for continued motion

09d · Acoustic tokens

Custom $type: sound via $extensions.designesy. Net-new relative to W3C DTCG 2025.10. Full cue table at /acoustic-tokens.

10 · Anti-patterns

11 · Implementation notes

12 · Verification criteria

13 · Open tensions

Designesy design system contract v0.3.0 — public artifact discipline, not legal advice or a client service agreement. Values are taken from the live site tokens. Poise, Takt, and Cadence rules are adopted. Contract home: /contracts/design-system · Machine export: /contracts/design-system.json. When the human page and the live styles disagree, the live styles are authoritative until the contract is revised. Human and machine surfaces stay synchronized.