{
  "status": "completed",
  "applicable_count": 27,
  "completed_count": 27,
  "failed_count": 0,
  "schema_version": 5,
  "config_hash": "5296df5ace886c6e",
  "data": {
    "plans": {
      "bg_seabed_debris": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_waste_collection_ship": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_scrap_dump_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_parked_car_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_upscale_residential_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_luxury_house": {
        "status": "ok",
        "plan": {
          "group_id": "bg_luxury_house",
          "rationale_summary": "주간 침입의 연속성을 유지한다. 외벽의 1·2층 창문은 한 외부 배경으로 묶고 정원은 분리한다. 거실과 침실은 각각 단일 평면을 두며, 배정 숏이 없는 실내 배경은 빈 숏 목록으로 명시한다.",
          "floor_plans": [
            {
              "fp_id": "fp_luxury_house_yard",
              "loc_id": "L07",
              "space_key_hint": "yard",
              "sub_location": "garden_lawn",
              "scope": "Garden layout locating the lawn, perimeter wall, house edge, and second-floor landing zone.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L07",
              "space_key_hint": "exterior",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "거실 통유리창·벽 모퉁이와 2층 탈출 창문 외벽",
              "state_label_raw": "주간 침입 중인 주택 외벽. 열린 거실 통유리창과 몸을 숨길 벽 모퉁이, 잔디밭 위로 이어지는 2층 탈출 창문의 수직 관계를 유지한다. 로봇을 받는 순간과 셰퍼드에게 물리며 탈출하는 순간을 같은 외벽 배경으로 다룬다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S5_Shot10",
                "S5_Shot20"
              ],
              "bg_id": "L07B01"
            },
            {
              "loc_id": "L07",
              "space_key_hint": "yard",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "2층 창문 아래 정원 잔디밭",
              "state_label_raw": "주간 침입 대응 상황의 정원. 2층 창문 아래 착지한 현우를 여러 경찰이 둘러싸고 권총을 겨눌 수 있도록 잔디밭의 개방된 공간과 주택 외벽의 위치 관계를 유지한다.",
              "depends_on_fp": [
                "fp_luxury_house_yard"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S5_Shot24"
              ],
              "bg_id": "L07B02"
            }
          ],
          "gen_order": [
            "fp_luxury_house_yard",
            "L07B01",
            "L07B02"
          ]
        }
      },
      "bg_junkyard_sewer_access": {
        "status": "ok",
        "plan": {
          "group_id": "bg_junkyard_sewer_access",
          "rationale_summary": "각 location은 main 평면 1개로 유지한다. L32의 피로연 교차편집 샷은 입력 loc을 보존하되 비연결 인셋으로 표시한다. 건조한 하수도·무장 점거·침수된 외부 출구는 구분하며 HUD는 합성 요소다.",
          "floor_plans": [
            {
              "fp_id": "fp_junkyard_access",
              "loc_id": "L11",
              "space_key_hint": "main",
              "sub_location": "junkyard_and_manhole_access",
              "scope": "Junk piles, salvage work patch, departure path and manhole access.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_sewer_and_crosscut_inset",
              "loc_id": "L32",
              "space_key_hint": "main",
              "sub_location": "sewer_with_reception_crosscut_inset",
              "scope": "Ladder, sewer fork and outlet; separate reception inset for input-tagged cross-cuts, not connected.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L11",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "쓰레기 산의 로봇 발견 지점과 이탈 동선",
              "state_label_raw": "주간 쓰레기장. 고철 더미와 작업 공간, 아이들과 변장한 찰리의 이탈 동선을 유지한다. 로봇이 일어나며 밀어낸 고철은 국소 연속성으로 처리한다. S6_Shot30의 얼굴 사진과 NEGATIVE 표시는 배경 변형이 아닌 주관 시점 합성 요소다.",
              "depends_on_fp": [
                "fp_junkyard_access"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S6_Shot21",
                "S6_Shot30",
                "S6_Shot46"
              ],
              "bg_id": "L11B01"
            },
            {
              "loc_id": "L32",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "피로연장 교차편집 인셋 — 입력 L32 태그 보존",
              "state_label_raw": "무장 세력이 피로연장을 점거한 밤. 취객의 턱을 잡는 손과 미연을 노려보는 박철진 뒤로 위협받는 하객 무리의 흐릿한 실내 배경을 둔다. 원문상 하수도가 아닌 피로연장이므로 평면의 비연결 인셋을 사용하고 두 공간의 물리적 연결은 설정하지 않는다.",
              "depends_on_fp": [
                "fp_sewer_and_crosscut_inset"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S26_Shot5",
                "S26_Shot8"
              ],
              "bg_id": "L32B02"
            },
            {
              "loc_id": "L32",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "갈림길 이후의 좁은 지하 하수도",
              "state_label_raw": "해수 유입 이전, 통행 가능한 본래 상태의 야간 하수도. 현우가 앰버를 업고 달릴 좁은 통로와 뒤따르는 찰리의 여유 공간을 확보한다. 도주는 인물 액션이며 배경 구조의 파괴나 침수는 아직 없다.",
              "depends_on_fp": [
                "fp_sewer_and_crosscut_inset"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S26_Shot12"
              ],
              "bg_id": "L32B03"
            },
            {
              "loc_id": "L32",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "하수도 출구 밖 검은 해수면",
              "state_label_raw": "해수 급류에 밀려 하수도 밖으로 배출된 직후의 긴박한 탈출 상태. 검은 바닷물의 거친 수면과 포말을 앰버 얼굴 및 맞잡은 손 뒤에 유지한다. 두 샷 모두 터널 내부가 아닌 외부 수면 높이의 플레이트다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S36_Shot5",
                "S36_Shot6"
              ],
              "bg_id": "L32B01"
            }
          ],
          "gen_order": [
            "fp_junkyard_access",
            "fp_sewer_and_crosscut_inset",
            "L11B01",
            "L32B02",
            "L32B03",
            "L32B01"
          ]
        }
      },
      "bg_refugee_residential_lanes": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_refugee_market_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_artificial_seawall": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_military_truck_front_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_refugee_court": {
        "status": "ok",
        "plan": {
          "group_id": "bg_refugee_court",
          "rationale_summary": "각 장소에 단일 main 평면을 둔다. 법정의 입장·충돌과 야간 쓰레기 더미를 구분하며, L16에 배정된 회상 숏은 법정 구조를 참조하지 않는 흑백 미국 거리 플레이트로 처리한다.",
          "floor_plans": [
            {
              "fp_id": "fp_refugee_court_interior",
              "loc_id": "L16",
              "space_key_hint": "main",
              "sub_location": "courtroom",
              "scope": "Courtroom entry, judge's table and chair, document stacks, and open floor for confrontation.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_refugee_court_dump",
              "loc_id": "L18",
              "space_key_hint": "main",
              "sub_location": "exterior_rubbish_area",
              "scope": "Exterior rubbish area: heap footprints, waking spot, wallet landing area, and walking clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L16",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "허름한 재판소 내부 출입문과 법정",
              "state_label_raw": "낮이지만 어두침침한 법정. 경찰이 현우를 끌고 들어오는 문 안쪽 바닥과 재판관의 허름한 탁자, 쌓인 서류를 유지한다.",
              "depends_on_fp": [
                "fp_refugee_court_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot1"
              ],
              "bg_id": "L16B01"
            },
            {
              "loc_id": "L16",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "재판관 탁자 앞 바닥",
              "state_label_raw": "동일한 낮 법정의 충돌 순간. 의자에서 떨어진 재판관 위로 현우가 엎드린 낮은 시점이며, 별도의 유혈이나 실내 약탈 흔적은 추가하지 않는다.",
              "depends_on_fp": [
                "fp_refugee_court_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot14"
              ],
              "bg_id": "L16B02"
            },
            {
              "loc_id": "L16",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "dream_or_vision_state",
              "surface_role": "exterior_plate",
              "sub_location_label": "회상 속 미국 도시 거리 — 입력상 L16 배정",
              "state_label_raw": "법정이 아닌 야간 미국 거리의 흑백 악몽 인서트. 미연과 어린 두 아이가 웅크린 거리 바닥을 중심으로, 끊기는 프레임과 총격 섬광의 불연속 조명을 반영한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot19"
              ],
              "bg_id": "L16B03"
            },
            {
              "loc_id": "L18",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "난민 재판소 밖 황폐한 쓰레기 더미",
              "state_label_raw": "어둡고 황폐한 야간 쓰레기 더미. 현우의 각성, 지갑 속 신분증 확인, 빈 지갑 투척 모두 같은 더미와 바닥 상태를 공유하며 소품 동작만 달라진다.",
              "depends_on_fp": [
                "fp_refugee_court_dump"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S9_Shot1",
                "S9_Shot6",
                "S9_Shot8"
              ],
              "bg_id": "L18B01"
            }
          ],
          "gen_order": [
            "fp_refugee_court_interior",
            "fp_refugee_court_dump",
            "L16B01",
            "L16B02",
            "L16B03",
            "L18B01"
          ]
        }
      },
      "bg_flashback_urban_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_alley_restaurant": {
        "status": "ok",
        "plan": {
          "group_id": "bg_alley_restaurant",
          "rationale_summary": "단일 식당 평면에 외진 탁자와 경광등 벽면을 함께 배치한다. 밤의 조용한 거래 상태와 경광등 점등 상태를 구분하되, 침입이나 군중 퇴장은 설정하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_alley_restaurant",
              "loc_id": "L19",
              "space_key_hint": "main",
              "sub_location": "restaurant_interior",
              "scope": "Restaurant interior with entrance, secluded transaction table and wall-mounted red warning light.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L19",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "허름한 식당 내부의 외진 구석 탁자",
              "state_label_raw": "밤, 외진 탁자에서 은밀한 돈 봉투 거래가 이루어지는 조용한 식당. 낡은 벽과 탁자 배치를 유지하며 경광등 점등 전 상태.",
              "depends_on_fp": [
                "fp_alley_restaurant"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S10_Shot1",
                "S10_Shot5"
              ],
              "bg_id": "L19B02"
            },
            {
              "loc_id": "L19",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "동일 식당의 붉은 경광등 부착 벽면",
              "state_label_raw": "밤, 기존 식당 구조와 집기는 그대로인 채 사이렌에 맞춰 벽면 경광등이 강하게 점등하여 낡은 벽에 붉은 빛을 퍼뜨리는 상태. 침입·파손·군중 퇴장 없음.",
              "depends_on_fp": [
                "fp_alley_restaurant"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S10_Shot10"
              ],
              "bg_id": "L19B01"
            }
          ],
          "gen_order": [
            "fp_alley_restaurant",
            "L19B02",
            "L19B01"
          ]
        }
      },
      "bg_refugee_camp_gate": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_primary_container_home": {
        "status": "ok",
        "plan": {
          "group_id": "bg_primary_container_home",
          "rationale_summary": "각 location에 main 평면 1개를 유지한다. 공용실은 밤의 촛불과 낮의 화병 파손을 구분하고, 침실은 수면과 급보 도착 상태를 나눈다. S21의 장소 표제보다 지정 loc_id를 따르며 현관은 수색 파손의 여파를 반영한다.",
          "floor_plans": [
            {
              "fp_id": "fp_container_front",
              "loc_id": "L21",
              "space_key_hint": "main",
              "sub_location": "container_front_entry",
              "scope": "Container 7-31 front landing, doorway swing and immediate exterior approach.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_container_shared_interior",
              "loc_id": "L22",
              "space_key_hint": "main",
              "sub_location": "shared_living_dining",
              "scope": "Shared dining and living area, entrance, vase position and curtained bedroom boundary.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_amber_room",
              "loc_id": "L23",
              "space_key_hint": "main",
              "sub_location": "amber_sleeping_room",
              "scope": "Sleeping room with worn bed, doorway and clear passage between bed and entrance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L22",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "공용 식탁·생활공간과 헝겊 커튼 경계",
              "state_label_raw": "촛불 아래 식사와 바느질이 이어지는 밤의 생활공간. 식탁의 한 끼 식사와 헌 옷, 이후 펼친 약통을 연속성 소품으로 유지한다. 현관과 커튼 경계를 같은 공간에 두며, 다리의 피는 인물 요소로 한정한다.",
              "depends_on_fp": [
                "fp_container_shared_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S12_Shot5",
                "S12_Shot20",
                "S12_Shot23"
              ],
              "bg_id": "L22B02"
            },
            {
              "loc_id": "L22",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "공용 생활공간의 화병 자리와 현관 방향",
              "state_label_raw": "낮의 기존 생활공간에서 찰리가 화병을 깨뜨리는 국소적 사고. 파손 순간의 비산 파편은 액션 요소이며 이후 바닥 파편 위치를 유지한다. 방 전체가 약탈되거나 파괴된 상태로 확대하지 않는다.",
              "depends_on_fp": [
                "fp_container_shared_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S14_Shot2",
                "S14_Shot5",
                "S14_Shot8"
              ],
              "bg_id": "L22B01"
            },
            {
              "loc_id": "L23",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "앰버의 방, 낡은 침상",
              "state_label_raw": "앰버가 낡은 침상에서 평온하게 잠든 낮의 조용한 방. 장면 표제와 별개로 지정된 L23의 침실 구조를 유지한다.",
              "depends_on_fp": [
                "fp_amber_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S21_Shot1"
              ],
              "bg_id": "L23B02"
            },
            {
              "loc_id": "L23",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "앰버의 방, 열린 출입문",
              "state_label_raw": "라울이 급보를 전하러 들어온 직후의 낮 침실. 문은 열려 있고 침상과 출입 동선은 수면 장면과 동일하다. 보고되는 집 파괴를 이 침실 안의 직접적인 파손으로 옮기지 않는다.",
              "depends_on_fp": [
                "fp_amber_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S21_Shot4"
              ],
              "bg_id": "L23B01"
            },
            {
              "loc_id": "L21",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "ransacked",
              "surface_role": "exterior_plate",
              "sub_location_label": "7-31 표기가 있는 컨테이너 현관 앞",
              "state_label_raw": "민병대의 집 수색·파손 이후 낮의 현관 외부. 문 주변에 제한적인 교란과 파손 흔적을 반영하되 7-31 표기와 밀어 열 수 있는 문은 유지한다. 귀환부터 멱살 대치와 충격 반응까지 같은 외부 상태를 공유한다.",
              "depends_on_fp": [
                "fp_container_front"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S24_Shot3",
                "S24_Shot7",
                "S24_Shot9"
              ],
              "bg_id": "L21B01"
            }
          ],
          "gen_order": [
            "fp_container_front",
            "fp_container_shared_interior",
            "fp_amber_room",
            "L22B02",
            "L22B01",
            "L23B02",
            "L23B01",
            "L21B01"
          ]
        }
      },
      "bg_roadside_barrel_fire": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_junk_repair_shop": {
        "status": "ok",
        "plan": {
          "group_id": "bg_junk_repair_shop",
          "rationale_summary": "고물상 전체를 단일 평면으로 유지한다. 모니터의 현상금 정보, 훼손 전 영업 공간, 수하들의 침입, 총격 이후 혈흔을 구분하고 수리대·출입구·전화 위치를 고정한다.",
          "floor_plans": [
            {
              "fp_id": "fp_junk_repair_shop",
              "loc_id": "L25",
              "space_key_hint": "main",
              "sub_location": "junk_repair_shop",
              "scope": "Entire shop: appliance piles, repair desk, computer, wired phone, aisles and entrance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L25",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "evidence_display",
              "surface_role": "interior_room",
              "sub_location_label": "수리대의 낡은 컴퓨터 모니터",
              "state_label_raw": "낮, 오래된 모니터에 찰리 관련 뉴스와 붉은 '5억 원 현상금' 문구가 밝게 표시된 상태. 주변 수리대와 고물 배치는 유지.",
              "depends_on_fp": [
                "fp_junk_repair_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S15_Shot7"
              ],
              "bg_id": "L25B02"
            },
            {
              "loc_id": "L25",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "고물상 내부 출입 동선 및 전화가 놓인 수리대",
              "state_label_raw": "낮, 가전제품과 고물이 빽빽하게 쌓인 평상시의 훼손 없는 고물상. 출구로 이어지는 통로와 낡은 유선 전화기가 보이며, 퇴장과 직후 신고 전화 사이에 공간 변화는 없음.",
              "depends_on_fp": [
                "fp_junk_repair_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S15_Shot11",
                "S15_Shot13"
              ],
              "bg_id": "L25B04"
            },
            {
              "loc_id": "L25",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "수리대 앞 수하들과의 대면 공간",
              "state_label_raw": "낮, 수하들이 들어와 마츠다와 제보 대가를 흥정하는 총격 전 상태. 수리 중인 TV와 기존 고물 더미를 유지하며 혈흔이나 파손은 없음.",
              "depends_on_fp": [
                "fp_junk_repair_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot3"
              ],
              "bg_id": "L25B03"
            },
            {
              "loc_id": "L25",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "blood_scene",
              "surface_role": "interior_room",
              "sub_location_label": "총격이 발생한 수리대와 무전 보고 위치",
              "state_label_raw": "낮, 마츠다의 가슴에서 피가 튀는 총격 순간부터 책상에 엎어진 직후의 무전 보고까지. 혈흔 연속성은 수리대 주변에 국한하고 고물 더미와 가게 구조는 그대로 유지.",
              "depends_on_fp": [
                "fp_junk_repair_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot7",
                "S17_Shot9"
              ],
              "bg_id": "L25B01"
            }
          ],
          "gen_order": [
            "fp_junk_repair_shop",
            "L25B02",
            "L25B04",
            "L25B03",
            "L25B01"
          ]
        }
      },
      "bg_secondary_container_home": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_militia_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_militia_office",
          "rationale_summary": "단일 사무실 평면에 책상과 투척 대상인 나무 벽의 위치를 고정한다. 일반 집무 상태와 지도 중심 수색정보 전시 상태를 구분하며, 시간 미상의 53씬은 어두운 주간 실내로 통일한다.",
          "floor_plans": [
            {
              "fp_id": "fp_militia_office",
              "loc_id": "L28",
              "space_key_hint": "main",
              "sub_location": "militia_office",
              "scope": "Entire office: desk, speakerphone, visitor standing area and wooden knife-impact wall.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L28",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "민병대장 집무실 — 책상 맞은편과 나무 벽",
              "state_label_raw": "주간 집무실. 스피커폰이 있는 책상과 방문객 뒤 나무 벽의 위치를 고정한다. 단도 타격 지점과 박힌 칼의 연속성을 유지하며, 타격 순간의 파편은 해당 숏의 일시적 요소로 처리한다.",
              "depends_on_fp": [
                "fp_militia_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S18_Shot6",
                "S18_Shot8"
              ],
              "bg_id": "L28B02"
            },
            {
              "loc_id": "L28",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "evidence_display",
              "surface_role": "interior_room",
              "sub_location_label": "민병대장 집무실 — 한반도 지도 수색 책상",
              "state_label_raw": "시간 명시가 없어 주간으로 통일하되 실내는 어둡게 유지한다. 같은 책상 위에 커다란 한반도 지도를 펼친 수색정보 전시 상태. 지도 방향과 배치를 고정하고 다트 타격 지점이 잘 보이게 한다.",
              "depends_on_fp": [
                "fp_militia_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S53_Shot1",
                "S53_Shot5"
              ],
              "bg_id": "L28B01"
            }
          ],
          "gen_order": [
            "fp_militia_office",
            "L28B02",
            "L28B01"
          ]
        }
      },
      "bg_executive_car_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_detention_visiting_room": {
        "status": "ok",
        "plan": {
          "group_id": "bg_detention_visiting_room",
          "rationale_summary": "단일 면회실 평면과 낮의 조용한 배경을 공유한다. 중앙 탁자와 출입 동선을 고정하고, 찰리 사진은 탁자 위 소품으로 처리해 인물 행동만으로 배경을 분할하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_detention_visiting_room",
              "loc_id": "L30",
              "space_key_hint": "main",
              "sub_location": "visiting_room",
              "scope": "Spacious visiting room with central table, opposing seats and visitor entry circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L30",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "구치소 면회실 중앙 탁자",
              "state_label_raw": "낮의 넓고 조용한 면회실. 중앙 탁자와 마주 보는 좌석의 배치를 유지한다. 찰리 사진을 미는 손 클로즈업도 같은 탁자 표면을 사용하며, 얼굴의 피멍은 배경 혈흔으로 확장하지 않는다.",
              "depends_on_fp": [
                "fp_detention_visiting_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S23_Shot3",
                "S23_Shot7",
                "S23_Shot11"
              ],
              "bg_id": "L30B01"
            }
          ],
          "gen_order": [
            "fp_detention_visiting_room",
            "L30B01"
          ]
        }
      },
      "bg_outdoor_reception": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_relief_van_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_militia_road_checkpoint": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_city_church": {
        "status": "ok",
        "plan": {
          "group_id": "bg_city_church",
          "rationale_summary": "각 single_space에 main 평면도 1개씩 유지한다. L35의 문밖·공중 수색 컷은 입력 위치를 유지하되 계단 평면도와 분리한다. 지하 기도소는 점등·재회·긴급 탈출 상태를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_church_basement_stairs",
              "loc_id": "L35",
              "space_key_hint": "main",
              "sub_location": "basement_stairs",
              "scope": "Basement stair flight and landings connecting the prayer room to the ground floor.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_church_prayer_room",
              "loc_id": "L36",
              "space_key_hint": "main",
              "sub_location": "basement_prayer_room",
              "scope": "Prayer room with cross, table, chairs, reed organ, radio, lanterns and escape doorway.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L35",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "transition_zone",
              "sub_location_label": "지하 계단과 층계참",
              "state_label_raw": "촛불에 의지한 어두운 계단. 문 두드리는 소리에 일행이 숨죽이고 신부가 정숙을 지시하는 상태.",
              "depends_on_fp": [
                "fp_church_basement_stairs"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot8"
              ],
              "bg_id": "L35B03"
            },
            {
              "loc_id": "L35",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 출입문 바깥",
              "state_label_raw": "닫힌 성당 문과 외벽 앞 야간 방문자 도착 상태. 신부와 구도환이 마주 설 공간을 확보한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot13"
              ],
              "bg_id": "L35B01"
            },
            {
              "loc_id": "L35",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 일대 상공 수색 플레이트",
              "state_label_raw": "찰리를 찾는 외부 공중 수색 상태. 어두운 실제 밤하늘에 헬리콥터의 강한 하향 서치라이트가 관통하며 실내 계단은 보이지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot14"
              ],
              "bg_id": "L35B02"
            },
            {
              "loc_id": "L36",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "지하 기도소 공용 공간",
              "state_label_raw": "찰리의 전력으로 낡은 랜턴들이 밝아진 온전한 피난 공간. 십자가·탁자·의자·작은 풍금·라디오의 배치를 대화 장면까지 유지한다.",
              "depends_on_fp": [
                "fp_church_prayer_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S30_Shot6",
                "S32_Shot1"
              ],
              "bg_id": "L36B03"
            },
            {
              "loc_id": "L36",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "지하 기도소 재회 공간",
              "state_label_raw": "점등된 기도소에 구도환이 도착한 직후. 포옹과 현우의 제지 동작을 수용하도록 계단 출입구에서 실내 중앙까지 동선을 비운다.",
              "depends_on_fp": [
                "fp_church_prayer_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S30_Shot13",
                "S30_Shot17"
              ],
              "bg_id": "L36B01"
            },
            {
              "loc_id": "L36",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy_exit",
              "surface_role": "interior_room",
              "sub_location_label": "지하 기도소 출입구 안쪽",
              "state_label_raw": "민병대 접근 경고 후 긴급 이탈 준비. 신부의 손전등과 어두운 문밖으로 이어지는 실내 출구 동선을 강조하며 파손이나 침입 흔적은 없다.",
              "depends_on_fp": [
                "fp_church_prayer_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S32_Shot11",
                "S32_Shot13"
              ],
              "bg_id": "L36B02"
            }
          ],
          "gen_order": [
            "fp_church_basement_stairs",
            "fp_church_prayer_room",
            "L35B03",
            "L35B01",
            "L35B02",
            "L36B03",
            "L36B01",
            "L36B02"
          ]
        }
      },
      "bg_camp_church_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_combat_helicopter_cockpit": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_escape_van_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_camp_administration": {
        "status": "ok",
        "plan": {
          "group_id": "bg_camp_administration",
          "rationale_summary": "감금실은 단일 평면을 유지하고 심문·탈출·해일 침입 상태를 구분한다. 외부 계단과 3층 복도는 독립 동선 평면으로 계획하며, 창문·해일 샷도 지정된 L44에 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_miyeon_confinement_room",
              "loc_id": "L44",
              "space_key_hint": "main",
              "sub_location": "confinement_room",
              "scope": "Confinement room with interrogation seating, iron entrance door, window and escape clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L44",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "미연 감금실 — 심문",
              "state_label_raw": "야간 심문 중인 감금실. 미연의 의자와 철진이 마주 앉는 자리, 수하가 드나드는 철문의 위치를 고정한다. 인물의 피멍을 실내 혈흔으로 확대하지 않는다.",
              "depends_on_fp": [
                "fp_miyeon_confinement_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S31_Shot2",
                "S31_Shot5",
                "S31_Shot9"
              ],
              "bg_id": "L44B03"
            },
            {
              "loc_id": "L44",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy_exit",
              "surface_role": "interior_room",
              "sub_location_label": "미연 감금실 — 철문 파손과 긴급 탈출",
              "state_label_raw": "소화기로 낡은 철문 손잡이를 부수는 구조부터 모자의 재회와 긴급 퇴실까지. 타격 후 손잡이가 파손되고 문이 열린 상태를 이어가며 방 전체가 난장판이 되지는 않는다.",
              "depends_on_fp": [
                "fp_miyeon_confinement_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S34_Shot2",
                "S34_Shot5",
                "S34_Shot8"
              ],
              "bg_id": "L44B01"
            },
            {
              "loc_id": "L44",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "L44 창문면 — 해일 접근과 실내 침입",
              "state_label_raw": "실내에서 창문 너머로 검은 해일이 솟구치는 전경에서 창유리가 깨지고 바닷물이 들이닥치는 순간으로 진행한다. 접근 샷의 온전한 유리와 충돌 샷의 파편을 구분하며 실제 재난으로 표현한다.",
              "depends_on_fp": [
                "fp_miyeon_confinement_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S37_Shot2",
                "S37_Shot6"
              ],
              "bg_id": "L44B02"
            }
          ],
          "gen_order": [
            "fp_miyeon_confinement_room",
            "L44B03",
            "L44B01",
            "L44B02"
          ]
        }
      },
      "bg_tsunami_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flooded_settlement_surface": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_floating_cargo_container": {
        "status": "ok",
        "plan": {
          "group_id": "bg_floating_cargo_container",
          "rationale_summary": "L48은 single_space이므로 main 평면도 1개로 유지한다. 배정된 세 숏은 모두 실내가 아닌 해상 컨테이너 판자 위 장면이므로 동틀 무렵의 혈흔 있는 외부 표면으로 통합한다.",
          "floor_plans": [
            {
              "fp_id": "fp_floating_container_plank",
              "loc_id": "L48",
              "space_key_hint": "main",
              "sub_location": "floating_container_plank",
              "scope": "Floating plank footprint, Miyeon's position, and adjacent space for Hyeonwoo and Amber.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L48",
              "space_key_hint": "main",
              "time_phase": "dawn",
              "state_class": "blood_scene",
              "surface_role": "exterior_plate",
              "sub_location_label": "바다에 떠 있는 미연의 컨테이너 판자 위",
              "state_label_raw": "동틀 무렵 수면 위에 떠 있는 컨테이너 판자. 미연의 복부 출혈과 접촉부 혈흔을 유지하고, 현우가 끌어안는 자리와 앰버가 옆에 서는 자리를 동일한 표면 위에 확보한다. 원경과 클로즈업 모두 같은 해수면과 새벽빛을 유지한다.",
              "depends_on_fp": [
                "fp_floating_container_plank"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S38_Shot2",
                "S38_Shot6",
                "S38_Shot12"
              ],
              "bg_id": "L48B01"
            }
          ],
          "gen_order": [
            "fp_floating_container_plank",
            "L48B01"
          ]
        }
      },
      "bg_wet_escape_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_unattended_store": {
        "status": "ok",
        "plan": {
          "group_id": "bg_unattended_store",
          "rationale_summary": "외부 도로·점포 앞과 점포 내부를 각각 단일 도면으로 구성한다. 모두 낮이며, 내부는 ATM 파손과 흩어진 현금이 재회·출발 대화까지 유지되는 동일 상태로 묶는다.",
          "floor_plans": [
            {
              "fp_id": "fp_store_approach",
              "loc_id": "L50",
              "space_key_hint": "main",
              "sub_location": "road_and_store_frontage",
              "scope": "Road, store frontage, and approach axes toward the refugee camp and city.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_unattended_store",
              "loc_id": "L51",
              "space_key_hint": "main",
              "sub_location": "store_interior",
              "scope": "Entrance, merchandise aisles, medicine corner, ATM, and hiding sightlines behind shelves.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L50",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "난민촌 외곽 도로와 건너편 무인점포",
              "state_label_raw": "낮의 도로와 점포 전면. 경찰은 보이지 않으며, 난민촌을 돌아보는 시선과 도심 방향의 도주 동선을 유지한다.",
              "depends_on_fp": [
                "fp_store_approach"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S40_Shot2",
                "S40_Shot3"
              ],
              "bg_id": "L50B01"
            },
            {
              "loc_id": "L51",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "ransacked",
              "surface_role": "interior_room",
              "sub_location_label": "무인점포 진열대·현금인출기·출입구 연결 공간",
              "state_label_raw": "낮, 물품을 챙긴 진열대와 ATM 전면 패널의 국소 파손 상태. Shot11에서 관통 파손이 발생하고, 이후 재회와 출발 대화에서도 파손과 남은 현금 흔적을 유지한다. 점포 전체가 파괴된 상태는 아니다.",
              "depends_on_fp": [
                "fp_unattended_store"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S41_Shot11",
                "S41_Shot22",
                "S41_Shot27"
              ],
              "bg_id": "L51B01"
            }
          ],
          "gen_order": [
            "fp_store_approach",
            "fp_unattended_store",
            "L50B01",
            "L51B01"
          ]
        }
      },
      "bg_defense_minister_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_defense_minister_office",
          "rationale_summary": "L52의 단일 공간 규칙에 따라 평면과 배경을 통합한다. S43의 박철진 사무실 묘사는 위치 배정과 충돌하므로 입력 loc_id를 유지한다. 시간 미표기 S43은 S54의 낮과 연속되도록 가정한다.",
          "floor_plans": [
            {
              "fp_id": "fp_defense_minister_office",
              "loc_id": "L52",
              "space_key_hint": "main",
              "sub_location": "defense_minister_office",
              "scope": "Entire ministerial office, including desk, visitor seating and surrounding circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L52",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "국방장관 집무실",
              "state_label_raw": "낮의 화려한 집무실, 전화 통화와 대면 협상이 이루어지는 정상 상태. 인물의 표정·자세 변화는 배경 상태로 분리하지 않는다. S43_Shot5·S43_Shot10은 박철진 사무실을 가리키는 묘사와 입력 위치가 충돌하므로 L52 배정을 유지하되 제작 전 확인이 필요하다.",
              "depends_on_fp": [
                "fp_defense_minister_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S43_Shot1",
                "S43_Shot5",
                "S43_Shot10",
                "S54_Shot5",
                "S54_Shot6"
              ],
              "bg_id": "L52B01"
            }
          ],
          "gen_order": [
            "fp_defense_minister_office",
            "L52B01"
          ]
        }
      },
      "bg_factory_storage_garage": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_camper_vehicle": {
        "status": "ok",
        "plan": {
          "group_id": "bg_camper_vehicle",
          "rationale_summary": "각 single_space에 도면 1개를 배정한다. L54의 주행 외관, 침묵 속 대화, 누수 대응을 구분하고 외관은 실내 도면에 연결하지 않는다. 미배정 장소는 도면만 계획한다.",
          "floor_plans": [
            {
              "fp_id": "fp_camper_cabin",
              "loc_id": "L54",
              "space_key_hint": "main",
              "sub_location": "camper_cabin",
              "scope": "Unified cabin: driver seat, passenger seat, rear seating, bags, windows and roof leak points.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L54",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "주행 중 캠핑카 외관과 외곽 도로",
              "state_label_raw": "비 내리는 한적한 야간 도로를 달리는 낡은 캠핑카. 헤드라이트는 꺼져 있고 바퀴에서 빗물이 튄다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S45_Shot1"
              ],
              "bg_id": "L54B02"
            },
            {
              "loc_id": "L54",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "캠핑카 후방 좌석에서 운전석 방향",
              "state_label_raw": "작은 후방 전등 하나만 켜진 어두운 실내. 슬픔과 긴 침묵이 깔린 가운데 앰버가 운전석의 현우에게 항의한다.",
              "depends_on_fp": [
                "fp_camper_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S45_Shot8"
              ],
              "bg_id": "L54B03"
            },
            {
              "loc_id": "L54",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "캠핑카 좌석과 천장·창틀 누수 구역",
              "state_label_raw": "소나기가 천장과 창틀 여러 곳으로 새어 들어오는 실내. 작은 전등 아래 라울과 앰버가 옷가지로 누수를 막으려 분주히 팔을 뻗는다.",
              "depends_on_fp": [
                "fp_camper_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S45_Shot14"
              ],
              "bg_id": "L54B01"
            }
          ],
          "gen_order": [
            "fp_camper_cabin",
            "L54B02",
            "L54B03",
            "L54B01"
          ]
        }
      },
      "bg_rainy_outskirts_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_library": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_library",
          "rationale_summary": "각 위치는 main 평면도 하나로 유지한다. L57 외관 도착은 평면도 없는 별도 플레이트로, 실내는 대치와 심야 정적을 구분한다. L58 벽화와 통화 구석은 같은 아침 복도에 배치한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l57_reading_room_stacks",
              "loc_id": "L57",
              "space_key_hint": "main",
              "sub_location": "reading_room_and_stacks",
              "scope": "Reading room, entry door, disordered stacks, sleeping corner and old computer station.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l58_corridor_corner",
              "loc_id": "L58",
              "space_key_hint": "main",
              "sub_location": "corridor_and_secluded_corner",
              "scope": "Corridor with continuous mural wall, recessed call corner and connecting sightlines.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L57",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "exterior_plate",
              "sub_location_label": "미추홀도서관 정면 외벽과 차량 정차 지점",
              "state_label_raw": "비 내리는 밤의 도착 외관. 마른 넝쿨, 굵은 균열, 낡은 '미추홀도서관, 인천' 간판과 캠핑카 정차 공간. 실내 평면도 적용 대상이 아님.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S46_Shot1"
              ],
              "bg_id": "L57B01"
            },
            {
              "loc_id": "L57",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "방치된 열람실의 식사 자리",
              "state_label_raw": "밤의 임시 식사 자리에서 벌어지는 대치. 오래 쌓인 먼지와 거미줄, 어지러운 책장은 방치된 도서관의 기존 상태이며 새로 파괴된 흔적은 없음.",
              "depends_on_fp": [
                "fp_l57_reading_room_stacks"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S46_Shot21"
              ],
              "bg_id": "L57B02"
            },
            {
              "loc_id": "L57",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "열람실에 이어진 먼지 쌓인 서가",
              "state_label_raw": "일행이 잠든 뒤 정적에 잠긴 서가. 기존 먼지와 책의 흐트러짐을 유지하고, 어두운 주변과 책 페이지에 닿는 찰리의 푸른 눈빛이 대비됨.",
              "depends_on_fp": [
                "fp_l57_reading_room_stacks"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S46_Shot26"
              ],
              "bg_id": "L57B03"
            },
            {
              "loc_id": "L58",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "quiet",
              "surface_role": "transition_zone",
              "sub_location_label": "벽화가 이어지는 복도와 외진 통화 구석",
              "state_label_raw": "이른 아침의 조용한 복도. 파란 바다 선을 따라 해남의 가족·친구·해양 생물·야자수 벽화가 이어지며 아직 작업 중. 같은 복도의 외진 통화 구석은 찰리가 현우 뒤로 접근할 공간과 시선을 확보. 벽화는 실제 크레파스 그림.",
              "depends_on_fp": [
                "fp_l58_corridor_corner"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S47_Shot5",
                "S47_Shot15",
                "S47_Shot17"
              ],
              "bg_id": "L58B01"
            }
          ],
          "gen_order": [
            "fp_l57_reading_room_stacks",
            "fp_l58_corridor_corner",
            "L57B01",
            "L57B02",
            "L57B03",
            "L58B01"
          ]
        }
      },
      "bg_desolate_paved_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_checkpoint_bypass_trail": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rest_stop_service_station": {
        "status": "ok",
        "plan": {
          "group_id": "bg_rest_stop_service_station",
          "rationale_summary": "입력의 L61 배정을 유지하되 Shot47·50은 마트가 아닌 캠핑카 사고 장면으로 표현한다. L61 단일 도면에 비연결 삽입 공간을 명시하고, 무장 위협·파손·의식 저하 시점을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l61_store_and_assigned_inserts",
              "loc_id": "L61",
              "space_key_hint": "main",
              "sub_location": "store_and_disconnected_camper_inserts",
              "scope": "Store layout plus disconnected overturned-camper insert geometry; no physical connection implied.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L61",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "휴게소 마트 약품 코너와 인접 통로",
              "state_label_raw": "낮, 정돈된 약품 진열대 사이에서 조일광이 아이들과 찰리를 산탄총으로 위협하는 대치. 아직 천장 총탄 구멍과 무너진 상품은 없다. TV·테이블·구석 반사경과 출입구의 위치를 유지한다.",
              "depends_on_fp": [
                "fp_l61_store_and_assigned_inserts"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot12"
              ],
              "bg_id": "L61B02"
            },
            {
              "loc_id": "L61",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "ransacked",
              "surface_role": "exterior_plate",
              "sub_location_label": "도로변 쓰레기 둔덕의 전복 캠핑카 외부 — 입력상 L61",
              "state_label_raw": "낮, 쓰레기 둔덕에 충돌하여 거꾸로 뒤집히고 찌그러진 캠핑카 잔해. 뽀얀 먼지와 짙은 연기가 분출한다. 마트 외관이나 주유장으로 대체하지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot47"
              ],
              "bg_id": "L61B03"
            },
            {
              "loc_id": "L61",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "dream_or_vision_state",
              "surface_role": "interior_room",
              "sub_location_label": "전복 캠핑카 내부에서 깨진 창을 보는 시점 — 입력상 L61",
              "state_label_raw": "낮 사고 직후, 의식을 잃어가는 현우의 주관 시점. 뒤집힌 실내의 전구가 희미하게 깜빡이고 연기와 깨진 유리 너머로 태진과 은영이 몸을 굽혀 들여다본다. 장면의 미연 오인으로 이어지는 흐린 지각이며 공간 자체를 환상적으로 변형하지 않는다.",
              "depends_on_fp": [
                "fp_l61_store_and_assigned_inserts"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot50"
              ],
              "bg_id": "L61B01"
            }
          ],
          "gen_order": [
            "fp_l61_store_and_assigned_inserts",
            "L61B02",
            "L61B03",
            "L61B01"
          ]
        }
      },
      "bg_drone_pursuit_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_auto_repair_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_auto_repair_complex",
          "rationale_summary": "공간별 단일 평면을 유지하고 창고의 침상·정비 구역을 통합한다. 샷에 지정된 위치를 우선하며 공터는 낮의 재회, 다음날 아침, 먼지 이는 출발 상태로 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_repair_storage",
              "loc_id": "L67",
              "space_key_hint": "main",
              "sub_location": "storage_and_repair_bay",
              "scope": "Integrated storage interior with cot, tool access, camper repair bay, speakers and entrance.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_repair_forecourt",
              "loc_id": "L69",
              "space_key_hint": "main",
              "sub_location": "repair_forecourt",
              "scope": "Forecourt layout with camper parking, building thresholds and vehicle exit clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L67",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "록밴드 포스터가 붙은 창고 겸 정비 공간",
              "state_label_raw": "낮이지만 어두운 실내. 침상에서 정비 중인 캠핑카까지 시선이 이어지고, 큰 펜치와 공구, 거대한 스피커, 록밴드 포스터가 놓인 일상적인 작업 상태.",
              "depends_on_fp": [
                "fp_repair_storage"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S50_Shot1",
                "S50_Shot8",
                "S50_Shot10"
              ],
              "bg_id": "L67B01"
            },
            {
              "loc_id": "L69",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "카센터 앞 공터의 건물 인접 구역",
              "state_label_raw": "낮의 평상시 공터. 샷 지정 위치에 따라 재회 장면을 실외에 배치하며 카센터와 컨테이너 식당의 외부 관계를 유지한다.",
              "depends_on_fp": [
                "fp_repair_forecourt"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot5"
              ],
              "bg_id": "L69B01"
            },
            {
              "loc_id": "L69",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "카센터 앞 공터의 캠핑카 주차 구역",
              "state_label_raw": "다음날 아침, 출발 전 고요한 공터와 그대로 남아 있는 캠핑카. 편지를 확인하는 샷의 지정 실외 위치를 유지하며 실내 침상은 추가하지 않는다.",
              "depends_on_fp": [
                "fp_repair_forecourt"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot19"
              ],
              "bg_id": "L69B03"
            },
            {
              "loc_id": "L69",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "카센터 공터의 차량 출구",
              "state_label_raw": "다음날 아침의 급박한 출발. 캠핑카 후면 너머로 공터 밖 주행 동선이 열리고 바퀴 뒤로 거친 흙먼지가 피어오른다.",
              "depends_on_fp": [
                "fp_repair_forecourt"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot23"
              ],
              "bg_id": "L69B02"
            }
          ],
          "gen_order": [
            "fp_repair_storage",
            "fp_repair_forecourt",
            "L67B01",
            "L69B01",
            "L69B03",
            "L69B02"
          ]
        }
      },
      "bg_solitary_country_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_swamp_approach_trail": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_swamp_mud_clearing": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_forest_trap_site": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_prisoner_transport_cage": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_street_overview": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_ruined_village_church": {
        "status": "ok",
        "plan": {
          "group_id": "bg_ruined_village_church",
          "rationale_summary": "성당 앞마당과 내부에 각 1개 평면도를 둔다. 외부의 군중·진입, 내부의 심문·케이지 공개·화살 피격 상태를 구분하며 단상과 발코니는 내부 단일 공간으로 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_church_forecourt",
              "loc_id": "L77",
              "space_key_hint": "main",
              "sub_location": "church_forecourt",
              "scope": "Forecourt layout linking truck stop, masked Jesus statue, crowd area and church threshold.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_church_interior",
              "loc_id": "L78",
              "space_key_hint": "main",
              "sub_location": "ruined_church_hall",
              "scope": "Ruined nave, dais and throne, upper archer balcony, barred gate and cage movement route.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L77",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 앞 군중 구역과 하회탈 예수 동상",
              "state_label_raw": "낮, 창과 몽둥이를 든 하회탈 군중이 밀집한 성당 앞. 두 팔을 벌린 예수 동상의 얼굴에도 하회탈이 씌워져 있다.",
              "depends_on_fp": [
                "fp_church_forecourt"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S57_Shot4",
                "S57_Shot10"
              ],
              "bg_id": "L77B02"
            },
            {
              "loc_id": "L77",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "성당 앞마당에서 출입문으로 이어지는 문턱",
              "state_label_raw": "낮, 결박된 현우와 앰버가 병사들에게 떠밀려 성당 문 안으로 들어가는 강제 진입 상태. 앞마당과 문틀의 연결을 유지한다.",
              "depends_on_fp": [
                "fp_church_forecourt"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S57_Shot11"
              ],
              "bg_id": "L77B01"
            },
            {
              "loc_id": "L78",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "파괴된 성당 내부의 단상과 거대한 의자",
              "state_label_raw": "낮, 스테인드글라스 빛이 들어오는 폐허 성당의 집회·심문 상태. 화려한 단상과 거대한 의자를 중심으로 군중과 상층 궁사들의 배치를 유지한다.",
              "depends_on_fp": [
                "fp_church_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S58_Shot6"
              ],
              "bg_id": "L78B02"
            },
            {
              "loc_id": "L78",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "evidence_display",
              "surface_role": "interior_room",
              "sub_location_label": "성당 내부 창살문과 강철 케이지 이동 구역",
              "state_label_raw": "낮, 창살문이 열리고 찰리가 갇힌 강철 케이지가 심문 공간으로 밀려 나와 공개되는 상태. 단상까지 이어지는 이동 동선을 확보한다.",
              "depends_on_fp": [
                "fp_church_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S58_Shot15"
              ],
              "bg_id": "L78B03"
            },
            {
              "loc_id": "L78",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "blood_scene",
              "surface_role": "interior_room",
              "sub_location_label": "성당 단상 앞 인질 대치 구역",
              "state_label_raw": "낮, 현우가 붙잡은 병사의 가슴에 화살이 꽂히는 치명적 피격 순간. 기존 단상·발코니 배치를 유지하고 누적된 혈흔이나 대규모 파괴는 추가하지 않는다.",
              "depends_on_fp": [
                "fp_church_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S58_Shot27"
              ],
              "bg_id": "L78B01"
            }
          ],
          "gen_order": [
            "fp_church_forecourt",
            "fp_church_interior",
            "L77B02",
            "L77B01",
            "L78B02",
            "L78B03",
            "L78B01"
          ]
        }
      },
      "bg_village_underground_prison": {
        "status": "ok",
        "plan": {
          "group_id": "bg_village_underground_prison",
          "rationale_summary": "감방과 복도는 위치별 단일 평면으로 분리한다. 세 숏은 같은 낮의 정적인 감금 환경을 공유하며, 인물의 피폭 상처나 외부 북소리는 배경 상태를 바꾸지 않는다. 복도는 직접 배정된 숏이 없어 평면만 설계한다.",
          "floor_plans": [
            {
              "fp_id": "fp_prison_cell",
              "loc_id": "L79",
              "space_key_hint": "main",
              "sub_location": "prison_cell",
              "scope": "Cell interior with iron-bar boundary, hay corner, pooled water and prisoner resting area.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L79",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "지하감옥 감방 내부",
              "state_label_raw": "낮이지만 어두운 지하 감방. 쇠창살, 구석의 건초와 바닥에 고인 물을 유지한다. 젖은 건초 처치, 피폭 상처 공개, 외부 북소리에 대한 반응 동안 공간 상태는 변하지 않는다.",
              "depends_on_fp": [
                "fp_prison_cell"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S59_Shot8",
                "S59_Shot24",
                "S59_Shot48"
              ],
              "bg_id": "L79B01"
            }
          ],
          "gen_order": [
            "fp_prison_cell",
            "L79B01"
          ]
        }
      },
      "bg_flashback_power_plant_field": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_underground_spring_cave": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flashback_village_waterway": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flashback_ration_site": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flashback_village_edge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flashback_departure_ridge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_fighting_arena": {
        "status": "ok",
        "plan": {
          "group_id": "bg_village_fighting_arena",
          "rationale_summary": "장소별 단일 도면을 유지한다. 노을빛 승강 케이지, 포격 침입, 물탱크 붕괴 직후, 능선의 고요를 구분하며 샷의 L87 배정을 보존한다.",
          "floor_plans": [
            {
              "fp_id": "fp_village_arena",
              "loc_id": "L87",
              "space_key_hint": "main",
              "sub_location": "arena_site",
              "scope": "Open arena, spectator stands, dais, cage emergence point and perimeter escape routes.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L87",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 앞 마을 격투장 중앙과 관중석·단상",
              "state_label_raw": "용병 투입과 포격으로 관중석에서 번진 폭발 연기와 먼지가 중앙을 뒤덮은 침입 상태. 횃불과 노을 역광 속 중앙의 고립 구도를 확보.",
              "depends_on_fp": [
                "fp_village_arena"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot75"
              ],
              "bg_id": "L87B01"
            },
            {
              "loc_id": "L87",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "ransacked",
              "surface_role": "exterior_plate",
              "sub_location_label": "물탱크 붕괴 지점의 백산 얼굴 클로즈업 배경",
              "state_label_raw": "물탱크 붕괴 직후의 젖고 파손된 마을 외부를 얕은 심도로 처리. 붉은 노을 유지. 얼굴의 짓무름은 인물 분장이며 배경 혈흔으로 확장하지 않음.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot104"
              ],
              "bg_id": "L87B03"
            },
            {
              "loc_id": "L87",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "마을을 벗어난 능선의 석양 조망",
              "state_label_raw": "시간 경과 후 소란이 가라앉은 능선과 지는 해. 손을 맞잡은 두 인물의 후면 실루엣이 읽히도록 낮은 능선 윤곽과 열린 노을 하늘 확보.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot129"
              ],
              "bg_id": "L87B02"
            }
          ],
          "gen_order": [
            "fp_village_arena",
            "L87B01",
            "L87B03",
            "L87B02"
          ]
        }
      },
      "bg_water_tower_square": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_overlook_ridge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_moonlit_rural_sky": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_food_storehouse": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_bonfire_clearing": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_top_travel_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_food_transport_fork": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_hill_entry": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_robot_warehouse": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_robot_warehouse",
          "rationale_summary": "각 단일 공간에 도면 1개씩 배정한다. 창고의 위협·대화·아기새 발견은 동일한 낮의 정적 배경을 공유하며, 상자와 둥지 위치를 고정한다. 공터는 배치만 계획하고 미배정 숏의 배경은 생성하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_warehouse_interior",
              "loc_id": "L98",
              "space_key_hint": "main",
              "sub_location": "warehouse_interior",
              "scope": "Warehouse layout: half-open door, machine parts, broken robot pile, shaded refuge and nest box.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L98",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "폐창고 내부의 어두운 은신 구석과 상자 뒤 둥지",
              "state_label_raw": "낮이지만 내부는 어둡고 정적이다. 반쯤 열린 문으로 들어오는 외광, 거대한 기계 부품과 한 귀퉁이의 고장 난 로봇 더미를 유지한다. B-200의 은신처와 아기새 둥지는 같은 구석에 고정하며, S64_Shot27에서는 가림 상자를 치워 둥지가 드러난다. 인물의 위협이나 온화한 태도는 배경 훼손 또는 별도 환경 상태로 취급하지 않는다.",
              "depends_on_fp": [
                "fp_warehouse_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S64_Shot9",
                "S64_Shot18",
                "S64_Shot27"
              ],
              "bg_id": "L98B01"
            }
          ],
          "gen_order": [
            "fp_warehouse_interior",
            "L98B01"
          ]
        }
      },
      "bg_collapsed_department_store": {
        "status": "ok",
        "plan": {
          "group_id": "bg_collapsed_department_store",
          "rationale_summary": "외부·1층·지하의 공간 배치를 분리하고 붕괴 구멍의 수직 시선을 맞춘다. 외부의 평온한 생태와 1층의 붕괴·구조 도착 상태를 구분하며, 미배정 지하 공간도 계획한다.",
          "floor_plans": [
            {
              "fp_id": "fp_store_exterior",
              "loc_id": "L100",
              "space_key_hint": "main",
              "sub_location": "overgrown_approach",
              "scope": "Site layout of approach, pools, vegetation, facade breach and elevated rubble lookout",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_store_ground_floor",
              "loc_id": "L101",
              "space_key_hint": "main",
              "sub_location": "ground_floor_collapse",
              "scope": "Ground-floor ruins, directory, escalator access, collapse rim and vertical rescue sightlines",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L100",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "이끼 낀 접근로와 백화점 외벽 틈새, 높은 잔해",
              "state_label_raw": "낮의 고요한 폐허. 반쯤 붕괴된 외벽과 이끼, 고인 웅덩이, 무성한 나무와 꽃. 높은 잔해의 깊은 그늘에서도 아래 진입 틈새가 보인다. 측정기와 얼굴 클로즈업 뒤에도 같은 식생을 유지한다.",
              "depends_on_fp": [
                "fp_store_exterior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S65_Shot4",
                "S65_Shot11",
                "S65_Shot17"
              ],
              "bg_id": "L100B01"
            },
            {
              "loc_id": "L101",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "1층 바닥의 붕괴 구멍 가장자리",
              "state_label_raw": "기존 지진 폐허 안에서 바닥이 추가 붕괴하는 순간. 손전등과 외벽 틈의 약한 자연광 아래, 매달린 사람을 붙잡을 수 있는 바닥 가장자리와 부서지는 슬래브, 아래로 열린 어두운 낙하 공간을 확보한다.",
              "depends_on_fp": [
                "fp_store_ground_floor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S66_Shot9"
              ],
              "bg_id": "L101B02"
            },
            {
              "loc_id": "L101",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "붕괴 후 1층 구조 구멍과 한수가 선 잔해",
              "state_label_raw": "한수의 구조 도착 상태. 확대된 바닥 구멍에서 굵은 밧줄이 지하로 내려오고, 상부 잔해에는 구조자가 설 공간이 있다. 지하에서 올려다보는 샷에도 동일한 1층 슬래브 하부와 구멍 윤곽을 유지한다. 낮이지만 내부는 어둡고 빗물이 틈으로 스민다.",
              "depends_on_fp": [
                "fp_store_ground_floor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S66_Shot31",
                "S66_Shot40"
              ],
              "bg_id": "L101B01"
            }
          ],
          "gen_order": [
            "fp_store_exterior",
            "fp_store_ground_floor",
            "L100B01",
            "L101B02",
            "L101B01"
          ]
        }
      },
      "bg_village_combat_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_abandoned_laboratory": {
        "status": "ok",
        "plan": {
          "group_id": "bg_coastal_abandoned_laboratory",
          "rationale_summary": "폐연구소의 층별 구조와 꽃밭 동선을 보존한다. L111은 지정된 샷 귀속을 유지하며 트럭 탑승의 노을, 부상자의 야간 짐칸, 구조대가 나타난 문턱을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_truck_layout",
              "loc_id": "L111",
              "space_key_hint": "main",
              "sub_location": "truck_cabin_and_cargo_compartment",
              "scope": "Truck cabin, cargo compartment, windows and boarding doorway used in the assigned shots.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L111",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "제비꽃밭 구조 트럭의 열린 탑승문 바깥",
              "state_label_raw": "노을 속 추격 현장에서 급히 트럭에 올라타는 탈출 순간; 열린 문과 차체 가장자리, 뒤편 꽃밭의 공간 연속성",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot38"
              ],
              "bg_id": "L111B01"
            },
            {
              "loc_id": "L111",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "blood_scene",
              "surface_role": "interior_room",
              "sub_location_label": "도로에 멈춘 트럭의 짐칸 내부",
              "state_label_raw": "연료가 떨어져 멈춘 트럭의 어두운 짐칸; 부상자의 출혈은 국소적으로 유지하고 창밖 빗기운을 반영",
              "depends_on_fp": [
                "fp_truck_layout"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot61"
              ],
              "bg_id": "L111B03"
            },
            {
              "loc_id": "L111",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "정차 트럭의 활짝 열린 문과 야간 도로",
              "state_label_raw": "빗소리가 이어지는 밤, 열린 트럭 문 너머 구조대의 손전등이 내부를 강타하고 성인 남성 실루엣이 문밖을 채움",
              "depends_on_fp": [
                "fp_truck_layout"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot65"
              ],
              "bg_id": "L111B02"
            }
          ],
          "gen_order": [
            "fp_truck_layout",
            "L111B01",
            "L111B03",
            "L111B02"
          ]
        }
      },
      "bg_military_hospital": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_town_approach_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_hill_overlook": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_cliff_edge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_laboratory_nearby_chase_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rainstorm_truck_stop_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_local_health_clinic": {
        "status": "ok",
        "plan": {
          "group_id": "bg_local_health_clinic",
          "rationale_summary": "병실 전체를 하나의 평면으로 고정한다. 같은 밤 공간에서 응급치료 후의 조용한 회복 상태와 합병증으로 의료진·동행자들이 모인 긴박한 상태를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_mokpo_clinic_ward",
              "loc_id": "L115",
              "space_key_hint": "main",
              "sub_location": "clinic_ward",
              "scope": "Entire ward with Amber's bed, bedside gathering area, and entrance circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L115",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "목포 보건소 병실 — 앰버의 침상과 주변",
              "state_label_raw": "밤, 응급치료 후 앰버가 잠든 조용한 병실. 침상 주변의 면회와 쿠마와의 재회가 같은 공간에서 이어진다.",
              "depends_on_fp": [
                "fp_mokpo_clinic_ward"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S73_Shot2",
                "S73_Shot8"
              ],
              "bg_id": "L115B02"
            },
            {
              "loc_id": "L115",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "목포 보건소 병실 — 진료 중인 침상 주변",
              "state_label_raw": "밤, 앰버의 고열과 합병증으로 의사와 동행자들이 침상 곁에 모인 긴박한 진료 상태. 기존 병실 배치 유지.",
              "depends_on_fp": [
                "fp_mokpo_clinic_ward"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S76_Shot4",
                "S76_Shot9"
              ],
              "bg_id": "L115B01"
            }
          ],
          "gen_order": [
            "fp_mokpo_clinic_ward",
            "L115B02",
            "L115B01"
          ]
        }
      },
      "bg_harbor_village_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_street_food_stall": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_airfield": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_airfield",
          "rationale_summary": "입력의 shot별 loc_id를 유지하고 장소당 단일 도면을 둔다. L119 도면에 헬기 객실 인서트를 포함하며, 격납고 정적·도착·가동과 낮 객실·활주로를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_hangar_and_cabin",
              "loc_id": "L119",
              "space_key_hint": "main",
              "sub_location": "hangar_and_helicopter_cabin",
              "scope": "Hangar aircraft bays and doorway apron, with a separate helicopter cabin inset for the flight insert.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L119",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "격납고 내부 — 방치된 경비행기 전경",
              "state_label_raw": "어두운 대형 격납고에 녹슬고 날개가 부서진 경비행기들이 방치된 정적. 항공기 사이 통로와 큰 출입문 축을 유지한다.",
              "depends_on_fp": [
                "fp_hangar_and_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S75_Shot4"
              ],
              "bg_id": "L119B05"
            },
            {
              "loc_id": "L119",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "격납고 큰 문 앞 진입부",
              "state_label_raw": "신부가 달려오는 야간 진입 동선. 낡은 대형 문과 문 앞 지면, 어두운 격납고 내부가 이어지는 문턱을 보인다.",
              "depends_on_fp": [
                "fp_hangar_and_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S75_Shot8"
              ],
              "bg_id": "L119B03"
            },
            {
              "loc_id": "L119",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "격납고 내부 — 항공기 가동 성공",
              "state_label_raw": "경비행기들이 시동을 건 직후의 활기. 검은 배기가스와 불안정하게 점등된 전구, 터진 전구 하나를 남기며 찰리의 전신 포즈를 위한 전경을 확보한다.",
              "depends_on_fp": [
                "fp_hangar_and_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot18"
              ],
              "bg_id": "L119B04"
            },
            {
              "loc_id": "L119",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "비행 중 헬기 객실 — 제비꽃 인서트",
              "state_label_raw": "낮 비행 중인 헬기 객실. 창으로 들어오는 자연광과 흐릿한 좌석·객실 표면만 남겨 손바닥 위 보라색 제비꽃 클로즈업을 받친다. 격납고는 보이지 않는다.",
              "depends_on_fp": [
                "fp_hangar_and_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot43"
              ],
              "bg_id": "L119B01"
            },
            {
              "loc_id": "L119",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "헬기 출발 후 텅 빈 활주로",
              "state_label_raw": "낮의 비어 있는 폐공항 활주로. 이끼와 갈라진 포장면이 먼 소실점까지 이어지고, 배낭을 멘 두 사람이 나란히 걸을 넓은 동선을 확보한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot46"
              ],
              "bg_id": "L119B02"
            }
          ],
          "gen_order": [
            "fp_hangar_and_cabin",
            "L119B05",
            "L119B03",
            "L119B04",
            "L119B01",
            "L119B02"
          ]
        }
      },
      "bg_departure_helicopter_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_pier": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_storm_crossing_ship": {
        "status": "ok",
        "plan": {
          "group_id": "bg_storm_crossing_ship",
          "rationale_summary": "각 장소에 main 평면도 1개를 유지한다. 선원실은 휴식과 선체 급경사를 구분하고, 갑판의 태풍 활동과 무음의 수중 침강은 별도 배경으로 둔다. 조타실은 배정 숏이 없어 평면도만 계획한다.",
          "floor_plans": [
            {
              "fp_id": "fp_ship_deck",
              "loc_id": "L122",
              "space_key_hint": "main",
              "sub_location": "deck_and_sea_edge",
              "scope": "Deck footprint, support posts, cargo positions and overboard edge; excludes deep water.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_crew_cabin",
              "loc_id": "L123",
              "space_key_hint": "main",
              "sub_location": "crew_cabin",
              "scope": "Compact two-person cabin with sliding door, sofa and adjacent impact wall.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L123",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "작은 선원실 소파 주변",
              "state_label_raw": "야간의 평온한 휴식 상태. 두 사람이 기대어 앉는 소파와 가까운 벽이 보이는 좁은 선원실.",
              "depends_on_fp": [
                "fp_crew_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S79_Shot6"
              ],
              "bg_id": "L123B02"
            },
            {
              "loc_id": "L123",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "급격히 기우는 선원실",
              "state_label_raw": "폭음과 선체 급경사로 휴식이 깨지는 순간. 기존 선원실 구조와 집기는 유지하며 기울어진 바닥·벽 구도로 충격을 표현한다. 파손이나 침수는 추가하지 않는다.",
              "depends_on_fp": [
                "fp_crew_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S79_Shot8",
                "S79_Shot9"
              ],
              "bg_id": "L123B01"
            },
            {
              "loc_id": "L122",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "exterior_plate",
              "sub_location_label": "기둥이 있는 갑판 가장자리와 추락 지점",
              "state_label_raw": "태풍 속 비상 활동이 벌어지는 야간 갑판. 장대비와 거대한 파도의 물기둥이 시야를 가리고, 기둥과 선외 추락 가장자리의 위치를 유지한다.",
              "depends_on_fp": [
                "fp_ship_deck"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S80_Shot6",
                "S80_Shot12"
              ],
              "bg_id": "L122B01"
            },
            {
              "loc_id": "L122",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "site_surface",
              "sub_location_label": "선박 아래 어두운 심해",
              "state_label_raw": "수면 위 폭풍 소리가 사라진 무음의 수중 침강 상태. 무거운 선박 짐짝들과 인물이 깊이 가라앉으며 주변이 암전으로 이어진다. 갑판 구조 없는 넓은 수중 공간.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S80_Shot17"
              ],
              "bg_id": "L122B02"
            }
          ],
          "gen_order": [
            "fp_ship_deck",
            "fp_crew_cabin",
            "L123B02",
            "L123B01",
            "L122B01",
            "L122B02"
          ]
        }
      },
      "bg_sinking_deep_sea": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_research_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_island_research_complex",
          "rationale_summary": "각 위치는 main 평면 1개로 유지하며 샷의 지정 loc_id를 우선한다. 주야·실험·침입 경보·잔해 전시를 구분하고, 해변·옥상·외부는 실제 배치도에 연결한 외부 플레이트로 설계한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l127_shelter_room",
              "loc_id": "L127",
              "space_key_hint": "main",
              "sub_location": "shelter_accommodation",
              "scope": "Accommodation suite with bed, call monitor, wash area and assigned corridor coverage.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l129_research_commons",
              "loc_id": "L129",
              "space_key_hint": "main",
              "sub_location": "research_commons",
              "scope": "Monumental planted research hall with computers and connected scanning-bed views.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l130_main_laboratory",
              "loc_id": "L130",
              "space_key_hint": "main",
              "sub_location": "main_laboratory",
              "scope": "Glass test enclosure, workstation ring and connected piano and meal-table shot zones.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l131_director_office",
              "loc_id": "L131",
              "space_key_hint": "main",
              "sub_location": "director_office",
              "scope": "Modern director suite with desk, family photo, central piano, columns and entry.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l138_beach_landing",
              "loc_id": "L138",
              "space_key_hint": "main",
              "sub_location": "beach_landing",
              "scope": "Beach landing layout with waterline, landing approaches and research-facing sightlines.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l143_reassembly_laboratory",
              "loc_id": "L143",
              "space_key_hint": "main",
              "sub_location": "reassembly_laboratory",
              "scope": "Large dark lab with parts dais, seating, global display, hologram volume and surgical table.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L127",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "숙소 방과 지정 샷의 복도 시야",
              "state_label_raw": "낮의 정돈된 흰 숙소. 침대, 형광등, 화상통화 모니터와 연결 복도 시야를 단일 공간 설계에 포함. 앰버는 모니터 속 영상이며 별도 현지 병실이 아님.",
              "depends_on_fp": [
                "fp_l127_shelter_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S81_Shot1",
                "S81_Shot5",
                "S81_Shot8",
                "S83_Shot9",
                "S83_Shot11",
                "S83_Shot17"
              ],
              "bg_id": "L127B01"
            },
            {
              "loc_id": "L129",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "메인 연구센터 공용 홀과 연결 스캔 구역",
              "state_label_raw": "낮의 가동 중인 대형 연구센터. 열대 식물과 꽃, 컴퓨터와 발전소 규모 연구장치. 지정 샷의 금속 침대·스캔 팔·붉은 레이저 시야도 동일 main 설계 안에 유지.",
              "depends_on_fp": [
                "fp_l129_research_commons"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S82_Shot5",
                "S82_Shot11",
                "S82_Shot16"
              ],
              "bg_id": "L129B01"
            },
            {
              "loc_id": "L130",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "야간 실험실과 연결 피아노 구역",
              "state_label_raw": "고요한 야간 실험실의 금속 침대와 연결 전선, 유리 출입문. 지정된 피아노 재회 샷의 연결 공간도 포함한다. 얼굴 데이터 중첩은 찰리의 인터페이스이며 꿈 배경이 아니다.",
              "depends_on_fp": [
                "fp_l130_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S84_Shot1",
                "S84_Shot18",
                "S84_Shot21"
              ],
              "bg_id": "L130B04"
            },
            {
              "loc_id": "L130",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "주간 에너지 실험 구역과 지정 테이블 시야",
              "state_label_raw": "연구원들이 가동하는 주간 실험실. 원형 유리벽, 금속 의자, 굵은 전선과 기록 화면. 검은 연기는 링의 국소 고장 효과이며 실내 파괴 상태는 아니다. 지정 식사 테이블 샷 포함.",
              "depends_on_fp": [
                "fp_l130_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S85_Shot1",
                "S85_Shot12",
                "S85_Shot22"
              ],
              "bg_id": "L130B01"
            },
            {
              "loc_id": "L130",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "분해 준비 중인 메인 실험실",
              "state_label_raw": "아침의 분해 준비 실험실. 스테인리스 침대의 결박 장치, 대기 중인 연구원과 관찰석. 찰리와 현우의 작별까지 경보 전 조명과 장비 배치를 유지한다.",
              "depends_on_fp": [
                "fp_l130_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot7",
                "S88_Shot37"
              ],
              "bg_id": "L130B02"
            },
            {
              "loc_id": "L130",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "침입 경보가 켜진 메인 실험실",
              "state_label_raw": "같은 아침 실험실에 침입 경보 발령. 천장 적색 경광등의 최대 섬광과 유리·금속 표면의 붉은 반사. 아직 실험실 자체의 파괴는 묘사하지 않는다.",
              "depends_on_fp": [
                "fp_l130_main_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot41"
              ],
              "bg_id": "L130B03"
            },
            {
              "loc_id": "L131",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "소장실 책상 앞",
              "state_label_raw": "야간의 정돈된 모던 소장실. 책상과 출입문 사이 대치 축을 확보한다. 격앙된 대화와 별개로 실내는 훼손이나 경보 없는 조용한 상태.",
              "depends_on_fp": [
                "fp_l131_director_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S86_Shot2",
                "S86_Shot6"
              ],
              "bg_id": "L131B01"
            },
            {
              "loc_id": "L138",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "해변 상륙 지점에서 보는 공습 접근 하늘",
              "state_label_raw": "먹구름으로 어두워진 주간 해안 하늘. 유빅사 무장 헬기 편대의 진입을 받는 넓은 공습 플레이트로, 해변과 연구소 방향의 지리적 축을 유지한다.",
              "depends_on_fp": [
                "fp_l138_beach_landing"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S89_Shot38"
              ],
              "bg_id": "L138B01"
            },
            {
              "loc_id": "L138",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "최종 광선이 솟는 해안 전투 구역",
              "state_label_raw": "샷에 명시된 밤하늘을 우선한다. 전투 중 해안 외부와 하늘이 수직의 거대한 새하얀 광선에 압도적으로 역광 조명되는 상태. 실제 사건이며 환상이 아니다.",
              "depends_on_fp": [
                "fp_l138_beach_landing"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S89_Shot58"
              ],
              "bg_id": "L138B02"
            },
            {
              "loc_id": "L138",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "광선 소멸 후 찰리의 잔해가 남은 해안",
              "state_label_raw": "전투와 광선이 멎은 밤. 찰리의 차가운 금속 잔해와 현우의 오열을 받는 어두운 해안 지면. 전투 흔적은 남기되 정리·복구된 상태로 만들지 않는다.",
              "depends_on_fp": [
                "fp_l138_beach_landing"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S89_Shot73"
              ],
              "bg_id": "L138B03"
            },
            {
              "loc_id": "L143",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "evidence_display",
              "surface_role": "interior_room",
              "sub_location_label": "찰리 부품 전시대와 홀로그램 구역",
              "state_label_raw": "어두운 대형 연구실. 제단 같은 테이블에 분해 부품을 배열하고 뒤편 대형 모니터에 세계 각지의 에너지원 찰리를 표시한다. 푸른 홀로그램은 같은 실제 실내의 투사 효과로 처리.",
              "depends_on_fp": [
                "fp_l143_reassembly_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S90_Shot3",
                "S90_Shot11"
              ],
              "bg_id": "L143B01"
            },
            {
              "loc_id": "L143",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "찰리 재조립 수술대",
              "state_label_raw": "같은 밤 연구실의 고요한 재조립 구역. 수술대 위에는 온전한 몸으로 눈을 감은 찰리. 부품 전시 상태와 구분하되 꿈처럼 평온하다는 묘사를 실제 환상 공간으로 바꾸지 않는다.",
              "depends_on_fp": [
                "fp_l143_reassembly_laboratory"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S90_Shot18"
              ],
              "bg_id": "L143B02"
            }
          ],
          "gen_order": [
            "fp_l127_shelter_room",
            "fp_l129_research_commons",
            "fp_l130_main_laboratory",
            "fp_l131_director_office",
            "fp_l138_beach_landing",
            "fp_l143_reassembly_laboratory",
            "L127B01",
            "L129B01",
            "L130B04",
            "L130B01",
            "L130B02",
            "L130B03",
            "L131B01",
            "L138B01",
            "L138B02",
            "L138B03",
            "L143B01",
            "L143B02"
          ]
        }
      },
      "bg_special_unit_office": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_corporate_chairman_office": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_battle_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_executive_armed_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_epilogue_shallow_sea": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_epilogue_beach_table": {
        "status": "prev_shot_only",
        "plan": null
      }
    },
    "background_catalog": {
      "L07B01": {
        "bg_id": "L07B01",
        "loc_id": "L07",
        "space_key": "exterior",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L07|exterior|day|intrusion",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot10",
          "S5_Shot20"
        ],
        "sub_location_label": "거실 통유리창·벽 모퉁이와 2층 탈출 창문 외벽",
        "state_label_raw": "주간 침입 중인 주택 외벽. 열린 거실 통유리창과 몸을 숨길 벽 모퉁이, 잔디밭 위로 이어지는 2층 탈출 창문의 수직 관계를 유지한다. 로봇을 받는 순간과 셰퍼드에게 물리며 탈출하는 순간을 같은 외벽 배경으로 다룬다."
      },
      "L07B02": {
        "bg_id": "L07B02",
        "loc_id": "L07",
        "space_key": "yard",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L07|yard|day|intrusion",
        "depends_on_fp": [
          "fp_luxury_house_yard"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot24"
        ],
        "sub_location_label": "2층 창문 아래 정원 잔디밭",
        "state_label_raw": "주간 침입 대응 상황의 정원. 2층 창문 아래 착지한 현우를 여러 경찰이 둘러싸고 권총을 겨눌 수 있도록 잔디밭의 개방된 공간과 주택 외벽의 위치 관계를 유지한다."
      },
      "L100B01": {
        "bg_id": "L100B01",
        "loc_id": "L100",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L100|main|day|quiet",
        "depends_on_fp": [
          "fp_store_exterior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S65_Shot4",
          "S65_Shot11",
          "S65_Shot17"
        ],
        "sub_location_label": "이끼 낀 접근로와 백화점 외벽 틈새, 높은 잔해",
        "state_label_raw": "낮의 고요한 폐허. 반쯤 붕괴된 외벽과 이끼, 고인 웅덩이, 무성한 나무와 꽃. 높은 잔해의 깊은 그늘에서도 아래 진입 틈새가 보인다. 측정기와 얼굴 클로즈업 뒤에도 같은 식생을 유지한다."
      },
      "L101B01": {
        "bg_id": "L101B01",
        "loc_id": "L101",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L101|main|day|arrival",
        "depends_on_fp": [
          "fp_store_ground_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S66_Shot31",
          "S66_Shot40"
        ],
        "sub_location_label": "붕괴 후 1층 구조 구멍과 한수가 선 잔해",
        "state_label_raw": "한수의 구조 도착 상태. 확대된 바닥 구멍에서 굵은 밧줄이 지하로 내려오고, 상부 잔해에는 구조자가 설 공간이 있다. 지하에서 올려다보는 샷에도 동일한 1층 슬래브 하부와 구멍 윤곽을 유지한다. 낮이지만 내부는 어둡고 빗물이 틈으로 스민다."
      },
      "L101B02": {
        "bg_id": "L101B02",
        "loc_id": "L101",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L101|main|day|normal",
        "depends_on_fp": [
          "fp_store_ground_floor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S66_Shot9"
        ],
        "sub_location_label": "1층 바닥의 붕괴 구멍 가장자리",
        "state_label_raw": "기존 지진 폐허 안에서 바닥이 추가 붕괴하는 순간. 손전등과 외벽 틈의 약한 자연광 아래, 매달린 사람을 붙잡을 수 있는 바닥 가장자리와 부서지는 슬래브, 아래로 열린 어두운 낙하 공간을 확보한다."
      },
      "L11B01": {
        "bg_id": "L11B01",
        "loc_id": "L11",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L11|main|day|normal",
        "depends_on_fp": [
          "fp_junkyard_access"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S6_Shot21",
          "S6_Shot30",
          "S6_Shot46"
        ],
        "sub_location_label": "쓰레기 산의 로봇 발견 지점과 이탈 동선",
        "state_label_raw": "주간 쓰레기장. 고철 더미와 작업 공간, 아이들과 변장한 찰리의 이탈 동선을 유지한다. 로봇이 일어나며 밀어낸 고철은 국소 연속성으로 처리한다. S6_Shot30의 얼굴 사진과 NEGATIVE 표시는 배경 변형이 아닌 주관 시점 합성 요소다."
      },
      "L111B01": {
        "bg_id": "L111B01",
        "loc_id": "L111",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L111|main|dusk|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot38"
        ],
        "sub_location_label": "제비꽃밭 구조 트럭의 열린 탑승문 바깥",
        "state_label_raw": "노을 속 추격 현장에서 급히 트럭에 올라타는 탈출 순간; 열린 문과 차체 가장자리, 뒤편 꽃밭의 공간 연속성"
      },
      "L111B02": {
        "bg_id": "L111B02",
        "loc_id": "L111",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L111|main|night|arrival",
        "depends_on_fp": [
          "fp_truck_layout"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot65"
        ],
        "sub_location_label": "정차 트럭의 활짝 열린 문과 야간 도로",
        "state_label_raw": "빗소리가 이어지는 밤, 열린 트럭 문 너머 구조대의 손전등이 내부를 강타하고 성인 남성 실루엣이 문밖을 채움"
      },
      "L111B03": {
        "bg_id": "L111B03",
        "loc_id": "L111",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L111|main|night|blood_scene",
        "depends_on_fp": [
          "fp_truck_layout"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot61"
        ],
        "sub_location_label": "도로에 멈춘 트럭의 짐칸 내부",
        "state_label_raw": "연료가 떨어져 멈춘 트럭의 어두운 짐칸; 부상자의 출혈은 국소적으로 유지하고 창밖 빗기운을 반영"
      },
      "L115B01": {
        "bg_id": "L115B01",
        "loc_id": "L115",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L115|main|night|busy",
        "depends_on_fp": [
          "fp_mokpo_clinic_ward"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S76_Shot4",
          "S76_Shot9"
        ],
        "sub_location_label": "목포 보건소 병실 — 진료 중인 침상 주변",
        "state_label_raw": "밤, 앰버의 고열과 합병증으로 의사와 동행자들이 침상 곁에 모인 긴박한 진료 상태. 기존 병실 배치 유지."
      },
      "L115B02": {
        "bg_id": "L115B02",
        "loc_id": "L115",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L115|main|night|quiet",
        "depends_on_fp": [
          "fp_mokpo_clinic_ward"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S73_Shot2",
          "S73_Shot8"
        ],
        "sub_location_label": "목포 보건소 병실 — 앰버의 침상과 주변",
        "state_label_raw": "밤, 응급치료 후 앰버가 잠든 조용한 병실. 침상 주변의 면회와 쿠마와의 재회가 같은 공간에서 이어진다."
      },
      "L119B01": {
        "bg_id": "L119B01",
        "loc_id": "L119",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L119|main|day|normal",
        "depends_on_fp": [
          "fp_hangar_and_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot43"
        ],
        "sub_location_label": "비행 중 헬기 객실 — 제비꽃 인서트",
        "state_label_raw": "낮 비행 중인 헬기 객실. 창으로 들어오는 자연광과 흐릿한 좌석·객실 표면만 남겨 손바닥 위 보라색 제비꽃 클로즈업을 받친다. 격납고는 보이지 않는다."
      },
      "L119B02": {
        "bg_id": "L119B02",
        "loc_id": "L119",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L119|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot46"
        ],
        "sub_location_label": "헬기 출발 후 텅 빈 활주로",
        "state_label_raw": "낮의 비어 있는 폐공항 활주로. 이끼와 갈라진 포장면이 먼 소실점까지 이어지고, 배낭을 멘 두 사람이 나란히 걸을 넓은 동선을 확보한다."
      },
      "L119B03": {
        "bg_id": "L119B03",
        "loc_id": "L119",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L119|main|night|arrival",
        "depends_on_fp": [
          "fp_hangar_and_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot8"
        ],
        "sub_location_label": "격납고 큰 문 앞 진입부",
        "state_label_raw": "신부가 달려오는 야간 진입 동선. 낡은 대형 문과 문 앞 지면, 어두운 격납고 내부가 이어지는 문턱을 보인다."
      },
      "L119B04": {
        "bg_id": "L119B04",
        "loc_id": "L119",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L119|main|night|busy",
        "depends_on_fp": [
          "fp_hangar_and_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot18"
        ],
        "sub_location_label": "격납고 내부 — 항공기 가동 성공",
        "state_label_raw": "경비행기들이 시동을 건 직후의 활기. 검은 배기가스와 불안정하게 점등된 전구, 터진 전구 하나를 남기며 찰리의 전신 포즈를 위한 전경을 확보한다."
      },
      "L119B05": {
        "bg_id": "L119B05",
        "loc_id": "L119",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L119|main|night|quiet",
        "depends_on_fp": [
          "fp_hangar_and_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot4"
        ],
        "sub_location_label": "격납고 내부 — 방치된 경비행기 전경",
        "state_label_raw": "어두운 대형 격납고에 녹슬고 날개가 부서진 경비행기들이 방치된 정적. 항공기 사이 통로와 큰 출입문 축을 유지한다."
      },
      "L122B01": {
        "bg_id": "L122B01",
        "loc_id": "L122",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L122|main|night|busy",
        "depends_on_fp": [
          "fp_ship_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S80_Shot6",
          "S80_Shot12"
        ],
        "sub_location_label": "기둥이 있는 갑판 가장자리와 추락 지점",
        "state_label_raw": "태풍 속 비상 활동이 벌어지는 야간 갑판. 장대비와 거대한 파도의 물기둥이 시야를 가리고, 기둥과 선외 추락 가장자리의 위치를 유지한다."
      },
      "L122B02": {
        "bg_id": "L122B02",
        "loc_id": "L122",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "site_surface",
        "semantic_key": "L122|main|night|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S80_Shot17"
        ],
        "sub_location_label": "선박 아래 어두운 심해",
        "state_label_raw": "수면 위 폭풍 소리가 사라진 무음의 수중 침강 상태. 무거운 선박 짐짝들과 인물이 깊이 가라앉으며 주변이 암전으로 이어진다. 갑판 구조 없는 넓은 수중 공간."
      },
      "L123B01": {
        "bg_id": "L123B01",
        "loc_id": "L123",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L123|main|night|normal",
        "depends_on_fp": [
          "fp_crew_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S79_Shot8",
          "S79_Shot9"
        ],
        "sub_location_label": "급격히 기우는 선원실",
        "state_label_raw": "폭음과 선체 급경사로 휴식이 깨지는 순간. 기존 선원실 구조와 집기는 유지하며 기울어진 바닥·벽 구도로 충격을 표현한다. 파손이나 침수는 추가하지 않는다."
      },
      "L123B02": {
        "bg_id": "L123B02",
        "loc_id": "L123",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L123|main|night|quiet",
        "depends_on_fp": [
          "fp_crew_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S79_Shot6"
        ],
        "sub_location_label": "작은 선원실 소파 주변",
        "state_label_raw": "야간의 평온한 휴식 상태. 두 사람이 기대어 앉는 소파와 가까운 벽이 보이는 좁은 선원실."
      },
      "L127B01": {
        "bg_id": "L127B01",
        "loc_id": "L127",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L127|main|day|quiet",
        "depends_on_fp": [
          "fp_l127_shelter_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S81_Shot1",
          "S81_Shot5",
          "S81_Shot8",
          "S83_Shot9",
          "S83_Shot11",
          "S83_Shot17"
        ],
        "sub_location_label": "숙소 방과 지정 샷의 복도 시야",
        "state_label_raw": "낮의 정돈된 흰 숙소. 침대, 형광등, 화상통화 모니터와 연결 복도 시야를 단일 공간 설계에 포함. 앰버는 모니터 속 영상이며 별도 현지 병실이 아님."
      },
      "L129B01": {
        "bg_id": "L129B01",
        "loc_id": "L129",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L129|main|day|busy",
        "depends_on_fp": [
          "fp_l129_research_commons"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S82_Shot5",
          "S82_Shot11",
          "S82_Shot16"
        ],
        "sub_location_label": "메인 연구센터 공용 홀과 연결 스캔 구역",
        "state_label_raw": "낮의 가동 중인 대형 연구센터. 열대 식물과 꽃, 컴퓨터와 발전소 규모 연구장치. 지정 샷의 금속 침대·스캔 팔·붉은 레이저 시야도 동일 main 설계 안에 유지."
      },
      "L130B01": {
        "bg_id": "L130B01",
        "loc_id": "L130",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L130|main|day|busy",
        "depends_on_fp": [
          "fp_l130_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S85_Shot1",
          "S85_Shot12",
          "S85_Shot22"
        ],
        "sub_location_label": "주간 에너지 실험 구역과 지정 테이블 시야",
        "state_label_raw": "연구원들이 가동하는 주간 실험실. 원형 유리벽, 금속 의자, 굵은 전선과 기록 화면. 검은 연기는 링의 국소 고장 효과이며 실내 파괴 상태는 아니다. 지정 식사 테이블 샷 포함."
      },
      "L130B02": {
        "bg_id": "L130B02",
        "loc_id": "L130",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L130|main|morning|busy",
        "depends_on_fp": [
          "fp_l130_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot7",
          "S88_Shot37"
        ],
        "sub_location_label": "분해 준비 중인 메인 실험실",
        "state_label_raw": "아침의 분해 준비 실험실. 스테인리스 침대의 결박 장치, 대기 중인 연구원과 관찰석. 찰리와 현우의 작별까지 경보 전 조명과 장비 배치를 유지한다."
      },
      "L130B03": {
        "bg_id": "L130B03",
        "loc_id": "L130",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L130|main|morning|intrusion",
        "depends_on_fp": [
          "fp_l130_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot41"
        ],
        "sub_location_label": "침입 경보가 켜진 메인 실험실",
        "state_label_raw": "같은 아침 실험실에 침입 경보 발령. 천장 적색 경광등의 최대 섬광과 유리·금속 표면의 붉은 반사. 아직 실험실 자체의 파괴는 묘사하지 않는다."
      },
      "L130B04": {
        "bg_id": "L130B04",
        "loc_id": "L130",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L130|main|night|quiet",
        "depends_on_fp": [
          "fp_l130_main_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S84_Shot1",
          "S84_Shot18",
          "S84_Shot21"
        ],
        "sub_location_label": "야간 실험실과 연결 피아노 구역",
        "state_label_raw": "고요한 야간 실험실의 금속 침대와 연결 전선, 유리 출입문. 지정된 피아노 재회 샷의 연결 공간도 포함한다. 얼굴 데이터 중첩은 찰리의 인터페이스이며 꿈 배경이 아니다."
      },
      "L131B01": {
        "bg_id": "L131B01",
        "loc_id": "L131",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L131|main|night|quiet",
        "depends_on_fp": [
          "fp_l131_director_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S86_Shot2",
          "S86_Shot6"
        ],
        "sub_location_label": "소장실 책상 앞",
        "state_label_raw": "야간의 정돈된 모던 소장실. 책상과 출입문 사이 대치 축을 확보한다. 격앙된 대화와 별개로 실내는 훼손이나 경보 없는 조용한 상태."
      },
      "L138B01": {
        "bg_id": "L138B01",
        "loc_id": "L138",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L138|main|day|intrusion",
        "depends_on_fp": [
          "fp_l138_beach_landing"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S89_Shot38"
        ],
        "sub_location_label": "해변 상륙 지점에서 보는 공습 접근 하늘",
        "state_label_raw": "먹구름으로 어두워진 주간 해안 하늘. 유빅사 무장 헬기 편대의 진입을 받는 넓은 공습 플레이트로, 해변과 연구소 방향의 지리적 축을 유지한다."
      },
      "L138B02": {
        "bg_id": "L138B02",
        "loc_id": "L138",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L138|main|night|intrusion",
        "depends_on_fp": [
          "fp_l138_beach_landing"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S89_Shot58"
        ],
        "sub_location_label": "최종 광선이 솟는 해안 전투 구역",
        "state_label_raw": "샷에 명시된 밤하늘을 우선한다. 전투 중 해안 외부와 하늘이 수직의 거대한 새하얀 광선에 압도적으로 역광 조명되는 상태. 실제 사건이며 환상이 아니다."
      },
      "L138B03": {
        "bg_id": "L138B03",
        "loc_id": "L138",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L138|main|night|quiet",
        "depends_on_fp": [
          "fp_l138_beach_landing"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S89_Shot73"
        ],
        "sub_location_label": "광선 소멸 후 찰리의 잔해가 남은 해안",
        "state_label_raw": "전투와 광선이 멎은 밤. 찰리의 차가운 금속 잔해와 현우의 오열을 받는 어두운 해안 지면. 전투 흔적은 남기되 정리·복구된 상태로 만들지 않는다."
      },
      "L143B01": {
        "bg_id": "L143B01",
        "loc_id": "L143",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L143|main|night|evidence_display",
        "depends_on_fp": [
          "fp_l143_reassembly_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S90_Shot3",
          "S90_Shot11"
        ],
        "sub_location_label": "찰리 부품 전시대와 홀로그램 구역",
        "state_label_raw": "어두운 대형 연구실. 제단 같은 테이블에 분해 부품을 배열하고 뒤편 대형 모니터에 세계 각지의 에너지원 찰리를 표시한다. 푸른 홀로그램은 같은 실제 실내의 투사 효과로 처리."
      },
      "L143B02": {
        "bg_id": "L143B02",
        "loc_id": "L143",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L143|main|night|quiet",
        "depends_on_fp": [
          "fp_l143_reassembly_laboratory"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S90_Shot18"
        ],
        "sub_location_label": "찰리 재조립 수술대",
        "state_label_raw": "같은 밤 연구실의 고요한 재조립 구역. 수술대 위에는 온전한 몸으로 눈을 감은 찰리. 부품 전시 상태와 구분하되 꿈처럼 평온하다는 묘사를 실제 환상 공간으로 바꾸지 않는다."
      },
      "L16B01": {
        "bg_id": "L16B01",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L16|main|day|arrival",
        "depends_on_fp": [
          "fp_refugee_court_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot1"
        ],
        "sub_location_label": "허름한 재판소 내부 출입문과 법정",
        "state_label_raw": "낮이지만 어두침침한 법정. 경찰이 현우를 끌고 들어오는 문 안쪽 바닥과 재판관의 허름한 탁자, 쌓인 서류를 유지한다."
      },
      "L16B02": {
        "bg_id": "L16B02",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L16|main|day|normal",
        "depends_on_fp": [
          "fp_refugee_court_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot14"
        ],
        "sub_location_label": "재판관 탁자 앞 바닥",
        "state_label_raw": "동일한 낮 법정의 충돌 순간. 의자에서 떨어진 재판관 위로 현우가 엎드린 낮은 시점이며, 별도의 유혈이나 실내 약탈 흔적은 추가하지 않는다."
      },
      "L16B03": {
        "bg_id": "L16B03",
        "loc_id": "L16",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "dream_or_vision_state",
        "surface_role": "exterior_plate",
        "semantic_key": "L16|main|night|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot19"
        ],
        "sub_location_label": "회상 속 미국 도시 거리 — 입력상 L16 배정",
        "state_label_raw": "법정이 아닌 야간 미국 거리의 흑백 악몽 인서트. 미연과 어린 두 아이가 웅크린 거리 바닥을 중심으로, 끊기는 프레임과 총격 섬광의 불연속 조명을 반영한다."
      },
      "L18B01": {
        "bg_id": "L18B01",
        "loc_id": "L18",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L18|main|night|quiet",
        "depends_on_fp": [
          "fp_refugee_court_dump"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S9_Shot1",
          "S9_Shot6",
          "S9_Shot8"
        ],
        "sub_location_label": "난민 재판소 밖 황폐한 쓰레기 더미",
        "state_label_raw": "어둡고 황폐한 야간 쓰레기 더미. 현우의 각성, 지갑 속 신분증 확인, 빈 지갑 투척 모두 같은 더미와 바닥 상태를 공유하며 소품 동작만 달라진다."
      },
      "L19B01": {
        "bg_id": "L19B01",
        "loc_id": "L19",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L19|main|night|normal",
        "depends_on_fp": [
          "fp_alley_restaurant"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot10"
        ],
        "sub_location_label": "동일 식당의 붉은 경광등 부착 벽면",
        "state_label_raw": "밤, 기존 식당 구조와 집기는 그대로인 채 사이렌에 맞춰 벽면 경광등이 강하게 점등하여 낡은 벽에 붉은 빛을 퍼뜨리는 상태. 침입·파손·군중 퇴장 없음."
      },
      "L19B02": {
        "bg_id": "L19B02",
        "loc_id": "L19",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L19|main|night|quiet",
        "depends_on_fp": [
          "fp_alley_restaurant"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot1",
          "S10_Shot5"
        ],
        "sub_location_label": "허름한 식당 내부의 외진 구석 탁자",
        "state_label_raw": "밤, 외진 탁자에서 은밀한 돈 봉투 거래가 이루어지는 조용한 식당. 낡은 벽과 탁자 배치를 유지하며 경광등 점등 전 상태."
      },
      "L21B01": {
        "bg_id": "L21B01",
        "loc_id": "L21",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "ransacked",
        "surface_role": "exterior_plate",
        "semantic_key": "L21|main|day|ransacked",
        "depends_on_fp": [
          "fp_container_front"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S24_Shot3",
          "S24_Shot7",
          "S24_Shot9"
        ],
        "sub_location_label": "7-31 표기가 있는 컨테이너 현관 앞",
        "state_label_raw": "민병대의 집 수색·파손 이후 낮의 현관 외부. 문 주변에 제한적인 교란과 파손 흔적을 반영하되 7-31 표기와 밀어 열 수 있는 문은 유지한다. 귀환부터 멱살 대치와 충격 반응까지 같은 외부 상태를 공유한다."
      },
      "L22B01": {
        "bg_id": "L22B01",
        "loc_id": "L22",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L22|main|day|normal",
        "depends_on_fp": [
          "fp_container_shared_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S14_Shot2",
          "S14_Shot5",
          "S14_Shot8"
        ],
        "sub_location_label": "공용 생활공간의 화병 자리와 현관 방향",
        "state_label_raw": "낮의 기존 생활공간에서 찰리가 화병을 깨뜨리는 국소적 사고. 파손 순간의 비산 파편은 액션 요소이며 이후 바닥 파편 위치를 유지한다. 방 전체가 약탈되거나 파괴된 상태로 확대하지 않는다."
      },
      "L22B02": {
        "bg_id": "L22B02",
        "loc_id": "L22",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L22|main|night|normal",
        "depends_on_fp": [
          "fp_container_shared_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot5",
          "S12_Shot20",
          "S12_Shot23"
        ],
        "sub_location_label": "공용 식탁·생활공간과 헝겊 커튼 경계",
        "state_label_raw": "촛불 아래 식사와 바느질이 이어지는 밤의 생활공간. 식탁의 한 끼 식사와 헌 옷, 이후 펼친 약통을 연속성 소품으로 유지한다. 현관과 커튼 경계를 같은 공간에 두며, 다리의 피는 인물 요소로 한정한다."
      },
      "L23B01": {
        "bg_id": "L23B01",
        "loc_id": "L23",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L23|main|day|arrival",
        "depends_on_fp": [
          "fp_amber_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot4"
        ],
        "sub_location_label": "앰버의 방, 열린 출입문",
        "state_label_raw": "라울이 급보를 전하러 들어온 직후의 낮 침실. 문은 열려 있고 침상과 출입 동선은 수면 장면과 동일하다. 보고되는 집 파괴를 이 침실 안의 직접적인 파손으로 옮기지 않는다."
      },
      "L23B02": {
        "bg_id": "L23B02",
        "loc_id": "L23",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L23|main|day|quiet",
        "depends_on_fp": [
          "fp_amber_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot1"
        ],
        "sub_location_label": "앰버의 방, 낡은 침상",
        "state_label_raw": "앰버가 낡은 침상에서 평온하게 잠든 낮의 조용한 방. 장면 표제와 별개로 지정된 L23의 침실 구조를 유지한다."
      },
      "L25B01": {
        "bg_id": "L25B01",
        "loc_id": "L25",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L25|main|day|blood_scene",
        "depends_on_fp": [
          "fp_junk_repair_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot7",
          "S17_Shot9"
        ],
        "sub_location_label": "총격이 발생한 수리대와 무전 보고 위치",
        "state_label_raw": "낮, 마츠다의 가슴에서 피가 튀는 총격 순간부터 책상에 엎어진 직후의 무전 보고까지. 혈흔 연속성은 수리대 주변에 국한하고 고물 더미와 가게 구조는 그대로 유지."
      },
      "L25B02": {
        "bg_id": "L25B02",
        "loc_id": "L25",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L25|main|day|evidence_display",
        "depends_on_fp": [
          "fp_junk_repair_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S15_Shot7"
        ],
        "sub_location_label": "수리대의 낡은 컴퓨터 모니터",
        "state_label_raw": "낮, 오래된 모니터에 찰리 관련 뉴스와 붉은 '5억 원 현상금' 문구가 밝게 표시된 상태. 주변 수리대와 고물 배치는 유지."
      },
      "L25B03": {
        "bg_id": "L25B03",
        "loc_id": "L25",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L25|main|day|intrusion",
        "depends_on_fp": [
          "fp_junk_repair_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot3"
        ],
        "sub_location_label": "수리대 앞 수하들과의 대면 공간",
        "state_label_raw": "낮, 수하들이 들어와 마츠다와 제보 대가를 흥정하는 총격 전 상태. 수리 중인 TV와 기존 고물 더미를 유지하며 혈흔이나 파손은 없음."
      },
      "L25B04": {
        "bg_id": "L25B04",
        "loc_id": "L25",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L25|main|day|normal",
        "depends_on_fp": [
          "fp_junk_repair_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S15_Shot11",
          "S15_Shot13"
        ],
        "sub_location_label": "고물상 내부 출입 동선 및 전화가 놓인 수리대",
        "state_label_raw": "낮, 가전제품과 고물이 빽빽하게 쌓인 평상시의 훼손 없는 고물상. 출구로 이어지는 통로와 낡은 유선 전화기가 보이며, 퇴장과 직후 신고 전화 사이에 공간 변화는 없음."
      },
      "L28B01": {
        "bg_id": "L28B01",
        "loc_id": "L28",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L28|main|day|evidence_display",
        "depends_on_fp": [
          "fp_militia_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S53_Shot1",
          "S53_Shot5"
        ],
        "sub_location_label": "민병대장 집무실 — 한반도 지도 수색 책상",
        "state_label_raw": "시간 명시가 없어 주간으로 통일하되 실내는 어둡게 유지한다. 같은 책상 위에 커다란 한반도 지도를 펼친 수색정보 전시 상태. 지도 방향과 배치를 고정하고 다트 타격 지점이 잘 보이게 한다."
      },
      "L28B02": {
        "bg_id": "L28B02",
        "loc_id": "L28",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L28|main|day|normal",
        "depends_on_fp": [
          "fp_militia_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot6",
          "S18_Shot8"
        ],
        "sub_location_label": "민병대장 집무실 — 책상 맞은편과 나무 벽",
        "state_label_raw": "주간 집무실. 스피커폰이 있는 책상과 방문객 뒤 나무 벽의 위치를 고정한다. 단도 타격 지점과 박힌 칼의 연속성을 유지하며, 타격 순간의 파편은 해당 숏의 일시적 요소로 처리한다."
      },
      "L30B01": {
        "bg_id": "L30B01",
        "loc_id": "L30",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L30|main|day|quiet",
        "depends_on_fp": [
          "fp_detention_visiting_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S23_Shot3",
          "S23_Shot7",
          "S23_Shot11"
        ],
        "sub_location_label": "구치소 면회실 중앙 탁자",
        "state_label_raw": "낮의 넓고 조용한 면회실. 중앙 탁자와 마주 보는 좌석의 배치를 유지한다. 찰리 사진을 미는 손 클로즈업도 같은 탁자 표면을 사용하며, 얼굴의 피멍은 배경 혈흔으로 확장하지 않는다."
      },
      "L32B01": {
        "bg_id": "L32B01",
        "loc_id": "L32",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L32|main|night|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S36_Shot5",
          "S36_Shot6"
        ],
        "sub_location_label": "하수도 출구 밖 검은 해수면",
        "state_label_raw": "해수 급류에 밀려 하수도 밖으로 배출된 직후의 긴박한 탈출 상태. 검은 바닷물의 거친 수면과 포말을 앰버 얼굴 및 맞잡은 손 뒤에 유지한다. 두 샷 모두 터널 내부가 아닌 외부 수면 높이의 플레이트다."
      },
      "L32B02": {
        "bg_id": "L32B02",
        "loc_id": "L32",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L32|main|night|intrusion",
        "depends_on_fp": [
          "fp_sewer_and_crosscut_inset"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S26_Shot5",
          "S26_Shot8"
        ],
        "sub_location_label": "피로연장 교차편집 인셋 — 입력 L32 태그 보존",
        "state_label_raw": "무장 세력이 피로연장을 점거한 밤. 취객의 턱을 잡는 손과 미연을 노려보는 박철진 뒤로 위협받는 하객 무리의 흐릿한 실내 배경을 둔다. 원문상 하수도가 아닌 피로연장이므로 평면의 비연결 인셋을 사용하고 두 공간의 물리적 연결은 설정하지 않는다."
      },
      "L32B03": {
        "bg_id": "L32B03",
        "loc_id": "L32",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L32|main|night|normal",
        "depends_on_fp": [
          "fp_sewer_and_crosscut_inset"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S26_Shot12"
        ],
        "sub_location_label": "갈림길 이후의 좁은 지하 하수도",
        "state_label_raw": "해수 유입 이전, 통행 가능한 본래 상태의 야간 하수도. 현우가 앰버를 업고 달릴 좁은 통로와 뒤따르는 찰리의 여유 공간을 확보한다. 도주는 인물 액션이며 배경 구조의 파괴나 침수는 아직 없다."
      },
      "L35B01": {
        "bg_id": "L35B01",
        "loc_id": "L35",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "exterior_plate",
        "semantic_key": "L35|main|night|arrival",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot13"
        ],
        "sub_location_label": "성당 출입문 바깥",
        "state_label_raw": "닫힌 성당 문과 외벽 앞 야간 방문자 도착 상태. 신부와 구도환이 마주 설 공간을 확보한다."
      },
      "L35B02": {
        "bg_id": "L35B02",
        "loc_id": "L35",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L35|main|night|intrusion",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot14"
        ],
        "sub_location_label": "성당 일대 상공 수색 플레이트",
        "state_label_raw": "찰리를 찾는 외부 공중 수색 상태. 어두운 실제 밤하늘에 헬리콥터의 강한 하향 서치라이트가 관통하며 실내 계단은 보이지 않는다."
      },
      "L35B03": {
        "bg_id": "L35B03",
        "loc_id": "L35",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "transition_zone",
        "semantic_key": "L35|main|night|quiet",
        "depends_on_fp": [
          "fp_church_basement_stairs"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot8"
        ],
        "sub_location_label": "지하 계단과 층계참",
        "state_label_raw": "촛불에 의지한 어두운 계단. 문 두드리는 소리에 일행이 숨죽이고 신부가 정숙을 지시하는 상태."
      },
      "L36B01": {
        "bg_id": "L36B01",
        "loc_id": "L36",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L36|main|night|arrival",
        "depends_on_fp": [
          "fp_church_prayer_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S30_Shot13",
          "S30_Shot17"
        ],
        "sub_location_label": "지하 기도소 재회 공간",
        "state_label_raw": "점등된 기도소에 구도환이 도착한 직후. 포옹과 현우의 제지 동작을 수용하도록 계단 출입구에서 실내 중앙까지 동선을 비운다."
      },
      "L36B02": {
        "bg_id": "L36B02",
        "loc_id": "L36",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy_exit",
        "surface_role": "interior_room",
        "semantic_key": "L36|main|night|busy_exit",
        "depends_on_fp": [
          "fp_church_prayer_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S32_Shot11",
          "S32_Shot13"
        ],
        "sub_location_label": "지하 기도소 출입구 안쪽",
        "state_label_raw": "민병대 접근 경고 후 긴급 이탈 준비. 신부의 손전등과 어두운 문밖으로 이어지는 실내 출구 동선을 강조하며 파손이나 침입 흔적은 없다."
      },
      "L36B03": {
        "bg_id": "L36B03",
        "loc_id": "L36",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L36|main|night|normal",
        "depends_on_fp": [
          "fp_church_prayer_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S30_Shot6",
          "S32_Shot1"
        ],
        "sub_location_label": "지하 기도소 공용 공간",
        "state_label_raw": "찰리의 전력으로 낡은 랜턴들이 밝아진 온전한 피난 공간. 십자가·탁자·의자·작은 풍금·라디오의 배치를 대화 장면까지 유지한다."
      },
      "L44B01": {
        "bg_id": "L44B01",
        "loc_id": "L44",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy_exit",
        "surface_role": "interior_room",
        "semantic_key": "L44|main|night|busy_exit",
        "depends_on_fp": [
          "fp_miyeon_confinement_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S34_Shot2",
          "S34_Shot5",
          "S34_Shot8"
        ],
        "sub_location_label": "미연 감금실 — 철문 파손과 긴급 탈출",
        "state_label_raw": "소화기로 낡은 철문 손잡이를 부수는 구조부터 모자의 재회와 긴급 퇴실까지. 타격 후 손잡이가 파손되고 문이 열린 상태를 이어가며 방 전체가 난장판이 되지는 않는다."
      },
      "L44B02": {
        "bg_id": "L44B02",
        "loc_id": "L44",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L44|main|night|intrusion",
        "depends_on_fp": [
          "fp_miyeon_confinement_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S37_Shot2",
          "S37_Shot6"
        ],
        "sub_location_label": "L44 창문면 — 해일 접근과 실내 침입",
        "state_label_raw": "실내에서 창문 너머로 검은 해일이 솟구치는 전경에서 창유리가 깨지고 바닷물이 들이닥치는 순간으로 진행한다. 접근 샷의 온전한 유리와 충돌 샷의 파편을 구분하며 실제 재난으로 표현한다."
      },
      "L44B03": {
        "bg_id": "L44B03",
        "loc_id": "L44",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L44|main|night|normal",
        "depends_on_fp": [
          "fp_miyeon_confinement_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S31_Shot2",
          "S31_Shot5",
          "S31_Shot9"
        ],
        "sub_location_label": "미연 감금실 — 심문",
        "state_label_raw": "야간 심문 중인 감금실. 미연의 의자와 철진이 마주 앉는 자리, 수하가 드나드는 철문의 위치를 고정한다. 인물의 피멍을 실내 혈흔으로 확대하지 않는다."
      },
      "L48B01": {
        "bg_id": "L48B01",
        "loc_id": "L48",
        "space_key": "main",
        "time_phase": "dawn",
        "state_class": "blood_scene",
        "surface_role": "exterior_plate",
        "semantic_key": "L48|main|dawn|blood_scene",
        "depends_on_fp": [
          "fp_floating_container_plank"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S38_Shot2",
          "S38_Shot6",
          "S38_Shot12"
        ],
        "sub_location_label": "바다에 떠 있는 미연의 컨테이너 판자 위",
        "state_label_raw": "동틀 무렵 수면 위에 떠 있는 컨테이너 판자. 미연의 복부 출혈과 접촉부 혈흔을 유지하고, 현우가 끌어안는 자리와 앰버가 옆에 서는 자리를 동일한 표면 위에 확보한다. 원경과 클로즈업 모두 같은 해수면과 새벽빛을 유지한다."
      },
      "L50B01": {
        "bg_id": "L50B01",
        "loc_id": "L50",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L50|main|day|normal",
        "depends_on_fp": [
          "fp_store_approach"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S40_Shot2",
          "S40_Shot3"
        ],
        "sub_location_label": "난민촌 외곽 도로와 건너편 무인점포",
        "state_label_raw": "낮의 도로와 점포 전면. 경찰은 보이지 않으며, 난민촌을 돌아보는 시선과 도심 방향의 도주 동선을 유지한다."
      },
      "L51B01": {
        "bg_id": "L51B01",
        "loc_id": "L51",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "ransacked",
        "surface_role": "interior_room",
        "semantic_key": "L51|main|day|ransacked",
        "depends_on_fp": [
          "fp_unattended_store"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S41_Shot11",
          "S41_Shot22",
          "S41_Shot27"
        ],
        "sub_location_label": "무인점포 진열대·현금인출기·출입구 연결 공간",
        "state_label_raw": "낮, 물품을 챙긴 진열대와 ATM 전면 패널의 국소 파손 상태. Shot11에서 관통 파손이 발생하고, 이후 재회와 출발 대화에서도 파손과 남은 현금 흔적을 유지한다. 점포 전체가 파괴된 상태는 아니다."
      },
      "L52B01": {
        "bg_id": "L52B01",
        "loc_id": "L52",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L52|main|day|normal",
        "depends_on_fp": [
          "fp_defense_minister_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S43_Shot1",
          "S43_Shot5",
          "S43_Shot10",
          "S54_Shot5",
          "S54_Shot6"
        ],
        "sub_location_label": "국방장관 집무실",
        "state_label_raw": "낮의 화려한 집무실, 전화 통화와 대면 협상이 이루어지는 정상 상태. 인물의 표정·자세 변화는 배경 상태로 분리하지 않는다. S43_Shot5·S43_Shot10은 박철진 사무실을 가리키는 묘사와 입력 위치가 충돌하므로 L52 배정을 유지하되 제작 전 확인이 필요하다."
      },
      "L54B01": {
        "bg_id": "L54B01",
        "loc_id": "L54",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L54|main|night|busy",
        "depends_on_fp": [
          "fp_camper_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot14"
        ],
        "sub_location_label": "캠핑카 좌석과 천장·창틀 누수 구역",
        "state_label_raw": "소나기가 천장과 창틀 여러 곳으로 새어 들어오는 실내. 작은 전등 아래 라울과 앰버가 옷가지로 누수를 막으려 분주히 팔을 뻗는다."
      },
      "L54B02": {
        "bg_id": "L54B02",
        "loc_id": "L54",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L54|main|night|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot1"
        ],
        "sub_location_label": "주행 중 캠핑카 외관과 외곽 도로",
        "state_label_raw": "비 내리는 한적한 야간 도로를 달리는 낡은 캠핑카. 헤드라이트는 꺼져 있고 바퀴에서 빗물이 튄다."
      },
      "L54B03": {
        "bg_id": "L54B03",
        "loc_id": "L54",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L54|main|night|quiet",
        "depends_on_fp": [
          "fp_camper_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot8"
        ],
        "sub_location_label": "캠핑카 후방 좌석에서 운전석 방향",
        "state_label_raw": "작은 후방 전등 하나만 켜진 어두운 실내. 슬픔과 긴 침묵이 깔린 가운데 앰버가 운전석의 현우에게 항의한다."
      },
      "L57B01": {
        "bg_id": "L57B01",
        "loc_id": "L57",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "exterior_plate",
        "semantic_key": "L57|main|night|arrival",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot1"
        ],
        "sub_location_label": "미추홀도서관 정면 외벽과 차량 정차 지점",
        "state_label_raw": "비 내리는 밤의 도착 외관. 마른 넝쿨, 굵은 균열, 낡은 '미추홀도서관, 인천' 간판과 캠핑카 정차 공간. 실내 평면도 적용 대상이 아님."
      },
      "L57B02": {
        "bg_id": "L57B02",
        "loc_id": "L57",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L57|main|night|normal",
        "depends_on_fp": [
          "fp_l57_reading_room_stacks"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot21"
        ],
        "sub_location_label": "방치된 열람실의 식사 자리",
        "state_label_raw": "밤의 임시 식사 자리에서 벌어지는 대치. 오래 쌓인 먼지와 거미줄, 어지러운 책장은 방치된 도서관의 기존 상태이며 새로 파괴된 흔적은 없음."
      },
      "L57B03": {
        "bg_id": "L57B03",
        "loc_id": "L57",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L57|main|night|quiet",
        "depends_on_fp": [
          "fp_l57_reading_room_stacks"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot26"
        ],
        "sub_location_label": "열람실에 이어진 먼지 쌓인 서가",
        "state_label_raw": "일행이 잠든 뒤 정적에 잠긴 서가. 기존 먼지와 책의 흐트러짐을 유지하고, 어두운 주변과 책 페이지에 닿는 찰리의 푸른 눈빛이 대비됨."
      },
      "L58B01": {
        "bg_id": "L58B01",
        "loc_id": "L58",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "surface_role": "transition_zone",
        "semantic_key": "L58|main|morning|quiet",
        "depends_on_fp": [
          "fp_l58_corridor_corner"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S47_Shot5",
          "S47_Shot15",
          "S47_Shot17"
        ],
        "sub_location_label": "벽화가 이어지는 복도와 외진 통화 구석",
        "state_label_raw": "이른 아침의 조용한 복도. 파란 바다 선을 따라 해남의 가족·친구·해양 생물·야자수 벽화가 이어지며 아직 작업 중. 같은 복도의 외진 통화 구석은 찰리가 현우 뒤로 접근할 공간과 시선을 확보. 벽화는 실제 크레파스 그림."
      },
      "L61B01": {
        "bg_id": "L61B01",
        "loc_id": "L61",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "dream_or_vision_state",
        "surface_role": "interior_room",
        "semantic_key": "L61|main|day|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l61_store_and_assigned_inserts"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot50"
        ],
        "sub_location_label": "전복 캠핑카 내부에서 깨진 창을 보는 시점 — 입력상 L61",
        "state_label_raw": "낮 사고 직후, 의식을 잃어가는 현우의 주관 시점. 뒤집힌 실내의 전구가 희미하게 깜빡이고 연기와 깨진 유리 너머로 태진과 은영이 몸을 굽혀 들여다본다. 장면의 미연 오인으로 이어지는 흐린 지각이며 공간 자체를 환상적으로 변형하지 않는다."
      },
      "L61B02": {
        "bg_id": "L61B02",
        "loc_id": "L61",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L61|main|day|intrusion",
        "depends_on_fp": [
          "fp_l61_store_and_assigned_inserts"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot12"
        ],
        "sub_location_label": "휴게소 마트 약품 코너와 인접 통로",
        "state_label_raw": "낮, 정돈된 약품 진열대 사이에서 조일광이 아이들과 찰리를 산탄총으로 위협하는 대치. 아직 천장 총탄 구멍과 무너진 상품은 없다. TV·테이블·구석 반사경과 출입구의 위치를 유지한다."
      },
      "L61B03": {
        "bg_id": "L61B03",
        "loc_id": "L61",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "ransacked",
        "surface_role": "exterior_plate",
        "semantic_key": "L61|main|day|ransacked",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot47"
        ],
        "sub_location_label": "도로변 쓰레기 둔덕의 전복 캠핑카 외부 — 입력상 L61",
        "state_label_raw": "낮, 쓰레기 둔덕에 충돌하여 거꾸로 뒤집히고 찌그러진 캠핑카 잔해. 뽀얀 먼지와 짙은 연기가 분출한다. 마트 외관이나 주유장으로 대체하지 않는다."
      },
      "L67B01": {
        "bg_id": "L67B01",
        "loc_id": "L67",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L67|main|day|normal",
        "depends_on_fp": [
          "fp_repair_storage"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S50_Shot1",
          "S50_Shot8",
          "S50_Shot10"
        ],
        "sub_location_label": "록밴드 포스터가 붙은 창고 겸 정비 공간",
        "state_label_raw": "낮이지만 어두운 실내. 침상에서 정비 중인 캠핑카까지 시선이 이어지고, 큰 펜치와 공구, 거대한 스피커, 록밴드 포스터가 놓인 일상적인 작업 상태."
      },
      "L69B01": {
        "bg_id": "L69B01",
        "loc_id": "L69",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L69|main|day|normal",
        "depends_on_fp": [
          "fp_repair_forecourt"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot5"
        ],
        "sub_location_label": "카센터 앞 공터의 건물 인접 구역",
        "state_label_raw": "낮의 평상시 공터. 샷 지정 위치에 따라 재회 장면을 실외에 배치하며 카센터와 컨테이너 식당의 외부 관계를 유지한다."
      },
      "L69B02": {
        "bg_id": "L69B02",
        "loc_id": "L69",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L69|main|morning|busy_exit",
        "depends_on_fp": [
          "fp_repair_forecourt"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot23"
        ],
        "sub_location_label": "카센터 공터의 차량 출구",
        "state_label_raw": "다음날 아침의 급박한 출발. 캠핑카 후면 너머로 공터 밖 주행 동선이 열리고 바퀴 뒤로 거친 흙먼지가 피어오른다."
      },
      "L69B03": {
        "bg_id": "L69B03",
        "loc_id": "L69",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L69|main|morning|quiet",
        "depends_on_fp": [
          "fp_repair_forecourt"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot19"
        ],
        "sub_location_label": "카센터 앞 공터의 캠핑카 주차 구역",
        "state_label_raw": "다음날 아침, 출발 전 고요한 공터와 그대로 남아 있는 캠핑카. 편지를 확인하는 샷의 지정 실외 위치를 유지하며 실내 침상은 추가하지 않는다."
      },
      "L77B01": {
        "bg_id": "L77B01",
        "loc_id": "L77",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L77|main|day|arrival",
        "depends_on_fp": [
          "fp_church_forecourt"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S57_Shot11"
        ],
        "sub_location_label": "성당 앞마당에서 출입문으로 이어지는 문턱",
        "state_label_raw": "낮, 결박된 현우와 앰버가 병사들에게 떠밀려 성당 문 안으로 들어가는 강제 진입 상태. 앞마당과 문틀의 연결을 유지한다."
      },
      "L77B02": {
        "bg_id": "L77B02",
        "loc_id": "L77",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L77|main|day|busy",
        "depends_on_fp": [
          "fp_church_forecourt"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S57_Shot4",
          "S57_Shot10"
        ],
        "sub_location_label": "성당 앞 군중 구역과 하회탈 예수 동상",
        "state_label_raw": "낮, 창과 몽둥이를 든 하회탈 군중이 밀집한 성당 앞. 두 팔을 벌린 예수 동상의 얼굴에도 하회탈이 씌워져 있다."
      },
      "L78B01": {
        "bg_id": "L78B01",
        "loc_id": "L78",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L78|main|day|blood_scene",
        "depends_on_fp": [
          "fp_church_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S58_Shot27"
        ],
        "sub_location_label": "성당 단상 앞 인질 대치 구역",
        "state_label_raw": "낮, 현우가 붙잡은 병사의 가슴에 화살이 꽂히는 치명적 피격 순간. 기존 단상·발코니 배치를 유지하고 누적된 혈흔이나 대규모 파괴는 추가하지 않는다."
      },
      "L78B02": {
        "bg_id": "L78B02",
        "loc_id": "L78",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L78|main|day|busy",
        "depends_on_fp": [
          "fp_church_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S58_Shot6"
        ],
        "sub_location_label": "파괴된 성당 내부의 단상과 거대한 의자",
        "state_label_raw": "낮, 스테인드글라스 빛이 들어오는 폐허 성당의 집회·심문 상태. 화려한 단상과 거대한 의자를 중심으로 군중과 상층 궁사들의 배치를 유지한다."
      },
      "L78B03": {
        "bg_id": "L78B03",
        "loc_id": "L78",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "evidence_display",
        "surface_role": "interior_room",
        "semantic_key": "L78|main|day|evidence_display",
        "depends_on_fp": [
          "fp_church_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S58_Shot15"
        ],
        "sub_location_label": "성당 내부 창살문과 강철 케이지 이동 구역",
        "state_label_raw": "낮, 창살문이 열리고 찰리가 갇힌 강철 케이지가 심문 공간으로 밀려 나와 공개되는 상태. 단상까지 이어지는 이동 동선을 확보한다."
      },
      "L79B01": {
        "bg_id": "L79B01",
        "loc_id": "L79",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L79|main|day|quiet",
        "depends_on_fp": [
          "fp_prison_cell"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S59_Shot8",
          "S59_Shot24",
          "S59_Shot48"
        ],
        "sub_location_label": "지하감옥 감방 내부",
        "state_label_raw": "낮이지만 어두운 지하 감방. 쇠창살, 구석의 건초와 바닥에 고인 물을 유지한다. 젖은 건초 처치, 피폭 상처 공개, 외부 북소리에 대한 반응 동안 공간 상태는 변하지 않는다."
      },
      "L87B01": {
        "bg_id": "L87B01",
        "loc_id": "L87",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L87|main|dusk|intrusion",
        "depends_on_fp": [
          "fp_village_arena"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot75"
        ],
        "sub_location_label": "성당 앞 마을 격투장 중앙과 관중석·단상",
        "state_label_raw": "용병 투입과 포격으로 관중석에서 번진 폭발 연기와 먼지가 중앙을 뒤덮은 침입 상태. 횃불과 노을 역광 속 중앙의 고립 구도를 확보."
      },
      "L87B02": {
        "bg_id": "L87B02",
        "loc_id": "L87",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L87|main|dusk|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot129"
        ],
        "sub_location_label": "마을을 벗어난 능선의 석양 조망",
        "state_label_raw": "시간 경과 후 소란이 가라앉은 능선과 지는 해. 손을 맞잡은 두 인물의 후면 실루엣이 읽히도록 낮은 능선 윤곽과 열린 노을 하늘 확보."
      },
      "L87B03": {
        "bg_id": "L87B03",
        "loc_id": "L87",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "ransacked",
        "surface_role": "exterior_plate",
        "semantic_key": "L87|main|dusk|ransacked",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot104"
        ],
        "sub_location_label": "물탱크 붕괴 지점의 백산 얼굴 클로즈업 배경",
        "state_label_raw": "물탱크 붕괴 직후의 젖고 파손된 마을 외부를 얕은 심도로 처리. 붉은 노을 유지. 얼굴의 짓무름은 인물 분장이며 배경 혈흔으로 확장하지 않음."
      },
      "L98B01": {
        "bg_id": "L98B01",
        "loc_id": "L98",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L98|main|day|quiet",
        "depends_on_fp": [
          "fp_warehouse_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S64_Shot9",
          "S64_Shot18",
          "S64_Shot27"
        ],
        "sub_location_label": "폐창고 내부의 어두운 은신 구석과 상자 뒤 둥지",
        "state_label_raw": "낮이지만 내부는 어둡고 정적이다. 반쯤 열린 문으로 들어오는 외광, 거대한 기계 부품과 한 귀퉁이의 고장 난 로봇 더미를 유지한다. B-200의 은신처와 아기새 둥지는 같은 구석에 고정하며, S64_Shot27에서는 가림 상자를 치워 둥지가 드러난다. 인물의 위협이나 온화한 태도는 배경 훼손 또는 별도 환경 상태로 취급하지 않는다."
      }
    },
    "shot_background_map": {
      "S5_Shot10": "L07B01",
      "S5_Shot20": "L07B01",
      "S5_Shot24": "L07B02",
      "S65_Shot4": "L100B01",
      "S65_Shot11": "L100B01",
      "S65_Shot17": "L100B01",
      "S66_Shot31": "L101B01",
      "S66_Shot40": "L101B01",
      "S66_Shot9": "L101B02",
      "S72_Shot38": "L111B01",
      "S72_Shot65": "L111B02",
      "S72_Shot61": "L111B03",
      "S76_Shot4": "L115B01",
      "S76_Shot9": "L115B01",
      "S73_Shot2": "L115B02",
      "S73_Shot8": "L115B02",
      "S77_Shot43": "L119B01",
      "S77_Shot46": "L119B02",
      "S75_Shot8": "L119B03",
      "S77_Shot18": "L119B04",
      "S75_Shot4": "L119B05",
      "S6_Shot21": "L11B01",
      "S6_Shot30": "L11B01",
      "S6_Shot46": "L11B01",
      "S80_Shot6": "L122B01",
      "S80_Shot12": "L122B01",
      "S80_Shot17": "L122B02",
      "S79_Shot8": "L123B01",
      "S79_Shot9": "L123B01",
      "S79_Shot6": "L123B02",
      "S81_Shot1": "L127B01",
      "S81_Shot5": "L127B01",
      "S81_Shot8": "L127B01",
      "S83_Shot9": "L127B01",
      "S83_Shot11": "L127B01",
      "S83_Shot17": "L127B01",
      "S82_Shot5": "L129B01",
      "S82_Shot11": "L129B01",
      "S82_Shot16": "L129B01",
      "S85_Shot1": "L130B01",
      "S85_Shot12": "L130B01",
      "S85_Shot22": "L130B01",
      "S88_Shot7": "L130B02",
      "S88_Shot37": "L130B02",
      "S88_Shot41": "L130B03",
      "S84_Shot1": "L130B04",
      "S84_Shot18": "L130B04",
      "S84_Shot21": "L130B04",
      "S86_Shot2": "L131B01",
      "S86_Shot6": "L131B01",
      "S89_Shot38": "L138B01",
      "S89_Shot58": "L138B02",
      "S89_Shot73": "L138B03",
      "S90_Shot3": "L143B01",
      "S90_Shot11": "L143B01",
      "S90_Shot18": "L143B02",
      "S8_Shot1": "L16B01",
      "S8_Shot14": "L16B02",
      "S8_Shot19": "L16B03",
      "S9_Shot1": "L18B01",
      "S9_Shot6": "L18B01",
      "S9_Shot8": "L18B01",
      "S10_Shot10": "L19B01",
      "S10_Shot1": "L19B02",
      "S10_Shot5": "L19B02",
      "S24_Shot3": "L21B01",
      "S24_Shot7": "L21B01",
      "S24_Shot9": "L21B01",
      "S14_Shot2": "L22B01",
      "S14_Shot5": "L22B01",
      "S14_Shot8": "L22B01",
      "S12_Shot5": "L22B02",
      "S12_Shot20": "L22B02",
      "S12_Shot23": "L22B02",
      "S21_Shot4": "L23B01",
      "S21_Shot1": "L23B02",
      "S17_Shot7": "L25B01",
      "S17_Shot9": "L25B01",
      "S15_Shot7": "L25B02",
      "S17_Shot3": "L25B03",
      "S15_Shot11": "L25B04",
      "S15_Shot13": "L25B04",
      "S53_Shot1": "L28B01",
      "S53_Shot5": "L28B01",
      "S18_Shot6": "L28B02",
      "S18_Shot8": "L28B02",
      "S23_Shot3": "L30B01",
      "S23_Shot7": "L30B01",
      "S23_Shot11": "L30B01",
      "S36_Shot5": "L32B01",
      "S36_Shot6": "L32B01",
      "S26_Shot5": "L32B02",
      "S26_Shot8": "L32B02",
      "S26_Shot12": "L32B03",
      "S29_Shot13": "L35B01",
      "S29_Shot14": "L35B02",
      "S29_Shot8": "L35B03",
      "S30_Shot13": "L36B01",
      "S30_Shot17": "L36B01",
      "S32_Shot11": "L36B02",
      "S32_Shot13": "L36B02",
      "S30_Shot6": "L36B03",
      "S32_Shot1": "L36B03",
      "S34_Shot2": "L44B01",
      "S34_Shot5": "L44B01",
      "S34_Shot8": "L44B01",
      "S37_Shot2": "L44B02",
      "S37_Shot6": "L44B02",
      "S31_Shot2": "L44B03",
      "S31_Shot5": "L44B03",
      "S31_Shot9": "L44B03",
      "S38_Shot2": "L48B01",
      "S38_Shot6": "L48B01",
      "S38_Shot12": "L48B01",
      "S40_Shot2": "L50B01",
      "S40_Shot3": "L50B01",
      "S41_Shot11": "L51B01",
      "S41_Shot22": "L51B01",
      "S41_Shot27": "L51B01",
      "S43_Shot1": "L52B01",
      "S43_Shot5": "L52B01",
      "S43_Shot10": "L52B01",
      "S54_Shot5": "L52B01",
      "S54_Shot6": "L52B01",
      "S45_Shot14": "L54B01",
      "S45_Shot1": "L54B02",
      "S45_Shot8": "L54B03",
      "S46_Shot1": "L57B01",
      "S46_Shot21": "L57B02",
      "S46_Shot26": "L57B03",
      "S47_Shot5": "L58B01",
      "S47_Shot15": "L58B01",
      "S47_Shot17": "L58B01",
      "S49_Shot50": "L61B01",
      "S49_Shot12": "L61B02",
      "S49_Shot47": "L61B03",
      "S50_Shot1": "L67B01",
      "S50_Shot8": "L67B01",
      "S50_Shot10": "L67B01",
      "S51_Shot5": "L69B01",
      "S51_Shot23": "L69B02",
      "S51_Shot19": "L69B03",
      "S57_Shot11": "L77B01",
      "S57_Shot4": "L77B02",
      "S57_Shot10": "L77B02",
      "S58_Shot27": "L78B01",
      "S58_Shot6": "L78B02",
      "S58_Shot15": "L78B03",
      "S59_Shot8": "L79B01",
      "S59_Shot24": "L79B01",
      "S59_Shot48": "L79B01",
      "S60_Shot75": "L87B01",
      "S60_Shot129": "L87B02",
      "S60_Shot104": "L87B03",
      "S64_Shot9": "L98B01",
      "S64_Shot18": "L98B01",
      "S64_Shot27": "L98B01"
    },
    "bg_catalog_hash": "d887f7025a38f225",
    "shot_binding_hash": "0fdd7e9664bad419",
    "diagnostics": {
      "w21b_surface_role_scope_filter": {
        "policy": "surface_role-aware background-first filter; interior_room remains floor-plan-bound; exterior/transition/site may be fp-less; transitive cascade depends_on_bg exact raw key.",
        "kept_floor_plans_count": 43,
        "kept_backgrounds_count": 90,
        "dropped_floor_plans_count": 24,
        "dropped_backgrounds_count": 15,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_luxury_house",
            "fp_id": "fp_luxury_house_living",
            "loc_id": "L08",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_luxury_house",
            "fp_id": "fp_luxury_house_bedroom",
            "loc_id": "L10",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_city_church",
            "fp_id": "fp_church_ground_floor",
            "loc_id": "L37",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_camp_administration",
            "fp_id": "fp_administration_external_stairs",
            "loc_id": "L43",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_camp_administration",
            "fp_id": "fp_administration_third_floor_corridor",
            "loc_id": "L45",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_camper_vehicle",
            "fp_id": "fp_roadside_trash_mound",
            "loc_id": "L65",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_camper_vehicle",
            "fp_id": "fp_overturned_camper_cabin",
            "loc_id": "L66",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_rest_stop_service_station",
            "fp_id": "fp_l62_forecourt_access",
            "loc_id": "L62",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_auto_repair_complex",
            "fp_id": "fp_container_dining",
            "loc_id": "L68",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_village_underground_prison",
            "fp_id": "fp_prison_corridor",
            "loc_id": "L88",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_village_fighting_arena",
            "fp_id": "fp_charlie_lift_cage",
            "loc_id": "L86",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_abandoned_robot_warehouse",
            "fp_id": "fp_warehouse_forecourt",
            "loc_id": "L99",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_collapsed_department_store",
            "fp_id": "fp_store_basement_food",
            "loc_id": "L102",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_abandoned_laboratory",
            "fp_id": "fp_violet_field",
            "loc_id": "L104",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_abandoned_laboratory",
            "fp_id": "fp_laboratory_ground_floor",
            "loc_id": "L109",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_abandoned_laboratory",
            "fp_id": "fp_laboratory_piano_floor",
            "loc_id": "L110",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_abandoned_airfield",
            "fp_id": "fp_airfield_site",
            "loc_id": "L118",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_storm_crossing_ship",
            "fp_id": "fp_wheelhouse",
            "loc_id": "L124",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l126_shelter_ward",
            "loc_id": "L126",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l128_research_corridor",
            "loc_id": "L128",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l132_dining_hall",
            "loc_id": "L132",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l136_coastal_site",
            "loc_id": "L136",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l137_control_room",
            "loc_id": "L137",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_island_research_complex",
            "fp_id": "fp_l140_rooftop_defense",
            "loc_id": "L140",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          }
        ],
        "dropped_backgrounds": [
          {
            "loc_id": "L08",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L10",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L43",
            "space_key_hint": "exterior",
            "time_phase": "night",
            "state_class": "normal",
            "surface_role": "exterior_plate",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L68",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "normal",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L86",
            "space_key_hint": "main",
            "time_phase": "dusk",
            "state_class": "arrival",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L102",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "normal",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L104",
            "space_key_hint": "main",
            "time_phase": "dusk",
            "state_class": "intrusion",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L109",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L110",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L126",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L128",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "normal",
            "surface_role": "transition_zone",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L132",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "busy",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L136",
            "space_key_hint": "main",
            "time_phase": "morning",
            "state_class": "quiet",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L137",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L140",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "exterior_plate",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          }
        ],
        "dropped_groups": []
      },
      "location_profile_pre_filter": {
        "bg_luxury_house": {
          "raw_member_count": 4,
          "kept_member_count": 3,
          "filtered_members": [
            {
              "loc_id": "L09",
              "label": "고급주택 2층으로 이어지는 나무 계단",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_city_church": {
          "raw_member_count": 4,
          "kept_member_count": 3,
          "filtered_members": [
            {
              "loc_id": "L38",
              "label": "인천 성당 출입문 밖",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_abandoned_library": {
          "raw_member_count": 3,
          "kept_member_count": 2,
          "filtered_members": [
            {
              "loc_id": "L56",
              "label": "미추홀도서관 앞",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_rest_stop_service_station": {
          "raw_member_count": 3,
          "kept_member_count": 2,
          "filtered_members": [
            {
              "loc_id": "L63",
              "label": "휴게소 주유소 내부 조일광의 드론 조종 공간",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_island_research_complex": {
          "raw_member_count": 13,
          "kept_member_count": 12,
          "filtered_members": [
            {
              "loc_id": "L139",
              "label": "제주도 연구소 옥상으로 이어지는 계단",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "a7a68883-86f2-4baf-8a09-86e06493546a",
  "resolved_model": "gpt",
  "updated_at": "2026-09-17T14:39:36.005086+00:00",
  "project_config_snapshot": {}
}