DESIGN.md · Analysis

FoodBridge

foodbridgeng.com · 13 May 2026 · 47 colors · Montserrat

FoodBridge

FoodBridge is a Nigerian food e-commerce platform delivering affordable, quality staples with buy-now-pay-later financing. The design system emphasizes trust, accessibility, and neighborhood-scale commerce through a vibrant, approachable aesthetic.

Colors

surface#ffffff
surface-dim#f8f8f8
surface-bright#ffffff
surface-container-lowest#f6f6f6
surface-container-low#f5f5f5
surface-container#f0f0f0
surface-container-high#e9ecef
surface-container-highest#e0e0e0
on-surface#020817
on-surface-variant#4a4a4d
inverse-surface#1a1a1a
inverse-on-surface#f5f5f5
outline#a4afaf
outline-variant#d6d6d6
surface-tint#03350b
primary#03350b
on-primary#ffffff
primary-container#daf2de
on-primary-container#001d06
inverse-primary#a4d9a8
secondary#ff8c42
on-secondary#ffffff
secondary-container#ffe4cc
on-secondary-container#4a2200
tertiary#0099cc
on-tertiary#ffffff
tertiary-container#d6ebea
on-tertiary-container#003d4d
error#d32f2f
on-error#ffffff
error-container#ffebee
on-error-container#5f0000
primary-fixed#daf2de
primary-fixed-dim#b8dfc0
on-primary-fixed#001d06
on-primary-fixed-variant#02240a
secondary-fixed#ffe4cc
secondary-fixed-dim#ffb88a
on-secondary-fixed#3d1500
on-secondary-fixed-variant#662200
tertiary-fixed#d6ebea
tertiary-fixed-dim#a8d5d3
on-tertiary-fixed#001f26
on-tertiary-fixed-variant#003d4d
background#ffffff
on-background#020817
surface-variant#e8e8e8

Typography

display
fontFamily: Montserrat · fontSize: 60px · fontWeight: 700 · lineHeight: 68px · letterSpacing: -0.04em
headline-lg
fontFamily: Montserrat · fontSize: 48px · fontWeight: 700 · lineHeight: 56px · letterSpacing: -0.02em
headline-md
fontFamily: Montserrat · fontSize: 32px · fontWeight: 600 · lineHeight: 40px · letterSpacing: -0.01em
title-lg
fontFamily: Montserrat · fontSize: 20px · fontWeight: 600 · lineHeight: 28px · letterSpacing: 0em
body-lg
fontFamily: Montserrat · fontSize: 18px · fontWeight: 400 · lineHeight: 28px · letterSpacing: 0em
body-md
fontFamily: Montserrat · fontSize: 16px · fontWeight: 400 · lineHeight: 24px · letterSpacing: 0em
label-md
fontFamily: Montserrat · fontSize: 14px · fontWeight: 600 · lineHeight: 20px · letterSpacing: 0.01em
label-sm
fontFamily: Montserrat · fontSize: 12px · fontWeight: 500 · lineHeight: 16px · letterSpacing: 0.02em

Design guidance

Overview

FoodBridge is a neighborhood-scale food commerce platform serving Lagos and surrounding regions, enabling households and institutions to access affordable staples with flexible financing. The design system embodies 'Accessible Optimism'—a visual language that combines the trust and stability of deep forest green with vibrant secondary accents (warm orange, sky blue) to convey reliability, community, and forward momentum. The UI prioritizes clarity and directness: every interaction surface is legible at a glance, every CTA is unmistakable, and the color palette reflects the physical warmth of a neighborhood market translated into digital space.

The brand voice is conversational, practical, and locally grounded. FoodBridge speaks to users as neighbors, not customers—the tone avoids corporate jargon and instead uses concrete, benefit-driven language. Example sentence: 'Your order arrives tomorrow morning, and you pay next week when you're ready.'

Colors

The color system is anchored by a deep forest green primary (#03350b) used exclusively for CTAs, active states, and brand-critical interactions. This green is not merely decorative; it signals trust and growth in a Nigerian context, evoking both agricultural heritage and financial stability. Secondary accents include a warm orange (#ff8c42) for highlights, promotions, and secondary actions, and a sky blue (#0099cc) for informational elements and delivery status. The surface stack uses a near-white base (#ffffff) with carefully calibrated grays (from #f8f8f8 to #4a4a4d) to establish hierarchy without introducing color noise. All interactive elements use the primary green for focus states: input fields receive a 3px rgba(3, 53, 11, 0.1) shadow on focus, buttons transition from #03350b to #02

Typography

The type system uses Montserrat exclusively, a geometric sans-serif that conveys both friendliness and professionalism—essential for a fintech-adjacent commerce brand. Display (60px, 700 weight, -0.04em tracking) anchors hero sections and major announcements; headline-lg (48px, 700 weight) drives section titles and card headers; body-md (16px, 400 weight, 24px line-height) forms the backbone of product descriptions and instructional copy. Label-md (14px, 600 weight, 0.01em tracking) is applied to all button text and form labels to ensure crisp legibility at small sizes. When displaying small labels over busy product imagery or colored backgrounds, apply text-shadow: 0 2px 4px rgba(0, 0, 0, 0.15) to maintain contrast. The 700-weight variant is reserved for CTAs and emphasis; 600-weight is u

Layout

The page layout follows a 12-column grid with a max-width of 1280px, centered on the viewport. The hero section spans full-width with a 50/50 split: left side (dark green background, #03350b) contains headline and CTAs; right side features product imagery. Section spacing uses the lg token (40px) for major breaks between features, md (24px) for subsection separation, and sm (12px) for internal card padding. The gutter (24px) is applied consistently to all container edges on desktop, reducing to md (24px) on tablet and sm (12px) on mobile. Product cards are arranged in a 3-column grid on desktop, 2 columns on tablet, 1 column on mobile, with md (24px) gap between cards. The container-max-width of 1280px ensures readability on ultra-wide displays while maintaining focus on content. Whitespac

Elevation & Depth

Depth is achieved through a restrained shadow system that avoids the heavy drop-shadows of older e-commerce designs. Level 1 (Base): no shadow; surface is the ground truth. Level 2 (Cards, inputs): box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), applied to all .card and .input-field elements. Level 3 (Modals, popovers, elevated cards on hover): box-shadow: 0 16px 40px rgba(0, 0, 0, 0.12). On focus, interactive elements receive an additional inner ring: box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08), 0 0 0 3px rgba(3, 53, 11, 0.1). Transitions between shadow states occur over 200ms using ease timing. N

Shapes

The shape philosophy is 'Friendly Precision'—rounded corners signal approachability while maintaining geometric clarity. Buttons use md (0.75rem / 12px) border-radius, creating a soft-edged rectangle that feels welcoming without appearing childish. Cards and containers use lg (1rem / 16px) for a slightly more generous curve that distinguishes them from buttons. Input fields use DEFAULT (0.5rem / 8px) for a subtle, professional appearance. Chips and badges use full (9999px) for a pill shape, reinforcing their role as discrete, selectable elements. The sm (0.25rem / 4px) radius is reserved for s

Components

Action Elements Buttons are the primary interaction surface. The button-primary component uses the primary green (#03350b) background with white text, md (12px) border-radius, and 12px 24px padding, resulting in a 48px height. On hover, the background darkens to #02240a over 200ms; on focus, add a 3px outline in rgba(3, 53, 11, 0.2). The button-secondary variant inverts this: white background with a 2px primary green border, green text, and the same dimensions. On hover, the background fills with primary-container (#daf2de). Button-ghost removes the border and background, using only text color (primary green) with a transparent background; on hover, the background becomes surface-container-high (#e9ecef). All button text uses label-md typography (14px, 600 weight).

Containers & Su

Do's and Don'ts

**Do**

  • Do use primary green (#03350b) exclusively for CTAs and primary interactions—it is the most trusted color in the system and must never be diluted or overused.
  • Do maintain at least 24px (md spacing) between major content sections to preserve visual breathing room and reduce cognitive load.
  • Do apply the 200ms ease transition to all state changes (hover, focus, active) to create a sense of responsive, intentional interaction.
  • Do use Montserrat 700 weight only for headlines and button text; never apply it to body copy, which must remain 400 weight for legibility.
  • Do ensure all interactive elements have a visible focus state with a 3px outline or shadow in rgba(3, 53, 11, 0.1) for keyboard navigation accessibility.

**Don't**

  • Don't use the secondary orange (#ff8c42) or tertiary blue (#0099cc) as primary CTAs; these are supporting accents only and will dilute the primary green's authority.
  • Don't apply shadows heavier than 0 16px 40px rgba(0, 0, 0, 0.12); deeper shadows create visual clutter and contradict the system's clarity-first philosophy.
  • Don't use border-radius values outside the defined scale (sm, DEFAULT, md, lg, xl, full); custom radii break the geometric consistency that makes the system recognizable.
  • Don't collapse vertical spacing below 16px between distinct content blocks; whitespace is a design tool, not wasted real estate.
  • Don't mix typefaces or use system fonts as fallbacks; Montserrat is the sole typeface and must load reliably via @font-face or Google Fonts.