// ===================== Storyboard conte images =====================
// Single source of truth for sceneId -> image path.
// To move to a CDN later, change STORYBOARD_BASE here ONLY.
const STORYBOARD_BASE = 'test-scripts/storyboards/ready-mode-conte-20260604';
const SCENE_IMAGES = {
  '12A': STORYBOARD_BASE + '/scene-12A.png',
  '12B': STORYBOARD_BASE + '/scene-12B.png',
  '12C': STORYBOARD_BASE + '/scene-12C.png',
  13: STORYBOARD_BASE + '/scene-13.png',
  '14A': STORYBOARD_BASE + '/scene-14A.png',
  '14B': STORYBOARD_BASE + '/scene-14B.png',
  '14C': STORYBOARD_BASE + '/scene-14C.png',
  '15A': STORYBOARD_BASE + '/scene-15A.png',
  '15B': STORYBOARD_BASE + '/scene-15B.png',
  '15C': STORYBOARD_BASE + '/scene-15C.png',
  '16A': STORYBOARD_BASE + '/scene-16A.png',
  '16B': STORYBOARD_BASE + '/scene-16B.png',
  17: STORYBOARD_BASE + '/scene-17.png',
  18: STORYBOARD_BASE + '/scene-18.png',
};
const sceneImg = (id) => SCENE_IMAGES[id] || null;
window.SCENE_IMAGES = SCENE_IMAGES;
window.sceneImg = sceneImg;

// All Korean strings + scene/board data
const DATA = {
  title: '어둠의 추격자',
  ep: '에피소드 07',
  epTag: '추격전',
  genre: '드라마',
  mode: '영화/드라마 제작 모드',
  date: '2025년 10월 20일',
  crew: [
    { role: '감독', name: '김감독', avatar: '김', color: '#6c5ce7' },
    { role: '조감독', name: '이조감독', avatar: '이', color: '#a25ddc' },
    { role: '작가', name: '박작가', avatar: '박', color: '#0086c0' },
    { role: '제작', name: '정제작', avatar: '정', color: '#00c875' },
    { role: '촬영', name: '김촬영', avatar: '촬', color: '#fdab3d' },
  ],
  studio: '미드나잇 프로덕션',
  viewers: [
    { name: '김감독', avatar: '김', color: '#6c5ce7' },
    { name: '이촬영', avatar: '이', color: '#0086c0' },
    { name: '에디터', avatar: 'E', color: '#00c875' },
  ],
  weather: { tag: '흐림', temp: '18°C', sunrise: '06:42', sunset: '18:23' },
  clocks: [
    { l: '촬영 경과', v: '08:16:39', tone: 'accent' },
    { l: '남은 시간', v: '02:43:21', tone: 'blue' },
    { l: '다음 컷', v: '00:12:08', tone: 'red' },
  ],
  scene: {
    no: '12A',
    dn: 'N',
    sl: 'L',
    p: '2/8P',
    tense: '현재',
    location: '도심 골목길',
    interior: '내부. 도심 골목길 — 밤',
    cast: [
      { who: '민재', code: 'C-07' },
      { who: '지우', code: 'C-12' },
    ],
    wardrobe: ['C-07', 'C-12'],
    props: ['후레쉬', '휴대폰'],
    art: ['그래피티 벽면'],
    sfx: ['레인머신'],
    stunt: [],
    makeup: [],
    cg: [],
    gear: ['ARRI ALEXA Mini LF', 'Zeiss CP.3 세트', '스테디캠'],
    special: ['레인머신 2대', 'HMI 4kW', '지미집'],
    flags: ['야간촬영'],
    note: '골목길을 달리는 주인공을 와이드샷으로 잡음. 가로등의 자연 조명 활용.',
    desc: '비가 더러운 벽돌 벽을 타고 흘러내린다. 네온사인이 물웅덩이에 반사되어 빨강과 파랑으로 깜빡인다. 골목은 좁고 폐쇄적이다.',
  },
  schedule: [
    {
      time: '06:00',
      kind: 'ghost',
      title: '콜타임 / 장비 셋업',
      loc: '도심 골목길',
      dur: '1시간',
      ico: '☕',
    },
    {
      time: '09:00',
      kind: 'now',
      title: '씬 12A — 와이드 추격',
      loc: '도심 골목길',
      dur: '예상 2시간 30분',
      ico: '🎬',
      scene: '12A',
    },
    {
      time: '11:00',
      kind: 'shoot',
      title: '씬 12B — 클로즈업',
      loc: '도심 골목길',
      dur: '예상 1시간 45분',
      ico: '🎬',
      scene: '12B',
    },
    {
      time: '14:00',
      kind: 'next',
      title: '씬 13 — 카페 시퀀스',
      loc: '카페 내부',
      dur: '예상 2시간 15분',
      ico: '🎬',
      scene: '13',
    },
    {
      time: '16:00',
      kind: 'shoot',
      title: '씬 14A — 오버숄더',
      loc: '가로수길',
      dur: '예상 1시간 30분',
      ico: '🎬',
      scene: '14A',
    },
    {
      time: '18:00',
      kind: 'shoot',
      title: '씬 15A — 인서트',
      loc: '아파트 내부',
      dur: '예상 2시간',
      ico: '🎬',
      scene: '15A',
    },
  ],
  otherEvents: [
    { title: '배우 스케줄 조율 미팅', when: '오후 2시 – 3시', where: '제작사 회의실' },
    { title: '의상팀 피팅', when: '오후 4시 – 5시 30분', where: '의상실' },
    { title: '장비 점검', when: '오후 6시 – 7시', where: '장비 창고' },
    { title: '내일 사전답사', when: '오전 10시 – 12시', where: '한강공원 뚝섬지구' },
  ],
  notes: [
    {
      who: '김감독',
      role: '감독',
      av: '김',
      color: '#6c5ce7',
      date: '2024-11-14 14:30',
      tags: ['씬 12A', '와이드샷'],
      txt: '긴박감을 강조할 것. 레인머신 최대 출력. 자연 조명만 사용 — 인공 조명 보조 금지.',
    },
    {
      who: '이촬영',
      role: '촬영감독',
      av: '이',
      color: '#0086c0',
      date: '2024-11-14 15:10',
      tags: ['씬 12B', '핸드헬드'],
      txt: '핸드헬드 카메라로 불안정한 느낌 강조. 가로등 조명만으로 실루엣 효과 극대화.',
    },
    {
      who: '박조명',
      role: '조명감독',
      av: '박',
      color: '#fdab3d',
      date: '2024-11-14 15:45',
      tags: ['씬 12A', '컬러 온도'],
      txt: '네온사인 컬러 온도 체크 완료. 레드/블루 밸런스 조정 필요.',
    },
  ],
  // ordered conte scenes — each maps 1:1 to SCENE_IMAGES
  storyboard: [
    { id: '12A', shot: '와이드샷', loc: '도심 골목길', title: '빗속 골목 추격', on: true },
    { id: '12B', shot: '클로즈업', loc: '도심 골목길', title: '지우 클로즈업' },
    { id: '12C', shot: '로우앵글', loc: '도심 골목길', title: '발 추격 인서트' },
    { id: '13', shot: '오버숄더', loc: '골목 분기점', title: '방향 지시' },
    { id: '14A', shot: '투샷', loc: '세이프하우스 앞', title: '문 진입' },
    { id: '14B', shot: '미디엄샷', loc: '세이프하우스', title: '문 봉쇄' },
    { id: '14C', shot: '리액션샷', loc: '세이프하우스', title: '창밖의 그림자' },
    { id: '15A', shot: '와이드샷', loc: '세이프하우스', title: '단서 확보' },
    { id: '15B', shot: '인서트샷', loc: '세이프하우스', title: '녹음기 인서트' },
    { id: '15C', shot: '리액션샷', loc: '세이프하우스', title: '충격적 진실' },
    { id: '16A', shot: '로우앵글', loc: '건물 외부', title: '추격자 도착' },
    { id: '16B', shot: '와이드샷', loc: '창고 은신처', title: '숨죽인 은신' },
    { id: '17', shot: '액션시퀀스', loc: '지하 통로', title: '탈출구 확보' },
    { id: '18', shot: '익스터블리싱', loc: '옥상 · 도심 전경', title: '옥상 — 엔딩' },
  ],
  scenes: [
    '12A',
    '12B',
    '12C',
    '13',
    '14A',
    '14B',
    '14C',
    '15A',
    '15B',
    '15C',
    '16A',
    '16B',
    '17',
    '18',
  ],
  shotTypes: [
    '와이드샷',
    '클로즈업',
    '오버숄더',
    '트래킹샷',
    '익스터블리싱',
    '인서트샷',
    '리액션샷',
    '액션시퀀스',
  ],
  takes: [
    { scene: '12A', cut: '001', take: '01', status: 'NG', note: '포커스 문제' },
    { scene: '12A', cut: '001', take: '02', status: 'NG', note: '배우 발 헛디딤' },
    { scene: '12A', cut: '001', take: '03', status: 'OK', note: '양호한 연기' },
    { scene: '12A', cut: '002', take: '01', status: 'OK', note: '', newCount: 2 },
    { scene: '12A', cut: '002', take: '02', status: 'KEEP', note: '최종본 — 이것 사용' },
    { scene: '12A', cut: '003', take: '01', status: 'NG', note: '오디오 문제' },
    { scene: '12A', cut: '003', take: '02', status: 'OK', note: '' },
  ],
  scenesAll: [
    { n: '1', shot: '샷 정보 없음', loc: '대학 강의실' },
    { n: '2', shot: '샷 정보 없음', loc: '모의 법정', on: true },
    { n: '3', shot: '샷 정보 없음', loc: '마을버스 정류장' },
    { n: '4', shot: '샷 정보 없음', loc: '팬시 숍 앞' },
    { n: '5', shot: '샷 정보 없음', loc: '팬시 숍 안' },
    { n: '6', shot: '샷 정보 없음', loc: '승호의 단칸방' },
    { n: '7', shot: '샷 정보 없음', loc: '승호의 집 앞' },
    { n: '8', shot: '샷 정보 없음', loc: '킹스 카바레 복도' },
    { n: '9', shot: '샷 정보 없음', loc: '사장실' },
    { n: '10', shot: '샷 정보 없음', loc: '킹스 카바레 화장실' },
    { n: '11', shot: '샷 정보 없음', loc: '킹스 카바레 무대' },
    { n: '12', shot: '샷 정보 없음', loc: '옥상' },
  ],
  scriptAll: [
    {
      n: '1',
      title: '대학 강의실',
      lines: [
        { kind: 'action', t: '빈 강의실. 생수병을 벌컥벌컥 들이키는 앳된 여대생 예승(21)' },
        { kind: 'action', t: '가슴에 달린 [변호사 이예승] 이름표 찰랑거린다.' },
        { kind: 'action', t: '더 애가 타는 얼굴로 예승을 바라보고 있는 민환(60)' },
        { kind: 'break' },
        { kind: 'action', t: '민환 물 먹고 체하면 약도 없다…' },
        { kind: 'char', t: '예승' },
        { kind: 'paren', t: '(크어억…. 트름)' },
        { kind: 'char', t: '민환' },
        { kind: 'dial', t: '떨리니?' },
        { kind: 'char', t: '예승' },
        { kind: 'paren', t: '(초죽음이다)' },
        { kind: 'dial', t: '네.' },
        { kind: 'char', t: '민환' },
        { kind: 'dial', t: '한 번 할까?' },
        { kind: 'break' },
        { kind: 'action', t: '씩 웃으며 고개 끄덕이는 예승.' },
        { kind: 'action', t: '보안과장과 함께 예승표 심호흡 들어간다.' },
        { kind: 'break' },
        { kind: 'action', t: '예승 후……. 하! 후………. 하!' },
        { kind: 'break' },
        { kind: 'action', t: '한결 나아진 예승. 자신 있다는 얼굴로 더 밝게 웃는다.' },
        { kind: 'char', t: '민환' },
        { kind: 'mention', t: '반드시 날씨 확인 @정작가 확인해주세요' },
      ],
    },
    {
      n: '2',
      title: '모의 법정',
      lines: [
        { kind: 'action', t: '\u201C제 12회 서울대학교 법학부 2차 모의법정. 날짜 12월23일\u201D' },
        {
          kind: 'action',
          t: '큼지막한 플래카드 아래로 판사 역을 맡은 주임교수가 옆에 있는 다른 교수들과',
        },
        { kind: 'action', t: '얘기를 나누는 모습이 보인다.' },
        { kind: 'action', t: '검사 역할을 맡은 학생과 악수하는 예승.' },
        { kind: 'break' },
        { kind: 'char', t: '검사' },
        { kind: 'dial', t: '15년 전이나 지금이나 뒤집긴 힘들어.' },
        { kind: 'char', t: '예승' },
        { kind: 'dial', t: '식사는 든든하게 하셨어요? 내가 확 뒤집을 거든요.' },
        { kind: 'dial', t: '힘내세요. 선배!' },
        { kind: 'char', t: '검사' },
        { kind: 'paren', t: '(이 녀석이……)' },
        { kind: 'dial', t: '허…' },
        { kind: 'break' },
        {
          kind: 'action',
          t: '순간 뒤에서 부르는 \u201C예승아!\u201D 소리에 방청석을 쳐다보는 예승.',
        },
        { kind: 'action', t: '봉식(53)이 호들갑을 떨며 손을 흔들고 있다.' },
        { kind: 'action', t: '봉식의 옷자락을 끌어내려 자리에 앉히는 방장(61),' },
        { kind: 'action', t: '그 옆으로는 만범, 춘호 그리고 민환이 차례로 앉아있다.' },
        { kind: 'action', t: '방장, 주먹을 쥐며 입모양으로 \u201C화이팅!\u201D을 그리면,' },
        { kind: 'action', t: '예승 화답하듯 주먹을 꼭 쥐며 웃어 보인다.' },
        { kind: 'break' },
        { kind: 'char', t: '판사(주임교수)' },
        { kind: 'dial', t: '지금부터 제 12회 서울대학교 법학부 2차 모의법정' },
        { kind: 'dial', t: '항소심 공판을 시작하겠습니다.' },
        { kind: 'char', t: '검사' },
        { kind: 'dial', t: '기소 취지를 말씀하세요.' },
      ],
    },
  ],
  timelineSteps: [
    {
      phase: '예정 1단계',
      sceneId: '15A',
      scene: '씬 15A',
      date: '2026-04-28 11:00',
      loc: '세이프하우스 · 단서 확보',
    },
    {
      phase: '예정 2단계',
      sceneId: '16A',
      scene: '씬 16A',
      date: '2026-04-30 09:00',
      loc: '건물 외부 · 추격자 도착',
    },
  ],
};
window.DATA = DATA;
