# Yan Yan hand-painted v2 approval packet - unit: `unit-yan-yan` - candidate: `handpaint-batch7-yan-yan-v2` - source: `docs/handpaint-batch7-yan-yan-source-v1.png` - contact sheet: `docs/handpaint-batch7-yan-yan-v2-contact.png` - animation: `docs/handpaint-batch7-yan-yan-v2-animation.gif` - before/after: `docs/handpaint-batch7-yan-yan-v2-before-after.png` - battle composite: `docs/handpaint-batch7-yan-yan-v2-battle-composite.png` - current approval board: `docs/unit-sprite-current-approval-board.png` - browser check: `docs/handpaint-batch7-yan-yan-v2-debug-preview-battle-check.png` ## Result - Local build: `pnpm build` passed. - Local browser URL: `http://127.0.0.1:4173/heros_web/?debug&debugSpritePreview=unit-yan-yan&v=yan-yan-v2` - Local browser console errors: `0` - Local browser 404s: `0` - Sample gate: passed. ## Sprite safety - base partial alpha: 0 - action partial alpha: 0 - base frame border hits: 0 - action frame border hits: 0 - base battle size: 30.4..37.5 x 45.7..46.0 - frame bbox width: 190..235 base, 170..242 action - frame bbox height: 286..288 base, 271..295 action ## Visual notes - v1 had good idle readability but over-shrunk the action frames below the archer width threshold. - v2 restores bow-shot width while preserving frame safety and the burgundy elder fortress defender silhouette. - Yan Yan remains distinct from Huang Zhong through deeper red armor, gray beard, cloak mass, and a more defensive castle-guard stance.