Skip to content
Back to Explore

Odyssey

Sunlit coral UI — airy, photo-led, friendly.

Plus Jakarta Sans24 colors8 specs◐ Light & dark

Overview

Odyssey is a photography-led consumer identity for imagery-first product surfaces. The base canvas is pure white (#ffffff) with deep near-black ink (#222222) for headlines and body, and a single voltage of Coral (#D83752) carrying every primary CTA, the search-button orb, the heart save state, and inline brand links. There is no secondary primary color in mainline marketing — the Atlas purple (#460479) and Harbor magenta (#92174d) tokens are sub-primary accents that only appear inside Odyssey Atlas / Harbor contexts.

Type runs Plus Jakarta Sans at modest weights: display headlines render at 22–28px in weight 500–700 rather than relying on oversized, heavy type. Photography, content cards, and generous white space carry visual weight while the text stays conversational.

The shape language is soft. Buttons are 8px radius , content cards are ~14px , the search bar is fully pill-shaped , wishlist hearts and search orbs are circles , and category strip rounded corners run at 32px . There is essentially no hard corner anywhere except the body grid itself — every interactive element is rounded.

Key Characteristics:

  • Single accent color: (#D83752 — "Coral") carries every primary CTA, the search orb, the heart save state, and the wordmark. Used scarcely — most pages are 90% white + ink with one or two Coral moments.
  • Custom variable type: Plus Jakarta Sans. Display weights sit at 500–700, body at 400. Modest weight is intentional — Odyssey trusts photography for visual heft.
  • Three-product top nav: three peer tabs — each with a hand-illustrated 32px icon and "NEW" badges on the two newer products. Active tab uses an underline rule .
  • Pill-shaped global search bar: white surface, fully rounded , divided by 1px hairlines into Where / When / Who segments, terminated by a circular Coral search orb .
  • Content cards are photo-first: aspect-ratio rectangles with corner clipping, swipeable image carousel, "Guest favorite" floating badge top-left, heart icon top-right, then 4–5 lines of meta beneath.
  • Editorial dropdowns (footer, language picker) are clean text columns over the white canvas — no card surface, no shadow.
  • The design system caps elevation at one shadow tier (box-shadow: rgba(0,0,0,0.02) 0 0 0 1px, rgba(0,0,0,0.04) 0 2px 6px, rgba(0,0,0,0.1) 0 4px 8px) — used on hover-floated cards and search/account dropdowns.
  • 8px base spacing system, with major sections at (64px) — generous but not airy enough to feel editorial-magazine; the browsing density wants more cards per scroll.

Colors

Light theme
Brand
Text
Surfaces & Borders
States
Groups
Dark theme
Surfaces
Text
Neutrals
Brand
Groups
Status

Typography

Type Scale

typography.rating-display
64px· 700

Design & Code

typography.display-xl
28px· 700

Power of AI

typography.display-lg
22px· 500

Course Library

typography.display-md
21px· 700

What's included

typography.display-sm
20px· 600

Component anatomy

typography.title-md
16px· 600

Build faster

typography.title-sm
16px· 500

Typography scale

typography.body-md
16px· 400

The quick brown fox

typography.body-sm
14px· 400

Design & Code

typography.caption
14px· 500

Power of AI

typography.caption-sm
13px· 400

Course Library

typography.badge
11px· 600

What's included

typography.micro-label
12px· 700

Component anatomy

typography.uppercase-tag
8px· 700

Build faster

typography.button-md
16px· 500

Typography scale

typography.button-sm
14px· 500

The quick brown fox

typography.link
14px· 400

Design & Code

typography.nav-link
16px· 600

Power of AI

rating display
64px

Course Library

Odyssey runs Plus Jakarta Sans for display, body, navigation, captions, and microcopy, with system-ui, sans-serif as fallback.

There is no separate display family. The variable font carries the entire scale.

Display weights stay modest. The primary discovery heading at 28px / 700 tucks under the search bar so photography and the card grid carry visual hierarchy. Detail headings at 22px / 500 are quieter still.

If Plus Jakarta Sans is unavailable, Inter is the closest open-source substitute. Adjust display headlines down by ~2% in line-height to match Plus Jakarta Sans's slightly tighter cap height; otherwise the proportions transfer cleanly.

Spacing

Base

unit: 4px (with 2px micro-step).

Section

padding (vertical): (64px) for major page bands; tighter than typical SaaS marketing (80–96px) because browse pages need higher card density per scroll.

Card

internal padding: (24px) for and ; (16px) for the property-card meta block; (8px) for caption / date-row gutters.

Gutters

(16px) between content cards; (24px) inside information columns; (4px) on dense category-strip dividers.

Max

content width: ~1280px for discovery surfaces. Detail views cap closer to 1080px to keep the photo banner and side rail readable.

Link

grid: Six columns at desktop; each cell holds a title in and a muted category label in .

Detail

view: 2-column with photo / feature body on the left (~64% width) and a sticky side card on the right (~32%).

Footer

3-column link list (Support / Hosting / Odyssey) at desktop, collapsing to 1-column on mobile.

Border Radius

none0px

Tabs: `{rounded.none}` (0px) — product and category tabs are underline-marked, never filled.

xs4px

Checkboxes: `{rounded.xs}` (4px) — the one small square control.

sm8px

Inputs: `{rounded.sm}` (8px) — text inputs, date pickers in their container form.

md14px

Content cards are photo-first: aspect-ratio rectangles with `{rounded.md}` corner clipping, swipeable image carousel, "Guest favorite" floating badge top-left, heart icon top-right, then 4–5 lines of meta beneath.

lg20px

Modals: `{rounded.lg}` (20px) — one step above the card so an overlay reads as above the page.

xl32px

The shape language is soft. Buttons are 8px radius (`{rounded.sm}`), content cards are ~14px (`{rounded.md}`), the search bar is fully pill-shaped (`{rounded.full}`), wishlist hearts and search orbs are circles (`{rounded.full}`), and category strip rounded corners run at 32px (`{rounded.xl}`). There is essentially no hard corner anywhere except the body grid itself — every interactive element is rounded.

pill9999px
full9999px

Pill-shaped global search bar: white surface, fully rounded (`{rounded.full}`), divided by 1px hairlines into Where / When / Who segments, terminated by a circular Coral search orb (`{component.search-orb}`).

Components

Buttons

Clickable actions: primary, secondary and ghost, with their states.

button-primaryCoral fill, white text, 8px radius, 14×24px padding, 48px height, weight 500
button-primary-activeThe press state
button-primary-disabledPale Coral tint at #ffd1da with white text; the cursor shows not-allowed
button-secondaryWhite fill with ink text and a 1px ink outline
Search Surface

Surfaces that frame grouped content — padding, border and shadow.

search-bar-pillThe signature global search bar
search-orbThe coral orb terminating the search bar: 48×48px, fully rounded, with a centered white magnifying-glass icon
Top Navigation

The top bar — brand, links and the primary call to action.

top-navWhite surface, 80px height, 1px bottom hairline
product-tab-activeInk label in, 32px hand-illustrated icon, 2px ink underline rule beneath the icon-label pair
product-tab-inactiveMuted label, illustrated icon, no underline
new-tagA tiny rounded-pill badge anchored top-right of an icon, carrying the uppercase "NEW" label in (8px / 700 with 0.32px tracking, uppercase)
Content Cards

Surfaces that frame grouped content — padding, border and shadow.

property-cardA photo-first card
property-card-photoThe photo plate itself, separated as a token because some surfaces (wishlist, search results) reuse just the photo without the meta block
experience-cardA taller-aspect card (4:5) for experience items
guest-favorite-badgeWhite rounded pill at 11px / 600 weight
Detail View

The detail layout — how one record's sections stack and read.

rating-display-cardThe signature detail-view moment
amenity-rowA 1-column list of feature icons + ink labels in
reviews-cardA 2-column grid of review excerpts
host-cardA white card with rounding and 24px padding holding a host avatar, name, "Superhost" badge, response-rate stat, and a "Contact host"
Date Picker

Date and time selection — the calendar surface and its states.

date-picker-dayA 40×40px circular cell carrying the day number in
date-picker-day-selectedInk fill, white text, full circle
Forms

Form controls — borders, labels, placeholders and focus rings.

text-inputWhite surface, 1px hairline outline, 8px radius, 56px height, 14×12px padding
Footer

The closing band — secondary links, legal text and marks.

footer-lightWhite surface (matches the page canvas — Odyssey has no contrast footer), 48×80px padding
legal-bandA bottom strip beneath the footer columns carrying the copyright line, language picker (globe icon + "English (US)" link), currency picker, and social icons (social platform, X, photo network)

Elevation & Depth

Flat (no shadow):

Body, hero, footer, all editorial bands — 95% of surfaces.

Card hover float:

`box-shadow: rgba(0, 0, 0, 0.02) 0 0 0 1px, rgba(0, 0, 0, 0.04) 0 2px 6px 0, rgba(0, 0, 0, 0.1) 0 4px 8px 0` — applied to content cards on pointer hover, the search bar at rest, and the dropdown menus (account menu, language picker, date picker). This is the single shadow definition in the entire system.

Modal scrim:

`{colors.scrim}` rendered at 50% opacity — the global modal backdrop. Used on date pickers, login dialogs, language picker.

Guidelines

Do

  • Spend coral `primary` on one or two moments per view — CTA, search orb, saved heart
  • Keep every interactive shape rounded: `rounded.sm` buttons, `rounded.md` cards, `rounded.full` pills
  • Hold the search bar at `rounded.full` — the pill is the system's signature shape
  • Reserve `rounded.none` for page-grid gutters and full-bleed bands

Don't

  • Don't add a second saturated accent; `atlas` and `harbor` stay inside their sub-brand pages — the state roles and the `category-*` group palette mark state and data only, never chrome
  • Don't fill a button with `success`, `warning`, or an error colour — status is never a CTA
  • Don't render any text above weight 700; nav and body sit at 400-600
  • Don't use `primary` as ink on `canvas` — coral is a fill under `on-primary`; links stay `ink`

Spacing roles

One value per role — no ranges, no alternatives.

RoleStepValue
Button padding+ + /14px 24px
Input padding+ + /14px 12px
Chip padding/ +4px 10px
Card padding16px
Card content gap8px
Stacked row gap12px
Menu item padding/12px 16px
Menu item gap4px
Modal padding24px
Modal section gap16px
Section gap64px
Page gutter24px
Icon-to-label gap8px

Iconography

  • Pack: Phosphor — friendly and airy, matching a photo-led surface that never wants a hard edge.
  • Style: light weight, rounded terminals.
  • Weight rule: Use light; step to regular only when an icon sits alone without a label.
  • Size: 20px in controls and nav; 16px inline with body text; 24px for empty states and feature moments.
  • Colour: icons inherit currentColor — never a hardcoded hex, so they follow the text token they sit beside.
  • Import: pull in icons individually, never the whole set.

Responsive Behavior

NameWidthKey Changes
Mobile< 744pxTop nav collapses to logo + hamburger; product tabs hide behind a sheet; search bar collapses to a single tappable pill; content cards stack 1-up; link grid 1-column; the detail view collapses the side card to a sticky bottom bar.
Tablet744–1128pxTop nav keeps product tabs but search bar narrows; content cards 2-up; link grid 2–3 column; the side card stays sticky right-rail at narrower width.
Desktop1128–1440pxFull top nav with three product tabs centered; search bar at full pill width with all 3 segments visible; content cards 4-up; link grid 6-column; detail view 2-column with side rail.
Wide> 1440pxContent width caps at 1440px on card/search pages and ~1280px on editorial; gutters absorb the rest.

Touch Targets

  • Primary CTAs at minimum 48×48px (above WCAG AAA).
  • Search orb is 48×48px circular — the most-tapped element on the page.
  • Heart save button is 32×32px circular — borderline for AAA but compensated by a generous 12px padding inside the photo card.
  • Date-picker day cells are 40×40px circular.

Collapsing Strategy

  • Top product tabs collapse into a hamburger sheet below 744px.
  • Search bar's 3 segments collapse into a single-tap entry that opens a full-screen search overlay on mobile.
  • Content and link grids drop column counts cleanly at each breakpoint — never reflow rows; always reduce columns.
  • The side card on the detail view switches from sticky right-rail to a sticky bottom bar on mobile, carrying just the primary CTA + price summary.

Known Gaps

  • Hover state colors: intentionally not documented per the global no-hover policy — Odyssey's actual :hover styling for content cards is a subtle elevation lift, but precise extraction is unreliable.
  • Loading states / skeleton screens: not visible on the extracted surfaces.
  • Map view styling: the search-results map uses map service-tinted tiles with custom Coral markers; not captured here.
  • Form input error states: error text color is documented, but the full input outline + helper-text combination on validation failure was not visible in the captured surfaces.
  • Specialty palettes: Atlas and Harbor are optional scoped modes; their typography overrides are not part of the core contract.