# RC107 · Exercise library expanded component + asset cleanup

## Purpose
RC107 fixes the exercise library expanded state and cleans active image asset paths without adding new images or a new render pipeline.

## Reference / carry-forward
- Active stable visual model from RC104 is kept: direct composite premium images for S2P1.
- Existing central renderer is reused: `assets/js/services/exercise-illustration-service.js`.
- Existing illustration manifest is reused: `assets/js/core/exercise-illustrations.js`.
- Existing CSS class family is reused: `.next-exercise-illustration*`, `.next-library-*`, `.next-button`, `.next-chip`.

## Expanded exercise component rebuild
`assets/js/renderers/library-renderer.js` now renders one clear expanded component:
- `.next-library-detail-inline`
- `.next-library-media-panel`
- `.next-library-visual-panel`
- `.next-library-video-panel`
- `.next-library-copy-panel`

The media panel contains the instruction image and video preview in a contained stack. The copy panel contains title, chips, server backup controls, facts and pass dosage. This prevents the previous drift where video, image, buttons and facts were styled against inconsistent legacy markup.

## OTA video embed fix
`assets/js/actions/library-actions.js` now calls `renderLibraryOtaYoutubePreview()` after an exercise is expanded, not only on a separate detail render path. OTA items therefore attempt to resolve and embed the YouTube video inside the expanded card instead of only showing an OTA link.

## Asset cleanup
Active backgrounds have moved out of `v98` into a stable active path:
- `assets/img/themes/exercise-backgrounds/neutral-soft.svg`
- `assets/img/themes/exercise-backgrounds/hockey-window-rink.svg`
- `assets/img/themes/exercise-backgrounds/downhill-alpine-terrace.svg`

RC109 removes the old archived version-folder copies after verifying active stable paths.

Generated fallback illustrations use active fallback paths:
- `assets/img/exercises/fallback/svg/`

RC109 removes old generated version-folder archives after verifying active fallback assets.

S2P1 approved premium images remain active in:
- `assets/img/exercises/premium/s2p1/`

## What is intentionally not changed
- No new image generation.
- No new background assets.
- No SVG fallback system beyond moving existing generated SVG fallback assets to the proper active fallback folder.
- No pass page rebuild.
- No new parallel visual renderer.

## QA checks
- JS syntax: all `assets/js/**/*.js`
- PHP lint: `ota_youtube_proxy.php`, `video_backup_api.php`
- Active JS has no versioned image-folder references.
- Manifest image paths all resolve to stable active folders.
- Manifest image paths all resolve.
- Screenshots created for mobile, iPad and desktop using fallback static rendering of the RC107 component structure.

## Browser-live limitation
Screenshots in this package are static fallback renderings. A real deploy/browser check is still needed for runtime OTA proxy behavior and exact CSS cascade under the production host.
