taste-skill / Style guides / Inngest style
How to build a UI in the Inngest style
Inngest (inngest.com) reads as Warm Obsidian Stone & Swiss Whyte / Coral-Cobalt Contrast — Warm obsidian stone #0C0A09 canvas with rgba(28,28,28,0.85) surfaces, 72px WhyteV1 architectural display headings (0.95 line-height), CircularXXMono code, and #F76246 coral + #013CF6 cobalt accents. This guide turns its extracted computed styles into an implementation kit: a live preview, the exact palette and type scale, real button and card recipes, the rules to avoid, and drop-in CSS variables, Tailwind config and a Cursor / Claude Code SKILL.md snippet.
Source: computed styles extracted from
https://www.inngest.com on 2026-10-26 by the taste-skill extractor. Brand fonts may be proprietary; previews fall back to Inter / system fonts. Inngest is a trademark of its owner; this page documents publicly visible styling for reference and is not affiliated with Inngest.Live preview with Inngest tokens
Inngest style · dark
Ship the product, not the pixels.
Preview text rendered with the extracted Inngest canvas, text, muted and accent tokens.
Card on extracted card recipe
Accent link: #F76246 · border
rgba(255, 255, 255, 0.08)Color palette (dark mode)
| Role | Value | Tailwind | Usage |
|---|---|---|---|
| canvasBg | #0C0A09 | bg-[#0C0A09] | Primary Inngest page canvas |
| surfaceElevated | #1C1C1C | bg-[#1C1C1C] | Primary elevated card & bento surface |
| surfaceSecondary | rgba(244, 96, 74, 0.09) | bg-[rgba(244,96,74,0.09)] | Secondary interactive container / hover fill |
| borderPrimary | rgba(255, 255, 255, 0.08) | border-white/[0.08] | Primary structural divider (1px rgba(255,255,255,0.08)) |
| borderSecondary | rgba(255, 255, 255, 0.08) | border-white/[0.08] | Secondary nested module or pill border |
| textPrimary | #FFFFFF | text-white | Hero H1, section H2 & high-contrast foreground |
| textMuted | #A8A29E | text-[#A8A29E] | Lead paragraphs, descriptions & muted labels |
| accentPrimary | #F76246 | bg-[#F76246] | Primary interactive CTA & brand highlight (6px) |
| accentSecondary | #F76246 | text-[#F76246] | Secondary badge, syntax or telemetry highlight |
Typography
Heading WhyteV1 · body Inter / Whyte · mono CircularXXMono
| Level | Computed spec |
|---|---|
| Hero H1 | 72px | line-height 68.4px (leading-[0.95]) | letter-spacing -1.44px (tracking-[-0.02em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font WhyteV1 |
| Section H2 (Primary) | 64px | line-height 70.4px (leading-[1.1]) | letter-spacing -2.24px (tracking-[-0.035em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font WhyteV1 |
| Section H2 (Secondary) | 40px | line-height 50px (leading-[1.25]) | letter-spacing -0.4px (tracking-[-0.01em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font Whyte Inktrap |
| Card / Feature H3 | 32px | line-height 32px (leading-[1]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font Whyte |
| Body Copy (Paragraph) | 20px | line-height 30px (leading-[1.5]) | letter-spacing -0.2px (tracking-[-0.01em]) | weight 400 (font-[400]) | color #B3B3B3 (text-[#B3B3B3]) | font CircularXX |
| Monospace / Code Block | 13px | line-height 20px (leading-[1.54]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #9B9B9B (text-[#9B9B9B]) | font CircularXXMono |
Spacing, radius, depth and motion
| Token family | Most frequent values (count on page) |
|---|---|
| Border radius | 6px ×19 · 10px ×18 · 8px ×6 · 9.026px ×3 |
| Box shadow | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(28, 28, 28) 0px 0px 0px 2px ×14 · rgb(255, 255, 255) 0px 0px 0px 2px inset ×7 · rgb(102, 189, 139) 2px 0px 0px 0px inset ×1 |
| Grid / flex gap | 10px ×16 · 32px ×13 · 12px ×13 · 4px ×11 · 16px ×11 · 24px ×8 |
| Container max-width | 1440px ×11 · 1280px ×1 · 640px ×1 · 900px ×1 |
| Section vertical padding | 160px / 160px ×7 · 88px / 80px ×1 · 64px / 10px ×1 · 48px / 48px ×1 |
| Easing | cubic-bezier(0.2, 0.8, 0.2, 1) ×54 · cubic-bezier(0.7, 0, 0.15, 1) ×37 · cubic-bezier(0.22, 0.61, 0.27, 1) ×30 |
| Duration | 0.3s ×48 · 0.36s ×37 · 0.5s ×20 · 0.4s ×19 |
Component recipes
Buttons (4 distinct)
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| START FREE | 42px | 0px 20px | 6px | #FFFFFF#000000 | none | 12px / 600 |
| READ THE DOCS | 42px | 0px 20px | 6px | transparent#FFFFFF | none | 12px / 600 |
| START FREE | 32px | 0px 20px | 6px | #FFFFFF#000000 | none | 12px / 600 |
| START FREE | 42px | 0px 20px | 6px | #F65C4F#FFFFFF | none | 12px / 600 |
Cards (2 distinct)
| # | Background | Border | Radius | Padding | Shadow |
|---|---|---|---|---|---|
| 1 | transparent | none | 6px | 20px 20px | none |
| 2 | transparent | none | 8px | 20px 16px | none |
Rules: what never to do in the Inngest style
- NEVER substitute generic uncalibrated gray backgrounds for Inngest’s exact
#0C0A09canvas and#1C1C1Csurface pairing. - NEVER replace
WhyteV1display typography or ignore its signature scale (72px / 0.95 (w400)). - NEVER use thick opaque borders that clash with
rgba(255, 255, 255, 0.08)(1px rgba(255,255,255,0.08)). - NEVER deviate from the signature button geometry (
6px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with
CircularXXMono.
Copy-paste kit
CSS variables
:root {
/* Inngest style — extracted from inngest.com by taste-skill */
--canvas: #0C0A09;
--surface: #1C1C1C;
--text: #FFFFFF;
--text-muted: #A8A29E;
--accent: #F76246;
--border: rgba(255, 255, 255, 0.08);
--font-heading: WhyteV1, Inter, system-ui, -apple-system, sans-serif;
--font-body: 'Inter / Whyte', Inter, system-ui, -apple-system, sans-serif;
--font-mono: 'CircularXXMono', 'JetBrains Mono', ui-monospace, monospace;
--h1-size: 72px;
--h1-tracking: 0em;
--h1-weight: 400;
--radius-button: 6px;
--radius-common: 6px;
--shadow-common: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(28, 28, 28) 0px 0px 0px 2px;
--ease: cubic-bezier(0.2, 0.8, 0.2, 1);
--duration: 0.3s;
}tailwind.config.js
// tailwind.config.js — Inngest style tokens (taste-skill)
module.exports = {
theme: {
extend: {
colors: {
canvas: "#0C0A09",
surface: "#1C1C1C",
ink: "#FFFFFF",
muted: "#A8A29E",
accent: "#F76246",
line: "rgba(255, 255, 255, 0.08)",
},
fontFamily: {
heading: ["WhyteV1", 'Inter', 'system-ui', 'sans-serif'],
sans: ["Inter / Whyte", 'Inter', 'system-ui', 'sans-serif'],
mono: ["CircularXXMono", 'ui-monospace', 'monospace'],
},
fontSize: { display: ["72px", { letterSpacing: "0em", fontWeight: "400" }] },
borderRadius: { button: "6px", card: "6px" },
boxShadow: { brand: "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgb(28, 28, 28) 0px 0px 0px 2px" },
transitionTimingFunction: { brand: "cubic-bezier(0.2, 0.8, 0.2, 1)" },
},
},
};.cursor/skills/inngest-style/SKILL.md
--- name: inngest-style description: Build UI in the Inngest visual style (Warm Obsidian Stone & Swiss Whyte / Coral-Cobalt Contrast). Use when the user asks for a Inngest-like look. --- # Inngest Style — Quick Rules (source: inngest.com, extracted by taste-skill) ## Tokens - canvasBg: #0C0A09 — Primary Inngest page canvas - surfaceElevated: #1C1C1C — Primary elevated card & bento surface - surfaceSecondary: rgba(244, 96, 74, 0.09) — Secondary interactive container / hover fill - borderPrimary: rgba(255, 255, 255, 0.08) — Primary structural divider (1px rgba(255,255,255,0.08)) - borderSecondary: rgba(255, 255, 255, 0.08) — Secondary nested module or pill border - textPrimary: #FFFFFF — Hero H1, section H2 & high-contrast foreground - textMuted: #A8A29E — Lead paragraphs, descriptions & muted labels - accentPrimary: #F76246 — Primary interactive CTA & brand highlight (6px) - accentSecondary: #F76246 — Secondary badge, syntax or telemetry highlight ## Typography - Heading font: WhyteV1; body: Inter / Whyte; mono: CircularXXMono - Hero H1: 72px | line-height 68.4px (leading-[0.95]) | letter-spacing -1.44px (tracking-[-0.02em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font WhyteV1 - Section H2 (Primary): 64px | line-height 70.4px (leading-[1.1]) | letter-spacing -2.24px (tracking-[-0.035em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font WhyteV1 - Section H2 (Secondary): 40px | line-height 50px (leading-[1.25]) | letter-spacing -0.4px (tracking-[-0.01em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font Whyte Inktrap - Card / Feature H3: 32px | line-height 32px (leading-[1]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font Whyte ## Components - Primary button: height 42px, padding 0px 20px, radius 6px, bg #FFFFFF, text #000000, 12px / 600 - Card: bg transparent, border none, radius 6px, padding 20px 20px ## Never - NEVER substitute generic uncalibrated gray backgrounds for Inngest’s exact #0C0A09 canvas and #1C1C1C surface pairing. - NEVER replace WhyteV1 display typography or ignore its signature scale (72px / 0.95 (w400)). - NEVER use thick opaque borders that clash with rgba(255, 255, 255, 0.08) (1px rgba(255,255,255,0.08)). - NEVER deviate from the signature button geometry (6px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with CircularXXMono. Full 120-line spec: https://taste-skill.pages.dev/taste/inngest/
Or install the full spec
npx taste-skill add inngest
Related
Similar styles
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →