How to build a UI in the Railway style
Railway (railway.com) reads as Deep Cosmic Violet Infrastructure & IBM Plex Serif Editorial — Atmospheric #13111C cosmic violet-black canvas with #1B2132 / #291839 elevated deployment cards, rgba(255,255,255,0.1) hairlines, and 54px IBM Plex Serif display headings (-0.036em tracking). 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.
https://railway.com on 2026-10-26 by the taste-skill extractor. Brand fonts may be proprietary; previews fall back to Inter / system fonts. Railway is a trademark of its owner; this page documents publicly visible styling for reference and is not affiliated with Railway.Live preview with Railway tokens
rgba(255, 255, 255, 0.1)Color palette (dark mode)
| Role | Value | Tailwind | Usage |
|---|---|---|---|
| canvasBg | #13111C | bg-[#13111C] | Primary Railway page canvas |
| surfaceElevated | #1B2132 | bg-[#1B2132] | Primary elevated card & bento surface |
| surfaceSecondary | #553F83 | bg-[#553F83] | Secondary interactive container / hover fill |
| borderPrimary | rgba(255, 255, 255, 0.1) | border-white/[0.1] | Primary structural divider (1px rgba(255,255,255,0.1)) |
| borderSecondary | #33323E | border-[#33323E] | Secondary nested module or pill border |
| textPrimary | #FFFFFF | text-white | Hero H1, section H2 & high-contrast foreground |
| textMuted | #9593A8 | text-[#9593A8] | Lead paragraphs, descriptions & muted labels |
| accentPrimary | #8B5CF6 | bg-[#8B5CF6] | Primary interactive CTA & brand highlight (8px) |
| accentSecondary | #553F83 | text-[#553F83] | Secondary badge, syntax or telemetry highlight |
Typography
Heading IBM Plex Serif · body Inter · mono IBM Plex Mono
| Level | Computed spec |
|---|---|
| Hero H1 | 54px | line-height 60.5px (leading-[1.12]) | letter-spacing -1.96px (tracking-[-0.036em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font IBM Plex Serif |
| Section H2 (Primary) | 40px | line-height 48px (leading-[1.2]) | letter-spacing -0.8px (tracking-[-0.02em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font IBM Plex Serif |
| Card / Feature H3 | Subheading with crisp line-height |
| Body Copy (Paragraph) | 20px | line-height 28px (leading-[1.4]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color rgba(255, 255, 255, 0.8) (text-white/[0.8]) | font Inter |
| Monospace / Code Block | 12px | line-height 18px (leading-[1.5]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color #DFAF2A (text-[#DFAF2A]) | font ui-monospace |
Spacing, radius, depth and motion
| Token family | Most frequent values (count on page) |
|---|---|
| Border radius | 8px ×14 · 6px ×6 · 16px ×2 · 10px ×1 |
| Box shadow | rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.2) 0px 0px 0px 1.5px inset ×1 · rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(62, 45, 45, 0.24) 0px 100px 191px 0px, rgba(62, 45, 45, 0.165) 0px 36.5016px 69.7181px 0px, rgba(62, 45, 45, 0.133) 0px 17.7209px 33.8469px 0px, rgba(62, 45, 45, 0.106) 0px 8.6871px 16.5924px 0px, rgba(62, 45, 45, 0.075) 0px 3.43489px 6.56065px 0px ×1 · rgba(65, 78, 166, 0.1) 0px -12px 127px 0px, rgba(65, 78, 166, 0.07) 0px -4.38px 46.357px 0px, rgba(65, 78, 166, 0.06) 0px -2.127px 22.506px 0px, rgba(65, 78, 166, 0.04) 0px -1.042px 11.033px 0px, rgba(65, 78, 166, 0.03) 0px -0.412px 4.362px 0px ×1 |
| Grid / flex gap | 8px ×11 · 12px ×1 · normal 32px ×1 |
| Container max-width | 1160px ×2 · 740px ×1 |
| Section vertical padding | 128px / 96px ×1 |
| Easing | cubic-bezier(0.4, 0, 1, 1) ×4 · cubic-bezier(0.4, 0, 0.2, 1) ×3 · ease-in-out ×2 |
| Duration | 0.15s ×10 |
Component recipes
Buttons (1 distinct)
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Deploy | 32px | 0px 0px | 8px | #291839#F7F7F8 | none | 16px / 400 |
No card container was detected on the extracted page; use #1B2132 surface with rgba(255, 255, 255, 0.1) border.
Rules: what never to do in the Railway style
- NEVER substitute generic uncalibrated gray backgrounds for Railway’s exact
#13111Ccanvas and#1B2132surface pairing. - NEVER replace
IBM Plex Serifdisplay typography or ignore its signature scale (54px / -0.036em (w500)). - NEVER use thick opaque borders that clash with
rgba(255, 255, 255, 0.1)(1px rgba(255,255,255,0.1)). - NEVER deviate from the signature button geometry (
8px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with
IBM Plex Mono.
Copy-paste kit
:root {
/* Railway style — extracted from railway.com by taste-skill */
--canvas: #13111C;
--surface: #1B2132;
--text: #FFFFFF;
--text-muted: #9593A8;
--accent: #8B5CF6;
--border: rgba(255, 255, 255, 0.1);
--font-heading: 'IBM Plex Serif', Inter, system-ui, -apple-system, sans-serif;
--font-body: Inter, Inter, system-ui, -apple-system, sans-serif;
--font-mono: 'IBM Plex Mono', 'JetBrains Mono', ui-monospace, monospace;
--h1-size: 54px;
--h1-tracking: -0.036em;
--h1-weight: 500;
--radius-button: 8px;
--radius-common: 8px;
--shadow-common: rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.2) 0px 0px 0px 1.5px inset;
--ease: cubic-bezier(0.4, 0, 1, 1);
--duration: 0.15s;
}// tailwind.config.js — Railway style tokens (taste-skill)
module.exports = {
theme: {
extend: {
colors: {
canvas: "#13111C",
surface: "#1B2132",
ink: "#FFFFFF",
muted: "#9593A8",
accent: "#8B5CF6",
line: "rgba(255, 255, 255, 0.1)",
},
fontFamily: {
heading: ["IBM Plex Serif", 'Inter', 'system-ui', 'sans-serif'],
sans: ["Inter", 'Inter', 'system-ui', 'sans-serif'],
mono: ["IBM Plex Mono", 'ui-monospace', 'monospace'],
},
fontSize: { display: ["54px", { letterSpacing: "-0.036em", fontWeight: "500" }] },
borderRadius: { button: "8px", card: "8px" },
boxShadow: { brand: "rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(0, 0, 0, 0) 0px 0px 0px 0px, rgba(255, 255, 255, 0.2) 0px 0px 0px 1.5px inset" },
transitionTimingFunction: { brand: "cubic-bezier(0.4, 0, 1, 1)" },
},
},
};--- name: railway-style description: Build UI in the Railway visual style (Deep Cosmic Violet Infrastructure & IBM Plex Serif Editorial). Use when the user asks for a Railway-like look. --- # Railway Style — Quick Rules (source: railway.com, extracted by taste-skill) ## Tokens - canvasBg: #13111C — Primary Railway page canvas - surfaceElevated: #1B2132 — Primary elevated card & bento surface - surfaceSecondary: #553F83 — Secondary interactive container / hover fill - borderPrimary: rgba(255, 255, 255, 0.1) — Primary structural divider (1px rgba(255,255,255,0.1)) - borderSecondary: #33323E — Secondary nested module or pill border - textPrimary: #FFFFFF — Hero H1, section H2 & high-contrast foreground - textMuted: #9593A8 — Lead paragraphs, descriptions & muted labels - accentPrimary: #8B5CF6 — Primary interactive CTA & brand highlight (8px) - accentSecondary: #553F83 — Secondary badge, syntax or telemetry highlight ## Typography - Heading font: IBM Plex Serif; body: Inter; mono: IBM Plex Mono - Hero H1: 54px | line-height 60.5px (leading-[1.12]) | letter-spacing -1.96px (tracking-[-0.036em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font IBM Plex Serif - Section H2 (Primary): 40px | line-height 48px (leading-[1.2]) | letter-spacing -0.8px (tracking-[-0.02em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font IBM Plex Serif - Card / Feature H3: Subheading with crisp line-height - Body Copy (Paragraph): 20px | line-height 28px (leading-[1.4]) | letter-spacing 0px (tracking-[0em]) | weight 400 (font-[400]) | color rgba(255, 255, 255, 0.8) (text-white/[0.8]) | font Inter ## Components - Primary button: height 32px, padding 0px 0px, radius 8px, bg #291839, text #F7F7F8, 16px / 400 - Card: bg #1B2132, border 1px solid rgba(255, 255, 255, 0.1) ## Never - NEVER substitute generic uncalibrated gray backgrounds for Railway’s exact #13111C canvas and #1B2132 surface pairing. - NEVER replace IBM Plex Serif display typography or ignore its signature scale (54px / -0.036em (w500)). - NEVER use thick opaque borders that clash with rgba(255, 255, 255, 0.1) (1px rgba(255,255,255,0.1)). - NEVER deviate from the signature button geometry (8px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with IBM Plex Mono. Full 120-line spec: https://taste-skill.pages.dev/taste/railway/
npx taste-skill add railway
Related
Similar styles
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →