The Context Mode brand. Every value, in one place.

Logo, color, type, layout, components, voice and motion, as the site uses them on 8 October 2026. Use this page as the one reference for videos, social images, slides and every other visual.

Each rule has a live example next to it, drawn with the site's own stylesheet (/styles/brand.css). The same values are in tokens.json. Older brand files say IBM Plex Sans for body text, serif italic accents and a blue or green cursor. Those are retired: where they and this page disagree, this page wins.

Summary

PartRule
LogoThe words Context Mode in IBM Plex Sans 600, letter-spacing -0.02em, then a cursor block with an ink-to-grey gradient. Use the files below, or the CSS on this page with the font loaded.
FontsGeist for everything. Geist Mono for code, commands, numbers in data and labels. IBM Plex Sans 600 for the wordmark only.
ColorInk #0a0a0a on white, grey #6b6b74 for the second half of a headline. Color means something: green Save, blue Remember, red Protect.
HeadlinesGeist 600, tight tracking, two tones: ink first, then grey. Never italic, never serif.
ShapeFlat, 1px borders #e4e4e7. Radius 8px buttons, 10px cards, 14px demo surfaces.
LayoutContent 1280px wide with 32px sides. Sections 112px apart.
VoiceShort, plain sentences. Every number with its source. No hype words.
MotionEase out cubic-bezier(.23,1,.32,1), 150ms for hovers, nothing moves under reduced motion.

Files

The SVG files draw their text as outlines, so they need no font. The PNG files have a transparent background.

FileWhat it isSize
tokens.jsonEvery color, font, type size, radius, spacing, layout, motion and canvas token on this pageJSON
wordmark-on-light.svgWordmark for light backgrounds: ink text, ink-to-grey cursor650.6 by 78, drawn at a 100px font size
wordmark-on-dark.svgWordmark for dark backgrounds: #fafafa text, light-to-grey cursor650.6 by 78
wordmark-on-light@2x.pngThe light-background wordmark at 2x1301 by 156 px
wordmark-on-dark@2x.pngThe dark-background wordmark at 2x1301 by 156 px
app-icon.svgApp icon: CM and the cursor on an ink tile64 by 64
app-icon-512.pngApp icon512 by 512 px
app-icon-1024.pngApp icon1024 by 1024 px
brand.mdThis page as Markdown, for agentsText

The logo is a wordmark: the words Context Mode and a cursor block after them. The cursor is the mark of the brand. It stands for the place where your agent's next request is written.

Construction

PartValue
TextContext Mode: two words, capital C and M
FontIBM Plex Sans, weight 600 (SemiBold)
Letter-spacing-0.02em
Line height1
Text color#0a0a0a on light, #fafafa on dark
Cursor width0.28em
Cursor height0.78em
Gap before the cursor0.12em after the last letter (margin-left)
Cursor positionCentred on the 1em line box (align-items: center): its top is 0.11em below the line box top, 0.765em above the baseline
Cursor corners1px radius in CSS; 0.05em in the SVG files, so the shape holds at any size
Cursor gradientTop to bottom. On light #0a0a0a to #6b6b74; on dark #fafafa to #8b8b93
Size at a 100px font sizeLine box 655.8 by 100 px; text 615.8 px; ink box 650.6 by 78 px
Height of the ink boxThe cursor height: the cursor reaches above the d (0.740em) and below the round letters (0.012em under the baseline)

In HTML, set it like this. Load IBM Plex Sans 600 first (see Type); without the font, use the SVG file.

<a class="cm-wordmark" href="https://context-mode.com">Context Mode<span class="cursor"></span></a>

.cm-wordmark{display:inline-flex;align-items:center;font-family:'IBM Plex Sans',sans-serif;font-weight:600;
  letter-spacing:-.02em;line-height:1;color:#0a0a0a;white-space:nowrap}
.cm-wordmark .cursor{display:inline-block;width:.28em;height:.78em;margin-left:.12em;border-radius:1px;
  background:linear-gradient(180deg,#0a0a0a,#6b6b74)}
/* on a dark background */
.on-dark .cm-wordmark{color:#fafafa}
.on-dark .cm-wordmark .cursor{background:linear-gradient(180deg,#fafafa,#8b8b93)}

Light and dark

Context Mode wordmark for light backgrounds
On white or #fafafa: wordmark-on-light.svg
Set in CSS, as in the site's top nav
Set in CSS, on dark

Use the light version on white, #fafafa and light photos. Use the dark version on #0a0a0a, #111113 and dark photos. On a colored or busy background, place the logo on a white or ink panel instead.

Clear space and minimum size

The wordmark inside its clear space
Clear space: the cursor's height (0.78em) on every side of the ink box
The wordmark at its minimum sizeThe app icon at 16pxThe app icon at 32px
Minimum: a 16px font size (104px wide). Smaller than that, use the app icon, 16px or larger

App icon

Context Mode app icon on a light grey background
The site's favicon and web app icon are this mark
PartValue, on a 64 by 64 grid
Tile64 by 64, corner radius 14, #0a0a0a
LettersCM in IBM Plex Sans 600, size 32, letter-spacing -1.5, #ffffff; start x 9, baseline y 43
Cursorx 49, y 20, 6 by 24, radius 1, gradient top to bottom #ffffff to #8b8b93
Site files/favicon.svg, /favicon.ico (16, 32, 48), /apple-touch-icon.png (180), /icon-192.png, /icon-512.png

Do not

Don't
Recolor the cursor. No blue, green or red cursor
Don't
Stretch, squash or slant it
Don't
Set it in another font, even Geist
Don't
Use a serif or italics
Don't
Add a glow, shadow, outline or blink

Color

The brand is ink on white. Three colors carry meaning and nothing else: green for saved, blue for remembered, red for blocked. Use them only for the pillar or state they stand for, never to decorate.

Neutrals

TokenHexRole
--ink#0a0a0aHeadlines, the wordmark on light, primary buttons, dark sections
--text-2#3f3f46Body text
--text-3#6b6b74Secondary text, the grey half of a headline, eyebrows, the end of the cursor gradient
--text-4#a1a1aaCaptions, hints, small mono labels, URLs on share cards
--border#e4e4e7Card, button and table borders
--border-light#efeff1Hairlines inside cards and between rows
hover border#d4d4d8Border of a ghost button or card link on hover
--bg#ffffffPage background
--bg-alt#fafafaAlternate sections, the footer, hover fill
--bg-code#f4f4f5Inline code, demo surfaces, the request path frame
selection#dbe7ffSelected text background; the text stays ink

Dark

TokenHexRole
--night#0a0a0aDark sections and the app icon tile
card on dark#111113Cards and panels on a dark section
--night-2#141416Raised surface on dark
row on dark#18181bRows inside a dark card
border on dark#232326Card borders on dark
--night-3#27272aRules and dividers on dark
button border on dark#3f3f46Ghost button border on dark
grey on dark#8b8b93The grey half of a headline on a dark section; eyebrows on dark
body on dark#a1a1aaBody text on dark
text on dark#fafafaHeadlines and the wordmark on dark

The three pillars

Save, Remember and Protect are the three things Context Mode does on each request. Each has one color. Keep this order.

PillarColorTokenTag tintCoversWords on tags
Save#0e9f6e--save#e7f5f1Context Saving, Thinking in Code, Active Contextsaved, folded, in code
Remember#1a56db--accent#e8eefbRecall, Memory, Skills, Search, Session resumerecalled, remembered, skill
Protect#e5484d--block#fcededProtectblocked
savedrecalledblocked
The home page's How it works tabs (a dot in each color) and the live view's tags

Tints and states

UseRuleHex
Tag backgroundcolor-mix(in srgb, pillar 10%, #fff)#e7f5f1 · #e8eefb · #fceded
Live view tagText in the pillar color, background 7% of it on white, border 30% of it#eef8f5 · #eff3fc · #fdf2f3
Active box on darkPillar 18% (Save), 22% (Remember) or 20% (Protect) on #0a0a0a, 1px border in the pillar color#0b251c · #0e1b38 · #361617
Allowed result cardWhite, border #bbf7d0, label in green#bbf7d0
Blocked result cardWhite, border #fecaca, label in red#fecaca
Save badgeGreen text on --accent-dev-bg#ecfdf5
Remember tint--accent-light, text in --accent-dark#e8effc · #143faa
Focus ringoutline: 2px solid #1a56db; outline-offset: 2px#1a56db

Type

FamilyWeightsUseCSS stack
Geist400, 500, 600, 700Everything: headlines, body, buttons, stats'Geist',-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif
Geist Mono400, 500Code, commands, file names, numbers in data, eyebrows, small labels, URLs'Geist Mono',ui-monospace,'SF Mono',Menlo,monospace
IBM Plex Sans600The wordmark and the app icon. Nothing else'IBM Plex Sans',sans-serif

Load all three from Google Fonts with one link. The page body sets font-feature-settings:"ss01","cv11", letter-spacing -0.003em and line-height 1.6.

<link href="https://fonts.googleapis.com/css2?family=Geist:wght@400;500;600;700&family=Geist+Mono:wght@400;500&family=IBM+Plex+Sans:wght@600&display=swap" rel="stylesheet">

Scale

Home hero headline · 600 · clamp(2.3rem, 4vw, 3.3rem) · line-height 1.02 · -0.045em
Spend less on coding agents. Control what they do.
Section headline · 600 · clamp(2rem, 4.2vw, 3.25rem) · line-height 1.04 · -0.035em
Your agent asks. Your rules answer.
Docs headline · 600 · 1.45rem · line-height 1.25 · -0.015em
How Active Context works
Card title · 600 · 1.05rem · -0.01em
Checked before it runs
Lead · 400 · clamp(1.05rem, 1.6vw, 1.2rem) · line-height 1.55 · text-3
Context Mode sits between your coding agents and the model. Each request costs less, sessions carry what they learned, and your rules decide what runs.
Body · 400 · 16px · line-height 1.75 · text-2
Protect checks every command, file read, web fetch and tool-server call from Claude Code and Codex before it runs.
Eyebrow · Geist Mono 400 · 12px · 0.04em · text-3
How it works
Mono label · Geist Mono · 11px · uppercase · 0.06em · text-4
Your coding agent
Big number · 600 · clamp(2.4rem, 4.5vw, 3.4rem) · line-height 1 · -0.05em
65.5%
RoleSelectorSizepxWeightLine heightTrackingColor
Home hero headline.hero .hm-h1clamp(2.3rem,4vw,3.3rem)36.8 to 52.86001.02-0.045emink, then text-3
Product page headline.p-h1clamp(2.4rem,4.6vw,3.6rem)38.4 to 57.66001.02-0.045emink, then text-3
Section headline.x-split .h2clamp(2rem,4.2vw,3.25rem)32 to 526001.04-0.035emink, then text-3
Headline, default.h2clamp(1.8rem,4.5vw,2.8rem)28.8 to 44.86001.1-0.035emink, then text-3
Closing headline, dark.x-final h2clamp(2rem,4.5vw,3.25rem)32 to 526001.05-0.045em#ffffff, then #71717a
Docs page title.doc h1clamp(2rem,4vw,2.6rem)32 to 41.66001.1-0.025emink, then text-3
Docs section.doc h21.45rem23.26001.25-0.015emink
Card title.bn b1.05rem16.8600normal-0.01emink
Hero lead.hero .hero-subclamp(1.05rem,1.6vw,1.2rem)16.8 to 19.24001.55bodytext-3
Section lead.x-split p1.05rem16.84001.6bodytext-3
Body.doc p16px164001.75bodytext-2
Small.bn p14px144001.55bodytext-3
Caption.x-note, .hm-fine12.5px to 13px12.5 to 134001.55bodytext-3 or text-4
Button.btn14px (hero 15px)145001-0.005emper button
Eyebrow.x-eyebrow12px Geist Mono12400normal0.04emtext-3
Mono label.hx-k, .p-card-h10.5px to 11px Geist Mono, uppercase10.5 to 11400normal0.05em to 0.06emtext-4
Code block.doc pre13px Geist Mono134001.70Ink on #fafafa
Big number.p-stats bclamp(2.4rem,4.5vw,3.4rem)38.4 to 54.46001-0.05emink
Stat tile.hm-tile .hm-v1.9rem30.4600normal-0.04emink

Sizes in rem assume 1rem = 16px. The middle value of a clamp follows the viewport width; the px column gives the smallest and largest size.

Two-tone headlines

A headline is two parts. The first part says the thing in ink. The second part, in grey, finishes it. Both parts have the same font, weight, size and tracking. In HTML, the grey part is an <em> that the stylesheet sets to font-style:normal and color:var(--text-3): it is never italic and never serif.

How it works
Spend less. Remember more. Run only what you allow.

Context Mode acts at three points on each request: before it goes out, before a tool runs, and when a result comes back.

BackgroundFirst partSecond part
White or #fafafa#0a0a0a#6b6b74
Dark section (.x-dark)#fafafa#8b8b93
Closing call to action (.x-final)#ffffff#71717a

Mono

Numbers

Layout

Width and gutters

ContainerValue
Page content (.wrap)max-width 1280px, 32px padding left and right at every width: 1216px of content, 326px on a 390px phone
Narrow (.wrap-narrow)max-width 880px, 32px padding
DocsMenu 232px, article, "On this page" 200px; gap 48px; max-width 1360px; article 760px to 780px
Card gap12px (bento, stat rows)
Card padding1.4rem to 1.5rem (22px to 24px)
Demo panel padding0.9rem
Head to content36px to 48px from a section head to the grid under it

Grids

GridColumnsGapStacks
Section head (.x-split)1.25fr 1fr, bottom-aligned2rem 4rembelow 900px
Home hero (.x-hero-grid)1fr 1.08fr56pxbelow 1000px
Product hero (.p-hero-grid)1fr 1.05fr56pxbelow 1000px
Bento (.bento)3 columns; the wide card spans 2 by 212px2 below 900px, 1 below 640px
Feature grid (.p-grid)auto-fit, min 240px1px hairlinesby width
Steps (.p-steps)auto-fit, min 200pxhairlinesby width
Plans (.x-plans)4 columnshairlines2 below 980px, 1 below 640px

Section spacing

SectionPadding (top and bottom)
Chapter (.chapter), the default112px
Tight chapter56px
Product page section (.p-sec)96px; 64px below 700px
Home hero88px top, 96px bottom; 56px and 72px below 1000px
Product hero64px top, 88px bottom
Try it band72px
FAQ56px
Closing call to action96px
Footer72px top, 40px bottom

Breakpoints

Max widthWhat changes
1060pxThe Products menu drops to 2 columns
1000pxThe home and product heroes stack to one column
980pxPlans: 2 columns
900pxSection heads stack; bento 2 columns; docs drop the side menu into a button
860pxThe top nav becomes a menu button; the footer is 2 columns
720pxRequest path diagrams turn vertical
700pxProduct sections 64px
640pxBento, plans and feature grids one column; a compact request path
560pxProof tiles one column

Check every page at 390px wide. Nothing may scroll sideways except a code block or a wide table inside its own frame.

Radius, borders and shadows

RadiusUsed on
4px to 5pxTags, inline code
6px to 7pxSmall chips, the Copy button, tab highlights
8pxButtons, the command line, output blocks, small nodes
10pxCards, stat tiles, stat rows, docs code blocks (--r)
12pxDiagram nodes, hero stats
14pxDemo surfaces: tab panels, bento cards, feature grids, plans, comparison tables, config cards, menus
16pxLarge frames: the request path, How it works, the closing block
999pxPills: the announcement pill, nav items, kicker pills

Background patterns

Hero dots, 22px
Diagram canvas, 18px
Request path panel, 14px
Dark dots, 22px
PatternCSS
Home heroradial-gradient(circle at 1px 1px, rgb(10 10 10 / .07) 1px, transparent 0) / 22px 22px, masked by radial-gradient(ellipse 70% 60% at 70% 40%, #000 30%, transparent 75%)
Product heroThe hero dots with no mask
Diagram canvasradial-gradient(circle at 1px 1px, rgb(10 10 10 / .09) 1px, transparent 0) / 18px 18px on #fafafa
Request path panelradial-gradient(#e4e4e7 1px, transparent 1px) / 14px 14px on #fff
Dark sectionsradial-gradient(circle at 1px 1px, rgb(255 255 255 / .07) 1px, transparent 0) / 22px 22px on #0a0a0a
Share cardsradial-gradient(#e4e4e7 1.4px, transparent 1.4px) / 22px 22px, masked by linear-gradient(115deg, transparent 40%, #000)

Dark sections

Protect
Your agent asks. Your rules answer.

A blocked call never reaches your shell.

Components

Buttons

Primary and ghost, on light
White and outline, on dark
PartValue
SizeHeight 40px (2.5rem), padding 0.625rem 1rem, Geist 14px 500, letter-spacing -0.005em, radius 8px, 1px border
Nav sizeHeight 36px, padding 0 0.9rem, 13.5px
Hero sizeHeight 44px, padding 0 1.25rem, 15px
PrimaryInk fill, white text; hover #2a2a2e
GhostWhite fill, ink text, #e4e4e7 border; hover fill #fafafa, border #d4d4d8
On darkWhite: #fafafa fill, ink text, hover #e4e4e7. Outline: no fill, #fafafa text, #3f3f46 border, hover border #71717a
Press and focusScales to 0.97 for 120ms; focus ring 2px #1a56db, 2px away
LabelsA verb or the place it goes: Start free, Pricing, Read the docs. One primary button per group, first

Cards

Checked before it runs

Protect checks every command, file read, web fetch and tool-server call before it runs.

Every agent, one log

Claude Code and Codex requests go through one gateway, so one log shows what each one did.

Hairline grid

Cells sit on a 1px #e4e4e7 line, in one frame with a 14px radius.

For feature lists

Each cell holds a title and one or two short sentences.

PartValue
CardWhite, 1px #e4e4e7 border, radius 14px for feature cards (.bn) and 10px for small cards and tiles, padding 1.4rem, no shadow
TitleGeist 600, 1.05rem, -0.01em, ink
Text14px, line-height 1.55, text-3
As a linkBorder #d4d4d8 or fill #fafafa on hover; no lift
Rows inside1px #efeff1 border, radius 9px, fill #fafafa, 13px text, mono value on the right

Underline tabs

Tabs
$ bundle exec rake test 600 tests, 1 failing: 17.0 KB → 1.2 KB, the failing test in full
deploy target? Render, not Hetzner (remembered)
$ git push origin main blocked: protected branch
PartValue
RowText tabs on one line, padding 0 0.9rem, a 1px #e4e4e7 hairline under the row; scrolls sideways on a phone with no scrollbar
TabGeist 13.5px, padding 0.85rem 0.55rem, text-3; ink on hover and when active
ActiveA 2px ink line, radius 1px, under the label (0.55rem in from each side), on the hairline
HoverA soft fill rgb(0 0 0 / .05), radius 6px, behind the label
PanelThe frame is #f4f4f5 with a 1px border and a 14px radius; content sits on white blocks; the panel fades in over 300ms
AutoplayThe next tab every 4.2 seconds while the demo is on screen; it stops at the first click or key, and never runs under reduced motion
On darkFrame #111113, border #232326, labels #8b8b93, active and hover #fafafa, active line #fafafa

Code blocks

Four kinds, each for one job.

npx @context-mode/cli
~/.claude/settings.json
// what the CLI writes, under "env"
"ANTHROPIC_BASE_URL": "https://gateway.context-mode.com",
"ENABLE_TOOL_SEARCH": "true"
npx @context-mode/cli
600 tests, 1 failing 599 passing tests folded into one line
KindWhereStyle
Docs code blockDocs pages, this page#fafafa fill, ink text, 1px #e4e4e7 border, radius 10px, Geist Mono 13px, line-height 1.7, padding 18px 20px
Config card (.x-code)A file the reader editsWhite, 1px border, radius 14px; file name in Geist Mono 12px text-3; code 13px, line-height 1.7; keys #7c3aed, strings #0e7a55, comments text-4
Command line (.x-cmd)One command to copyWhite, 1px border, radius 8px, Geist Mono 13.5px; a $ in text-4; a Copy button on #f4f4f5, radius 6px, that turns green when done
Output block (.x-pre)What a tool printed, inside a demo#fafafa (white inside a tab panel), 1px #efeff1 border, radius 8px, Geist Mono 12px, line-height 1.65; muted lines text-4, blocked in red

Request path diagram

The home hero's diagram: each coding agent goes through Context Mode to its own model, never across. One request lights up at a time.

Your coding agentIts model
Claude Code
Claude
Codex
GPT
Context Mode
SaveContext Saving
Protect
Remember
Claude Code600 tests, 1 failing17.0 KB → 1.2 KBfolded
Codexcat .envnever reaches the shellblocked
Claude Code2 h laterpicked up, nothing compactedrecalled
Long session, Claude Opus 5.5$7.20 → $2.4965.5% lower
Your coding agentsAny machine
17.0 KB
Context Mode
  • Folds test, build and log output
  • Trims tool schemas
1.2 KB
Model APIYour Anthropic or OpenAI account
PartValue
Frame#f4f4f5, 1px border, radius 16px, padding 1.2rem; the inner panel is white with 14px #e4e4e7 dots and a 12px radius
ColumnsAgents, a 36px wire, Context Mode, a 36px wire, models (1fr, 1.1fr, 0.8fr)
Agent and model boxesWhite, 1px border, radius 8px, 12.5px; the active lane gets an ink border and a 1px ink ring
Context Mode coreInk box, radius 12px, the wordmark in white with the dark cursor gradient, one box per pillar in Save, Protect, Remember order
Active pillar boxWhite text, a 1px border in the pillar color, the pillar color mixed into #0a0a0a
Wires2px dashes of #d4d4d8 (4px on, 4px off); a dot of 8px travels each wire in 0.9s; a blocked request turns red and goes back
Event rowWhite, radius 10px: agent, the command in mono, what happened, and a tag in the pillar color
FootThe proof line: the run, the two costs in mono, the result in ink, linked to its source
Flow diagramNodes white with radius 12px on the 18px dot canvas; the gateway node has a 1.5px ink border; edges are 8px dashes with an arrow, moving in the pillar color, labelled in mono
PhoneBelow 720px the flow turns vertical; below 640px the request path drops the event detail

Tags and pills

Voice

Write the way the site writes: short, plain sentences, the reader's problem first, then what Context Mode does about it, with a number from a published page.

Names

WriteFor
Context ModeThe product and the company: the control plane between coding agents and models. Two words, both capitalized
Save, Remember, ProtectThe three pillars, in this order
ProtectThe rules for tool calls.
Context Saving, Thinking in Code, Active Context, Recall, Memory, Skills, Search, Session resume, InstructionsThe features, capitalized as written here
Context Mode EngineThe free plugin that runs on your machine, under the Elastic License 2.0
Context Mode InsightHow a team works with coding agents, from Engine events
context-modeLowercase and in mono only for the npm package, commands and the repository
Claude Code, CodexThe coding agents, by name. Claude and GPT for the models

Rules

WriteNot
61% lower cost on a minitest fix loop, $0.157 to $0.061.Huge savings on every session.
Protect checks every tool call before it runs.Total peace of mind for your whole team.
All-day sessions. No compaction.Never lose context again, ever.
Start free: 1,000 requests, every feature, no card.Sign up today and get started for free!
10 to 64% lower cost10–64% lower cost

Words the site never uses

The site's tests reject these in page text.

up to · leverage · seamless · robust · cutting-edge · supercharge · empower · unlock
revolution · game changer · delve · effortless · blazing · world-class · next-generation
best-in-class · state-of-the-art · FAIL · failed · — (em dash) · × (times sign) · !
Context Mode Local · the open-source plugin · ContextMode · Context-Mode

Motion

Motion is short and quiet. Things ease out: fast at the start, soft at the end.

--ease-out · cubic-bezier(.23,1,.32,1)
--ease-in-out · cubic-bezier(.77,0,.175,1)
TokenValueUse
--ease-outcubic-bezier(.23,1,.32,1)Hovers, menus, reveals, bars, panel changes
--ease-in-outcubic-bezier(.77,0,.175,1)Defined, not used on the site today
ease-in-outCSS keywordThe dot that travels a request path wire
linearCSS keywordMoving dashes on a live edge
What movesDurationHow
Button press120msScales to 0.97
Hover: color, fill, border150msease-out
Menu open150msFrom 4px up and 0.98 scale, fading in
Card hover200ms1px lift
Tab panel300msFades in from 4px down
Event row in the request path350msFades in from 4px down
Terminal lines380msOne after another, 190ms apart
Reveal on scroll500ms to 550msFades in from 14px down
Bars700ms to 900msGrow from the left
Request dot900msOne wire, then the next at 1.1s; a blocked request goes back in 1.6s, red
Live edge dashes1slinear, repeats
Live dot pulse2sRepeats
Demo tabs4.2sThe next tab, while on screen, until the reader clicks
Hero diagram3.2sThe next request, while on screen

Reduced motion

When the reader asks for reduced motion (prefers-reduced-motion: reduce), nothing moves on its own:

For video and image agents

Read tokens.json first. Then check every frame against this list.

  1. White (#ffffff) or #fafafa background. At most one dark scene (#0a0a0a), for the proof.
  2. Load Geist, Geist Mono and IBM Plex Sans 600 and wait for them before you render (document.fonts.ready).
  3. Place the logo from the SVG or PNG files, or set it with the CSS above once IBM Plex Sans 600 has loaded. Never redraw it.
  4. Headlines in Geist 600 with -0.045em tracking, ink then grey. No italics, no serif, no colored word.
  5. Green, blue and red only for Save, Remember and Protect.
  6. Commands, code, file names, URLs and data numbers in Geist Mono.
  7. Every number from a published page; list the page next to the post. No plan prices.
  8. Short lines. Leave each line on screen for 0.3 seconds per word or more.
  9. Keep everything inside the safe area below.
  10. End on the wordmark and context-mode.com.

Canvas sizes

16:9 · 1920×1080
4:5 · 1080×1350
1:1 · 1080×1080
9:16 · 1080×1920
OG · 1200×630
FormatWidthHeightSafe area: top, sides, bottomWordmarkHeadline
16:9 video and slides19201080104, 150, 10448px font size, 312px wide90px; opening line 108px; lead 36px; big number 112px
4:5 LinkedIn video1080135096, 84, 9640px, 260px wide72px; opening line 84px; lead 31px; big number 96px
1:1 square1080108096, 84, 9640px, 260px wideAs 4:5
9:16 vertical10801920250, 84, 38040px, 260px wideAs 4:5
OG share card120063060, 76, 5430px, 195px wide92, 80, 68 or 60px by length; tracking -0.045em; line-height 1.04