Amazon DESIGN.md

Brands

Amazon's colors, typography and components, written as a DESIGN.md file for coding agents.

Raw DESIGN.md

At a glance

Group
Brands
Main color
#ff9900Orange design systems
Fonts
Amazon EmberAmazon Ember DisplayAmazon Ember Mono

Colors in this file

  • #0f1111

    Primary Text

  • #ffffff

    White

  • #007185

    Link Blue

  • #067d62

    Success Green

  • #ff9900

    Amazon Orange

  • #eaeded

    Light Gray

  • #565959

    Secondary Text

  • #c7511f

    Link Hover

  • #e77600

    border-color

  • #b12704

    Error Red

1. Color Palette

Primary Colors

Color NameHex CodeRGBUsage
Amazon Orange#FF9900rgb(255, 153, 0)Primary brand color, buttons, accents, links on dark backgrounds
Amazon Dark Navy#131921rgb(19, 25, 33)Primary header, footer background
Amazon Navy#232F3Ergb(35, 47, 62)Secondary header, navigation panels

Background Colors

Color NameHex CodeRGBUsage
White#FFFFFFrgb(255, 255, 255)Primary page background, product cards
Light Gray#EAEDEDrgb(234, 237, 237)Page background, section dividers
Soft Gray#F3F3F3rgb(243, 243, 243)Input fields, hover states
Card Background#FAFAFArgb(250, 250, 250)Product card backgrounds

Text Colors

Color NameHex CodeRGBUsage
Primary Text#0F1111rgb(15, 17, 17)Main body text, headings
Secondary Text#565959rgb(86, 89, 89)Subtext, descriptions
Muted Text#767676rgb(118, 118, 118)Tertiary information
Link Blue#007185rgb(0, 113, 133)Text links, interactive elements
Link Hover#C7511Frgb(199, 81, 31)Link hover state

Status & Alert Colors

Color NameHex CodeRGBUsage
Success Green#067D62rgb(6, 125, 98)In stock, success messages
Error Red#B12704rgb(177, 39, 4)Errors, sale prices
Warning Orange#F0AD4Ergb(240, 173, 78)Warnings, limited stock
Deal Red#CC0C39rgb(204, 12, 57)Deal badges, lightning deals

Rating & Badge Colors

Color NameHex CodeRGBUsage
Star Gold#FFA41Crgb(255, 164, 28)Star ratings filled
Star Empty#DDDDDDrgb(221, 221, 221)Star ratings empty
Prime Blue#00A8E1rgb(0, 168, 225)Prime badges, Prime-related elements
Prime Dark#146EB4rgb(20, 110, 180)Prime text, secondary Prime elements

Button Colors

Color NameHex CodeRGBUsage
Button Yellow#FFD814rgb(255, 216, 20)Add to Cart primary button
Button Yellow Hover#F7CA00rgb(247, 202, 0)Add to Cart hover state
Button Orange#FFA41Crgb(255, 164, 28)Buy Now button
Button Orange Hover#FA8900rgb(250, 137, 0)Buy Now hover state
Button Gray#F0F2F2rgb(240, 242, 242)Secondary buttons
Button Gray Hover#E3E6E6rgb(227, 230, 230)Secondary button hover

2. Typography

Font Stack

css/* Primary Font */
font-family: "Amazon Ember", Arial, sans-serif;

/* Display Font */
font-family: "Amazon Ember Display", "Amazon Ember", Arial, sans-serif;

/* Monospace (for prices, codes) */
font-family: "Amazon Ember Mono", Consolas, monospace;

Font Weights

Weight NameValueUsage
Light300Large display text, subtle headings
Regular400Body text, descriptions
Medium500Subheadings, emphasis
Bold700Headings, prices, important text

Type Scale

ElementSizeWeightLine HeightLetter Spacing
Hero Title28px4001.2-0.01em
Page Title24px4001.25normal
Section Title21px7001.25normal
Product Title18px4001.35normal
Card Title16px4001.4normal
Body Large14px4001.45normal
Body13px4001.45normal
Body Small12px4001.5normal
Caption11px4001.4normal
Price Large28px4001.2-0.02em
Price Medium21px4001.25-0.01em
Price Small14px4001.3normal

Text Treatments

css/* Product Title */
.product-title {
  font-size: 16px;
  font-weight: 400;
  line-height: 1.4;
  color: #0F1111;
  overflow: hidden;
  text-overflow: ellipsis;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
}

/* Price Display */
.price {
  font-size: 21px;
  font-weight: 400;
  color: #0F1111;
}

.price-symbol {
  font-size: 13px;
  vertical-align: top;
  position: relative;
  top: 2px;
}

.price-fraction {
  font-size: 13px;
  vertical-align: top;
}

/* Strikethrough Price */
.original-price {
  font-size: 14px;
  color: #565959;
  text-decoration: line-through;
}

/* Link Text */
.link {
  color: #007185;
  text-decoration: none;
}

.link:hover {
  color: #C7511F;
  text-decoration: underline;
}

3. Spacing System

Base Unit

  • Base spacing unit: 4px

Spacing Scale

TokenValueUsage
space-00pxReset
space-14pxTight spacing, inline elements
space-28pxRelated elements, icon padding
space-312pxCard internal padding
space-416pxSection padding, card gaps
space-520pxStandard container padding
space-624pxSection gaps
space-732pxLarge section gaps
space-840pxMajor section separation
space-948pxPage level spacing
space-1064pxHero sections

Layout Spacing

css/* Container Padding */
.container {
  padding: 0 18px;
  max-width: 1500px;
  margin: 0 auto;
}

/* Product Grid Gap */
.product-grid {
  gap: 14px;
}

/* Card Internal Spacing */
.product-card {
  padding: 12px;
}

/* Section Spacing */
.section {
  padding: 20px 0;
  margin-bottom: 24px;
}

/* Dense List Spacing */
.dense-list-item {
  padding: 8px 12px;
}

Responsive Spacing

BreakpointContainer PaddingGrid Gap
Mobile (<768px)12px8px
Tablet (768-1024px)16px12px
Desktop (1024-1440px)18px14px
Wide (>1440px)24px16px

4. Component Library

Buttons

Primary Button (Add to Cart)

css.btn-primary {
  background: linear-gradient(to bottom, #f7dfa5, #f0c14b);
  border: 1px solid #a88734;
  border-radius: 8px;
  padding: 8px 18px;
  font-size: 13px;
  font-weight: 400;
  color: #0F1111;
  cursor: pointer;
  box-shadow: 0 2px 5px 0 rgba(213, 217, 217, 0.5);
}

.btn-primary:hover {
  background: linear-gradient(to bottom, #f5d78e, #eeb933);
}

.btn-primary:active {
  background: #f0c14b;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2) inset;
}

/* Modern Yellow Button */
.btn-cart {
  background-color: #FFD814;
  border: 1px solid #FCD200;
  border-radius: 20px;
  padding: 10px 24px;
  font-size: 13px;
  color: #0F1111;
}

.btn-cart:hover {
  background-color: #F7CA00;
}

Buy Now Button

css.btn-buy-now {
  background-color: #FFA41C;
  border: 1px solid #FF8F00;
  border-radius: 20px;
  padding: 10px 24px;
  font-size: 13px;
  color: #0F1111;
}

.btn-buy-now:hover {
  background-color: #FA8900;
}

Secondary Button

css.btn-secondary {
  background-color: #FFFFFF;
  border: 1px solid #D5D9D9;
  border-radius: 8px;
  padding: 8px 18px;
  font-size: 13px;
  color: #0F1111;
  box-shadow: 0 2px 5px 0 rgba(213, 217, 217, 0.5);
}

.btn-secondary:hover {
  background-color: #F7FAFA;
}

Product Card

css.product-card {
  background: #FFFFFF;
  border: 1px solid #DDD;
  border-radius: 8px;
  padding: 12px;
  position: relative;
  transition: box-shadow 0.2s ease;
}

.product-card:hover {
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

.product-image {
  width: 100%;
  aspect-ratio: 1;
  object-fit: contain;
  margin-bottom: 8px;
}

.product-title {
  font-size: 14px;
  line-height: 1.4;
  color: #0F1111;
  margin-bottom: 4px;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}

.product-rating {
  display: flex;
  align-items: center;
  gap: 4px;
  margin-bottom: 4px;
}

.product-price {
  font-size: 21px;
  font-weight: 400;
  color: #0F1111;
}

Star Rating

css.star-rating {
  display: inline-flex;
  gap: 1px;
}

.star {
  width: 15px;
  height: 15px;
  color: #FFA41C;
}

.star-empty {
  color: #DDDDDD;
}

.star-half {
  background: linear-gradient(90deg, #FFA41C 50%, #DDDDDD 50%);
  -webkit-background-clip: text;
}

.rating-count {
  color: #007185;
  font-size: 12px;
  margin-left: 4px;
}

.rating-count:hover {
  color: #C7511F;
  text-decoration: underline;
}

Badges

css/* Prime Badge */
.badge-prime {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

.prime-logo {
  height: 16px;
  color: #00A8E1;
}

/* Deal Badge */
.badge-deal {
  background-color: #CC0C39;
  color: #FFFFFF;
  font-size: 12px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 2px;
  text-transform: uppercase;
}

/* Limited Time Deal */
.badge-limited-deal {
  background-color: #CC0C39;
  color: #FFFFFF;
  font-size: 11px;
  padding: 3px 6px;
}

/* Best Seller Badge */
.badge-bestseller {
  background-color: #FF9900;
  color: #FFFFFF;
  font-size: 12px;
  font-weight: 700;
  padding: 4px 8px;
  border-radius: 2px;
}

/* Amazon's Choice Badge */
.badge-amazons-choice {
  background-color: #232F3E;
  color: #FFFFFF;
  font-size: 12px;
  padding: 4px 8px;
  border-radius: 2px;
}

.badge-amazons-choice::before {
  content: "";
  background-color: #FF9900;
  width: 4px;
  height: 100%;
  position: absolute;
  left: 0;
}

/* Discount Badge */
.badge-discount {
  background-color: #CC0C39;
  color: #FFFFFF;
  font-size: 12px;
  padding: 4px 6px;
  border-radius: 2px;
}

Input Fields

css.input-field {
  width: 100%;
  padding: 8px 10px;
  border: 1px solid #A6A6A6;
  border-radius: 4px;
  font-size: 13px;
  color: #0F1111;
  background-color: #FFFFFF;
}

.input-field:focus {
  outline: none;
  border-color: #E77600;
  box-shadow: 0 0 0 3px rgba(228, 121, 17, 0.5);
}

.input-field::placeholder {
  color: #767676;
}

/* Search Input */
.search-input {
  border: none;
  border-radius: 0;
  padding: 10px 14px;
  font-size: 15px;
  flex: 1;
}

Search Bar

css.search-bar {
  display: flex;
  align-items: stretch;
  border-radius: 4px;
  overflow: hidden;
  box-shadow: 0 2px 5px rgba(0, 0, 0, 0.1);
}

.search-category {
  background-color: #F3F3F3;
  border: none;
  border-right: 1px solid #CDCDCD;
  padding: 8px 12px;
  font-size: 12px;
  color: #555;
  border-radius: 4px 0 0 4px;
}

.search-input {
  flex: 1;
  border: none;
  padding: 10px 14px;
  font-size: 15px;
}

.search-button {
  background-color: #FEBD69;
  border: none;
  padding: 8px 14px;
  cursor: pointer;
  border-radius: 0 4px 4px 0;
}

.search-button:hover {
  background-color: #F3A847;
}

.search-icon {
  width: 22px;
  height: 22px;
  color: #131921;
}

Quantity Selector

css.quantity-selector {
  display: inline-flex;
  align-items: center;
  border: 1px solid #D5D9D9;
  border-radius: 8px;
  overflow: hidden;
  background: #F0F2F2;
}

.qty-btn {
  width: 36px;
  height: 36px;
  border: none;
  background: transparent;
  font-size: 18px;
  color: #0F1111;
  cursor: pointer;
}

.qty-btn:hover {
  background: #E3E6E6;
}

.qty-value {
  width: 44px;
  text-align: center;
  font-size: 14px;
  background: #FFFFFF;
  border-left: 1px solid #D5D9D9;
  border-right: 1px solid #D5D9D9;
  padding: 8px 0;
}

5. Layout System

Grid System

css/* Product Grid - Dense Layout */
.product-grid {
  display: grid;
  gap: 14px;
}

/* Responsive Grid Columns */
@media (min-width: 1500px) {
  .product-grid { grid-template-columns: repeat(6, 1fr); }
}

@media (min-width: 1200px) and (max-width: 1499px) {
  .product-grid { grid-template-columns: repeat(5, 1fr); }
}

@media (min-width: 992px) and (max-width: 1199px) {
  .product-grid { grid-template-columns: repeat(4, 1fr); }
}

@media (min-width: 768px) and (max-width: 991px) {
  .product-grid { grid-template-columns: repeat(3, 1fr); }
}

@media (min-width: 480px) and (max-width: 767px) {
  .product-grid { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 479px) {
  .product-grid { grid-template-columns: 1fr; }
}

Container Widths

BreakpointMax WidthPadding
Default100%12px
Small (576px+)540px16px
Medium (768px+)720px18px
Large (992px+)960px18px
X-Large (1200px+)1140px18px
XX-Large (1400px+)1500px24px

Page Layout Structure

css/* Main Layout */
.page-layout {
  display: flex;
  flex-direction: column;
  min-height: 100vh;
}

.main-content {
  flex: 1;
  max-width: 1500px;
  margin: 0 auto;
  padding: 14px 18px;
  width: 100%;
}

/* Two Column Layout (Search Results) */
.search-layout {
  display: grid;
  grid-template-columns: 245px 1fr;
  gap: 20px;
}

/* Sidebar Filters */
.sidebar-filters {
  width: 245px;
  flex-shrink: 0;
}

/* Three Column Layout (Product Page) */
.product-page-layout {
  display: grid;
  grid-template-columns: 450px 1fr 300px;
  gap: 24px;
}

Header Structure

css/* Primary Header */
.header-primary {
  background-color: #131921;
  padding: 10px 18px;
  display: flex;
  align-items: center;
  gap: 16px;
}

/* Secondary Navigation */
.header-secondary {
  background-color: #232F3E;
  padding: 8px 18px;
}

.nav-links {
  display: flex;
  gap: 16px;
  font-size: 14px;
  color: #FFFFFF;
}

Carousel/Slider Layout

css.carousel-container {
  position: relative;
  overflow: hidden;
}

.carousel-track {
  display: flex;
  gap: 14px;
  transition: transform 0.3s ease;
}

.carousel-item {
  flex: 0 0 auto;
  width: calc(16.666% - 12px); /* 6 items */
}

.carousel-arrow {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  width: 40px;
  height: 80px;
  background: rgba(255, 255, 255, 0.9);
  border: 1px solid #DDD;
  display: flex;
  align-items: center;
  justify-content: center;
  cursor: pointer;
  z-index: 10;
}

.carousel-arrow-left { left: 0; }
.carousel-arrow-right { right: 0; }

6. Iconography

Icon Sizes

SizeDimensionsUsage
xs12pxInline text icons, ratings
sm16pxNavigation, badges
md20pxButtons, actions
lg24pxHeaders, primary actions
xl32pxFeature icons
2xl48pxEmpty states, illustrations

Icon Style Guidelines

  • Stroke width: 1.5px for outlined icons
  • Corner radius: 2px on icon paths
  • Color: Inherit from parent or specified
  • Alignment: Center-aligned within bounds

Common Icons

css/* Icon Base Styles */
.icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}

.icon-sm { width: 16px; height: 16px; }
.icon-md { width: 20px; height: 20px; }
.icon-lg { width: 24px; height: 24px; }

/* Icon Colors */
.icon-default { color: #0F1111; }
.icon-muted { color: #565959; }
.icon-link { color: #007185; }
.icon-white { color: #FFFFFF; }
.icon-orange { color: #FF9900; }
.icon-prime { color: #00A8E1; }

Essential Icon Set

IconUsageContext
SearchSearch bar, navigationHeader
CartShopping cartHeader, product pages
UserAccount, sign inHeader
LocationDelivery addressHeader, checkout
StarRatingsProduct cards, reviews
Star-halfHalf ratingsProduct cards
HeartWishlist, saveProduct actions
ShareShare productProduct pages
CompareCompare productsSearch results
FilterFilter resultsSearch sidebar
SortSort optionsSearch results
GridGrid viewView toggle
ListList viewView toggle
CheckmarkPrime, verifiedBadges, confirmation
TruckDeliveryShipping info
ReturnFree returnsProduct info
LockSecure checkoutCheckout
Arrow-downDropdownsNavigation, selects
Arrow-rightNavigation, linksCarousels, breadcrumbs
CloseClose modalModals, notifications
MenuMobile menuMobile header
PlusAdd quantityQuantity selector
MinusRemove quantityQuantity selector

7. Motion & Animation

Timing Functions

css/* Easing Curves */
--ease-default: cubic-bezier(0.4, 0, 0.2, 1);
--ease-in: cubic-bezier(0.4, 0, 1, 1);
--ease-out: cubic-bezier(0, 0, 0.2, 1);
--ease-bounce: cubic-bezier(0.34, 1.56, 0.64, 1);

Duration Scale

TokenDurationUsage
instant0msImmediate feedback
fast100msMicro-interactions, hovers
normal200msStandard transitions
slow300msModal, drawer animations
slower400msComplex animations

Standard Animations

css/* Hover Lift */
.hover-lift {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}

.hover-lift:hover {
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
}

/* Fade In */
@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

.fade-in {
  animation: fadeIn 0.2s ease forwards;
}

/* Slide Down (Dropdowns) */
@keyframes slideDown {
  from {
    opacity: 0;
    transform: translateY(-10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

.slide-down {
  animation: slideDown 0.2s ease forwards;
}

/* Skeleton Loading */
@keyframes shimmer {
  0% { background-position: -200% 0; }
  100% { background-position: 200% 0; }
}

.skeleton {
  background: linear-gradient(
    90deg,
    #F3F3F3 25%,
    #E8E8E8 50%,
    #F3F3F3 75%
  );
  background-size: 200% 100%;
  animation: shimmer 1.5s infinite;
}

/* Add to Cart Animation */
@keyframes addToCart {
  0% { transform: scale(1); }
  50% { transform: scale(0.95); }
  100% { transform: scale(1); }
}

.add-to-cart-animation {
  animation: addToCart 0.2s ease;
}

/* Cart Count Badge */
@keyframes cartBounce {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.2); }
}

.cart-badge-update {
  animation: cartBounce 0.3s ease;
}

Loading States

css/* Spinner */
@keyframes spin {
  to { transform: rotate(360deg); }
}

.spinner {
  width: 24px;
  height: 24px;
  border: 3px solid #EAEDED;
  border-top-color: #FF9900;
  border-radius: 50%;
  animation: spin 0.8s linear infinite;
}

/* Progress Bar */
.progress-bar {
  height: 4px;
  background-color: #EAEDED;
  border-radius: 2px;
  overflow: hidden;
}

.progress-fill {
  height: 100%;
  background-color: #FF9900;
  transition: width 0.3s ease;
}

8. Responsive Breakpoints

Breakpoint Definitions

NameMin WidthMax WidthTarget
xs0479pxSmall phones
sm480px767pxLarge phones
md768px991pxTablets
lg992px1199pxSmall laptops
xl1200px1499pxDesktops
xxl1500px-Large desktops

Media Query Mixins

css/* Mobile First Approach */
/* Base styles for mobile */

/* Small devices and up */
@media (min-width: 480px) { }

/* Medium devices and up */
@media (min-width: 768px) { }

/* Large devices and up */
@media (min-width: 992px) { }

/* Extra large devices and up */
@media (min-width: 1200px) { }

/* Extra extra large devices */
@media (min-width: 1500px) { }

Responsive Component Behavior

Header

BreakpointBehavior
xs-smHamburger menu, simplified search, stacked layout
mdFull navigation visible, search expands
lg+Full header with all elements, account dropdown

Product Grid

BreakpointColumnsCard Style
xs1Full width, horizontal layout
sm2Vertical cards
md3Vertical cards
lg4Vertical cards
xl5Vertical cards
xxl6Vertical cards, compact

Navigation

BreakpointBehavior
xs-mdSlide-out drawer, hamburger trigger
lg+Horizontal mega-menu on hover

Responsive Typography

css/* Responsive Font Sizes */
.heading-responsive {
  font-size: 18px;
}

@media (min-width: 768px) {
  .heading-responsive { font-size: 21px; }
}

@media (min-width: 1200px) {
  .heading-responsive { font-size: 24px; }
}

/* Price Responsive */
.price-responsive {
  font-size: 16px;
}

@media (min-width: 768px) {
  .price-responsive { font-size: 18px; }
}

@media (min-width: 1200px) {
  .price-responsive { font-size: 21px; }
}

9. Accessibility & States

Focus States

css/* Default Focus Ring */
:focus-visible {
  outline: 2px solid #E77600;
  outline-offset: 2px;
}

/* Button Focus */
.btn:focus-visible {
  outline: 2px solid #E77600;
  outline-offset: 2px;
  box-shadow: 0 0 0 4px rgba(228, 121, 17, 0.3);
}

/* Link Focus */
a:focus-visible {
  outline: 2px solid #007185;
  outline-offset: 2px;
  border-radius: 2px;
}

/* Input Focus */
.input-field:focus {
  outline: none;
  border-color: #E77600;
  box-shadow: 0 0 0 3px rgba(228, 121, 17, 0.5);
}

/* Card Focus */
.product-card:focus-within {
  outline: 2px solid #E77600;
  outline-offset: 2px;
}

Interactive States

css/* Button States */
.btn {
  /* Default */
  background-color: #FFD814;
  cursor: pointer;
}

.btn:hover {
  background-color: #F7CA00;
}

.btn:active {
  background-color: #F0C14B;
  transform: scale(0.98);
}

.btn:disabled {
  background-color: #E7E9EC;
  color: #8D9096;
  cursor: not-allowed;
  opacity: 0.6;
}

/* Link States */
.link {
  color: #007185;
  text-decoration: none;
}

.link:hover {
  color: #C7511F;
  text-decoration: underline;
}

.link:visited {
  color: #0066C0;
}

.link:active {
  color: #C7511F;
}

Color Contrast Requirements

ElementForegroundBackgroundRatio
Body Text#0F1111#FFFFFF18.1:1
Secondary Text#565959#FFFFFF7.0:1
Links#007185#FFFFFF5.0:1
Primary Button#0F1111#FFD81410.4:1
Header Text#FFFFFF#13192116.8:1

ARIA Labels

html<!-- Star Rating -->
<div role="img" aria-label="4.5 out of 5 stars" class="star-rating">
  <!-- stars -->
</div>

<!-- Add to Cart Button -->
<button aria-label="Add Product Name to cart">
  Add to Cart
</button>

<!-- Quantity Selector -->
<div role="group" aria-label="Quantity selector">
  <button aria-label="Decrease quantity">-</button>
  <input type="number" aria-label="Quantity" value="1">
  <button aria-label="Increase quantity">+</button>
</div>

<!-- Prime Badge -->
<span role="img" aria-label="Prime eligible">
  <img src="prime-logo.svg" alt="">
</span>

<!-- Navigation -->
<nav aria-label="Product categories">
  <!-- nav items -->
</nav>

<!-- Search -->
<form role="search" aria-label="Search Amazon">
  <input type="search" aria-label="Search products">
  <button type="submit" aria-label="Submit search">
    Search
  </button>
</form>

Keyboard Navigation

css/* Skip Link */
.skip-link {
  position: absolute;
  top: -40px;
  left: 0;
  background: #000;
  color: #FFF;
  padding: 8px 16px;
  z-index: 100;
}

.skip-link:focus {
  top: 0;
}

/* Tab Order Indicators */
[tabindex]:focus-visible {
  outline: 2px solid #E77600;
  outline-offset: 2px;
}

Screen Reader Support

css/* Visually Hidden (for screen readers) */
.sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Live Regions */
[aria-live="polite"] {
  /* Announces changes at next convenient moment */
}

[aria-live="assertive"] {
  /* Announces changes immediately */
}

Reduced Motion

css@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
}

Form Validation States

css/* Error State */
.input-error {
  border-color: #B12704;
  box-shadow: 0 0 0 3px rgba(177, 39, 4, 0.2);
}

.error-message {
  color: #B12704;
  font-size: 12px;
  margin-top: 4px;
  display: flex;
  align-items: center;
  gap: 4px;
}

/* Success State */
.input-success {
  border-color: #067D62;
}

.success-message {
  color: #067D62;
  font-size: 12px;
  margin-top: 4px;
}

/* Warning State */
.input-warning {
  border-color: #F0AD4E;
  background-color: #FFF9E6;
}

E-Commerce Specific Patterns

Price Display Patterns

css/* Standard Price */
.price-block {
  display: flex;
  align-items: baseline;
  gap: 8px;
}

.current-price {
  font-size: 28px;
  color: #0F1111;
}

.current-price .symbol {
  font-size: 14px;
  vertical-align: top;
}

.current-price .fraction {
  font-size: 14px;
  vertical-align: top;
}

/* Deal Price */
.deal-price {
  color: #B12704;
}

.original-price {
  font-size: 14px;
  color: #565959;
  text-decoration: line-through;
}

.savings {
  color: #B12704;
  font-size: 14px;
}

Shipping Information

css.shipping-info {
  font-size: 14px;
  color: #0F1111;
}

.free-shipping {
  color: #067D62;
  font-weight: 700;
}

.delivery-date {
  font-weight: 700;
}

.delivery-fastest {
  color: #067D62;
}

Buy Box Pattern

css.buy-box {
  border: 1px solid #DDD;
  border-radius: 8px;
  padding: 16px;
  background: #FFFFFF;
}

.buy-box-price {
  font-size: 28px;
  margin-bottom: 8px;
}

.buy-box-shipping {
  font-size: 14px;
  margin-bottom: 12px;
}

.buy-box-stock {
  color: #067D62;
  font-size: 18px;
  margin-bottom: 16px;
}

.buy-box-buttons {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

Filter Sidebar Pattern

css.filter-section {
  border-bottom: 1px solid #EAEDED;
  padding: 12px 0;
}

.filter-title {
  font-size: 14px;
  font-weight: 700;
  color: #0F1111;
  margin-bottom: 8px;
}

.filter-option {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 4px 0;
  font-size: 14px;
  color: #0F1111;
  cursor: pointer;
}

.filter-checkbox {
  width: 18px;
  height: 18px;
  accent-color: #FF9900;
}

Cart Item Pattern

css.cart-item {
  display: grid;
  grid-template-columns: 180px 1fr auto;
  gap: 16px;
  padding: 16px 0;
  border-bottom: 1px solid #EAEDED;
}

.cart-item-image {
  width: 180px;
  height: 180px;
  object-fit: contain;
}

.cart-item-details {
  display: flex;
  flex-direction: column;
  gap: 8px;
}

.cart-item-actions {
  display: flex;
  align-items: center;
  gap: 8px;
  font-size: 13px;
}

.cart-item-action-link {
  color: #007185;
  cursor: pointer;
  padding: 0 8px;
  border-right: 1px solid #DDD;
}

.cart-item-action-link:last-child {
  border-right: none;
}

Checkout Progress

css.checkout-progress {
  display: flex;
  justify-content: center;
  gap: 0;
  margin-bottom: 24px;
}

.progress-step {
  display: flex;
  align-items: center;
  font-size: 13px;
  color: #565959;
}

.progress-step.active {
  color: #C7511F;
  font-weight: 700;
}

.progress-step.completed {
  color: #067D62;
}

.progress-divider {
  width: 40px;
  height: 2px;
  background: #EAEDED;
  margin: 0 16px;
}

.progress-divider.completed {
  background: #067D62;
}

Use it with your agent

Save the file as DESIGN.md in your project root, then ask your agent to follow it for UI work. Or let the agent fetch it over MCP.

Download

curl -o DESIGN.md https://www.uiskillbook.com/design-md/amazon.md

MCP server

https://www.uiskillbook.com/mcp

MCP tool call

get_design_md({ "slug": "amazon" })