Story templates in 9:16 (1080x1920), the same set as SocialPost re-laid for a tall frame, in ID and EN. Every story carries the animated Jakarta skyline (`kits/motion/sivali-city.js`, three.js r128) along the bottom: the camera sways, data pulses travel between towers and the Monas flame turns. Call `SivaliSocial.gallery(el, { format: 'story', animate: true })` or `SivaliSocial.paintCity(frame, t, scale)` per frame.

- Safe areas: content sits inside 200px top and 280px bottom padding so the app's progress bar, profile row and reply field never cover it. Sides 88px.
- Type steps up for distance viewing: display 108px, headline 80px, lead 38px, checklist 33px.
- Render with `SivaliSocial.frame(id, { format: 'story', lang, brand, data })`.
- For a link sticker, leave the lower 280px clear: the footer rule sits right above it.
- Animate a story with SocialReel (same templates, `format: 'reel'`).
