Skip to content

character.ai Design System

character.ai's design tokens as a DESIGN.md file. Canvas #f4f4f5, brand blue #1a5eff, atHauss display, 18 components. For React, Next.js, and AI tools.

Add shadcn.io to your AI agent. · Pro It installs blocks, icons and templates in your design system from a prompt, with Pro.

Set up MCP
Primary
#1a5eff
Typeface
atHauss
Shape
Soft
Base radius
12px
Colors
30
Type tokens
9
Components
18
Spacing values
8

About

About character.ai DESIGN.md

Curated by Dov Azencot · Updated May 13, 2026 · Source character.ai (opens in a new tab)

character.ai's landing surface is a sign-up gate, not a marketing brochure. The page is one card on a near-white canvas (#f4f4f5), holding a 36px atHauss h1 ("Get access to 10M+ Characters"), three auth buttons stacked vertically, and a footer link row. The wordmark sits top-left wrapped in literal parentheses — (character.ai) — a typographic move that treats the URL itself as the logo. There is no hero illustration, no testimonial band, no comparison table. The page exists to convert a click to an account.

This DESIGN.md packages the underlying token graph into one file. Inside: 30 colors tokens, 9 type styles built on atHauss with Inter as the declared --font-inter fallback, 6 corner radii anchored to a 30px pill, 8 spacing values on a 4px scale, and 18 components — every piece visible on the auth surface plus the latent product chrome the 379 :root variables expose. The colors include the brand-layer #1a5eff (declared as --primary-blue), the auth-CTA near-black #202024 (--button-background), and the cream canvas #f4f4f5 (--background) that distinguishes the site from a pure white default.

Download the file and feed it to Claude, Cursor, or GitHub Copilot. The agent reproduces character.ai's auth-card voice — pill buttons, near-black primaries, atHauss tightening at -0.72px, parentheses-wrapped wordmark — rather than a generic SaaS theme. Where most AI-chat consumer apps front-load a feature grid, this one front-loads a Google/Apple/email triplet on a single card. Studying the token graph reveals a NextUI-derived scale operating beneath a custom Tailwind layer.

What makes it distinct

5

  1. Pill CTA geometry30px radius on buttons paired with a 2rem (#1a5eff) root radius, the strongest formal signal in the chrome
  2. Wordmark-in-parenthesesliteral ( ) brackets wrap the (character.ai) lockup in atHauss, treating the URL itself as the logotype
  3. Near-black primary, blue in reservevisible CTAs run #202024 on white while #1a5eff lives in focus rings, link-text, and the primary-refresh token
  4. Two-typeface stackatHauss for product chrome, Inter declared as --font-inter for fallbacks, no third family across 7 weight tiers
  5. NextUI-derived token graph379 CSS variables on :root expose the underlying nextui scale (primary 212/100/47), surfaced through a Tailwind layer rather than hand-rolled

character.ai

Live at character.ai

A snapshot of the brand in production. Scroll the frame to see the whole page.

character.ai's website at character.ai

Colors

30 colors

character.ai's system anchors on #1a5eff (primary) as its primary color. Type is set in atHauss across 9 tokens from 11px to 36px, weights 400–600. Shape language is soft — components average 30px corner radius, with no sharp interactive edges.

Brand & Accent

Sparing, CTA-only voltage · 8

Surface

Page and card backgrounds · 5

Text

Headlines, body, captions · 8

Borders & Hairlines

Dividers, outlines, rules · 2

Semantic

Status, errors, success, links · 4

Other

Specialty colors · 3

Typography

9 type tokens

Set in atHauss across 9 tokens, from 11px to 36px, weights 400–600. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-md36px · weight 600 · lh 1.11 · tracking -0.72pxThe quick brown fox jumps over the lazy dog
  • title-lg18px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • title-md16px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • body-md14px · weight 400 · lh 1.43The quick brown fox jumps over the lazy dog
  • button14px · weight 500 · lh 1.43The quick brown fox jumps over the lazy dog
  • nav-link16px · weight 400 · lh 1.5The quick brown fox jumps over the lazy dog
  • caption12px · weight 400 · lh 1.33The quick brown fox jumps over the lazy dog
  • caption-label11px · weight 500 · lh 1.45The quick brown fox jumps over the lazy dog
  • fine-print11px · weight 400 · lh 1.45The quick brown fox jumps over the lazy dog

Layout

Radii and spacing

6 corner radii and 8 spacing values. Shape language: soft.

Radii

  • sm8px
  • md12px
  • lg14px
  • pill30px
  • card32px
  • full9999px

Spacing

  • xxs4px
  • xs8px
  • sm12px
  • md16px
  • base20px
  • lg24px
  • xl32px
  • xxl40px

Components

18 components

Each rendered from its tokens (color, type, radius, padding) on character.ai's own canvas.

  • Top Nav
    top-navTop Nav
  • Wordmark
    wordmarkWordmark
  • Nav Link
    nav-linkNav Link
  • Button Primary
    button-primaryButton Primary
  • Button Primary Hover
    button-primary-hoverButton Primary Hover
  • Button Secondary
    button-secondaryButton Secondary
  • Button Auth Provider
    button-auth-providerButton Auth Provider
  • Button Auth Email
    button-auth-emailButton Auth Email
  • Text Link
    text-linkText Link
  • Auth Card
    auth-cardAuth Card
  • Hero Headline
    hero-headlineHero Headline
  • Hero Subhead
    hero-subheadHero Subhead
  • Divider Or
    divider-orDivider Or
  • Type here…
    text-inputText Input
  • Fine Print Block
    fine-print-blockFine Print Block
  • Footer Link Row
    footer-link-rowFooter Link Row
  • Help Fab
    help-fabHelp Fab
  • Plus Badge
    plus-badgePlus Badge

In use

The system, in use

character.ai's tokens on the kind of product it builds.

Build something people actually use.

A short paragraph of marketing copy that previews how the brand's display tier and body tier read together. Two sentences is usually enough.

Get startedLearn more
Marketing heroHeadline, sub-copy, primary CTA — the universal homepage opener.

FAQ

character.ai design system FAQ

Common questions about character.ai's tokens, components, and how to use this DESIGN.md in your project.

Read next

Specs, directories, and component libraries that pair with this design system.

Use it

Use character.ai in your project

One machine-readable file. Drop it into Claude, Cursor, or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of character.ai.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match character.ai's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md: overview, rationale, do’s and don’ts

Overview

character.ai's chrome is a sign-up wall dressed as a marketing page. The base canvas is a near-white {colors.canvas} (#f4f4f5), one shade off pure white — visible only because the 360px auth card sits on top in {colors.surface-card} (#fafafa) and the hairline contrast separates the two. The wordmark at top-left is literal: (character.ai) wrapped in parentheses, set in atHauss, treating the URL itself as the lockup. There is no hero illustration, no scrolling feature band, no testimonial column. The viewport ends where the footer link row ends.

Wordmark as parenthetical: where most AI-chat consumer brands run a sans-serif logotype with a custom glyph, character.ai sets the URL inside literal parentheses and calls it the logo. The choice mirrors a function call — (character.ai) reads as an invocation, fitting for a product that exposes character personas through a chat surface. The parentheses are not decorative; they are the brand mark.

Blue in reserve, near-black on the page: the underlying token graph declares --primary-blue as {colors.primary} (#1a5eff), but no visible CTA on the public surface renders in that blue. The Sign Up to Chat button, the Continue with Google button, and the Continue with Apple button all run {colors.cta} (#202024) — a near-black declared as --button-background. The blue surfaces only as {colors.link} (#138eed) on the Terms and Privacy fine-print and as the latent focus ring color. Where most consumer AI brands paint their primary CTA in their brand voltage, character.ai treats the brand color as a system token and leaves the auth surface in achromatic chrome.

Key Characteristics:

  • Near-white canvas {colors.canvas} (#f4f4f5) with {colors.ink} (#26272b) text — a one-step-off-white that registers visibly only against the auth card surface.
  • Pill geometry — every CTA uses {rounded.pill} (30px) at 40-48px heights, reading as a full pill. The root --radius is 32px, captured here as {rounded.card}.
  • atHauss display tightening — the 36px hero h1 carries -0.72px letter-spacing, the only non-default tracking value in the type system. Body and labels stay at zero tracking.
  • Wordmark-as-parenthetical — (character.ai) set in atHauss at 18px, weight 400, the URL itself functioning as logotype.
  • Near-black auth CTA {colors.cta} (#202024) — the visible primary on the page, despite the underlying --primary-blue (#1a5eff) declared in the token graph.
  • Two-typeface declaration — atHauss as --font-at-hauss and Inter as --font-inter, with no third family across nine type roles spanning 11px through 36px.
  • NextUI scale beneath a Tailwind layer — 379 CSS variables on :root expose --nextui-primary (212 100% 47%), --nextui-radius-large (14px), --nextui-spacing-unit-4 (1rem), surfacing the underlying component library through custom tokens.

Colors

Brand & Accent

  • Primary Blue ({colors.primary} — #1a5eff): frequency 0 visible on the auth surface, but layer "brand" in the extraction, declared as --primary-blue and --primary-refresh. Reserved for focus rings, latent link states, and the primary-button slot when the auth wall opens into the product.
  • Primary Container ({colors.primary-container} — #a0c9ff): frequency 0. Used as --primary-container-refresh and --link-light — the lightened brand tint for selected states and disabled link backgrounds.
  • Primary Deep ({colors.primary-deep} — #0061a6): frequency 0. The darker container slot — --primary-container proper in the Material-Design-derived ladder.
  • Primary On Container ({colors.primary-on-container} — #001138): frequency 0. Text on a primary-container background.
  • Inverse Primary ({colors.inverse-primary} — #d1dfff): frequency 0. The very-light blue tint used on inverse surfaces.
  • Link ({colors.link} — #138eed): frequency 0 visible. Used on the Terms and Privacy Policy fine-print lines under the auth buttons.
  • Link Secondary ({colors.link-secondary} — #1ba5fb): frequency 0. Declared as --plus-light-blue — used inside the c.ai+ subscription chrome.

CTA / Ink

  • CTA Near-Black ({colors.cta} — #202024): frequency 1 as background. Declared as --button-background in the token graph. The visible primary on every auth CTA — Sign Up to Chat, Continue with Google, Continue with Apple. Not pure black, slightly warmed toward neutral 850.
  • CTA Text ({colors.cta-text} — #fafafa): frequency 11 (7 text · 4 bg). Used as the text fill on every near-black CTA. Also functions as the card-fill surface tone.
  • Ink ({colors.ink} — #26272b): frequency 39 (38 text · 1 bg). The dominant text color on the canvas — h1, navigation labels, the (character.ai) wordmark.
  • Ink Strong ({colors.ink-strong} — #131316): frequency 3 (1 text · 2 bg). Reserved for emphasis text and a darker hover-state background on the near-black CTA.
  • Body ({colors.body} — #1e1e1e): frequency 0 raw, declared as --on-surface-refresh. Used for the "Sign up in just ten seconds" sub-headline on the auth card.
  • Muted ({colors.muted} — #585962): frequency 17 (all text). The workhorse secondary — nav links, footer links, fine-print body. Declared as --muted-foreground and --on-surface-variant.
  • Muted Soft ({colors.muted-soft} — #7c7c87): frequency 0 raw. Captions, placeholder text, tertiary labels.
  • Outline ({colors.outline} — #a2a2ac): frequency 0 raw. Disabled icons, very-light borders.

Surface

  • Canvas ({colors.canvas} — #f4f4f5): frequency 0 raw, declared as --background. The default page floor — one step off pure white.
  • Surface Card ({colors.surface-card} — #fafafa): frequency 11 (7 text · 4 bg). The auth card surface, the elevated-content fill.
  • Surface Cream ({colors.surface-cream} — #ececee): frequency 0 raw. Declared as --surface-elevation-1 and --brand-bg — slightly warmer than the canvas.
  • Surface Cream Strong ({colors.surface-cream-strong} — #e5dfeb): frequency 0 raw. The brand off-white tone declared as --G175 and --brand-off-white.
  • Hairline ({colors.hairline} — #e2e8f0): frequency 61 (60 border · 1 bg). The dominant border tone on the entire page — auth card outline, input borders, footer divider.
  • Hairline Strong ({colors.hairline-strong} — #d4d4da): frequency 2 (both border). A heavier hairline used on the email-button outline and elevated card borders.
  • Surface Elevation 3 ({colors.surface-elevation-3} — #c8c8cf): frequency 0. The --accent and --surface-elevation-4 slot — used inside product chrome behind the wall.

Accent / Semantic

  • Accent Violet ({colors.accent-violet} — #b460eb): frequency 0. Declared as --tertiary-refresh — used inside the labs-gradient (a three-stop pink-to-violet-to-soft-blue band defined on --labs-gradient).
  • Accent Violet Soft ({colors.accent-violet-soft} — #e1bff7): frequency 0. Tertiary container fill.
  • Accent Green ({colors.accent-green} — #1ebe53): frequency 0. Declared as --secondary-refresh and --secondary-green — used on connection status dots.
  • Accent Green Soft ({colors.accent-green-soft} — #a8eac6): frequency 0. Secondary container fill.
  • Warning ({colors.warning} — #ff9800): frequency 0. Standard amber warning fill.
  • Warning Soft ({colors.warning-soft} — #ffe991): frequency 0. Warning container fill.
  • Error ({colors.error} — #cc3434): frequency 0. Validation error fill, declared as --error.
  • Error Soft ({colors.error-soft} — #fba7b9): frequency 0. Error container fill.

Typography

Font Family

The system runs atHauss as the single display + body face, declared as --font-at-hauss with a fallback chain through ui-sans-serif, system-ui, sans-serif. Inter is declared in parallel as --font-inter for secondary roles and as the closest open-source substitute. JetBrains Mono or another monospace face would be needed for code blocks but does not appear on the auth surface.

The display/body split is collapsed:

  • atHauss weight 600 with -0.72px tracking → h1 (36px) — the only tightened tier
  • atHauss weight 400-500 → body, navigation, button labels, captions
  • All other type lands at zero letter-spacing

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
{typography.display-md}36px6001.11-0.72px"Get access to 10M+ Characters" — the only display tier on the public surface
{typography.title-lg}18px4001.50Sub-headline ("Sign up in just ten seconds"), wordmark
{typography.title-md}16px4001.50Nav link text, card-title labels
{typography.body-md}14px4001.430Default running-text, auth button labels
{typography.button}14px5001.430Standard button labels — atHauss medium
{typography.nav-link}16px4001.50Top-nav menu items
{typography.caption}12px4001.330Footer secondary links
{typography.caption-label}11px5001.450"OR" divider, badge labels
{typography.fine-print}11px4001.450"By continuing, you agree" footer text

Principles

The 36px h1 is the only typography role with non-zero letter-spacing in the entire system. The -0.72px tightening reads as a -0.02em em-relative ratio — character.ai's choice to round to exact pixels rather than ems. Below 18px, every label and link stays at zero tracking and 400 or 500 weight. There is no 700-weight tier on the public surface — atHauss carries headings at 600 only.

Note on Font Substitutes

If atHauss is unavailable, Inter at the same weights (400 body, 500 labels, 600 display) is the closest substitute since it is already declared as --font-inter in the system. Söhne or Haas Grot are paid alternatives. Helvetica or Arial would break the slightly humanist proportions of atHauss.

Layout

Spacing System

  • Base unit: 4px.
  • Tokens: {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 12px · {spacing.md} 16px · {spacing.base} 20px · {spacing.lg} 24px · {spacing.xl} 32px · {spacing.xxl} 40px.
  • Most frequent values from extraction: 8px appears 12 times, "0px 16px" (button horizontal padding) appears 5 times, "8px 16px" (nav-link padding) appears 4 times.
  • Auth card internal padding: {spacing.xl} (32px) — the dominant card padding.
  • Button height tier: 40px for chrome CTAs (Sign Up to Chat, Login), 48px for auth-provider buttons (Continue with Google, Apple, email).

Grid & Container

  • Max content width: the auth card caps at ~360px and sits centered on a 1440px canvas.
  • Single-card layout: no grid — the page is one column with one card.
  • Top-nav layout: wordmark left, two pill buttons (Sign Up to Chat, Login) right, no center navigation.
  • Footer link row: two rows of inline-flex links centered at the bottom of the viewport.

Whitespace Philosophy

The auth card occupies one-quarter of the viewport, surrounded by canvas on every side. There is no second content band, so whitespace is the page's primary compositional element. The vertical gap between the wordmark and the auth card is roughly 240px of pure canvas — a deliberate emptiness that focuses every visual moment on the sign-up triplet.

Elevation & Depth

LevelTreatmentUse
FlatNo shadow, no borderBody sections, footer link row
Soft hairline1px {colors.hairline} borderAuth card outline, button outlines
Heavier hairline1px {colors.hairline-strong} borderEmail button, text input outline
Card surface{colors.surface-card} background — no shadowThe auth card itself
Latent shadow--toastify-toast-shadow: 0px 4px 12px rgba(0,0,0,0.1)Reserved for toast notifications, not visible on the auth surface

The elevation philosophy is hairline-first, shadow-rare. The auth card relies on a 1px {colors.hairline} border plus the {colors.surface-card} fill against the {colors.canvas} floor — the one-step contrast is the depth signal. Drop shadows exist in the token graph (--toastify-toast-shadow, --nextui-box-shadow-small/medium/large) but never render on the public surface.

Shapes

Border Radius Scale

TokenValueUse
{rounded.sm}8px--nextui-radius-small — reserved for small dropdowns
{rounded.md}12px--nextui-radius-medium — reserved for medium cards inside the product
{rounded.lg}14px--nextui-radius-large — reserved for larger card variants
{rounded.pill}30pxEvery visible CTA — Sign Up to Chat, Login, Continue buttons, text inputs
{rounded.card}32pxThe auth card outer radius (matches --radius: 2rem)
{rounded.full}9999pxThe help FAB at bottom-right and inline avatar tokens

Iconography

The auth surface carries five icons total: the Google G in its colored form, the Apple wordmark in white, an envelope outline on the email button, and a "?" inside the help FAB at bottom-right. No other iconography appears on the public surface. The product side declares --swiper-navigation-size: 44px for carousel arrows, but those live behind the wall.

Components

Top Navigation

top-nav — Cream-canvas nav bar pinned to the top of the viewport, 72px tall, {colors.canvas} background. Carries the parentheses-wrapped wordmark at left, two pill CTAs ({component.button-primary} and {component.button-secondary}) at right. No center menu items, no logo glyph.

wordmark — The (character.ai) lockup, set in {typography.title-lg} (atHauss 18px / 400), {colors.ink-strong} text. The parentheses are part of the wordmark, not punctuation.

nav-link — Inline nav text link in {colors.muted} text. Padding 8px 16px. Used in the footer link row (About, Careers, Safety Center, Blog, Cookie Policy, Privacy Policy, Terms of Service, Charms Terms of Use).

Buttons

button-primary — The signature Sign Up to Chat CTA. Background {colors.cta} (#202024), text {colors.cta-text} (#fafafa), type {typography.button} (atHauss 14px / 500), padding 0px 16px, height 40px, rounded {rounded.pill} (30px).

button-primary-hover — Press state. Background darkens to {colors.ink-strong} (#131316). Radius unchanged.

button-secondary — The Login pill. Background {colors.surface-card} with a 1px {colors.hairline} border, text {colors.ink}, otherwise identical geometry to primary.

button-auth-provider — Continue with Google, Continue with Apple. Same near-black fill as {component.button-primary} but 48px tall and full-card-width — the auth-provider tier overrides the standard 40px chrome height.

button-auth-email — Continue with email. Inverts to a {colors.surface-card} fill with a 1px {colors.hairline-strong} border, text {colors.ink}. Reads as the secondary auth path beneath the OAuth duo.

text-link — Inline links in {colors.link} (#138eed). Used on the "Terms" and "Privacy Policy" anchors inside the fine-print block.

Cards & Containers

auth-card — The 360px-wide sign-up card. Background {colors.surface-card} (#fafafa), {colors.hairline} 1px outline, rounded {rounded.card} (32px), internal padding {spacing.xl} (32px). Holds the hero headline, sub-headline, three stacked auth buttons, the OR divider, and the fine-print block.

hero-headline — The "Get access to 10M+ Characters" h1. Type {typography.display-md} (atHauss 36px / 600 / -0.72px), color {colors.ink}. The card's only large-type element.

hero-subhead — "Sign up in just ten seconds" paragraph. Type {typography.title-lg} (atHauss 18px / 400), color {colors.body}. Sits directly under the h1 with no vertical divider.

Inputs & Forms

text-input — Pill-shaped text input. Background {colors.surface-card}, text {colors.ink}, type {typography.body-md}, rounded {rounded.pill} (30px), padding 0px 20px, height 48px, 1px {colors.hairline-strong} border. Matches the email-button geometry exactly.

Divider / Fine-Print

divider-or — The "OR" splitter between OAuth buttons and the email button. Type {typography.caption-label} (atHauss 11px / 500), color {colors.muted}, no background. The text floats centered with no horizontal rule.

fine-print-block — "By continuing, you agree with the Terms and Privacy Policy". Type {typography.fine-print} (atHauss 11px / 400), color {colors.muted}. Links inside use {component.text-link}.

Footer / Misc

footer-link-row — Inline-flex row of footer text links, centered horizontally at the bottom of the viewport. Type {typography.body-md}, color {colors.muted}, padding 16px 24px.

help-fab — A 32px circular help button anchored at bottom-right, holding a "?" glyph. Background {colors.surface-cream} (#ececee), text {colors.ink}. Rounded {rounded.full}.

plus-badge — The c.ai+ subscription marker. Background {colors.link-secondary} (#1ba5fb — --plus-light-blue), text {colors.cta-text}, rounded {rounded.pill}, padding 2px 10px. Does not appear on the auth surface but lives in the token graph behind the wall.

Do's and Don'ts

Do

  • Anchor every CTA on the near-black {colors.cta} (#202024) — declared --button-background — rather than on the brand-layer {colors.primary} (#1a5eff). The blue stays in reserve for focus rings and link text.
  • Use {rounded.pill} (30px) on every button at 40-48px height. Do not substitute rounded-md or rounded-lg from a default Tailwind theme.
  • Wrap the wordmark in literal parentheses: (character.ai). The brackets are part of the lockup, not punctuation around it.
  • Apply -0.72px letter-spacing on the 36px h1 only. Every smaller tier stays at zero tracking.
  • Pair the 360px auth card with empty canvas on every side — the whitespace is the composition.

Don't

  • Don't paint the Sign Up to Chat button in {colors.primary} (#1a5eff). The brand color is declared but never visible on a CTA — fill it with {colors.cta} instead.
  • Don't use {rounded.card} (32px) on small buttons or chips. The 32px radius is reserved for the auth card outer container; buttons under 56px tall use {rounded.pill} (30px) instead.
  • Don't apply -0.72px tracking to body or label tiers. Tightening below 18px crushes atHauss into illegibility.
  • Don't substitute Helvetica or Arial for atHauss. Inter is the declared --font-inter fallback — use that, not a metric-incompatible neo-grotesque.
  • Don't add a 700-weight tier. atHauss tops out at 600 on the public surface; jumping to 700 reads as off-brand bombast.
  • Don't fill the auth card with a hero illustration, testimonial column, or feature grid. The card holds exactly six elements: h1, sub-head, three buttons, fine-print. Adding a sixth row breaks the composition.
  • Don't apply a drop shadow under the auth card. Elevation is signaled by the 1px {colors.hairline} outline against {colors.canvas} — adding a shadow reads as Bootstrap default.

Responsive Behavior

Breakpoints

NameWidthKey Changes
Mobile< 768pxTop nav stays — Sign Up + Login pills shrink to icon-only; auth card scales to ~92% viewport width; h1 drops to 28px; footer link row stacks into two rows
Tablet768–1024pxTop-nav pills retain text; auth card stays at 360px centered; footer remains single row
Desktop1024–1440pxFull top-nav pills; auth card at 360px; footer link row inline-flex centered
Wide> 1440pxSame as desktop with more outer canvas; auth card never exceeds 360px

Touch Targets

  • {component.button-primary} at 40px height — at the WCAG 44px floor for primary actions.
  • {component.button-auth-provider} at 48px height — comfortably above the floor for the conversion-critical OAuth row.
  • {component.text-input} at 48px height.
  • {component.help-fab} at 32px diameter — slightly under WCAG 44 but visually centered.

Known Gaps

  • atHauss is a licensed character.ai typeface with no public web font. Inter (declared as --font-inter) is the closest substitute and is already in the fallback stack.
  • The 379 :root CSS variables expose latent product-side tokens — --feed-item-width: 140px, --plus-gradient (a four-stop cyan-to-yellow-to-pink-to-neutral band), --labs-gradient (a three-stop pink-to-violet-to-soft-blue band), swiper carousel theming — that never render on the public auth surface. They are documented as token names but not extracted as components.
  • Dark-mode tokens exist in the graph (--brand-bg-inverted, --inverse-surface-refresh, the --G900 near-black slot) but the public marketing surface renders light-only.
  • Product-side components — chat bubbles, message-action menus, character cards in the discovery feed, the c.ai+ paywall sheet — live entirely behind the sign-up wall and were not captured.
  • Animation and transition timings (auth button hover, modal entry, toast slide-in via the declared toastify variables) are out of scope.
  • Form validation states beyond the default input are not extracted — error and success states would require triggering an auth failure to confirm.

AI & LLM Platforms

More systems like this

More DESIGN.md files in AI & LLM Platforms.

Pricing

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Production-ready React sections: hero, pricing, features, dashboards and more.Pro blocks: 6,000+ blocks
  • Complete multi-page sites you can ship as they are.Templates: All 14 templates
  • React icons from every major library, installable with one command.React icons: 294k+ icons
  • Presets that restyle every block, in light and dark.Themes: All 59 themes
  • Lets your AI editor search, preview and install blocks for you.MCP server: Basic usage
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Lets your AI editor search, preview and install blocks for you.MCP server: High usage
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Lets your AI editor search, preview and install blocks for you.MCP server: Unlimited usage
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro