light·booking·restaurants·red·cards·search

DESIGN.md inspired by OpenTable

Restaurant booking interface with BrandonText typography, red reservation actions, compact filters, and live availability cards.

By webdesignhot · www.opentable.com
$npx @webdesignhot/design-md add opentable
Learn more about the CLI
try on →
theme
1440 × 900
mobile · 390 × 844
Tokenswebdesignhot/0.2
  • bg#f1f2f4
  • bg-page#ffffff
  • bg-soft#f8f8f9
  • surface#ffffff
  • surface-muted#f1f2f4
  • textAAA · 11.3#2d333f
  • text-strong#000000
  • text-muted#6f737b
  • text-soft#9a9da3
  • brandAA·LG · 4.1#da3743
  • brand-hover#c62f3a
  • brand-soft#fdecef
  • accent-teal#247f9e
  • accent-deep#154a5b
  • rating#da3743
  • border— · 1.3#d8d9db
  • border-strong— · 1.7#b9bbc1
  • shadow-cardrgba(45, 51, 63, 0.12)
  • success#1f8f5f
  • warning#e0a41f
  • danger#da3743
  • on-brand#ffffff
Typography
Ship faster than ever.
hero-displayBrandonText40pxw7000
Ship faster than ever.
displayBrandonText32pxw7000
Ship faster than ever.
h1BrandonText24pxw7000
Built for teams that ship.
h2BrandonText22pxw7000
A complete kit
h3BrandonText18pxw7000
The quick brown fox jumps over the lazy dog.
body-lgBrandonText17pxw4000
The quick brown fox jumps over the lazy dog.
bodyBrandonText16pxw4000
The quick brown fox jumps over the lazy dog.
buttonBrandonText16pxw7000
The quick brown fox jumps over the lazy dog.
body-smBrandonText14pxw4000
The quick brown fox jumps over the lazy dog.
navBrandonText14pxw5000
Spacing
  • step-00px
  • step-14px
  • step-28px
  • step-312px
  • step-416px
  • step-520px
  • step-624px
  • step-732px
  • step-848px
  • step-964px
  • step-1096px
Radius
  • micro3px
  • sm4px
  • md6px
  • lg8px
  • xl12px
  • pill9999px
Components
Text link →
Card previewA complete kit — everything your product needs.Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
NewStablev1.0
Design roles8/8 mapped · webdesignhot/0.2

Maps the 8 canonical role names to this entry's actual tokens. Use these to plug the design into role-aware tools — shadcn/ui themes, role-aware Tailwind plugins, atelier-lint — without hard-coding token names.

  • backgroundbg
  • foregroundtext
  • primarybrand
  • primary-foregroundon-brand
  • accentbrand
  • mutedtext-muted
  • borderborder
  • ringaccent-teal
Lineage & influences

OpenTable is operational and transactional. The UI prioritizes search controls, availability, ratings, and reservation times over brand storytelling.

  • Travel booking engines
    date/time/party search row and inventory cards
  • Restaurant marketplaces
    food photography, ratings, cuisine, price, location
  • Local discovery apps
    location correction and current-location prompts
Export4 formats · paste-ready
Tailwind

theme.extend block for tailwind.config.js

tailwind.config.js
CSS variables

:root { --bg, --text, --brand, … } you can paste anywhere

design.css
DTCG JSON

W3C Design Tokens Community Group format

design.tokens.json
Figma Variables

Importable into Figma → Variables → Import

figma-variables.json
Google DESIGN.md

Portable DESIGN.md Alpha core format

design.md
The file
---
name: OpenTable
tagline: 'Restaurant booking interface with BrandonText typography, red reservation actions, compact filters, and live availability cards.'
updated_at: 2026-07-09T13:18:00+12:00
published_at: 2026-07-09T13:18:00+12:00
author: webdesignhot
source_url: https://www.opentable.com
spec: webdesignhot/0.2
profile: catalog
quality: curated
featured: false
categories: [marketplace, hospitality]
tags: [light, booking, restaurants, red, cards, search]
preview_swatch: ['#f1f2f4', '#da3743', '#2d333f']
related: [booking, kayak, deliveroo]
description: 'OpenTable is a dense reservation marketplace: pale gray chrome, BrandonText typography, red booking actions, date-time-party controls, restaurant cards with food photography, rating rows, and quick reservation time buttons.'
aliases:
  background: bg
  foreground: text
  primary: brand
  primary-foreground: on-brand
  accent: brand
  muted: text-muted
  border: border
  ring: accent-teal
colors:
  bg: '#f1f2f4'
  bg-page: '#ffffff'
  bg-soft: '#f8f8f9'
  surface: '#ffffff'
  surface-muted: '#f1f2f4'
  text: '#2d333f'
  text-strong: '#000000'
  text-muted: '#6f737b'
  text-soft: '#9a9da3'
  brand: '#da3743'
  brand-hover: '#c62f3a'
  brand-soft: '#fdecef'
  accent-teal: '#247f9e'
  accent-deep: '#154a5b'
  rating: '#da3743'
  border: '#d8d9db'
  border-strong: '#b9bbc1'
  shadow-card: 'rgba(45, 51, 63, 0.12)'
  success: '#1f8f5f'
  warning: '#e0a41f'
  danger: '#da3743'
  on-brand: '#ffffff'
typography:
  display:
    family: 'BrandonText, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'
    weights: [500, 600, 700]
  body:
    family: 'BrandonText, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif'
    weights: [400, 500, 600, 700]
  mono:
    family: 'ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace'
    weights: [400, 500]
  scale:
    hero-display: { size: 40, weight: 700, lineHeight: 1.15, tracking: '0', family: display }
    display: { size: 32, weight: 700, lineHeight: 1.18, tracking: '0', family: display }
    h1: { size: 24, weight: 700, lineHeight: 1.33, tracking: '0', family: display }
    h2: { size: 22, weight: 700, lineHeight: 1.3, tracking: '0', family: display }
    h3: { size: 18, weight: 700, lineHeight: 1.25, tracking: '0', family: body }
    body-lg: { size: 17, weight: 400, lineHeight: 1.45, tracking: '0', family: body }
    body: { size: 16, weight: 400, lineHeight: 1.45, tracking: '0', family: body }
    body-sm: { size: 14, weight: 400, lineHeight: 1.4, tracking: '0', family: body }
    nav: { size: 14, weight: 500, lineHeight: 1.35, tracking: '0', family: body }
    button: { size: 16, weight: 700, lineHeight: 1.2, tracking: '0', family: body }
radius:
  micro: 3
  sm: 4
  md: 6
  lg: 8
  xl: 12
  pill: 9999
spacing:
  base: 4
  scale: [0, 4, 8, 12, 16, 20, 24, 32, 48, 64, 96]
layout:
  page-width: 1216
  prose-width: 700
  header-height: 86
  search-width: 960
  card-width: 234
motion:
  ease-standard: 'cubic-bezier(0.2, 0, 0, 1)'
  duration-fast: 120
  duration-standard: 200
  duration-slow: 320
  reduced-motion: 'disable card hover lift and AI prompt shimmer'
breakpoints:
  mobile: 640
  tablet: 1024
  desktop: 1280
  wide: 1536
components:
  reservation-search:
    bg: surface
    border: border
    radius: 4
    padding: 0
    use: 'date, time, party size, and location controls'
  button-primary:
    bg: brand
    text: on-brand
    radius: 4
    padding: '14px 32px'
    use: 'Lets go and reservation time buttons'
  restaurant-card:
    bg: surface
    border: border
    radius: 6
    padding: 0
    use: 'restaurant photo, title, rating, metadata, and times'
  ai-prompt-panel:
    bg: surface
    border: border
    radius: 4
    padding: 24
    use: 'Find the right table prompt suggestions'
lineage:
  summary: 'OpenTable is operational and transactional. The UI prioritizes search controls, availability, ratings, and reservation times over brand storytelling.'
  influences:
    - { name: 'Travel booking engines', role: 'date/time/party search row and inventory cards' }
    - { name: 'Restaurant marketplaces', role: 'food photography, ratings, cuisine, price, location' }
    - { name: 'Local discovery apps', role: 'location correction and current-location prompts' }
---

## 1. Visual Theme & Atmosphere

OpenTable feels like a booking engine with marketplace density. The interface is light, structured, and practical, with red used for actions and availability.

The page is not a cinematic restaurant brand. It is a reservation workflow: choose date, time, people, location, then scan available restaurants and time slots.

**Key Characteristics**
- Pale gray top chrome.
- White search controls and cards.
- BrandonText as the interface voice.
- Red reservation CTA and time chips.
- Restaurant cards with food imagery.
- Rating rows with red stars.
- Compact header actions.
- Location-aware search prompt.

## 2. Color Palette & Roles

Use `bg #f1f2f4` for chrome and `surface #ffffff` for the active booking controls. The main text color is `text #2d333f`.

The booking red is `brand #da3743`. It marks the primary search button, time chips, rating stars, and current-location prompt accents.

Secondary controls use `text-muted #6f737b` and `border #d8d9db`. The teal sign-in button uses `accent-deep #154a5b` with `accent-teal #247f9e` as border/focus support.

## 3. Typography Rules

| Role | Font | Size | Weight | Notes |
| --- | --- | ---: | ---: | --- |
| Display | BrandonText | 40 | 700 | Rare marketplace headings |
| Section | BrandonText | 32 | 700 | Large discovery groups |
| H1 | BrandonText | 24 | 700 | Result section titles |
| H2 | BrandonText | 22 | 700 | Support modules |
| H3 | BrandonText | 18 | 700 | Restaurant card names |
| Body | BrandonText | 16 | 400 | Search fields and card metadata |
| Body small | BrandonText | 14 | 400 | Utility links and location text |
| Button | BrandonText | 16 | 700 | Reservation actions |

Use weight and spacing to create hierarchy. The system should feel like a product UI, not a marketing page.

## 4. Component Stylings

Reservation search combines multiple bordered segments: date, time, party, location, and a red submit button. Each segment should align to a shared height.

Restaurant cards use a photo top, bold restaurant name, star row, cuisine/price/location metadata, and red time buttons.

Prompt chips in the AI-style discovery panel can be white with thin borders and compact text. They should not dominate the booking workflow.

## 5. Layout Principles

Center the search row near the top and keep the result column constrained. The cards can sit in a grid with fixed card widths for predictable scanning.

Keep the header low and utilitarian. Logo, location, account, language, and search actions should fit in a single practical bar.

## 6. Shapes & Radius Scale

| Tier | Value | Use |
| --- | ---: | --- |
| Micro | 3 | sign-in and prompt chips |
| Small | 4 | search fields and red buttons |
| Medium | 6 | restaurant cards |
| Large | 8 | content panels |
| Extra large | 12 | rare larger modules |
| Pill | 9999 | avoid for core booking controls |

OpenTable's corners are compact. Rounded pills would make the workflow feel less precise.

## 7. Depth & Elevation

Use thin borders and light card shadow only when a card needs separation from the page. Dense reservation UI should not rely on heavy elevation.

Food images provide most of the visual depth. Keep image corners tied to the card radius.

## 8. Interaction & Motion

Search segments should show clear focus states. Date, time, and party controls need keyboard-accessible menus.

Time chips can darken on hover and confirm selection quickly. Avoid elaborate transitions in reservation flows.

## 9. Content Voice

Use transactional labels: date, time, people, location, restaurant, cuisine, reviews, booked today. The copy should help a user decide quickly.

Location prompts can be conversational but brief. Keep AI prompt suggestions optional and secondary.

## 10. Navigation Pattern

Top navigation is split between brand/location on the left and account/business utilities on the right. Keep account actions compact.

Search is both a header affordance and the main page workflow. Do not hide the core search behind a modal on desktop.

## 11. Search & Filtering

The primary row should answer four questions: when, what time, how many people, and where. Treat these as equal controls with a single red submit button.

On mobile, stack fields or use a sticky search summary that expands. Preserve the red action as the final step.

## 12. Card System

Restaurant cards must support image, name, rating, review count, cuisine, price level, city, demand indicators, and multiple time chips.

Keep card widths stable. Reservation time chips should not resize the card when different time labels appear.

## 13. Accessibility Notes

Red time buttons need white text and enough size for touch targets. Rating stars should not be the only source of review information.

Date and time menus need visible labels and keyboard focus. Do not rely only on placeholder text.

## 14. Anti-Patterns

Do not replace the search row with a hero slogan. The brand value is immediate booking inventory.

Do not use oversized restaurant imagery that pushes time availability below the fold. Availability is the core product.

Avoid decorative gradients around the main controls. The UI should stay crisp and task-focused.

## 15. Implementation Checklist

- Use BrandonText or a similar practical sans.
- Keep the search row segmented and aligned.
- Reserve red for booking actions and ratings.
- Show restaurant cards with real imagery.
- Include rating, review count, cuisine, price, and location.
- Provide multiple reservation time chips.
- Keep radii small.
- Make location correction visible but secondary.
Prose

1. Visual Theme & Atmosphere

OpenTable feels like a booking engine with marketplace density. The interface is light, structured, and practical, with red used for actions and availability.

The page is not a cinematic restaurant brand. It is a reservation workflow: choose date, time, people, location, then scan available restaurants and time slots.

Key Characteristics

  • Pale gray top chrome.
  • White search controls and cards.
  • BrandonText as the interface voice.
  • Red reservation CTA and time chips.
  • Restaurant cards with food imagery.
  • Rating rows with red stars.
  • Compact header actions.
  • Location-aware search prompt.

2. Color Palette & Roles

Use bg #f1f2f4 for chrome and surface #ffffff for the active booking controls. The main text color is text #2d333f.

The booking red is brand #da3743. It marks the primary search button, time chips, rating stars, and current-location prompt accents.

Secondary controls use text-muted #6f737b and border #d8d9db. The teal sign-in button uses accent-deep #154a5b with accent-teal #247f9e as border/focus support.

3. Typography Rules

Role Font Size Weight Notes
Display BrandonText 40 700 Rare marketplace headings
Section BrandonText 32 700 Large discovery groups
H1 BrandonText 24 700 Result section titles
H2 BrandonText 22 700 Support modules
H3 BrandonText 18 700 Restaurant card names
Body BrandonText 16 400 Search fields and card metadata
Body small BrandonText 14 400 Utility links and location text
Button BrandonText 16 700 Reservation actions

Use weight and spacing to create hierarchy. The system should feel like a product UI, not a marketing page.

4. Component Stylings

Reservation search combines multiple bordered segments: date, time, party, location, and a red submit button. Each segment should align to a shared height.

Restaurant cards use a photo top, bold restaurant name, star row, cuisine/price/location metadata, and red time buttons.

Prompt chips in the AI-style discovery panel can be white with thin borders and compact text. They should not dominate the booking workflow.

5. Layout Principles

Center the search row near the top and keep the result column constrained. The cards can sit in a grid with fixed card widths for predictable scanning.

Keep the header low and utilitarian. Logo, location, account, language, and search actions should fit in a single practical bar.

6. Shapes & Radius Scale

Tier Value Use
Micro 3 sign-in and prompt chips
Small 4 search fields and red buttons
Medium 6 restaurant cards
Large 8 content panels
Extra large 12 rare larger modules
Pill 9999 avoid for core booking controls

OpenTable’s corners are compact. Rounded pills would make the workflow feel less precise.

7. Depth & Elevation

Use thin borders and light card shadow only when a card needs separation from the page. Dense reservation UI should not rely on heavy elevation.

Food images provide most of the visual depth. Keep image corners tied to the card radius.

8. Interaction & Motion

Search segments should show clear focus states. Date, time, and party controls need keyboard-accessible menus.

Time chips can darken on hover and confirm selection quickly. Avoid elaborate transitions in reservation flows.

9. Content Voice

Use transactional labels: date, time, people, location, restaurant, cuisine, reviews, booked today. The copy should help a user decide quickly.

Location prompts can be conversational but brief. Keep AI prompt suggestions optional and secondary.

10. Navigation Pattern

Top navigation is split between brand/location on the left and account/business utilities on the right. Keep account actions compact.

Search is both a header affordance and the main page workflow. Do not hide the core search behind a modal on desktop.

11. Search & Filtering

The primary row should answer four questions: when, what time, how many people, and where. Treat these as equal controls with a single red submit button.

On mobile, stack fields or use a sticky search summary that expands. Preserve the red action as the final step.

12. Card System

Restaurant cards must support image, name, rating, review count, cuisine, price level, city, demand indicators, and multiple time chips.

Keep card widths stable. Reservation time chips should not resize the card when different time labels appear.

13. Accessibility Notes

Red time buttons need white text and enough size for touch targets. Rating stars should not be the only source of review information.

Date and time menus need visible labels and keyboard focus. Do not rely only on placeholder text.

14. Anti-Patterns

Do not replace the search row with a hero slogan. The brand value is immediate booking inventory.

Do not use oversized restaurant imagery that pushes time availability below the fold. Availability is the core product.

Avoid decorative gradients around the main controls. The UI should stay crisp and task-focused.

15. Implementation Checklist

  • Use BrandonText or a similar practical sans.
  • Keep the search row segmented and aligned.
  • Reserve red for booking actions and ratings.
  • Show restaurant cards with real imagery.
  • Include rating, review count, cuisine, price, and location.
  • Provide multiple reservation time chips.
  • Keep radii small.
  • Make location correction visible but secondary.
Ship with this

Drop opentable into your project, then ship the actual sections in an afternoon.

1 · install design
npx @webdesignhot/design-md add opentable
2 · ship landing page
npx agentkit init --design opentable
How AgentKit reads DESIGN.md