Kit · Foundations
Foundations
Every visual decision on trentdigital.com resolves to one of the tokens on this page. Each token carries its usage doctrine, so sessions stop re-deciding semantics per file. Specimens below render on every surface the system allows.
Dark is the default and the only theme at launch. The token layer is theme-capable: a future light theme lands as a data-theme token block that redefines the semantic tokens with zero component refactor — which is why components consume semantic tokens only, never raw palette values.
Backgrounds — the rule of three
Guidance, not law: the system's three surfaces are Black, Chalk, and Mist — no ad-hoc greys — and how a page composes them (all-black, mixed, light sections) is a per-page design decision. Components must render correctly on every surface they support. Cobalt stays a primary color, not a background. Black is the canvas: content sits borderless on it; never stack panels or cards on the canvas.
#000000 · surface-page (canvas)
#FFFFFF · surface-light
#F5F5F5 · surface-mist
On Black canvas
Palette
One hex per color; no drift. Base palette first, derived tints (surfaces and lines only) second.
#000000 · --color-blackThe digital canvas. X-ray imagery merges with it; content sits borderless on it.
#FFFFFF · --color-chalkPrimary text on dark; the light surface and the card color.
#F5F5F5 · --color-mistThe off-white canvas for long light pages; chalk cards sit on it.
#050E3D · --color-cobaltHeadings on light and brand moments. Never a background on trent.digital.
#00FBF0 · --color-aquaThe primary accent: links, focus ring, the wordmark period on dark.
#FF557E · --color-coralExpressive accent and danger. One hex everywhere — no pink drift.
#FFB13C · --color-marigoldWarm accent for stats and highlights.
#BFDDDB · --color-seaglassSoft accent for quiet tints on light surfaces.
#615B56 · --color-slateSecondary text on light surfaces.
#1D1D1D · --color-inkBody copy on light surfaces only. Never a surface or panel color.
#111111 · --color-black-raisedDialogs over scrim only — never a section background.
rgba(255,255,255,.72) · --color-chalk-dimSecondary text on dark.
rgba(255,255,255,.44) · --color-chalk-faintMuted text on dark: captions, metadata.
rgba(255,255,255,.16) · --color-line-darkHairline dividers on dark surfaces.
rgba(5,14,61,.16) · --color-line-lightHairline dividers on light surfaces.
Type scale
Display face PP Telegraf (the true brand face) at headline weight 400; body Inter. Headlines sentence case, eyebrows ALL CAPS letterspaced. The pack ships no 500/600 cuts: display-medium maps to 400 and subhead(600) maps to 700 — Bold stands in pending a possible SemiBold license; never faux weights.
Hero · Ultralight 200 (specimen cut) · --text-heroTransform and accelerate.
Hero · --text-heroTransform and accelerate.
H1 · --text-h1Marketing, brand, and strategy
H2 · --text-h2Build trust and stand out
H3 · --text-h3Command your market
Lead · --text-leadWe're changing all of that.
Body · --text-bodyEnhance your brand's reputation and make a lasting impression on your audience.
Small · --text-smallFrom strategy through execution.
Caption · --text-captionOUR VISION
Spacing scale
--space-14px--space-28px--space-312px--space-416px--space-524px--space-632px--space-748px--space-864px--space-996px--space-10128pxContainer: 1280px max width, 24px gutters. These twelve values are the only rhythm the site uses.
Radii, borders, effects, motion
Rectilinear system: structure square, inputs 2px, media 8px. Depth comes from surface steps, not shadows.
1px hairline divider — --border-hairline
motion: --dur-fast 120ms · --dur-base 200ms · --ease-brand cubic-bezier(.4,0,.2,1) · no bounceprotect-gradient under text over imagery
Focus ring
Tab through: every interactive element shows the aqua --focus-ring, on every surface. Removing it without a visible replacement is a defect.
On Chalk
Palette
One hex per color; no drift. Base palette first, derived tints (surfaces and lines only) second.
#000000 · --color-blackThe digital canvas. X-ray imagery merges with it; content sits borderless on it.
#FFFFFF · --color-chalkPrimary text on dark; the light surface and the card color.
#F5F5F5 · --color-mistThe off-white canvas for long light pages; chalk cards sit on it.
#050E3D · --color-cobaltHeadings on light and brand moments. Never a background on trent.digital.
#00FBF0 · --color-aquaThe primary accent: links, focus ring, the wordmark period on dark.
#FF557E · --color-coralExpressive accent and danger. One hex everywhere — no pink drift.
#FFB13C · --color-marigoldWarm accent for stats and highlights.
#BFDDDB · --color-seaglassSoft accent for quiet tints on light surfaces.
#615B56 · --color-slateSecondary text on light surfaces.
#1D1D1D · --color-inkBody copy on light surfaces only. Never a surface or panel color.
#111111 · --color-black-raisedDialogs over scrim only — never a section background.
rgba(255,255,255,.72) · --color-chalk-dimSecondary text on dark.
rgba(255,255,255,.44) · --color-chalk-faintMuted text on dark: captions, metadata.
rgba(255,255,255,.16) · --color-line-darkHairline dividers on dark surfaces.
rgba(5,14,61,.16) · --color-line-lightHairline dividers on light surfaces.
Type scale
Display face PP Telegraf (the true brand face) at headline weight 400; body Inter. Headlines sentence case, eyebrows ALL CAPS letterspaced. The pack ships no 500/600 cuts: display-medium maps to 400 and subhead(600) maps to 700 — Bold stands in pending a possible SemiBold license; never faux weights.
Hero · Ultralight 200 (specimen cut) · --text-heroTransform and accelerate.
Hero · --text-heroTransform and accelerate.
H1 · --text-h1Marketing, brand, and strategy
H2 · --text-h2Build trust and stand out
H3 · --text-h3Command your market
Lead · --text-leadWe're changing all of that.
Body · --text-bodyEnhance your brand's reputation and make a lasting impression on your audience.
Small · --text-smallFrom strategy through execution.
Caption · --text-captionOUR VISION
Spacing scale
--space-14px--space-28px--space-312px--space-416px--space-524px--space-632px--space-748px--space-864px--space-996px--space-10128pxContainer: 1280px max width, 24px gutters. These twelve values are the only rhythm the site uses.
Radii, borders, effects, motion
Rectilinear system: structure square, inputs 2px, media 8px. Depth comes from surface steps, not shadows.
1px hairline divider — --border-hairline-light
motion: --dur-fast 120ms · --dur-base 200ms · --ease-brand cubic-bezier(.4,0,.2,1) · no bounceprotect-gradient under text over imagery
Focus ring
Tab through: every interactive element shows the aqua --focus-ring, on every surface. Removing it without a visible replacement is a defect.
On Mist
Palette
One hex per color; no drift. Base palette first, derived tints (surfaces and lines only) second.
#000000 · --color-blackThe digital canvas. X-ray imagery merges with it; content sits borderless on it.
#FFFFFF · --color-chalkPrimary text on dark; the light surface and the card color.
#F5F5F5 · --color-mistThe off-white canvas for long light pages; chalk cards sit on it.
#050E3D · --color-cobaltHeadings on light and brand moments. Never a background on trent.digital.
#00FBF0 · --color-aquaThe primary accent: links, focus ring, the wordmark period on dark.
#FF557E · --color-coralExpressive accent and danger. One hex everywhere — no pink drift.
#FFB13C · --color-marigoldWarm accent for stats and highlights.
#BFDDDB · --color-seaglassSoft accent for quiet tints on light surfaces.
#615B56 · --color-slateSecondary text on light surfaces.
#1D1D1D · --color-inkBody copy on light surfaces only. Never a surface or panel color.
#111111 · --color-black-raisedDialogs over scrim only — never a section background.
rgba(255,255,255,.72) · --color-chalk-dimSecondary text on dark.
rgba(255,255,255,.44) · --color-chalk-faintMuted text on dark: captions, metadata.
rgba(255,255,255,.16) · --color-line-darkHairline dividers on dark surfaces.
rgba(5,14,61,.16) · --color-line-lightHairline dividers on light surfaces.
Type scale
Display face PP Telegraf (the true brand face) at headline weight 400; body Inter. Headlines sentence case, eyebrows ALL CAPS letterspaced. The pack ships no 500/600 cuts: display-medium maps to 400 and subhead(600) maps to 700 — Bold stands in pending a possible SemiBold license; never faux weights.
Hero · Ultralight 200 (specimen cut) · --text-heroTransform and accelerate.
Hero · --text-heroTransform and accelerate.
H1 · --text-h1Marketing, brand, and strategy
H2 · --text-h2Build trust and stand out
H3 · --text-h3Command your market
Lead · --text-leadWe're changing all of that.
Body · --text-bodyEnhance your brand's reputation and make a lasting impression on your audience.
Small · --text-smallFrom strategy through execution.
Caption · --text-captionOUR VISION
Spacing scale
--space-14px--space-28px--space-312px--space-416px--space-524px--space-632px--space-748px--space-864px--space-996px--space-10128pxContainer: 1280px max width, 24px gutters. These twelve values are the only rhythm the site uses.
Radii, borders, effects, motion
Rectilinear system: structure square, inputs 2px, media 8px. Depth comes from surface steps, not shadows.
1px hairline divider — --border-hairline-light
motion: --dur-fast 120ms · --dur-base 200ms · --ease-brand cubic-bezier(.4,0,.2,1) · no bounceprotect-gradient under text over imagery
Focus ring
Tab through: every interactive element shows the aqua --focus-ring, on every surface. Removing it without a visible replacement is a defect.
App extensions — pending upstream adoption
Vocabulary gaps the kit surfaced, minted only from existing palette values and held in a labeled block in tokens.css until Claude Design adopts them: the muted text tier on light surfaces and the solid primary button fills.
--button-fill--button-fill-hover--button-fill-pressedMuted text on Chalk — captions, metadata.
--text-muted-on-lightMuted text on Mist — captions, metadata.
--text-muted-on-lightToken doctrine
The whole vocabulary, one line of doctrine each. No second name for the same role, ever.
Surfaces — the background rule of three
--surface-pageblack- The dark canvas. Sections sit directly on it — never stack panels or cards on the canvas.
--surface-lightchalk- Light sections: editorial, docs, forms.
--surface-mistmist- Soft canvas for long light pages where chalk cards need something to sit on.
--surface-cardchalk- The card color. Cards are Chalk on Mist — never on the black canvas.
--surface-raisedblack raised- Dialogs over scrim only.
Text
--text-primarychalk- Default text on dark.
--text-secondarychalk dim- Supporting text on dark.
--text-mutedchalk faint- Captions and metadata on dark.
--text-on-lightcobalt- Headings on Chalk and Mist.
--text-body-on-lightink- Body copy on Chalk and Mist.
Accents
--accent-primaryaqua- Links, focus, the wordmark period on dark. The identity color.
--accent-highlightaqua- Inline highlights. Same aqua — never a second highlight color.
--accent-warmmarigold- Stats and warm moments.
--accent-expressivecoral- Expressive moments; the wordmark dot on light.
--accent-softseaglass- Quiet tints on light surfaces.
Borders, focus, feedback
--border-darkline dark- Hairlines on dark. 1px, never heavier.
--border-lightline light- Hairlines on light. 1px, never heavier.
--focus-ringaqua- Visible keyboard focus on every interactive element. Never removed without replacement.
--successaqua- Form success feedback only.
--dangercoral- Form error feedback only.
Type
--font-displayPP Telegraf- Headlines and the wordmark. The true brand face, self-hosted via next/font; system-ui fallback.
--font-bodyInter- Everything that is not a headline. Loaded via next/font.
--text-heroclamp(44px, 6vw, 76px)- One per page — the opening statement.
--text-h148px- Page headline below the hero.
--text-h234px- Section headline.
--text-h324px- Card and subsection headline.
--text-lead20px- Standfirst under a headline.
--text-body16px- Default body size.
--text-small14px- Supporting UI text.
--text-caption12px- Eyebrows and labels, ALL CAPS with subhead tracking.
--weight-headline400- Display headlines are Regular — never bold the display face.
--weight-display-medium400 (mapped from 500)- The Telegraf pack has no 500 cut — mapped explicitly to Regular, never faux weights.
--weight-subhead700 (mapped from 600)- Eyebrows and subheads. No 600 cut — Bold stands in pending a possible SemiBold license.
--weight-body400- Body copy.
--weight-emphasis700- Inline emphasis in body copy.
--leading-display1.08- Display leading — tight.
--leading-body1.55- Body leading.
--tracking-subhead.14em- Letterspacing for ALL CAPS eyebrows/subheads.
--tracking-display-.01em- Display tracking — slightly tight.
Spacing & layout
--space-1 … --space-104 · 8 · 12 · 16 · 24 · 32 · 48 · 64 · 96 · 128- The only rhythm values. No ad-hoc pixel gaps.
--container-max1280px- One container width. Nothing else sets page width.
--gutter24px- Horizontal page gutter.
App extensions — pending upstream adoption in Claude Design
--text-muted-on-lightrgba(5,14,61,.62)- Muted text tier on Chalk and Mist — cobalt faded the way the dark tiers fade chalk. 5.34:1 on Chalk, 5.18:1 on Mist.
--button-fillchalk- Solid primary button fill on the dark canvas (mirrors the reference Button, tone dark).
--button-fill-hoverrgba(255,255,255,.85)- Hover fill — the reference fades the whole button to 85%.
--button-fill-pressedrgba(255,255,255,.85)- Pressed fill — brightness(.85) in the reference; equals hover on the canvas today, kept distinct so themes can split them without renames.
--weight-ui500- Inter Medium for UI labels: nav links, link rows, button labels. Never the display face — Telegraf has no 500 cut.
--shadow-card-hover0 4px 24px cobalt 10%- The chalk-card hover lift — the one soft cobalt-tinted shadow. Light surfaces only; the canvas has nothing to lift.
--surface-mediablack- The imagery letterbox behind full-frame x-ray media. Masters are black-backed — stays black under any future theme.
Radii, effects, motion
--radius-none0- Structural elements are square.
--radius-sm2px- Inputs and buttons only.
--radius-media8px- Media and image cards only.
--border-hairline1px line dark- The dark-surface divider.
--border-hairline-light1px line light- The light-surface divider.
--border-frame2px currentColor- Bracket frames echoing the wordmark. Never for dividers.
--shadow-cardinset hairline- Depth comes from surface steps, not shadows.
--shadow-dialog0 24px 64px- Dialogs only — the one large soft shadow.
--ease-brandcubic-bezier(.4,0,.2,1)- Every transition. No bounce.
--dur-fast120ms- Hovers and small state changes.
--dur-base200ms- Reveals, accordions, dialogs.
--protect-gradientblack 0 → 72%- Under text over photography. The only gradient in the system.