# 200 — Media detail on Home

Built 2026-10-05 at the user's request. Replaces the addon's old media detail
in skin.milionar while preserving the cinematic hero and sidebar.

## Behaviour

- Hero stays pinned to the opened title, including its own resume state.
- Four visible actions: Play/Continue, add/remove from My movies/My series,
  More options, **Back**. Trailer and full plot are in More options; cast,
  collection and recommendations have rows, not duplicate buttons.
- Movies: Cast → Collection (when available) → Recommended → Similar.
- Series: Seasons → selected season's Episodes → Cast → Recommended → Similar.
  Season cards include names and episode counts. Specials are available too.
- Empty rows disappear. Similar excludes the opened title and recommendations.
- Back (button or remote) restores the preceding detail/season and selected
  card, then the originating window/control. Moving into the sidebar exits
  detail mode. Failed downloads preserve the preceding view.
- Existing `show_wcs_details` URLs enter this view through main.py. The native
  Info dialog redirects addon items with `milionar.tmdb` to the same entry.
  Other skins retain the original details dialog; person filmography dialogs
  and existing library/playback/game/channel actions are reused.

## Shared components and data

- `wcs/skin/detail_contract.py`: single row/control/string contract for Python
  and generated XML, with no Kodi dependency.
- `wcs/skin/detail.py`: presentation state, reversible navigation, cache-only
  row endpoint and action delegation. GUI readiness is checked before restoring
  focus; the sidebar exit guard stays set throughout a view transition.
- `wcs/library2/tmdb.py:detail`: credits/videos/recommendations/similar use the
  canonical movie/show cache. Only explicit detail/season opens fetch data.
- `gen_detail.py` generates `Includes_MilionarDetail.xml` using the cinematic
  hero/button/row templates in `gen_cinema.py`. No second hero implementation,
  new textures or separate playback/store. Cast and seasons share portrait cards.
- Non-episode row URLs stay unchanged when selecting a season. An in-flight
  row reads its URL identity, not the current Home title. Optional low-power
  limits/artwork apply to cast and related titles; episode rows are not truncated.
- Home properties use `milionar.detail.*`; the current row uses
  `milionar.row.detail`. The Home section's containers remain instantiated
  beneath the detail, preserving navigation state.

## Verification

- 33 targeted offline checks passed: detail 12, cinematic generator 6, library
  cards 15; Python compilation and all five touched XML files passed.
- Real Kodi 21.3 at 2560×1440: movie cast/collection, pinned hero, related-title
  navigation and selected-card restoration, series/episodes and Back to the
  selected season, More options/full plot, visible Back and native Info entry.
- Captures: `scripts/dialog_harness/out/live/detail_*.png` (including
  `detail_movie_final.png`, `detail_episodes.png`, `detail_season_back.png`,
  `detail_info_key.png`, `detail_back_focus.png`).
- Playback, trailers and live LLM/TTS calls were not started. No deployment
  or commit. The raw Estuary tree check cannot validate the existing packed
  asset layout (hundreds of pre-existing unpacked reference files are absent);
  that unrelated baseline limitation was not changed here.
