FluffyPet · Design Book

Five colors,
one quiet glass,
one chunky voice.

A WGSN-inspired palette on minimal Airbnb-style glass — paired with the FluffyPet display voice (Bricolage Grotesque 800) and an ink-led action system. Built mobile-first for the emotional bond between people and their animals.

Verified vets & clinicsCommunity feeding updatesLost, rescue & emergencyAdoption & NGO support

01 — Philosophy

Color as emotion, glass as quiet.

Emotional first

Pets are family. Every hue carries a feeling — trust, play, affection, health, home — never decoration.

One hue per surface

60% neutral, 30% one brand hue, 10% accent. Never mix more than two brand hues in a single component.

Persona-tuned

Vets lean Blue+Green. Shelters lean Clay+Green. Owners lean Blue+Pink. Same system, different temperatures.

02 — Palette

Five colors, each with a job.

Extracted from the FluffyPet brand image. Each color has a base, a soft tint (for surfaces) and a deep variant (for text + small marks on light backgrounds). Use semantic tokens — never the raw brand vars inside product code.

Luminous Blue

#1F4CFF

Info · links · medical reference

Vets · clinics · admins

oklch(0.52 0.24 268)

Use for
Inline links, info chips, medical record accents — NOT primary CTAs
Avoid
Primary buttons or hero CTAs — those are Ink (dark olive-green). Avoid large brand surfaces.

Energy Orange

#FF6A2A

Play · warmth · appetite

Shops · owners · activity

oklch(0.70 0.20 45)

Use for
Adoption CTAs, playtime, food/treats, badges
Avoid
Body text on white (use -deep), or with Pink in same surface

Pop Pink

#FF8FBF

Affection · bonding · social

Owners · breeders · community

oklch(0.78 0.16 350)

Use for
Favorites, likes, profile flourishes, breeder badges
Avoid
Stating clinical/medical facts — feels frivolous

Meadowland

#9BB24A

Wellness · nature · growth

Nutrition · outdoors · NGOs

oklch(0.72 0.13 120)

Use for
Health states, nutrition, walks, success confirmations
Avoid
Pure error/warning — that's destructive red

Clay

#B86B55

Comfort · home · earthy trust

Shelters · hostels · NGOs

oklch(0.58 0.11 35)

Use for
Shelter listings, foster homes, long-form editorial
Avoid
Bright playful CTAs — that's Orange

Pairings — combine in twos

Calm + Spark

Luminous Blue + Energy Orange

Trust grounds the action; orange invites the tap. Default CTA pair.

Bond + Home

Pop Pink + Clay

Affection on an earthy frame — perfect for breeder & adoption stories.

Field + Hearth

Meadowland + Clay

Outdoor wellness meets shelter warmth. NGO and outdoor-living surfaces.

Clinic + Calm

Luminous Blue + Meadowland

Medical clarity with a living pulse. Vet dashboards & health records.

Heart + Head

Pop Pink + Luminous Blue

Owner emotion balanced by reliable structure. Profile + appointments.

The 60 / 30 / 10 rule

60% — neutral surface
30% — brand hue
10%
One dominant brand hue per screen. The accent fires only for the single most important next action.

Semantic mapping

Ink

--primary

Default CTA — high-trust action

Energy Orange

--accent

Playful CTA, adoption

Luminous Blue

--info

Links, vet/medical, info

Meadowland (deep)

--success

Confirmations

Pop Pink

--affection

Favorites, social

Clay

--earth

Shelter, editorial

Orange

--warning

Soft warnings

Red

--destructive

Destructive only

Neutrals (12-step)

0
1
2
3
4
5
6
7
8
9
10
11

Shadows · elevation

shadow-sm
shadow-md
shadow-lg
shadow-xl
shadow-glow

03 — Geometry

φ, the 4pt grid & concentric corners.

Spacing scale (φ-informed)

space-1
4px
space-2
8px
space-3
12px
space-4
16px
space-5
24px
space-6
40px
space-7
64px
space-8
104px

Radius scale & concentricity

4
radius-xs
8
radius-sm
12
radius-md
20
radius-lg
32
radius-xl
44
radius-2xl

inner = outer − padding · outer=32 padding=16 → inner=20

Concentric

Golden ratio composition (φ ≈ 1.618)

image · 1.618
text · 1

04 — Typography

Bricolage 800 for voice, Inter for everything else.

Display is Bricolage Grotesque 800 — a chunky, slightly humanist grotesque that gives the brand its emotional punch. UI text stays on Inter 400–600 so density never fights the headline.

Display · Bricolage 800

Care for animals.

Whether they're yours or not.

display-xl · display

84px · 800

FluffyPet

display-lg · display

56px · 800

Find your vet

text-4xl · display

40px · 700

Adopt today

text-2xl · display

28px · 700

Page title

text-xl · display

22px · 600

Section heading

text-lg · text

18px · 500

Subheading

text-md · text

17px · 400

Lead paragraph copy

text-base · text

15px · 400

Body — clean, calm, generous line-height.

text-sm · text

13px · 500

Footnote label

text-xs · text

11px · 600

CAPTION META

05 — Surfaces

Large brand canvases, inset from the edge.

The homepage proved a rule: emotional pages need a big rounded brand-hue canvas, not a full-bleed white page. Canvases live inside the safe-area, carry the chunky display, and host an ink CTA. One canvas per screen — never stack two.

Green (default)

Care for animals.

Homepage, community, outdoor

Pink

Care for animals.

Owner profile, social, breeders

Orange

Care for animals.

Adoption stories, shop launches

Blue

Care for animals.

Vet booking, medical journeys

Clay

Care for animals.

Shelter, NGO, foster

Cream

Care for animals.

Editorial / long-read

Rules

  • • Inset the canvas 12–16px from the viewport on mobile, more on desktop.
  • • Radius is always --radius-2xl (40px) — concentric with inner cards at 20–24.
  • • Display text sits at --foreground, never tinted.
  • • Primary CTA is --primary (ink). Secondary is solid white.
  • • Mascot / 3D illustration is welcome — keep on a paler inner card (white/40).

06 — Mobile-native

Phone-first. The web app is a native shell.

99%+ of FluffyPet sessions are on a phone. Every layout starts at 360–414 wide, uses safe-area insets, 44pt tap targets, glass tab bar, bottom sheets, and a sticky CTA dock. Desktop is a centered version of the same shell — never the source of truth.

9:41100%

Hi, Aanya

Care, together

Care for animals.

Mochi

Vaccine due

Biscuit

Adoptable

Pepper

Checkup

Safe area

.safe-top · .safe-bottom · .safe-x

Wraps notch, dynamic island, and home indicator on iOS.

Tap target

.tap-target

Min 44×44px. Apply to every icon button, chip, tab.

Tab bar

.tab-bar

Fixed bottom, glass-regular, safe-area aware. 4–5 destinations max.

Bottom sheet

.sheet · .sheet-handle

Top-radius 40px, slide-up, 36×4 handle. Replace desktop modals.

Sticky CTA dock

.cta-dock

Persistent primary action above the tab bar with fade to bg.

Press feedback

.pressable

scale(0.97) + opacity on :active. Native iOS tap feel.

Thumb-zone

Primary actions live in the bottom 1/3 of the screen — reachable by thumb.

One H1 per screen

Display-lg, not display-xl, on mobile. xl is for splash/marketing only.

Lists over grids

Single-column scrollable feeds beat multi-column grids on phone.

07 — App shell

One header. Three pillars. One search that morphs.

Inspired by Airbnb's unified header: FluffyPet offers Care (service providers), Community (people & NGOs), and Shop (e-commerce) — but the user never feels three apps. Logo left, account right, centered pill tabs, one search bar that morphs its fields per pillar. On scroll it collapses to a compact pill. On mobile it becomes a single search chip that opens a bottom sheet, with primary nav living in a fixed tab bar.

Desktop · expanded

Resize to ≥768px to preview the desktop header.

Desktop · scrolled (collapsed)

The whole search summary becomes a single tappable pill. Click to re-expand.

Mobile · compact pill + search sheet + tab bar

9:41100%

FluffyPet

Care, together

Book a vet visit

9:41100%

What are you looking for?

Pillar accents

Care = Meadowland Green · Community = Pop Pink · Shop = Energy Orange. Used only as a 3px tab underline — never as the CTA.

Search morphs, shell doesn't

Same rounded pill, same Ink CTA, same proportions. Only the fields change per pillar — like Airbnb's stays/experiences.

Mobile-first collapse

Phone shows just the compact pill + tab bar. Tapping opens a full bottom sheet with the same segmented control and stacked inputs.

07 — Materials

Quiet glass over real content.

Regular Glass

Nav, sheets, cards

72% white, 20px blur, subtle 1px highlight.

Clear Glass

Over media

45% white, 12px blur — for photos, video, maps.

BlueOrangePinkGreenClay
Book a vet

Never stack glass on glass. Confirmations and forms use opaque surfaces — glass is for navigation and discovery, not trust-critical actions.

08 — Motion

Springs, not eases.

spring-snappy

0.30 / 0.85

Button press, tab switch

spring-default

0.45 / 0.85

Sheet, menu morph

spring-soft

0.55 / 0.90

Drawer, reveal

spring-bounce

0.50 / 0.70

Success, confetti

Apple defaults: response 0.5, dampingFraction 0.825. Reduce Motion → opacity crossfade, dampingFraction → 1.0.

09 — Iconography

Lucide, stroke 1.75.

icon-xs · 14px
icon-sm · 18px
icon-md · 22px
icon-lg · 28px
icon-xl · 44px

10 — Components

Blueprints in action.

Buttons — one per persona

Input

Visible on your public pet profile.

Status chips — semantic, not decorative

VaccinatedVaccine dueLost2 yrsLovedShelter

Toast

Saved to favourites

You can find Mochi in your favourites tab.

Pet card — tinted per context

Mochi

Shiba Inu · 2 yrs

Vaccinated

$45 / visit

Biscuit

Golden Retriever · 5 yrs

Adoptable

$45 / visit

Pepper

British Shorthair · 3 yrs

Shelter

$45 / visit

11 — Accessibility

Contrast, motion, focus.

Contrast

4.5:1 body, 3:1 ≥18pt or bold. Pink and Orange need -deep variants for text on white.

Reduce Motion

Springs critically damped, parallax removed, morphs → crossfade.

Reduce Transparency

Glass becomes opaque card surface, backdrop-filter dropped via media query.

3px ring · offset 2px · follows element curvature.

12 — Sub-theme

Pet Profile · Warm Cream Bento.

A scoped sub-theme applied via the .pet-profile-theme class on /pets/$id. Cream surfaces, espresso ink, clay + sage accents, Space Grotesk display + DM Sans body. Use the .pp-* utility classes inside the theme — do not leak these tokens outside the profile page.

Tokens

Page surface

--pp-cream

#FAF6F0

Card surface

--pp-cream-2

#F2EBDD

Ink / text

--pp-espresso

#1F1B16

Primary accent

--pp-clay

#E07A3C

Accent card

--pp-clay-soft

#FBE6D6

Wellness accent

--pp-sage

#2F6F5E

Wellness card

--pp-sage-soft

#D9E8E2

Alert / emergency

--pp-rose

#C4564B

Alert card

--pp-rose-soft

#F7DAD5

Hairline

--pp-line

#E6DFD1

Muted text

--pp-muted

#6E665B

Typography

Eyebrow · Space Grotesk

Display · Space Grotesk 700

Body copy renders in DM Sans. Quiet, geometric, with generous line-height for long-form records and timeline content.

Muted note · DM Sans 14

Bento card variants

default

BentoCard

Cream-2 surface

accent

BentoCard

Clay-soft

sage

BentoCard

Wellness

rose

BentoCard

Alerts / emergency

Actions

Pill · status
Used by PetProfileBento, BentoCard, AnchorNav, and the overview cards in src/components/pets/profile/. Scope every utility to .pet-profile-theme in src/styles.css.
FluffyPet Design Book · spec lives in docs/design-system.md