Composes
pop-inorcard-tilt-drifton the hero cardsticker-chip-popon the label sticker (tier-2)bg-swapon entry
Layout
canvas: 1080x1920 (or pack-specified)
card_zone: anchor: center-ish (slightly offset) origin: { x: canvas_w/2 + 20, y: canvas_h/2 - 80 } width: 600 height: 780 border_radius: 28 shadow: soft-drop tilt_deg: -6 to +6 # tilt makes it feel physical
label_sticker_zone: anchor: relative-to-card origin: { x: card_center, y: card_y + card_h * 0.65 } # over the bottom-third of card align: center rotate_deg: small-tilt tier: 2
## Choreography
```yaml
phase_1_card_pop:
start_frame: 0
effect: pop-in
delay_frames: 0
phase_2_sticker_label:
start_frame: 12 # ~400ms after card lands — TIER-2
effect: sticker-chip-pop
delay_frames: 12
phase_3_optional_drift:
start_frame: 18
effect: card-tilt-drift
drift_amplitude_px: 8
drift_period_frames: 60
phase_4_hold:
start_frame: 30
duration_frames: ≥ 30
Style pack compatibility
supported: [SP-B, SP-E]
preferred_in: [SP-B]
incompatible: [SP-A, SP-C, SP-D, SP-F]
Pack-specific overrides
SP-B (pinterest-saturated)
- Card content: a real Pin (image + headline + tiny attribution).
- Bg: saturated swatch from rotation.
- Label sticker: white-on-red rounded rect with playful copy ("Juiciest. Fried. Chicken. Ever.").
- Tilt: -5° default.
- Card-tilt-drift: subtle lateral drift after settle.
SP-E (chaos-card)
- Card content: any product image / scene.
- Music beat anchor required.
- Sticker tilt: ±6°.
Duration
duration_seconds: [1.8, 2.5]
default: 2.0
Quality Checks
- Card has a non-zero tilt — never axis-aligned in this archetype.
- Label sticker arrives ≥ 8 frames after card lands (two-tier rhythm).
- Card shadow exists (gives physical-object feel).
- Card doesn't cover the canvas edge-to-edge — needs negative space around it.
Failure Modes
- Card looks like a Figma export. Missing tilt or shadow. Add both.
- Label and card pop simultaneously. Tier-2 delay too small. Bump to 12+.
- Card-tilt-drift jitters at start. Apply only AFTER pop-in completes (start at frame 18+).