Skip to content

sweetgreen Design System

sweetgreen design system as a DESIGN.md file. Cream #f4f3e7, forest #00473c, chartreuse #e6ff55, SweetSans, 22 components. For React, Next.js, and AI tools.

Add shadcn.io to your AI agent. · Pro It installs blocks, icons and templates in your design system from a prompt, with Pro.

Set up MCP
Primary
#00473c
Typeface
SweetSansText
Shape
Soft
Base radius
10px
Colors
18
Type tokens
15
Components
22
Spacing values
9

About

About sweetgreen DESIGN.md

Curated by Dov Azencot · Updated May 13, 2026 · Source sweetgreen.com (opens in a new tab)

sweetgreen's web flagship reads like a printed café menu translated to the screen — a cream paper canvas ("#f4f3e7") instead of pure white, near-black ink ("#0e150e") for body, a single forest voltage ("#00473c") on the order button, and one electric chartreuse note ("#e6ff55") locked to that button's label. The hero word "Wraps" renders at 80px / 400 in SweetSans Display over a wrap-on-cutting-board photograph; a tiny Grenette italic serif at weight 200 hides inside the in-image CTA — the single editorial flourish in an otherwise photographic, uppercase, sans-only page.

This DESIGN.md packages the system into a single machine-readable spec. Inside: 18 colors tokens grouped into canvas, forest, chartreuse, ink, oxblood-footer, and sage-em roles; 15 SweetSans typography tiers running from 12px footer fine print to an 80px hero display plus the lone 48px Grenette italic CTA face; 4 spacing tokens anchored on an 8px / 24px rhythm; 6 radii tokens dominated by 20px food cards (18 occurrences) and 1000px pill buttons (5 occurrences); and 22 components covering the photo-hero, food card grid, day-part tabs ("Salads / Warm Bowls / Sides"), workplace order rail, kitchen tutorial split, newsletter input, and footer surface.

Feed the file to Claude, Cursor, or GitHub Copilot and the agent reproduces sweetgreen's restraint — the cream canvas, the forest-green pill with chartreuse label, the uppercase 16px nav voice, the photo-first food cards — rather than a generic shadcn theme. Where most quick-service-restaurant brands stack a tomato-red CTA over a white canvas with a bold sans-serif marquee, sweetgreen inverts every default: cream over white, forest over red, photography over typography, lowercase wordmark over an all-caps logotype. The lesson worth studying is the two-token CTA discipline — most brands ship one accent and tint it for the label; sweetgreen ships two non-overlapping voltages and pairs them only inside the one shape they want you to tap.

What makes it distinct

5

  1. Cream paper canvas (`#f4f3e7`)the brand never uses pure white as the page floor, even on product cards
  2. Two-token CTAforest green ("#00473c") fill with electric chartreuse ("#e6ff55") label, the only chartreuse moment on the page
  3. Universal 1000px full-pill buttons paired with 20px rounded-rectangle food cardsappearing 18 times in the radii table
  4. Two-typeface splitSweetSans handles 14 of 15 type tiers; Grenette serif italic at weight 200 surfaces only inside the wraps-CTA button
  5. Oxblood ("#a72700") scoped to footer surface onlynever a CTA, never a section header

sweetgreen.com

Live at sweetgreen.com

A snapshot of the brand in production. Scroll the frame to see the whole page.

sweetgreen's website at sweetgreen.com

Colors

18 colors

sweetgreen's system runs on #00473c as its primary voltage, used in 1 of 22 components. Type is set in SweetSansText across 15 tokens from 12px to 80px, weights 200–700. Shape language is soft — components average 18px corner radius, with no sharp interactive edges.

Brand & Accent

Sparing, CTA-only voltage · 2

Surface

Page and card backgrounds · 4

Text

Headlines, body, captions · 6

Borders & Hairlines

Dividers, outlines, rules · 1

Other

Specialty colors · 5

Typography

15 type tokens

Set in SweetSansText across 15 tokens, from 12px to 80px, weights 200–700. Shown in its own stack: where the font isn't installed, the fallback the file names stands in.

  • display-hero80px · weight 400 · lh 0.85The quick brown fox jumps over the lazy dog
  • display-lg70px · weight 400 · lh 0.85The quick brown fox jumps over the lazy dog
  • display-md40px · weight 400 · lh 1The quick brown fox jumps over the lazy dog
  • cta-serif48px · weight 200 · lh 1 · tracking -2.25pxThe quick brown fox jumps over the lazy dog
  • heading-uppercase24px · weight 400 · lh 1.2 · tracking 0.72pxThe quick brown fox jumps over the lazy dog
  • heading-emphasis24px · weight 700 · lh 1.2The quick brown fox jumps over the lazy dog
  • body-lg24px · weight 400 · lh 1.2The quick brown fox jumps over the lazy dog
  • body-md18px · weight 400 · lh 1.25The quick brown fox jumps over the lazy dog
  • body-sm16px · weight 400 · lh 1.375The quick brown fox jumps over the lazy dog
  • eyebrow16px · weight 400 · lh 1 · tracking 0.8pxThe quick brown fox jumps over the lazy dog
  • nav-link16px · weight 400 · lh 1The quick brown fox jumps over the lazy dog
  • button-md16px · weight 400 · lh 1The quick brown fox jumps over the lazy dog
  • input-md20px · weight 400 · lh 1.2The quick brown fox jumps over the lazy dog
  • caption12px · weight 400 · lh 1.33 · tracking 0.2pxThe quick brown fox jumps over the lazy dog
  • footer-link14px · weight 400 · lh 1.3The quick brown fox jumps over the lazy dog

Layout

Radii and spacing

6 corner radii and 9 spacing values. Shape language: soft.

Radii

  • none0px
  • sm4px
  • md10px
  • lg20px
  • xl24px
  • full1000px

Spacing

  • xxs4px
  • xs8px
  • sm16px
  • md24px
  • base40px
  • lg60px
  • xl100px
  • gutter24px
  • nav-height72px

Components

22 components

Each rendered from its tokens (color, type, radius, padding) on sweetgreen's own canvas.

  • Button Primary
    button-primaryButton Primary
  • Button Primary Hover
    button-primary-hoverButton Primary Hover
  • Button Secondary
    button-secondaryButton Secondary
  • Button Hero Photo
    button-hero-photoButton Hero Photo
  • Top Nav
    top-navTop Nav
  • Nav Link
    nav-linkNav Link
  • Hero Photo Block
    hero-photo-blockHero Photo Block
  • Hero Headline
    hero-headlineHero Headline
  • Hero Eyebrow
    hero-eyebrowHero Eyebrow
  • Day Part Tab Active
    day-part-tab-activeDay Part Tab Active
  • Day Part Tab Inactive
    day-part-tab-inactiveDay Part Tab Inactive
  • Food Card
    food-cardFood Card
  • Food Card Title
    food-card-titleFood Card Title
  • Food Card Meta
    food-card-metaFood Card Meta
  • Feature Band Workplace
    feature-band-workplaceFeature Band Workplace
  • Feature Band Kitchen
    feature-band-kitchenFeature Band Kitchen
  • Feature Headline
    feature-headlineFeature Headline
  • Type here…
    text-inputText Input
  • Newsletter Submit
    newsletter-submitNewsletter Submit
  • Footer
    footerFooter
  • Footer Link
    footer-linkFooter Link
  • Social Icon
    social-iconSocial Icon

In use

The system, in use

sweetgreen's tokens on the kind of product it builds.

Build something people actually use.

A short paragraph of marketing copy that previews how the brand's display tier and body tier read together. Two sentences is usually enough.

Get startedLearn more
Marketing heroHeadline, sub-copy, primary CTA — the universal homepage opener.

FAQ

sweetgreen design system FAQ

Common questions about sweetgreen's tokens, components, and how to use this DESIGN.md in your project.

Read next

Specs, directories, and component libraries that pair with this design system.

Use it

Use sweetgreen in your project

One machine-readable file. Drop it into Claude, Cursor, or any AI tool that reads DESIGN.md.

Download DESIGN.md
  1. Download the DESIGN.md

    One machine-readable file: every color, type, radius, spacing, and component token of sweetgreen.

  2. Feed it to your AI tool

    Drop it into Claude, Cursor, or GitHub Copilot. The agent writes React components and Tailwind classes that match sweetgreen's visual language.

  3. Reference the tokens directly

    Or paste the values into your Tailwind config, CSS variables, or component library: every color, size and radius is a quoted, ready-to-copy value.

Read the full DESIGN.md: overview, rationale, do’s and don’ts

Overview

sweetgreen's web flagship reads like printed café signage put on a screen — a warm paper cream ({colors.canvas} — #f4f3e7) replaces the default white canvas, near-black ink ({colors.ink} — #0e150e) carries body and nav, a deep forest ({colors.primary} — #00473c) fills the single primary CTA pill, and an electric chartreuse ({colors.primary-on} — #e6ff55) sits on top of that fill as the button's label. The chartreuse appears nowhere else on the page; total occurrence in the extracted palette is 5, all bound to the Order pill. Where most quick-service restaurant brands stack a tomato-red CTA over a white canvas and shout in 700-weight headings, sweetgreen inverts every default: cream over white, forest over red, weight 400 across nearly the entire type system, photography over typographic muscle.

Type runs SweetSans (display) and SweetSansText (body and chrome) — a single in-house family carrying 14 of 15 type tiers. Display tucks at 80px / 400 over the hero photo; supporting headings render at 24px / 400 uppercase with a tight 0.72px tracking. The lone exception is the in-photo CTA button, which switches to Grenette — a serif italic at weight 200 with -2.25px letter-spacing — for exactly one editorial flourish. The button-level type contrast (sans-uppercase 16px voice everywhere, serif-italic 48px voice once) is the system's signature typographic moment.

The shape language is consistent. Buttons sit on a 1000px full-pill radius ({rounded.full}, five extracted occurrences), food cards take a 20px rounded-rectangle ({rounded.lg}, 18 extracted occurrences — the dominant radius on the page), the newsletter input softens to 10px ({rounded.md}), and there are essentially no hard 0px corners except the full-bleed footer band and the hero photo crop. Section feature bands (workplace, kitchen) use sage paper ({colors.surface-sage} — #d8e5d6) and a wheat paper tint ({colors.surface-paper} — #e8dcc6) to break the cream canvas without introducing a new chromatic voltage.

Key Characteristics:

  • Two-token CTA discipline: forest fill plus chartreuse label, never used apart. The page has exactly one repeating button voltage — the Order pill at 30px height with 7px 16px 5px padding. Where most brands ship one accent and tint it for the label, sweetgreen ships two non-overlapping voltages and pairs them inside one shape.
  • Cream as canvas: --body-color is #f4f3e7 in CSS, not #ffffff. Pure white only appears inside the newsletter input and a few tiny icon backgrounds.
  • Uppercase 16px nav voice: nav links, day-part tabs ("Salads / Warm Bowls / Sides"), food-card titles, and footer column heads all render at 16px / 400 uppercase. The page reads as a printed menu board.
  • 80px hero, 24px everything else: a single dramatic display tier (80px / 400) at the top of the page; every other heading drops to 24px. The system has no mid-tier display weight — it is hero or it is chrome.
  • Photo-first food cards: 20px-rounded photo with the dish name beneath in uppercase, no card surface, no shadow, no hairline. The photograph IS the card.
  • Sage paper feature bands: long horizontal bands use {colors.surface-sage} (#d8e5d6) or {colors.surface-paper} (#e8dcc6) instead of color washes — neutral paper tints rather than chromatic backgrounds keep the cream-page temperature consistent.
  • Oxblood scoped to footer: {colors.footer-bg} (#a72700) reverses the entire footer band against cream chrome above — the only red surface on the page, never used as a CTA.

Menu-as-page: sweetgreen's homepage treats every heading like a printed menu board — uppercase, weight 400, 0.72px tracking, sans-serif — and lets photography carry every visual claim. This is not a marketing site that happens to sell food; it is a digital menu that happens to be a marketing site.

Colors

Brand & Accent

  • Forest Green ({colors.primary} — #00473c) — frequency 15. Used as text (8), border (6), background (1). The CTA fill for the Order pill and the small forest chrome around the order rail. The system's load-bearing brand voltage.
  • Electric Chartreuse ({colors.primary-on} — #e6ff55) — frequency 5. Used as background (4), text (1). The Order pill label color and nothing else — the brightest single moment on the page, paired only with {colors.primary} and never used independently.

Canvas & Surfaces

  • Cream Canvas ({colors.canvas} — #f4f3e7) — frequency 41. Used as text-on-dark (19), border (19), background (3). Defined in CSS as --body-color. The page floor and the footer text color when reversed.
  • Surface Sage ({colors.surface-sage} — #d8e5d6) — frequency 3. Used as background (3). Long horizontal feature band background for "All the ways we keep your workplace working" — paper-toned, not chromatic. Also wired into --em-color.
  • Surface Paper ({colors.surface-paper} — #e8dcc6) — frequency 1. Used as background (1). Second-tier feature band tint for "Step inside the sweetgreen kitchen" — a wheat-paper warm.
  • White ({colors.surface-white} — #ffffff) — frequency 3. Used as background (3). Scoped to the newsletter input field, social-icon plates, and a few tight surface fills. Never the page floor.

Text & Ink

  • Ink ({colors.ink} — #0e150e) — frequency 185. Used as text (92), border (91), shadow (2). The dominant text color and hairline tone. Wired to --text-color, --border-color, --button-hover-color, --button-hover-border-color. Not pure black — a very dark green-tinted ink.
  • Pure Black ({colors.ink-pure} — #000000) — frequency 440. Used as text (220), border (220). Scoped to food card titles like "Kale Caesar", "Shroomami", "Buffalo Chicken" and the tap-highlight color — the highest-contrast text tier reserved for product names only.
  • Muted ({colors.muted} — #8c8c82) — frequency 4. Used as text (2), border (2). Caption color for fine print and inline metadata.
  • Muted Mid ({colors.muted-mid} — #555555) — frequency 2. Used as text (1), border (1). A secondary muted tone for legal small caps.
  • Placeholder ({colors.placeholder} — #b2b2b2). Used as text (placeholder only). Wired to --placeholder-txt — newsletter input placeholder color.

Footer & Scoped Chrome

  • Oxblood ({colors.footer-bg} — #a72700). Used as background (footer band only). Wired to --footer-color. Reverses the entire footer against the cream chrome above — the only red surface on the page. Never a CTA, never a section header.
  • Tap Highlight ({colors.tap-highlight} — rgba(0, 0, 0, 0.35)) — the touch ripple color wired to --tap-highlight-color.
  • Focus Ring ({colors.focus-ring} — #e59700) — an amber outline wired to --outline-color. Appears only on keyboard focus, scoped to a11y states.

Typography

Font Families

The system runs SweetSans (display) and SweetSansText (body, nav, chrome) — a single in-house family covering 14 of 15 tokens. Fallbacks walk system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif.

Grenette (a serif italic at weight 200 with -2.25px letter-spacing) surfaces in exactly one place: the in-photo CTA button on the hero block. Fallbacks walk Georgia, Cambria, Palatino, "Times New Roman", Times, serif.

Hierarchy

TokenSizeWeightLine HeightLetter SpacingUse
{typography.display-hero}80px4000.850Hero word ("Wraps") over the food photograph
{typography.display-lg}70px4000.850Feature-band headlines ("All the ways we keep your workplace working")
{typography.display-md}40px40010Secondary feature headings
{typography.cta-serif}48px2001-2.25pxGrenette serif italic, used only inside the in-photo CTA button — "Wraps are here"
{typography.heading-uppercase}24px4001.20.72px (UC)Food-card titles inside the day-part grid; uppercase nav-style
{typography.heading-emphasis}24px7001.20A single weight-700 emphasis variant — used on emphasized inline anchor text
{typography.body-lg}24px4001.20Large running body inside feature bands
{typography.body-md}18px4001.250Default body paragraph copy
{typography.body-sm}16px4001.3750Card meta lines and short descriptive copy
{typography.eyebrow}16px40010.8px (UC)Small uppercase eyebrow labels above hero headings
{typography.nav-link}16px40010 (UC)Top-nav links and day-part tabs
{typography.button-md}16px40010Standard CTA pill label
{typography.input-md}20px4001.20Newsletter input typed value
{typography.caption}12px4001.330.2pxFine print, legal, footer micro-copy
{typography.footer-link}14px4001.30Footer column link rows

Principles

Weight 400 carries the entire system. Display does not lean on bold weight to assert hierarchy — it scales up (24 → 70 → 80px) instead. The only weight-700 token is a single emphasis variant used inline on anchors; there is no h1 / h2 / h3 weight ladder in the traditional sense.

The single typographic flourish is the 48px Grenette serif italic at weight 200, used inside one button on the hero photo. That contrast — the entire page in confident sans-uppercase, one button in whisper-light serif italic — is the system's signature moment. Whisper-as-signature: the loudest CTA on the page also carries the lightest font weight.

Note on Font Substitutes

If SweetSans / SweetSansText are unavailable, Inter or Manrope are reasonable open-source substitutes; both sit at similar x-height and stroke weight at 400. For Grenette, the closest open-source matches are Italiana or Cormorant Garamond at Light Italic — both share the high-contrast serif-italic feel at weight 200.

Layout

Spacing System

  • Base unit: 8px (with 4px micro-step).
  • Tokens: {spacing.xxs} 4px · {spacing.xs} 8px · {spacing.sm} 16px · {spacing.md} 24px · {spacing.base} 40px · {spacing.lg} 60px · {spacing.xl} 100px.
  • Extracted dominant spacings: 8px appears 24 times (the workhorse), 24px appears 11 times (gutter), 4px 10 times (micro), 0px 40px 8 times (top-nav horizontal padding shorthand).
  • Top nav padding: 0px 40px (left/right). Nav height --nav-height is locked to 72px.
  • Feature band padding: 60px 0px vertical. Wide horizontal bands sit at 60px of stacked breathing room — wider than a typical SaaS marketing page.
  • Hero CTA button padding: 15px 60px 13px — generous horizontal stretch so the serif italic word reads as a typographic moment, not a button.

Grid & Container

  • Max content width: --maxwidth 90rem (1440px).
  • Narrow content cap: --maxwidth-narrow 40.5625rem (650px) — used inside long-form editorial paragraphs.
  • Grid: --grid is repeat(12, minmax(10px, 1fr)) — a 12-column system with 24px gutters (--gutter).
  • Day-part grid: 3-column food card stack at desktop ("Kale Caesar / Shroomami / Buffalo Chicken"), collapsing to 1-column at mobile.
  • Feature bands: 2-column at desktop (text left, photograph right) — bands stack to 1-column at narrow widths.

Whitespace Philosophy

The page reads as a printed menu — generous vertical air between bands (60px), tight rhythm within cards (8px / 16px), and a 1440px content cap that lets the cream canvas breathe at the page edges. Food cards sit tight to one another in the day-part grid (24px gutter) so the menu reads as a single composition rather than three isolated dishes.

Elevation

The system has no shadow tier in the extracted page. Surfaces separate via tonal contrast and corner rounding rather than layered shadows.

  • Flat (no shadow): every band, every card, every button, the footer. The system either has no elevation cue or relies on color separation.
  • Cards float on photography: food cards have no card surface — the photograph itself is the elevation cue, clipped at {rounded.lg} (20px). The cream page beneath shows through where the photo ends.
  • Feature bands use tonal steps: workplace band sits on {colors.surface-sage} paper, kitchen band on {colors.surface-paper} wheat — these are color-contrast surfaces, not shadow-elevated ones.
  • Focus ring: the single elevated state is the keyboard focus outline at {colors.focus-ring} (#e59700). Reserved for a11y only.

Photo-as-elevation: where most consumer brands ship a shadow definition and apply it everywhere, sweetgreen ships zero shadows and relies on the food photograph against the cream page floor to do the elevation work. The shape sits on the page; the page does not lift.

Shapes

  • {rounded.full} (1000px) — 5 occurrences: every CTA button, the social icon plates, and the in-photo serif CTA. The full pill is the universal button shape.
  • {rounded.lg} (20px) — 18 occurrences: the dominant page radius. Used on food cards, hero photo block, feature-band photographs, and the workplace / kitchen split images.
  • {rounded.xl} (24px) — 1 occurrence: a single oversized card on the workplace feature band.
  • {rounded.md} (10px) — 1 occurrence: the newsletter input field.
  • {rounded.sm} (4px) — 4 occurrences: small micro-radii on inline chips and footer locator components.
  • {rounded.none} (0px): the hero photo crop edge and the full-bleed oxblood footer band.

The shape system is bimodal: buttons are fully round, cards are softly rounded at 20px, and a tiny 4px / 10px tail covers inputs and small chips. There are no mid-tier radii between 10px and 20px.

Components

Buttons

button-primary — Forest fill ({colors.primary} — #00473c), chartreuse label ({colors.primary-on} — #e6ff55), 1000px pill ({rounded.full}), 7px 16px 5px padding (note the asymmetric vertical), 30px height, 16px SweetSansText label, weight 400. The single most identifiable component — the "Order" CTA.

button-primary-hover — On hover the fill flips to {colors.ink} and the label flips to {colors.canvas} — wired via CSS variables --button-hover-color and --button-hover-text-color. The chartreuse voltage drops out on hover, which preserves it as a rest-state-only signal.

button-secondary — Transparent fill, ink text, 1px hairline border at {colors.hairline}, same 30px / 1000px geometry as the primary.

button-hero-photo — The single Grenette serif italic CTA. Cream fill ({colors.canvas}), ink label in {typography.cta-serif} (48px / 200, -2.25px tracking, capitalize), 15px 60px 13px padding. Sits on top of the hero food photograph — the system's signature typographic moment.

Top Navigation

top-nav — Cream surface ({colors.canvas} — matches the page canvas), 72px height (--nav-height), 0px 40px horizontal padding, no bottom hairline. The lowercase wordmark sits flush left, primary nav links sit centered ("Menu", "Locations", "Careers", "Values"), the Order pill sits flush right.

nav-link — Ink text in {typography.nav-link} (16px / 400 uppercase). No underline, no chip background, no active rule.

Hero

hero-photo-block — A full-width photograph of food in a 20px-clipped rectangle ({rounded.lg}), occupying the full width above the day-part grid. No overlay, no scrim — the photograph carries the entire hero.

hero-eyebrow — Cream uppercase eyebrow text in {typography.eyebrow} (16px / 400, 0.8px tracking, uppercase), placed over the photograph above the hero word.

hero-headline — Cream display text in {typography.display-hero} (80px / 400). One word per hero ("Wraps"), letting the photograph beneath dominate.

Day-Part Section

day-part-tab-active — Ink fill, cream text, 1000px pill, 5px 30px 40px padding (the asymmetric vertical creates a generous below-button area where the active state breathes against the cream page). Carries the day-part name in {typography.nav-link} (16px / 400 uppercase).

day-part-tab-inactive — Transparent fill, ink text. Becomes active on click.

food-card — A photo-first card. 20px-clipped photograph ({rounded.lg}), uppercase product name in {typography.heading-uppercase} beneath at 24px / 400 with 0.72px tracking. No card surface, no shadow, no border — the photograph is the card.

food-card-title — Pure-black text ({colors.ink-pure} — #000000), the highest-contrast tier in the system, scoped to product names only.

food-card-meta — Muted text ({colors.muted} — #8c8c82) for kcal / price / "Order now" type metadata.

Feature Bands

feature-band-workplace — Sage paper surface ({colors.surface-sage} — #d8e5d6), 20px rounded outer ({rounded.lg}), 60px 0px vertical padding. Holds the "All the ways we keep your workplace working" headline and a paired photograph of food on a counter.

feature-band-kitchen — Wheat paper surface ({colors.surface-paper} — #e8dcc6), same geometry as workplace. Holds the "Step inside the sweetgreen kitchen" headline and a tutorial photograph.

feature-headline — Ink text in {typography.display-lg} (70px / 400). The largest typographic moment outside the hero word.

Forms

text-input — White surface ({colors.surface-white}), 1px hairline outline at {colors.hairline} (#0e150e), 10px radius ({rounded.md}), 50px height, 12px 50px 12px 16px padding (the asymmetric right padding leaves room for the inline submit button). Typed value in {typography.input-md} (20px / 400 SweetSansText).

newsletter-submit — Ink fill, cream text — sits inline-right inside the input field; same 1000px pill geometry as {component.button-primary} but uses the ink/cream voltage instead of forest/chartreuse, because it's a secondary action that shouldn't compete with the Order CTA.

Footer

footer — Oxblood surface ({colors.footer-bg} — #a72700), cream text ({colors.footer-ink} — #f4f3e7), 60px 40px padding. The only red surface on the page; reverses the entire footer band against the cream chrome above.

footer-link — Cream text in {typography.footer-link} (14px / 400). No underline at rest.

social-icon — A 24px circular ink icon. Sits flush-right inside the footer band.

Do's and Don'ts

Do

  • Use {colors.canvas} (#f4f3e7) as the page floor, never #ffffff. Pure white is reserved for the newsletter input and small icon plates.
  • Pair {colors.primary} (#00473c) and {colors.primary-on} (#e6ff55) only inside the Order pill. The two voltages are one CTA token, not two color tokens.
  • Render food card titles in {colors.ink-pure} (#000000) — the only place pure black should appear as text.
  • Use {rounded.lg} (20px) on every card, hero photo, and feature-band image. It's the dominant radius (18 of 30 extracted occurrences).
  • Keep the 16px uppercase voice on nav links, day-part tabs, food-card titles, and footer column heads — the page reads as a printed menu board.
  • Use {colors.surface-sage} and {colors.surface-paper} to break the cream canvas — they are paper tints, not color washes.

Don't

  • Don't use {colors.primary-on} (#e6ff55) anywhere outside the Order pill label. Chartreuse total page occurrence is 5; spreading it across badges or hover washes flattens the only true brand voltage on the page.
  • Don't use {colors.footer-bg} (#a72700) as a CTA fill — oxblood is wired to --footer-color and is the only red surface on the page; reusing it elsewhere fights the menu-board palette discipline.
  • Don't render product names like "Kale Caesar" in {colors.ink} (#0e150e) — they specifically use pure black #000000 at 220 / 220 text/border occurrences. The single-step contrast jump from ink to pure black is the system's product-emphasis cue.
  • Don't reach for a weight-700 display heading. The system caps display at weight 400 and scales for hierarchy. Bold display weights read as a different brand.
  • Don't ship a 12px or 16px radius on cards — the system jumps from 10px (input only) straight to 20px. Mid-tier radii read off-brand.
  • Don't add a shadow tier. The extracted system has zero shadow definitions; food cards float on the cream page floor via 20px corner clipping and tonal contrast alone.
  • Don't substitute Grenette with a standard text serif at weight 400. The whole point is the weight-200 italic whisper at -2.25px tracking — a Georgia regular kills the effect.

Known Gaps

  • Order flow surfaces: the extracted page is the marketing homepage only — menu detail, customization sheet, bowl builder, cart, and account dashboard are not captured. The bowl-builder interaction patterns, size selector, and ingredient swap chips are missing from this spec.
  • Loyalty / SG Rewards: status surfaces and the rewards dashboard are not included; gold or rewards-tier ceremony colors are not present in the extracted palette.
  • Mobile breakpoint tuning: CSS tokens (--nav-height 72px, --maxwidth 90rem, --gutter 1.5rem) describe the system, but actual mobile sheet behavior and tap-target padding aren't visible in the desktop capture.
  • Dark mode: the system ships light-only; no dark palette is declared in :root CSS variables.
  • Hover and focus state coverage: the primary button hover flip (--button-hover-color to ink) is captured, but full input focus state combinations, link hover treatments, and tab focus-visible patterns are partially documented from CSS variables.
  • Sub-brand and partnership palettes: any co-branded or sub-brand surfaces (corporate catering, Outpost, etc.) live on separate paths and are not captured here.

Food & Delivery

More systems like this

More DESIGN.md files in Food & Delivery.

Pricing

Build it with Pro

The DESIGN.md files are free. Pro adds 6,000+ blocks, premium templates and the MCP server, so your AI editor builds in your system for you.

4.9/5 out of 5 · 150+ reviewsfrom 150+ founders and developers.

Billed once a year in USD. Cancel anytime.

Individual

For personal projects & open source

$32instead of $49/mo

$389 billed yearly

  • How many people can use the license.Seats: 1 seat
  • Client work, SaaS products and anything you charge for.Commercial use: Personal & open source only
  • Production-ready React sections: hero, pricing, features, dashboards and more.Pro blocks: 6,000+ blocks
  • Complete multi-page sites you can ship as they are.Templates: All 14 templates
  • React icons from every major library, installable with one command.React icons: 294k+ icons
  • Presets that restyle every block, in light and dark.Themes: All 59 themes
  • Lets your AI editor search, preview and install blocks for you.MCP server: Basic usage
  • Priority requests are answered first.Support: Standard

Team

Most popular

For freelancers, agencies & startups

$66instead of $99/mo

$789 billed yearly · ≈ $13/dev/mo

Everything in Individual, plus

  • How many people can use the license.Seats: Up to 5 seats
  • Client work, SaaS products and anything you charge for.Commercial use: Included
  • Lets your AI editor search, preview and install blocks for you.MCP server: High usage
  • Priority requests are answered first.Support: Priority

Organization

For companies with larger teams

$132instead of $199/mo

$1,589 billed yearly

Everything in Team, plus

  • How many people can use the license.Seats: Unlimited seats
  • Lets your AI editor search, preview and install blocks for you.MCP server: Unlimited usage
  • Secure checkout via Stripe
  • Code lives in your repo
  • Keep what you've shipped if you cancel
  • License terms

Your system, built for you

Every block, template and icon, installed by your AI agent in your design system. The DESIGN.md files stay free.

Get Pro