Skip to content
LSD Framework
Components · primitive

Card flip. Two faces, one rotation.

Two slots per card — front and back — with a single 3D rotation between them. Hover, click, an interval timer, or a staggered stack on entry. Reduce-motion users see both faces stacked, no rotation.

01

Hover flip

Default axis is Y. Front and back are independently styled.

Surface

Galaxy

Hover to reveal

Tier 0

The base canvas — deepest ink, lowest elevation. Everything else rises from here.

#07060f

Surface

Nebula

Hover to reveal

Tier 1

First elevation — for panels, cards, and recessed wells.

#0f0d1d

Surface

Aurora

Hover to reveal

Tier 3

The active surface — modals, popovers, the layer the cursor expects to live on.

#181530

02

Click flip · toggle

Tap or click to flip. Tap again to return. Keyboard-enabled via tabindex.

Question

What runs at 60fps?

Click to reveal

Answer

Transforms and opacity. Anything else, you’re paying for layout. Click to flip back.

Question

Why containers?

Click to reveal

Answer

Because the viewport doesn’t know what you’re putting inside it. The container does.

03

Axis variants

Y is the default. Switch to X for vertical flips or corner for a diagonal hinge.

Axis

X · vertical

Hover to flip

rotateX(180)

Top edge becomes the bottom edge. Reads like a card folding forward.

Axis

Corner

Hover to flip

rotate3d(1,1,0)

Diagonal hinge. Showier — use sparingly, when the card is the moment.

04

Stack · staggered entry

Cards flip in on page load with a 140ms cascade.

01

Atom

tokens

Single-value primitives: a color, a spacing, a duration.

02

Molecule

primitives

Buttons, inputs, chips — tokens combined into a single interface element.

03

Organism

sections

Heroes, pricing tables, footers — primitives composed into a page region.

04

Body

pages

A sequence of sections, with continuity through surfaces and motion beats.

Usage

View HTML
<div class="cf cf--hover" tabindex="0">
  <div class="cf__inner">
    <div class="cf__face cf__face--front">…front…</div>
    <div class="cf__face cf__face--back">…back…</div>
  </div>
</div>