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
Tokens webdesignhot/0.1
  • bg #f1f2f4
  • bg-page #ffffff
  • bg-soft #f8f8f9
  • surface #ffffff
  • surface-muted #f1f2f4
  • text AAA · 11.3 #2d333f
  • text-strong #000000
  • text-muted #6f737b
  • text-soft #9a9da3
  • brand AA·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-card rgba(45, 51, 63, 0.12)
  • success #1f8f5f
  • warning #e0a41f
  • danger #da3743
  • on-brand #ffffff
Typography
Ship faster than ever.
hero-display BrandonText 40px w700 0
Ship faster than ever.
display BrandonText 32px w700 0
Ship faster than ever.
h1 BrandonText 24px w700 0
Built for teams that ship.
h2 BrandonText 22px w700 0
A complete kit
h3 BrandonText 18px w700 0
The quick brown fox jumps over the lazy dog.
body-lg BrandonText 17px w400 0
The quick brown fox jumps over the lazy dog.
body BrandonText 16px w400 0
The quick brown fox jumps over the lazy dog.
button BrandonText 16px w700 0
The quick brown fox jumps over the lazy dog.
body-sm BrandonText 14px w400 0
The quick brown fox jumps over the lazy dog.
nav BrandonText 14px w500 0
Spacing
  • step-0 0px
  • step-1 4px
  • step-2 8px
  • step-3 12px
  • step-4 16px
  • step-5 20px
  • step-6 24px
  • step-7 32px
  • step-8 48px
  • step-9 64px
  • step-10 96px
Radius
  • micro 3px
  • sm 4px
  • md 6px
  • lg 8px
  • xl 12px
  • pill 9999px
Components
Text link →
Card preview A complete kit — everything your product needs. Hero, pricing, FAQ, dashboard, docs — every layout your product needs.
New Stable v1.0
Design roles 8/8 mapped · webdesignhot/0.1

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.

  • background bg
  • foreground text
  • primary brand
  • primary-foreground on-brand
  • accent brand
  • muted text-muted
  • border border
  • ring accent-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
Export 4 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
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.1
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

RoleFontSizeWeightNotes
DisplayBrandonText40700Rare marketplace headings
SectionBrandonText32700Large discovery groups
H1BrandonText24700Result section titles
H2BrandonText22700Support modules
H3BrandonText18700Restaurant card names
BodyBrandonText16400Search fields and card metadata
Body smallBrandonText14400Utility links and location text
ButtonBrandonText16700Reservation 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

TierValueUse
Micro3sign-in and prompt chips
Small4search fields and red buttons
Medium6restaurant cards
Large8content panels
Extra large12rare larger modules
Pill9999avoid 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