DESIGN SYSTEM

Pantry: everything Platewise is made from.

Pantry is the kit behind every Platewise surface: the landing page, the app, social and email. One set of tokens, a handful of components, and rules for keeping the food the loudest thing on screen.

57design tokens
8components
AAcontrast

Principles

Four rules for deciding between two good options.

01

The food is the hero

Interface stays white and quiet so the plate and its numbers carry the colour. No decoration that competes with the scan.

02

One action per screen

Every view has one thing it wants you to do, in one green or ink button. Everything else is secondary.

03

Numbers you can trust

Real units on every value, tabular figures, and the macro colours never change meaning.

04

Kind about food

Celebrate habits, not weight. No red for “over”, no guilt, no good and bad foods.

Colour

Five groups, all from one CSS file. Click a chip to copy its hex.

Core

Ink carries text and dark surfaces. Muted is for supporting copy.

Surfaces

White first. Tints appear one per card, never side by side in the same hue.

Green

One hue, five jobs. Green fills, green-btn sits under white text, green-d and green-ink are the only green text.

Macros and accents

Macro colours are fixed: protein violet, carbs sun, fat coral. They appear only inside data.

On colour

Secondary text that sits on green and ink fills.

Contrast

Every text pair meets WCAG AA (4.5:1). These are the approved pairs, and the three that look fine but fail.

SampleTextOnRatioResult
Aa--ink--bg17.2:1AA pass
Aa--muted--bg5.5:1AA pass
Aa--green-d--bg4.5:1AA pass
Aa--green-ink--mint5.8:1AA pass
Aawhite--green-btn5.4:1AA pass
Aa--on-green--green-btn4.9:1AA pass
Aa--lime--ink13.3:1AA pass
Aa--on-dark-muted--ink8.7:1AA pass
Aawhite--green2.6:1fail · don't use
Aa--green-d--mint4.0:1fail · don't use
Aa--lime--bg1.3:1fail · don't use

Typography

Plus Jakarta Sans, 400 to 800. Display sizes are fluid between phone and desktop.

Displaydisplay-hero66px · 800 / 1.04 / −4.5%
Know every calorie.
CTAdisplay-cta56px · 800 / 1.05 / −4%
Your first scan.
Headingdisplay-section52px · 800 / 1.08 / −3%
Plate to progress
Statstat58px · 800 / 1.0 / −4%
1.2s
Card titlecard-title21px · 800 / 1.2 / −2%
Macros, beautifully broken down
Ledelede19px · 400 / 1.55 / 0
Take a photo of any meal.
Bodybody15px · 500 / 1.55 / 0
Unlimited AI photo scans and a personal coach.
Kickerkicker13px · 800 / caps / +14%
HOW IT WORKS
Data labeldata-label12px · 800 / tabular
Salmon · 367 kcal

Spacing & layout

Content sits in a 1200px wrap with 24px gutters. Card grids use a 20px gap; sections breathe at 110–120px.

gap-xs8pxIcon to label, chips
gap-sm12pxButton rows, macro grid
gap-md20pxCard grids
gutter24pxPage sides
pad-card28pxCard padding
pad-plan32pxPlan padding, hero CTA gap
head-gap56pxSection head to content
section110pxSection padding

Radius & elevation

Soft and friendly. Anything you can press is a pill. Shadows are kept for things that float above the page.

Radius

radius-xs · 8pxLabels
radius-sm · 14pxStore buttons
radius-md · 18pxFloating cards
radius · 24pxCards
radius-plan · 28pxPlans
radius-cta · 40pxBands
radius-pill · fullButtons, pills

Elevation

flatInline content, tables
shadowHovered cards
shadow-btnGreen buttons
shadow-lgFloating objects

Iconography

24px grid, 2.2–2.4px stroke, round caps and joins. Icons share the geometry of the viewfinder mark.

logo
scan
check
plus
mic
activity
streak

Motion

Motion explains the product: the scan animates, chrome doesn't. The first screen is never hidden behind an entrance animation, and everything respects reduced-motion settings.

TokenValueUse
dur-fast200msHover, press, colour
dur-reveal800msBelow-the-fold fade up (28px)
dur-float6–7sFloating cards and phone bob
dur-scan7s loopScan line, boxes, macro fill
ease-outcubic-bezier(.2,.7,.2,1)Reveals, hover lifts

Macro visualisation

Protein is always violet, carbs sun, fat coral. Every bar carries its label and value; colour never works alone. Progress toward a goal is green, never red.

Protein 42g
Carbs 61g
Fat 38g

Macro bars · 7px · track #EEF2F4

Donut · 16px stroke · 3% gaps

M
T
W
T
F
S
S

Weekly bars · today in Green · goal dashed

Button

One primary per view. Action green is for the thing the page exists for; Ink is the nav and dark-ground primary; Ghost is everything secondary.

DefaultHoverFocusDisabled
Action
Ink
Ghost
Height 48Padding 14 × 24Radius pillLabel 15 / 700Focus 3px green-btn ring, 3px offsetHover lift 2px, darker fill

Store buttons

The landing page's one call to action. Always App Store first, always as a pair, never beside another primary.

Fill inkRadius 14Padding 10 × 18Label 10 / 600 over 16 / 700

Detection label

The signature component. A box snaps around each food after the scan line passes, labelled with the food and its calories.

New Eyebrow pill · green-ink on mint
Box 2px, radius 10Label 12 / 800, tabularSeparator middle dot ·Sequence 0.15s apartBox colour matches the food

Floating card

One small stat beside the phone. It may overlap the phone's frame, never the app content inside it. One per hero.

Daily calories 71%
1,420 / 2,000 kcal
Radius 18Shadow shadow-lgProgress green → limeMotion bob 12px / 6s

Bento card

A feature tile: tag, title, one line and a live visual. One dark lead card per grid; the rest take one tint each.

AI food recognition

Point, snap, done.

12,000+ foods and their portions, from one photo.

Macro breakdown

Macros, beautifully broken down

Protein, carbs, fat and 30+ micronutrients.

Weekly insights

Trends that actually help

Your week at a glance, against your goal.

Radius 24Padding 28Title 21 / 800Tag 11 / 800 capsHover lift 6px + shadow-lg

Plan card

Exactly one plan is highlighted. It goes dark, gets the lime badge and the green button.

Free

For curious eaters getting started.

$0/ month
Get started
  • 3 AI photo scans per day
  • Barcode scanning
Most popular

Pro

Unlimited scanning and a personal AI coach.

$9/ month
Start 14-day free trial
  • Unlimited AI photo scans
  • AI nutrition coach
Radius 28Padding 32Price 52 / 800, tabularBadge lime, ink text

Testimonial

Results describe habits and goals, never weight lost. One featured card per section, in Action green.

Hit protein 6 weeks straight
“I just take a picture. It's the first habit I've actually kept.”
MR
Maya R.Product designer
“It split my burrito bowl into 7 ingredients.”
DK
Daniel K.Software engineer

FAQ item

Native details and summary, so keyboards and screen readers work. One open at a time; open items turn soft and the plus turns on a lime disc.

How accurate is the calorie detection?

Platewise identifies foods with 98% accuracy in testing. Tap any item to adjust it.

Can I cancel anytime?

Yes, in two taps from your account settings.

Token reference

Every colour as a CSS custom property, defined once in app/globals.css.

TokenValueUse
--ink#0B1D26Text, dark surfaces
--ink-2#1E3340Nav links, quotes
--muted#5B6B75Ledes, card copy
--logo-grey#65747DLogo strip only
--line#E4EBEEHairlines, borders
--bg#FFFFFFPage, raised cards
--soft#F4F8F5Quiet cards, open FAQ
--cream#FFF8EEWarm card
--mint#DDF7EAGreen tint, chips
--tint-sky#EEF4FFBarcode card
--tint-violet#F4F0FFVoice card
--tint-coral#FFF1ECIntegrations card
--green#12B76ALogo, charts, progress
--green-d#08875AText on white only
--green-btn#077A51Buttons, green bands
--green-btn-hover#06623FHover, pressed
--green-ink#066B47Text on tints
--lime#C8F169Highlight, scan line
--violet#7B61FFProtein, voice
--sun#FFC940Carbs, stars
--coral#FF7A59Fat, streaks
--sky#3BA7FFIntegrations
--track#EEF2F4Empty bars
--on-green#E6FAEFBody on action green
--on-dark-muted#A9BDB6Body on ink