Figma: LG Day 5615:70522, Dusk 5597:839, Night 5597:5431, Title 5597:8846, Zoom 5597:12280; MD 5691:35814, 5691:42665; SM 5615:22626
Steps
- Compare the 5 LG frames layer by layer. Expected layers:
sky (a color per state, animated as a CSS color, not an image), stars, shootingStar, sun, moon, hbpMoon, skyline (blue → purple), museum (check whether its tint changes per state), bannerHBP/banner2027 (live Amarante text if possible), statueSilhouette, lawn, bushes, stairs, spotlightLeft/Right (fixtures) + beamLeft/Right, mlhBadge, heroTitle (live text) + amazon/Maven logos, door.
- Export each layer as an SVG on a full 1512×982 transparent canvas, in position, so stacking them with
absolute inset-0 reproduces the frame. (Figma trick: duplicate the frame, hide everything except one layer, export the frame.)
- SVGO everything (
--multipass), keep each file < 150KB, and flag raster blobs to Cole. Static layers go in public/hero/lg/; animated layers become React SVG components in scenes/hero/assets/.
scenes/hero/manifest.ts: a typed constant listing each layer with its visibility, opacity, color and transform per state (day|dusk|night|title|zoom), the sky colors per state, and the door zoom origin + scale measured from 5597:12280 vs. 5597:8846. Add MD overrides (if MD is a crop of LG, store the crop rectangle instead of re-exporting).
- SM: export the SM hero (
5615:22626) flattened into as few images as possible (it's static), into public/hero/sm/.
Acceptance criteria
Figma: LG Day
5615:70522, Dusk5597:839, Night5597:5431, Title5597:8846, Zoom5597:12280; MD5691:35814,5691:42665; SM5615:22626Steps
sky(a color per state, animated as a CSS color, not an image),stars,shootingStar,sun,moon,hbpMoon,skyline(blue → purple),museum(check whether its tint changes per state),bannerHBP/banner2027(live Amarante text if possible),statueSilhouette,lawn,bushes,stairs,spotlightLeft/Right(fixtures) +beamLeft/Right,mlhBadge,heroTitle(live text) + amazon/Maven logos,door.absolute inset-0reproduces the frame. (Figma trick: duplicate the frame, hide everything except one layer, export the frame.)--multipass), keep each file < 150KB, and flag raster blobs to Cole. Static layers go inpublic/hero/lg/; animated layers become React SVG components inscenes/hero/assets/.scenes/hero/manifest.ts: a typed constant listing each layer with its visibility, opacity, color and transform per state (day|dusk|night|title|zoom), the sky colors per state, and the door zoom origin + scale measured from5597:12280vs.5597:8846. Add MD overrides (if MD is a crop of LG, store the crop rectangle instead of re-exporting).5615:22626) flattened into as few images as possible (it's static), intopublic/hero/sm/.Acceptance criteria
manifest.tscovers every layer and state (it's typed, so a missing state is a TS error)