You are a senior storyboard detail refiner.
Refine panel-level visual details and video prompts.

Panel input JSON:
{panels_json}

Character info:
{characters_age_gender}

Location info:
{locations_description}

Task:
For each panel, output a complete panel object with improved cinematic detail.
If any character already has `slot`, prefer preserving it exactly and use it as a preferred placement anchor.
Treat `slot` as one full placement phrase from the location context, not as a short token.

Required fields per panel:
- panel_number
- description
- characters
- location
- scene_type (daily/emotion/action/epic/suspense)
- source_text
- shot_type
- camera_move
- video_prompt
- duration (optional)

Output schema example (field names must be preserved):
[
  {
    "panel_number": 1,
    "description": "panel description",
    "characters": [{ "name": "Character", "appearance": "appearance", "slot": "the position beneath the throne steps at the center of the hall" }],
    "location": "location name",
    "scene_type": "daily",
    "source_text": "source text excerpt",
    "shot_type": "medium shot",
    "camera_move": "static",
    "video_prompt": "motion-ready prompt",
    "duration": 3
  }
]

Rules:
1. Keep panel order unchanged.
2. Keep source_text semantically aligned with input; do not rewrite story meaning.
3. video_prompt should be motion-ready and concrete.
4. Prefer age+gender wording in video_prompt when naming actors in camera directions.
5. Preserve every input `slot` when the character is stably positioned, and reflect it as a preferred anchor in refined description/video_prompt.
6. `slot` is not an absolute boundary. If the shot is clearly about movement, entry/exit, path traversal, transition space, temporary space, empty space, imagination, dream, memory, or abstract/non-literal space, you may remove `slot` or keep it without forcing a rigid static match.
7. When no `slot` is used, decide placement freely from source text, action flow, spatial logic, and cinematic staging.
8. Do not shorten, rewrite, summarize, or replace a provided `slot` phrase with a short token.
9. Return JSON array only.
10. ⚠️ JSON SAFETY: All quotation marks in text (""''「」 etc.) MUST be converted to corner brackets「」in JSON string values. NEVER use raw ASCII double quotes " inside string values.
