DESIGN SYSTEM · DA

One system. Every page. No exceptions.

Every colour, size, border and motion the marketing site is allowed to use. Copy the values from this page; do not invent new ones. If a page needs something that is not here, it gets added here first.

26
COLOUR TOKENS
9
KIT SPECIMENS
4
KEYFRAMES
SOURCE OF TRUTH
  • resources/css/marketing.cssThe tokens. Every utility on this page resolves to one of them.
  • components/marketing/uiThe kit. Nine specimens build every page; there are no page-local variants.
  • docs/design/marketing/DESIGN-SYSTEM.mdThe written rules this page renders.
1500

Maximum content width in pixels, centred, with 30px gutters. Section owns the shell; no page hand-rolls it.

MARKETING.CSS — --SPACING-SHELL
130

Top padding in pixels between sections. 150 before a shift in subject, 56 under the breadcrumb rule.

UI/SECTION.TSX — RHYTHM
2

Radius in pixels, on buttons only. Dots and pills are 999px and everything else is square.

MARKETING.CSS — --RADIUS-BTN
2

Backgrounds per page: paper and ink bands. A third surface is the one thing this system cannot absorb.

MARKETING.CSS — SURFACE TOKENS
FOUNDATIONS · 01

Palette

Two backgrounds only — paper and ink. Accent carries action and state, mint reads positive on ink, and the pass and fail pairs exist for the comparison specimen and nothing else.

26 TOKENS · 5 ROLES · NO GRADIENTS
SURFACE

Paper is the only light background. Panels are a single step down, and there is no third surface.

paper#FFFFFF

Page background.

lift#FFFFFF

Raised surface — the mega-menu, and nothing else.

panel#F3F3F1

Inset panels, table headers, hover fill.

panel-2#F8F8F6

The light band of the hatch.

panel-3#EFEFEC

Pressed or selected panel.

line#E6E5E0

Internal dividers inside a bordered box.

line-soft#F0EFEB

List-row and table-row dividers.

line-2#ECEBE6

Dividers drawn inside a panel.

edge#CCCAC3

Dashed placeholders and inactive chip borders.

INK

Text and every 1px structural border. Four steps, darkest first.

ink#0C0C0A

Headings, outer borders, dark panels.

ink-body#45433D

Body copy.

ink-muted#63615A

Mono labels and meta. 6.2:1 on paper.

ink-faint#78766E

Disabled state and far field. 4.6:1 on paper — not for small text on a panel.

ON INK

The only values allowed on a #0C0C0A panel, alongside mint and warn.

on-dark#D8D5CA

Body copy on an ink band.

on-dark-dim#7D7A70

Meta and dimmed terminal output on ink.

rule-dark#2E2D28

Dividers on ink.

ACCENT

Action, active state, eyebrow. One accent, one hover, and two outcome colours for ink panels.

accent#2E24E0

Primary action, active nav entry, eyebrow, focus ring.

accent-hover#5C52FF

Link hover.

mint#5CE8B0

A positive outcome on ink.

warn#E8886F

Terminal error text on ink.

STATE PAIRS

The comparison specimen and nothing else. Never a page background, never a general good/bad tint.

fail-bg#FBF3F1

Raw-engine column fill.

fail-ink#7A2E2C

Failing sample text.

fail-label#B4514F

Failing column label.

pass-bg#F0F6F3

Transglot column fill.

pass-ink#0C5741

Passing sample text.

pass-label#008059

Success label and the live dot.

FOUNDATIONS · 02

Type

Three roles, three families. Display sets every headline, body sets every sentence, and the mono label carries all system speech: eyebrows, meta, numbers, code.

BRICOLAGE GROTESQUE · IBM PLEX SANS · IBM PLEX MONO
DISPLAY · BRICOLAGE GROTESQUE

Headlines and figures. Weight 800 for h1, h3 and numbers, 700 for section heads. Tracking is always negative.

BODY · IBM PLEX SANS

Every sentence. 400 for prose, 500 for emphasis and small buttons, 600 for the CTA labels. Never set below 13.5px.

LABEL / CODE · IBM PLEX MONO

Uppercase system speech at 9.5–11px with .16–.2em tracking. The same family, mixed case and untracked, carries code and figures.

The type scale: every role, the single utility that sets it, and the size, tracking and line height it carries.
RoleUtilitySizeTrackingLine height
Statement hero — home page only
Display 800
text-heroclamp(46px, 8.4vw, 132px)-0.05em0.9
h1 — page title
Display 800
text-h1clamp(42px, 5.2vw, 80px)-0.035em0.95
h2 — section head
Display 700
text-h2clamp(34px, 4.4vw, 60px)-0.03em1
h3 — card title
Display 800
text-h326px-0.035em1.02
h4 — row title
Display 800
text-h420px-0.02em1.1
Big sourced figure
Display 800
text-statclamp(38px, 4.4vw, 58px)-0.03em1
Inline figure — proof row
Display 800
text-figure26px-0.02em1
CTA band headline
Display 800
text-ctaclamp(38px, 5.2vw, 74px)-0.035em0.95
Lede
Body 400
text-lede19px1.5
Body — large
Body 400
text-body-lg18px1.5
Body
Body 400
text-body16px1.55
Small — list rows, table cells
Body 400
text-small14.5px1.5
Tiny — dense meta
Body 400
text-tiny13.5px1.5
Label
Mono 500
text-label11px0.16em1
Label — small
Mono 500
text-label-sm9.5px0.16em1
Label — eyebrow
Mono 500
text-label-lg11px0.2em1
Code and figures
Mono 400
text-code13px1.6
FOUNDATIONS · 03

Geometry

Structure is drawn with borders, not shadows. Data sits inside one outer box with hairline dividers — never in a row of floating cards.

RULES
SHELL
max-width 1500px, centred, 30px side gutters. The Section component owns it — no page hand-rolls the shell.
RHYTHM
130px of top padding between sections, 150px before a shift in subject, 56px between the breadcrumb rule and the hero.
BORDERS
1px ink outside, 1px line inside. The mega-menu carries the only shadow in the system.
RADIUS
2px on buttons, which own it. 999px on dots and pills. Everything else is square.
LAYOUT
Flex or grid with gap. Data lives in one bordered grid with hairline gaps, never in a row of floating cards.
IMAGERY
A hatched or dashed slot with a mono caption stands in for art. Never a drawn illustration; every image loads lazily.
HATCHED PLACEHOLDER
PRODUCT SHOT · 16:9

hatch — repeating-linear-gradient(135deg, panel 0 9px, panel-2 9px 18px)

CORNER TICKS
DROP MEDIA HERE

7×7px accent squares, offset −4px, on hero media only

COMPONENTS

Nine parts build every page

Each specimen below is live markup rendered by the same component the pages import — not a picture of one. Lift it as it is; the only variables are the words.

NO PAGE-LOCAL VARIANTS
01 · BUTTONS

accent · ink · outline on paper; paper is the only button allowed on an ink band. Radius 2px, here and nowhere else.

02 · CHIPS, PILLS, DOTS
XLIFF 2.0GLOSSARYACTIVEDISABLED
BATCH RUNNING
PASSSELECTEDINACTIVE

chip: square, 1px border, mono. dot: 999px. A blinking dot means something is happening right now — never decoration.

03 · SECTION HEAD
DEPLOYMENT

Drops into the pipeline you already run

Eyebrow, heading, one sentence under 520px, and optional right-aligned mono meta on the same baseline.

eyebrow (label-lg, accent) → h2 → 16px sub. `as` drops it to an h3 when the outline needs one.

04 · STAT GRID
20

Native file formats, from JSON and Android XML to XLIFF 2.0, .NET .resx and Unreal Engine PO.

APP/ENUMS/FILEFORMAT.PHP — 20 CASES
2,000

Words a month on the Free plan. It is a hard cap, so it stops metering instead of billing you.

CONFIG/PLANS.PHP — FREE TIER
$0.003

Per word past your plan’s included words, with a spend cap you set yourself.

CONFIG/PLANS.PHP — OVERAGE RATE

Three or four columns in one bordered box. Every figure names the file that proves it; a number without a source does not ship.

05 · DARK INSET
TERMINAL TONES
ILLUSTRATIVE
$ npx transglot push --wait
412 keys uploaded · 38 new since the last run
ai batch queued · polling until terminal
✓ 26 keys served from memory at no quota cost
! 3 segments below the review threshold

ink panel · rules rule-dark · body on-dark · a good outcome is mint · an error is warn. Those four are the whole palette inside it.

06 · COMPARISON PAIR
FAILURE CLASS 02 — TERMINOLOGY
Open the Inspector panel to review a segment
Raw engine

Ouvrez le panneau d’inspection pour examiner un segment

PRODUCT NAME TRANSLATED · DOCS AND UI DISAGREE
Transglot

Ouvrez le panneau Inspector pour examiner un segment

GLOSSARY · DO-NOT-TRANSLATE TERM HELD

The fail and pass pairs exist for this and nothing else. Samples are real output, so they take the body face with lang and dir set.

07 · RAIL + DETAIL
Translate on merge, commit the result back

The Action runs push and pull on your own runner, so the translated locale files land in the repository they came from. Nothing leaves your version control.

Active row is an ink fill with paper text. Wired as a real tab set: roving selection, arrow keys, a labelled panel.

08 · DATA TABLE
Four of the twenty shipped file formats, as a specimen of the data table.
FormatExtensionPlurals
JSON (flat).jsonno
JSON (nested).jsonno
Android XML.xmlyes
iOS Strings.stringsno

Mono header on the panel tone, 13px row padding, real table markup. Figures always take the mono face so columns line up.

09 · BREADCRUMB + CROSS-LINK

Every page opens with the crumb rule and closes with two to four cross-links. Both are real anchors — there is no clickable div on this site.

CHROME

The same bar and footer on every page

Seven top-level entries, four of them opening the same mega-menu. The bar above this page is the specimen: it is fixed, paper, ruled 1px below, and no page adds, removes or relabels an entry.

ONE SHADOW IN THE SYSTEM
BAR

Fixed, paper, 1px ink rule below, a 14px/30px row inside the same 1500px shell. Wordmark and version left, entries centre, Talk to sales and Start free right.

ENTRIES

Product · Platform · Solutions · Developers · Pricing · Customers · Trust. The first four open the shared mega-menu on hover and on keyboard focus.

ACTIVE

The active entry is derived from the URL by sectionForPath, not declared per page — accent, weight 500, 2px accent underline. Exactly one, or none on the home page and Contact.

BREADCRUMB

Every page except the home page opens with the mono breadcrumb rule. Home is prepended for you; the last crumb is accent and carries aria-current.

FOOTER

The wordmark cell beside six link columns in one bordered grid, then the compliance row read from config/trust.php and the copyright rule. Every entry is a real anchor.

CLOSE

Every page ends with the same dark CTA band: 42px vertical rules, one paper button, one mono note. Only the words change.

MOTION

Four keyframes, nothing else

Content that changes blurs in. Swapped text alternates between two identical keyframes so a re-render always replays. Nothing eases for longer than 550ms.

tginA / tginB · BLUR-IN
Hello

Any value that swaps: translated copy, the detail pane of a selected tab, a figure that just recalculated. The two keyframes are byte-identical so alternating the name forces a replay.

0.45s cubic-bezier(.2,.7,.2,1) · blur 12px → 0 · y 14px → 0

tgmar · MARQUEE
  • Hello
  • こんにちは
  • Hallo
  • Bonjour
  • Hola
  • مرحبا
  • Olá
  • 안녕하세요
  • Ciao
  • Привет
  • नमस्ते
  • 你好
  • Merhaba
  • Cześć
  • Hej
  • Xin chào
  • Γειά σου
  • שלום

One band per page at most, always linear, always duplicated content so the loop has no seam. The duplicate is hidden from assistive tech.

translateX(0 → −50%) · linear · infinite

tgblink · LIVE DOT
SESSION LIVETRANSLATING

Reserved for something genuinely happening right now — an open session, a running job. A static status marker does not blink.

1.4s steps(1) infinite · never on decoration

EASING

One curve: cubic-bezier(0.2, 0.7, 0.2, 1). Nothing in the system eases for longer than 550ms.

REDUCED MOTION

prefers-reduced-motion collapses every animation and transition to 0.01ms, once, in marketing.css. No component branches on it.

VOICE

Declarative, second person, sourced

Every headline states what happens. Every number says where it came from. Mono labels speak like a system, not like a brand.

WRITE

  • State what happens: “Translate on merge, commit the result back.”
  • Address the reader as you, in the present tense.
  • Put the real number in the sentence and name the file it came from underneath.
  • Let mono labels speak like a system: SESSION METER, PATH 02, FAILURE CLASS 01.
  • Name the trade-off before the reader has to ask for it.
  • Say “in progress” when something is in progress.

NEVER

  • Exclamation marks, emoji, or “revolutionary”.
  • Adjective stacks — “powerful, seamless, enterprise-grade”.
  • A figure with no source line under it.
  • A certification, an uptime percentage or a customer count the repository cannot prove.
  • Sentences that describe the page instead of the product.
  • A new colour, font or radius to make one section feel special.
INVENTORY

Every page, one chrome

Which patterns each page is built from. A new page picks from this column — it does not add a pattern of its own. The nav section is computed from the URL by the same function the top bar uses.

36 URLS · SHARED BAR, FOOTER AND CTA BAND
Every marketing URL the site serves, its nav section, and the patterns it is assembled from.
PageURLNav sectionPatterns
Home/Statement hero, live translation demo, comparison pairs, terminal inset, marquee, stat grid
Product/productPRODUCTPage hero, rail + detail, stat grid, cross-links
AI translation/product/ai-translationPRODUCTPage hero, feature grid, comparison pair, dark inset
In-context editor/product/in-contextPRODUCTPage hero, feature grid, placeholder media, stat grid
Editor & workflow/product/editorPRODUCTPage hero, feature grid, rail + detail
Glossary & terminology/product/glossaryPRODUCTPage hero, comparison pair, data table
Quality gate/product/qualityPRODUCTPage hero, comparison pair, policy rail, YAML inset
Developer platform/product/developerPRODUCTPage hero, code insets, data table, cross-links
Features/featuresPLATFORMPage hero, feature grid, comparison pair, stat grid
Languages/languagesPLATFORMPage hero, filterable data table, tier chips, marquee
Integrations/integrationsPLATFORMPage hero, category rail + detail, catalogue grid
Solutions/solutionsSOLUTIONSPage hero, segment rail + detail, cross-links
For developers/solutions/developersSOLUTIONSPage hero, code inset, stat grid, first-week timeline
For localization managers/solutions/localization-managersSOLUTIONSPage hero, rail + detail, data table, stat grid
For agencies/solutions/agenciesSOLUTIONSPage hero, rail + detail, data table
For open source/solutions/open-sourceSOLUTIONSPage hero, eligibility grid, disclosures
For games/solutions/gamesSOLUTIONSPage hero, format table, rail + detail
Changelog/changelogDEVELOPERSPage hero, release feed, tag chips, policy grid
API changelog/api-changelogDEVELOPERSPage hero, release feed, deprecation table
Design system/design-systemDEVELOPERSToken grids, type specimen, nine live specimens, inventory
Blog/blogDEVELOPERSPage hero, featured post, topic filter, post grid
Blog post/blog/{slug}DEVELOPERSArticle shell: meta rail, prose, pull quote, related posts
Resources/resourcesDEVELOPERSPage hero, featured dark inset, format filter, library grid
Ebooks & reports/resources/ebooksDEVELOPERSPage hero, rail + detail, chapter list, request form
Pricing/pricingPRICINGPage hero, plan columns, rate card, comparison table, FAQ
Customers/customersCUSTOMERSPage hero, case rail + detail, segment table, quotes
About/aboutCUSTOMERSPage hero, comparison pair, milestone list, stat grid
Contact/contactPage hero, route rail, form, office list
Trust/trustTRUSTPage hero, control grid, posture table, disclosures
Trust centre/trust-centerTRUSTPage hero, subprocessor table, document pack list
SLA/slaTRUSTPage hero, tier table, credit schedule
Open-source programme/ossTRUSTPage hero, eligibility grid, application form
Privacy policy/legal/privacyTRUSTDocument shell: prose measure, anchor headings, TOC rail
Terms of service/legal/termsTRUSTDocument shell: prose measure, anchor headings, TOC rail
Data processing addendum/legal/dpaTRUSTDocument shell: prose measure, anchor headings, TOC rail
Cookie policy/legal/cookiesTRUSTDocument shell: prose measure, anchor headings, TOC rail

Build the next page out of this file.

Start from the closest existing page, keep the bar and footer untouched, and reuse a specimen before you invent one.