Brand

The Happly design system.

Every colour, type style and component that makes up happly.ai, in one place. The swatches below are read from the live stylesheet and the components are the real ones — so this page is always in step with the product.

Colour

Surfaces stay warm and low-contrast so product screenshots and photography carry the colour. Purple is the only accent that appears in interface chrome.

Brand

--purple

Primary brand purple. Buttons, links, active states.

--purple-tile

Tinted purple surface behind icons and active menu rows.

Logo mark

These five live in the artwork rather than the stylesheet. Use them for illustration and data accents — never for body text or buttons.

Sun

#FBD570

Ember

#F97627

Punch

#E30147

Violet

#6422C8

Mint

#2ACEB6

Surfaces

--bg

Page canvas. The warm putty behind every panel.

--panel

Section panels. Warm cream white.

--white

Cards and controls that sit on a panel.

--light

Subtle fill for hover and inactive states.

Text

--ink

Primary text and headings.

--gray-600

Body copy and secondary text.

--gray-400

Labels, captions and muted metadata.

--badge-text

Text on the amber announcement badge.

Lines

--border

Control and card borders.

--hairline

Internal dividers on cream panels.

Typography

Inter Display throughout, self-hosted as woff2 subsets. Headings sit at 500–700 with tight tracking; body copy stays at 400.

StyleSize / lineWeightUsed for
Display48 / 57.6700Homepage hero headline

We help people find money.

H140 / 48600Inner page titles

We help people find money.

H236 / 44600Section headings

We help people find money.

H324 / 32600Card and sub-section headings

We help people find money.

H424 / 24500Feature card titles

We help people find money.

H518 / 24500Small card titles

We help people find money.

Body16 / 24400Lead paragraphs

We help people find money.

Body small14 / 20400Default body and list copy

We help people find money.

Caption11 / 12500Badges, labels, eyebrow text

We help people find money.

Shape & elevation

Two radii do most of the work: 8px on full-width panels, 24px on cards. Shadows stay almost invisible — depth comes from the warm gradient surfaces, not blur.

Panel · 8px

--radius-panel

Card · 24px

--radius-card

Pill · 999px

Tags, chips, avatars

Resting shadow

0 1px 2px rgba(10,13,20,.03)

Raised

0 14px 40px -8px rgba(10,13,20,.08)

Buttons

Buttons are 40px tall with an 8px radius. The nav call to action is a special case: it keeps a fixed footprint and swaps its label on hover so the layout never shifts.

Primary

.btn .btn-primary

Secondary

.btn .btn-secondary

Small

.btn .btn-sm — used in the nav

Nav CTA

Hover it — burst plus label crossfade, fixed width

Tags, pills & chips

Small labels carry status and category. All of them are pill-shaped except the feature chips, which use a softer 8px radius.

NEW 1st place at DMZ

Announcement badge

.hero-badge

BETA

Beta tag

.beta-tag

happly

Brand pill

.happly-pill

Built-in bilingual support

Feature chip

.prov-chip

Emblem

44px circle, logo inset

Cards

Three card treatments cover the whole site: a plain white card on cream, a warm gradient card for feature and beta content, and the icon card used in showcase grids.

Icon card

Used in the four-up showcase grids. White surface, hairline border, 22px icon in a brand accent.

.prov-icon-card

Gradient feature card

The warm #fbf9f7 to #f4f1eb gradient with a hairline stroke. Artwork sits full-bleed across the bottom and is clipped by the card.

  • Bulleted detail – a short supporting line.
  • Second detail – another supporting line.

.prov-feature-card

Announcement card

Image on top, title and body beneath, logo and arrow in the footer row.

.announce-card

Layout

Content is capped at a fixed column and every section is a panel floating on the putty canvas. At the widest breakpoint the row also paints the full-bleed side panels.

Content width

1198px

--content, with 40px inner padding

Wide grid

1fr · 1212px · 1fr

≥1440px, side panels flank the column

Panel gap

2px

The canvas showing between panels

Card gap

24px

Between cards in a grid row

Section padding

48–64px

Vertical rhythm inside a panel

Bento row

724 / 384

Alternating wide and narrow cards

Motion

Motion is used to reveal, not to decorate. Everything eases out; nothing bounces. Reveals fire once when a section scrolls into view and never repeat.

Reveal

600ms

Fade up 14px, cubic-bezier(.22, 1, .36, 1)

Artwork rise

700ms

Staggered 120ms per layer

Float

5–7s loop

4–8px vertical drift, easeInOut

Marquee

30–42s

Linear, infinite, masked at both edges

Headline swap

450ms

Per-letter, 35ms stagger, 6s hold

Hover

160–350ms

Colour and shadow only, no scaling