taste-skill / Style guides / Raycast style
How to build a UI in the Raycast style
Raycast (raycast.com) reads as Desktop-Class macOS Acrylic Glass & Crimson Spotlight — Deep #07080A midnight canvas with rgba(255,255,255,0.02) translucent acrylic panels, 1px rgba(255,255,255,0.08) specular rims, keyboard shortcut kbd badges, and #FF6363 ruby glow. 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.raycast.com on 2026-10-26 by the taste-skill extractor. Brand fonts may be proprietary; previews fall back to Inter / system fonts. Raycast is a trademark of its owner; this page documents publicly visible styling for reference and is not affiliated with Raycast.Live preview with Raycast tokens
Raycast style · dark
Ship the product, not the pixels.
Preview text rendered with the extracted Raycast canvas, text, muted and accent tokens.
Card on extracted card recipe
Accent link: #FF6363 · border
rgba(255, 255, 255, 0.08)Color palette (dark mode)
| Role | Value | Tailwind | Usage |
|---|---|---|---|
| canvasBg | #07080A | bg-[#07080A] | Primary Raycast page canvas |
| surfaceElevated | #141517 | bg-[#141517] | Primary elevated card & bento surface |
| surfaceSecondary | rgba(0, 0, 0, 0.6) | bg-black/[0.6] | 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.06) | border-white/[0.06] | Secondary nested module or pill border |
| textPrimary | #FFFFFF | text-white | Hero H1, section H2 & high-contrast foreground |
| textMuted | #9CA3AF | text-[#9CA3AF] | Lead paragraphs, descriptions & muted labels |
| accentPrimary | #FF6363 | bg-[#FF6363] | Primary interactive CTA & brand highlight (10px) |
| accentSecondary | rgba(255, 255, 255, 0.1) | text-white/[0.1] | Secondary badge, syntax or telemetry highlight |
Typography
Heading Inter · body Inter · mono JetBrains Mono
| Level | Computed spec |
|---|---|
| Hero H1 | 64px | line-height 70.4px (leading-[1.1]) | letter-spacing 0px (tracking-[0em]) | weight 600 (font-[600]) | color #FFFFFF (text-white) | font Inter |
| Section H2 (Primary) | 32px | line-height 38.4px (leading-[1.2]) | letter-spacing -0.8px (tracking-[-0.025em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter |
| Section H2 (Secondary) | 20px | line-height 24px (leading-[1.2]) | letter-spacing 0.2px (tracking-[0.01em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter |
| Card / Feature H3 | 24px | line-height 28.8px (leading-[1.2]) | letter-spacing 0.2px (tracking-[0.008em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter |
| Body Copy (Paragraph) | 18px | line-height 21.6px (leading-[1.2]) | letter-spacing 0.2px (tracking-[0.011em]) | weight 400 (font-[400]) | color #FFFFFF (text-white) | font Inter |
| Monospace / Code Block | 13px–14px | line-height 1.5 (leading-relaxed) | font GeistMono |
Spacing, radius, depth and motion
| Token family | Most frequent values (count on page) |
|---|---|
| Border radius | 8px ×104 · 11px ×78 · 6px ×59 · 20px ×38 · 12px ×28 · 4px ×16 |
| Box shadow | rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px, rgb(0, 0, 0) 0px 0px 0.5px 1px, rgba(0, 0, 0, 0.25) 0px 2px 1px 1px inset, rgba(255, 255, 255, 0.2) 0px 1px 1px 1px inset, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset ×78 · rgba(0, 0, 0, 0.28) 0px 1.189px 2.377px 0px ×17 · rgba(255, 255, 255, 0.05) 0px 1px 0px 0px inset, rgba(255, 255, 255, 0.25) 0px 0px 0px 1px, rgba(0, 0, 0, 0.2) 0px -1px 0px 0px inset ×17 |
| Grid / flex gap | 10px ×77 · 8px ×51 · 12px ×30 · 24px ×22 · 2px ×8 · 16px ×4 |
| Container max-width | 1204px ×3 · 1252px ×2 · 818px ×1 · 1200px ×1 |
| Section vertical padding | 224px / 224px ×2 · 48px / 102px ×1 · 40px / 40px ×1 · 32px / 32px ×1 |
| Easing | cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1) ×78 · ease ×42 · ease-in-out ×10 |
| Duration | 0.4s, 0.2s, 0.2s, 0.2s, 0.4s, 0.4s ×78 · 0.3s ×32 · 0.2s ×20 · 0.2s, 0.2s, 0.2s, 0.1s ×3 |
Component recipes
Buttons (3 distinct)
| Rendered | Height | Padding | Radius | Background / Text | Border | Font |
|---|---|---|---|---|---|---|
| Sync linear tasks | 32px | 8px 12px | 10px | rgba(255, 255, 255, 0.1)#FFFFFF | none | 13px / 400 |
| Send | 36px | 2px 12px | 4px | #E6E6E6#2F3031 | none | 14px / 500 |
| Download | 36px | 8px 12px | 8px | #E6E6E6#2F3031 | none | 14px / 500 |
Cards (8 distinct)
| # | Background | Border | Radius | Padding | Shadow |
|---|---|---|---|---|---|
| 1 | rgba(0, 0, 0, 0.44) | 1px solid rgba(255, 255, 255, 0.08) | 19px | 8px 8px | rgba(255, 255, 255, 0.03) 0px 0px 40px 20px, rgba(255, 255, 255, 0.3) 0px 0.5px 0px 0px inset |
| 2 | #07080A | 1px solid rgba(255, 255, 255, 0.08) | 12px | 0px 0px | rgba(255, 255, 255, 0.19) 0px 0px 2px 0px, rgba(255, 255, 255, 0.1) 0px 0.5px 0px 0px inset |
| 3 | rgba(0, 0, 0, 0.6) | 1px solid rgba(140, 140, 145, 0.2) | 12px | 0px 0px | rgba(0, 0, 0, 0.4) 0px 4px 40px 8px, rgba(0, 0, 0, 0.8) 0px 0px 0px 0.5px, rgba(255, 255, 255, 0.3) 0px 0.5px 0px 0px inset |
| 4 | rgba(157, 186, 216, 0.1) | 1px solid rgba(140, 140, 145, 0.2) | 12px | 0px 0px | rgba(0, 0, 0, 0.4) 0px 4px 40px 8px, rgba(0, 0, 0, 0.8) 0px 0px 0px 0.5px, rgba(255, 255, 255, 0.3) 0px 0.5px 0px 0px inset |
Rules: what never to do in the Raycast style
- NEVER substitute generic uncalibrated gray backgrounds for Raycast’s exact
#07080Acanvas and#141517surface pairing. - NEVER replace
Interdisplay typography or ignore its signature scale (64px / 1.1 (w600)). - 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 (
10px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with
JetBrains Mono.
Copy-paste kit
CSS variables
:root {
/* Raycast style — extracted from raycast.com by taste-skill */
--canvas: #07080A;
--surface: #141517;
--text: #FFFFFF;
--text-muted: #9CA3AF;
--accent: #FF6363;
--border: rgba(255, 255, 255, 0.08);
--font-heading: Inter, Inter, system-ui, -apple-system, sans-serif;
--font-body: Inter, Inter, system-ui, -apple-system, sans-serif;
--font-mono: 'JetBrains Mono', 'JetBrains Mono', ui-monospace, monospace;
--h1-size: 64px;
--h1-tracking: 0em;
--h1-weight: 600;
--radius-button: 10px;
--radius-common: 8px;
--shadow-common: rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px, rgb(0, 0, 0) 0px 0px 0.5px 1px, rgba(0, 0, 0, 0.25) 0px 2px 1px 1px inset, rgba(255, 255, 255, 0.2) 0px 1px 1px 1px inset, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset;
--ease: cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1);
--duration: 0.4s, 0.2s, 0.2s, 0.2s, 0.4s, 0.4s;
}tailwind.config.js
// tailwind.config.js — Raycast style tokens (taste-skill)
module.exports = {
theme: {
extend: {
colors: {
canvas: "#07080A",
surface: "#141517",
ink: "#FFFFFF",
muted: "#9CA3AF",
accent: "#FF6363",
line: "rgba(255, 255, 255, 0.08)",
},
fontFamily: {
heading: ["Inter", 'Inter', 'system-ui', 'sans-serif'],
sans: ["Inter", 'Inter', 'system-ui', 'sans-serif'],
mono: ["JetBrains Mono", 'ui-monospace', 'monospace'],
},
fontSize: { display: ["64px", { letterSpacing: "0em", fontWeight: "600" }] },
borderRadius: { button: "10px", card: "8px" },
boxShadow: { brand: "rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px, rgb(0, 0, 0) 0px 0px 0.5px 1px, rgba(0, 0, 0, 0.25) 0px 2px 1px 1px inset, rgba(255, 255, 255, 0.2) 0px 1px 1px 1px inset, rgba(0, 0, 0, 0) 0px 0px 0px 0px inset" },
transitionTimingFunction: { brand: "cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1), cubic-bezier(0.23, 1, 0.32, 1)" },
},
},
};.cursor/skills/raycast-style/SKILL.md
--- name: raycast-style description: Build UI in the Raycast visual style (Desktop-Class macOS Acrylic Glass & Crimson Spotlight). Use when the user asks for a Raycast-like look. --- # Raycast Style — Quick Rules (source: raycast.com, extracted by taste-skill) ## Tokens - canvasBg: #07080A — Primary Raycast page canvas - surfaceElevated: #141517 — Primary elevated card & bento surface - surfaceSecondary: rgba(0, 0, 0, 0.6) — 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.06) — Secondary nested module or pill border - textPrimary: #FFFFFF — Hero H1, section H2 & high-contrast foreground - textMuted: #9CA3AF — Lead paragraphs, descriptions & muted labels - accentPrimary: #FF6363 — Primary interactive CTA & brand highlight (10px) - accentSecondary: rgba(255, 255, 255, 0.1) — Secondary badge, syntax or telemetry highlight ## Typography - Heading font: Inter; body: Inter; mono: JetBrains Mono - Hero H1: 64px | line-height 70.4px (leading-[1.1]) | letter-spacing 0px (tracking-[0em]) | weight 600 (font-[600]) | color #FFFFFF (text-white) | font Inter - Section H2 (Primary): 32px | line-height 38.4px (leading-[1.2]) | letter-spacing -0.8px (tracking-[-0.025em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter - Section H2 (Secondary): 20px | line-height 24px (leading-[1.2]) | letter-spacing 0.2px (tracking-[0.01em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter - Card / Feature H3: 24px | line-height 28.8px (leading-[1.2]) | letter-spacing 0.2px (tracking-[0.008em]) | weight 500 (font-[500]) | color #FFFFFF (text-white) | font Inter ## Components - Primary button: height 32px, padding 8px 12px, radius 10px, bg rgba(255, 255, 255, 0.1), text #FFFFFF, 13px / 400 - Card: bg rgba(0, 0, 0, 0.44), border 1px solid rgba(255, 255, 255, 0.08), radius 19px, padding 8px 8px ## Never - NEVER substitute generic uncalibrated gray backgrounds for Raycast’s exact #07080A canvas and #141517 surface pairing. - NEVER replace Inter display typography or ignore its signature scale (64px / 1.1 (w600)). - 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 (10px) or introduce off-brand saturated gradients. - NEVER use default browser monospace when rendering code or telemetry—always pair with JetBrains Mono. Full 120-line spec: https://taste-skill.pages.dev/taste/raycast/
Or install the full spec
npx taste-skill add raycast
Related
Raycast full token specRaycast ButtonsRaycast CardsRaycast Pricing TableRaycast vs CursorLinear vs RaycastRaycast vs Notion
Similar styles
Get all 30 full SKILL.md specs (Cursor / Claude Code / Codex ready) plus the Pro growth skills.
See taste-skill Pro →