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 high-contrast International Typographic Style system distilled into production tokens. Dominant electric azure carries the brand, paired with crisp neutral grays and generous whitespace for a confident, athletic, editorial feel. Headings are grotesque and tightly tracked in Archivo; body is clean and humanist in Inter. Minimal shadows and quiet tonal gradients keep the look flat, intentional, and graphic.
cobaltticketsystem.com
Cobalt System
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: "e98ec24b-8042-42ca-ba28-aa8557b7c302"
version: 0
slug: "cobalt-ticket-system"
name: "Cobalt Ticket System"
colors:
roles_light:
background: "#FBFCFE"
foreground: "#161A1D"
card: "#FFFFFF"
card-foreground: "#161A1D"
popover: "#FFFFFF"
popover-foreground: "#161A1D"
primary: "#2497F9"
primary-foreground: "#000000"
secondary: "#E3F1F8"
secondary-foreground: "#234375"
muted: "#EEF3F6"
muted-foreground: "#566570"
accent: "#234375"
accent-foreground: "#FFFFFF"
destructive: "#BA1A1A"
destructive-foreground: "#FFFFFF"
border: "#D3DEE5"
input: "#D3DEE5"
ring: "#2497F9"
success: "#1D8A4E"
success-foreground: "#000000"
warning: "#E08600"
warning-foreground: "#1A1205"
chart-1: "#2497F9"
chart-2: "#234375"
chart-3: "#71BCEE"
chart-4: "#168EFB"
chart-5: "#96A9B9"
roles_dark:
background: "#0E1418"Three ways from the same kit: run "npx identityforge@latest apply cobalt-ticket-system" 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/cobalt-ticket-system.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.
Cobalt Ticket System is free: its full color tokens, fonts, DESIGN.md, and every export are available at no cost.
Supporting copy goes here.
/*
* Cobalt Ticket System — Identity Forge design kit.
* Kit id: e98ec24b-8042-42ca-ba28-aa8557b7c302
* Kit slug: cobalt-ticket-system (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=JetBrains%20Mono:wght@400;500;700&display=swap");
:root {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
--background: 220 60% 99%;
--foreground: 206 14% 10%;
--card: 0 0% 100%;
--card-foreground: 206 14% 10%;
--popover: 0 0% 100%;
--popover-foreground: 206 14% 10%;
--primary: 208 95% 56%;
--primary-foreground: 0 0% 0%;
--secondary: 200 60% 93%;
--secondary-foreground: 217 54% 30%;
--muted: 203 31% 95%;
--muted-foreground: 205 13% 39%;
--accent: 217 54% 30%;
--accent-foreground: 0 0% 100%;
--destructive: 0 75% 42%;
--destructive-foreground: 0 0% 100%;
--border: 203 26% 86%;
--input: 203 26% 86%;
--ring: 208 95% 56%;
--success: 147 65% 33%;
--success-foreground: 0 0% 0%;
--warning: 36 100% 44%;
--warning-foreground: 37 68% 6%;
--chart-1: 208 95% 56%;
--chart-2: 217 54% 30%;
--chart-3: 204 79% 69%;
--chart-4: 209 97% 54%;
--chart-5: 207 20% 66%;
--shadow-sm: 0 1px 2px rgba(20,40,60,0.06);
--shadow-md: 0 2px 6px rgba(20,40,60,0.08);
--shadow-lg: 0 6px 16px rgba(20,40,60,0.10);
--shadow-xl: 0 12px 32px rgba(20,40,60,0.12);
--gradient-hero: linear-gradient(135deg, #2497f9 0%, #168efb 100%);
--gradient-brand: linear-gradient(120deg, #234375 0%, #2497f9 100%);
--gradient-subtle: linear-gradient(180deg, #f4fafb 0%, #e3f1f8 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/cobalt-ticket-system.jsonTailwind v4
/*
* Cobalt Ticket System — Identity Forge design kit.
* Kit id: e98ec24b-8042-42ca-ba28-aa8557b7c302
* Kit slug: cobalt-ticket-system (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=JetBrains%20Mono:wght@400;500;700&display=swap");
:root {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
--background: 220 60% 99%;
--foreground: 206 14% 10%;
--card: 0 0% 100%;
--card-foreground: 206 14% 10%;
--popover: 0 0% 100%;
--popover-foreground: 206 14% 10%;
--primary: 208 95% 56%;
--primary-foreground: 0 0% 0%;
--secondary: 200 60% 93%;
--secondary-foreground: 217 54% 30%;
--muted: 203 31% 95%;
--muted-foreground: 205 13% 39%;
--accent: 217 54% 30%;
--accent-foreground: 0 0% 100%;
--destructive: 0 75% 42%;
--destructive-foreground: 0 0% 100%;
--border: 203 26% 86%;
--input: 203 26% 86%;
--ring: 208 95% 56%;
--success: 147 65% 33%;
--success-foreground: 0 0% 0%;
--warning: 36 100% 44%;
--warning-foreground: 37 68% 6%;
--chart-1: 208 95% 56%;
--chart-2: 217 54% 30%;
--chart-3: 204 79% 69%;
--chart-4: 209 97% 54%;
--chart-5: 207 20% 66%;
--shadow-sm: 0 1px 2px rgba(20,40,60,0.06);
--shadow-md: 0 2px 6px rgba(20,40,60,0.08);
--shadow-lg: 0 6px 16px rgba(20,40,60,0.10);
--shadow-xl: 0 12px 32px rgba(20,40,60,0.12);
--gradient-hero: linear-gradient(135deg, #2497f9 0%, #168efb 100%);
--gradient-brand: linear-gradient(120deg, #234375 0%, #2497f9 100%);
--gradient-subtle: linear-gradient(180deg, #f4fafb 0%, #e3f1f8 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: "e98ec24b-8042-42ca-ba28-aa8557b7c302";
--kit-version: 0;
}
.dark {
--radius: 0.375rem;
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'JetBrains Mono', monospace;
--background: 204 26% 7%;
--foreground: 205 32% 93%;
--card: 206 25% 11%;
--card-foreground: 205 32% 93%;
--popover: 206 25% 11%;
--popover-foreground: 205 32% 93%;
--primary: 208 100% 61%;
--primary-foreground: 205 100% 9%;
--secondary: 207 26% 15%;
--secondary-foreground: 203 46% 82%;
--muted: 205 25% 14%;
--muted-foreground: 203 16% 63%;
--accent: 204 79% 69%;
--accent-foreground: 208 83% 14%;
--destructive: 4 100% 64%;
--destructive-foreground: 359 100% 8%;
--border: 0 0% 50%;
--input: 210 17% 19%;
--ring: 208 100% 61%;
--success: 146 59% 53%;
--success-foreground: 147 100% 6%;
--warning: 35 100% 65%;
--warning-foreground: 37 100% 7%;
--chart-1: 208 100% 61%;
--chart-2: 204 79% 69%;
--chart-3: 217 54% 30%;
--chart-4: 206 82% 74%;
--chart-5: 207 20% 66%;
}
@theme inline {
--font-heading: 'Archivo', sans-serif;
--font-sans: 'Inter', sans-serif;
--font-mono: 'JetBrains 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 2px rgba(20,40,60,0.06);
--shadow-md: 0 2px 6px rgba(20,40,60,0.08);
--shadow-lg: 0 6px 16px rgba(20,40,60,0.10);
--shadow-xl: 0 12px 32px rgba(20,40,60,0.12);
--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(135deg, #2497f9 0%, #168efb 100%);
--gradient-brand: linear-gradient(120deg, #234375 0%, #2497f9 100%);
--gradient-subtle: linear-gradient(180deg, #f4fafb 0%, #e3f1f8 100%);
--font-weight-heading: 700;
--font-weight-body: 400;
}Registry payload
{
"$schema": "https://ui.shadcn.com/schema/registry-item.json",
"name": "cobalt-ticket-system",
"type": "registry:theme",
"title": "Cobalt Ticket System",
"description": "A bold Swiss-modernist kit anchored on vibrant azure blue, clean whites, and editorial grays, with tight grotesque headings and a poster feel.",
"categories": [
"swiss",
"modernist",
"azure",
"editorial",
"bold",
"grotesque",
"high-contrast"
],
"cssVars": {© 2026 Identity Forge. All rights reserved.
Munich, Germany