01 · Shared
Shared Animations
Universal keyframes from byld-animations.css. Used across all 171 screens, all tiers. Tier overrides (e.g. breathe glow color) applied in tier CSS.
3
SIP
MIA_
+₹12K
02 · Bloom
MIA Bloom Animations
Keyframes from byld-mia-bloom.css. The lotus (padma) motion system — quiet, organic, restrained luxury. Each animation layer is compositional and never jarring.
M
M
M
M
03 · Accessibility
Reduced Motion
When prefers-reduced-motion: reduce is active, all animations collapse to instantaneous. No motion = same visual state, static. WCAG 2.3.3 Animation from Interactions.
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { animation-duration: 0.01ms !important; animation-iteration-count: 1 !important; transition-duration: 0.01ms !important; } }
Applied to bloom entity, bloom-mark-header, bloom-avatar, and all shared animations.
Applied to bloom entity, bloom-mark-header, bloom-avatar, and all shared animations.
breathe → static
Shadow frozen at 0% keyframe
STATIC
shimmer → static
Skeleton bar with no sweep
STATIC
typingBounce → static
Dots at baseline, opacity 0.4
STATIC
petal-sway → static
Petals at initial position
STATIC
Do ✓
- → Apply reduced motion via CSS media query only
- → Preserve layout — element stays in final visual state
- → Use opacity to signal state (e.g. dimmed typing dots)
- → Keep transitions for state-based changes (hover, focus)
- → Test with macOS: System Prefs → Accessibility → Reduce Motion
Don't ✗
- → Never disable transitions entirely (breaks interactions)
- → Don't hide elements that were animated (causes layout shift)
- → Don't use JS-only animation without a CSS fallback
- → Don't override with !important at component level
- → Never use inline animation-duration on elements