Section A: motion patterns that are already canonical (locked) -- consolidated from brand-vault-renditions.html, product-seeds.html, ux-field-homepage-v3-motionmark-depth.html, and 26 inspiration library entries. Use these as the source of truth.
Section B: motion patterns that are still undefined -- 4 categories with 2-3 variants each. Click through each, pick the one that feels right, then they roll into the consolidated spec for Josh.
The throughline rule from Ashley: Nothing pops. Nothing appears stagnant. Everything floats, drifts, or pulls.
These patterns are already locked across the canonical files. Hit "Replay" on any card to see it move. These are the source of truth -- everything else gets compared against them.
transform:scale(.97) on :active with cubic-bezier(.34,1.56,.64,1) over 150ms. Soft springy feel -- never mechanical.pow(progress,.45), opacity pow(1-progress,1.8)*.25. Max radius 160px from tap. Three rings: gold-light full, gold 55% size, cream 78% size.translateY(12px) -> 0 + opacity 0 -> 1 over 350ms ease-out. When in groups: 60ms stagger between siblings. The one rule used everywhere a list, row, card, or chip first appears.translateY(-100% -> 0) over 320-450ms ease-out, NO overshoot. 3 snap points: 12% (collapsed), 40% (peek, default), 85% (full). Drag follows finger 1:1. On release, snap to nearest point with 280ms ease-out.1 -> 1.04 + translateY(-12px) + shadow builds in over 220ms. Neighbors closing the gap have a 4px overshoot bounce at the end. Reorder drag-cards tilt rotateZ(2deg) while in motion.scale(1.05 -> 1.0) over 600ms on entry, then continuous subtle drift on standby. 6-second loop, no demand for attention. Background never competes with foreground content.scale(1 -> 1.4) opacity .6 -> 0 over 320ms BEFORE the next surface opens. Confirms the tap registered + bridges the user across the transition.ux-component-decisions.html.A2 D-Ring (sharp on-tap ripple). This is a continuous CTA breathing glow — gold-lt box-shadow oscillating ~12px → ~22px over 2s ease-in-out. Loops indefinitely while in Bloom Now state. Orb + popup share the same animation phase so they breathe together (unified, not noisy). Why it exists: in B1=D anchored-depth clusters, a Bloom Now popup that's been depth-pushed BEHIND siblings still needs to call attention as actionable — the pulse pulls the user's eye to the actionable card. Distinct from A12 (2.4s ambient pulse for "upcoming bloom" general indicator) — A13 is faster (2s) and CTA-active.Four motion categories that don't have a canonical pattern yet. Click any "PLAY" button to feel each variant, then click the card itself to mark your pick. Picks roll into the locked spec for Josh.
When the gardener taps "Filter," how does the filter panel come in? This is the feel of opening filters anywhere in the app -- vault chooser, search, pressed shelf.
When a recipient taps a minimal popup (Tier 1: glance) to see the full preview (Tier 2: 7-element anatomy). How does the expansion feel?
When the gardener applies a filter, how do the items leave + arrive? Hit "Swap" to feel each variant.
Your specific call-out: when you open a vault and the title appears, how does it float in? This rule will apply to vault titles, seed titles, section headers across the app.