Hopper Mobile — design system & UI screens
A travel search interface with segmented category tabs (Stays, Flights, Cars), a location search bar with trip details, promotional carousel for deals, and a curated grid of destination cards with discount badges and lifestyle copy. Official App Store listing screenshot.
This is a static, crawlable rendering for search & AI engines. The interactive version — filters, live decode console, copy & export — is at https://mozaika.design/website/hopper-mobile.
Decoded design system
Hopper Mobile's decoded design system: background #FFFFFF, text #000000, accent #01AAE4, link #01AAE4, primary #01AAE4; type scale h1 34px / h2 22px / body 17px; 4px spacing base; 12px base radius. The single interactive/action color is #01AAE4 — used only on interactive or must-notice elements (buttons, links, key highlights), never on large fills.
Color roles
| Role | Value |
|---|---|
| bg | #FFFFFF |
| surface | #EFEFEF |
| border | #D8D8D8 |
| text | #000000 |
| text_muted | #606060 |
| primary | #01AAE4 |
| accent | #01AAE4 |
| link | #01AAE4 |
| button_bg | #01AAE4 |
| button_text | #FFFFFF |
Using these colors
- Action color
#01AAE4— the single interactive color; only on things you click or must notice, never large fills. primary,accent,link,button_bgare all#01AAE4— one role, not several (the action color).- accent
#01AAE4— THE accent / action color — interactive & must-notice only (buttons, links, focus, one key highlight); never large fills or backgrounds. Scarcity is what makes it read as designed.
Typography
- h1: 34px
- h2: 22px
- body: 17px
Spacing
- base unit: 4px
- scale: 4px, 6px, 8px, 10px, 12px, 16px, 20px, 24px, 25px, 32px
Radii
- base: 12px
- button: 12px
Shadows (elevation)
- card:
rgba(0, 0, 0, 0.25) 0px 4px 26px -7px
Motion
Micro-interactions run at 250ms (dominant) with cubic-bezier(0.77, 0, 0.18, 1).
- durations: 250ms · 300ms · 200ms
- easings:
cubic-bezier(0.77, 0, 0.18, 1)·cubic-bezier(0.17, 0.84, 0.44, 1) - animated properties: background-color, color, box-shadow, border-color
Native design tokens
| Token | Value |
|---|---|
--white | #fff |
--black | #000 |
--gray-05 | #f5f5f5 |
--gray-10 | #e7e7e7 |
--gray-20 | #d9d9d9 |
--gray-30 | #c3c3c3 |
--gray-40 | #aaa |
--gray-50 | #939393 |
--gray-60 | #767676 |
--gray-70 | #545454 |
…and 110 more measured on the page.
Button states (measured)
- primary hover: background
#00290F - primary focus: box-shadow
rgb(242, 250, 235) 0px 0px 0px 2px, rgb(0, 45, 17) 0px 0px 0px 4px
Motion choreography (measured)
Load order: input.MuiInputBase-input×10 → select.MuiNativeSelect-select×2 → div.MuiStack-root → div.MuiStack-root → div.MuiStack-root×2 → div.MuiStack-root
Input (measured)
height 23px · radius 0px
Responsive (measured)
- breakpoints: 375px · 480px · 744px · 992px · 1200px
- mobile (390px): nav inline
Full design system, per-section tokens & DESIGN.md / Tailwind / CSS exports →