Motion
Nothing in a dream ever snaps. Motion here is slow, fluid, and drifting — a language of loosened gravity and long, floating decelerations.
Easing
ease-driftsettles like something sinking in waterease-fadesmooth, symmetrical crossfadeease-sinkthe mirror of drift — accelerates quietly awaylinear (don't)mechanical — nothing in a dream moves like thisease-driftcubic-bezier(0.16, 1, 0.3, 1)The signature easing. A long, floating deceleration — like something settling in water. Entrances and hover drifts. (もっちり — heavy start, endless tail)
ease-fadecubic-bezier(0.4, 0, 0.2, 1)For opacity crossfades and gentle state changes. (ぬるっ — smooth, symmetrical)
ease-sinkcubic-bezier(0.7, 0, 0.84, 0)The mirror of drift. Exits accelerate quietly away — sinking back into the void. (すっ… — gentle release, then gone)
Duration
A bespoke scale, named by feel — not a numeric ramp. Each name is a role: whispers shift color, drifts carry interaction, surfaces carry overlays, and dawn wakes the hero.
duration-whisper300msduration-drift500msduration-surface700msduration-rise1200msduration-dawn1600msduration-whisper300msColor and opacity micro-shifts: link hovers, underlines, focus glows.
duration-drift500msInteractive drift: hover lifts, presses, small state changes.
duration-surface700msOverlays surfacing and melting: modals, toasts.
duration-rise1200msScroll reveals — content surfacing like a memory.
duration-dawn1600msFirst paint. The hero waking up.
duration-breathe3600msAmbient micro-loops: scroll hints, idle pulses. Fog cycles (30–50s) stay bespoke.
stagger-surface120msSibling delay when groups surface together — the page assembles itself gradually.
Principles
Drift, don't snap
Interactive feedback is a slow upward drift (duration-drift, 500ms), never a mechanical click. Hover states feel like objects loosening from gravity.
Enter slow, leave quiet
Motion is asymmetric. Entrances decelerate with ease-drift; exits accelerate away with ease-sink, its mirror. Things surface gently and sink back into the void.
Surface like a memory
Content enters with a long fade + rise (duration-rise to duration-dawn). Stagger siblings by --stagger-surface (120ms) so the page assembles itself gradually.
The fog never stops
Ambient layers loop on 30–50s cycles — slow enough to be felt, not watched. Under prefers-reduced-motion, the dream stands still.
Transform and opacity only
Every animation composites on the GPU. If a motion needs layout properties, redesign the motion.