{
  "status": "completed",
  "applicable_count": 28,
  "completed_count": 28,
  "failed_count": 0,
  "schema_version": 5,
  "config_hash": "5296df5ace886c6e",
  "data": {
    "plans": {
      "bg_underwater_dump": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_waste_collection_ship": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_waste_dump_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_compact_car": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_luxury_house": {
        "status": "ok",
        "plan": {
          "group_id": "bg_luxury_house",
          "rationale_summary": "단일 공간 규칙을 지키고 2층 침실과 계단만 분리한다. 샷의 L152 배정은 유지하되 창밖 접근·실내 로봇 파손·도로변 연행의 물리적 표면을 구분한다. 금속 노출은 혈흔으로 처리하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_living_room",
              "loc_id": "L152",
              "space_key_hint": "main",
              "sub_location": "living_room",
              "scope": "Living room with full-height operable glazing, entry relationship and route toward stairs",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L152",
              "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": [
                "S5_Shot1"
              ],
              "bg_id": "L152B03"
            },
            {
              "loc_id": "L152",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "거실 통유리창 안쪽 바닥",
              "state_label_raw": "주간 침입 소동 중 열린 통유리창 인접 바닥. 셰퍼드에게 손상된 집사로봇의 머리 아래 은빛 금속이 노출됨. 인간 혈흔이나 방 전체의 약탈 흔적은 추가하지 않음",
              "depends_on_fp": [
                "fp_living_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S5_Shot9"
              ],
              "bg_id": "L152B02"
            },
            {
              "loc_id": "L152",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "주택 앞 도로변 연행 시점",
              "state_label_raw": "입력의 L152 배정을 유지한 주간 외부 도로변. 경찰이 현우의 양팔을 붙잡아 연행하며, 돌아보는 방향에는 페드로의 차가 사라진 빈 길가가 보임",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S5_Shot16"
              ],
              "bg_id": "L152B01"
            }
          ],
          "gen_order": [
            "fp_living_room",
            "L152B03",
            "L152B02",
            "L152B01"
          ]
        }
      },
      "bg_refugee_dump": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_shanty_hill": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_seawall_construction": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_refugee_court": {
        "status": "ok",
        "plan": {
          "group_id": "bg_refugee_court",
          "rationale_summary": "각 로케이션은 main 평면 1개로 유지한다. 법정의 인물 행동만으로 배경 상태를 분리하지 않는다. 회상은 입력 L159를 유지하되 미국 거리의 흑백 야간 외부 플레이트로 구분하고 법정 평면에 연결하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_refugee_court_interior",
              "loc_id": "L159",
              "space_key_hint": "main",
              "sub_location": "courtroom",
              "scope": "Courtroom entry, judge's shabby table and chair, document stacks, and open floor before table.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_refugee_court_rubbish_site",
              "loc_id": "L161",
              "space_key_hint": "main",
              "sub_location": "rubbish_heap_outside_court",
              "scope": "Outdoor rubbish heaps, ground where Hyunwoo wakes, and a walkable route beside the courthouse.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L159",
              "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_Shot5",
                "S8_Shot8"
              ],
              "bg_id": "L159B01"
            },
            {
              "loc_id": "L159",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "dream_or_vision_state",
              "surface_role": "exterior_plate",
              "sub_location_label": "악몽 삽입 — 미국 도시 거리, 입력상 L159 배정",
              "state_label_raw": "법정 내부가 아닌 미국 도시 거리의 흑백 야간 악몽. 미연과 어린 현우·앰버 뒤로 거리 지면과 위협적인 인물 실루엣, 총격 섬광이 보이며 프레임이 끊기는 회상 질감. 법정 구조와 연결하지 않음.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S8_Shot13"
              ],
              "bg_id": "L159B02"
            },
            {
              "loc_id": "L161",
              "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_rubbish_site"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S9_Shot2",
                "S9_Shot5"
              ],
              "bg_id": "L161B01"
            }
          ],
          "gen_order": [
            "fp_refugee_court_interior",
            "fp_refugee_court_rubbish_site",
            "L159B01",
            "L159B02",
            "L161B01"
          ]
        }
      },
      "bg_nightmare_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_backstreet_restaurant": {
        "status": "ok",
        "plan": {
          "group_id": "bg_backstreet_restaurant",
          "rationale_summary": "단일 식당 평면에 외진 거래 테이블과 좌석 배치를 고정한다. 세 숏은 같은 밤의 한적한 실내 상태로 통합하며, 사이렌은 소리이므로 별도 시각 상태를 만들지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_backstreet_restaurant",
              "loc_id": "L162",
              "space_key_hint": "main",
              "sub_location": "restaurant_interior",
              "scope": "Restaurant interior with secluded transaction table, facing seats and entrance access.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L162",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "허름한 골목 식당 내부의 외진 테이블",
              "state_label_raw": "밤, 희미한 식당 조명 아래 외진 거래 자리. 낡은 테이블과 마주 앉는 좌석의 배치를 손 클로즈업·얼굴·전신 숏에 일관되게 유지한다. 사이렌에 따른 경광등이나 퇴장 인파는 추가하지 않는다.",
              "depends_on_fp": [
                "fp_backstreet_restaurant"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S10_Shot3",
                "S10_Shot6",
                "S10_Shot7"
              ],
              "bg_id": "L162B01"
            }
          ],
          "gen_order": [
            "fp_backstreet_restaurant",
            "L162B01"
          ]
        }
      },
      "bg_refugee_gate": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_container_alley": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_candlelit_container_home": {
        "status": "ok",
        "plan": {
          "group_id": "bg_candlelit_container_home",
          "rationale_summary": "장소별 단일 평면을 유지한다. 내부는 촛불 아래 대치와 퇴장 후 정적, 낮의 화병 파손과 긴급 귀환을 구분한다. 외부는 진입 동선만 계획하고 배정 숏이 없어 배경은 생성하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_container_interior",
              "loc_id": "L166",
              "space_key_hint": "main",
              "sub_location": "container_home",
              "scope": "Entire container interior: dining area, entry route and Amber's room with its doorway.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L166",
              "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_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S12_Shot7",
                "S12_Shot8"
              ],
              "bg_id": "L166B03"
            },
            {
              "loc_id": "L166",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 내부 식탁에서 보이는 닫힌 출입문",
              "state_label_raw": "현우가 떠난 뒤 촛불 아래 고요해진 식탁 자리와 닫힌 출입문. 미연 맞은편의 빈자리를 강조하며 청소되거나 파손된 상태로 바꾸지 않는다.",
              "depends_on_fp": [
                "fp_container_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S12_Shot12"
              ],
              "bg_id": "L166B04"
            },
            {
              "loc_id": "L166",
              "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_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S14_Shot3",
                "S14_Shot5",
                "S14_Shot9"
              ],
              "bg_id": "L166B02"
            },
            {
              "loc_id": "L166",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 내부 진입 공간과 출구까지의 동선",
              "state_label_raw": "현우와 페드로가 급히 들어온 낮의 실내. 재회와 실종 소식을 듣는 자리를 출입 동선에 연결한다. 마지막 전신 숏도 실내에서 출구로 달리는 구도이며 수색 흔적이나 파손은 추가하지 않는다.",
              "depends_on_fp": [
                "fp_container_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S24_Shot4",
                "S24_Shot7",
                "S24_Shot10"
              ],
              "bg_id": "L166B01"
            }
          ],
          "gen_order": [
            "fp_container_interior",
            "L166B03",
            "L166B04",
            "L166B02",
            "L166B01"
          ]
        }
      },
      "bg_refugee_market": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_electronics_junk_shop": {
        "status": "ok",
        "plan": {
          "group_id": "bg_electronics_junk_shop",
          "rationale_summary": "고물상 전체를 단일 평면으로 유지하고 주간 영업, 무장 침입, 피살 직후로 구분한다. 입구·수리 책상·컴퓨터·전화기의 위치와 고물 더미 사이 시선을 일관되게 연결한다.",
          "floor_plans": [
            {
              "fp_id": "fp_matsuda_junk_shop",
              "loc_id": "L168",
              "space_key_hint": "main",
              "sub_location": "junk_shop_interior",
              "scope": "Entire shop: entrance, appliance piles, repair desk, computer and telephone positions.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L168",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "고물상 내부 — 제품 확인 공간과 전화기 자리",
              "state_label_raw": "주간의 어두운 고물상 내부. 가전제품과 고물 더미, 수리 도구가 쌓인 일상 영업 상태. 찰리의 로고 확인과 낡은 전화기로 제보하는 장면에 동일한 공간 배치를 유지.",
              "depends_on_fp": [
                "fp_matsuda_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S15_Shot4",
                "S15_Shot10"
              ],
              "bg_id": "L168B03"
            },
            {
              "loc_id": "L168",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "고물상 내부에서 바라보는 입구",
              "state_label_raw": "무장한 수하가 들어선 주간 상점 입구. 어두운 실내와 문밖 주광의 대비로 검은 전신 실루엣을 받친다. 고물 더미와 수리 공간은 기존 배치 그대로이며 난입에 따른 파손은 없다.",
              "depends_on_fp": [
                "fp_matsuda_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot1"
              ],
              "bg_id": "L168B02"
            },
            {
              "loc_id": "L168",
              "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_matsuda_junk_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S17_Shot7"
              ],
              "bg_id": "L168B01"
            }
          ],
          "gen_order": [
            "fp_matsuda_junk_shop",
            "L168B03",
            "L168B02",
            "L168B01"
          ]
        }
      },
      "bg_container_home_wash_yard": {
        "status": "ok",
        "plan": {
          "group_id": "bg_container_home_wash_yard",
          "rationale_summary": "장소별 main 평면을 하나씩 유지한다. 외부는 물놀이 구역과 관찰 위치를 연결하고, 내부는 열린 출입문·앰버의 취침 자리·찰리가 사라진 빈 공간의 관계를 고정한다.",
          "floor_plans": [
            {
              "fp_id": "fp_container_wash_yard",
              "loc_id": "L169",
              "space_key_hint": "main",
              "sub_location": "container_front_yard",
              "scope": "Container frontage, outdoor washing area and distant observers' positions.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_container_interior",
              "loc_id": "L170",
              "space_key_hint": "main",
              "sub_location": "container_living_space",
              "scope": "Container interior with entry door, Amber's sleeping spot and Charlie's vacant space.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L169",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "컨테이너 앞 물놀이 공터와 관찰 지점",
              "state_label_raw": "낮의 일상적인 야외 씻기 장면. 호스 물줄기로 젖은 흙바닥과 씻겨 내려간 흙먼지, 떨어져 바라보는 위치의 공간 연속성 유지.",
              "depends_on_fp": [
                "fp_container_wash_yard"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S16_Shot3",
                "S16_Shot6"
              ],
              "bg_id": "L169B01"
            },
            {
              "loc_id": "L170",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 내부 출입문과 취침 공간",
              "state_label_raw": "라울이 급히 도착해 거칠게 열린 문으로 낮빛이 들어오는 내부. 앰버의 취침 자리와 찰리가 없는 빈 공간을 유지하며, 내부 파손은 없음.",
              "depends_on_fp": [
                "fp_container_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S21_Shot2",
                "S21_Shot5"
              ],
              "bg_id": "L170B01"
            }
          ],
          "gen_order": [
            "fp_container_wash_yard",
            "fp_container_interior",
            "L169B01",
            "L170B01"
          ]
        }
      },
      "bg_militia_command_room": {
        "status": "ok",
        "plan": {
          "group_id": "bg_militia_command_room",
          "rationale_summary": "단일 사무실 평면과 주간 배경을 공유한다. 책상·스피커폰·맞은편 인물 뒤 벽의 위치를 고정하고, 단검이 박힌 상태는 투척 이후 숏에만 반영한다.",
          "floor_plans": [
            {
              "fp_id": "fp_militia_command_room",
              "loc_id": "L171",
              "space_key_hint": "main",
              "sub_location": "command_office",
              "scope": "Office desk, speakerphone, facing visitor position, rear knife-impact wall and bowing clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L171",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "박철진의 민병대 사무실 — 책상과 윤성찬 뒤 벽",
              "state_label_raw": "주간 사무실의 기본 상태. 책상 위 스피커폰과 맞은편 윤성찬 뒤 벽의 공간 관계 유지. S18_Shot1은 단검 투척 전이며, S18_Shot5에서는 얼굴 바로 옆 벽에 단검이 박혀 있다. S18_Shot6에서도 해당 벽이 보이면 단검 유지. 유혈이나 방 전체의 파손은 없음.",
              "depends_on_fp": [
                "fp_militia_command_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S18_Shot1",
                "S18_Shot5",
                "S18_Shot6"
              ],
              "bg_id": "L171B01"
            }
          ],
          "gen_order": [
            "fp_militia_command_room",
            "L171B01"
          ]
        }
      },
      "bg_luxury_sedan": {
        "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": "L173",
              "space_key_hint": "main",
              "sub_location": "visiting_room",
              "scope": "Entire spacious visiting room with central table, opposing seats and entry circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L173",
              "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_Shot1",
                "S23_Shot6",
                "S23_Shot11"
              ],
              "bg_id": "L173B01"
            }
          ],
          "gen_order": [
            "fp_detention_visiting_room",
            "L173B01"
          ]
        }
      },
      "bg_outdoor_reception": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_sewer_and_manhole": {
        "status": "ok",
        "plan": {
          "group_id": "bg_sewer_and_manhole",
          "rationale_summary": "각 로케이션에 단일 main 평면을 둔다. 야간 하수도·해수 유입·도로 차량 도착을 구분한다. S26_Shot7은 피로연 묘사와 L175 배정이 충돌하므로 배정은 유지하되 확인이 필요하다.",
          "floor_plans": [
            {
              "fp_id": "fp_l175_sewer",
              "loc_id": "L175",
              "space_key_hint": "main",
              "sub_location": "sewer_tunnel_and_fork",
              "scope": "Sewer access ladder, running tunnel and two-way fork.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l176_flooded_sewer",
              "loc_id": "L176",
              "space_key_hint": "main",
              "sub_location": "flooded_sewer_passage",
              "scope": "Flooded tunnel, seawater entry routes and outlet escape path.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l177_road_manhole",
              "loc_id": "L177",
              "space_key_hint": "main",
              "sub_location": "road_manhole_and_alley_corner",
              "scope": "Road and manhole layout, vehicle approach, streetlights and adjoining alley corner.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L175",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "지하 하수도 터널과 두 갈래 분기",
              "state_label_raw": "야간의 어두운 하수도, 해수 급류가 닥치기 전의 온전한 터널과 분기 구조. S26_Shot7은 피로연장 인물 묘사와 위치 배정이 불일치하므로 확인 필요; 이 샷을 근거로 하수도에 피로연장 구조를 추가하지 않는다.",
              "depends_on_fp": [
                "fp_l175_sewer"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S26_Shot7",
                "S26_Shot9",
                "S26_Shot11"
              ],
              "bg_id": "L175B01"
            },
            {
              "loc_id": "L176",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "해수가 밀려드는 하수도와 수중 탈출 구간",
              "state_label_raw": "야간 해수 침입 상태. S36_Shot4는 뒤쪽 터널에서 거대한 급류가 터져 나오는 순간, S36_Shot7은 침수 후 수중 시야. 동일 침수 변형 안에서 수위와 물의 움직임을 샷별로 조절한다.",
              "depends_on_fp": [
                "fp_l176_flooded_sewer"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S36_Shot4",
                "S36_Shot7"
              ],
              "bg_id": "L176B01"
            },
            {
              "loc_id": "L177",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "exterior_plate",
              "sub_location_label": "맨홀 인접 도로와 감시 시점의 골목 모퉁이",
              "state_label_raw": "야간 차량 도착과 급정차, 강한 헤드라이트 역광이 도로를 가르고 골목 모퉁이는 어둠에 남는다. 찰리의 이동에 따른 가로등 점멸을 유지하며 차량 접근·신부 하차·승차 감시 시점에 같은 도로 배치를 사용한다.",
              "depends_on_fp": [
                "fp_l177_road_manhole"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S27_Shot12",
                "S27_Shot18",
                "S27_Shot21"
              ],
              "bg_id": "L177B01"
            }
          ],
          "gen_order": [
            "fp_l175_sewer",
            "fp_l176_flooded_sewer",
            "fp_l177_road_manhole",
            "L175B01",
            "L176B01",
            "L177B01"
          ]
        }
      },
      "bg_road_checkpoint": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rescue_van": {
        "status": "ok",
        "plan": {
          "group_id": "bg_rescue_van",
          "rationale_summary": "밴의 앞좌석과 상자 사이 은신 공간을 단일 평면으로 연결한다. 세 숏 모두 야간의 동일한 차량 내부 상태이며, 민병대는 앞유리와 열린 운전석 창문 너머에 배치한다.",
          "floor_plans": [
            {
              "fp_id": "fp_rescue_van_interior",
              "loc_id": "L179",
              "space_key_hint": "main",
              "sub_location": "van_interior",
              "scope": "Driver cabin, windshield, driver-side window, and rear seats with scattered boxes and hiding gaps",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L179",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "신부의 밴 내부 — 운전석과 뒷좌석 은신 공간",
              "state_label_raw": "야간 검문 중인 밴의 훼손 없는 내부. 뒷좌석에는 낡은 종이상자가 듬성듬성 놓여 세 사람이 숨을 틈을 만든다. 앞유리 너머에는 길을 막은 무장 민병대, 열린 운전석 창문 밖에는 신부를 확인하는 민병대가 보인다. 검문에 따른 차량 내부의 구조나 적재 상태 변화는 없다.",
              "depends_on_fp": [
                "fp_rescue_van_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S28_Shot2",
                "S28_Shot5",
                "S28_Shot7"
              ],
              "bg_id": "L179B01"
            }
          ],
          "gen_order": [
            "fp_rescue_van_interior",
            "L179B01"
          ]
        }
      },
      "bg_urban_church": {
        "status": "ok",
        "plan": {
          "group_id": "bg_urban_church",
          "rationale_summary": "각 location은 단일 계획으로 유지한다. 문틈 시점과 드론 하늘 쇼트는 실제 묘사에 따라 현관·외부로 배치하고, 지하 기도실은 은신·대화 상태와 긴급 대피 상태를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_basement_prayer_room",
              "loc_id": "L180",
              "space_key_hint": "main",
              "sub_location": "basement_prayer_room",
              "scope": "Prayer room with cross, table, chairs, organ, radio corner, stair access and secret passage mouth.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_ground_floor_entrance",
              "loc_id": "L182",
              "space_key_hint": "main",
              "sub_location": "ground_floor_entrance",
              "scope": "Interior entrance, church door with viewing hatch, threshold and outward sightline.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L180",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "지하 기도실 은신 및 대화 공간",
              "state_label_raw": "밤의 단출한 은신처. 십자가, 작은 책상과 의자, 풍금, 구석의 낡은 라디오와 랜턴을 일관되게 유지한다. 촛불 중심의 초기 조명에서 찰리의 푸른 발광과 밝아지는 랜턴으로 이어지는 조명 변화는 쇼트별로 적용하며 구조와 물품 배치는 유지한다.",
              "depends_on_fp": [
                "fp_basement_prayer_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot6",
                "S30_Shot5",
                "S30_Shot10",
                "S30_Shot17",
                "S32_Shot5"
              ],
              "bg_id": "L180B02"
            },
            {
              "loc_id": "L182",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "1층 현관 안쪽에서 문틈 너머를 보는 시점",
              "state_label_raw": "밤, 현관 안쪽의 제한된 시야. 가까운 문틀과 좁게 열린 문틈 너머로 신부와 방문자가 마주 서는 문밖 공간이 보인다. 지하실 배경으로 처리하지 않는다.",
              "depends_on_fp": [
                "fp_ground_floor_entrance"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot10"
              ],
              "bg_id": "L182B01"
            },
            {
              "loc_id": "L183",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 주변 수색이 진행되는 밤하늘",
              "state_label_raw": "어두운 밤하늘을 가르는 헬기 서치라이트와 그 주변에 밀집한 소형 드론 실루엣. 지상 평면에 종속되지 않는 상공 수색 플레이트이며 지하실 실내 요소는 배제한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S29_Shot12"
              ],
              "bg_id": "L183B01"
            },
            {
              "loc_id": "L180",
              "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_basement_prayer_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S32_Shot8",
                "S32_Shot9"
              ],
              "bg_id": "L180B01"
            }
          ],
          "gen_order": [
            "fp_basement_prayer_room",
            "fp_ground_floor_entrance",
            "L180B02",
            "L182B01",
            "L183B01",
            "L180B01"
          ]
        }
      },
      "bg_refugee_administration": {
        "status": "ok",
        "plan": {
          "group_id": "bg_refugee_administration",
          "rationale_summary": "각 single_space에 평면 1개씩 배정한다. 밤의 마당·감금실과 복도를 분리하고, 복도는 문 강제 개방·경보 속 탈출·해일 파괴 상태로 구분한다. 쇼트의 지정 위치를 유지하며 상처만으로 혈흔을 추가하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_third_floor_corridor",
              "loc_id": "L188",
              "space_key_hint": "main",
              "sub_location": "third_floor_corridor",
              "scope": "Corridor with detention doorway, extinguisher position, windows, and onward stair access.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_third_floor_detention_room",
              "loc_id": "L189",
              "space_key_hint": "main",
              "sub_location": "third_floor_detention_room",
              "scope": "Detention room with interrogation seating and its doorway to the third-floor corridor.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L189",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "관리사무소 3층 감금실",
              "state_label_raw": "불이 켜진 밤의 심문 공간. 마주 놓인 심문 좌석과 수하가 들어오는 문을 유지하며, 인물의 부상과 별개로 배경 혈흔이나 실내 파괴는 추가하지 않음.",
              "depends_on_fp": [
                "fp_third_floor_detention_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S31_Shot2",
                "S31_Shot8",
                "S31_Shot9"
              ],
              "bg_id": "L189B01"
            },
            {
              "loc_id": "L188",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "transition_zone",
              "sub_location_label": "3층 복도 감금실 문 앞",
              "state_label_raw": "붉은 소화기로 잠긴 감금실 문고리를 강타하는 강제 개방 단계. 문은 아직 닫혀 있고 충돌 지점의 국소 손상만 표현하며 복도 창은 온전함.",
              "depends_on_fp": [
                "fp_third_floor_corridor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S34_Shot3"
              ],
              "bg_id": "L188B02"
            },
            {
              "loc_id": "L188",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy_exit",
              "surface_role": "transition_zone",
              "sub_location_label": "3층 복도 문 앞부터 창가·상층 이동 동선",
              "state_label_raw": "문고리가 부서지고 문이 열린 뒤의 긴급 탈출 상태. 재회에서 붉은 경보등 점멸과 해일 직전까지 동일 복도 구조를 유지한다. 경보광은 쇼트별 점멸로 조절하고 창문은 충격 전까지 온전하게 유지.",
              "depends_on_fp": [
                "fp_third_floor_corridor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S34_Shot7",
                "S34_Shot10",
                "S37_Shot4"
              ],
              "bg_id": "L188B01"
            },
            {
              "loc_id": "L188",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "ransacked",
              "surface_role": "transition_zone",
              "sub_location_label": "3층 복도 창가 해일 충돌 구간",
              "state_label_raw": "실제 해일이 복도 창문을 깨뜨리며 실내로 밀려드는 파괴 순간. 기존 창틀 위치를 유지하고 비산 유리와 거대한 물덩어리로 공간이 급격히 붕괴하는 상태이며 꿈이나 환상이 아님.",
              "depends_on_fp": [
                "fp_third_floor_corridor"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S37_Shot5"
              ],
              "bg_id": "L188B03"
            }
          ],
          "gen_order": [
            "fp_third_floor_corridor",
            "fp_third_floor_detention_room",
            "L189B01",
            "L188B02",
            "L188B01",
            "L188B03"
          ]
        }
      },
      "bg_combat_helicopter": {
        "status": "ok",
        "plan": {
          "group_id": "bg_combat_helicopter",
          "rationale_summary": "L190의 헬기 내부 명칭과 세 샷의 묘사가 불일치한다. 제공된 ID와 single_space 구조는 유지하되 실제 샷에 따라 예배소 수색용 평면도 1개와 제방 공격·붕괴 현장 배경을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_chapel_search",
              "loc_id": "L190",
              "space_key_hint": "main",
              "sub_location": "chapel_basement_hatch",
              "scope": "Chapel search area with wooden basement hatch and surrounding floor clearance.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L190",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "샷 묘사 기준: 예배소 내부 지하실 문 주변",
              "state_label_raw": "야간 무장 수색 중 발견된 바닥의 나무 지하실 문. 이를 가리키며 외치는 민병대원 주변의 바닥과 실내 공간을 확보한다. 제공된 헬기 위치 명칭과 불일치.",
              "depends_on_fp": [
                "fp_chapel_search"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S33_Shot6"
              ],
              "bg_id": "L190B02"
            },
            {
              "loc_id": "L190",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "site_surface",
              "sub_location_label": "샷 묘사 기준: 인공제방과 바다의 전경",
              "state_label_raw": "야간 제방 공격이 진행되는 광역 현장. Shot11은 제방 위 차량 행렬을 향하는 밀집 드론 실루엣, Shot14는 이어지는 폭발로 무너진 제방 틈과 폭포처럼 유입되는 검은 바닷물을 보여준다. 붕괴는 Shot14의 진행 상태이며 Shot11에 선행 적용하지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S33_Shot11",
                "S33_Shot14"
              ],
              "bg_id": "L190B01"
            }
          ],
          "gen_order": [
            "fp_chapel_search",
            "L190B02",
            "L190B01"
          ]
        }
      },
      "bg_refugee_settlement_airspace": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_shanty_flood": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_flooded_settlement_surface": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_unstaffed_shop": {
        "status": "ok",
        "plan": {
          "group_id": "bg_unstaffed_shop",
          "rationale_summary": "L194는 실제 운전석 쇼트에 필요한 단일 평면과 평면 비종속 도로 외경을 구분한다. L195는 단일 매장 평면을 사용하며 ATM 파손과 물품 반출 상태를 숨기·재회 쇼트까지 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_dump_truck_cab",
              "loc_id": "L194",
              "space_key_hint": "main",
              "sub_location": "dump_truck_cab",
              "scope": "Truck cab: driver seat, dashboard, windshield and side windows framing the road.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_unstaffed_shop",
              "loc_id": "L195",
              "space_key_hint": "main",
              "sub_location": "shop_sales_floor",
              "scope": "Whole shop: entrance, merchandise aisles, medicine corner, ATM and shelf concealment sightlines.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L194",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "주행 중인 덤프트럭 운전석",
              "state_label_raw": "주간 자율주행 덤프트럭의 정상 운전석. 졸고 있는 운전사 뒤로 실내 구조와 창밖 도로가 보이며 점포 앞 정차 상태로 표현하지 않는다.",
              "depends_on_fp": [
                "fp_dump_truck_cab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S3_Shot2"
              ],
              "bg_id": "L194B01"
            },
            {
              "loc_id": "L194",
              "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": [
                "S40_Shot1",
                "S40_Shot4",
                "S40_Shot6"
              ],
              "bg_id": "L194B02"
            },
            {
              "loc_id": "L195",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "ransacked",
              "surface_role": "interior_room",
              "sub_location_label": "무인점포 판매장·ATM 앞·진열대 뒤",
              "state_label_raw": "주간 물품 반출 및 ATM 국소 파손 상태. Shot14에서 전면이 관통되고 이후 숨기와 재회에서도 파손은 복구되지 않는다. 현금은 가방에 수거되며, 진열대는 은신이 가능하도록 서 있다. 매장 전체가 뒤엎어진 상태로 확대하지 않는다.",
              "depends_on_fp": [
                "fp_unstaffed_shop"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S41_Shot14",
                "S41_Shot22",
                "S41_Shot26"
              ],
              "bg_id": "L195B01"
            }
          ],
          "gen_order": [
            "fp_dump_truck_cab",
            "fp_unstaffed_shop",
            "L194B01",
            "L194B02",
            "L195B01"
          ]
        }
      },
      "bg_minister_office": {
        "status": "ok",
        "plan": {
          "group_id": "bg_minister_office",
          "rationale_summary": "단일 집무실 평면으로 소파 응접부와 업무 영역을 통합한다. 54씬의 낮을 기준으로 시간 미표기 43씬도 낮으로 가정한다. 교차편집상 인물·장소 불일치는 입력 loc 배정을 유지하며 별도 공간을 만들지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_minister_office",
              "loc_id": "L196",
              "space_key_hint": "main",
              "sub_location": "minister_office",
              "scope": "Entire ministerial office with sofa seating, desk area and connecting circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L196",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "국방장관 집무실 전체 및 소파 응접부",
              "state_label_raw": "낮의 정상 집무실. 소파에 기댄 통화와 대면 협상을 같은 공간 구조로 연결하며, 인물 표정 변화는 배경 상태로 분리하지 않는다. 43씬은 낮으로 가정하고 박철진 쇼트도 제공된 L196 배정을 따른다.",
              "depends_on_fp": [
                "fp_minister_office"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S43_Shot2",
                "S43_Shot4",
                "S43_Shot9",
                "S54_Shot2",
                "S54_Shot5",
                "S54_Shot6"
              ],
              "bg_id": "L196B01"
            }
          ],
          "gen_order": [
            "fp_minister_office",
            "L196B01"
          ]
        }
      },
      "bg_camper_storage_garage": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rainy_city_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_camper_vehicle": {
        "status": "ok",
        "plan": {
          "group_id": "bg_camper_vehicle",
          "rationale_summary": "각 location에 단일 통합 평면을 둔다. 실내의 침묵·누수 대응과 주야간 차량 외부 플레이트를 구분한다. 전복 내부는 평면만 확보하고 근거 없는 배경 상태는 생성하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_camper_interior",
              "loc_id": "L199",
              "space_key_hint": "main",
              "sub_location": "camper_interior",
              "scope": "Unified cab and rear seating layout, including mirror sightlines, windows and roof leak points.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L199",
              "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": "L199B04"
            },
            {
              "loc_id": "L199",
              "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_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S45_Shot4"
              ],
              "bg_id": "L199B05"
            },
            {
              "loc_id": "L199",
              "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_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S45_Shot9"
              ],
              "bg_id": "L199B03"
            },
            {
              "loc_id": "L199",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "숲이 보이는 캠핑카 측창 주변",
              "state_label_raw": "소나기가 지나간 낮, 장시간 수색으로 지친 분위기의 축축한 실내. 창밖 숲을 가리키는 동작을 위해 측창과 외부 숲의 시야를 확보한다.",
              "depends_on_fp": [
                "fp_camper_interior"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S55_Shot3"
              ],
              "bg_id": "L199B02"
            },
            {
              "loc_id": "L199",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "숲길 진입부의 캠핑카 바퀴와 노면",
              "state_label_raw": "낮의 숲길 진입 외부 플레이트. 급격히 꺾인 바퀴와 하부 차체, 뒤로 솟구친 흙먼지, 도로에서 숲길로 이어지는 노면을 낮은 시점으로 구성한다. 전복 상태는 아니다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S55_Shot5"
              ],
              "bg_id": "L199B01"
            }
          ],
          "gen_order": [
            "fp_camper_interior",
            "L199B04",
            "L199B05",
            "L199B03",
            "L199B02",
            "L199B01"
          ]
        }
      },
      "bg_abandoned_library": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_library",
          "rationale_summary": "열람실·서가·컴퓨터·벽화 구역은 단일 평면으로 통합한다. 야간 도착 외관, 실내 활동과 심야 정적, 아침 벽화와 은밀한 외부 구석을 구분하며 노후 상태를 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_abandoned_library_main",
              "loc_id": "L202",
              "space_key_hint": "main",
              "sub_location": "reading_room",
              "scope": "Reading room with shelves, meal and sleeping corner, old computer station and mural wall.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L202",
              "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": "L202B03"
            },
            {
              "loc_id": "L202",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "열람실 식사 자리와 인접 서가",
              "state_label_raw": "밤의 방치된 열람실에서 일행이 식사하던 상태. 두꺼운 먼지, 거미줄, 흐트러진 서가와 낡은 책을 유지한다. 책을 치는 행동 때문에 공간 전체를 새로 파괴된 상태로 바꾸지 않는다.",
              "depends_on_fp": [
                "fp_abandoned_library_main"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S46_Shot17"
              ],
              "bg_id": "L202B04"
            },
            {
              "loc_id": "L202",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "열람실 서가 사이 고물 컴퓨터 자리",
              "state_label_raw": "일행이 잠든 뒤의 고요한 야간 열람실. 먼지 쌓인 책장과 책들 사이에서 켜진 고물 컴퓨터 모니터가 근거리 얼굴 조명의 근거가 된다. 아침의 완성된 벽화는 아직 드러내지 않는다.",
              "depends_on_fp": [
                "fp_abandoned_library_main"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S46_Shot28"
              ],
              "bg_id": "L202B05"
            },
            {
              "loc_id": "L202",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "열람실 안쪽 크레파스 벽화 벽면",
              "state_label_raw": "이른 아침의 실제 도서관 벽면에 새로 그려진 대형 크레파스 벽화. 파란 바다, 해양 생물, 야자수, 캠핑 트럭과 일행, 페드로·엄마·신부님이 노후한 실내와 선명한 색채 대비를 이룬다. 환상 공간이 아닌 물리적 벽화다.",
              "depends_on_fp": [
                "fp_abandoned_library_main"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S47_Shot3"
              ],
              "bg_id": "L202B01"
            },
            {
              "loc_id": "L202",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "열람실 밖 도서관 외진 구석",
              "state_label_raw": "현우가 밖으로 나와 몰래 전화하는 이른 아침의 인적 드문 건물 구석. 노후한 외벽과 발치 바닥의 위치 관계를 손 클로즈업과 찰리 전신 숏에 일관되게 유지하며, 전날 비의 습기를 남긴다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S47_Shot9",
                "S47_Shot12"
              ],
              "bg_id": "L202B02"
            }
          ],
          "gen_order": [
            "fp_abandoned_library_main",
            "L202B03",
            "L202B04",
            "L202B05",
            "L202B01",
            "L202B02"
          ]
        }
      },
      "bg_barren_highway": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_mountain_detour": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_roadside_service_station": {
        "status": "ok",
        "plan": {
          "group_id": "bg_roadside_service_station",
          "rationale_summary": "입력 loc 배정을 유지하되 Shot14는 장면상 마트 실내로 처리한다. 각 loc에 단일 통합 평면을 두고, 실내 위협·파손 상태를 분리한다. 충돌과 구조는 동일한 도로변 배경을 공유한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l205_service_station",
              "loc_id": "L205",
              "space_key_hint": "main",
              "sub_location": "service_station_and_roadside",
              "scope": "Forecourt, shop confrontation interior and entrance, adjoining road and trash mound.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L205",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "마트 내 산탄총 대치 구역 — 입력 Shot14 위치 배정 유지",
              "state_label_raw": "낮, 약품 코너와 진열대 사이 무장 위협. 발포 전이므로 천장과 진열대는 아직 온전하다.",
              "depends_on_fp": [
                "fp_l205_service_station"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot14"
              ],
              "bg_id": "L205B01"
            },
            {
              "loc_id": "L205",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "exterior_plate",
              "sub_location_label": "주유소를 벗어난 도로변 쓰레기 둔덕과 전복 지점",
              "state_label_raw": "낮의 도로변과 쓰레기 둔덕 기본 외경. 충돌·전복 차량, 연기와 깨진 유리, 구조 인물은 숏별 전경 요소이며 별도 배경 상태로 분리하지 않는다.",
              "depends_on_fp": [
                "fp_l205_service_station"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S49_Shot47",
                "S49_Shot51"
              ],
              "bg_id": "L205B02"
            }
          ],
          "gen_order": [
            "fp_l205_service_station",
            "L205B01",
            "L205B02"
          ]
        }
      },
      "bg_drone_chase_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_auto_repair_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_auto_repair_complex",
          "rationale_summary": "각 single_space에 평면도 1개를 둔다. 수리창고, 식당의 당일·다음날, 외경을 구분한다. 차량 출발 숏은 입력 L211을 유지하되 식당 쪽 외부 배경으로 처리하고 실내 평면도를 연결하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_repair_warehouse",
              "loc_id": "L209",
              "space_key_hint": "main",
              "sub_location": "repair_warehouse",
              "scope": "Warehouse interior with recovery spot, camper repair bay, tools, posters and speaker.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_container_diner",
              "loc_id": "L211",
              "space_key_hint": "main",
              "sub_location": "container_diner",
              "scope": "Container dining interior with shared eating area, entrance and circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L209",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "카센터 창고 내부 — 현우의 회복 자리와 캠핑카 수리 구역",
              "state_label_raw": "낮, 망가진 캠핑카 수리 중. 회복 자리에서 수리 구역이 보이며 록밴드 포스터, 대형 스피커, 바닥의 커다란 펜치 위치를 유지한다.",
              "depends_on_fp": [
                "fp_repair_warehouse"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S50_Shot4",
                "S50_Shot9",
                "S50_Shot10"
              ],
              "bg_id": "L209B01"
            },
            {
              "loc_id": "L211",
              "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_diner"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot10"
              ],
              "bg_id": "L211B01"
            },
            {
              "loc_id": "L211",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "컨테이너 간이식당 — 다음날 편지를 확인하는 자리",
              "state_label_raw": "다음날 아침, 찰리가 떠난 뒤의 조용한 실내. 앰버가 든 낡은 편지 뒤로 기존 식당 공간이 제한적으로 보이며 별도 증거 전시 공간은 만들지 않는다.",
              "depends_on_fp": [
                "fp_container_diner"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot14"
              ],
              "bg_id": "L211B03"
            },
            {
              "loc_id": "L211",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "출발 차량에서 보이는 컨테이너 식당 쪽 외부",
              "state_label_raw": "다음날 아침 차량 출발과 작별. 입력 위치 L211을 유지하며 차량 속 인물 뒤로 보이는 식당 측 외부를 배경판으로 사용한다. 차량 내부를 식당 실내 평면도로 대체하지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S51_Shot19"
              ],
              "bg_id": "L211B02"
            }
          ],
          "gen_order": [
            "fp_repair_warehouse",
            "fp_container_diner",
            "L209B01",
            "L211B01",
            "L211B03",
            "L211B02"
          ]
        }
      },
      "bg_lonely_rural_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_metropolitan_militia_office": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_forest_net_trap": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_swamp_vehicle_trap": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_forest_pit_trap": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_prisoner_cage_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_ruined_village_square": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_church_arena": {
        "status": "ok",
        "plan": {
          "group_id": "bg_village_church_arena",
          "rationale_summary": "각 location은 main 평면 1개로 유지한다. 성당의 파괴된 구조와 군중을 통합하고, 야외는 격투·탱크 붕괴 직후·능선의 고요로 구분한다. 샷의 지정 loc_id를 유지하며 능선 배경은 격투장 평면에 연결하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_church_sanctuary",
              "loc_id": "L220",
              "space_key_hint": "main",
              "sub_location": "sanctuary_and_dais",
              "scope": "Ruined nave, upper balcony, dais, barred opening and steel cage movement clearance",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_church_forecourt_arena",
              "loc_id": "L229",
              "space_key_hint": "main",
              "sub_location": "forecourt_arena_and_stands",
              "scope": "Arena floor, cage lift opening, spectator stands, leader seating and escape routes",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L220",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "파괴된 성당 예배당·단상·철창문",
              "state_label_raw": "낮의 스테인드글라스 광선이 비치는 파괴된 예배당. 군중과 2층 궁사들이 둘러싼 단상, 개폐되는 철창문과 강철 케이지의 위치를 일관되게 유지한다.",
              "depends_on_fp": [
                "fp_church_sanctuary"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S58_Shot5",
                "S58_Shot15",
                "S58_Shot25"
              ],
              "bg_id": "L220B01"
            },
            {
              "loc_id": "L229",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "busy",
              "surface_role": "exterior_plate",
              "sub_location_label": "성당 앞 격투장과 관중석",
              "state_label_raw": "케이지 상승 때부터 이어지는 노을빛과 횃불 아래 환호하는 관중석. 격투장 중앙의 찰리와 반대편 B-200 사이 대치 축을 확보한 폭격 이전 상태.",
              "depends_on_fp": [
                "fp_church_forecourt_arena"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot4"
              ],
              "bg_id": "L229B01"
            },
            {
              "loc_id": "L229",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "ransacked",
              "surface_role": "exterior_plate",
              "sub_location_label": "지정 L229의 물탱크 붕괴 현장",
              "state_label_raw": "노을 진 저녁, 물탱크 붕괴와 대량 방류 직후의 젖고 파손된 야외 지면. 백산의 깨진 가면과 드러난 얼굴 클로즈업 뒤로 물에 젖은 현장 질감을 유지한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot52"
              ],
              "bg_id": "L229B03"
            },
            {
              "loc_id": "L229",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "quiet",
              "surface_role": "exterior_plate",
              "sub_location_label": "지정 L229의 마지막 능선 배경",
              "state_label_raw": "사건 후 시간이 흐른 붉은 노을의 고요한 능선. 맞잡은 인간의 손과 금속 손 뒤에는 흐릿한 자연 지면과 저녁빛을 두며 격투장 관중석을 끌어오지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S60_Shot63"
              ],
              "bg_id": "L229B02"
            }
          ],
          "gen_order": [
            "fp_church_sanctuary",
            "fp_church_forecourt_arena",
            "L220B01",
            "L229B01",
            "L229B03",
            "L229B02"
          ]
        }
      },
      "bg_village_forest_ridge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_dungeon": {
        "status": "ok",
        "plan": {
          "group_id": "bg_village_dungeon",
          "rationale_summary": "감방과 복도는 각각 단일 도면으로 구분한다. 현재 감방의 낮 상태는 통합하고, 백산의 판화 회상은 실제 감방 구조를 적용하지 않는 별도 시각화 배경으로 분리한다.",
          "floor_plans": [
            {
              "fp_id": "fp_dungeon_cell",
              "loc_id": "L222",
              "space_key_hint": "main",
              "sub_location": "dungeon_cell",
              "scope": "Cell enclosure, barred frontage, straw corner and pooled water on the floor.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L222",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "지하감옥 감방 내부와 쇠창살 앞",
              "state_label_raw": "낮의 어두운 지하 감방. 쇠창살, 구석의 건초와 바닥에 고인 물을 유지한다. 감자 전달과 피폭 흉터 클로즈업은 동일 공간 상태이며, 신체 흉터를 배경의 혈흔으로 확장하지 않는다.",
              "depends_on_fp": [
                "fp_dungeon_cell"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S59_Shot10",
                "S59_Shot18"
              ],
              "bg_id": "L222B02"
            },
            {
              "loc_id": "L222",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "dream_or_vision_state",
              "surface_role": "site_surface",
              "sub_location_label": "수빈의 회상 속 백산 지배를 표현한 목판화 삽입 화면",
              "state_label_raw": "낮 장면에 삽입되는 비사실적 회상 판화. 군중을 굽어보는 비대해진 백산과 금빛 하회탈의 위압감을 받치는 목판화 질감의 군중 배경. 실제 감방이나 특정 건축물의 공간 재현이 아니며 사실적 시간광은 강조하지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S59_Shot36"
              ],
              "bg_id": "L222B01"
            }
          ],
          "gen_order": [
            "fp_dungeon_cell",
            "L222B02",
            "L222B01"
          ]
        }
      },
      "bg_memory_ration_square": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_memory_spring_cave": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_memory_village_waterway": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_memory_departure_ridge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_underground_cage_lift": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_water_tower_square": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_village_food_storehouse": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_roof_truck": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_militia_truck_cabin": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_militia_escort_truck_bed": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_inland_road_fork": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_memory_dark_room": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_robot_parts_warehouse": {
        "status": "ok",
        "plan": {
          "group_id": "bg_robot_parts_warehouse",
          "rationale_summary": "단일 창고 평면과 낮의 고요한 실내 배경을 공유한다. 위협·대화·새 돌봄은 인물 연기 변화로 처리하고, 반쯤 열린 문과 로봇 더미, 상자 뒤 아기새 은신처의 위치를 유지한다.",
          "floor_plans": [
            {
              "fp_id": "fp_robot_parts_warehouse",
              "loc_id": "L238",
              "space_key_hint": "main",
              "sub_location": "robot_parts_warehouse",
              "scope": "Warehouse interior with half-open entry, broken robot piles and shaded box-hidden bird refuge.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L238",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "폐창고 내부의 로봇 더미와 B-200의 그늘진 구석",
              "state_label_raw": "낮, 반쯤 열린 문으로 들어오는 외광과 대비되는 어두운 기계 부품 창고. 한 귀퉁이에 고장 난 로봇들이 산더미처럼 쌓여 있다. B-200 주변 공간과 상자 뒤 아기새 은신처의 위치는 고정하며, 마지막에는 상자를 옮겨 새들을 드러낸다.",
              "depends_on_fp": [
                "fp_robot_parts_warehouse"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S64_Shot7",
                "S64_Shot15",
                "S64_Shot24"
              ],
              "bg_id": "L238B01"
            }
          ],
          "gen_order": [
            "fp_robot_parts_warehouse",
            "L238B01"
          ]
        }
      },
      "bg_collapsed_department_store": {
        "status": "ok",
        "plan": {
          "group_id": "bg_collapsed_department_store",
          "rationale_summary": "장소별 단일 통합 평면을 유지한다. L240은 입력 샷 배정을 따라 붕괴 가장자리와 지하 식품 진열 시야를 함께 다룬다. 인물 행동만으로 상태를 분리하지 않으며, 샷 없는 L241도 원문에 따라 설계한다.",
          "floor_plans": [
            {
              "fp_id": "fp_collapsed_store_site",
              "loc_id": "L239",
              "space_key_hint": "main",
              "sub_location": "reclaimed_ruins",
              "scope": "Exterior rubble terrain, approach path, pools, vegetation and elevated concrete overlook.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_collapsed_store_ground",
              "loc_id": "L240",
              "space_key_hint": "main",
              "sub_location": "ground_floor_collapse_opening",
              "scope": "Ground-floor ruin, collapse rim, escalator approach and basement food-display sightlines.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L239",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "site_surface",
              "sub_location_label": "식생이 회복된 백화점 외부 잔해와 높은 콘크리트 관망 지점",
              "state_label_raw": "낮의 반파된 백화점 외부. 이끼, 웅덩이, 무성한 나무와 갓 핀 꽃이 잔해를 덮고 있다. 아름답지만 음산한 정적 속에서 생태 회복이 드러나며, 높은 콘크리트 층에서 접근 동선을 내려다볼 수 있다.",
              "depends_on_fp": [
                "fp_collapsed_store_site"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S65_Shot5",
                "S65_Shot10",
                "S65_Shot20"
              ],
              "bg_id": "L239B01"
            },
            {
              "loc_id": "L240",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "백화점 내부 붕괴 구멍 가장자리와 연결된 지하 식품 진열 시야",
              "state_label_raw": "시간은 낮이지만 내부는 어둡다. 무너진 벽, 먼지 낀 안내판과 부분적으로 드러난 에스컬레이터가 붕괴 구멍으로 이어진다. 입력상 이 장소에 배정된 지하 진열대와 통조림 전경을 같은 수직 공간의 연결 시야로 유지한다. 구멍 위 가장자리는 실루엣과 밧줄을 쥔 구조자가 내려다보는 시점의 기준이다.",
              "depends_on_fp": [
                "fp_collapsed_store_ground"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S66_Shot14",
                "S66_Shot26",
                "S66_Shot36"
              ],
              "bg_id": "L240B01"
            }
          ],
          "gen_order": [
            "fp_collapsed_store_site",
            "fp_collapsed_store_ground",
            "L239B01",
            "L240B01"
          ]
        }
      },
      "bg_coastal_flowerfield_laboratory": {
        "status": "ok",
        "plan": {
          "group_id": "bg_coastal_flowerfield_laboratory",
          "rationale_summary": "각 single_space에 평면도 1개를 둔다. L248 샷은 지명과 달리 차량 장면이므로 제공된 loc_id를 유지하되 실제 차량·외부 표면으로 설계한다. 기억, 폐쇄 연구소, 추격, 부상, 구조를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_assigned_vehicle_cabin",
              "loc_id": "L248",
              "space_key_hint": "main",
              "sub_location": "escape_vehicle_cabin",
              "scope": "Vehicle cabin, seating, windows and door serving the vehicle shots explicitly assigned to L248.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L248",
              "space_key_hint": "main",
              "time_phase": "dusk",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "추격 중 윤성찬 차량이 떠오르는 외부 공간",
              "state_label_raw": "L248로 지정된 실제 외부 추격 샷; 노을의 꽃밭 주변에서 차량이 푸른빛에 들려 오르는 순간을 받치는 배경",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot38"
              ],
              "bg_id": "L248B01"
            },
            {
              "loc_id": "L248",
              "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_assigned_vehicle_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot43"
              ],
              "bg_id": "L248B03"
            },
            {
              "loc_id": "L248",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "정차한 트럭의 열린 문 너머 구조자",
              "state_label_raw": "비 내리는 야간 도로에 멈춘 트럭의 열린 문틀; 외부 손전등 역광과 사람들의 실루엣 사이로 신부가 드러나는 구조 도착 상태",
              "depends_on_fp": [
                "fp_assigned_vehicle_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S72_Shot58"
              ],
              "bg_id": "L248B02"
            }
          ],
          "gen_order": [
            "fp_assigned_vehicle_cabin",
            "L248B01",
            "L248B03",
            "L248B02"
          ]
        }
      },
      "bg_rock_shelter_parking": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_military_hospital": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_coastal_approach_ridge": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_rainy_road_breakdown": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_port_town_clinic": {
        "status": "ok",
        "plan": {
          "group_id": "bg_port_town_clinic",
          "rationale_summary": "단일 병실 평면을 유지하고 두 장면 모두 밤으로 설정한다. 응급치료 후의 조용한 회복 상태와 합병증으로 의료진·일행이 침상에 모인 긴박한 상태를 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_clinic_ward",
              "loc_id": "L253",
              "space_key_hint": "main",
              "sub_location": "clinic_ward",
              "scope": "Clinic ward with Amber's bed, bedside gathering area, entry door and circulation.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L253",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "목포 보건소 병실 — 앰버 침상과 곁의 대기 공간",
              "state_label_raw": "밤, 응급치료를 마친 앰버가 잠든 조용한 병실. 침상 곁의 위로와 쿠마와의 재회가 가능한 여유 공간을 유지한다.",
              "depends_on_fp": [
                "fp_clinic_ward"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S73_Shot2",
                "S73_Shot5",
                "S73_Shot11"
              ],
              "bg_id": "L253B02"
            },
            {
              "loc_id": "L253",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "목포 보건소 병실 — 상태가 악화된 앰버의 침상 주변",
              "state_label_raw": "밤, 같은 침상 배치를 유지하며 고열과 합병증으로 의사와 일행이 모여 긴박해진 병실. 현우와 의사의 대치 및 찰리가 손을 드는 위치의 동선을 확보한다.",
              "depends_on_fp": [
                "fp_clinic_ward"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S76_Shot1",
                "S76_Shot6",
                "S76_Shot12"
              ],
              "bg_id": "L253B01"
            }
          ],
          "gen_order": [
            "fp_clinic_ward",
            "L253B02",
            "L253B01"
          ]
        }
      },
      "bg_port_town_street": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_open_air_seafood_restaurant": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_abandoned_airport": {
        "status": "ok",
        "plan": {
          "group_id": "bg_abandoned_airport",
          "rationale_summary": "입력 loc_id는 유지하되 숏에 명시된 실제 표면을 따른다. 각 위치는 main 평면도 1개만 두고, 야외 숏은 평면도에 연결하지 않는다. 야간의 정지된 기체·신부 도착·재가동과 주간의 헬기 출발·한적한 퇴장을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l256_aircraft_storage",
              "loc_id": "L256",
              "space_key_hint": "main",
              "sub_location": "aircraft_storage",
              "scope": "Storage interior with dusty light aircraft, viewing aisle and large warehouse doorway.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l257_hangar",
              "loc_id": "L257",
              "space_key_hint": "main",
              "sub_location": "hangar",
              "scope": "Hangar interior with aircraft positions, central working aisle, overhead bulbs and large doors.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L256",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "먼지 쌓인 경비행기 보관 창고 내부",
              "state_label_raw": "야간, 작동하지 않는 낡은 경비행기들이 빽빽하게 놓인 정적인 창고. 기체 표면의 두꺼운 먼지와 거대한 창고 규모를 유지한다.",
              "depends_on_fp": [
                "fp_l256_aircraft_storage"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S75_Shot5"
              ],
              "bg_id": "L256B02"
            },
            {
              "loc_id": "L256",
              "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": [
                "S75_Shot10"
              ],
              "bg_id": "L256B01"
            },
            {
              "loc_id": "L257",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "재가동된 경비행기들 사이의 격납고 중앙",
              "state_label_raw": "야간, 여러 경비행기가 재가동되어 검은 매연이 번지는 격납고. 전구의 전력 요동과 터진 전구의 흔적을 반영하며 중앙의 찰리를 둘러싼 기체 배치를 유지한다.",
              "depends_on_fp": [
                "fp_l257_hangar"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot22"
              ],
              "bg_id": "L257B03"
            },
            {
              "loc_id": "L257",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy_exit",
              "surface_role": "exterior_plate",
              "sub_location_label": "격납고 앞 헬기 이륙 공터",
              "state_label_raw": "주간, 일행을 태운 헬리콥터가 멀어지는 출발 상태. 현우와 찰리가 지상에서 배웅할 수 있는 넓은 포장면과 열린 하늘 시야를 확보한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S77_Shot43"
              ],
              "bg_id": "L257B01"
            },
            {
              "loc_id": "L257",
              "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_Shot53"
              ],
              "bg_id": "L257B02"
            }
          ],
          "gen_order": [
            "fp_l256_aircraft_storage",
            "fp_l257_hangar",
            "L256B02",
            "L256B01",
            "L257B03",
            "L257B01",
            "L257B02"
          ]
        }
      },
      "bg_departure_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_airport_outskirts_dirt_road": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_harbor_fish_stalls": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_storm_boat": {
        "status": "ok",
        "plan": {
          "group_id": "bg_storm_boat",
          "rationale_summary": "각 single_space에 계획 1개씩 둔다. 선원실의 정적·급경사, 갑판의 폭풍, 실제 심해를 구분한다. 심해 숏은 입력 L261을 유지하되 갑판 평면에 연결하지 않는다.",
          "floor_plans": [
            {
              "fp_id": "fp_boat_deck",
              "loc_id": "L261",
              "space_key_hint": "main",
              "sub_location": "boat_deck",
              "scope": "Deck layout covering cabin access, supporting post, deck edge and cargo positions.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_boat_crew_cabin",
              "loc_id": "L263",
              "space_key_hint": "main",
              "sub_location": "crew_cabin",
              "scope": "Compact two-person cabin with sliding entrance, sofa, floor clearance and impact-side wall.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L263",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "작은 선원실의 소파 주변",
              "state_label_raw": "야간의 조용한 휴식 공간. 대화와 잠에서 깨어나는 순간까지 같은 배치이며, 초기 진동에도 눈에 보이는 파손은 없다.",
              "depends_on_fp": [
                "fp_boat_crew_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S79_Shot10",
                "S79_Shot12"
              ],
              "bg_id": "L263B02"
            },
            {
              "loc_id": "L263",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "선원실 바닥과 몸이 쏠리는 벽",
              "state_label_raw": "폭풍 충격으로 선체가 심하게 기울어진 순간. 기존 선원실 구조를 유지하고 경사진 바닥과 벽의 방향으로 쏠림을 표현한다. 약탈 흔적이나 파손은 추가하지 않는다.",
              "depends_on_fp": [
                "fp_boat_crew_cabin"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S79_Shot14"
              ],
              "bg_id": "L263B01"
            },
            {
              "loc_id": "L261",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "busy",
              "surface_role": "exterior_plate",
              "sub_location_label": "폭풍 속 갑판 가장자리와 지지 기둥",
              "state_label_raw": "선원들이 대응 중인 야간 태풍. 장대비와 갑판을 휩쓰는 파도, 기둥과 추락 지점의 위치를 유지하며 손을 붙잡는 순간과 놓치는 순간을 연결한다.",
              "depends_on_fp": [
                "fp_boat_deck"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S80_Shot9",
                "S80_Shot15"
              ],
              "bg_id": "L261B01"
            },
            {
              "loc_id": "L261",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "site_surface",
              "sub_location_label": "선박 아래 칠흑 같은 심해",
              "state_label_raw": "입력의 L261 배정을 유지하는 실제 수중 공간. 갑판과 실내 구조가 보이지 않는 어두운 수괴에 두 인물의 실루엣이 잠긴다. 환상 공간이 아니며 서서히 암전한다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S80_Shot20"
              ],
              "bg_id": "L261B02"
            }
          ],
          "gen_order": [
            "fp_boat_deck",
            "fp_boat_crew_cabin",
            "L263B02",
            "L263B01",
            "L261B01",
            "L261B02"
          ]
        }
      },
      "bg_shipwreck_open_water": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_research_complex": {
        "status": "ok",
        "plan": {
          "group_id": "bg_island_research_complex",
          "rationale_summary": "각 위치에 main 평면도 1개를 유지하고 입력 shot의 loc 배정을 우선한다. 병실·문턱, 주야 연구, 적색 침입경보, 옥상 전투·잔해, 복원실 홀로그램을 구분한다.",
          "floor_plans": [
            {
              "fp_id": "fp_l266_shelter_room",
              "loc_id": "L266",
              "space_key_hint": "main",
              "sub_location": "shelter_room",
              "scope": "Shelter bedroom, sea window, call monitor, changing and shower areas, and entry threshold.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l268_main_center",
              "loc_id": "L268",
              "space_key_hint": "main",
              "sub_location": "main_research_center",
              "scope": "Main center, tropical planting, research consoles and connected glazed testing bay.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l269_observation_lab",
              "loc_id": "L269",
              "space_key_hint": "main",
              "sub_location": "laboratory_observation_area",
              "scope": "Circular glass enclosure, steel bed, robotic arms, consoles and observation-side circulation.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l270_director_suite",
              "loc_id": "L270",
              "space_key_hint": "main",
              "sub_location": "director_suite",
              "scope": "Modern director suite with desk, family photo, central piano, columns and center-facing entry.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l278_roof_antenna_deck",
              "loc_id": "L278",
              "space_key_hint": "main",
              "sub_location": "roof_antenna_deck",
              "scope": "Roof lawn, antenna, all-direction speakers, roof access and helicopter touchdown surface.",
              "depends_on_fp": []
            },
            {
              "fp_id": "fp_l282_restoration_lab",
              "loc_id": "L282",
              "space_key_hint": "main",
              "sub_location": "parts_restoration_lab",
              "scope": "Large dark lab, component table, seating, world-status monitor and hologram presentation area.",
              "depends_on_fp": []
            }
          ],
          "backgrounds": [
            {
              "loc_id": "L266",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "임시보호소 병실과 통화 모니터",
              "state_label_raw": "낮의 조용한 흰 병실. 강한 형광등, 흰 침대, 창밖 에메랄드빛 제주 바다와 화상통화 모니터를 유지한다. 통화 화면은 모니터 삽입 영상이며 별도 방으로 확장하지 않는다.",
              "depends_on_fp": [
                "fp_l266_shelter_room"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S81_Shot5",
                "S83_Shot5",
                "S83_Shot6",
                "S83_Shot7"
              ],
              "bg_id": "L266B02"
            },
            {
              "loc_id": "L266",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "arrival",
              "surface_role": "transition_zone",
              "sub_location_label": "연구센터로 향하는 자동문 문턱 — 입력 L266 배정",
              "state_label_raw": "낮, 안내를 따라 이동하다 멈추는 시선과 두꺼운 좌우 개폐 자동문 너머의 첫 발견. 장면상 복도·연구센터 진입부이나 입력 shot의 L266 배정을 유지하며 병실 내부 구조를 문 너머에 반복하지 않는다.",
              "depends_on_fp": [],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S81_Shot13",
                "S81_Shot16"
              ],
              "bg_id": "L266B01"
            },
            {
              "loc_id": "L268",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "메인센터의 유리벽 실험 구역 및 배정된 대화 클로즈업",
              "state_label_raw": "낮의 가동 중인 대형 연구센터. 열대 식물, 컴퓨터, 푸른 유리벽과 차가운 스테인리스 침대, 스캔 장치가 공존한다. 실험 실패 컷에만 링의 검은 연기와 ERROR 화면을 적용한다. 식당 대화에 해당하는 배정 클로즈업은 배경을 타이트하게 제한한다.",
              "depends_on_fp": [
                "fp_l268_main_center"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S82_Shot14",
                "S82_Shot17",
                "S82_Shot26",
                "S85_Shot11",
                "S85_Shot22",
                "S85_Shot23"
              ],
              "bg_id": "L268B01"
            },
            {
              "loc_id": "L269",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "야간 실험실과 재회 클로즈업 — 입력 L269 배정",
              "state_label_raw": "야간의 고요한 푸른 실험실, 금속 침대와 연결 전선. 재회 클로즈업은 장면상 연결된 소장실에서 일어나므로 배경을 제한하고 모던한 실내의 부드러운 분위기를 유지한다. 피아노나 소장실 기둥을 실험실 평면 안으로 옮기지 않는다.",
              "depends_on_fp": [
                "fp_l269_observation_lab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S84_Shot1",
                "S84_Shot11",
                "S84_Shot14"
              ],
              "bg_id": "L269B03"
            },
            {
              "loc_id": "L269",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "busy",
              "surface_role": "interior_room",
              "sub_location_label": "분해 준비 중인 유리벽 실험실",
              "state_label_raw": "섬의 아침 이후, 푸른 작업등 아래 분해 준비가 진행되는 실험실. 스테인리스 침대의 굵은 결박과 잠금장치, 연구원 작업대, 관찰 유리와 스피커를 유지한다. 작별 대화 시 손의 결박 해제는 컷별 연속성으로 처리한다.",
              "depends_on_fp": [
                "fp_l269_observation_lab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot7",
                "S88_Shot24"
              ],
              "bg_id": "L269B01"
            },
            {
              "loc_id": "L269",
              "space_key_hint": "main",
              "time_phase": "morning",
              "state_class": "intrusion",
              "surface_role": "interior_room",
              "sub_location_label": "침입 경보가 켜진 실험실",
              "state_label_raw": "같은 아침 실험실 구조에 갑작스러운 붉은 사이렌 조명이 점멸한다. 기존 푸른 작업등과 유리 반사 위로 적색 경보가 덮이며, 아직 실험실 내부의 전투 파괴는 추가하지 않는다.",
              "depends_on_fp": [
                "fp_l269_observation_lab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S88_Shot29"
              ],
              "bg_id": "L269B02"
            },
            {
              "loc_id": "L270",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "normal",
              "surface_role": "interior_room",
              "sub_location_label": "메인센터 소장실",
              "state_label_raw": "밤의 정돈된 모던 소장실. 현우의 격한 항의와 소영의 응대에도 공간 자체는 손상 없이 유지하며, 책상·출입문·기둥·낡은 피아노의 위치를 고정한다.",
              "depends_on_fp": [
                "fp_l270_director_suite"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S86_Shot2",
                "S86_Shot5"
              ],
              "bg_id": "L270B01"
            },
            {
              "loc_id": "L278",
              "space_key_hint": "main",
              "time_phase": "day",
              "state_class": "intrusion",
              "surface_role": "exterior_plate",
              "sub_location_label": "옥상 잔디공원·안테나·헬기 착지 구역",
              "state_label_raw": "낮, 무장 헬기가 착지한 공격받는 옥상. 거대한 안테나, 사방 스피커, 잔디와 탄격 흔적을 유지한다. 광선 컷은 같은 실제 옥상에서 새하얀 수직 에너지 기둥이 노출을 압도하는 순간이며 환상 공간이 아니다.",
              "depends_on_fp": [
                "fp_l278_roof_antenna_deck"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S89_Shot42",
                "S89_Shot53"
              ],
              "bg_id": "L278B01"
            },
            {
              "loc_id": "L278",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "ransacked",
              "surface_role": "exterior_plate",
              "sub_location_label": "광선 소멸 뒤 옥상 잔해 구역",
              "state_label_raw": "밤, 광선이 사라진 뒤 전투로 훼손된 옥상. 기존 안테나와 스피커의 공간 관계를 잔존시키고 그을린 표면과 흩어진 파편, 찰리의 산화된 몸통 잔해 주변을 보여준다. 광선은 더 이상 남아 있지 않는다.",
              "depends_on_fp": [
                "fp_l278_roof_antenna_deck"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S89_Shot66"
              ],
              "bg_id": "L278B02"
            },
            {
              "loc_id": "L282",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "quiet",
              "surface_role": "interior_room",
              "sub_location_label": "찰리 부품 보관·복원 연구실",
              "state_label_raw": "밤의 넓고 어두운 연구실. 제단처럼 보이는 부품 테이블, 뒤편 좌석, 전 세계 에너지원 공급을 보여주는 대형 모니터를 유지한다. 칩 전달 시 분해 부품, 마지막 컷에서는 같은 수술대 위 조립된 형태로 진행하며 실내 자체는 고요하다.",
              "depends_on_fp": [
                "fp_l282_restoration_lab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S90_Shot4",
                "S90_Shot13"
              ],
              "bg_id": "L282B02"
            },
            {
              "loc_id": "L282",
              "space_key_hint": "main",
              "time_phase": "night",
              "state_class": "dream_or_vision_state",
              "surface_role": "interior_room",
              "sub_location_label": "복원 연구실의 제주도 홀로그램",
              "state_label_raw": "어두운 실제 연구실 허공에 푸른 제주도 풍경과 거대한 찰리 홀로그램이 투사된다. 낙원 같은 영상은 실내 투영층으로 표현하고 테이블·모니터·좌석의 실제 공간은 유지한다. 투사된 낮 풍경 때문에 연구실 시간을 낮으로 바꾸지 않는다.",
              "depends_on_fp": [
                "fp_l282_restoration_lab"
              ],
              "depends_on_bg": [],
              "applies_to_shots": [
                "S90_Shot9"
              ],
              "bg_id": "L282B01"
            }
          ],
          "gen_order": [
            "fp_l266_shelter_room",
            "fp_l268_main_center",
            "fp_l269_observation_lab",
            "fp_l270_director_suite",
            "fp_l278_roof_antenna_deck",
            "fp_l282_restoration_lab",
            "L266B02",
            "L266B01",
            "L268B01",
            "L269B03",
            "L269B01",
            "L269B02",
            "L270B01",
            "L278B01",
            "L278B02",
            "L282B02",
            "L282B01"
          ]
        }
      },
      "bg_special_operations_building": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_corporate_executive_office": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_island_ocean_panorama": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_research_coast_landing_beach": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_corporate_command_helicopter": {
        "status": "prev_shot_only",
        "plan": null
      },
      "bg_epilogue_rock_islet": {
        "status": "prev_shot_only",
        "plan": null
      }
    },
    "background_catalog": {
      "L152B01": {
        "bg_id": "L152B01",
        "loc_id": "L152",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L152|main|day|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot16"
        ],
        "sub_location_label": "주택 앞 도로변 연행 시점",
        "state_label_raw": "입력의 L152 배정을 유지한 주간 외부 도로변. 경찰이 현우의 양팔을 붙잡아 연행하며, 돌아보는 방향에는 페드로의 차가 사라진 빈 길가가 보임"
      },
      "L152B02": {
        "bg_id": "L152B02",
        "loc_id": "L152",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L152|main|day|intrusion",
        "depends_on_fp": [
          "fp_living_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot9"
        ],
        "sub_location_label": "거실 통유리창 안쪽 바닥",
        "state_label_raw": "주간 침입 소동 중 열린 통유리창 인접 바닥. 셰퍼드에게 손상된 집사로봇의 머리 아래 은빛 금속이 노출됨. 인간 혈흔이나 방 전체의 약탈 흔적은 추가하지 않음"
      },
      "L152B03": {
        "bg_id": "L152B03",
        "loc_id": "L152",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L152|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S5_Shot1"
        ],
        "sub_location_label": "거실 통유리창과 현관 앞 외부 시점",
        "state_label_raw": "소동 전 조용한 주간 주택. 현관 앞에 붙은 인물을 담는 외부 전경 너머로 통유리와 먼지를 털던 여인의 정돈된 거실이 보임"
      },
      "L159B01": {
        "bg_id": "L159B01",
        "loc_id": "L159",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L159|main|day|normal",
        "depends_on_fp": [
          "fp_refugee_court_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot5",
          "S8_Shot8"
        ],
        "sub_location_label": "허름한 법정의 재판관 탁자와 앞쪽 바닥",
        "state_label_raw": "낮의 낡은 법정. 허름한 탁자 위 서류 더미와 도장 작업면, 재판관이 쓰러지는 탁자 앞 바닥을 같은 공간으로 유지. 몸싸움만으로 난장판이나 혈흔 상태를 추가하지 않음."
      },
      "L159B02": {
        "bg_id": "L159B02",
        "loc_id": "L159",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "dream_or_vision_state",
        "surface_role": "exterior_plate",
        "semantic_key": "L159|main|night|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S8_Shot13"
        ],
        "sub_location_label": "악몽 삽입 — 미국 도시 거리, 입력상 L159 배정",
        "state_label_raw": "법정 내부가 아닌 미국 도시 거리의 흑백 야간 악몽. 미연과 어린 현우·앰버 뒤로 거리 지면과 위협적인 인물 실루엣, 총격 섬광이 보이며 프레임이 끊기는 회상 질감. 법정 구조와 연결하지 않음."
      },
      "L161B01": {
        "bg_id": "L161B01",
        "loc_id": "L161",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L161|main|night|quiet",
        "depends_on_fp": [
          "fp_refugee_court_rubbish_site"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S9_Shot2",
          "S9_Shot5"
        ],
        "sub_location_label": "난민 재판소 밖 황폐한 쓰레기 더미",
        "state_label_raw": "밤의 황폐하고 인적 없는 쓰레기 더미와 거친 지면. 현우가 깨어나는 자리와 지갑을 버리는 위치를 동일 외부 공간으로 유지하며, 지갑은 배경에 고정하지 않는 액션 소품으로 처리."
      },
      "L162B01": {
        "bg_id": "L162B01",
        "loc_id": "L162",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L162|main|night|quiet",
        "depends_on_fp": [
          "fp_backstreet_restaurant"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S10_Shot3",
          "S10_Shot6",
          "S10_Shot7"
        ],
        "sub_location_label": "허름한 골목 식당 내부의 외진 테이블",
        "state_label_raw": "밤, 희미한 식당 조명 아래 외진 거래 자리. 낡은 테이블과 마주 앉는 좌석의 배치를 손 클로즈업·얼굴·전신 숏에 일관되게 유지한다. 사이렌에 따른 경광등이나 퇴장 인파는 추가하지 않는다."
      },
      "L166B01": {
        "bg_id": "L166B01",
        "loc_id": "L166",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L166|main|day|arrival",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S24_Shot4",
          "S24_Shot7",
          "S24_Shot10"
        ],
        "sub_location_label": "컨테이너 내부 진입 공간과 출구까지의 동선",
        "state_label_raw": "현우와 페드로가 급히 들어온 낮의 실내. 재회와 실종 소식을 듣는 자리를 출입 동선에 연결한다. 마지막 전신 숏도 실내에서 출구로 달리는 구도이며 수색 흔적이나 파손은 추가하지 않는다."
      },
      "L166B02": {
        "bg_id": "L166B02",
        "loc_id": "L166",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L166|main|day|normal",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S14_Shot3",
          "S14_Shot5",
          "S14_Shot9"
        ],
        "sub_location_label": "컨테이너 내부 생활 공간과 화병이 깨진 바닥",
        "state_label_raw": "주간의 기존 생활 공간. 찰리 발치에 깨진 화병 조각이 국소적으로 흩어져 있고 일부는 발로 밀려 있다. 집 전체가 난장판이 된 상태는 아니다."
      },
      "L166B03": {
        "bg_id": "L166B03",
        "loc_id": "L166",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L166|main|night|normal",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot7",
          "S12_Shot8"
        ],
        "sub_location_label": "컨테이너 내부 식탁과 출입문 방향",
        "state_label_raw": "촛불로 밝힌 생활 공간. 식탁의 식사와 바느질 도구, 펼친 약통을 유지한다. 식탁 충격에 흔들리는 불꽃은 순간 연출이며 별도 공간 상태로 나누지 않는다."
      },
      "L166B04": {
        "bg_id": "L166B04",
        "loc_id": "L166",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L166|main|night|quiet",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S12_Shot12"
        ],
        "sub_location_label": "컨테이너 내부 식탁에서 보이는 닫힌 출입문",
        "state_label_raw": "현우가 떠난 뒤 촛불 아래 고요해진 식탁 자리와 닫힌 출입문. 미연 맞은편의 빈자리를 강조하며 청소되거나 파손된 상태로 바꾸지 않는다."
      },
      "L168B01": {
        "bg_id": "L168B01",
        "loc_id": "L168",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L168|main|day|blood_scene",
        "depends_on_fp": [
          "fp_matsuda_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot7"
        ],
        "sub_location_label": "고물상 수리 책상 주변",
        "state_label_raw": "소음소총 피격 직후의 범행 현장. 무전하는 수하 뒤로 마츠다가 엎어진 책상이 보이는 시선을 확보한다. 기존 수리 물품과 고물 배치를 유지하고, 명시되지 않은 혈흔이나 파손은 추가하지 않는다."
      },
      "L168B02": {
        "bg_id": "L168B02",
        "loc_id": "L168",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L168|main|day|intrusion",
        "depends_on_fp": [
          "fp_matsuda_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S17_Shot1"
        ],
        "sub_location_label": "고물상 내부에서 바라보는 입구",
        "state_label_raw": "무장한 수하가 들어선 주간 상점 입구. 어두운 실내와 문밖 주광의 대비로 검은 전신 실루엣을 받친다. 고물 더미와 수리 공간은 기존 배치 그대로이며 난입에 따른 파손은 없다."
      },
      "L168B03": {
        "bg_id": "L168B03",
        "loc_id": "L168",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L168|main|day|normal",
        "depends_on_fp": [
          "fp_matsuda_junk_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S15_Shot4",
          "S15_Shot10"
        ],
        "sub_location_label": "고물상 내부 — 제품 확인 공간과 전화기 자리",
        "state_label_raw": "주간의 어두운 고물상 내부. 가전제품과 고물 더미, 수리 도구가 쌓인 일상 영업 상태. 찰리의 로고 확인과 낡은 전화기로 제보하는 장면에 동일한 공간 배치를 유지."
      },
      "L169B01": {
        "bg_id": "L169B01",
        "loc_id": "L169",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L169|main|day|normal",
        "depends_on_fp": [
          "fp_container_wash_yard"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S16_Shot3",
          "S16_Shot6"
        ],
        "sub_location_label": "컨테이너 앞 물놀이 공터와 관찰 지점",
        "state_label_raw": "낮의 일상적인 야외 씻기 장면. 호스 물줄기로 젖은 흙바닥과 씻겨 내려간 흙먼지, 떨어져 바라보는 위치의 공간 연속성 유지."
      },
      "L170B01": {
        "bg_id": "L170B01",
        "loc_id": "L170",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "interior_room",
        "semantic_key": "L170|main|day|arrival",
        "depends_on_fp": [
          "fp_container_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S21_Shot2",
          "S21_Shot5"
        ],
        "sub_location_label": "컨테이너 내부 출입문과 취침 공간",
        "state_label_raw": "라울이 급히 도착해 거칠게 열린 문으로 낮빛이 들어오는 내부. 앰버의 취침 자리와 찰리가 없는 빈 공간을 유지하며, 내부 파손은 없음."
      },
      "L171B01": {
        "bg_id": "L171B01",
        "loc_id": "L171",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L171|main|day|normal",
        "depends_on_fp": [
          "fp_militia_command_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S18_Shot1",
          "S18_Shot5",
          "S18_Shot6"
        ],
        "sub_location_label": "박철진의 민병대 사무실 — 책상과 윤성찬 뒤 벽",
        "state_label_raw": "주간 사무실의 기본 상태. 책상 위 스피커폰과 맞은편 윤성찬 뒤 벽의 공간 관계 유지. S18_Shot1은 단검 투척 전이며, S18_Shot5에서는 얼굴 바로 옆 벽에 단검이 박혀 있다. S18_Shot6에서도 해당 벽이 보이면 단검 유지. 유혈이나 방 전체의 파손은 없음."
      },
      "L173B01": {
        "bg_id": "L173B01",
        "loc_id": "L173",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L173|main|day|quiet",
        "depends_on_fp": [
          "fp_detention_visiting_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S23_Shot1",
          "S23_Shot6",
          "S23_Shot11"
        ],
        "sub_location_label": "구치소 면회실 중앙 테이블",
        "state_label_raw": "낮의 한산한 넓은 면회실. 중앙 테이블과 마주 보는 좌석, 출입 동선을 유지한다. 긴장된 면담이 이어지며 피멍은 인물 분장, 찰리 사진은 테이블 위 소품으로 처리한다."
      },
      "L175B01": {
        "bg_id": "L175B01",
        "loc_id": "L175",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L175|main|night|normal",
        "depends_on_fp": [
          "fp_l175_sewer"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S26_Shot7",
          "S26_Shot9",
          "S26_Shot11"
        ],
        "sub_location_label": "지하 하수도 터널과 두 갈래 분기",
        "state_label_raw": "야간의 어두운 하수도, 해수 급류가 닥치기 전의 온전한 터널과 분기 구조. S26_Shot7은 피로연장 인물 묘사와 위치 배정이 불일치하므로 확인 필요; 이 샷을 근거로 하수도에 피로연장 구조를 추가하지 않는다."
      },
      "L176B01": {
        "bg_id": "L176B01",
        "loc_id": "L176",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L176|main|night|intrusion",
        "depends_on_fp": [
          "fp_l176_flooded_sewer"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S36_Shot4",
          "S36_Shot7"
        ],
        "sub_location_label": "해수가 밀려드는 하수도와 수중 탈출 구간",
        "state_label_raw": "야간 해수 침입 상태. S36_Shot4는 뒤쪽 터널에서 거대한 급류가 터져 나오는 순간, S36_Shot7은 침수 후 수중 시야. 동일 침수 변형 안에서 수위와 물의 움직임을 샷별로 조절한다."
      },
      "L177B01": {
        "bg_id": "L177B01",
        "loc_id": "L177",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "exterior_plate",
        "semantic_key": "L177|main|night|arrival",
        "depends_on_fp": [
          "fp_l177_road_manhole"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S27_Shot12",
          "S27_Shot18",
          "S27_Shot21"
        ],
        "sub_location_label": "맨홀 인접 도로와 감시 시점의 골목 모퉁이",
        "state_label_raw": "야간 차량 도착과 급정차, 강한 헤드라이트 역광이 도로를 가르고 골목 모퉁이는 어둠에 남는다. 찰리의 이동에 따른 가로등 점멸을 유지하며 차량 접근·신부 하차·승차 감시 시점에 같은 도로 배치를 사용한다."
      },
      "L179B01": {
        "bg_id": "L179B01",
        "loc_id": "L179",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L179|main|night|normal",
        "depends_on_fp": [
          "fp_rescue_van_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S28_Shot2",
          "S28_Shot5",
          "S28_Shot7"
        ],
        "sub_location_label": "신부의 밴 내부 — 운전석과 뒷좌석 은신 공간",
        "state_label_raw": "야간 검문 중인 밴의 훼손 없는 내부. 뒷좌석에는 낡은 종이상자가 듬성듬성 놓여 세 사람이 숨을 틈을 만든다. 앞유리 너머에는 길을 막은 무장 민병대, 열린 운전석 창문 밖에는 신부를 확인하는 민병대가 보인다. 검문에 따른 차량 내부의 구조나 적재 상태 변화는 없다."
      },
      "L180B01": {
        "bg_id": "L180B01",
        "loc_id": "L180",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy_exit",
        "surface_role": "interior_room",
        "semantic_key": "L180|main|night|busy_exit",
        "depends_on_fp": [
          "fp_basement_prayer_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S32_Shot8",
          "S32_Shot9"
        ],
        "sub_location_label": "지하 기도실 구석 비밀 통로 입구",
        "state_label_raw": "민병대 접근 경고 직후 긴급 대피 상태. 기존 기도실 배치를 유지하고 구석의 비밀 통로 입구와 그쪽으로 향하는 동선을 강조한다. 신부의 손전등은 이동 광원이며 침입 흔적이나 파손은 없다."
      },
      "L180B02": {
        "bg_id": "L180B02",
        "loc_id": "L180",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L180|main|night|quiet",
        "depends_on_fp": [
          "fp_basement_prayer_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot6",
          "S30_Shot5",
          "S30_Shot10",
          "S30_Shot17",
          "S32_Shot5"
        ],
        "sub_location_label": "지하 기도실 은신 및 대화 공간",
        "state_label_raw": "밤의 단출한 은신처. 십자가, 작은 책상과 의자, 풍금, 구석의 낡은 라디오와 랜턴을 일관되게 유지한다. 촛불 중심의 초기 조명에서 찰리의 푸른 발광과 밝아지는 랜턴으로 이어지는 조명 변화는 쇼트별로 적용하며 구조와 물품 배치는 유지한다."
      },
      "L182B01": {
        "bg_id": "L182B01",
        "loc_id": "L182",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L182|main|night|arrival",
        "depends_on_fp": [
          "fp_ground_floor_entrance"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot10"
        ],
        "sub_location_label": "1층 현관 안쪽에서 문틈 너머를 보는 시점",
        "state_label_raw": "밤, 현관 안쪽의 제한된 시야. 가까운 문틀과 좁게 열린 문틈 너머로 신부와 방문자가 마주 서는 문밖 공간이 보인다. 지하실 배경으로 처리하지 않는다."
      },
      "L183B01": {
        "bg_id": "L183B01",
        "loc_id": "L183",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L183|main|night|busy",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S29_Shot12"
        ],
        "sub_location_label": "성당 주변 수색이 진행되는 밤하늘",
        "state_label_raw": "어두운 밤하늘을 가르는 헬기 서치라이트와 그 주변에 밀집한 소형 드론 실루엣. 지상 평면에 종속되지 않는 상공 수색 플레이트이며 지하실 실내 요소는 배제한다."
      },
      "L188B01": {
        "bg_id": "L188B01",
        "loc_id": "L188",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy_exit",
        "surface_role": "transition_zone",
        "semantic_key": "L188|main|night|busy_exit",
        "depends_on_fp": [
          "fp_third_floor_corridor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S34_Shot7",
          "S34_Shot10",
          "S37_Shot4"
        ],
        "sub_location_label": "3층 복도 문 앞부터 창가·상층 이동 동선",
        "state_label_raw": "문고리가 부서지고 문이 열린 뒤의 긴급 탈출 상태. 재회에서 붉은 경보등 점멸과 해일 직전까지 동일 복도 구조를 유지한다. 경보광은 쇼트별 점멸로 조절하고 창문은 충격 전까지 온전하게 유지."
      },
      "L188B02": {
        "bg_id": "L188B02",
        "loc_id": "L188",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "transition_zone",
        "semantic_key": "L188|main|night|intrusion",
        "depends_on_fp": [
          "fp_third_floor_corridor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S34_Shot3"
        ],
        "sub_location_label": "3층 복도 감금실 문 앞",
        "state_label_raw": "붉은 소화기로 잠긴 감금실 문고리를 강타하는 강제 개방 단계. 문은 아직 닫혀 있고 충돌 지점의 국소 손상만 표현하며 복도 창은 온전함."
      },
      "L188B03": {
        "bg_id": "L188B03",
        "loc_id": "L188",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "ransacked",
        "surface_role": "transition_zone",
        "semantic_key": "L188|main|night|ransacked",
        "depends_on_fp": [
          "fp_third_floor_corridor"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S37_Shot5"
        ],
        "sub_location_label": "3층 복도 창가 해일 충돌 구간",
        "state_label_raw": "실제 해일이 복도 창문을 깨뜨리며 실내로 밀려드는 파괴 순간. 기존 창틀 위치를 유지하고 비산 유리와 거대한 물덩어리로 공간이 급격히 붕괴하는 상태이며 꿈이나 환상이 아님."
      },
      "L189B01": {
        "bg_id": "L189B01",
        "loc_id": "L189",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L189|main|night|normal",
        "depends_on_fp": [
          "fp_third_floor_detention_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S31_Shot2",
          "S31_Shot8",
          "S31_Shot9"
        ],
        "sub_location_label": "관리사무소 3층 감금실",
        "state_label_raw": "불이 켜진 밤의 심문 공간. 마주 놓인 심문 좌석과 수하가 들어오는 문을 유지하며, 인물의 부상과 별개로 배경 혈흔이나 실내 파괴는 추가하지 않음."
      },
      "L190B01": {
        "bg_id": "L190B01",
        "loc_id": "L190",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "site_surface",
        "semantic_key": "L190|main|night|busy",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S33_Shot11",
          "S33_Shot14"
        ],
        "sub_location_label": "샷 묘사 기준: 인공제방과 바다의 전경",
        "state_label_raw": "야간 제방 공격이 진행되는 광역 현장. Shot11은 제방 위 차량 행렬을 향하는 밀집 드론 실루엣, Shot14는 이어지는 폭발로 무너진 제방 틈과 폭포처럼 유입되는 검은 바닷물을 보여준다. 붕괴는 Shot14의 진행 상태이며 Shot11에 선행 적용하지 않는다."
      },
      "L190B02": {
        "bg_id": "L190B02",
        "loc_id": "L190",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L190|main|night|intrusion",
        "depends_on_fp": [
          "fp_chapel_search"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S33_Shot6"
        ],
        "sub_location_label": "샷 묘사 기준: 예배소 내부 지하실 문 주변",
        "state_label_raw": "야간 무장 수색 중 발견된 바닥의 나무 지하실 문. 이를 가리키며 외치는 민병대원 주변의 바닥과 실내 공간을 확보한다. 제공된 헬기 위치 명칭과 불일치."
      },
      "L194B01": {
        "bg_id": "L194B01",
        "loc_id": "L194",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L194|main|day|normal",
        "depends_on_fp": [
          "fp_dump_truck_cab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S3_Shot2"
        ],
        "sub_location_label": "주행 중인 덤프트럭 운전석",
        "state_label_raw": "주간 자율주행 덤프트럭의 정상 운전석. 졸고 있는 운전사 뒤로 실내 구조와 창밖 도로가 보이며 점포 앞 정차 상태로 표현하지 않는다."
      },
      "L194B02": {
        "bg_id": "L194B02",
        "loc_id": "L194",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L194|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S40_Shot1",
          "S40_Shot4",
          "S40_Shot6"
        ],
        "sub_location_label": "난민촌 외곽 도로와 건너편 무인점포 전면",
        "state_label_raw": "주간의 텅 빈 잿빛 아스팔트 도로. 경찰은 보이지 않으며 건너편 무인점포의 네온은 낮에도 켜져 있다. 인물 클로즈업과 점포를 향한 이동 전경의 도로·점포 방향을 일치시킨다."
      },
      "L195B01": {
        "bg_id": "L195B01",
        "loc_id": "L195",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "ransacked",
        "surface_role": "interior_room",
        "semantic_key": "L195|main|day|ransacked",
        "depends_on_fp": [
          "fp_unstaffed_shop"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S41_Shot14",
          "S41_Shot22",
          "S41_Shot26"
        ],
        "sub_location_label": "무인점포 판매장·ATM 앞·진열대 뒤",
        "state_label_raw": "주간 물품 반출 및 ATM 국소 파손 상태. Shot14에서 전면이 관통되고 이후 숨기와 재회에서도 파손은 복구되지 않는다. 현금은 가방에 수거되며, 진열대는 은신이 가능하도록 서 있다. 매장 전체가 뒤엎어진 상태로 확대하지 않는다."
      },
      "L196B01": {
        "bg_id": "L196B01",
        "loc_id": "L196",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L196|main|day|normal",
        "depends_on_fp": [
          "fp_minister_office"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S43_Shot2",
          "S43_Shot4",
          "S43_Shot9",
          "S54_Shot2",
          "S54_Shot5",
          "S54_Shot6"
        ],
        "sub_location_label": "국방장관 집무실 전체 및 소파 응접부",
        "state_label_raw": "낮의 정상 집무실. 소파에 기댄 통화와 대면 협상을 같은 공간 구조로 연결하며, 인물 표정 변화는 배경 상태로 분리하지 않는다. 43씬은 낮으로 가정하고 박철진 쇼트도 제공된 L196 배정을 따른다."
      },
      "L199B01": {
        "bg_id": "L199B01",
        "loc_id": "L199",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L199|main|day|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S55_Shot5"
        ],
        "sub_location_label": "숲길 진입부의 캠핑카 바퀴와 노면",
        "state_label_raw": "낮의 숲길 진입 외부 플레이트. 급격히 꺾인 바퀴와 하부 차체, 뒤로 솟구친 흙먼지, 도로에서 숲길로 이어지는 노면을 낮은 시점으로 구성한다. 전복 상태는 아니다."
      },
      "L199B02": {
        "bg_id": "L199B02",
        "loc_id": "L199",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L199|main|day|quiet",
        "depends_on_fp": [
          "fp_camper_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S55_Shot3"
        ],
        "sub_location_label": "숲이 보이는 캠핑카 측창 주변",
        "state_label_raw": "소나기가 지나간 낮, 장시간 수색으로 지친 분위기의 축축한 실내. 창밖 숲을 가리키는 동작을 위해 측창과 외부 숲의 시야를 확보한다."
      },
      "L199B03": {
        "bg_id": "L199B03",
        "loc_id": "L199",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L199|main|night|busy",
        "depends_on_fp": [
          "fp_camper_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot9"
        ],
        "sub_location_label": "빗물이 들이치는 후방 좌석 창틀",
        "state_label_raw": "누수를 다급히 막는 실내 상태. 창문 틈새와 천장으로 빗물이 들어오고 창틀에 눌러 댄 젖은 헝겊이 보인다. 작은 후방 전등의 어두운 조명을 유지한다."
      },
      "L199B04": {
        "bg_id": "L199B04",
        "loc_id": "L199",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L199|main|night|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot1"
        ],
        "sub_location_label": "빗속 도로를 달리는 캠핑카 외관",
        "state_label_raw": "거센 소나기의 한적한 야간 도로, 헤드라이트를 끈 낡은 캠핑카와 젖은 차체. 실내 평면이 아닌 도로 측 외관 플레이트."
      },
      "L199B05": {
        "bg_id": "L199B05",
        "loc_id": "L199",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L199|main|night|quiet",
        "depends_on_fp": [
          "fp_camper_interior"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S45_Shot4"
        ],
        "sub_location_label": "운전석 백미러와 후방 좌석 시선축",
        "state_label_raw": "슬픔과 긴장으로 조용한 어두운 실내. 뒷좌석의 작은 전등 하나만 켜져 있고 백미러 반사와 후방 좌석의 공간 관계를 유지한다."
      },
      "L202B01": {
        "bg_id": "L202B01",
        "loc_id": "L202",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L202|main|morning|normal",
        "depends_on_fp": [
          "fp_abandoned_library_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S47_Shot3"
        ],
        "sub_location_label": "열람실 안쪽 크레파스 벽화 벽면",
        "state_label_raw": "이른 아침의 실제 도서관 벽면에 새로 그려진 대형 크레파스 벽화. 파란 바다, 해양 생물, 야자수, 캠핑 트럭과 일행, 페드로·엄마·신부님이 노후한 실내와 선명한 색채 대비를 이룬다. 환상 공간이 아닌 물리적 벽화다."
      },
      "L202B02": {
        "bg_id": "L202B02",
        "loc_id": "L202",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L202|main|morning|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S47_Shot9",
          "S47_Shot12"
        ],
        "sub_location_label": "열람실 밖 도서관 외진 구석",
        "state_label_raw": "현우가 밖으로 나와 몰래 전화하는 이른 아침의 인적 드문 건물 구석. 노후한 외벽과 발치 바닥의 위치 관계를 손 클로즈업과 찰리 전신 숏에 일관되게 유지하며, 전날 비의 습기를 남긴다."
      },
      "L202B03": {
        "bg_id": "L202B03",
        "loc_id": "L202",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "exterior_plate",
        "semantic_key": "L202|main|night|arrival",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot1"
        ],
        "sub_location_label": "미추홀도서관 정면 외벽과 차량 정차 공간",
        "state_label_raw": "비 오는 밤의 도착 외관. 큼직한 균열과 마른 넝쿨이 덮인 벽, 낡은 '미추홀도서관, 인천' 간판, 캠핑카가 멈출 전면 공간."
      },
      "L202B04": {
        "bg_id": "L202B04",
        "loc_id": "L202",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L202|main|night|normal",
        "depends_on_fp": [
          "fp_abandoned_library_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot17"
        ],
        "sub_location_label": "열람실 식사 자리와 인접 서가",
        "state_label_raw": "밤의 방치된 열람실에서 일행이 식사하던 상태. 두꺼운 먼지, 거미줄, 흐트러진 서가와 낡은 책을 유지한다. 책을 치는 행동 때문에 공간 전체를 새로 파괴된 상태로 바꾸지 않는다."
      },
      "L202B05": {
        "bg_id": "L202B05",
        "loc_id": "L202",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L202|main|night|quiet",
        "depends_on_fp": [
          "fp_abandoned_library_main"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S46_Shot28"
        ],
        "sub_location_label": "열람실 서가 사이 고물 컴퓨터 자리",
        "state_label_raw": "일행이 잠든 뒤의 고요한 야간 열람실. 먼지 쌓인 책장과 책들 사이에서 켜진 고물 컴퓨터 모니터가 근거리 얼굴 조명의 근거가 된다. 아침의 완성된 벽화는 아직 드러내지 않는다."
      },
      "L205B01": {
        "bg_id": "L205B01",
        "loc_id": "L205",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L205|main|day|intrusion",
        "depends_on_fp": [
          "fp_l205_service_station"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot14"
        ],
        "sub_location_label": "마트 내 산탄총 대치 구역 — 입력 Shot14 위치 배정 유지",
        "state_label_raw": "낮, 약품 코너와 진열대 사이 무장 위협. 발포 전이므로 천장과 진열대는 아직 온전하다."
      },
      "L205B02": {
        "bg_id": "L205B02",
        "loc_id": "L205",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "exterior_plate",
        "semantic_key": "L205|main|day|normal",
        "depends_on_fp": [
          "fp_l205_service_station"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S49_Shot47",
          "S49_Shot51"
        ],
        "sub_location_label": "주유소를 벗어난 도로변 쓰레기 둔덕과 전복 지점",
        "state_label_raw": "낮의 도로변과 쓰레기 둔덕 기본 외경. 충돌·전복 차량, 연기와 깨진 유리, 구조 인물은 숏별 전경 요소이며 별도 배경 상태로 분리하지 않는다."
      },
      "L209B01": {
        "bg_id": "L209B01",
        "loc_id": "L209",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L209|main|day|busy",
        "depends_on_fp": [
          "fp_repair_warehouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S50_Shot4",
          "S50_Shot9",
          "S50_Shot10"
        ],
        "sub_location_label": "카센터 창고 내부 — 현우의 회복 자리와 캠핑카 수리 구역",
        "state_label_raw": "낮, 망가진 캠핑카 수리 중. 회복 자리에서 수리 구역이 보이며 록밴드 포스터, 대형 스피커, 바닥의 커다란 펜치 위치를 유지한다."
      },
      "L211B01": {
        "bg_id": "L211B01",
        "loc_id": "L211",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L211|main|day|normal",
        "depends_on_fp": [
          "fp_container_diner"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot10"
        ],
        "sub_location_label": "컨테이너 간이식당 — 공동 식사 자리",
        "state_label_raw": "낮의 식사와 대화. 국밥 식기와 사용 중인 식사 자리를 유지하며, 현우의 분노 때문에 공간 자체를 파손되거나 혼란스러운 상태로 바꾸지 않는다."
      },
      "L211B02": {
        "bg_id": "L211B02",
        "loc_id": "L211",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L211|main|morning|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot19"
        ],
        "sub_location_label": "출발 차량에서 보이는 컨테이너 식당 쪽 외부",
        "state_label_raw": "다음날 아침 차량 출발과 작별. 입력 위치 L211을 유지하며 차량 속 인물 뒤로 보이는 식당 측 외부를 배경판으로 사용한다. 차량 내부를 식당 실내 평면도로 대체하지 않는다."
      },
      "L211B03": {
        "bg_id": "L211B03",
        "loc_id": "L211",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L211|main|morning|quiet",
        "depends_on_fp": [
          "fp_container_diner"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S51_Shot14"
        ],
        "sub_location_label": "컨테이너 간이식당 — 다음날 편지를 확인하는 자리",
        "state_label_raw": "다음날 아침, 찰리가 떠난 뒤의 조용한 실내. 앰버가 든 낡은 편지 뒤로 기존 식당 공간이 제한적으로 보이며 별도 증거 전시 공간은 만들지 않는다."
      },
      "L220B01": {
        "bg_id": "L220B01",
        "loc_id": "L220",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L220|main|day|busy",
        "depends_on_fp": [
          "fp_church_sanctuary"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S58_Shot5",
          "S58_Shot15",
          "S58_Shot25"
        ],
        "sub_location_label": "파괴된 성당 예배당·단상·철창문",
        "state_label_raw": "낮의 스테인드글라스 광선이 비치는 파괴된 예배당. 군중과 2층 궁사들이 둘러싼 단상, 개폐되는 철창문과 강철 케이지의 위치를 일관되게 유지한다."
      },
      "L222B01": {
        "bg_id": "L222B01",
        "loc_id": "L222",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "dream_or_vision_state",
        "surface_role": "site_surface",
        "semantic_key": "L222|main|day|dream_or_vision_state",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S59_Shot36"
        ],
        "sub_location_label": "수빈의 회상 속 백산 지배를 표현한 목판화 삽입 화면",
        "state_label_raw": "낮 장면에 삽입되는 비사실적 회상 판화. 군중을 굽어보는 비대해진 백산과 금빛 하회탈의 위압감을 받치는 목판화 질감의 군중 배경. 실제 감방이나 특정 건축물의 공간 재현이 아니며 사실적 시간광은 강조하지 않는다."
      },
      "L222B02": {
        "bg_id": "L222B02",
        "loc_id": "L222",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L222|main|day|normal",
        "depends_on_fp": [
          "fp_dungeon_cell"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S59_Shot10",
          "S59_Shot18"
        ],
        "sub_location_label": "지하감옥 감방 내부와 쇠창살 앞",
        "state_label_raw": "낮의 어두운 지하 감방. 쇠창살, 구석의 건초와 바닥에 고인 물을 유지한다. 감자 전달과 피폭 흉터 클로즈업은 동일 공간 상태이며, 신체 흉터를 배경의 혈흔으로 확장하지 않는다."
      },
      "L229B01": {
        "bg_id": "L229B01",
        "loc_id": "L229",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L229|main|dusk|busy",
        "depends_on_fp": [
          "fp_church_forecourt_arena"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot4"
        ],
        "sub_location_label": "성당 앞 격투장과 관중석",
        "state_label_raw": "케이지 상승 때부터 이어지는 노을빛과 횃불 아래 환호하는 관중석. 격투장 중앙의 찰리와 반대편 B-200 사이 대치 축을 확보한 폭격 이전 상태."
      },
      "L229B02": {
        "bg_id": "L229B02",
        "loc_id": "L229",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L229|main|dusk|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot63"
        ],
        "sub_location_label": "지정 L229의 마지막 능선 배경",
        "state_label_raw": "사건 후 시간이 흐른 붉은 노을의 고요한 능선. 맞잡은 인간의 손과 금속 손 뒤에는 흐릿한 자연 지면과 저녁빛을 두며 격투장 관중석을 끌어오지 않는다."
      },
      "L229B03": {
        "bg_id": "L229B03",
        "loc_id": "L229",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "ransacked",
        "surface_role": "exterior_plate",
        "semantic_key": "L229|main|dusk|ransacked",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S60_Shot52"
        ],
        "sub_location_label": "지정 L229의 물탱크 붕괴 현장",
        "state_label_raw": "노을 진 저녁, 물탱크 붕괴와 대량 방류 직후의 젖고 파손된 야외 지면. 백산의 깨진 가면과 드러난 얼굴 클로즈업 뒤로 물에 젖은 현장 질감을 유지한다."
      },
      "L238B01": {
        "bg_id": "L238B01",
        "loc_id": "L238",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L238|main|day|quiet",
        "depends_on_fp": [
          "fp_robot_parts_warehouse"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S64_Shot7",
          "S64_Shot15",
          "S64_Shot24"
        ],
        "sub_location_label": "폐창고 내부의 로봇 더미와 B-200의 그늘진 구석",
        "state_label_raw": "낮, 반쯤 열린 문으로 들어오는 외광과 대비되는 어두운 기계 부품 창고. 한 귀퉁이에 고장 난 로봇들이 산더미처럼 쌓여 있다. B-200 주변 공간과 상자 뒤 아기새 은신처의 위치는 고정하며, 마지막에는 상자를 옮겨 새들을 드러낸다."
      },
      "L239B01": {
        "bg_id": "L239B01",
        "loc_id": "L239",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "site_surface",
        "semantic_key": "L239|main|day|quiet",
        "depends_on_fp": [
          "fp_collapsed_store_site"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S65_Shot5",
          "S65_Shot10",
          "S65_Shot20"
        ],
        "sub_location_label": "식생이 회복된 백화점 외부 잔해와 높은 콘크리트 관망 지점",
        "state_label_raw": "낮의 반파된 백화점 외부. 이끼, 웅덩이, 무성한 나무와 갓 핀 꽃이 잔해를 덮고 있다. 아름답지만 음산한 정적 속에서 생태 회복이 드러나며, 높은 콘크리트 층에서 접근 동선을 내려다볼 수 있다."
      },
      "L240B01": {
        "bg_id": "L240B01",
        "loc_id": "L240",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L240|main|day|quiet",
        "depends_on_fp": [
          "fp_collapsed_store_ground"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S66_Shot14",
          "S66_Shot26",
          "S66_Shot36"
        ],
        "sub_location_label": "백화점 내부 붕괴 구멍 가장자리와 연결된 지하 식품 진열 시야",
        "state_label_raw": "시간은 낮이지만 내부는 어둡다. 무너진 벽, 먼지 낀 안내판과 부분적으로 드러난 에스컬레이터가 붕괴 구멍으로 이어진다. 입력상 이 장소에 배정된 지하 진열대와 통조림 전경을 같은 수직 공간의 연결 시야로 유지한다. 구멍 위 가장자리는 실루엣과 밧줄을 쥔 구조자가 내려다보는 시점의 기준이다."
      },
      "L248B01": {
        "bg_id": "L248B01",
        "loc_id": "L248",
        "space_key": "main",
        "time_phase": "dusk",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L248|main|dusk|intrusion",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot38"
        ],
        "sub_location_label": "추격 중 윤성찬 차량이 떠오르는 외부 공간",
        "state_label_raw": "L248로 지정된 실제 외부 추격 샷; 노을의 꽃밭 주변에서 차량이 푸른빛에 들려 오르는 순간을 받치는 배경"
      },
      "L248B02": {
        "bg_id": "L248B02",
        "loc_id": "L248",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L248|main|night|arrival",
        "depends_on_fp": [
          "fp_assigned_vehicle_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot58"
        ],
        "sub_location_label": "정차한 트럭의 열린 문 너머 구조자",
        "state_label_raw": "비 내리는 야간 도로에 멈춘 트럭의 열린 문틀; 외부 손전등 역광과 사람들의 실루엣 사이로 신부가 드러나는 구조 도착 상태"
      },
      "L248B03": {
        "bg_id": "L248B03",
        "loc_id": "L248",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "blood_scene",
        "surface_role": "interior_room",
        "semantic_key": "L248|main|night|blood_scene",
        "depends_on_fp": [
          "fp_assigned_vehicle_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S72_Shot43"
        ],
        "sub_location_label": "도주 트럭 실내 앰버 부상 클로즈업",
        "state_label_raw": "야간 차량 실내의 어두운 좌석과 창가; 옆구리를 움켜쥔 앰버의 피 묻은 손이 중심이며 실내 전체의 혈흔은 추가하지 않음"
      },
      "L253B01": {
        "bg_id": "L253B01",
        "loc_id": "L253",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L253|main|night|busy",
        "depends_on_fp": [
          "fp_clinic_ward"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S76_Shot1",
          "S76_Shot6",
          "S76_Shot12"
        ],
        "sub_location_label": "목포 보건소 병실 — 상태가 악화된 앰버의 침상 주변",
        "state_label_raw": "밤, 같은 침상 배치를 유지하며 고열과 합병증으로 의사와 일행이 모여 긴박해진 병실. 현우와 의사의 대치 및 찰리가 손을 드는 위치의 동선을 확보한다."
      },
      "L253B02": {
        "bg_id": "L253B02",
        "loc_id": "L253",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L253|main|night|quiet",
        "depends_on_fp": [
          "fp_clinic_ward"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S73_Shot2",
          "S73_Shot5",
          "S73_Shot11"
        ],
        "sub_location_label": "목포 보건소 병실 — 앰버 침상과 곁의 대기 공간",
        "state_label_raw": "밤, 응급치료를 마친 앰버가 잠든 조용한 병실. 침상 곁의 위로와 쿠마와의 재회가 가능한 여유 공간을 유지한다."
      },
      "L256B01": {
        "bg_id": "L256B01",
        "loc_id": "L256",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "arrival",
        "surface_role": "exterior_plate",
        "semantic_key": "L256|main|night|arrival",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot10"
        ],
        "sub_location_label": "공항 입구에서 창고로 이어지는 공터",
        "state_label_raw": "야간, 신부가 급히 달려오는 공터의 접근 동선. 이끼 낀 깨진 포장, 반쯤 떨어진 옛 공항 간판과 일행의 모닥불을 배경 연속성으로 유지한다."
      },
      "L256B02": {
        "bg_id": "L256B02",
        "loc_id": "L256",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L256|main|night|quiet",
        "depends_on_fp": [
          "fp_l256_aircraft_storage"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S75_Shot5"
        ],
        "sub_location_label": "먼지 쌓인 경비행기 보관 창고 내부",
        "state_label_raw": "야간, 작동하지 않는 낡은 경비행기들이 빽빽하게 놓인 정적인 창고. 기체 표면의 두꺼운 먼지와 거대한 창고 규모를 유지한다."
      },
      "L257B01": {
        "bg_id": "L257B01",
        "loc_id": "L257",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy_exit",
        "surface_role": "exterior_plate",
        "semantic_key": "L257|main|day|busy_exit",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot43"
        ],
        "sub_location_label": "격납고 앞 헬기 이륙 공터",
        "state_label_raw": "주간, 일행을 태운 헬리콥터가 멀어지는 출발 상태. 현우와 찰리가 지상에서 배웅할 수 있는 넓은 포장면과 열린 하늘 시야를 확보한다."
      },
      "L257B02": {
        "bg_id": "L257B02",
        "loc_id": "L257",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "exterior_plate",
        "semantic_key": "L257|main|day|quiet",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot53"
        ],
        "sub_location_label": "격납고 앞 공터에서 공항 밖으로 이어지는 길",
        "state_label_raw": "주간, 헬기가 사라진 뒤 한적해진 폐공항. 깨진 포장과 이끼, 뒤로 물러나는 격납고를 유지하고 두 사람이 멀어지는 보행 동선을 길게 확보한다."
      },
      "L257B03": {
        "bg_id": "L257B03",
        "loc_id": "L257",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L257|main|night|busy",
        "depends_on_fp": [
          "fp_l257_hangar"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S77_Shot22"
        ],
        "sub_location_label": "재가동된 경비행기들 사이의 격납고 중앙",
        "state_label_raw": "야간, 여러 경비행기가 재가동되어 검은 매연이 번지는 격납고. 전구의 전력 요동과 터진 전구의 흔적을 반영하며 중앙의 찰리를 둘러싼 기체 배치를 유지한다."
      },
      "L261B01": {
        "bg_id": "L261B01",
        "loc_id": "L261",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "busy",
        "surface_role": "exterior_plate",
        "semantic_key": "L261|main|night|busy",
        "depends_on_fp": [
          "fp_boat_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S80_Shot9",
          "S80_Shot15"
        ],
        "sub_location_label": "폭풍 속 갑판 가장자리와 지지 기둥",
        "state_label_raw": "선원들이 대응 중인 야간 태풍. 장대비와 갑판을 휩쓰는 파도, 기둥과 추락 지점의 위치를 유지하며 손을 붙잡는 순간과 놓치는 순간을 연결한다."
      },
      "L261B02": {
        "bg_id": "L261B02",
        "loc_id": "L261",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "site_surface",
        "semantic_key": "L261|main|night|normal",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S80_Shot20"
        ],
        "sub_location_label": "선박 아래 칠흑 같은 심해",
        "state_label_raw": "입력의 L261 배정을 유지하는 실제 수중 공간. 갑판과 실내 구조가 보이지 않는 어두운 수괴에 두 인물의 실루엣이 잠긴다. 환상 공간이 아니며 서서히 암전한다."
      },
      "L263B01": {
        "bg_id": "L263B01",
        "loc_id": "L263",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L263|main|night|normal",
        "depends_on_fp": [
          "fp_boat_crew_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S79_Shot14"
        ],
        "sub_location_label": "선원실 바닥과 몸이 쏠리는 벽",
        "state_label_raw": "폭풍 충격으로 선체가 심하게 기울어진 순간. 기존 선원실 구조를 유지하고 경사진 바닥과 벽의 방향으로 쏠림을 표현한다. 약탈 흔적이나 파손은 추가하지 않는다."
      },
      "L263B02": {
        "bg_id": "L263B02",
        "loc_id": "L263",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L263|main|night|quiet",
        "depends_on_fp": [
          "fp_boat_crew_cabin"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S79_Shot10",
          "S79_Shot12"
        ],
        "sub_location_label": "작은 선원실의 소파 주변",
        "state_label_raw": "야간의 조용한 휴식 공간. 대화와 잠에서 깨어나는 순간까지 같은 배치이며, 초기 진동에도 눈에 보이는 파손은 없다."
      },
      "L266B01": {
        "bg_id": "L266B01",
        "loc_id": "L266",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "arrival",
        "surface_role": "transition_zone",
        "semantic_key": "L266|main|day|arrival",
        "depends_on_fp": [],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S81_Shot13",
          "S81_Shot16"
        ],
        "sub_location_label": "연구센터로 향하는 자동문 문턱 — 입력 L266 배정",
        "state_label_raw": "낮, 안내를 따라 이동하다 멈추는 시선과 두꺼운 좌우 개폐 자동문 너머의 첫 발견. 장면상 복도·연구센터 진입부이나 입력 shot의 L266 배정을 유지하며 병실 내부 구조를 문 너머에 반복하지 않는다."
      },
      "L266B02": {
        "bg_id": "L266B02",
        "loc_id": "L266",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L266|main|day|quiet",
        "depends_on_fp": [
          "fp_l266_shelter_room"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S81_Shot5",
          "S83_Shot5",
          "S83_Shot6",
          "S83_Shot7"
        ],
        "sub_location_label": "임시보호소 병실과 통화 모니터",
        "state_label_raw": "낮의 조용한 흰 병실. 강한 형광등, 흰 침대, 창밖 에메랄드빛 제주 바다와 화상통화 모니터를 유지한다. 통화 화면은 모니터 삽입 영상이며 별도 방으로 확장하지 않는다."
      },
      "L268B01": {
        "bg_id": "L268B01",
        "loc_id": "L268",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L268|main|day|busy",
        "depends_on_fp": [
          "fp_l268_main_center"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S82_Shot14",
          "S82_Shot17",
          "S82_Shot26",
          "S85_Shot11",
          "S85_Shot22",
          "S85_Shot23"
        ],
        "sub_location_label": "메인센터의 유리벽 실험 구역 및 배정된 대화 클로즈업",
        "state_label_raw": "낮의 가동 중인 대형 연구센터. 열대 식물, 컴퓨터, 푸른 유리벽과 차가운 스테인리스 침대, 스캔 장치가 공존한다. 실험 실패 컷에만 링의 검은 연기와 ERROR 화면을 적용한다. 식당 대화에 해당하는 배정 클로즈업은 배경을 타이트하게 제한한다."
      },
      "L269B01": {
        "bg_id": "L269B01",
        "loc_id": "L269",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "busy",
        "surface_role": "interior_room",
        "semantic_key": "L269|main|morning|busy",
        "depends_on_fp": [
          "fp_l269_observation_lab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot7",
          "S88_Shot24"
        ],
        "sub_location_label": "분해 준비 중인 유리벽 실험실",
        "state_label_raw": "섬의 아침 이후, 푸른 작업등 아래 분해 준비가 진행되는 실험실. 스테인리스 침대의 굵은 결박과 잠금장치, 연구원 작업대, 관찰 유리와 스피커를 유지한다. 작별 대화 시 손의 결박 해제는 컷별 연속성으로 처리한다."
      },
      "L269B02": {
        "bg_id": "L269B02",
        "loc_id": "L269",
        "space_key": "main",
        "time_phase": "morning",
        "state_class": "intrusion",
        "surface_role": "interior_room",
        "semantic_key": "L269|main|morning|intrusion",
        "depends_on_fp": [
          "fp_l269_observation_lab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S88_Shot29"
        ],
        "sub_location_label": "침입 경보가 켜진 실험실",
        "state_label_raw": "같은 아침 실험실 구조에 갑작스러운 붉은 사이렌 조명이 점멸한다. 기존 푸른 작업등과 유리 반사 위로 적색 경보가 덮이며, 아직 실험실 내부의 전투 파괴는 추가하지 않는다."
      },
      "L269B03": {
        "bg_id": "L269B03",
        "loc_id": "L269",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L269|main|night|quiet",
        "depends_on_fp": [
          "fp_l269_observation_lab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S84_Shot1",
          "S84_Shot11",
          "S84_Shot14"
        ],
        "sub_location_label": "야간 실험실과 재회 클로즈업 — 입력 L269 배정",
        "state_label_raw": "야간의 고요한 푸른 실험실, 금속 침대와 연결 전선. 재회 클로즈업은 장면상 연결된 소장실에서 일어나므로 배경을 제한하고 모던한 실내의 부드러운 분위기를 유지한다. 피아노나 소장실 기둥을 실험실 평면 안으로 옮기지 않는다."
      },
      "L270B01": {
        "bg_id": "L270B01",
        "loc_id": "L270",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "normal",
        "surface_role": "interior_room",
        "semantic_key": "L270|main|night|normal",
        "depends_on_fp": [
          "fp_l270_director_suite"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S86_Shot2",
          "S86_Shot5"
        ],
        "sub_location_label": "메인센터 소장실",
        "state_label_raw": "밤의 정돈된 모던 소장실. 현우의 격한 항의와 소영의 응대에도 공간 자체는 손상 없이 유지하며, 책상·출입문·기둥·낡은 피아노의 위치를 고정한다."
      },
      "L278B01": {
        "bg_id": "L278B01",
        "loc_id": "L278",
        "space_key": "main",
        "time_phase": "day",
        "state_class": "intrusion",
        "surface_role": "exterior_plate",
        "semantic_key": "L278|main|day|intrusion",
        "depends_on_fp": [
          "fp_l278_roof_antenna_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S89_Shot42",
          "S89_Shot53"
        ],
        "sub_location_label": "옥상 잔디공원·안테나·헬기 착지 구역",
        "state_label_raw": "낮, 무장 헬기가 착지한 공격받는 옥상. 거대한 안테나, 사방 스피커, 잔디와 탄격 흔적을 유지한다. 광선 컷은 같은 실제 옥상에서 새하얀 수직 에너지 기둥이 노출을 압도하는 순간이며 환상 공간이 아니다."
      },
      "L278B02": {
        "bg_id": "L278B02",
        "loc_id": "L278",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "ransacked",
        "surface_role": "exterior_plate",
        "semantic_key": "L278|main|night|ransacked",
        "depends_on_fp": [
          "fp_l278_roof_antenna_deck"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S89_Shot66"
        ],
        "sub_location_label": "광선 소멸 뒤 옥상 잔해 구역",
        "state_label_raw": "밤, 광선이 사라진 뒤 전투로 훼손된 옥상. 기존 안테나와 스피커의 공간 관계를 잔존시키고 그을린 표면과 흩어진 파편, 찰리의 산화된 몸통 잔해 주변을 보여준다. 광선은 더 이상 남아 있지 않는다."
      },
      "L282B01": {
        "bg_id": "L282B01",
        "loc_id": "L282",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "dream_or_vision_state",
        "surface_role": "interior_room",
        "semantic_key": "L282|main|night|dream_or_vision_state",
        "depends_on_fp": [
          "fp_l282_restoration_lab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S90_Shot9"
        ],
        "sub_location_label": "복원 연구실의 제주도 홀로그램",
        "state_label_raw": "어두운 실제 연구실 허공에 푸른 제주도 풍경과 거대한 찰리 홀로그램이 투사된다. 낙원 같은 영상은 실내 투영층으로 표현하고 테이블·모니터·좌석의 실제 공간은 유지한다. 투사된 낮 풍경 때문에 연구실 시간을 낮으로 바꾸지 않는다."
      },
      "L282B02": {
        "bg_id": "L282B02",
        "loc_id": "L282",
        "space_key": "main",
        "time_phase": "night",
        "state_class": "quiet",
        "surface_role": "interior_room",
        "semantic_key": "L282|main|night|quiet",
        "depends_on_fp": [
          "fp_l282_restoration_lab"
        ],
        "depends_on_bg": [],
        "applies_to_shots": [
          "S90_Shot4",
          "S90_Shot13"
        ],
        "sub_location_label": "찰리 부품 보관·복원 연구실",
        "state_label_raw": "밤의 넓고 어두운 연구실. 제단처럼 보이는 부품 테이블, 뒤편 좌석, 전 세계 에너지원 공급을 보여주는 대형 모니터를 유지한다. 칩 전달 시 분해 부품, 마지막 컷에서는 같은 수술대 위 조립된 형태로 진행하며 실내 자체는 고요하다."
      }
    },
    "shot_background_map": {
      "S5_Shot16": "L152B01",
      "S5_Shot9": "L152B02",
      "S5_Shot1": "L152B03",
      "S8_Shot5": "L159B01",
      "S8_Shot8": "L159B01",
      "S8_Shot13": "L159B02",
      "S9_Shot2": "L161B01",
      "S9_Shot5": "L161B01",
      "S10_Shot3": "L162B01",
      "S10_Shot6": "L162B01",
      "S10_Shot7": "L162B01",
      "S24_Shot4": "L166B01",
      "S24_Shot7": "L166B01",
      "S24_Shot10": "L166B01",
      "S14_Shot3": "L166B02",
      "S14_Shot5": "L166B02",
      "S14_Shot9": "L166B02",
      "S12_Shot7": "L166B03",
      "S12_Shot8": "L166B03",
      "S12_Shot12": "L166B04",
      "S17_Shot7": "L168B01",
      "S17_Shot1": "L168B02",
      "S15_Shot4": "L168B03",
      "S15_Shot10": "L168B03",
      "S16_Shot3": "L169B01",
      "S16_Shot6": "L169B01",
      "S21_Shot2": "L170B01",
      "S21_Shot5": "L170B01",
      "S18_Shot1": "L171B01",
      "S18_Shot5": "L171B01",
      "S18_Shot6": "L171B01",
      "S23_Shot1": "L173B01",
      "S23_Shot6": "L173B01",
      "S23_Shot11": "L173B01",
      "S26_Shot7": "L175B01",
      "S26_Shot9": "L175B01",
      "S26_Shot11": "L175B01",
      "S36_Shot4": "L176B01",
      "S36_Shot7": "L176B01",
      "S27_Shot12": "L177B01",
      "S27_Shot18": "L177B01",
      "S27_Shot21": "L177B01",
      "S28_Shot2": "L179B01",
      "S28_Shot5": "L179B01",
      "S28_Shot7": "L179B01",
      "S32_Shot8": "L180B01",
      "S32_Shot9": "L180B01",
      "S29_Shot6": "L180B02",
      "S30_Shot5": "L180B02",
      "S30_Shot10": "L180B02",
      "S30_Shot17": "L180B02",
      "S32_Shot5": "L180B02",
      "S29_Shot10": "L182B01",
      "S29_Shot12": "L183B01",
      "S34_Shot7": "L188B01",
      "S34_Shot10": "L188B01",
      "S37_Shot4": "L188B01",
      "S34_Shot3": "L188B02",
      "S37_Shot5": "L188B03",
      "S31_Shot2": "L189B01",
      "S31_Shot8": "L189B01",
      "S31_Shot9": "L189B01",
      "S33_Shot11": "L190B01",
      "S33_Shot14": "L190B01",
      "S33_Shot6": "L190B02",
      "S3_Shot2": "L194B01",
      "S40_Shot1": "L194B02",
      "S40_Shot4": "L194B02",
      "S40_Shot6": "L194B02",
      "S41_Shot14": "L195B01",
      "S41_Shot22": "L195B01",
      "S41_Shot26": "L195B01",
      "S43_Shot2": "L196B01",
      "S43_Shot4": "L196B01",
      "S43_Shot9": "L196B01",
      "S54_Shot2": "L196B01",
      "S54_Shot5": "L196B01",
      "S54_Shot6": "L196B01",
      "S55_Shot5": "L199B01",
      "S55_Shot3": "L199B02",
      "S45_Shot9": "L199B03",
      "S45_Shot1": "L199B04",
      "S45_Shot4": "L199B05",
      "S47_Shot3": "L202B01",
      "S47_Shot9": "L202B02",
      "S47_Shot12": "L202B02",
      "S46_Shot1": "L202B03",
      "S46_Shot17": "L202B04",
      "S46_Shot28": "L202B05",
      "S49_Shot14": "L205B01",
      "S49_Shot47": "L205B02",
      "S49_Shot51": "L205B02",
      "S50_Shot4": "L209B01",
      "S50_Shot9": "L209B01",
      "S50_Shot10": "L209B01",
      "S51_Shot10": "L211B01",
      "S51_Shot19": "L211B02",
      "S51_Shot14": "L211B03",
      "S58_Shot5": "L220B01",
      "S58_Shot15": "L220B01",
      "S58_Shot25": "L220B01",
      "S59_Shot36": "L222B01",
      "S59_Shot10": "L222B02",
      "S59_Shot18": "L222B02",
      "S60_Shot4": "L229B01",
      "S60_Shot63": "L229B02",
      "S60_Shot52": "L229B03",
      "S64_Shot7": "L238B01",
      "S64_Shot15": "L238B01",
      "S64_Shot24": "L238B01",
      "S65_Shot5": "L239B01",
      "S65_Shot10": "L239B01",
      "S65_Shot20": "L239B01",
      "S66_Shot14": "L240B01",
      "S66_Shot26": "L240B01",
      "S66_Shot36": "L240B01",
      "S72_Shot38": "L248B01",
      "S72_Shot58": "L248B02",
      "S72_Shot43": "L248B03",
      "S76_Shot1": "L253B01",
      "S76_Shot6": "L253B01",
      "S76_Shot12": "L253B01",
      "S73_Shot2": "L253B02",
      "S73_Shot5": "L253B02",
      "S73_Shot11": "L253B02",
      "S75_Shot10": "L256B01",
      "S75_Shot5": "L256B02",
      "S77_Shot43": "L257B01",
      "S77_Shot53": "L257B02",
      "S77_Shot22": "L257B03",
      "S80_Shot9": "L261B01",
      "S80_Shot15": "L261B01",
      "S80_Shot20": "L261B02",
      "S79_Shot14": "L263B01",
      "S79_Shot10": "L263B02",
      "S79_Shot12": "L263B02",
      "S81_Shot13": "L266B01",
      "S81_Shot16": "L266B01",
      "S81_Shot5": "L266B02",
      "S83_Shot5": "L266B02",
      "S83_Shot6": "L266B02",
      "S83_Shot7": "L266B02",
      "S82_Shot14": "L268B01",
      "S82_Shot17": "L268B01",
      "S82_Shot26": "L268B01",
      "S85_Shot11": "L268B01",
      "S85_Shot22": "L268B01",
      "S85_Shot23": "L268B01",
      "S88_Shot7": "L269B01",
      "S88_Shot24": "L269B01",
      "S88_Shot29": "L269B02",
      "S84_Shot1": "L269B03",
      "S84_Shot11": "L269B03",
      "S84_Shot14": "L269B03",
      "S86_Shot2": "L270B01",
      "S86_Shot5": "L270B01",
      "S89_Shot42": "L278B01",
      "S89_Shot53": "L278B01",
      "S89_Shot66": "L278B02",
      "S90_Shot9": "L282B01",
      "S90_Shot4": "L282B02",
      "S90_Shot13": "L282B02"
    },
    "bg_catalog_hash": "c2c23f887261bc5b",
    "shot_binding_hash": "4957851da6e5119b",
    "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": 45,
        "kept_backgrounds_count": 86,
        "dropped_floor_plans_count": 24,
        "dropped_backgrounds_count": 18,
        "dropped_groups_count": 0,
        "dropped_floor_plans": [
          {
            "group_id": "bg_luxury_house",
            "fp_id": "fp_house_approach",
            "loc_id": "L151",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_luxury_house",
            "fp_id": "fp_upstairs_bedroom",
            "loc_id": "L153",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_luxury_house",
            "fp_id": "fp_upstairs_stairs",
            "loc_id": "L153",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_candlelit_container_home",
            "fp_id": "fp_container_frontage",
            "loc_id": "L165",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_urban_church",
            "fp_id": "fp_basement_stairs",
            "loc_id": "L181",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_urban_church",
            "fp_id": "fp_church_exterior_site",
            "loc_id": "L183",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_urban_church",
            "fp_id": "fp_ground_floor_chapel",
            "loc_id": "L184",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_refugee_administration",
            "fp_id": "fp_administration_yard",
            "loc_id": "L186",
            "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_interior",
            "loc_id": "L200",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_roadside_service_station",
            "fp_id": "fp_l206_market",
            "loc_id": "L206",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_auto_repair_complex",
            "fp_id": "fp_repair_center_exterior",
            "loc_id": "L210",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_village_church_arena",
            "fp_id": "fp_church_exterior",
            "loc_id": "L219",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_village_dungeon",
            "fp_id": "fp_dungeon_corridor",
            "loc_id": "L223",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_collapsed_department_store",
            "fp_id": "fp_collapsed_store_basement",
            "loc_id": "L241",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_flowerfield_laboratory",
            "fp_id": "fp_memory_flowerfield",
            "loc_id": "L242",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_flowerfield_laboratory",
            "fp_id": "fp_laboratory_flowerfield",
            "loc_id": "L247",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_flowerfield_laboratory",
            "fp_id": "fp_upper_piano_space",
            "loc_id": "L249",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_flowerfield_laboratory",
            "fp_id": "fp_laboratory_yard",
            "loc_id": "L250",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_coastal_flowerfield_laboratory",
            "fp_id": "fp_cliff_edge",
            "loc_id": "L251",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_storm_boat",
            "fp_id": "fp_boat_surrounding_sea",
            "loc_id": "L262",
            "is_indoor": false,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          },
          {
            "group_id": "bg_storm_boat",
            "fp_id": "fp_boat_wheelhouse",
            "loc_id": "L264",
            "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_l267_access_corridor",
            "loc_id": "L267",
            "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_l271_dining_hall",
            "loc_id": "L271",
            "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_l277_control_room",
            "loc_id": "L277",
            "is_indoor": true,
            "shot_count": 0,
            "referenced_by_kept_background": false,
            "reasons": [
              "no_kept_background_ref"
            ]
          }
        ],
        "dropped_backgrounds": [
          {
            "loc_id": "L151",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "exterior_plate",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L153",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L153",
            "space_key_hint": "stairs",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "transition_zone",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L186",
            "space_key_hint": "main",
            "time_phase": "night",
            "state_class": "normal",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L206",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L206",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L206",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "ransacked",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L210",
            "space_key_hint": "main",
            "time_phase": "morning",
            "state_class": "quiet",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L241",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L242",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "dream_or_vision_state",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L247",
            "space_key_hint": "main",
            "time_phase": "dusk",
            "state_class": "intrusion",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L249",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "quiet",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L249",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L250",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "arrival",
            "surface_role": "exterior_plate",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L250",
            "space_key_hint": "main",
            "time_phase": "day",
            "state_class": "intrusion",
            "surface_role": "transition_zone",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L251",
            "space_key_hint": "main",
            "time_phase": "dusk",
            "state_class": "intrusion",
            "surface_role": "exterior_plate",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L262",
            "space_key_hint": "main",
            "time_phase": "night",
            "state_class": "normal",
            "surface_role": "site_surface",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          },
          {
            "loc_id": "L264",
            "space_key_hint": "main",
            "time_phase": "night",
            "state_class": "busy",
            "surface_role": "interior_room",
            "applies_to_shots": [],
            "reasons": [
              "no_consuming_shot"
            ]
          }
        ],
        "dropped_groups": []
      },
      "location_profile_pre_filter": {
        "bg_refugee_administration": {
          "raw_member_count": 5,
          "kept_member_count": 3,
          "filtered_members": [
            {
              "loc_id": "L185",
              "label": "인천 난민촌 관리사무소 외부",
              "shot_count": 0,
              "reason": "no_location_profile"
            },
            {
              "loc_id": "L187",
              "label": "인천 난민촌 관리사무소 계단",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_camper_vehicle": {
          "raw_member_count": 3,
          "kept_member_count": 2,
          "filtered_members": [
            {
              "loc_id": "L208",
              "label": "캠핑카가 전복된 도로변 쓰레기 둔덕",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_abandoned_library": {
          "raw_member_count": 2,
          "kept_member_count": 1,
          "filtered_members": [
            {
              "loc_id": "L201",
              "label": "미추홀도서관 외부",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        },
        "bg_island_research_complex": {
          "raw_member_count": 11,
          "kept_member_count": 9,
          "filtered_members": [
            {
              "loc_id": "L279",
              "label": "제주도 연구소 상공",
              "shot_count": 0,
              "reason": "no_location_profile"
            },
            {
              "loc_id": "L281",
              "label": "폭격당하는 제주도 연구소 외벽",
              "shot_count": 0,
              "reason": "no_location_profile"
            }
          ]
        }
      }
    }
  },
  "step_id": "background_master_plan",
  "run_id": "ef230b56-c514-4330-87ed-06773ae201c2",
  "resolved_model": "gpt",
  "updated_at": "2026-09-18T17:28:33.335309+00:00",
  "project_config_snapshot": {}
}