getdesign.mdgetdesign/raycast

Raycast

Near-black blue-tinted canvas with macOS-native multi-layer shadows, Raycast Red punctuation, Inter with positive tracking, and keyboard key chrome details.

install

npx designkit-cli add getdesign/raycast
source ↗
previewtemplates · Raycast

Typography

Every text element the kit ships — headings through code

elements

Headings

The quick brown fox

Section heading

Subsection heading

Minor heading

Overline heading

Body text

Lead paragraph.Body text sits at the backbone of any interface — if it reads well, everything else has a chance. If it doesn't, nothing else matters.

Standard paragraph at the body size. Type hierarchies work best when the jump from body to subheading is clear but not disruptive — around 1.25-1.5× works across most contexts. Inline elements like a link, inline code, emphasis, strong, and highlighted text should all feel native to the kit.

Small / caption text — used for metadata, timestamps, descriptions under labels. Usually 14px or slightly smaller.

Lists

Unordered

  • Token-driven styling
  • Agent-readable format
  • Composable kits
    • Colors
    • Typography
    • Component stylings
  • Portable between projects

Ordered

  1. Describe the kit in prose
  2. Extract colors and typography
  3. Apply to a sample UI
  4. Iterate on token values

Blockquote

“Good design is as little design as possible. Less, but better — because it concentrates on the essential aspects, and the products are not burdened with non-essentials.”
— Dieter Rams

Code

// install a kit
$ npx designkit-cli add airbnb

// apply it to your project
import { applyKit } from "@designkit/theme"
applyKit("airbnb")

Rule


Buttons

Primary, secondary, outline, ghost — every state the kit ships

elements

Default

Sizes

With icon

Form fields

Every input control the kit ships — text, select, checkboxes, radios, switches, file

elements

Text inputs

Textarea

Select

Checkboxes

Radio group

Billing cadence

Toggle switch

File input

Feedback

Alerts, badges, progress, tooltips, avatars — the signal surface of every UI

elements

Alerts

!

Scheduled maintenance

We'll be rolling out a new version on Friday at 22:00 UTC. Expect a short read-only window.

!

Kit published

Your DESIGN.md is live. Anyone can now install it with `npx designkit-cli add you/my-kit`.

!

Deprecated API

You're calling /v1/kits which will be removed in 30 days. Migrate to /v2/kits.

!

Build failed

Two component tokens reference an undefined color. Run `designkit lint` to see them.

Badges & tags

OfficialCommunityv2.0BetaDeprecatedOutlineOutline alt

Avatars

JD

Jeremy Dupont

Author

ALMTKPSJ+6

Progress

Upload32%
Build78%
Complete100%

Spinner

Loading…

Tooltip (static)

Tooltip text

Keyboard shortcut

Press K to open the command palette, or Esc to dismiss.

Data display

Table, definition list, empty state — how the kit shows structured data

app

Table

KitAuthorInstallsUpdatedStatus
airbnbgetdesign12.4K2d agoActive
claudegetdesign8.1K5d agoActive
stripegetdesign7.9K1w agoActive
linear.appgetdesign6.2K2w agoBeta
heritagedk2.1K1mo agoDraft

Definition list

Name
Airbnb
Author
getdesign · Claude
Format
DESIGN.md (Google Stitch spec)
Primary font
Nunito (substitute for Airbnb Cereal VF)
Installs
12,408
License
MIT

Empty state

No kits yet

You haven't published any kits on this account. Drop a DESIGN.md in a public repo to get started.

Breadcrumbs

Tabs

Sign in

Centered auth card — the most scrutinised surface in any app

app

Welcome back

Sign in with your work email to continue.

or

New here? Create an account

Dashboard KPIs

Four-card stat row — the staple of every internal dashboard

app

Overview

Performance for the last 30 days

Active users

12,408

+4.2% vs last period

MRR

$28.9K

+12.1% vs last period

Churn

1.8%

-0.3% vs last period

NPS

72

+5 vs last period

[chart placeholder]

Chat thread

Agent + user turn-based chat — bubbles, avatar, timestamp

app
A

Design Agent

online · responds in seconds

Hey — what's the goal of today's session?
I want to ship a pricing page that matches our brand.
Got it. Sharing three variants in a sec — each in your brand tokens so it'll feel native. Which fits better: conversion-first, feature-first, or transparency-first?
Let's try conversion-first.

Hero

Landing-page headline + subtitle + primary CTA

marketing
New · v2.0

Designed for humans. Built for agents.

Ship a brand-aligned product in hours. Coding agents write UI that matches your design system — no brief, no handoff.

Pricing

Three-tier comparison grid with a highlighted middle tier

marketing

Simple pricing

Pay for what you use. Change plans any time.

Hobby

$0forever
  • 1 project
  • Community support
  • Public kits only

Pro

Popular
$19per month
  • Unlimited projects
  • Private kits
  • Priority support
  • AI kit generator

Team

$49per seat / mo
  • Everything in Pro
  • Shared workspace
  • SSO + audit logs
  • Dedicated support

source

---
name: Raycast
description:
  Near-black blue-tinted canvas with macOS-native multi-layer shadows, Raycast
  Red punctuation, Inter with positive tracking, and keyboard key chrome
  details.
originalFonts:
  primary: "Inter"
  mono: "GeistMono"
  fallbacks:
    - "Inter Fallback"
    - "system sans-serif"
colors:
  background: "#07080a"
  surface: "#101111"
  ink: "#f9f9f9"
  ink-muted: "#9c9c9d"
  accent: "#FF6363"
  accent-alt: "#55b3ff"
  border: "#252829"
  link: "#55b3ff"
  near-black-blue: "#07080a"
  pure-white: "#ffffff"
  raycast-red: "#FF6363"
  raycast-blue: "#55b3ff"
  raycast-green: "#5fc992"
  raycast-yellow: "#ffbc33"
  deep-background: "#07080a"
  surface-100: "#101111"
  key-start: "#121212"
  key-end: "#0d0d0d"
  card-surface: "#1b1c1e"
  button-foreground: "#18191a"
  near-white: "#f9f9f9"
  light-gray: "#cecece"
  silver: "#c0c0c0"
  medium-gray: "#9c9c9d"
  dim-gray: "#6a6b6c"
  dark-gray: "#434345"
  dark-border: "#2f3031"
typography:
  h1:
    family: "Inter"
    size: "4rem"
    weight: 600
    lineHeight: 1.1
  h2:
    family: "Inter"
    size: "3.5rem"
    weight: 400
    lineHeight: 1.17
  body:
    family: "Inter"
    size: "1rem"
    weight: 500
    lineHeight: 1.6
  code:
    family: "JetBrains Mono"
spacing:
  xs: "0.5rem"
  sm: "0.75rem"
  md: "1rem"
  lg: "1.5rem"
  xl: "2.5rem"
rounded:
  sm: "4px"
  md: "6px"
  lg: "12px"
  xl: "86px"
shadows:
  sm: "rgba(0, 0, 0, 0.28) 0px 1.189px 2.377px"
  md:
    "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"
components:
  button-primary:
    background: "hsla(0, 0%, 100%, 0.815)"
    color: "{colors.button-foreground}"
    border: "1px solid rgba(255, 255, 255, 0.1)"
    radius: "{rounded.xl}"
    padding: "0.625rem 1.25rem"
  button-secondary:
    background: "transparent"
    color: "{colors.ink}"
    border: "1px solid rgba(255, 255, 255, 0.1)"
    radius: "{rounded.md}"
    padding: "0.625rem 1.25rem"
  card:
    background: "{colors.surface}"
    border: "1px solid rgba(255, 255, 255, 0.06)"
    radius: "{rounded.lg}"
    padding: "1.5rem"
  input:
    background: "{colors.background}"
    color: "{colors.ink}"
    border: "1px solid rgba(255, 255, 255, 0.08)"
    radius: "8px"
    padding: "0.5rem 0.75rem"
---

<!-- source: VoltAgent/awesome-design-md @ 80bbbc2 (MIT) — see ATTRIBUTION.md -->

# Design System Inspiration of Raycast

## 1. Visual Theme & Atmosphere

Raycast's marketing site feels like the dark interior of a precision instrument
— a Swiss watch case carved from obsidian. The background isn't just dark, it's
an almost-black blue-tint (`#07080a`) that creates a sense of being inside a
macOS native application rather than a website. Every surface, every border,
every shadow is calibrated to evoke the feeling of a high-performance desktop
utility: fast, minimal, trustworthy.

The signature move is the layered shadow system borrowed from macOS window
chrome: multi-layer box-shadows with inset highlights that simulate physical
depth, as if cards and buttons are actual pressed or raised glass elements on a
dark desk. Combined with Raycast Red (`#FF6363`) — deployed almost exclusively
in the hero's iconic diagonal stripe pattern — the palette creates a brand that
reads as "powerful tool with personality." The red doesn't dominate; it
punctuates.

Inter is used everywhere — headings, body, buttons, captions — with extensive
OpenType features (`calt`, `kern`, `liga`, `ss03`) creating a consistent,
readable typographic voice. The positive letter-spacing (0.2px–0.4px on body
text) is unusual for a dark UI and gives the text an airy, breathable quality
that counterbalances the dense, dark surfaces. GeistMono appears for code
elements, reinforcing the developer-tool identity.

**Key Characteristics:**

- Near-black blue-tinted background (`#07080a`) — not pure black, subtly
  blue-shifted
- macOS-native shadow system with multi-layer inset highlights simulating
  physical depth
- Raycast Red (`#FF6363`) as a punctuation color — hero stripes, not pervasive
- Inter with positive letter-spacing (0.2px) for an airy, readable dark-mode
  experience
- Radix UI component primitives powering the interaction layer
- Subtle rgba white borders (0.06–0.1 opacity) for containment on dark surfaces
- Keyboard shortcut styling with gradient key caps and heavy shadows

## 2. Color Palette & Roles

### Primary

- **Near-Black Blue** (`#07080a`): Primary page background — the foundational
  void with a subtle blue-cold undertone
- **Pure White** (`#ffffff`): Primary heading text, high-emphasis elements
- **Raycast Red** (`#FF6363` / `hsl(0, 100%, 69%)`): Brand accent — hero
  stripes, danger states, critical highlights

### Secondary & Accent

- **Raycast Blue** (`hsl(202, 100%, 67%)` / ~`#55b3ff`): Interactive accent —
  links, focus states, selected items
- **Raycast Green** (`hsl(151, 59%, 59%)` / ~`#5fc992`): Success states,
  positive indicators
- **Raycast Yellow** (`hsl(43, 100%, 60%)` / ~`#ffbc33`): Warning accents,
  highlights
- **Blue Transparent** (`hsla(202, 100%, 67%, 0.15)`): Blue tint overlay for
  interactive surfaces
- **Red Transparent** (`hsla(0, 100%, 69%, 0.15)`): Red tint overlay for
  danger/error surfaces

### Surface & Background

- **Deep Background** (`#07080a`): Page canvas, the darkest surface
- **Surface 100** (`#101111`): Elevated surface, card backgrounds
- **Key Start** (`#121212`): Keyboard key gradient start
- **Key End** (`#0d0d0d`): Keyboard key gradient end
- **Card Surface** (`#1b1c1e`): Badge backgrounds, tag fills, elevated
  containers
- **Button Foreground** (`#18191a`): Dark surface for button text on light
  backgrounds

### Neutrals & Text

- **Near White** (`#f9f9f9` / `hsl(240, 11%, 96%)`): Primary body text,
  high-emphasis content
- **Light Gray** (`#cecece` / `#cdcdce`): Secondary body text, descriptions
- **Silver** (`#c0c0c0`): Tertiary text, subdued labels
- **Medium Gray** (`#9c9c9d`): Link default color, secondary navigation
- **Dim Gray** (`#6a6b6c`): Disabled text, low-emphasis labels
- **Dark Gray** (`#434345`): Muted borders, inactive navigation links
- **Border** (`hsl(195, 5%, 15%)` / ~`#252829`): Standard border color for cards
  and dividers
- **Dark Border** (`#2f3031`): Separator lines, table borders

### Semantic & Accent

- **Error Red** (`hsl(0, 100%, 69%)`): Error states, destructive actions
- **Success Green** (`hsl(151, 59%, 59%)`): Success confirmations, positive
  states
- **Warning Yellow** (`hsl(43, 100%, 60%)`): Warnings, attention-needed states
- **Info Blue** (`hsl(202, 100%, 67%)`): Informational highlights, links

### Gradient System

- **Keyboard Key Gradient**: Linear gradient from `#121212` (top) to `#0d0d0d`
  (bottom) — simulates physical key depth
- **Warm Glow**: `rgba(215, 201, 175, 0.05)` radial spread — subtle warm ambient
  glow behind featured elements

## 3. Typography Rules

### Font Family

- **Primary**: `Inter` — humanist sans-serif, used everywhere. Fallbacks:
  `Inter Fallback`, system sans-serif
- **System**: `SF Pro Text` — Apple system font for select macOS-native UI
  elements. Fallbacks: `SF Pro Icons`, `Inter`, `Inter Fallback`
- **Monospace**: `GeistMono` — Vercel's monospace font for code elements.
  Fallbacks: `ui-monospace`, `SFMono-Regular`, `Roboto Mono`, `Menlo`, `Monaco`
- **OpenType features**: `calt`, `kern`, `liga`, `ss03` enabled globally;
  `ss02`, `ss08` on display text; `liga` disabled (`"liga" 0`) on hero headings

### Hierarchy

| Role            | Size             | Weight | Line Height | Letter Spacing | Notes                               |
| --------------- | ---------------- | ------ | ----------- | -------------- | ----------------------------------- |
| Display Hero    | 64px             | 600    | 1.10        | 0px            | OpenType: liga 0, ss02, ss08        |
| Section Display | 56px             | 400    | 1.17        | 0.2px          | OpenType: calt, kern, liga, ss03    |
| Section Heading | 24px             | 500    | normal      | 0.2px          | OpenType: calt, kern, liga, ss03    |
| Card Heading    | 22px             | 400    | 1.15        | 0px            | OpenType: calt, kern, liga, ss03    |
| Sub-heading     | 20px             | 500    | 1.60        | 0.2px          | Relaxed line-height for readability |
| Body Large      | 18px             | 400    | 1.15        | 0.2px          | OpenType: calt, kern, liga, ss03    |
| Body            | 16px             | 500    | 1.60        | 0.2px          | Primary body text, relaxed rhythm   |
| Body Tight      | 16px             | 400    | 1.15        | 0.1px          | UI labels, compact contexts         |
| Button          | 16px             | 600    | 1.15        | 0.3px          | Semibold, slightly wider tracking   |
| Nav Link        | 16px             | 500    | 1.40        | 0.3px          | Links in navigation                 |
| Caption         | 14px             | 500    | 1.14        | 0.2px          | Small labels, metadata              |
| Caption Bold    | 14px             | 600    | 1.40        | 0px            | Emphasized captions                 |
| Small           | 12px             | 600    | 1.33        | 0px            | Badges, tags, micro-labels          |
| Small Link      | 12px             | 400    | 1.50        | 0.4px          | Footer links, fine print            |
| Code            | 14px (GeistMono) | 500    | 1.60        | 0.3px          | Code blocks, technical content      |
| Code Small      | 12px (GeistMono) | 400    | 1.60        | 0.2px          | Inline code, terminal output        |

### Principles

- **Positive tracking on dark**: Unlike most dark UIs that use tight or neutral
  letter-spacing, Raycast applies +0.2px to +0.4px — creating an airy, readable
  feel that compensates for the dark background
- **Weight 500 as baseline**: Most body text uses medium weight (500), not
  regular (400) — subtle extra heft improves legibility on dark surfaces
- **Display restraint**: Hero text at 64px/600 is confident but not oversized —
  Raycast avoids typographic spectacle in favor of functional elegance
- **OpenType everywhere**: `ss03` (stylistic set 3) is enabled globally across
  Inter, giving the typeface a slightly more geometric, tool-like quality

## 4. Component Stylings

### Buttons

- **Primary Pill**: Transparent background, white text, pill shape (86px
  radius), multi-layer inset shadow
  (`rgba(255, 255, 255, 0.1) 0px 1px 0px 0px inset`). Hover: opacity 0.6
- **Secondary Button**: Transparent background, white text, 6px radius,
  `1px solid rgba(255, 255, 255, 0.1)` border, subtle drop shadow
  (`rgba(0, 0, 0, 0.03) 0px 7px 3px`). Hover: opacity 0.6
- **Ghost Button**: No background or border, gray text (`#6a6b6c`), 86px radius,
  same inset shadow. Hover: opacity 0.6, text brightens to white
- **CTA (Download)**: Semi-transparent white background
  (`hsla(0, 0%, 100%, 0.815)`), dark text (`#18191a`), pill shape. Hover: full
  white background (`hsl(0, 0%, 100%)`)
- **Transition**: All buttons use opacity transition for hover rather than
  background-color change — a signature Raycast interaction pattern

### Cards & Containers

- **Standard Card**: `#101111` surface, `1px solid rgba(255, 255, 255, 0.06)`
  border, 12px–16px border-radius
- **Elevated Card**: Ring shadow `rgb(27, 28, 30) 0px 0px 0px 1px` outer +
  `rgb(7, 8, 10) 0px 0px 0px 1px inset` inner — creates a double-ring
  containment
- **Feature Card**: 16px–20px border-radius, subtle warm glow
  (`rgba(215, 201, 175, 0.05) 0px 0px 20px 5px`) behind hero elements
- **Hover**: Cards brighten slightly via border opacity increase or subtle
  shadow enhancement

### Inputs & Forms

- Dark input fields with `#07080a` background,
  `1px solid rgba(255, 255, 255, 0.08)` border, 8px border-radius
- Focus state: Border brightens, blue glow (`hsla(202, 100%, 67%, 0.15)`) ring
  appears
- Text: `#f9f9f9` input color, `#6a6b6c` placeholder
- Labels: `#9c9c9d` at 14px weight 500

### Navigation

- **Top nav**: Dark background blending with page, white text links at 16px
  weight 500
- **Nav links**: Gray text (`#9c9c9d`) → white on hover, underline decoration on
  hover
- **CTA button**: Semi-transparent white pill at nav end
- **Mobile**: Collapses to hamburger, maintains dark theme
- **Sticky**: Nav fixed at top with subtle border separator

### Image Treatment

- **Product screenshots**: macOS window chrome style — rounded corners (12px),
  deep shadows simulating floating windows
- **Full-bleed sections**: Dark screenshots blend seamlessly into the dark
  background
- **Hero illustration**: Diagonal stripe pattern in Raycast Red — abstract,
  geometric, brand-defining
- **App UI embeds**: Showing actual Raycast command palette and extensions —
  product as content

### Keyboard Shortcut Keys

- **Key cap styling**: Gradient background (`#121212` → `#0d0d0d`), heavy
  multi-layer shadow (`rgba(0, 0, 0, 0.4) 0px 1.5px 0.5px 2.5px` + inset
  shadows), creating realistic physical key appearance
- Border-radius: 4px–6px for individual keys

### Badges & Tags

- **Neutral badge**: `#1b1c1e` background, white text, 6px radius, 14px font at
  weight 500, `0px 6px` padding
- Compact, pill-like treatment for categorization

## 5. Layout Principles

### Spacing System

- **Base unit**: 8px
- **Scale**: 1px, 2px, 3px, 4px, 8px, 10px, 12px, 16px, 20px, 24px, 32px, 40px
- **Section padding**: 80px–120px vertical between major sections
- **Card padding**: 16px–32px internal spacing
- **Component gaps**: 8px–16px between related elements

### Grid & Container

- **Max width**: ~1200px container (breakpoint at 1204px), centered
- **Column patterns**: Single-column hero, 2–3 column feature grids, full-width
  showcase sections
- **App showcase**: Product UI presented in centered window frames

### Whitespace Philosophy

- **Dramatic negative space**: Sections float in vast dark void, creating
  cinematic pacing between features
- **Dense product, sparse marketing**: The product UI screenshots are
  information-dense, but the surrounding marketing copy uses minimal text with
  generous spacing
- **Vertical rhythm**: Consistent 24px–32px gaps between elements within
  sections

### Border Radius Scale

- **2px–3px**: Micro-elements, code spans, tiny indicators
- **4px–5px**: Keyboard keys, small interactive elements
- **6px**: Buttons, badges, tags — the workhorse radius
- **8px**: Input fields, inline components
- **9px–11px**: Images, medium containers
- **12px**: Standard cards, product screenshots
- **16px**: Large cards, feature sections
- **20px**: Hero cards, prominent containers
- **86px+**: Pill buttons, nav CTAs — full pill shape

## 6. Depth & Elevation

| Level              | Treatment                                                                                                                                     | Use                                                                |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| Level 0 (Void)     | No shadow, `#07080a` surface                                                                                                                  | Page background                                                    |
| Level 1 (Subtle)   | `rgba(0, 0, 0, 0.28) 0px 1.189px 2.377px`                                                                                                     | Minimal lift, inline elements                                      |
| Level 2 (Ring)     | `rgb(27, 28, 30) 0px 0px 0px 1px` outer + `rgb(7, 8, 10) 0px 0px 0px 1px inset` inner                                                         | Card containment, double-ring technique                            |
| Level 3 (Button)   | `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` | macOS-native button press — white highlight top, dark inset bottom |
| Level 4 (Key)      | 5-layer shadow stack with inset press effects                                                                                                 | Keyboard shortcut key caps — physical 3D appearance                |
| Level 5 (Floating) | `rgba(0, 0, 0, 0.5) 0px 0px 0px 2px` + `rgba(255, 255, 255, 0.19) 0px 0px 14px` + insets                                                      | Command palette, floating panels — heavy depth with glow           |

### Shadow Philosophy

Raycast's shadow system is the most macOS-native on the web. Multi-layer shadows
combine:

- **Outer rings** for containment (replacing traditional borders)
- **Inset top highlights** (`rgba(255, 255, 255, 0.05–0.25)`) simulating light
  source from above
- **Inset bottom darks** (`rgba(0, 0, 0, 0.2)`) simulating shadow underneath
- The effect is physical: elements feel like glass or brushed metal, not flat
  rectangles

### Decorative Depth

- **Warm glow**: `rgba(215, 201, 175, 0.05) 0px 0px 20px 5px` behind featured
  elements — a subtle warm aura on the cold dark canvas
- **Blue info glow**: `rgba(0, 153, 255, 0.15)` for interactive state emphasis
- **Red danger glow**: `rgba(255, 99, 99, 0.15)` for error/destructive state
  emphasis

## 7. Do's and Don'ts

### Do

- Use `#07080a` (not pure black) as the background — the blue-cold tint is
  essential to the Raycast feel
- Apply positive letter-spacing (+0.2px) on body text — this is deliberately
  different from most dark UIs
- Use multi-layer shadows with inset highlights for interactive elements — the
  macOS-native depth is signature
- Keep Raycast Red (`#FF6363`) as punctuation, not pervasive — reserve it for
  hero moments and error states
- Use `rgba(255, 255, 255, 0.06)` borders for card containment — barely visible,
  structurally essential
- Apply weight 500 as the body text baseline — medium weight improves dark-mode
  legibility
- Use pill shapes (86px+ radius) for primary CTAs, rectangular shapes (6px–8px)
  for secondary actions
- Enable OpenType features `calt`, `kern`, `liga`, `ss03` on all Inter text
- Use opacity transitions (hover: opacity 0.6) for button interactions, not
  color changes

### Don't

- Use pure black (`#000000`) as the background — the blue tint differentiates
  Raycast from generic dark themes
- Apply negative letter-spacing on body text — Raycast deliberately uses
  positive spacing for readability
- Use Raycast Blue as the primary accent for everything — blue is for
  interactive/info, red is the brand color
- Create single-layer flat shadows — the multi-layer inset system is core to the
  macOS-native aesthetic
- Use regular weight (400) for body text when 500 is available — the extra
  weight prevents dark-mode text from feeling thin
- Mix warm and cool borders — stick to the cool gray (`hsl(195, 5%, 15%)`)
  border palette
- Apply heavy drop shadows without inset companions — shadows always come in
  pairs (outer + inset)
- Use decorative elements, gradients, or colorful backgrounds — the dark void is
  the stage, content is the performer

## 8. Responsive Behavior

### Breakpoints

| Name          | Width         | Key Changes                                                             |
| ------------- | ------------- | ----------------------------------------------------------------------- |
| Mobile        | <600px        | Single column, stacked cards, hamburger nav, hero text reduces to ~40px |
| Small Tablet  | 600px–768px   | 2-column grid begins, nav partially visible                             |
| Tablet        | 768px–1024px  | 2–3 column features, nav expanding, screenshots scale                   |
| Desktop       | 1024px–1200px | Full layout, all nav links visible, 64px hero display                   |
| Large Desktop | >1200px       | Max-width container centered, generous side margins                     |

### Touch Targets

- Pill buttons: 86px radius with 20px padding — well above 44px minimum
- Secondary buttons: 8px padding minimum, but border provides visual target
  expansion
- Nav links: 16px text with surrounding padding for accessible touch targets

### Collapsing Strategy

- **Navigation**: Full horizontal nav → hamburger at mobile with slide-out menu
- **Hero**: 64px display → 48px → 36px across breakpoints
- **Feature grids**: 3-column → 2-column → single-column stack
- **Product screenshots**: Scale within containers, maintaining macOS window
  chrome proportions
- **Keyboard shortcut displays**: Simplify or hide on mobile where keyboard
  shortcuts are irrelevant

### Image Behavior

- Product screenshots scale responsively within fixed-ratio containers
- Hero diagonal stripe pattern scales proportionally
- macOS window chrome rounded corners maintained at all sizes
- No lazy-loading artifacts — images are critical to the product narrative

## 9. Agent Prompt Guide

### Quick Color Reference

- Primary Background: Near-Black Blue (`#07080a`)
- Primary Text: Near White (`#f9f9f9`)
- Brand Accent: Raycast Red (`#FF6363`)
- Interactive Blue: Raycast Blue (`hsl(202, 100%, 67%)` / ~`#55b3ff`)
- Secondary Text: Medium Gray (`#9c9c9d`)
- Card Surface: Surface 100 (`#101111`)
- Border: Dark Border (`hsl(195, 5%, 15%)` / ~`#252829`)

### Example Component Prompts

- "Create a hero section on #07080a background with 64px Inter heading (weight
  600, line-height 1.1), near-white text (#f9f9f9), and a semi-transparent white
  pill CTA button (hsla(0,0%,100%,0.815), 86px radius, dark text #18191a)"
- "Design a feature card with #101111 background, 1px solid
  rgba(255,255,255,0.06) border, 16px border-radius, double-ring shadow
  (rgb(27,28,30) 0px 0px 0px 1px outer), 22px Inter heading, and #9c9c9d body
  text"
- "Build a navigation bar on dark background (#07080a), Inter links at 16px
  weight 500 in #9c9c9d, hover to white, and a translucent white pill button at
  the right end"
- "Create a keyboard shortcut display with key caps using gradient background
  (#121212→#0d0d0d), 5-layer shadow for physical depth, 4px radius, Inter 12px
  weight 600 text"
- "Design an alert card with #101111 surface, Raycast Red (#FF6363) left border
  accent, translucent red glow (hsla(0,100%,69%,0.15)), white heading, and
  #cecece description text"

### Iteration Guide

When refining existing screens generated with this design system:

1. Check the background is `#07080a` not pure black — the blue tint is critical
2. Verify letter-spacing is positive (+0.2px) on body text — negative spacing
   breaks the Raycast aesthetic
3. Ensure shadows have both outer and inset layers — single-layer shadows look
   flat and wrong
4. Confirm Inter has OpenType features `calt`, `kern`, `liga`, `ss03` enabled
5. Test that hover states use opacity transitions (0.6) not color swaps — this
   is a core interaction pattern