Retour aux designs
RétroColoréLudiqueNéon
Aperçu

Retro Diner Design Reference

Overview

Retro Diner is a bold, nostalgic design aesthetic rooted in the visual culture of 1950s American diners -- those chrome-clad, neon-lit roadside landmarks that became synonymous with post-war optimism, rock 'n' roll energy, and the golden age of Americana. The aesthetic draws directly from the architectural DNA of original diners, which themselves evolved from repurposed railroad dining cars: long stainless-steel exteriors, counter-service interiors lined with vinyl-upholstered bar stools, open kitchens behind Formica countertops, and jukeboxes glowing in the corner. Its color palette pairs high-contrast black-and-white checkerboard patterns with saturated cherry reds, turquoise blues, milkshake pinks, and sunny yellows, all punctuated by the gleam of polished chrome and the warm buzz of neon tubing. On the web, Retro Diner translates into bold color blocking with red, teal, and cream foundations; playful slab-serif and script typography reminiscent of hand-painted diner signage and menu boards; rounded UI elements that echo the bulbous curves of Googie architecture; and decorative motifs drawn from milkshake glasses, vinyl records, checkered tiles, and neon arrow signs. The aesthetic embraces a sense of fun and theatricality -- text shadows that mimic neon glow, striped awning patterns on navigation bars, and chrome-gradient borders on cards that catch the light like a polished bumper on a 1957 Chevy. Whether building a restaurant landing page, a retro-themed portfolio, or a novelty e-commerce shop, the Retro Diner style delivers instant recognition, warmth, and an irresistible invitation to sit down, order a milkshake, and stay awhile.


Visual Characteristics

Core Design Traits

  • Chrome and metallic accents: Polished silver gradients, reflective borders, and metallic sheen effects replicate the stainless-steel countertops, bar stools, and trim that defined every diner interior and exterior
  • Checkerboard patterns: Black-and-white or red-and-white checkered patterns appear on floors, borders, table surfaces, and decorative backgrounds, serving as the single most recognizable diner motif
  • Neon glow effects: Vibrant text shadows, animated border glows, and luminous accent colors simulate the warm buzz of neon tube signage advertising "OPEN," "EAT," and "BURGERS" in diner windows
  • Cherry red and turquoise dominance: These two signature colors anchor the entire palette -- cherry red on vinyl booth seats, bar stools, and signage; turquoise on wall tiles, Formica tabletops, and accent details
  • Milkshake pastel accents: Soft strawberry pink, vanilla cream, mint green, and banana yellow appear as secondary tones, evoking the frothy pastel desserts spinning in chrome milkshake machines
  • Rounded, bulbous shapes: Curved counters, rounded booth edges, bubble-letter signage, and the swooping lines of Googie architecture translate into generous border-radius values and soft container shapes
  • Vinyl and Formica textures: Subtle tufted-vinyl patterns, speckled laminate textures, and glossy surface effects create the tactile feel of diner booth seats and countertops
  • Jukebox and music motifs: Vinyl record shapes, musical note decorations, and jukebox silhouettes serve as ornamental elements connecting the diner to its rock 'n' roll soundtrack
  • Retro signage and arrow pointers: Pointed arrow shapes, marquee-style borders with dot patterns, and bold block-letter signs recall the roadside advertising that drew travelers into diners
  • Striped awning patterns: Alternating red-and-white or teal-and-white stripes evoke the fabric awnings that shaded diner entrances and windows

Design Principles

  • High contrast with warm energy: Pair bold darks (deep charcoal, rich black) against vibrant reds and teals for maximum visual punch; the diner aesthetic is never muted or understated
  • Playful nostalgia without parody: Channel genuine affection for 1950s Americana; the goal is warmth and fun, not ironic kitsch or exaggerated caricature
  • Chrome as connective tissue: Use metallic silver gradients and reflective borders as the unifying design element that ties together disparate colors and patterns, just as chrome trim unified diner architecture
  • Pattern as atmosphere: Checkerboard floors, striped awnings, and dotted borders are not decorative afterthoughts but essential atmospheric elements that make the space feel like a diner
  • Readable above all else: Despite the visual richness, menu boards and signage were designed to be read quickly by hungry customers; maintain strong typographic hierarchy and clear contrast ratios
  • Inviting interactivity: Every button should feel like a jukebox selector, every card like a laminated menu item; interactive elements should reward engagement with satisfying visual feedback
  • Balance boldness with cleanliness: Real diners were designed for efficiency -- clean counters, organized menus, clear sightlines; avoid cluttering the layout despite the rich visual vocabulary
  • Neon as highlight, not flood: Use glow effects strategically on key headings and CTAs rather than applying neon to everything; restraint makes the glow more impactful

Color Palette

The Retro Diner palette draws from the actual materials and finishes of 1950s American diners: cherry-red vinyl seats, turquoise Formica countertops, black-and-white tile floors, polished chrome fixtures, and the warm glow of neon signage against night skies. Milkshake pastels soften the boldness, while deep charcoal grounds the composition and prevents the bright tones from becoming overwhelming.

Swatch Hex Role/Usage
Cherry Red #D72638 Primary accent, buttons, booth-red highlights, CTA backgrounds
Diner Turquoise #40C4AA Secondary accent, links, badges, Formica-inspired surfaces
Checkered Black #1A1A2E Primary text, dark backgrounds, checkerboard dark squares
Cream White #FFF8F0 Primary background, card surfaces, menu board base
Chrome Silver #C0C0C0 Metallic borders, dividers, chrome trim accents
Milkshake Pink #F4A6C4 Pastel accent, strawberry highlights, soft UI elements
Neon Yellow #FFD23F Neon glow accents, warning states, highlighted tags
Mint Green #A8E6CF Pastel accent, success states, mint-shake tones
Deep Teal #1B7B6E Dark accent, hover states, deep turquoise variant
Banana Cream #FFF3C4 Warm highlight background, tooltip surfaces
Charcoal Grill #2D2D3A Footer background, deep surfaces, nav backgrounds
Ketchup Red #B81D24 Error states, strong emphasis, darker red variant
Stainless Steel #E8E8E8 Light neutral, subtle borders, secondary surfaces
Vanilla #FFFDF7 Alternate light background, whitespace areas
Neon Blue #4CC9F0 Accent glow, link hover, neon sign blue variant

CSS Custom Properties

:root {
  /* --- Primary Diner Colors --- */
  --diner-cherry: #D72638;
  --diner-turquoise: #40C4AA;
  --diner-black: #1A1A2E;
  --diner-cream: #FFF8F0;
  --diner-chrome: #C0C0C0;
  --diner-pink: #F4A6C4;

  /* --- Accent & Neon --- */
  --diner-neon-yellow: #FFD23F;
  --diner-mint: #A8E6CF;
  --diner-deep-teal: #1B7B6E;
  --diner-banana: #FFF3C4;
  --diner-neon-blue: #4CC9F0;

  /* --- Darks & Neutrals --- */
  --diner-charcoal: #2D2D3A;
  --diner-ketchup: #B81D24;
  --diner-steel: #E8E8E8;
  --diner-vanilla: #FFFDF7;

  /* --- Functional Tokens --- */
  --diner-bg: var(--diner-cream);
  --diner-text: var(--diner-black);
  --diner-heading: var(--diner-black);
  --diner-accent: var(--diner-cherry);
  --diner-link: var(--diner-turquoise);
  --diner-surface: var(--diner-vanilla);
  --diner-border: var(--diner-chrome);
  --diner-highlight: var(--diner-neon-yellow);
  --diner-glow: rgba(215, 38, 56, 0.5);
}

Typography

Retro Diner typography draws from the hand-painted signage, letterpress menu boards, and neon-tube lettering that adorned every 1950s roadside eatery. Headlines use chunky slab serifs and bold display faces that command attention like a diner marquee, while script fonts capture the casual, handwritten charm of daily specials scrawled on chalkboards. Body text stays clean and legible with rounded sans-serifs that echo the friendly, approachable atmosphere of the counter-service experience.

Font Weight(s) Usage Link
Fredoka 400, 500, 600, 700 Display headings, hero titles, menu headers fonts.google.com/specimen/Fredoka
Archivo Black 400 Bold signage headings, section titles fonts.google.com/specimen/Archivo+Black
Lobster 400 Script accent text, taglines, decorative labels fonts.google.com/specimen/Lobster
Pacifico 400 Handwritten accents, menu specials, quotes fonts.google.com/specimen/Pacifico
Nunito 300, 400, 600, 700 Body text, paragraphs, UI labels fonts.google.com/specimen/Nunito
Abril Fatface 400 Dramatic display headings, poster-style titles fonts.google.com/specimen/Abril+Fatface
Roboto Slab 400, 700 Slab-serif headings, menu item names fonts.google.com/specimen/Roboto+Slab
Inter 400, 500, 600 Clean body text, form labels, small UI copy fonts.google.com/specimen/Inter

Font Pairing Suggestions

Heading Body Vibe
Fredoka 700 Nunito Rounded, friendly diner menu with warm readability
Archivo Black Inter Bold marquee signage grounded by clean modern body text
Abril Fatface Nunito Dramatic poster-style headlines with approachable paragraphs
Roboto Slab 700 Inter Sturdy slab-serif menu board headers with neutral body text
Lobster Nunito Casual script headings paired with soft, rounded body copy

CSS Example

@import url('https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Archivo+Black&family=Lobster&family=Pacifico&family=Nunito:wght@300;400;600;700&family=Abril+Fatface&display=swap');

/* === Base Typography === */
body {
  font-family: 'Nunito', 'Helvetica Neue', sans-serif;
  font-size: 1.05rem;
  line-height: 1.75;
  color: var(--diner-text);
  background-color: var(--diner-bg);
  -webkit-font-smoothing: antialiased;
}

h1, h2, h3, h4 {
  font-family: 'Fredoka', 'Arial Black', sans-serif;
  color: var(--diner-heading);
  line-height: 1.15;
  letter-spacing: 0.01em;
}

h1 {
  font-size: clamp(2.8rem, 7vw, 5.5rem);
  font-weight: 700;
}

h2 {
  font-size: clamp(2rem, 4.5vw, 3.5rem);
  font-weight: 700;
}

h3 {
  font-size: clamp(1.4rem, 3vw, 2rem);
  font-weight: 600;
}

a {
  color: var(--diner-link);
  text-decoration: underline;
  text-decoration-thickness: 2px;
  text-underline-offset: 3px;
  transition: color 0.3s ease;
}

a:hover {
  color: var(--diner-cherry);
}

.script-accent {
  font-family: 'Lobster', cursive;
  font-size: 1.4rem;
  color: var(--diner-cherry);
}

.neon-text {
  font-family: 'Pacifico', cursive;
  color: var(--diner-neon-yellow);
  text-shadow:
    0 0 7px rgba(255, 210, 63, 0.6),
    0 0 20px rgba(255, 210, 63, 0.4),
    0 0 40px rgba(255, 210, 63, 0.2);
}

.menu-label {
  font-family: 'Archivo Black', sans-serif;
  font-size: 0.9rem;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: var(--diner-cherry);
}

Layout Principles

  • Centered, contained layouts with bold edge accents: Keep readable content at 900-1000px max-width but frame it with checkerboard borders, striped awning headers, or chrome-trimmed edges that extend full-width
  • Counter-style horizontal flow: Arrange key content sections like items lined up along a diner counter -- sequential, orderly, and easy to scan from left to right
  • Generous padding with chrome dividers: Maintain 48-80px spacing between major sections, separated by metallic-gradient horizontal rules or checkered border strips
  • Booth-style card layouts: Present content in two-column or three-column grid layouts that mirror the booth-and-counter arrangement of a diner floor plan, with cards framed by chrome borders
  • Full-width hero sections with neon impact: Use large header areas with bold typography, neon glow effects, and strong background colors to create the marquee-sign impact of a diner facade at night
  • Menu-board information hierarchy: Organize content with clear category headers (like menu sections), item names in bold slab-serif, and descriptions in clean body text, mimicking how diners present their offerings
  • Striped awning navigation: Position the top navigation bar as a full-width band with alternating color stripes or a bold colored background that serves as the visual awning of the digital diner
  • Footer as the back kitchen: Use the darkest tones (charcoal, deep teal) for the footer, creating a visual separation that mirrors the transition from the bright dining room to the utilitarian kitchen
  • Checkered pattern as spatial anchor: Use checkerboard patterns on section backgrounds, card borders, or decorative strips to ground the layout in diner authenticity
  • Responsive booth-to-counter stacking: On mobile, multi-column booth layouts should stack into single-column counter-service layouts while maintaining the chrome-trimmed card style

CSS / Design Techniques

Diner Card Component

A chrome-bordered content card with a subtle vinyl texture that evokes a laminated menu item or a countertop display.

.diner-card {
  background: linear-gradient(145deg, #FFFDF7 0%, #FFF8F0 100%);
  border: 3px solid var(--diner-chrome);
  border-radius: 12px;
  padding: 32px;
  position: relative;
  overflow: hidden;
  box-shadow:
    0 4px 16px rgba(26, 26, 46, 0.08),
    0 1px 3px rgba(26, 26, 46, 0.06),
    inset 0 1px 0 rgba(255, 255, 255, 0.8);
  transition: transform 0.3s ease, box-shadow 0.3s ease;
}

.diner-card::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 5px;
  background: linear-gradient(90deg, #D72638, #40C4AA, #FFD23F, #D72638);
  border-radius: 12px 12px 0 0;
}

.diner-card::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 5px;
  background: linear-gradient(90deg, #40C4AA, #D72638, #FFD23F, #40C4AA);
  border-radius: 0 0 12px 12px;
}

.diner-card:hover {
  transform: translateY(-4px);
  box-shadow:
    0 8px 28px rgba(26, 26, 46, 0.12),
    0 2px 6px rgba(26, 26, 46, 0.08),
    inset 0 1px 0 rgba(255, 255, 255, 0.8);
}

.diner-card h3 {
  font-family: 'Fredoka', sans-serif;
  font-size: 1.5rem;
  font-weight: 700;
  color: var(--diner-black);
  margin-bottom: 12px;
}

.diner-card p {
  font-size: 1rem;
  line-height: 1.75;
}

.diner-card .price-tag {
  display: inline-block;
  font-family: 'Archivo Black', sans-serif;
  font-size: 1.2rem;
  color: var(--diner-cherry);
  margin-top: 14px;
}

Jukebox Button

A bold, rounded button with a chrome-ringed press effect inspired by jukebox selectors.

.diner-button {
  display: inline-block;
  font-family: 'Fredoka', sans-serif;
  font-size: 1rem;
  font-weight: 600;
  letter-spacing: 0.04em;
  padding: 14px 36px;
  border: 3px solid transparent;
  border-radius: 50px;
  background: linear-gradient(135deg, #D72638 0%, #B81D24 100%);
  color: #FFF8F0;
  cursor: pointer;
  text-decoration: none;
  text-transform: uppercase;
  box-shadow:
    0 4px 14px rgba(215, 38, 56, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 0 0 3px var(--diner-chrome);
  transition: all 0.3s ease;
  position: relative;
  overflow: hidden;
}

.diner-button::before {
  content: '';
  position: absolute;
  top: 0;
  left: -100%;
  width: 100%;
  height: 100%;
  background: linear-gradient(
    90deg,
    transparent,
    rgba(255, 255, 255, 0.2),
    transparent
  );
  transition: left 0.5s ease;
}

.diner-button:hover {
  transform: translateY(-2px);
  box-shadow:
    0 6px 22px rgba(215, 38, 56, 0.45),
    inset 0 1px 0 rgba(255, 255, 255, 0.3),
    0 0 0 3px var(--diner-chrome),
    0 0 20px rgba(215, 38, 56, 0.2);
}

.diner-button:hover::before {
  left: 100%;
}

.diner-button:active {
  transform: translateY(1px);
  box-shadow:
    0 2px 6px rgba(215, 38, 56, 0.3),
    inset 0 2px 4px rgba(0, 0, 0, 0.2),
    0 0 0 3px var(--diner-chrome);
}

.diner-button--turquoise {
  background: linear-gradient(135deg, #40C4AA 0%, #1B7B6E 100%);
  box-shadow:
    0 4px 14px rgba(64, 196, 170, 0.35),
    inset 0 1px 0 rgba(255, 255, 255, 0.25),
    0 0 0 3px var(--diner-chrome);
}

.diner-button--outline {
  background: transparent;
  color: var(--diner-cherry);
  border: 3px solid var(--diner-cherry);
  box-shadow: none;
}

.diner-button--outline:hover {
  background: var(--diner-cherry);
  color: var(--diner-cream);
  box-shadow: 0 4px 16px rgba(215, 38, 56, 0.3);
}

A diner-awning-style top navigation with striped accents and chrome highlights.

.diner-nav {
  background: linear-gradient(180deg, #2D2D3A 0%, #1A1A2E 100%);
  padding: 0;
  position: sticky;
  top: 0;
  z-index: 100;
  box-shadow: 0 2px 12px rgba(26, 26, 46, 0.4);
}

.diner-nav::before {
  content: '';
  display: block;
  height: 6px;
  background: repeating-linear-gradient(
    90deg,
    #D72638 0px,
    #D72638 20px,
    #FFF8F0 20px,
    #FFF8F0 40px
  );
}

.diner-nav-inner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 14px 32px;
}

.diner-nav .logo {
  font-family: 'Fredoka', sans-serif;
  font-size: 1.6rem;
  font-weight: 700;
  color: var(--diner-neon-yellow);
  text-decoration: none;
  text-shadow:
    0 0 8px rgba(255, 210, 63, 0.4),
    0 1px 2px rgba(0, 0, 0, 0.3);
}

.diner-nav-links {
  display: flex;
  gap: 6px;
  list-style: none;
  margin: 0;
  padding: 0;
}

.diner-nav-links a {
  font-family: 'Fredoka', sans-serif;
  font-size: 0.9rem;
  font-weight: 500;
  color: var(--diner-cream);
  text-decoration: none;
  padding: 8px 20px;
  border-radius: 24px;
  transition: all 0.3s ease;
}

.diner-nav-links a:hover {
  background: rgba(215, 38, 56, 0.2);
  color: var(--diner-cherry);
}

.diner-nav-links a.active {
  background: var(--diner-cherry);
  color: var(--diner-cream);
}

Hero Section

A full-width hero with a neon-sign glow effect and bold diner marquee typography.

.diner-hero {
  background:
    linear-gradient(180deg, #1A1A2E 0%, #2D2D3A 50%, #1A1A2E 100%);
  padding: 100px 40px 80px;
  text-align: center;
  position: relative;
  overflow: hidden;
  min-height: 85vh;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
}

.diner-hero::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background:
    radial-gradient(ellipse at 30% 20%, rgba(215, 38, 56, 0.15) 0%, transparent 50%),
    radial-gradient(ellipse at 70% 80%, rgba(64, 196, 170, 0.1) 0%, transparent 50%),
    radial-gradient(ellipse at 50% 50%, rgba(255, 210, 63, 0.08) 0%, transparent 60%);
  pointer-events: none;
}

.diner-hero::after {
  content: '';
  position: absolute;
  bottom: 0;
  left: 0;
  right: 0;
  height: 8px;
  background: repeating-linear-gradient(
    90deg,
    #D72638 0px,
    #D72638 20px,
    #FFF8F0 20px,
    #FFF8F0 40px
  );
}

.diner-hero h1 {
  font-family: 'Fredoka', sans-serif;
  font-size: clamp(3rem, 9vw, 7rem);
  font-weight: 700;
  color: var(--diner-cream);
  text-shadow:
    0 0 10px rgba(215, 38, 56, 0.6),
    0 0 30px rgba(215, 38, 56, 0.3),
    0 0 60px rgba(215, 38, 56, 0.15),
    3px 3px 0 rgba(0, 0, 0, 0.3);
  position: relative;
  z-index: 1;
  margin-bottom: 16px;
}

.diner-hero .tagline {
  font-family: 'Lobster', cursive;
  font-size: clamp(1.2rem, 3vw, 1.8rem);
  color: var(--diner-neon-yellow);
  text-shadow:
    0 0 8px rgba(255, 210, 63, 0.5),
    0 0 20px rgba(255, 210, 63, 0.25);
  position: relative;
  z-index: 1;
  margin-bottom: 20px;
}

.diner-hero p {
  font-family: 'Nunito', sans-serif;
  font-size: clamp(1rem, 1.5vw, 1.2rem);
  color: rgba(255, 248, 240, 0.85);
  max-width: 560px;
  line-height: 1.8;
  position: relative;
  z-index: 1;
}

Checkerboard Pattern Background

A pure CSS black-and-white checkerboard floor pattern, the quintessential diner motif.

.checkerboard-bg {
  background-color: #FFF8F0;
  background-image:
    linear-gradient(45deg, #1A1A2E 25%, transparent 25%),
    linear-gradient(-45deg, #1A1A2E 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, #1A1A2E 75%),
    linear-gradient(-45deg, transparent 75%, #1A1A2E 75%);
  background-size: 40px 40px;
  background-position: 0 0, 0 20px, 20px -20px, -20px 0;
}

/* Subtle overlay variant for section backgrounds */
.checkerboard-subtle {
  position: relative;
}

.checkerboard-subtle::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  bottom: 0;
  background-image:
    linear-gradient(45deg, rgba(26, 26, 46, 0.04) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(26, 26, 46, 0.04) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(26, 26, 46, 0.04) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(26, 26, 46, 0.04) 75%);
  background-size: 30px 30px;
  background-position: 0 0, 0 15px, 15px -15px, -15px 0;
  pointer-events: none;
}

/* Red-and-white tablecloth variant */
.checkerboard-red {
  background-color: #FFF8F0;
  background-image:
    linear-gradient(45deg, rgba(215, 38, 56, 0.12) 25%, transparent 25%),
    linear-gradient(-45deg, rgba(215, 38, 56, 0.12) 25%, transparent 25%),
    linear-gradient(45deg, transparent 75%, rgba(215, 38, 56, 0.12) 75%),
    linear-gradient(-45deg, transparent 75%, rgba(215, 38, 56, 0.12) 75%);
  background-size: 24px 24px;
  background-position: 0 0, 0 12px, 12px -12px, -12px 0;
}

Neon Glow Text Effect

An animated neon-sign text treatment that pulses like actual gas-tube signage.

.neon-sign {
  font-family: 'Pacifico', cursive;
  color: #D72638;
  text-shadow:
    0 0 7px rgba(215, 38, 56, 0.8),
    0 0 20px rgba(215, 38, 56, 0.5),
    0 0 42px rgba(215, 38, 56, 0.3),
    0 0 80px rgba(215, 38, 56, 0.15);
  animation: neonFlicker 3s ease-in-out infinite;
}

@keyframes neonFlicker {
  0%, 100% {
    text-shadow:
      0 0 7px rgba(215, 38, 56, 0.8),
      0 0 20px rgba(215, 38, 56, 0.5),
      0 0 42px rgba(215, 38, 56, 0.3),
      0 0 80px rgba(215, 38, 56, 0.15);
  }
  50% {
    text-shadow:
      0 0 4px rgba(215, 38, 56, 0.6),
      0 0 14px rgba(215, 38, 56, 0.35),
      0 0 30px rgba(215, 38, 56, 0.2),
      0 0 60px rgba(215, 38, 56, 0.1);
  }
}

/* Turquoise neon variant */
.neon-sign--teal {
  color: #40C4AA;
  text-shadow:
    0 0 7px rgba(64, 196, 170, 0.8),
    0 0 20px rgba(64, 196, 170, 0.5),
    0 0 42px rgba(64, 196, 170, 0.3),
    0 0 80px rgba(64, 196, 170, 0.15);
}

/* Yellow neon variant */
.neon-sign--yellow {
  color: #FFD23F;
  text-shadow:
    0 0 7px rgba(255, 210, 63, 0.8),
    0 0 20px rgba(255, 210, 63, 0.5),
    0 0 42px rgba(255, 210, 63, 0.3),
    0 0 80px rgba(255, 210, 63, 0.15);
}

Chrome Gradient Border

A polished metallic border treatment that captures the gleaming chrome trim of diner fixtures.

.chrome-border {
  border: 3px solid transparent;
  background-clip: padding-box;
  position: relative;
}

.chrome-border::before {
  content: '';
  position: absolute;
  top: -3px;
  left: -3px;
  right: -3px;
  bottom: -3px;
  background: linear-gradient(
    135deg,
    #E8E8E8 0%,
    #FFFFFF 25%,
    #C0C0C0 50%,
    #FFFFFF 75%,
    #E8E8E8 100%
  );
  border-radius: inherit;
  z-index: -1;
}

/* Animated chrome shine */
.chrome-border--shine::before {
  background-size: 200% 200%;
  animation: chromeShine 3s ease-in-out infinite;
}

@keyframes chromeShine {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

Diner Stripe Divider

A striped awning-style section divider using classic diner colors.

.diner-stripe {
  display: flex;
  height: 8px;
  width: 100%;
}

.diner-stripe span {
  flex: 1;
}

.diner-stripe span:nth-child(1) { background: #D72638; }
.diner-stripe span:nth-child(2) { background: #FFF8F0; }
.diner-stripe span:nth-child(3) { background: #40C4AA; }
.diner-stripe span:nth-child(4) { background: #FFF8F0; }
.diner-stripe span:nth-child(5) { background: #FFD23F; }
.diner-stripe span:nth-child(6) { background: #FFF8F0; }
.diner-stripe span:nth-child(7) { background: #D72638; }

/* Awning stripe pattern for headers */
.awning-stripe {
  height: 6px;
  background: repeating-linear-gradient(
    90deg,
    #D72638 0px,
    #D72638 20px,
    #FFF8F0 20px,
    #FFF8F0 40px
  );
}

/* Turquoise awning variant */
.awning-stripe--teal {
  background: repeating-linear-gradient(
    90deg,
    #40C4AA 0px,
    #40C4AA 20px,
    #FFF8F0 20px,
    #FFF8F0 40px
  );
}

/* Thicker decorative band */
.diner-stripe--thick {
  height: 16px;
}

Design Do's and Don'ts

Do's

  • Use cherry red and turquoise as your anchor colors grounded by deep charcoal and softened by cream; these two hues are the non-negotiable foundation of the diner palette
  • Apply chrome-gradient borders and metallic accents to frames, dividers, and card edges; chrome is the connective material that makes disparate diner elements feel cohesive
  • Incorporate checkerboard patterns on backgrounds, borders, or decorative strips; the black-and-white check is the single most instantly recognizable diner motif
  • Use neon glow effects sparingly on key headings and CTAs to create the warm, buzzing ambiance of a diner at night without overwhelming the layout
  • Choose bold, rounded display typefaces for headings that echo hand-painted signage; chunky slab-serifs and bubbly sans-serifs communicate the era far more effectively than delicate fonts
  • Build clear typographic hierarchy mimicking a diner menu: bold category headers, medium item names, and lighter descriptions arranged in a scannable vertical flow
  • Pair bold colors with generous white space to let each element breathe; real diners kept counters clean and menus organized despite their vibrant decor
  • Use warm, slightly off-white backgrounds like cream and vanilla rather than stark pure white; diner interiors glowed under warm incandescent and neon light, never cold fluorescents

Don'ts

  • Don't use cool grays, icy blues, or sterile whites as primary background colors; the diner aesthetic is warm, inviting, and saturated -- clinical tones break the spell instantly
  • Don't overload every element with neon glow effects; in a real diner, neon signage was limited to a few key signs, and the rest of the interior relied on warm ambient lighting
  • Don't use thin, minimalist sans-serif fonts for headings; light-weight Helvetica or geometric modernist typefaces contradict the chunky, hand-painted boldness of diner signage
  • Don't apply the checkerboard pattern to every surface; use it strategically as a floor-level ground plane, a border accent, or a section divider rather than wallpapering the entire page
  • Don't forget chrome accents when combining colors; without metallic trim and reflective borders, the red-and-turquoise palette can look like a generic retro color scheme rather than specifically diner-inspired
  • Don't make the layout feel cluttered or chaotic; despite the rich visual vocabulary, real diners prized efficiency and clarity -- customers needed to read menus quickly and servers needed to move fast
  • Don't use pure black (#000000) for text or large backgrounds; always use warm-tinted darks like #1A1A2E or #2D2D3A to preserve the nostalgic warmth of the aesthetic
  • Don't neglect the milkshake pastels; an all-red-and-teal palette without pink, mint, and banana accents misses the softer, sweeter side of the diner experience

Aesthetic Relationship
Atomic Age The broader mid-century design movement that birthed the diner's Googie architecture, chrome fascination, and space-age optimism; Atomic Age is shinier and more futuristic, while Retro Diner is earthier and food-focused
70s Retro The immediate successor decade; 70s Retro trades chrome for wood paneling and neon for earth tones, but shares the love of bold typography, textured surfaces, and nostalgic warmth
Pop Art Shares the bold color blocking, high contrast, and playful commercial imagery; Pop Art pushes further into artistic commentary while Retro Diner stays grounded in functional hospitality design
Rockabilly The rebellious cultural cousin; Rockabilly draws from the same 1950s source material but emphasizes the greasers, hot rods, and tattoo culture rather than the soda fountain and family dining
Synthwave Inherits the neon glow aesthetic and pushes it into the 1980s digital future; both use dark backgrounds with vibrant luminous accents, but Synthwave is cold and electronic where Retro Diner is warm and analog
Mid-Century Modern The refined, residential counterpart to the commercial diner; shares clean lines and optimistic energy but replaces chrome exuberance with Scandinavian restraint and organic furniture forms
Vaporwave Shares the nostalgic appropriation of past commercial aesthetics but applies ironic detachment and digital degradation; Retro Diner is sincere where Vaporwave is deliberately surreal
Memphis Design The 1980s reaction that rejected diner-era restraint; Memphis exploded into chaotic geometry and acid pastels, but both movements share a love of bold pattern, saturated color, and unapologetic fun

Quick-Start HTML Template

<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Rosie's Diner &mdash; Burgers, Shakes &amp; Good Times</title>
  <link rel="preconnect" href="https://fonts.googleapis.com">
  <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
  <link href="https://fonts.googleapis.com/css2?family=Fredoka:wght@400;500;600;700&family=Archivo+Black&family=Lobster&family=Pacifico&family=Nunito:wght@300;400;600;700&display=swap" rel="stylesheet">
  <style>
    /* --- Custom Properties --- */
    :root {
      --diner-cherry: #D72638;
      --diner-turquoise: #40C4AA;
      --diner-black: #1A1A2E;
      --diner-cream: #FFF8F0;
      --diner-chrome: #C0C0C0;
      --diner-pink: #F4A6C4;
      --diner-neon-yellow: #FFD23F;
      --diner-mint: #A8E6CF;
      --diner-deep-teal: #1B7B6E;
      --diner-banana: #FFF3C4;
      --diner-charcoal: #2D2D3A;
      --diner-ketchup: #B81D24;
      --diner-steel: #E8E8E8;
      --diner-vanilla: #FFFDF7;
      --diner-neon-blue: #4CC9F0;
    }

    /* --- Reset & Base --- */
    *, *::before, *::after {
      box-sizing: border-box;
      margin: 0;
      padding: 0;
    }

    body {
      font-family: 'Nunito', 'Helvetica Neue', sans-serif;
      font-size: 1.05rem;
      line-height: 1.75;
      color: var(--diner-black);
      background-color: var(--diner-cream);
      overflow-x: hidden;
    }

    /* --- Typography --- */
    h1, h2, h3, h4 {
      font-family: 'Fredoka', sans-serif;
      font-weight: 700;
      line-height: 1.15;
    }

    a {
      color: var(--diner-turquoise);
      text-decoration: underline;
      text-decoration-thickness: 2px;
      text-underline-offset: 3px;
      transition: color 0.3s ease;
    }

    a:hover {
      color: var(--diner-cherry);
    }

    /* --- Navigation --- */
    .nav {
      background: linear-gradient(180deg, #2D2D3A 0%, #1A1A2E 100%);
      position: sticky;
      top: 0;
      z-index: 100;
      box-shadow: 0 2px 12px rgba(26, 26, 46, 0.4);
    }

    .nav-awning {
      height: 6px;
      background: repeating-linear-gradient(
        90deg,
        #D72638 0px, #D72638 20px,
        #FFF8F0 20px, #FFF8F0 40px
      );
    }

    .nav-inner {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 14px 32px;
    }

    .nav-logo {
      font-family: 'Fredoka', sans-serif;
      font-size: 1.5rem;
      font-weight: 700;
      color: var(--diner-neon-yellow);
      text-decoration: none;
      text-shadow:
        0 0 8px rgba(255, 210, 63, 0.4),
        0 1px 2px rgba(0, 0, 0, 0.3);
    }

    .nav-links {
      display: flex;
      gap: 4px;
      list-style: none;
    }

    .nav-links a {
      font-family: 'Fredoka', sans-serif;
      font-size: 0.88rem;
      font-weight: 500;
      color: var(--diner-cream);
      text-decoration: none;
      padding: 8px 20px;
      border-radius: 24px;
      transition: all 0.3s ease;
    }

    .nav-links a:hover {
      background: rgba(215, 38, 56, 0.2);
      color: var(--diner-cherry);
    }

    /* --- Hero Section --- */
    .hero {
      background: linear-gradient(180deg, #1A1A2E 0%, #2D2D3A 50%, #1A1A2E 100%);
      padding: 100px 24px 80px;
      text-align: center;
      position: relative;
      overflow: hidden;
      min-height: 85vh;
      display: flex;
      flex-direction: column;
      align-items: center;
      justify-content: center;
    }

    .hero::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background:
        radial-gradient(ellipse at 30% 20%, rgba(215, 38, 56, 0.15) 0%, transparent 50%),
        radial-gradient(ellipse at 70% 80%, rgba(64, 196, 170, 0.1) 0%, transparent 50%),
        radial-gradient(ellipse at 50% 50%, rgba(255, 210, 63, 0.08) 0%, transparent 60%);
      pointer-events: none;
    }

    .hero::after {
      content: '';
      position: absolute;
      bottom: 0;
      left: 0;
      right: 0;
      height: 8px;
      background: repeating-linear-gradient(
        90deg,
        #D72638 0px, #D72638 20px,
        #FFF8F0 20px, #FFF8F0 40px
      );
    }

    .hero h1 {
      font-size: clamp(3rem, 9vw, 7rem);
      color: var(--diner-cream);
      text-shadow:
        0 0 10px rgba(215, 38, 56, 0.6),
        0 0 30px rgba(215, 38, 56, 0.3),
        0 0 60px rgba(215, 38, 56, 0.15),
        3px 3px 0 rgba(0, 0, 0, 0.3);
      position: relative;
      z-index: 1;
      margin-bottom: 12px;
    }

    .hero .tagline {
      font-family: 'Lobster', cursive;
      font-size: clamp(1.2rem, 3vw, 1.8rem);
      color: var(--diner-neon-yellow);
      text-shadow:
        0 0 8px rgba(255, 210, 63, 0.5),
        0 0 20px rgba(255, 210, 63, 0.25);
      position: relative;
      z-index: 1;
      margin-bottom: 20px;
    }

    .hero p {
      font-size: clamp(1rem, 1.5vw, 1.15rem);
      color: rgba(255, 248, 240, 0.85);
      max-width: 540px;
      line-height: 1.8;
      position: relative;
      z-index: 1;
      margin-bottom: 32px;
    }

    .hero-buttons {
      display: flex;
      gap: 14px;
      flex-wrap: wrap;
      justify-content: center;
      position: relative;
      z-index: 1;
    }

    /* --- Buttons --- */
    .btn {
      display: inline-block;
      font-family: 'Fredoka', sans-serif;
      font-size: 1rem;
      font-weight: 600;
      letter-spacing: 0.04em;
      padding: 14px 36px;
      border: none;
      border-radius: 50px;
      cursor: pointer;
      text-decoration: none;
      text-transform: uppercase;
      transition: all 0.3s ease;
      position: relative;
      overflow: hidden;
    }

    .btn-primary {
      background: linear-gradient(135deg, #D72638 0%, #B81D24 100%);
      color: var(--diner-cream);
      box-shadow:
        0 4px 14px rgba(215, 38, 56, 0.4),
        inset 0 1px 0 rgba(255, 255, 255, 0.2),
        0 0 0 3px var(--diner-chrome);
    }

    .btn-primary:hover {
      transform: translateY(-2px);
      box-shadow:
        0 6px 22px rgba(215, 38, 56, 0.5),
        inset 0 1px 0 rgba(255, 255, 255, 0.3),
        0 0 0 3px var(--diner-chrome),
        0 0 20px rgba(215, 38, 56, 0.2);
      color: var(--diner-cream);
    }

    .btn-outline {
      background: transparent;
      color: var(--diner-cream);
      border: 2.5px solid rgba(255, 248, 240, 0.5);
      box-shadow: none;
    }

    .btn-outline:hover {
      background: rgba(255, 248, 240, 0.1);
      border-color: var(--diner-cream);
      color: var(--diner-cream);
    }

    /* --- Awning Stripe Band --- */
    .stripe-band {
      display: flex;
      height: 8px;
      width: 100%;
    }

    .stripe-band span { flex: 1; }
    .stripe-band span:nth-child(1) { background: #D72638; }
    .stripe-band span:nth-child(2) { background: #FFF8F0; }
    .stripe-band span:nth-child(3) { background: #40C4AA; }
    .stripe-band span:nth-child(4) { background: #FFF8F0; }
    .stripe-band span:nth-child(5) { background: #FFD23F; }
    .stripe-band span:nth-child(6) { background: #FFF8F0; }
    .stripe-band span:nth-child(7) { background: #D72638; }

    /* --- Container --- */
    .container {
      max-width: 960px;
      margin: 0 auto;
      padding: 0 24px;
    }

    /* --- Section --- */
    .section {
      padding: 64px 24px;
    }

    .section--cream {
      background: var(--diner-cream);
    }

    .section--checker {
      background-color: var(--diner-vanilla);
      position: relative;
    }

    .section--checker::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      bottom: 0;
      background-image:
        linear-gradient(45deg, rgba(26, 26, 46, 0.03) 25%, transparent 25%),
        linear-gradient(-45deg, rgba(26, 26, 46, 0.03) 25%, transparent 25%),
        linear-gradient(45deg, transparent 75%, rgba(26, 26, 46, 0.03) 75%),
        linear-gradient(-45deg, transparent 75%, rgba(26, 26, 46, 0.03) 75%);
      background-size: 30px 30px;
      background-position: 0 0, 0 15px, 15px -15px, -15px 0;
      pointer-events: none;
    }

    .section-label {
      font-family: 'Archivo Black', sans-serif;
      font-size: 0.85rem;
      text-transform: uppercase;
      letter-spacing: 0.15em;
      color: var(--diner-cherry);
      text-align: center;
      margin-bottom: 8px;
    }

    .section-title {
      font-family: 'Fredoka', sans-serif;
      font-size: clamp(2rem, 5vw, 3.2rem);
      font-weight: 700;
      text-align: center;
      color: var(--diner-black);
      margin-bottom: 12px;
    }

    .section-subtitle {
      font-family: 'Lobster', cursive;
      font-size: 1.3rem;
      text-align: center;
      color: var(--diner-turquoise);
      margin-bottom: 48px;
    }

    /* --- Menu Card Grid --- */
    .card-grid {
      display: grid;
      grid-template-columns: repeat(auto-fit, minmax(270px, 1fr));
      gap: 28px;
    }

    .card {
      background: linear-gradient(145deg, var(--diner-vanilla) 0%, var(--diner-cream) 100%);
      border: 3px solid var(--diner-chrome);
      border-radius: 12px;
      padding: 32px;
      position: relative;
      overflow: hidden;
      transition: transform 0.3s ease, box-shadow 0.3s ease;
      box-shadow:
        0 3px 12px rgba(26, 26, 46, 0.06),
        inset 0 1px 0 rgba(255, 255, 255, 0.8);
    }

    .card::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 5px;
      background: linear-gradient(90deg, #D72638, #40C4AA, #FFD23F);
      border-radius: 12px 12px 0 0;
    }

    .card:hover {
      transform: translateY(-4px);
      box-shadow:
        0 8px 28px rgba(26, 26, 46, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 0.8);
    }

    .card-icon {
      font-size: 2.4rem;
      margin-bottom: 14px;
      display: block;
    }

    .card h3 {
      font-family: 'Fredoka', sans-serif;
      font-size: 1.5rem;
      font-weight: 700;
      color: var(--diner-black);
      margin-bottom: 10px;
    }

    .card p {
      font-size: 0.98rem;
      line-height: 1.75;
    }

    .card .tag {
      display: inline-block;
      font-family: 'Fredoka', sans-serif;
      font-size: 0.75rem;
      font-weight: 500;
      text-transform: uppercase;
      letter-spacing: 0.06em;
      padding: 4px 14px;
      border-radius: 20px;
      border: 1.5px solid var(--diner-chrome);
      color: var(--diner-deep-teal);
      margin-top: 14px;
      margin-right: 6px;
    }

    /* --- Menu Feature List --- */
    .feature-list {
      display: flex;
      flex-direction: column;
      gap: 28px;
    }

    .feature {
      display: flex;
      align-items: flex-start;
      gap: 24px;
      background: var(--diner-vanilla);
      border-radius: 12px;
      padding: 28px 32px;
      border: 2px solid var(--diner-steel);
      transition: transform 0.3s ease;
    }

    .feature:hover {
      transform: translateX(6px);
    }

    .feature-icon {
      font-size: 2.2rem;
      flex-shrink: 0;
      width: 56px;
      height: 56px;
      background: linear-gradient(135deg, #D72638, #B81D24);
      border-radius: 50%;
      display: flex;
      align-items: center;
      justify-content: center;
      box-shadow: 0 0 0 3px var(--diner-chrome);
    }

    .feature h3 {
      font-family: 'Fredoka', sans-serif;
      font-size: 1.3rem;
      font-weight: 600;
      color: var(--diner-black);
      margin-bottom: 6px;
    }

    .feature p {
      font-size: 0.98rem;
      line-height: 1.7;
    }

    /* --- Neon Divider --- */
    .neon-divider {
      display: flex;
      align-items: center;
      justify-content: center;
      margin: 48px auto;
      max-width: 500px;
    }

    .neon-divider::before,
    .neon-divider::after {
      content: '';
      flex: 1;
      height: 3px;
      border-radius: 2px;
      background: linear-gradient(90deg, transparent, var(--diner-chrome), transparent);
    }

    .neon-divider span {
      padding: 0 18px;
      font-family: 'Pacifico', cursive;
      font-size: 1.4rem;
      color: var(--diner-cherry);
      text-shadow: 0 0 8px rgba(215, 38, 56, 0.4);
    }

    /* --- Testimonial / Quote --- */
    .quote-block {
      text-align: center;
      padding: 48px 32px;
      margin: 0 auto;
      max-width: 700px;
      background: var(--diner-vanilla);
      border-radius: 16px;
      border: 3px solid var(--diner-chrome);
      position: relative;
    }

    .quote-block::before {
      content: '\201C';
      font-family: 'Fredoka', sans-serif;
      font-size: 6rem;
      font-weight: 700;
      color: var(--diner-cherry);
      opacity: 0.2;
      position: absolute;
      top: 0;
      left: 28px;
      line-height: 1;
    }

    .quote-block p {
      font-family: 'Nunito', sans-serif;
      font-size: 1.3rem;
      font-style: italic;
      color: var(--diner-black);
      max-width: 520px;
      margin: 0 auto 14px;
      line-height: 1.7;
    }

    .quote-block cite {
      font-family: 'Lobster', cursive;
      font-size: 1.1rem;
      color: var(--diner-turquoise);
      font-style: normal;
    }

    /* --- Chrome Footer --- */
    .footer {
      background: linear-gradient(180deg, #1A1A2E 0%, #12121F 100%);
      padding: 56px 24px 28px;
      text-align: center;
      color: var(--diner-cream);
      position: relative;
    }

    .footer::before {
      content: '';
      position: absolute;
      top: 0;
      left: 0;
      right: 0;
      height: 4px;
      background: linear-gradient(
        90deg,
        #E8E8E8, #FFFFFF, #C0C0C0, #FFFFFF, #E8E8E8
      );
    }

    .footer h3 {
      font-family: 'Fredoka', sans-serif;
      font-size: 1.6rem;
      font-weight: 700;
      color: var(--diner-neon-yellow);
      text-shadow: 0 0 10px rgba(255, 210, 63, 0.3);
      margin-bottom: 10px;
    }

    .footer p {
      font-family: 'Nunito', sans-serif;
      font-size: 0.92rem;
      color: rgba(255, 248, 240, 0.7);
      max-width: 480px;
      margin: 0 auto 24px;
      line-height: 1.7;
    }

    .footer-links {
      display: flex;
      justify-content: center;
      gap: 24px;
      flex-wrap: wrap;
      margin-bottom: 32px;
    }

    .footer-links a {
      font-family: 'Fredoka', sans-serif;
      font-size: 0.88rem;
      color: rgba(255, 248, 240, 0.6);
      text-decoration: none;
      transition: color 0.3s ease;
    }

    .footer-links a:hover {
      color: var(--diner-neon-yellow);
    }

    .footer-copy {
      font-family: 'Nunito', sans-serif;
      font-size: 0.75rem;
      color: rgba(255, 248, 240, 0.3);
    }

    /* --- Responsive --- */
    @media (max-width: 700px) {
      .hero {
        padding: 70px 20px 60px;
        min-height: 70vh;
      }

      .hero h1 { font-size: 2.6rem; }

      .nav-inner {
        padding: 12px 16px;
        flex-direction: column;
        gap: 10px;
      }

      .nav-links { gap: 2px; flex-wrap: wrap; justify-content: center; }
      .nav-links a { padding: 6px 14px; font-size: 0.82rem; }

      .section { padding: 44px 16px; }
      .card-grid { grid-template-columns: 1fr; }
      .card { padding: 24px; }

      .feature {
        flex-direction: column;
        gap: 14px;
        padding: 24px;
      }

      .quote-block { padding: 36px 20px; }
      .quote-block p { font-size: 1.1rem; }
      .section-title { font-size: 1.8rem; }

      .footer { padding: 40px 16px 24px; }
    }

    @media (prefers-reduced-motion: reduce) {
      .hero::before { animation: none; }
      .card, .feature, .btn { transition: none; }
    }
  </style>
</head>
<body>

  <!-- NAVIGATION -->
  <nav class="nav">
    <div class="nav-awning"></div>
    <div class="nav-inner">
      <a href="#" class="nav-logo">Rosie's Diner</a>
      <div class="nav-links">
        <a href="#menu">Menu</a>
        <a href="#specials">Specials</a>
        <a href="#about">About</a>
        <a href="#visit">Visit</a>
      </div>
    </div>
  </nav>

  <!-- HERO -->
  <header class="hero">
    <h1>Rosie's Diner</h1>
    <p class="tagline">Burgers, shakes &amp; good times since 1955</p>
    <p>Step back in time to the golden age of American dining. Hand-pressed burgers on the griddle, hand-spun milkshakes in frosty chrome glasses, and the best jukebox this side of Route 66.</p>
    <div class="hero-buttons">
      <a href="#menu" class="btn btn-primary">See the Menu</a>
      <a href="#visit" class="btn btn-outline">Find Us</a>
    </div>
  </header>

  <!-- STRIPE BAND -->
  <div class="stripe-band">
    <span></span><span></span><span></span><span></span><span></span><span></span><span></span>
  </div>

  <!-- FEATURED MENU -->
  <section class="section section--cream" id="menu">
    <div class="container">
      <p class="section-label">From the Griddle</p>
      <h2 class="section-title">Our Famous Menu</h2>
      <p class="section-subtitle">Made fresh daily, just like mom used to</p>

      <div class="card-grid">
        <div class="card">
          <span class="card-icon">&#127828;</span>
          <h3>The Classic Rosie</h3>
          <p>Quarter-pound beef patty, American cheese, crisp lettuce, ripe tomato, and our secret sauce on a toasted sesame bun. The burger that built a legend.</p>
          <span class="tag">Best Seller</span>
          <span class="tag">Signature</span>
        </div>

        <div class="card">
          <span class="card-icon">&#127846;</span>
          <h3>Strawberry Shake</h3>
          <p>Hand-spun with real strawberries, vanilla ice cream, and cold whole milk in a classic chrome mixer. Served in a frosted glass with whipped cream.</p>
          <span class="tag">Fan Favorite</span>
        </div>

        <div class="card">
          <span class="card-icon">&#127839;</span>
          <h3>Golden Fries</h3>
          <p>Idaho potatoes hand-cut every morning, double-fried for that perfect crispy outside and fluffy inside. Seasoned with our house salt blend.</p>
          <span class="tag">Side</span>
          <span class="tag">Shareable</span>
        </div>
      </div>
    </div>
  </section>

  <!-- STRIPE BAND -->
  <div class="stripe-band">
    <span></span><span></span><span></span><span></span><span></span><span></span><span></span>
  </div>

  <!-- SPECIALS -->
  <section class="section section--checker" id="specials">
    <div class="container">
      <p class="section-label">Why Rosie's</p>
      <h2 class="section-title">The Diner Difference</h2>
      <p class="section-subtitle">More than just a meal</p>

      <div class="feature-list">
        <div class="feature">
          <div class="feature-icon">
            <span style="font-size: 1.6rem;">&#127925;</span>
          </div>
          <div>
            <h3>Live Jukebox</h3>
            <p>Over 200 original 45s loaded in our 1957 Wurlitzer. Drop a nickel, pick a tune, and let the rock 'n' roll set the mood for your meal.</p>
          </div>
        </div>

        <div class="feature">
          <div class="feature-icon">
            <span style="font-size: 1.6rem;">&#129385;</span>
          </div>
          <div>
            <h3>Made from Scratch</h3>
            <p>Every bun baked in-house, every patty hand-pressed, every milkshake spun to order. No shortcuts, no freezers, no microwaves. Just real food made the old-fashioned way.</p>
          </div>
        </div>

        <div class="feature">
          <div class="feature-icon">
            <span style="font-size: 1.6rem;">&#128666;</span>
          </div>
          <div>
            <h3>Curbside Car Hop</h3>
            <p>Pull up, flash your lights, and one of our roller-skating car hops will bring your order right to your window on a chrome tray. Just like 1955.</p>
          </div>
        </div>
      </div>
    </div>
  </section>

  <!-- NEON DIVIDER -->
  <div class="neon-divider">
    <span>EAT</span>
  </div>

  <!-- TESTIMONIAL -->
  <section class="section section--cream" id="about">
    <div class="container">
      <div class="quote-block">
        <p>Walking into Rosie's is like stepping through a time machine. The chrome sparkles, the jukebox croons, and that first bite of the Classic Rosie takes you straight to 1955.</p>
        <cite>&mdash; Route 66 Magazine</cite>
      </div>
    </div>
  </section>

  <!-- STRIPE BAND -->
  <div class="stripe-band">
    <span></span><span></span><span></span><span></span><span></span><span></span><span></span>
  </div>

  <!-- VISIT INFO -->
  <section class="section section--cream" id="visit">
    <div class="container">
      <p class="section-label">Come On In</p>
      <h2 class="section-title">Find Rosie's</h2>
      <p class="section-subtitle">The neon's always on</p>

      <div class="card-grid" style="grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));">
        <div class="card" style="text-align: center;">
          <span class="card-icon">&#128205;</span>
          <h3>Location</h3>
          <p>2501 Route 66<br>Kingman, AZ 86401</p>
        </div>

        <div class="card" style="text-align: center;">
          <span class="card-icon">&#128339;</span>
          <h3>Hours</h3>
          <p>Mon&ndash;Sat: 7am&ndash;10pm<br>Sunday: 8am&ndash;9pm</p>
        </div>

        <div class="card" style="text-align: center;">
          <span class="card-icon">&#128222;</span>
          <h3>Call Ahead</h3>
          <p>(928) 555-1955<br>Takeout available</p>
        </div>
      </div>
    </div>
  </section>

  <!-- FOOTER -->
  <footer class="footer">
    <h3>Rosie's Diner</h3>
    <p>Serving up burgers, shakes, and smiles on Route 66 since 1955. Where every seat's the best seat in the house.</p>
    <div class="footer-links">
      <a href="#menu">Menu</a>
      <a href="#specials">Specials</a>
      <a href="#about">About</a>
      <a href="#visit">Location</a>
      <a href="#">Catering</a>
      <a href="#">Gift Cards</a>
    </div>
    <p class="footer-copy">&copy; 2026 Rosie's Diner. All rights reserved. Made with love and a little secret sauce.</p>
  </footer>

</body>
</html>

Implementation Tips

  • Start with the checkerboard and chrome: Before adding any content, establish the checkered background pattern (even if subtle at 3-4% opacity) and chrome border treatment; these two elements immediately signal "diner" and everything else falls into place around them
  • Layer neon glow effects using multiple text-shadow values: A convincing neon sign needs at least three shadow layers at increasing blur radii (7px, 20px, 40px+) with decreasing opacity; a single shadow reads as a generic glow rather than gas-tube neon
  • Test the chrome border gradient on dark and light backgrounds: The metallic border effect relies on contrast to look convincing; adjust the gradient stops (#E8E8E8 to #FFFFFF to #C0C0C0) based on the surrounding surface color
  • Use repeating-linear-gradient for awning stripes: This approach automatically scales the stripe count to fill any container width, unlike fixed SVG patterns; a 20px stripe width works well for most viewport sizes
  • Serve the full Google Fonts import in a single request: Combine all font families into one @import URL to minimize render-blocking HTTP requests; preconnect hints to fonts.googleapis.com and fonts.gstatic.com further reduce latency
  • Respect prefers-reduced-motion: The neon flicker animation and chrome shine effect, while atmospheric, can cause discomfort for users with vestibular sensitivities; wrap all animations in a @media (prefers-reduced-motion: reduce) query that sets animation: none
  • Keep the dark hero/footer color at #1A1A2E rather than pure black: This warm-tinted near-black preserves the nostalgic ambiance of a diner at night; pure #000000 feels harsh and modern, breaking the vintage illusion
  • Use CSS clamp() for responsive heading sizes: The diner marquee effect depends on large, impactful headlines; clamp(3rem, 9vw, 7rem) scales smoothly from mobile to desktop without requiring breakpoint-specific overrides
Agence WagnerAgence Wagner

© 2026 Agence Wagner. Tous droits réservés.

Designs issus de chrislemke/website_designs, sous licence MIT.