# Visual Asset Quality Audit
Generated by `scripts/audit-visual-asset-quality.mjs`.
## Summary
- Target desktop viewport: 1920x1080
- Battle map assets: 66
- Flagged battle map review rows: 10
- Flagged battle map rows with repaint reports: 3
- Battle map source pixel density range: 60.0-96.0 px/tile
- Story source backgrounds: 136
- Story page background references: 466
- Flagged story background review rows: 120
## Main Findings
- Existing verification already gates missing files and minimum dimensions; this audit ranks visual-review risk instead of failing the build.
- Battle maps are scored by the V2 adaptive 60 px/tile floor, the 8,192 px WebGL edge budget, source/image aspect match, and WebP byte density.
- Battle maps with repaint reports stay in the inventory, but are skipped for the next-batch recommendation.
- Story backgrounds are scored by standard 1672x941 dimensions, repeat usage, and PNG byte density.
- The audit cannot judge composition or painterly quality by itself; top rows are candidates for desktop browser screenshot review.
## Recommended Next Batch
- Battle map candidate: `sixty-first-battle-hanzhong-rain-defense` / `battle-map-sixty-first`
- Battle reason: watch tile pixel density
- Story background candidate: `src/assets/images/story/25-yizhou-luo-road.png`
- Story reason: high-repeat story background
- Suggested workflow: capture the top battle candidate in a 1920x1080 battle scene, inspect terrain readability under units/grid, then regenerate or repaint only that asset if the screenshot confirms the issue.
## Top Battle Map Review Queue
| score | battle id | map key | grid | image | px/tile | bytes/px | concerns |
| ---: | --- | --- | ---: | ---: | ---: | ---: | --- |
| 2 | `sixty-first-battle-hanzhong-rain-defense` | `battle-map-sixty-first` | 122x104 | 7808x6656 | 64.0 | 0.1027 | watch tile pixel density |
| 2 | `fifty-eighth-battle-qishan-retreat` | `battle-map-fifty-eighth` | 116x98 | 7424x6272 | 64.0 | 0.1342 | watch tile pixel density |
| 2 | `fifty-seventh-battle-jieting-crisis` | `battle-map-fifty-seventh` | 114x96 | 7296x6144 | 64.0 | 0.1360 | watch tile pixel density |
| 2 | `sixty-second-battle-qishan-renewed-offensive` | `battle-map-sixty-second` | 124x106 | 7936x6784 | 64.0 | 0.1381 | watch tile pixel density |
| 2 | `sixtieth-battle-wudu-yinping` | `battle-map-sixtieth` | 120x102 | 7680x6528 | 64.0 | 0.1407 | watch tile pixel density |
| 2 | `fifty-ninth-battle-chencang-siege` | `battle-map-fifty-ninth` | 118x100 | 7552x6400 | 64.0 | 0.1414 | watch tile pixel density |
| 2 | `sixty-third-battle-lucheng-pursuit` | `battle-map-sixty-third` | 126x108 | 8064x6912 | 64.0 | 0.1448 | watch tile pixel density |
## Top Story Background Review Queue
| score | source | page refs | image | bytes/px | concerns | examples |
| ---: | --- | ---: | ---: | ---: | --- | --- |
| 4 | `src/assets/images/story/25-yizhou-luo-road.png` | 49 | 1672x941 | 2.4004 | high-repeat story background | `twentySeventhBattleIntroPages/twenty-seventh-yizhou-request`
`twentySeventhBattleIntroPages/twenty-seventh-pang-tong-rumor`
`twentySeventhBattleIntroPages/twenty-seventh-gate-warning` |
| 4 | `src/assets/images/story/28-nanzhong-seven-captures.png` | 42 | 1672x941 | 2.4106 | high-repeat story background | `fortyEighthBattleIntroPages/forty-eighth-meng-huo-gathers`
`fortyEighthBattleIntroPages/forty-eighth-zhuge-amnesty`
`fortyEighthBattleIntroPages/forty-eighth-sortie` |
| 4 | `src/assets/images/story/09-wandering-road.png` | 39 | 1672x941 | 1.3390 | high-repeat story background | `tenthBattleIntroPages/tenth-zhang-fei-fault`
`tenthBattleIntroPages/tenth-lu-bu-takes-xuzhou`
`tenthBattleIntroPages/tenth-brothers-regroup` |
| 4 | `src/assets/images/story/13-northern-expedition.png` | 36 | 1672x941 | 1.5690 | high-repeat story background | `thirtyFifthBattleIntroPages/thirty-fifth-hanzhong-front`
`thirtyFifthBattleIntroPages/thirty-fifth-ma-chao-first-sortie`
`thirtyFifthBattleIntroPages/thirty-fifth-huang-quan-map` |
| 4 | `src/assets/images/story/12-yizhou-mountain-pass.png` | 29 | 1672x941 | 1.6969 | high-repeat story background | `twentyThirdBattleIntroPages/twenty-third-jingzhou-cause`
`twentyThirdBattleIntroPages/twenty-third-zhuge-plan`
`twentyThirdBattleIntroPages/twenty-third-ma-liang-rumor` |
| 4 | `src/assets/images/story/11-red-cliffs-fire.png` | 28 | 1672x941 | 1.5183 | high-repeat story background | `nineteenthBattleIntroPages/nineteenth-cao-army-south`
`nineteenthBattleIntroPages/nineteenth-zhao-yun-rescue`
`nineteenthBattleIntroPages/nineteenth-zhang-fei-bridge` |
| 4 | `src/assets/images/story/06-yellow-turban-pursuit.png` | 26 | 1672x941 | 1.5888 | high-repeat story background | `firstBattleVictoryPages/first-victory-village`
`firstBattleVictoryPages/first-victory-liu-bei`
`firstBattleVictoryPages/first-victory-guan-yu` |
| 4 | `src/assets/images/story/29-fan-castle-flood.png` | 21 | 1672x941 | 1.5085 | high-repeat story background | `thirtyNinthBattleIntroPages/thirty-ninth-fan-castle-shadow`
`thirtyNinthBattleIntroPages/thirty-ninth-guan-yu-north`
`thirtyNinthBattleIntroPages/thirty-ninth-flooded-fields` |
| 4 | `src/assets/images/story/10-wolong-cottage.png` | 21 | 1672x941 | 1.6899 | high-repeat story background | `sixteenthBattleIntroPages/sixteenth-yuan-camp-shifts`
`sixteenthBattleIntroPages/sixteenth-zhao-yun-returns`
`sixteenthBattleIntroPages/sixteenth-liu-biao-road` |
| 4 | `src/assets/images/story/27-jingzhou-crisis.png` | 21 | 1672x941 | 2.1512 | high-repeat story background | `thirtyEighthBattleIntroPages/thirty-eighth-jing-warning`
`thirtyEighthBattleIntroPages/thirty-eighth-guan-yu-front`
`thirtyEighthBattleIntroPages/thirty-eighth-two-fronts` |
| 4 | `src/assets/images/story/08-xuzhou-handover.png` | 18 | 1672x941 | 1.3700 | high-repeat story background | `seventhBattleIntroPages/seventh-xuzhou-envoy-arrives`
`seventhBattleIntroPages/seventh-liu-bei-xuzhou`
`seventhBattleIntroPages/seventh-guan-yu-field` |
| 4 | `src/assets/images/story/18-jieting-crisis.png` | 13 | 1672x941 | 1.5299 | high-repeat story background | `fiftySixthBattleVictoryPages/fifty-sixth-next-jieting`
`fiftySeventhBattleIntroPages/fifty-seventh-jieting-order`
`fiftySeventhBattleIntroPages/fifty-seventh-ma-su-insists` |
## Battle Map Inventory
| battle id | map key | grid | image | px/tile | MiB | concerns |
| --- | --- | ---: | ---: | ---: | ---: | --- |
| `eighteenth-battle-bowang-ambush` | `battle-map-eighteenth` | 36x26 | 3456x2496 | 96.0 | 0.98 | none |
| `eighth-battle-xiaopei-supply-road` | `battle-map-eighth` | 26x22 | 2496x2112 | 96.0 | 0.59 | none |
| `eleventh-battle-xudu-refuge-road` | `battle-map-eleventh` | 28x22 | 2688x2112 | 96.0 | 0.70 | none |
| `fifteenth-battle-yuan-refuge-road` | `battle-map-fifteenth` | 34x24 | 3264x2304 | 96.0 | 0.81 | none |
| `fifth-battle-sishui-vanguard` | `battle-map-fifth` | 24x20 | 2304x1920 | 96.0 | 0.50 | none |
| `fiftieth-battle-meng-huo-third-capture` | `battle-map-fiftieth` | 100x82 | 8000x6560 | 80.0 | 6.51 | none |
| `fifty-eighth-battle-qishan-retreat` | `battle-map-fifty-eighth` | 116x98 | 7424x6272 | 64.0 | 5.96 | watch tile pixel density |
| `fifty-fifth-battle-northern-qishan-road` | `battle-map-fifty-fifth` | 110x92 | 7920x6624 | 72.0 | 7.08 | none |
| `fifty-first-battle-meng-huo-fourth-capture` | `battle-map-fifty-first` | 102x84 | 7344x6048 | 72.0 | 5.40 | none |
| `fifty-fourth-battle-meng-huo-final-capture` | `battle-map-fifty-fourth` | 108x90 | 7776x6480 | 72.0 | 6.03 | none |
| `fifty-ninth-battle-chencang-siege` | `battle-map-fifty-ninth` | 118x100 | 7552x6400 | 64.0 | 6.52 | watch tile pixel density |
| `fifty-second-battle-meng-huo-fifth-capture` | `battle-map-fifty-second` | 104x86 | 7488x6192 | 72.0 | 5.68 | none |
| `fifty-seventh-battle-jieting-crisis` | `battle-map-fifty-seventh` | 114x96 | 7296x6144 | 64.0 | 5.81 | watch tile pixel density |
| `fifty-sixth-battle-tianshui-advance` | `battle-map-fifty-sixth` | 112x94 | 8064x6768 | 72.0 | 7.59 | none |
| `fifty-third-battle-meng-huo-sixth-capture` | `battle-map-fifty-third` | 106x88 | 7632x6336 | 72.0 | 6.03 | none |
| `first-battle-zhuo-commandery` | `battle-map-first` | 20x18 | 1920x1728 | 96.0 | 1.02 | repaint report exists |
| `fortieth-battle-han-river-flood` | `battle-map-fortieth` | 80x62 | 7680x5952 | 96.0 | 4.41 | none |
| `forty-eighth-battle-meng-huo-main-force` | `battle-map-forty-eighth` | 96x78 | 7680x6240 | 80.0 | 6.47 | none |
| `forty-fifth-battle-yiling-vanguard` | `battle-map-forty-fifth` | 90x72 | 7920x6336 | 88.0 | 6.12 | none |
| `forty-first-battle-fan-castle-siege` | `battle-map-forty-first` | 82x64 | 7216x5632 | 88.0 | 4.62 | none |
| `forty-fourth-battle-maicheng-isolation` | `battle-map-forty-fourth` | 88x70 | 7744x6160 | 88.0 | 5.50 | none |
| `forty-ninth-battle-meng-huo-second-capture` | `battle-map-forty-ninth` | 98x80 | 7840x6400 | 80.0 | 6.23 | none |
| `forty-second-battle-jing-rear-crisis` | `battle-map-forty-second` | 84x66 | 7392x5808 | 88.0 | 4.82 | none |
| `forty-seventh-battle-nanzhong-stabilization` | `battle-map-forty-seventh` | 94x76 | 7520x6080 | 80.0 | 6.08 | none |
| `forty-sixth-battle-yiling-fire` | `battle-map-forty-sixth` | 92x74 | 7360x5920 | 80.0 | 5.32 | none |
| `forty-third-battle-gongan-collapse` | `battle-map-forty-third` | 86x68 | 7568x5984 | 88.0 | 5.07 | none |
| `fourteenth-battle-cao-break` | `battle-map-fourteenth` | 32x24 | 3072x2304 | 96.0 | 0.80 | none |
| `fourth-battle-guangzong-camp` | `battle-map-fourth` | 24x20 | 2304x1920 | 96.0 | 0.52 | none |
| `nineteenth-battle-changban-refuge` | `battle-map-nineteenth` | 38x28 | 3648x2688 | 96.0 | 1.16 | none |
| `ninth-battle-xuzhou-gate-night-raid` | `battle-map-ninth` | 26x22 | 2496x2112 | 96.0 | 0.32 | none |
| `second-battle-yellow-turban-pursuit` | `battle-map-second` | 24x20 | 2304x1920 | 96.0 | 0.49 | none |
| `seventeenth-battle-wolong-visit-road` | `battle-map-seventeenth` | 34x26 | 3264x2496 | 96.0 | 0.98 | none |
| `seventh-battle-xuzhou-rescue` | `battle-map-seventh` | 24x20 | 2304x1920 | 96.0 | 0.47 | none |
| `sixteenth-battle-liu-biao-refuge` | `battle-map-sixteenth` | 34x26 | 3264x2496 | 96.0 | 0.97 | none |
| `sixth-battle-jieqiao-relief` | `battle-map-sixth` | 24x20 | 2304x1920 | 96.0 | 0.48 | none |
| `sixtieth-battle-wudu-yinping` | `battle-map-sixtieth` | 120x102 | 7680x6528 | 64.0 | 6.73 | watch tile pixel density |
| `sixty-fifth-battle-weishui-northbank` | `battle-map-sixty-fifth` | 130x112 | 7800x6720 | 60.0 | 6.81 | reduced tile pixel density
repaint report exists |
| `sixty-first-battle-hanzhong-rain-defense` | `battle-map-sixty-first` | 122x104 | 7808x6656 | 64.0 | 5.09 | watch tile pixel density |
| `sixty-fourth-battle-weishui-camps` | `battle-map-sixty-fourth` | 128x110 | 8192x7040 | 64.0 | 6.96 | watch tile pixel density
repaint report exists |
| `sixty-second-battle-qishan-renewed-offensive` | `battle-map-sixty-second` | 124x106 | 7936x6784 | 64.0 | 7.09 | watch tile pixel density |
| `sixty-sixth-battle-wuzhang-final` | `battle-map-sixty-sixth` | 132x114 | 7920x6840 | 60.0 | 6.85 | reduced tile pixel density
repaint report exists |
| `sixty-third-battle-lucheng-pursuit` | `battle-map-sixty-third` | 126x108 | 8064x6912 | 64.0 | 7.70 | watch tile pixel density |
| `tenth-battle-xuzhou-breakout` | `battle-map-tenth` | 28x22 | 2688x2112 | 96.0 | 0.64 | none |
| `third-battle-guangzong-road` | `battle-map-third` | 24x20 | 2304x1920 | 96.0 | 0.49 | none |
| `thirteenth-battle-xiapi-final` | `battle-map-thirteenth` | 32x24 | 3072x2304 | 96.0 | 0.80 | none |
| `thirtieth-battle-luofeng-ambush` | `battle-map-thirtieth` | 60x42 | 5760x4032 | 96.0 | 3.09 | none |
| `thirty-eighth-battle-jing-defense` | `battle-map-thirty-eighth` | 76x58 | 7296x5568 | 96.0 | 4.75 | none |
| `thirty-fifth-battle-yangping-scout` | `battle-map-thirty-fifth` | 70x52 | 6720x4992 | 96.0 | 4.22 | none |
| `thirty-first-battle-luo-main-gate` | `battle-map-thirty-first` | 62x44 | 5952x4224 | 96.0 | 3.38 | none |
| `thirty-fourth-battle-jiameng-pass` | `battle-map-thirty-fourth` | 68x50 | 6528x4800 | 96.0 | 3.90 | none |
| `thirty-ninth-battle-fan-castle-vanguard` | `battle-map-thirty-ninth` | 78x60 | 7488x5760 | 96.0 | 5.02 | none |
| `thirty-second-battle-mianzhu-gate` | `battle-map-thirty-second` | 64x46 | 6144x4416 | 96.0 | 3.28 | none |
| `thirty-seventh-battle-hanzhong-decisive` | `battle-map-thirty-seventh` | 74x56 | 7104x5376 | 96.0 | 4.78 | none |
| `thirty-sixth-battle-dingjun-vanguard` | `battle-map-thirty-sixth` | 72x54 | 6912x5184 | 96.0 | 4.82 | none |
| `thirty-third-battle-chengdu-surrender` | `battle-map-thirty-third` | 66x48 | 6336x4608 | 96.0 | 3.65 | none |
| `twelfth-battle-xiapi-outer-siege` | `battle-map-twelfth` | 30x24 | 2880x2304 | 96.0 | 0.73 | none |
| `twentieth-battle-jiangdong-envoy` | `battle-map-twentieth` | 40x28 | 3840x2688 | 96.0 | 1.12 | none |
| `twenty-eighth-battle-fu-pass-entry` | `battle-map-twenty-eighth` | 56x38 | 5376x3648 | 96.0 | 2.66 | none |
| `twenty-fifth-battle-wuling-mountain-road` | `battle-map-twenty-fifth` | 50x34 | 4800x3264 | 96.0 | 1.90 | none |
| `twenty-first-battle-red-cliffs-vanguard` | `battle-map-twenty-first` | 42x30 | 4032x2880 | 96.0 | 1.27 | none |
| `twenty-fourth-battle-guiyang-persuasion` | `battle-map-twenty-fourth` | 48x32 | 4608x3072 | 96.0 | 1.61 | none |
| `twenty-ninth-battle-luo-outer-wall` | `battle-map-twenty-ninth` | 58x40 | 5568x3840 | 96.0 | 2.98 | none |
| `twenty-second-battle-red-cliffs-fire` | `battle-map-twenty-second` | 44x30 | 4224x2880 | 96.0 | 1.30 | none |
| `twenty-seventh-battle-yizhou-relief-road` | `battle-map-twenty-seventh` | 54x36 | 5184x3456 | 96.0 | 2.41 | none |
| `twenty-sixth-battle-changsha-veteran` | `battle-map-twenty-sixth` | 52x34 | 4992x3264 | 96.0 | 2.14 | none |
| `twenty-third-battle-jingzhou-south-entry` | `battle-map-twenty-third` | 46x32 | 4416x3072 | 96.0 | 1.53 | none |
## Story Background Inventory
| source | page refs | image | MiB | concerns |
| --- | ---: | ---: | ---: | --- |
| `src/assets/images/story/01-yellow-turban-chaos.png` | 1 | 1672x941 | 2.17 | none |
| `src/assets/images/story/02-liu-bei-resolve.png` | 1 | 1672x941 | 2.05 | none |
| `src/assets/images/story/03-three-heroes-meet.png` | 2 | 1672x941 | 2.21 | none |
| `src/assets/images/story/04-volunteer-militia.png` | 1 | 1672x941 | 2.26 | none |
| `src/assets/images/story/05-first-sortie.png` | 4 | 1672x941 | 2.39 | none |
| `src/assets/images/story/06-yellow-turban-pursuit.png` | 26 | 1672x941 | 2.38 | high-repeat story background |
| `src/assets/images/story/07-anti-dong-pass.png` | 12 | 1672x941 | 2.61 | high-repeat story background |
| `src/assets/images/story/08-xuzhou-handover.png` | 18 | 1672x941 | 2.06 | high-repeat story background |
| `src/assets/images/story/09-wandering-road.png` | 39 | 1672x941 | 2.01 | high-repeat story background |
| `src/assets/images/story/10-wolong-cottage.png` | 21 | 1672x941 | 2.54 | high-repeat story background |
| `src/assets/images/story/100-jieting-crisis-wooden-palisade.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/101-chengdu-surrender-river-gate.png` | 0 | 1672x941 | 2.67 | unused source background |
| `src/assets/images/story/102-yiling-baidi-lantern-vigil.png` | 0 | 1672x941 | 2.26 | unused source background |
| `src/assets/images/story/103-weishui-northbank-frozen-ferry.png` | 0 | 1672x941 | 2.75 | unused source background |
| `src/assets/images/story/104-lucheng-pursuit-dust-road.png` | 0 | 1672x941 | 3.01 | unused source background |
| `src/assets/images/story/105-qishan-renewed-snow-relay.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/106-hanzhong-rain-supply-trench.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/107-maicheng-isolation-abandoned-gate.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/108-yiling-fire-forest-corridor.png` | 0 | 1672x941 | 2.44 | unused source background |
| `src/assets/images/story/109-wudu-yinping-cliff-granary.png` | 0 | 1672x941 | 2.87 | unused source background |
| `src/assets/images/story/11-red-cliffs-fire.png` | 28 | 1672x941 | 2.28 | high-repeat story background |
| `src/assets/images/story/110-baidi-entrustment-medicine-chamber.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/111-tianshui-front-market-command.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/112-chencang-siege-ladder-yard.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/113-anti-dong-coalition-oath-camp.png` | 0 | 1672x941 | 2.57 | unused source background |
| `src/assets/images/story/114-red-cliffs-wind-altar.png` | 0 | 1672x941 | 2.33 | unused source background |
| `src/assets/images/story/115-qishan-renewed-frozen-scout-line.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/116-yiling-fire-attack-river-ashes.png` | 0 | 1672x941 | 2.26 | unused source background |
| `src/assets/images/story/117-baidi-entrustment-river-watch.png` | 0 | 1672x941 | 2.10 | unused source background |
| `src/assets/images/story/118-tianshui-front-hidden-letter.png` | 0 | 1672x941 | 2.35 | unused source background |
| `src/assets/images/story/119-hanzhong-rain-mountain-shrine.png` | 0 | 1672x941 | 2.67 | unused source background |
| `src/assets/images/story/12-yizhou-mountain-pass.png` | 29 | 1672x941 | 2.55 | high-repeat story background |
| `src/assets/images/story/120-maicheng-isolation-snow-bridge.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/121-wudu-yinping-cloud-signal.png` | 0 | 1672x941 | 2.68 | unused source background |
| `src/assets/images/story/122-chencang-siege-broken-ram.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/123-yellow-pursuit-grain-relief.png` | 0 | 1672x941 | 2.51 | unused source background |
| `src/assets/images/story/124-nanzhong-captures-mist-stockade.png` | 0 | 1672x941 | 2.48 | unused source background |
| `src/assets/images/story/125-chaos-market-panic.png` | 0 | 1672x941 | 2.57 | unused source background |
| `src/assets/images/story/126-militia-training-yard.png` | 0 | 1672x941 | 2.52 | unused source background |
| `src/assets/images/story/127-sortie-dawn-muster.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/128-liu-bei-village-resolve.png` | 0 | 1672x941 | 2.27 | unused source background |
| `src/assets/images/story/129-three-heroes-rain-shelter.png` | 0 | 1672x941 | 2.31 | unused source background |
| `src/assets/images/story/13-northern-expedition.png` | 36 | 1672x941 | 2.35 | high-repeat story background |
| `src/assets/images/story/130-lucheng-pursuit-ravine-signal.png` | 0 | 1672x941 | 2.72 | unused source background |
| `src/assets/images/story/131-weishui-camps-frozen-watch.png` | 0 | 1672x941 | 2.22 | unused source background |
| `src/assets/images/story/132-weishui-northbank-siege-line.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/133-yiling-fire-attack-smoke-crossing.png` | 0 | 1672x941 | 2.37 | unused source background |
| `src/assets/images/story/134-chengdu-surrender-sealed-gate.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/135-wuzhang-jiangwei-inheritance.png` | 2 | 1672x941 | 2.09 | none |
| `src/assets/images/story/14-nanzhong-pacification.png` | 7 | 1672x941 | 2.41 | none |
| `src/assets/images/story/15-yiling-baidi-aftermath.png` | 8 | 1672x941 | 2.20 | repeat story background |
| `src/assets/images/story/16-qishan-renewed-offensive.png` | 6 | 1672x941 | 2.26 | none |
| `src/assets/images/story/17-tianshui-front.png` | 5 | 1672x941 | 2.12 | none |
| `src/assets/images/story/18-jieting-crisis.png` | 13 | 1672x941 | 2.30 | high-repeat story background |
| `src/assets/images/story/19-chencang-siege.png` | 6 | 1672x941 | 2.38 | none |
| `src/assets/images/story/20-wudu-yinping.png` | 6 | 1672x941 | 2.55 | none |
| `src/assets/images/story/21-hanzhong-rain-defense.png` | 9 | 1672x941 | 2.25 | repeat story background |
| `src/assets/images/story/22-lucheng-pursuit.png` | 6 | 1672x941 | 2.03 | none |
| `src/assets/images/story/23-weishui-camps.png` | 6 | 1672x941 | 2.31 | none |
| `src/assets/images/story/24-weishui-northbank.png` | 8 | 1672x941 | 2.22 | repeat story background |
| `src/assets/images/story/25-yizhou-luo-road.png` | 49 | 1672x941 | 3.60 | high-repeat story background |
| `src/assets/images/story/26-chengdu-surrender.png` | 11 | 1672x941 | 3.64 | repeat story background |
| `src/assets/images/story/27-jingzhou-crisis.png` | 21 | 1672x941 | 3.23 | high-repeat story background |
| `src/assets/images/story/28-nanzhong-seven-captures.png` | 42 | 1672x941 | 3.62 | high-repeat story background |
| `src/assets/images/story/29-fan-castle-flood.png` | 21 | 1672x941 | 2.26 | high-repeat story background |
| `src/assets/images/story/30-maicheng-isolation.png` | 7 | 1672x941 | 1.80 | low PNG byte density |
| `src/assets/images/story/31-yiling-fire-attack.png` | 7 | 1672x941 | 2.10 | none |
| `src/assets/images/story/32-baidi-entrustment.png` | 5 | 1672x941 | 1.96 | none |
| `src/assets/images/story/33-yellow-pursuit-refugees.png` | 0 | 1672x941 | 2.41 | unused source background |
| `src/assets/images/story/34-xuzhou-gates-handover.png` | 0 | 1672x941 | 2.24 | unused source background |
| `src/assets/images/story/35-wolong-night-strategy.png` | 0 | 1672x941 | 2.12 | unused source background |
| `src/assets/images/story/36-red-cliffs-chain-fleet.png` | 0 | 1672x941 | 2.13 | unused source background |
| `src/assets/images/story/37-yizhou-luo-road-ambush.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/38-yizhou-luo-road-supply-train.png` | 0 | 1672x941 | 2.96 | unused source background |
| `src/assets/images/story/39-nanzhong-captures-jungle-net.png` | 0 | 1672x941 | 3.12 | unused source background |
| `src/assets/images/story/40-nanzhong-captures-river-ford.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/41-wandering-night-camp.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/42-wandering-river-crossing.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/43-northern-qishan-snow-march.png` | 0 | 1672x941 | 3.03 | unused source background |
| `src/assets/images/story/44-northern-wei-fortress.png` | 0 | 1672x941 | 2.93 | unused source background |
| `src/assets/images/story/45-yizhou-council-at-river.png` | 0 | 1672x941 | 2.89 | unused source background |
| `src/assets/images/story/46-yizhou-mountain-gate.png` | 0 | 1672x941 | 3.01 | unused source background |
| `src/assets/images/story/47-jingzhou-crisis-watchtower-alarm.png` | 0 | 1672x941 | 2.81 | unused source background |
| `src/assets/images/story/48-jingzhou-crisis-refugee-court.png` | 0 | 1672x941 | 2.78 | unused source background |
| `src/assets/images/story/49-fan-castle-flood-rising-water.png` | 0 | 1672x941 | 2.62 | unused source background |
| `src/assets/images/story/50-fan-castle-flood-siege-engines.png` | 0 | 1672x941 | 2.71 | unused source background |
| `src/assets/images/story/51-jieting-crisis-supply-line.png` | 0 | 1672x941 | 3.08 | unused source background |
| `src/assets/images/story/52-jieting-crisis-mountain-camp.png` | 0 | 1672x941 | 2.64 | unused source background |
| `src/assets/images/story/53-chengdu-surrender-hall.png` | 0 | 1672x941 | 2.96 | unused source background |
| `src/assets/images/story/54-anti-dong-hulao-pass.png` | 0 | 1672x941 | 2.85 | unused source background |
| `src/assets/images/story/55-yellow-pursuit-ambush.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/56-yellow-pursuit-village-relief.png` | 0 | 1672x941 | 3.07 | unused source background |
| `src/assets/images/story/57-wolong-straw-boats.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/58-red-cliffs-wind-prayer.png` | 0 | 1672x941 | 2.78 | unused source background |
| `src/assets/images/story/59-yiling-baidi-mountain-retreat.png` | 0 | 1672x941 | 2.84 | unused source background |
| `src/assets/images/story/60-maicheng-isolation-snow-road.png` | 0 | 1672x941 | 2.74 | unused source background |
| `src/assets/images/story/61-yiling-fire-attack-riverbank.png` | 0 | 1672x941 | 2.60 | unused source background |
| `src/assets/images/story/62-hanzhong-rain-night-watch.png` | 0 | 1672x941 | 2.55 | unused source background |
| `src/assets/images/story/63-weishui-northbank-cavalry-screen.png` | 0 | 1672x941 | 2.74 | unused source background |
| `src/assets/images/story/64-nanzhong-forest-council.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/65-yizhou-luo-road-cliff-fortress.png` | 0 | 1672x941 | 2.36 | unused source background |
| `src/assets/images/story/66-yizhou-luo-road-mountain-scouts.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/67-nanzhong-captures-bamboo-gorge.png` | 0 | 1672x941 | 2.46 | unused source background |
| `src/assets/images/story/68-nanzhong-captures-river-night-camp.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/69-wandering-market-shelter.png` | 0 | 1672x941 | 2.31 | unused source background |
| `src/assets/images/story/70-wandering-cold-mountain-pass.png` | 0 | 1672x941 | 2.10 | unused source background |
| `src/assets/images/story/71-northern-supply-valley.png` | 0 | 1672x941 | 2.65 | unused source background |
| `src/assets/images/story/72-northern-mountain-war-council.png` | 0 | 1672x941 | 2.05 | unused source background |
| `src/assets/images/story/73-red-cliffs-chain-smoke.png` | 0 | 1672x941 | 2.20 | unused source background |
| `src/assets/images/story/74-wolong-river-strategy.png` | 0 | 1672x941 | 2.29 | unused source background |
| `src/assets/images/story/75-jingzhou-crisis-river-watchtowers.png` | 0 | 1672x941 | 2.38 | unused source background |
| `src/assets/images/story/76-fan-castle-flood-river-breach.png` | 0 | 1672x941 | 2.45 | unused source background |
| `src/assets/images/story/77-xuzhou-gate-council.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/78-xuzhou-night-evacuation.png` | 0 | 1672x941 | 2.33 | unused source background |
| `src/assets/images/story/79-anti-dong-coalition-council.png` | 0 | 1672x941 | 2.62 | unused source background |
| `src/assets/images/story/80-anti-dong-night-assault.png` | 0 | 1672x941 | 2.37 | unused source background |
| `src/assets/images/story/81-chengdu-surrender-court.png` | 0 | 1672x941 | 2.50 | unused source background |
| `src/assets/images/story/82-chengdu-outer-gate-surrender.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/83-wudu-yinping-cloud-road.png` | 0 | 1672x941 | 2.66 | unused source background |
| `src/assets/images/story/84-chencang-siege-fortress-standoff.png` | 0 | 1672x941 | 2.84 | unused source background |
| `src/assets/images/story/85-chencang-siege-engineering-camp.png` | 0 | 1672x941 | 2.49 | unused source background |
| `src/assets/images/story/86-weishui-camps-logistics.png` | 0 | 1672x941 | 2.53 | unused source background |
| `src/assets/images/story/87-weishui-camps-night-alarm.png` | 0 | 1672x941 | 2.40 | unused source background |
| `src/assets/images/story/88-lucheng-pursuit-valley-road.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/89-yizhou-luo-road-hidden-bridge.png` | 0 | 1672x941 | 2.42 | unused source background |
| `src/assets/images/story/90-nanzhong-captures-monsoon-ravine.png` | 0 | 1672x941 | 2.80 | unused source background |
| `src/assets/images/story/91-wandering-snow-shrine.png` | 0 | 1672x941 | 2.59 | unused source background |
| `src/assets/images/story/92-northern-supply-depot.png` | 0 | 1672x941 | 2.73 | unused source background |
| `src/assets/images/story/93-yizhou-mountain-pass-command-post.png` | 0 | 1672x941 | 2.70 | unused source background |
| `src/assets/images/story/94-red-cliffs-dawn-aftermath.png` | 0 | 1672x941 | 2.43 | unused source background |
| `src/assets/images/story/95-yellow-pursuit-rural-crossroads.png` | 0 | 1672x941 | 2.95 | unused source background |
| `src/assets/images/story/96-wolong-autumn-study.png` | 0 | 1672x941 | 2.56 | unused source background |
| `src/assets/images/story/97-fan-castle-flood-prison-camp.png` | 0 | 1672x941 | 2.15 | unused source background |
| `src/assets/images/story/98-jingzhou-crisis-secret-letter.png` | 0 | 1672x941 | 2.22 | unused source background |
| `src/assets/images/story/99-xuzhou-flooded-courtyard.png` | 0 | 1672x941 | 2.69 | unused source background |
| `src/assets/images/taoyuan-oath-title.png` | 3 | 1672x941 | 2.24 | none |