Visual kits for agents that need to design well
Pick what you're building, preview every kit on that surface, and hand your agent a complete visual system — fonts, colors, tokens, and component rules.
Pick what you're building, preview every kit on that surface, and hand your agent a complete visual system — fonts, colors, tokens, and component rules.
A confident, grid-driven editorial kit pairing a punchy vermillion-red brand color with warm pink surfaces and ink-black type. Flat surfaces, tight headline tracking, and high-contrast color blocking evoke print typography systems. Archivo carries heavy grotesk headlines with tight negative tracking, Inter handles body copy, and Space Mono covers small technical metadata. Corners stay tight (0.125rem-0.5rem), shadows minimal and structural.
tomatoblusheditorial.com
Tomato Blush
Supporting copy goes here.
tomatoblusheditorial.com
Tomato Blush
Every kit is judged per use case against concrete criteria — chart-series distinctness, text contrast, information density — not keyword matching.
---
# Machine-readable tokens (the WHAT). The prose body gives the WHY + the rules.
# contract is THIS DOCUMENT'S shape and has nothing to do with the kit's
# revision below. It moves when a section is added, renamed or removed; a kit
# that never changed can arrive under a new one, and a kit that changed every
# token arrives under the same one. Read them independently.
#
# FIRST key on purpose. `name` is caller-supplied and yamlQuote escapes only the
# double quote, so a crafted kit name can inject lines into this block — every
# reader of this front matter honours the FIRST occurrence of a key, which puts
# an injected duplicate too late to matter.
contract: "1.0"
kit:
# The id is the durable handle; name and slug are both mutable.
# version is this record's monotonic revision: 0 = never versioned,
# null = the server did not report one. Diff against it; don't hash the file.
id: "ecfb4e9f-54d8-4c98-9723-18d1b5c379f3"
version: 0
slug: "tomato-blush-editorial"
name: "Tomato Blush Editorial"
colors:
roles_light:
background: "#FFF8F9"
foreground: "#201A1C"
card: "#FFFFFF"
card-foreground: "#201A1C"
popover: "#FFFFFF"
popover-foreground: "#201A1C"
primary: "#F34C34"
primary-foreground: "#000000"
secondary: "#FDE0E9"
secondary-foreground: "#7A2A44"
muted: "#F4E8EC"
muted-foreground: "#6C5A60"
accent: "#FEC7DA"
accent-foreground: "#7A2A44"
destructive: "#BA1A1A"
destructive-foreground: "#FFFFFF"
border: "#E7D3D9"
input: "#E7D3D9"
ring: "#F34C34"
success: "#2F7D4F"
success-foreground: "#FFFFFF"
warning: "#C97A17"
warning-foreground: "#000000"
chart-1: "#F34C34"
chart-2: "#FEC7DA"
chart-3: "#A03828"
chart-4: "#F49998"
chart-5: "#974067"
roles_dark:
background: "#1A1416"Three ways from the same kit: run "npx identityforge@latest apply tomato-blush-editorial" with the CLI to write the tokens and DESIGN.md into your project, fetch it through the Identity Forge MCP server inside Claude Code, Cursor, or OpenCode, or install from the shadcn registry at /r/tomato-blush-editorial.json with "npx shadcn add".
A complete brand system: a font pairing, 28 semantic color tokens in light and dark, a typography scale, spacing and elevation, per-element treatments, distinctive motifs, do's and don'ts, and a DESIGN.md a coding agent builds from. Exports cover shadcn registry items, Tailwind v3 and v4 themes, DTCG tokens JSON, and plain CSS variables.
Tomato Blush Editorial is free: its full color tokens, fonts, DESIGN.md, and every export are available at no cost.
Supporting copy goes here.
/*
* Tomato Blush Editorial — Identity Forge design kit.
* Kit id: ecfb4e9f-54d8-4c98-9723-18d1b5c379f3
* Kit slug: tomato-blush-editorial (a mutable alias; the id is the durable handle)
* Kit version: 0 (no version minted yet)
*/
@import url("https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=Space%20Mono:wght@400;700&display=swap");
:root {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'Space Mono', monospace;
--background: 351 100% 99%;
--foreground: 340 10% 11%;
--card: 0 0% 100%;
--card-foreground: 340 10% 11%;
--popover: 0 0% 100%;
--popover-foreground: 340 10% 11%;
--primary: 8 89% 58%;
--primary-foreground: 0 0% 0%;
--secondary: 341 88% 94%;
--secondary-foreground: 341 49% 32%;
--muted: 340 35% 93%;
--muted-foreground: 340 9% 39%;
--accent: 339 96% 89%;
--accent-foreground: 341 49% 32%;
--destructive: 0 75% 42%;
--destructive-foreground: 0 0% 100%;
--border: 342 29% 87%;
--input: 342 29% 87%;
--ring: 8 89% 58%;
--success: 145 45% 34%;
--success-foreground: 0 0% 100%;
--warning: 33 79% 44%;
--warning-foreground: 0 0% 0%;
--chart-1: 8 89% 58%;
--chart-2: 339 96% 89%;
--chart-3: 8 60% 39%;
--chart-4: 1 81% 78%;
--chart-5: 333 40% 42%;
--shadow-sm: 0 1px 0 0 rgba(32,26,28,0.08);
--shadow-md: 0 2px 4px 0 rgba(32,26,28,0.10);
--shadow-lg: 0 4px 12px 0 rgba(32,26,28,0.12);
--shadow-xl: 0 8px 28px 0 rgba(32,26,28,0.16);
--gradient-hero: linear-gradient(180deg,#f34c34 0%,#f49998 100%);
--gradient-brand: linear-gradient(135deg,#f34c34 0%,#fec7da 100%);
--gradient-subtle: linear-gradient(180deg,#fff8f9 0%,#f7ebf1 100%);
--duration: 180ms;
--duration-slow: 360ms;
--ease: cubic-bezier(0.4,0,0.2,1);
--tracking-tight: -0.03em;
--tracking-normal: 0em;
--font-weight-heading: 700;
--font-weight-body: 400;
--button-radius: 0.25rem;
--card-radius: 0.5rem;
--input-radius: 0.25rem;
--badge-radius: 0.25rem;
--border-width: 1px;Registry
/r/tomato-blush-editorial.jsonTailwind v4
/*
* Tomato Blush Editorial — Identity Forge design kit.
* Kit id: ecfb4e9f-54d8-4c98-9723-18d1b5c379f3
* Kit slug: tomato-blush-editorial (a mutable alias; the id is the durable handle)
* Kit version: 0 (no version minted yet)
*
* Drop-in Tailwind v4 theme: font import, the custom properties the theme
* aliases, and the @theme block. Expects `@import "tailwindcss";` above it,
* and the @import lines must stay at the top of the stylesheet.
*/
@import url("https://fonts.googleapis.com/css2?family=Archivo:wght@400;500;600;700&family=Inter:wght@400;500;600;700&family=Space%20Mono:wght@400;700&display=swap");
:root {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'Space Mono', monospace;
--background: 351 100% 99%;
--foreground: 340 10% 11%;
--card: 0 0% 100%;
--card-foreground: 340 10% 11%;
--popover: 0 0% 100%;
--popover-foreground: 340 10% 11%;
--primary: 8 89% 58%;
--primary-foreground: 0 0% 0%;
--secondary: 341 88% 94%;
--secondary-foreground: 341 49% 32%;
--muted: 340 35% 93%;
--muted-foreground: 340 9% 39%;
--accent: 339 96% 89%;
--accent-foreground: 341 49% 32%;
--destructive: 0 75% 42%;
--destructive-foreground: 0 0% 100%;
--border: 342 29% 87%;
--input: 342 29% 87%;
--ring: 8 89% 58%;
--success: 145 45% 34%;
--success-foreground: 0 0% 100%;
--warning: 33 79% 44%;
--warning-foreground: 0 0% 0%;
--chart-1: 8 89% 58%;
--chart-2: 339 96% 89%;
--chart-3: 8 60% 39%;
--chart-4: 1 81% 78%;
--chart-5: 333 40% 42%;
--shadow-sm: 0 1px 0 0 rgba(32,26,28,0.08);
--shadow-md: 0 2px 4px 0 rgba(32,26,28,0.10);
--shadow-lg: 0 4px 12px 0 rgba(32,26,28,0.12);
--shadow-xl: 0 8px 28px 0 rgba(32,26,28,0.16);
--gradient-hero: linear-gradient(180deg,#f34c34 0%,#f49998 100%);
--gradient-brand: linear-gradient(135deg,#f34c34 0%,#fec7da 100%);
--gradient-subtle: linear-gradient(180deg,#fff8f9 0%,#f7ebf1 100%);
--duration: 180ms;
--duration-slow: 360ms;
--ease: cubic-bezier(0.4,0,0.2,1);
--tracking-tight: -0.03em;
--tracking-normal: 0em;
--font-weight-heading: 700;
--font-weight-body: 400;
--button-radius: 0.25rem;
--card-radius: 0.5rem;
--input-radius: 0.25rem;
--badge-radius: 0.25rem;
--border-width: 1px;
--card-border-width: 1px;
--input-border-width: 1px;
--button-border-width: 1px;
--badge-border-width: 1px;
--heading-transform: none;
--label-transform: none;
--kit-id: "ecfb4e9f-54d8-4c98-9723-18d1b5c379f3";
--kit-version: 0;
}
.dark {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'Space Mono', monospace;
--background: 340 13% 9%;
--foreground: 349 22% 90%;
--card: 334 11% 13%;
--card-foreground: 349 22% 90%;
--popover: 334 11% 13%;
--popover-foreground: 349 22% 90%;
--primary: 9 92% 65%;
--primary-foreground: 9 68% 6%;
--secondary: 332 15% 20%;
--secondary-foreground: 342 54% 89%;
--muted: 330 12% 16%;
--muted-foreground: 339 12% 68%;
--accent: 339 96% 89%;
--accent-foreground: 333 53% 15%;
--destructive: 4 100% 64%;
--destructive-foreground: 0 86% 5%;
--border: 339 14% 20%;
--input: 339 14% 20%;
--ring: 9 92% 65%;
--success: 141 39% 49%;
--success-foreground: 139 57% 5%;
--warning: 35 73% 55%;
--warning-foreground: 33 77% 7%;
--chart-1: 9 92% 65%;
--chart-2: 339 96% 89%;
--chart-3: 1 81% 78%;
--chart-4: 337 100% 85%;
--chart-5: 340 37% 81%;
}
@theme inline {
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'Space Mono', monospace;
--color-background: hsl(var(--background));
--color-foreground: hsl(var(--foreground));
--color-card: hsl(var(--card));
--color-card-foreground: hsl(var(--card-foreground));
--color-popover: hsl(var(--popover));
--color-popover-foreground: hsl(var(--popover-foreground));
--color-primary: hsl(var(--primary));
--color-primary-foreground: hsl(var(--primary-foreground));
--color-secondary: hsl(var(--secondary));
--color-secondary-foreground: hsl(var(--secondary-foreground));
--color-muted: hsl(var(--muted));
--color-muted-foreground: hsl(var(--muted-foreground));
--color-accent: hsl(var(--accent));
--color-accent-foreground: hsl(var(--accent-foreground));
--color-destructive: hsl(var(--destructive));
--color-destructive-foreground: hsl(var(--destructive-foreground));
--color-border: hsl(var(--border));
--color-input: hsl(var(--input));
--color-ring: hsl(var(--ring));
--color-success: hsl(var(--success));
--color-success-foreground: hsl(var(--success-foreground));
--color-warning: hsl(var(--warning));
--color-warning-foreground: hsl(var(--warning-foreground));
--color-chart-1: hsl(var(--chart-1));
--color-chart-2: hsl(var(--chart-2));
--color-chart-3: hsl(var(--chart-3));
--color-chart-4: hsl(var(--chart-4));
--color-chart-5: hsl(var(--chart-5));
--radius-sm: 0.125rem;
--radius-md: 0.25rem;
--radius-lg: 0.375rem;
--radius-xl: 0.5rem;
--radius-button: 0.25rem;
--radius-card: 0.5rem;
--radius-input: 0.25rem;
--radius-badge: 0.25rem;
--border-width: 1px;
--card-border-width: 1px;
--input-border-width: 1px;
--button-border-width: 1px;
--badge-border-width: 1px;
--shadow-sm: 0 1px 0 0 rgba(32,26,28,0.08);
--shadow-md: 0 2px 4px 0 rgba(32,26,28,0.10);
--shadow-lg: 0 4px 12px 0 rgba(32,26,28,0.12);
--shadow-xl: 0 8px 28px 0 rgba(32,26,28,0.16);
--tracking-tight: -0.03em;
--tracking-normal: 0em;
--ease-kit: cubic-bezier(0.4,0,0.2,1);
--duration-kit: 180ms;
--duration-kit-slow: 360ms;
--gradient-hero: linear-gradient(180deg,#f34c34 0%,#f49998 100%);
--gradient-brand: linear-gradient(135deg,#f34c34 0%,#fec7da 100%);
--gradient-subtle: linear-gradient(180deg,#fff8f9 0%,#f7ebf1 100%);
--font-weight-heading: 700;
--font-weight-body: 400;
}Registry payload
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "tomato-blush-editorial",
"type": "registry:theme",
"title": "Tomato Blush Editorial",
"description": "A bold Swiss-editorial kit anchored in vermillion red and soft pink, built for typographic, gallery-grade, grid-driven interfaces.",
"categories": [
"editorial",
"swiss",
"grotesk",
"vermillion",
"pink",
"high-contrast",
"typographic",
"flat"
],© 2026 Identity Forge. All rights reserved.
Munich, Germany