Junhoee commited on
Commit
c5ec122
·
verified ·
1 Parent(s): f646e0b

Upload 21 files

Browse files
.gitattributes CHANGED
@@ -33,3 +33,9 @@ saved_model/**/* filter=lfs diff=lfs merge=lfs -text
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
 
 
 
 
 
 
 
33
  *.zip filter=lfs diff=lfs merge=lfs -text
34
  *.zst filter=lfs diff=lfs merge=lfs -text
35
  *tfevents* filter=lfs diff=lfs merge=lfs -text
36
+ web/assets/배경/성.png filter=lfs diff=lfs merge=lfs -text
37
+ web/assets/배경/침실.png filter=lfs diff=lfs merge=lfs -text
38
+ web/assets/인물/카르밀라[[:space:]]가면.png filter=lfs diff=lfs merge=lfs -text
39
+ web/assets/인물/카르밀라.png filter=lfs diff=lfs merge=lfs -text
40
+ web/assets/플래이[[:space:]]이미지/1.png filter=lfs diff=lfs merge=lfs -text
41
+ web/assets/플래이[[:space:]]이미지/4.png filter=lfs diff=lfs merge=lfs -text
Dockerfile ADDED
@@ -0,0 +1,19 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # Hugging Face Spaces (Docker SDK) — 카르밀라 인터랙티브 노벨 데모
2
+ # HF는 비루트 UID 1000으로 컨테이너를 실행하므로 쓰기 경로(logs/·data/)를 user 소유로 둔다.
3
+ # API 키(OPENAI_API_KEY)는 Space Secret으로 주입 — .env는 이미지에 넣지 않는다.
4
+ FROM python:3.14-slim
5
+
6
+ RUN useradd -m -u 1000 user
7
+ USER user
8
+ ENV HOME=/home/user \
9
+ PATH=/home/user/.local/bin:$PATH
10
+ WORKDIR $HOME/app
11
+
12
+ COPY --chown=user requirements.txt .
13
+ RUN pip install --no-cache-dir --user -r requirements.txt
14
+
15
+ COPY --chown=user . .
16
+ RUN mkdir -p logs data # SQLite 세션·턴 로그 쓰기 경로 (user 소유)
17
+
18
+ EXPOSE 7860
19
+ CMD ["uvicorn", "engine.router:app", "--host", "0.0.0.0", "--port", "7860"]
README.md CHANGED
@@ -1,10 +1,40 @@
1
  ---
2
- title: Interactive Chat
3
- emoji: 🐢
4
- colorFrom: green
5
  colorTo: red
6
  sdk: docker
 
7
  pinned: false
8
  ---
9
 
10
- Check out the configuration reference at https://huggingface.co/docs/hub/spaces-config-reference
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
  ---
2
+ title: Carmilla Demo
3
+ emoji: 🦇
4
+ colorFrom: purple
5
  colorTo: red
6
  sdk: docker
7
+ app_port: 7860
8
  pinned: false
9
  ---
10
 
11
+ # 카르밀라 잠들지 않는 (인터랙티브 노벨 데모)
12
+
13
+ 원작 고전 『카르밀라』를 온톨로지 기반으로 형식화한 인터랙티브 노벨 엔진 데모.
14
+ "책을 읽는 느낌 + 핵심 씬에서의 상호작용(카르밀라와의 자유 대화)"을 제공한다.
15
+
16
+ - **읽기**: 카드 단위로 넘기며 읽는다. 연출 컷은 자체 페이지로 등장한다.
17
+ - **선택**: 분기 지점에서 로라(플레이어)의 선택이 숨은 상태(신뢰/의심/쇠약)에 누적된다.
18
+ - **대화**: 카르밀라 카드에서 자유 채팅으로 개입하면, 대화가 수렴한 뒤 이야기로 복귀한다.
19
+ - **엔딩**: 누적된 숨은 상태에 따라 3종(처단/영원/구원)으로 갈린다.
20
+
21
+ ## 실행 (로컬)
22
+
23
+ ```bash
24
+ pip install -r requirements.txt
25
+ export OPENAI_API_KEY=... # 채팅(LLM)용. 없으면 읽기만 동작
26
+ uvicorn engine.router:app --port 8777
27
+ # → http://localhost:8777
28
+ ```
29
+
30
+ ## Hugging Face Space (Docker)
31
+
32
+ 이 저장소는 HF Spaces의 Docker SDK로 그대로 실행된다 (`app_port: 7860`).
33
+ `OPENAI_API_KEY`는 Space **Settings → Secrets**로 주입한다 (이미지에 포함하지 않는다).
34
+
35
+ > 무료 티어는 저장소가 임시라 재시작 시 진행 세션이 초기화된다 (데모 용도).
36
+
37
+ ## 구조
38
+
39
+ 엔진·아키텍처 상세는 [docs/ARCHITECTURE.md](docs/ARCHITECTURE.md) 참고.
40
+ 서사 원천(비트카드 MD·원고)은 이 데모 저장소에 포함하지 않는다.
content/README.md ADDED
@@ -0,0 +1,13 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # content/ — 엔진의 유일한 서사 입력 (읽기 전용)
2
+
3
+ - **원천(권위)**: `카르밀라/0701_카르밀라/비트카드/` MD — 대표님 소유. 개발 커밋에서 내용을 수정하지 않는다
4
+ - 이 폴더의 YAML은 `scripts/beatcard_convert.py` 산출물(파생물)이다 — M1에서 적재
5
+ - `python -m engine.schemas.validate content/` 통과분만 엔진에 적재된다
6
+
7
+ ```
8
+ beatcards/ 비트카드 YAML (E01~E06, MVP 범위)
9
+ chapters/ 챕터 메타 (entry/exit beats, ending_rules, R카드)
10
+ characters.yaml 인물 정체성 (ENOS)
11
+ style/ 문체연출 가이드
12
+ narrative/ 서사/핸드오프 문서
13
+ ```
content/beatcards/E01.yaml ADDED
@@ -0,0 +1,451 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E01
3
+ title: '제1화: 어린 밤의 손님'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E01/E01_비트카드.md
5
+ cards:
6
+ - id: E01-01
7
+ title: 어둠으로의 초대
8
+ subtitle: 전지적 도입
9
+ tags:
10
+ - '#시점/전지적'
11
+ - '#연출/대사중앙'
12
+ - '#유형/온보딩'
13
+ - '#정서/불안'
14
+ - '#캐논/고정'
15
+ - '#앎/유저'
16
+ - '#상태/초안'
17
+ status: 초안
18
+ canon: true
19
+ next: E01-02
20
+ next_options: []
21
+ axis: null
22
+ frailty: false
23
+ narration:
24
+ - type: prose
25
+ text: 검은 화면. 옅은 안개와 달빛의 기척만이 떠돈다. 글자가 천천히 떠오른다.
26
+ - type: dialogue_center
27
+ text: 이것은 어느 외로운 소녀가, 사랑이라 믿었던 어둠에 관한 이야기다.
28
+ - type: prose
29
+ text: '소녀는 그것이 사랑인 줄 알았다. 당신은, 그것이 무엇인지 알게 될 것이다. 그 손님은 소녀를 진심으로 어루만지면서, 동시에 천천히 죽일 것이었다. 소녀는 끝내 몰랐다.
30
+ 그러나 당신은 — 처음부터 보게 된다.
31
+
32
+ 오스트리아의 깊은 산중, 세상과 등진 고성. 그곳에서 이야기는 시작된다.'
33
+ choices: []
34
+ r_card_refs: []
35
+ note: 회고록 "나는…"이 아니라 *바깥에서* 비추는 전지적 도입. 핵심 한 줄만 화면 가운데 단독. 선택 없음. **[엔진A 앎 확립 — A+C 병용]** '흡혈귀' 단어 없이
36
+ "어루만지며 죽인다"로 본성을 확정해 유저의 앎을 도입에서 성립시킨다. 이후 모든 단서 카드가 *이중 채널*(로라는 흘리고 유저는 안다)로 작동. 로라의 천진함은 훼손하지 않는다(④b
37
+ 기법7).
38
+ direction: 완전 암전에서 시작. 안개·달빛 기척만 미세하게 움직인다. 핵심 문장이 한 글자씩 천천히 떠올랐다가, 충분한 여백 뒤 사라진다. 저음의 바람·먼 늑대 울음 앰비언트.
39
+ 절대 서두르지 않는 정적.
40
+ image: 거의 검은 화면. 깊은 잉크블랙 바탕 아래에서 미드나잇블루 안개가 옅게 피어오르고, 멀리 흐린 달무리 하나. 앤티크골드 세리프 한 줄만 가운데. 표제지 같은 고요. 인물
41
+ 없음.
42
+ - id: E01-02
43
+ title: 외딴 고성
44
+ subtitle: ''
45
+ tags:
46
+ - '#장소/해자'
47
+ - '#장소/복도'
48
+ - '#인물/로라'
49
+ - '#시점/1인칭'
50
+ - '#연출/감각몰입'
51
+ - '#정서/외로움'
52
+ - '#온보딩/즉시체감'
53
+ - '#캐논/고정'
54
+ - '#복선/심기:FS-카른슈타인폐허'
55
+ - '#상태/초안'
56
+ status: 초안
57
+ canon: true
58
+ next: E01-03
59
+ next_options: []
60
+ axis: null
61
+ frailty: false
62
+ narration:
63
+ - type: prose
64
+ text: '나는 슈타이어마르크의 깊은 산중, 외딴 고성에서 자랐다. 성 앞으로는 깊은 해자가 둘러 있고, 그 위로 도개교가 놓여 있었다. 다리를 건너면 울창한 숲이 사방으로
65
+ 뻗었다. 가장 가까운 마을도 말을 달려 한참을 가야 했고, 폐허가 된 카른슈타인은 그보다 가까웠으나 사람의 발길이 끊긴 지 오래였다. 겨울이면 도개교의 쇠사슬이 얼어붙어,
66
+ 우리는 며칠씩 바깥세상과 완전히 끊기곤 했다.
67
+
68
+ 나는 그 고요를 천성처럼 여기며 자랐다.'
69
+ choices: []
70
+ r_card_refs: []
71
+ note: 1인칭 시점이 열린다. 〔고정〕고성·고립. 고립을 *설명*하지 않고 고요의 질감으로 체감.
72
+ direction: 암전에서 서서히 밝아지며 1인칭 시야가 열린다. 시선이 성 전경 → 해자 → 도개교로 느릿하게 흐른다. 겨울 바람 소리. 본문은 한 페이지 통합형(배경은 흐릿·디밍,
73
+ 글자 가독 우선).
74
+ image: '황혼 무렵, 안개에 반쯤 잠긴 회색 고성. 깊은 해자와 얼어붙기 직전의 도개교, 사방을 두른 검은 전나무 숲. 멀리 무너진 카른슈타인 첨탑의 실루엣. 쓸쓸·고립. 팔레트:
75
+ 미드나잇블루·잿빛에 창불빛 앤티크골드 한 점.'
76
+ - id: E01-03
77
+ title: 아버지, 그리고 빈자리
78
+ subtitle: ''
79
+ tags:
80
+ - '#인물/아버지'
81
+ - '#인물/로라'
82
+ - '#시점/1인칭'
83
+ - '#정서/그리움'
84
+ - '#인정/신뢰자랑'
85
+ - '#온보딩/곧알게함'
86
+ - '#캐논/고정'
87
+ - '#복선/심기:FS-혈통'
88
+ - '#상태/초안'
89
+ status: 초안
90
+ canon: true
91
+ next: E01-04
92
+ next_options: []
93
+ axis: null
94
+ frailty: false
95
+ narration:
96
+ - type: prose
97
+ text: '아버지는 영국 사람이었다. 오스트리아 황실의 공직에서 오래 일하시다 물러나, 이 한적한 영지를 사들이셨다. 합리적이고 자상한 분이었다. 무엇이든 이치로 따져 설명하기를
98
+ 좋아하셨고, 미신이나 헛된 이야기는 가볍게 웃어넘기셨다.
99
+
100
+ 어머니는 내가 너무 어릴 적에 돌아가셔서, 나는 그 얼굴조차 알지 못한다. 다만 어머니가 이 슈타이어마르크 태생이며, 오래되고 명망 높던 카른슈타인 가문의 피를 이었다는 이야기를
101
+ 들었을 뿐이다. 그 가문��저 오래전에 끊겼다 했다.
102
+
103
+ 어머니 이야기가 나오면, 아버지는 늘 잠시 말을 멈추고 창밖을 바라보셨다.
104
+
105
+ *— (오후의 해자 산책. 유저가 무엇을 묻든 아버지는 자상하게 응한다. 어머니·외로움으로 화제가 닿으면, 그는 답을 다 잇지 못한다.)*'
106
+ - type: character_dialogue
107
+ speaker: 유저
108
+ text: 어머니는… 어떤 분이셨어요?
109
+ anchor: true
110
+ - type: prose
111
+ text: '아버지: "…너를 닮았더랬다." 그러고는 더 말을 잇지 못하셨다.'
112
+ choices: []
113
+ r_card_refs: []
114
+ note: 결핍은 진술 금지, **여백·침묵**으로. 위 대사는 앵커일 뿐 — *유저 말투·태도에 맞춰* 아버지의 여백 톤을 조절(담담한 유저엔 담담히, 감정적 유저엔 더 깊은 침묵).
115
+ 〔고정〕모성결핍·혈통.
116
+ direction: 아버지와 로라의 나란한 투샷. 어머니 화제로 닿는 순간 배경음이 잦아들고 시간이 멎는 듯하다. 카메라가 창밖을 보는 아버지의 옆얼굴에 머문다. 침묵이 대사보다
117
+ 길게.
118
+ image: 오후, 낙엽 깔린 해자 둘레의 돌길(혹은 촛불 켜진 서재). 백발 섞인 50대 후반 아버지(1860s 프록코트)와 로라가 나란히 걷는 측면. 따뜻한 앰버 톤이지만 한구석에
119
+ 쓸쓸한 잿빛. 창밖 먼 산.
120
+ - id: E01-04
121
+ title: 두 가솔
122
+ subtitle: ''
123
+ tags:
124
+ - '#인물/마담'
125
+ - '#인물/마드모아젤'
126
+ - '#인물/로라'
127
+ - '#시점/1인칭'
128
+ - '#정서/위안'
129
+ - '#인정/보살핌'
130
+ - '#인정/지적존중'
131
+ - '#온보딩/곧알게함'
132
+ - '#캐논/자유'
133
+ - '#복선/심기:FS-달빛미신'
134
+ - '#상태/초안'
135
+ status: 초안
136
+ canon: true
137
+ next: E01-05
138
+ next_options: []
139
+ axis: null
140
+ frailty: false
141
+ narration:
142
+ - type: prose
143
+ text: 성 안의 식구는 단출했다. 아버지와 나, 그리고 두 분의 부인. 한 분은 마담 페로동, 스위스 출신의 가정부이자 내 말동무였다. 둥글고 따뜻한 얼굴에 늘 바느질감을
144
+ 든 분이었다.
145
+ - type: character_dialogue
146
+ speaker: 마담
147
+ text: 우리 아씨, 또 그렇게 멍하니 계시네. 이리 와 곁에 앉아요.
148
+ anchor: true
149
+ - type: prose
150
+ text: 또 한 분은 마드모아젤 드 라퐁텐, 프랑스계 가정교사였다. 책과 별자리와 옛 전설에 밝아, 달이 밝은 밤이면 알 수 없는 이야기로 나를 오싹하게 했다.
151
+ - type: character_dialogue
152
+ speaker: 마드모아젤
153
+ text: 달이 저렇게 밝은 밤은 조심해야 해요. 사람의 마음을 흔드는 기운이 있으니까.
154
+ anchor: true
155
+ - type: prose
156
+ text: '마담: (혀를 차며) "또 그런 무서운 소릴. 아이 겁주지 마세요, 마드모아젤."
157
+
158
+ 두 사람의 다툼 아닌 다툼 속에서, 나는 작게 웃었다.'
159
+ choices: []
160
+ r_card_refs: []
161
+ note: 마담=보살핌의 온기, 마드모아젤=전설·신비. **온도차의 티키타카**로 따뜻한 세계를 깐다. 제한된 정보지만 *환영받는 온기.* 유저가 전설을 더 물으면 마드모아젤이 받아준다(탐색
162
+ 채널 개통). 마드모아젤의 미신은 극적 아이러니의 연료.
163
+ direction: 난롯불·촛불의 포근한 실내. 마담의 바느질, 마드모아젤의 책. 티키타카에서 두 사람을 번갈아 보는 컷. 로라의 작은 웃음에서 온기가 퍼진다. 밝되, 마드모아젤의
164
+ 미신 대사에서 한순간 서늘한 그림자.
165
+ image: 촛불과 난로로 데워진 응접실. 둥근 얼굴의 마담(소박한 1860s 데이드레스·레이스 캡·바느질감), 지적인 마드모아젤(짙은 보틀그린 드레스·책). 앤티크골드·버건디·앰버의
166
+ 포근한 팔레트. 창밖엔 푸른 달빛 — 온기와 불길함의 대비.
167
+ - id: E01-05
168
+ title: 외로운 아이
169
+ subtitle: 핵심 나래이션
170
+ tags:
171
+ - '#인물/로라'
172
+ - '#시점/1인칭'
173
+ - '#연출/대사중앙'
174
+ - '#정서/외로움'
175
+ - '#정서/그리움'
176
+ - '#온보딩/즉시체감'
177
+ - '#캐논/고정'
178
+ - '#앎/유저'
179
+ - '#상태/초안'
180
+ - '#상태/보강필요'
181
+ status: 초안
182
+ canon: true
183
+ next: E01-06
184
+ next_options: []
185
+ axis: null
186
+ frailty: false
187
+ narration:
188
+ - type: prose
189
+ text: '낮이면 나는 마드모아젤에게 글을 배우고, 마담에게 수를 놓는 법을 익히고, 오후엔 아버지의 손을 잡고 해자를 거닐었다. 다정한 어른들이 늘 곁에 있었다.
190
+
191
+ 그래도, 나와 나이가 같은 벗은 없었다. 장면이 고요히 가라앉는다. 텅 빈 화면 가운데, 작은 로라가 홀로 서 있다.'
192
+ - type: dialogue_center
193
+ text: 단 한 사람이라도, 곁에 있었으면 했다.
194
+ choices: []
195
+ r_card_refs: []
196
+ note: '핵심 나래이션 연출 — 로라 이미지 중앙, 빈 공간 강조, 여운·슬픔·결핍. 이 외로움이 뒤의 모든 매혹을 정당화한다. (보강: ⑦ 과거서사 일화 — 화랑의 친구들·창가의
197
+ 빈 의자 — 결합 여��.)'
198
+ direction: 따뜻한 일상 컷에서 *갑자기* 정적으로 전환. 색이 빠지고 화면이 비워진다. 로라의 작은 실루엣만 중앙에. 핵심 문장이 가운데 떠오르고, 음악이 잦아든다. 여백을
199
+ 길게.
200
+ image: 거의 빈 화면. 어둑한 아이보리-블랙 공간 가운데 작고 외로운 소녀의 실루엣(홀로 선·살짝 뒤돌아선). 주위는 텅 빈 어둠과 옅은 비네트. 미니멀·쓸쓸·결핍.
201
+ - id: E01-06
202
+ title: 황혼의 그림자
203
+ subtitle: 가장 오래된 기억으로
204
+ tags:
205
+ - '#장소/침실'
206
+ - '#장소/복도'
207
+ - '#인물/로라'
208
+ - '#시점/1인칭'
209
+ - '#연출/감각몰입'
210
+ - '#정서/공포'
211
+ - '#정서/매혹'
212
+ - '#캐논/고정'
213
+ - '#복선/심기:FS-짐승본성'
214
+ - '#상태/초안'
215
+ status: 초안
216
+ canon: true
217
+ next: E01-07
218
+ next_options: []
219
+ axis: null
220
+ frailty: false
221
+ narration:
222
+ - type: prose
223
+ text: '그러나 해가 지고 등불이 켜지면, 드넓은 성은 어둠과 그림자로 가득 찼다. 복도 끝의 어둠은 살아 있는 짐승의 입처럼 깊고 컴컴했다. 그 어둠 속에서 나는 종종,
224
+ 무언가가 나를 지켜본다는 느낌에 사로잡히곤 했다.
225
+
226
+ 그러니 어쩌면 자연스러운 일이었을지도 모른다. 내 가장 오래된 기억이, 끝내 평생을 따라다닌 단 하나의 밤이 된 것은.
227
+
228
+ 그것은 내가 여섯 살 무렵의 어느 밤이었다.'
229
+ choices: []
230
+ r_card_refs: []
231
+ note: 05의 정적 → 06의 서늘한 긴장. "지켜보는 느낌(공포+호기심)"이 곧 6세의 밤으로 이어지는 **다리**. 유저가 어둠에 다가가거나 물어도 답 없이 서늘함만.
232
+ direction: 등불이 켜지는 순간 톤이 따뜻함→서늘함으로 뒤집힌다. 시선이 복도 끝 어둠으로 천천히 빨려든다. 정적 속 미세한 기척음(옷자락? 숨결?). "여섯 살 무렵의 어느
233
+ 밤" 문장에서 회상으로 디졸브.
234
+ image: 밤의 성 내부. 등불 하나가 만든 작은 빛 웅덩이, 그 너머 복도 끝의 짙은 어둠(짐승의 입처럼). 길게 늘어진 그림자. 미드나잇블루·잉크블랙에 촛불 앰버 한 점. 무언가
235
+ 응시하는 듯한 불안.
236
+ - id: E01-07
237
+ title: 6세의 밤 — 기척
238
+ subtitle: 얼굴 없는 존재
239
+ tags:
240
+ - '#장소/침실'
241
+ - '#인물/로라'
242
+ - '#인물/카르밀라'
243
+ - '#시점/회상톤'
244
+ - '#연출/얼굴비노출'
245
+ - '#정서/공포'
246
+ - '#정서/매혹'
247
+ - '#캐논/고정'
248
+ - '#복선/심기:FS-6세의밤'
249
+ - '#앎/유저'
250
+ - '#앎/카르밀라🔒'
251
+ - '#상태/초안'
252
+ status: 초안
253
+ canon: true
254
+ next: E01-08
255
+ next_options: []
256
+ axis: null
257
+ frailty: false
258
+ narration:
259
+ - type: stage_direction
260
+ text: 이미지·색이 빛바랜 꿈결처럼 바뀐다.
261
+ - type: prose
262
+ text: '그날 밤, 나는 어두운 침실에 홀로 누워 있었다. 작은 등잔불도 진작 꺼진 뒤였다. 바람 한 점 없었고, 멀리 숲에서 부엉이 우는 소리만 이따금 들려왔다. 그런데
263
+ 문득, 머리맡에서 인기척이 느껴졌다. 누군가 곁에 있다는, 따뜻한 기운이었다.
264
+
265
+ 무언가가, 곁에 있었다.'
266
+ choices:
267
+ - label: 눈을 뜬다
268
+ modifiers: &id001 []
269
+ axis: null
270
+ result: '어둠 속, 검은 머리칼이 길게 흘러내린 누군가가 나를 굽어보고 있었다. 두 눈만이 어둠 속에서 깊고 다정하게 빛났다. 얼굴은 어슴푸레하여, 끝내 알아볼 수 없었다.
271
+
272
+ 이상하게도, 나는 무섭지 않았다.'
273
+ next: null
274
+ - label: 눈을 감고 가만히 있는다
275
+ modifiers: *id001
276
+ axis: null
277
+ result: 어둠뿐이었다. 낮고 부드러운 숨결이 귓가에 닿았다. 누군가 나를 가만히 들여다보고 있었다.
278
+ next: null
279
+ r_card_refs: []
280
+ note: 분위기는 무섭게 몰되(공포), 로라의 내레이션만은 *두렵지 않다*고 엇갈린다 — 이 균열이 핵심. **카르밀라 얼굴은 절대 노출 금지(흐릿).** 속삭임은 알아들을 수
281
+ 없게.
282
+ direction: 회상톤 — 빛바랜·살짝 흐릿한 화질, 낮은 채도(꿈결). 눈 감기/뜨기는 암전↔페이드로. 눈 뜨면 흐릿한 형체가 굽어본다(얼굴 비노출, 두 눈만 빛). 저음·느린
283
+ 심장박동 같은 긴장. 그러나 로라의 목소리는 차분.
284
+ image: 어린아이 1인칭으로 올려다본 침대맡. 어둠 속, 검은 긴 머리칼이 흘러내린 형체의 윤곽. 얼굴은 어슴푸레 가려지고 오직 깊은 두 눈만 빛난다. 빛바랜 미드나잇블루·검정,
285
+ 흐릿한 달빛. 공포스럽되 기묘하게 다정한 기운.
286
+ - id: E01-08
287
+ title: 따뜻한 품
288
+ subtitle: ''
289
+ tags:
290
+ - '#장소/침실'
291
+ - '#인물/로라'
292
+ - '#인물/카르밀라'
293
+ - '#시점/회상톤'
294
+ - '#연출/얼굴비노출'
295
+ - '#연출/대사중앙'
296
+ - '#정서/매혹'
297
+ - '#축/신뢰+'
298
+ - '#캐논/고정'
299
+ - '#복선/회수:FS-혈통'
300
+ - '#상태/초안'
301
+ status: 초안
302
+ canon: true
303
+ next: E01-09
304
+ next_options: []
305
+ axis: trust
306
+ frailty: false
307
+ narration:
308
+ - type: prose
309
+ text: 그 사람이 두 팔로 나를 어르며 곁에 누웠다. 차고도 부드러운 손끝이 내 뺨을 천천히 쓸어내렸다. 낮은 음성이 무어라 속삭였으나 알아들을 수는 없었다. 다만 그 목소리는
310
+ 자장가처럼 나를 휘감았다.
311
+ - type: dialogue_center
312
+ text: 태어나서 처음으로, 나는 혼자가 아니었다.
313
+ - type: prose
314
+ text: 어머니의 얼굴조차 모르는 내게, 그 품은 한 번도 받아 본 적 없는 무언가를 채워 주는 듯했다. 나는 나도 모르게 그 품을 향해 더 깊이 파고들었다.
315
+ choices: []
316
+ r_card_refs: []
317
+ note: 눈 감으면 검게, 눈 뜨면 손끝의 감촉 — 독자가 *직접 느끼듯* 직관적으로. 위험은 숨기고 따뜻함만(보이지 않는 게임). 이게 강할수록 다음 통증이 아프다.
318
+ direction: 시각을 최소화한다. 눈 감으면 검은 화면, 눈 뜨면 뺨에 닿는 손끝의 클로즈업. 촉각 중심. 따뜻한 저음의 허밍(자장가). 핵심 문장 중앙. 위험 신호는 0 —
319
+ 오직 따뜻함.
320
+ image: 검은 화면에 가까운 클로즈업. 아이의 뺨에 닿는 창백하고 가는 손끝(인물 전체·얼굴은 안 보임). 흐릿한 따뜻한 빛 한 줄기. 미드나잇블루 어둠 속 작은 온기. 포근·아늑.
321
+ - id: E01-09
322
+ title: 두 점의 통증, 그리고 사라짐
323
+ subtitle: ''
324
+ tags:
325
+ - '#장소/침실'
326
+ - '#인물/로라'
327
+ - '#인물/카르밀라'
328
+ - '#시점/회상톤'
329
+ - '#정서/공포'
330
+ - '#유형/단서발견'
331
+ - '#캐논/고정'
332
+ - '#복선/심기:FS-두점'
333
+ - '#복선/심기:FS-짐승본성'
334
+ - '#상태/초안'
335
+ status: 초안
336
+ canon: true
337
+ next: E01-10
338
+ next_options: []
339
+ axis: null
340
+ frailty: false
341
+ narration:
342
+ - type: prose
343
+ text: '그런데 바로 그 순간이었다. 가슴 한복판에, 두 개의 날카로운 바늘이 동시에 깊이 파고드는 통증이 일었다. 나는 견딜 수 없어 비명을 질렀다.
344
+
345
+ 그러자 그 다정하던 기운이 한순간 달라졌다. 무언가에 굶주린 듯한 어두운 그림자가 스쳤다. 그 사람은 소리 없이 몸을 일으키더니, 마치 침대 밑으로 미끄러져 들어가듯 사라졌다.
346
+ 분명 보았건만, 어디로 갔는지는 끝내 알 수 없었다.'
347
+ choices: []
348
+ r_card_refs: []
349
+ note: 매혹→공포의 반전. "굶주린 그림자" = 짐승 본성의 첫 누설(얼굴은 여전히 비노출). 직접·짧게, 여운.
350
+ direction: 따뜻함의 절정에서 *급전환*. 통증의 순간 화면이 번쩍하고 박동음이 끊긴다. 짧은 비명. 형체가 침대 밑으로 *스르르* 빨려들 듯 사라진다(모션 블러). 뒤에
351
+ 남는 정적.
352
+ image: 어둠 속 형체의 두 눈에 한순간 *굶주린* 그늘이 스친다. 침대 밑으로 미끄러지는 흰 옷자락의 잔상. 블러드레드 액센트 한 점(통증). 빛바랜 회상톤 유지. 충격·서늘.
353
+ - id: E01-10
354
+ title: 방 안의 사람들
355
+ subtitle: 꿈으로 묻히다
356
+ tags:
357
+ - '#장소/침실'
358
+ - '#인물/아버지'
359
+ - '#인물/마담'
360
+ - '#인물/마드모아젤'
361
+ - '#인물/로라'
362
+ - '#시점/1인칭'
363
+ - '#정서/불안'
364
+ - '#캐논/고정'
365
+ - '#복선/심기:FS-어른직감'
366
+ - '#복선/심기:FS-잠긴창'
367
+ - '#상태/초안'
368
+ status: 초안
369
+ canon: true
370
+ next: E01-11
371
+ next_options: []
372
+ axis: null
373
+ frailty: false
374
+ narration:
375
+ - type: prose
376
+ text: 내 비명에 온 집안이 발칵 뒤집혔다. 보모와 하녀들이 등불을 들고 달려왔고, 곧 아버지와 두 부인도 잠옷 바람으로 들이닥쳤다.
377
+ - type: character_dialogue
378
+ speaker: 아버지
379
+ text: 무슨 일이냐, 로라. 무얼 보았어?
380
+ anchor: true
381
+ - type: prose
382
+ text: '*(유저는 본 것을 말할 수 있다 — 사람이 있었다고 우기든, 더듬더듬 설명하든.)* 어른들은 등불을 들고 침대 밑이며 옷장이며 온 방을 뒤졌다.'
383
+ - type: character_dialogue
384
+ speaker: 하인
385
+ text: 침대 밑엔… 아무것도 없습니다.
386
+ anchor: true
387
+ - type: character_dialogue
388
+ speaker: 마담
389
+ text: 한데 이상해라. 창문은 안에서 잠겨 있는데.
390
+ anchor: true
391
+ - type: character_dialogue
392
+ speaker: 마드모아젤
393
+ text: 복도에도 아무도 없었어요.
394
+ anchor: true
395
+ - type: prose
396
+ text: 아버지가 내 머리를 쓰다듬으며 부드럽게 말씀하셨다.
397
+ - type: character_dialogue
398
+ speaker: 아버지
399
+ text: 무서운 꿈을 꾼 게로구나, 우리 로라.
400
+ anchor: true
401
+ - type: prose
402
+ text: 마드모아젤은 내 가슴께를 살피더니 상처 하나 없다 했다. 그러나 그렇게 말하는 손끝이 가늘게 떨렸고, 마담과 눈을 마주쳤다 황급히 거두는 것을 나는 보았다.
403
+ choices: []
404
+ r_card_refs: []
405
+ note: 단서(잠긴 창·빈 복도)를 지문 아닌 **인물 대사로** → 인물도 드��나고 정보도 전달. 유저가 우겨도 결국 *꿈으로 치부* → "말해도 소용없다"의 학습(아버지와의
406
+ 단절 씨앗). 마드모아젤의 떨리는 손끝 = 직감 단서.
407
+ direction: 회상톤 해제(현재로 복귀). 어둠 속으로 등불 여러 개가 쏟아져 들어온다(어둠→북적). 분주한 수색 컷, 대사로 단서. 마드모아젤의 떨리는 손끝 짧은 클로즈업.
408
+ 아버지의 다정하나 *닫는* 한마디로 정적.
409
+ image: 한밤 침실에 등불 든 어른들이 몰려든 장면. 아버지(잠옷+가운), 마담(레이스 캡), 마드모아젤, 하녀들. 흔들리는 촛불빛과 어지러운 그림자. 따뜻한 앰버 빛이되 구석엔
410
+ 풀리지 않은 어둠. 안심과 불안의 공존.
411
+ - id: E01-11
412
+ title: 꿈이 아니었다, 그리고 열세 해 뒤
413
+ subtitle: ''
414
+ tags:
415
+ - '#인물/로라'
416
+ - '#시점/전지적'
417
+ - '#연출/대사중앙'
418
+ - '#정서/그리움'
419
+ - '#정서/불안'
420
+ - '#캐논/고정'
421
+ - '#결말/공통'
422
+ - '#복선/심기:FS-재회'
423
+ - '#복선/심기:FS-짐승본성'
424
+ - '#상태/초안'
425
+ - '#상태/보강필요'
426
+ status: 초안
427
+ canon: true
428
+ next: E02
429
+ next_options: []
430
+ axis: null
431
+ frailty: false
432
+ narration:
433
+ - type: prose
434
+ text: 어른들은 모두 그것이 악몽이었다 입을 모았다. 하지만 나는 알았다.
435
+ - type: dialogue_center
436
+ text: 그것은 꿈이 아니었다.
437
+ - type: prose
438
+ text: '다른 모든 것은 흐릿해져도, 그 얼굴만은 또렷했다. 검은 머리칼, 깊은 두 눈, 그리고 통증이 시작되던 찰나 차갑게 굳던 그 기운. 나는 그날 이후로도 그 얼굴을
439
+ 잊지 못했다. 다시 침대 밑에서 솟아오를까 두려우면서도, 한편으로는 그 따뜻한 품이 그리워 가슴이 먹먹했다.
440
+
441
+ *(시점이 바깥으로 물러난다.)* 그 존재는 로라에게 해를 끼치러 왔으면서, 동시에 진심으로 어루만졌다. 그 둘이 한 사람 안에 어떻게 공존할 수 있는지 — 로라가 깨닫기까지는,
442
+ 너무 오랜 세월과 너무 큰 대가가 필요할 것이었다.'
443
+ - type: dialogue_center
444
+ text: 그리고 그때의 로라는 알지 못했다 — 열세 해 뒤, 그 얼굴을 다시, 살아 숨 쉬는 한 사람으로 마주하게 되리라는 것을.
445
+ choices: []
446
+ r_card_refs: []
447
+ note: 1화의 정서적 핵. 그리움과 두려움의 공존을 *직접* 못 박는다. 끝의 예고는 전지적(회고록 아님). 핵심 대사 2개는 장면전환·중앙 단독. 가볍게 쓰지 말 것.
448
+ direction: 소란이 잦아들고 다시 고요로. "그것은 꿈이 아니었다" 중앙 단독, 그 얼굴(흐릿한 두 눈)의 잔상이 짧게 오버랩. 시점이 바깥으로 물러나며(성 전체를 멀리서)
449
+ 전지적 예고 문장이 가운데. 긴 여운 뒤 1화 페이드아웃.
450
+ image: 잠든 성을 멀리서 본 밤의 부감, 안개. 작은 창 하나에만 불이 켜져 있다. 그 위로 흐릿하게 겹쳐지는 잊히지 않는 두 눈의 잔상. 잉크블랙·미드나잇블루에 앤티크골드
451
+ 한 줄 문장. 그리움과 불안이 함께 남는 마감.
content/beatcards/E02.yaml ADDED
@@ -0,0 +1,324 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E02
3
+ title: '제2화: 부서진 마차'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E02/E02_비트카드.md
5
+ cards:
6
+ - id: E02-01
7
+ title: 열세 해 뒤
8
+ subtitle: ''
9
+ tags:
10
+ - '#인물/로라'
11
+ - '#시점/1인칭'
12
+ - '#정서/외로움'
13
+ - '#온보딩/즉시체감'
14
+ - '#캐논/고정'
15
+ - '#앎/유저'
16
+ - '#상태/초안'
17
+ status: 초안
18
+ canon: true
19
+ next: E02-02
20
+ next_options: []
21
+ axis: null
22
+ frailty: false
23
+ narration:
24
+ - type: prose
25
+ text: '열세 해가 흘렀다. 나는 여섯 살의 아이에서 열아홉의 처녀로 자랐다. 키가 자라고 머리칼이 길어졌으나, 우리의 삶은 거의 변하지 않았다. 여전히 아버지와 나, 마담
26
+ 페로동과 마드모아젤이 그 외딴 고성에서 단조롭고 평온한 나날을 보냈다.
27
+
28
+ 다만 한 가지는 달라졌다. 이제 나는 어른들의 말을 온전히 알아들을 만큼 자랐고 — 이 깊은 산중의 적막이, 때로는 견디기 힘든 외로움이라는 것을 알게 되었다.'
29
+ choices: []
30
+ r_card_refs: []
31
+ note: 1화의 외로움이 *자각된 외로움*으로 깊어졌다. 시간 경과 + "벗을 향한 갈망"의 재점화.
32
+ direction: 같은 풍경에 계절과 빛만 바뀌며 어린 로라가 열아홉으로 디졸브. 차분한 1인칭 복귀. 평온하나 어딘가 텅 빈 공기.
33
+ image: 변함없는 고성, 가을빛. 어린 로라의 모습 위로 자란 로라가 겹쳐진다. 잔잔한 일상의 풍경이되 여백이 쓸쓸하다. 미드나잇블루·앰버의 차분한 톤.
34
+ - id: E02-02
35
+ title: 카른슈타인 폐허
36
+ subtitle: 저주의 풍문
37
+ tags:
38
+ - '#장소/폐허'
39
+ - '#인물/로라'
40
+ - '#인물/마드모아젤'
41
+ - '#시점/1인칭'
42
+ - '#정서/불안'
43
+ - '#유형/정보전달'
44
+ - '#캐논/고정'
45
+ - '#복선/회수:FS-카른슈타인폐허'
46
+ - '#복선/심기:FS-저주'
47
+ - '#복선/회수:FS-혈통'
48
+ - '#상태/초안'
49
+ status: 초안
50
+ canon: true
51
+ next: E02-03
52
+ next_options: []
53
+ axis: null
54
+ frailty: false
55
+ narration:
56
+ - type: prose
57
+ text: '성에서 멀지 않은 곳에 카른슈타인이라는 폐허가 있었다. 한때 번성한 마을이었다 하나, 이제는 무너진 성과 잡초에 덮인 집들, 이끼 낀 묘비만이 남아 있었다. 숲 한가운데,
58
+ 거대한 짐승의 백골처럼.
59
+
60
+ 마드모아젤은 그곳이 한때 슈타이어마르크에서 가장 위세 높던 가문의 땅이었으나, 어느 백작부인의 대에 이르러 무서운 저주에 휩싸여 하룻밤 사이 몰락했다고 했다. 그러나 그 저주가
61
+ 무엇이었는지, 풍문은 늘 거기서 입을 다물었다. 마을 노인들조차 그 이름을 입에 올리기를 꺼렸다.
62
+
63
+ 어머니가 그 가문의 피를 이었다는 이야기가 떠올랐다. 무너진 돌담 어딘가에, 나와 이어진 무언가가 잠들어 있는 듯했다.'
64
+ choices: []
65
+ r_card_refs: []
66
+ note: 세계관(카른슈타인 저주) + 혈통의 불길한 연결. 마드모아젤의 풍문 = 극적 아이러니 연료(유저는 그게 미르칼라임을 안다).
67
+ direction: 멀리 폐허를 바라보는 로라의 시선. 마드모아젤의 풍문은 보이스오버처럼 깔린다. 폐허 클로즈업에서 서늘한 한 박자.
68
+ image: 숲 한가운데 무너진 카른슈타인 성채 — 짐승의 백골 같은 실루엣. 담쟁이가 틀어막은 창, 이끼 낀 묘비들. 황혼의 잿빛·미드나잇블루. 서글픔과 불길함.
69
+ - id: E02-03
70
+ title: 기다리던 벗
71
+ subtitle: 손님방의 들꽃
72
+ tags:
73
+ - '#인물/로라'
74
+ - '#시점/1인칭'
75
+ - '#정서/그리움'
76
+ - '#정서/위안'
77
+ - '#캐논/자유'
78
+ - '#앎/유저'
79
+ - '#상태/초안'
80
+ status: 초안
81
+ canon: true
82
+ next: E02-04
83
+ next_options: []
84
+ axis: null
85
+ frailty: false
86
+ narration:
87
+ - type: prose
88
+ text: '그해 가을, 우리는 손꼽아 기다린 손님을 맞을 참이었다. 아버지의 옛 친구 슈필스도르프 장군이, 그의 양녀 베르타 양과 함께 오기로 한 것이다. 나는 베르타 양을
89
+ 만난 적이 없었으나, 또래의 벗이 온다는 소식만으로 며칠을 들떠 지냈다.
90
+
91
+ 마침내 나에게도 비밀을 나눌 친구가 생긴다. 나는 그녀를 위한 방을 손수 꾸미고, 들꽃을 꺾어다 꽂아 두기까지 했다.'
92
+ choices: []
93
+ r_card_refs: []
94
+ note: 갈망을 *행동*(방 꾸밈)으로 보여준다 — 직후 빼앗기 위한 빌드업(④b). 다음 카드의 박탈을 아프게 만드는 따뜻함.
95
+ direction: 들뜬 로라의 분주한 손길. 들꽃을 화병에 꽂는 클로즈업. 설레고 따뜻한 톤.
96
+ image: 햇살 드는 손님방, 새로 정돈한 침구와 화병의 들꽃. 밝고 설레는 앰버 톤. (곧 닥칠 박탈과 대비될 온기.)
97
+ - id: E02-04
98
+ title: 만나기도 전에 잃은 벗
99
+ subtitle: ''
100
+ tags:
101
+ - '#인물/아버지'
102
+ - '#인물/로라'
103
+ - '#시점/1인칭'
104
+ - '#정서/상실'
105
+ - '#정서/불안'
106
+ - '#캐논/고정'
107
+ - '#복선/심기:FS-괴질'
108
+ - '#복선/심기:FS-베르타거울'
109
+ - '#상태/초안'
110
+ status: 초안
111
+ canon: true
112
+ next: E02-05
113
+ next_options: []
114
+ axis: null
115
+ frailty: false
116
+ narration:
117
+ - type: prose
118
+ text: 그런데 산책 도중, 아버지의 손에 한 통의 편지가 들려 있었다. 그날 낮 인편으로 도착한 장군의 편지였다. 아버지의 표정은 무겁게 가라앉아 있었다.
119
+ - type: character_dialogue
120
+ speaker: 아버지
121
+ text: 로라, 안타까운 소식이구나. 베르타 양은 오지 못한다." … "그 아이가 세상을 떠났다는구나. 알 수 없는 병에 걸려, 손쓸 새도 없이 시들어 갔다고 한다.
122
+ anchor: true
123
+ - type: prose
124
+ text: '나는 한 번도 본 적 없는 그 소녀의 죽음에 가슴이 먹먹했다. 만나기도 전에 잃어버린 벗이라니. 공들여 꽂아 둔 들꽃은, 이제 누구를 위한 것도 아니게 되었다.
125
+
126
+ 밤공기가 차가워졌고, 어디선가 늑대의 길고 음울한 울음이 산을 타고 흘러왔다. 나는 까닭 모를 한기에 아버지의 팔을 꼭 붙들었다.'
127
+ choices: []
128
+ r_card_refs: []
129
+ note: '"알 수 없는 병에 걸려 시들어 갔다" = **베르타=로라의 거울**·괴질 첫 심기. 유저는 이게 흡혈임을 안다(아이러니). 갈망→박탈로 빈자리 각인.'
130
+ direction: 편지를 든 아버지의 무거운 표정. 텅 빈 손님방·시든 들꽃의 인서트. 늑대 울음에 서늘. 따뜻함이 식어가는 전환.
131
+ image: 보랏빛으로 식어가는 황혼 정원, 떠오르는 둥근 달. 텅 빈 손님방 들꽃의 인서트. 늑대 울음이 흐르는 검은 숲. 쓸쓸·불안.
132
+ - id: E02-05
133
+ title: 부서진 마차
134
+ subtitle: ''
135
+ tags:
136
+ - '#장소/숲길'
137
+ - '#인물/로라'
138
+ - '#시점/1인칭'
139
+ - '#연출/감각몰입'
140
+ - '#정서/불안'
141
+ - '#유형/사건'
142
+ - '#캐논/고정'
143
+ - '#상태/초안'
144
+ status: 초안
145
+ canon: true
146
+ next: E02-06
147
+ next_options: []
148
+ axis: null
149
+ frailty: false
150
+ narration:
151
+ - type: prose
152
+ text: '바로 그때였다. 멀리 산길에서 요란한 말발굽과 바퀴 소리가 들려왔다. 네 마리 말이 끄는 커다란 마차가, 달빛 속을 무서운 속도로 질주해 내려오고 있었다. 마부가
153
+ 고삐를 잡아채려 안간힘을 썼으나, 말들은 이미 광기에 사로잡힌 듯했다.
154
+
155
+ 마차는 다리목의 늙은 보리수 뿌리에 바퀴를 부딪고는, 굉음과 함께 옆으로 크게 기울어 쓰러졌다. 평화롭던 달밤의 정적이, 한순간 비명과 굉음으로 산산이 부서졌다.'
156
+ choices: []
157
+ r_card_refs: []
158
+ note: 정적→소란의 급전환. 사고는 *연출된 덫*(FS-노부인수법의 전조)이지만 로라는 모른다.
159
+ direction: 고요 → 갑작스러운 소란. 질주하는 마차, 충돌의 굉음, 사방으로 튀는 나무 조각. 카메라 흔들림. 속도와 충격.
160
+ image: 달빛 아래 질주하다 보리수에 부딪혀 크게 기운 검은 대형 마차. 울부짖는 네 마리 말, 부서진 바퀴. 미드나잇블루 밤, 차가운 달빛.
161
+ - id: E02-06
162
+ title: 두 여인
163
+ subtitle: ''
164
+ tags:
165
+ - '#장소/숲길'
166
+ - '#인물/백작부인'
167
+ - '#인물/카르밀라'
168
+ - '#인물/로라'
169
+ - '#시점/1인칭'
170
+ - '#정서/매혹'
171
+ - '#관계단계/낯섦'
172
+ - '#캐논/고정'
173
+ - '#앎/유저'
174
+ - '#상태/초안'
175
+ status: 초안
176
+ canon: true
177
+ next: E02-07
178
+ next_options: []
179
+ axis: null
180
+ frailty: false
181
+ narration:
182
+ - type: prose
183
+ text: '안에서 두 여인이 부축을 받으며 내려왔다. 한 사람은 위엄 있고 기품 넘치는 노부인이었다. 검은 비단옷에 진주를 두른 그녀는, 큰 사고를 당하고도 좀처럼 흔들리지
184
+ 않았다.
185
+
186
+ 다른 한 사람 — 젊은 아가씨는 충격으로 의식을 잃고, 하인의 팔에 축 늘어져 있었다. 어둠 속이라 그 얼굴을 또렷이 보지는 못했으나, 가녀린 어깨와 길게 흘러내린 머리칼만으로도,
187
+ 내 가슴은 알 수 없이 뛰었다.'
188
+ choices: []
189
+ r_card_refs: []
190
+ note: 노부인(백작부인=공범)과 잠든 아가씨(카르밀라) 등장. 카르밀라 얼굴은 아직 그늘 — 재회 충격은 E02-09에서. 로라의 *까닭 모를 끌림* 첫 신호.
191
+ direction: 부축받아 내리는 두 실루엣 — 노부인은 꼿꼿이, 아가씨는 늘어져. 로라의 시선이 아가씨에게 머물며 가슴이 뛰는 클로즈업(낮은 심장박동음).
192
+ image: 기운 마차 옆, 검은 비단·진주의 위엄 있는 노부인과, 하인 팔에 안긴 의식 잃은 젊은 아가씨(얼굴은 아직 그늘). 차가운 달빛에 창백. 흘러내린 머리칼.
193
+ - id: E02-07
194
+ title: 노부인의 부탁
195
+ subtitle: 석 달, 그리고 함구
196
+ tags:
197
+ - '#장소/숲길'
198
+ - '#인물/백작부인'
199
+ - '#인물/아버지'
200
+ - '#인물/로라'
201
+ - '#시점/1인칭'
202
+ - '#정서/불안'
203
+ - '#유형/사건'
204
+ - '#캐논/고정'
205
+ - '#복선/심���:FS-노부인수법'
206
+ - '#앎/유저'
207
+ - '#앎/백작부인🔒'
208
+ - '#상태/초안'
209
+ status: 초안
210
+ canon: true
211
+ next: E02-08
212
+ next_options: []
213
+ axis: null
214
+ frailty: false
215
+ narration:
216
+ - type: prose
217
+ text: 노부인은 아버지에게 다가와 사고를 사죄하고는, 다급한 어조로 청했다.
218
+ - type: character_dialogue
219
+ speaker: 백작부인
220
+ text: 신사 양반, 부탁이 있습니다. 저는 한시도 지체할 수 없는 비밀스러운 여정 중입니다. 목숨이 걸린 일이며, 석 달 안에는 반드시 마쳐야 합니다. 한데 마차가 부서지고
221
+ 딸아이가 쓰러졌으니, 이 아이를 데리고는 길을 갈 수 없습니다. … 이 아이를 석 달간 맡아 주실 수 없겠습니까. 돌아올 때까지 이 아이는 제 신상도, 가문도 결코 밝히지
222
+ 않을 것입니다. 부디, 묻지 말아 주십시오.
223
+ anchor: true
224
+ - type: prose
225
+ text: 그 목소리에는 거역하기 어려운 위엄이 서려 있었다. 어둠 속에서도 두 눈이 형형하게 빛났고, 한 번 입을 열면 누구든 따르게 만드는 기이한 힘이 깃들어 있었다.
226
+ choices: []
227
+ r_card_refs: []
228
+ note: '**FS-노부인수법 심기** — 베르타 때(11화)와 *판박이* 수법. "함구 조건"이 카르밀라의 정체 은폐 장치. 백작부인의 화술엔 흡혈귀의 홀림이 깔려 있다. (대사는
229
+ 앵커 — 아버지/유저 반응에 맞춰 변주, 단 핵심 청은 고정.)'
230
+ direction: 노부인의 형형한 두 눈 클로즈업. 거역 못 할 위엄에 아버지가 압도되는 분위기. 약간 최면적인 정적.
231
+ image: 달빛 아래, 검은 비단·진주의 노부인이 아버지에게 다가서는 장면. 형형한 두 눈, 위엄과 냉기. 뒤로는 기운 마차와 그늘 속 시종들.
232
+ - id: E02-08
233
+ title: 승낙, 그리고 사라진 노부인
234
+ subtitle: ''
235
+ tags:
236
+ - '#장소/숲길'
237
+ - '#인물/아버지'
238
+ - '#인물/백작부인'
239
+ - '#인물/로라'
240
+ - '#시점/1인칭'
241
+ - '#정서/불안'
242
+ - '#인정/신뢰자랑'
243
+ - '#캐논/고정'
244
+ - '#복선/심기:FS-시종창백'
245
+ - '#복선/심기:FS-노부인수법'
246
+ - '#상태/초안'
247
+ status: 초안
248
+ canon: true
249
+ next: E02-09
250
+ next_options: []
251
+ axis: null
252
+ frailty: false
253
+ narration:
254
+ - type: prose
255
+ text: 아버지는 잠시 곤혹스러워했으나, 쓰러진 아가씨의 가련한 모습과 노부인의 절박한 간청 앞에서 차마 거절하지 못하셨다. 본디 인정 많은 분이었고, 또래의 벗을 잃고 상심한
256
+ 내 처지도 떠올리신 듯했다.
257
+ - type: character_dialogue
258
+ speaker: 아버지
259
+ text: 사정이 그러하다면, 기꺼이 따님을 모시겠습니다. 제 딸 로라가 좋은 벗이 되어 드릴 겁니다.
260
+ anchor: true
261
+ - type: prose
262
+ text: '노부인은 딸의 귓가에 무어라 짧게 속삭이고는, 어둠 속으로 빠르게 사라졌다.
263
+
264
+ 마차가 떠난 뒤에야, 나는 이상한 점들을 깨달았다. 그토록 다급하다던 그녀는 딸의 안위보다 제 여정을 앞세웠고, 이별의 입맞춤 한 번 없이 떠났다. 더 기이한 것은, 마차에
265
+ 동승했던 검은 옷의 시종들이었다. 하나같이 핏기 없이 창백한, 흙빛이 도는 낯빛 — 마치 오래 묻혀 있던 무언가를 떠올리게 하는. 그러나 그 불길함도 곧 잊혔다.'
266
+ choices: []
267
+ r_card_refs: []
268
+ note: 아버지의 *인정*이 덫을 완성한다(따뜻함이 곧 빈틈). **FS-시종창백 심기**(다른 흡혈귀 암시), 입맞춤 없음 = 단서. 유저는 다 보지만 로라는 "곧 잊었다".
269
+ direction: 들리지 않는 귓속말 → 노부인이 말에 올라 어둠으로 사라짐. 떠난 자리의 정적. 창백·흙빛 낯의 시종들 짧은 인서트(서늘).
270
+ image: 어둠 속으로 멀어지는 노부인. 남겨진 부서진 마차. 핏기 없는 흙빛 낯의 검은 옷 시종들(불길). 차가운 달빛.
271
+ - id: E02-09
272
+ title: 그 방, 그 얼굴
273
+ subtitle: 재회의 충격
274
+ tags:
275
+ - '#장소/침실'
276
+ - '#인물/카르밀라'
277
+ - '#인물/로라'
278
+ - '#인물/마담'
279
+ - '#인물/마드모아젤'
280
+ - '#시점/1인칭'
281
+ - '#연출/대사중앙'
282
+ - '#정서/매혹'
283
+ - '#정서/공포'
284
+ - '#관계단계/낯섦'
285
+ - '#캐논/고정'
286
+ - '#결말/공통'
287
+ - '#복선/회수:FS-6세의밤'
288
+ - '#복선/회수:FS-재회'
289
+ - '#앎/유저'
290
+ - '#상태/초안'
291
+ status: 초안
292
+ canon: true
293
+ next: E03
294
+ next_options: []
295
+ axis: null
296
+ frailty: false
297
+ narration:
298
+ - type: prose
299
+ text: '하인들이 아가씨를 가장 좋은 손님방에 눕혔다. 공교롭게도 그 방은, 며칠 전 내가 베르타 양을 위해 손수 꽃을 꽂아 둔 바로 그 방이었다.
300
+
301
+ 마담: (이마를 닦으며) "가엾어라, 이 어린것이…"
302
+
303
+ 마드모아젤이 흐트러진 머리칼을 곱게 빗어 넘겼다. 촛불 아래 드러난 아가씨의 얼굴은 충격으로 창백했으나, 그 창백함마저 비현실적인 아름다움을 더했다.
304
+
305
+ 이윽고 그녀가 가느다란 신음과 함께 눈을 떴다. 흐릿하던 시선이 차츰 또렷해지며, 내 얼굴 위에 머물렀다. 나는 촛불을 들고 침대 곁으로 다가가 있었다.
306
+
307
+ 그 순간, 나는 얼어붙었다.'
308
+ - type: dialogue_center
309
+ text: 그 얼굴이었다.
310
+ - type: prose
311
+ text: '짙은 머리칼도, 깊고 다정한 두 눈도, 입가의 옅은 미소도 — 여섯 살의 그 밤 이후 단 한 번도 잊은 적 없는 바로 그 얼굴. 열세 해의 세월을 단 한 줌도 머금지
312
+ 않은 채, 그날 밤의 모습 그대로, 내 앞에 살아 있었다.
313
+
314
+ *(시점이 잠시 바깥으로 물러난다.)* 열세 해 전 그 밤, 어린 로라의 가슴에 두 개의 바늘 자국을 남기고 사라졌던 바로 그 존재가 — 이제 살아 숨 쉬는 손님의 얼굴로,
315
+ 다시 그 집의 문턱을 넘었다. 로라는 기쁨에 떨었고, 당신은 그것이 무엇의 시작인지 안다.'
316
+ choices: []
317
+ r_card_refs: []
318
+ note: '**재회의 충격 = 2화 클라이맥스.** **[엔진A 앎 — C안 못 박기]** 전지적 1컷으로 유저의 앎을 *기억*(13년 전 두 점 = 지금의 손님)으로 확정. 단어
319
+ 없이 동일성을 유저에게만 확인 — 로라는 운명적 재회로만 느낀다(아이러니 완성). 베르타의 방에 카르밀라가 눕는 거울 연출(유저는 보지만 로라는 모름). 여기서 카르밀라 *얼굴
320
+ 노출 허용*(6세 회상과 매치). 이름(카르밀라)은 아직 — 3화에서. 인식의 충격은 1인칭.'
321
+ direction: 촛불 들고 다가가는 로라 1인칭. 아가씨가 눈 뜨는 순간 얼굴이 드러나며 6세 회상 컷과 **매치컷**. 심장 멎는 정적, "그 얼굴이었다" 중앙 단독. 촛불
322
+ 흔들림과 벽의 그림자.
323
+ image: 촛불 아래 침대에 누운 창백하고 비현실적으로 아름다운 젊은 여인(이제 얼굴이 보인다). 곁에서 돌보는 마담·마드모아젤. 촛불 앰버 + 미드나잇블루. 아름다움과 서늘한
324
+ 기시감이 겹친다.
content/beatcards/E03.yaml ADDED
@@ -0,0 +1,463 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E03
3
+ title: '제3화: 낯익은 얼굴'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E03/E03_비트카드.md
5
+ cards:
6
+ - id: E03-01
7
+ title: 잠 못 드는 밤
8
+ subtitle: 재회의 여진
9
+ tags:
10
+ - '#장소/침실'
11
+ - '#인물/로라'
12
+ - '#시점/1인칭'
13
+ - '#정서/매혹'
14
+ - '#정서/불안'
15
+ - '#온보딩/즉시체감'
16
+ - '#캐논/고정'
17
+ - '#복선/회수:FS-6세의밤'
18
+ - '#앎/유저'
19
+ - '#상태/초안'
20
+ status: 초안
21
+ canon: true
22
+ next: E03-02
23
+ next_options: []
24
+ axis: null
25
+ frailty: false
26
+ narration:
27
+ - type: prose
28
+ text: 그날 밤, 나는 좀처럼 잠을 이루지 못했다. 침대에 누워 천장을 바라보면 자꾸만 그 얼굴이 떠올랐다. 분명 처음 만난 손님이었으나, 내게는 결코 낯선 이가 아니었다.
29
+ 충격으로 옛 악몽의 잔상이 겹쳐 보인 것이라고 스스로를 다독여 보았다. 그러나 다독이면 다독일수록, 그 얼굴은 더욱 또렷하게 마음 한복판에 자리를 잡았다.
30
+ choices: []
31
+ r_card_refs: []
32
+ note: 2화 클라이맥스(재회 충격)의 여진. "헛것이었을지도"의 합리화가 곧 무너진다 — 의심을 억누르는 로라의 버릇(④b 4화 결핍)의 씨앗. 유저는 그 얼굴이 진짜임을 안다.
33
+ direction: 어둑한 침실, 천장을 응시하는 1인칭. 2화의 그 얼굴(깊은 두 눈)이 잔상으로 짧게 오버랩됐다 사라진다. 정적, 멀리 바람 소리. 잠들지 못하는 뒤척임의 질감.
34
+ image: 휘장 드리운 큰 침대에 홀로 누운 로라, 머리맡 작은 등불 하나. 천장의 빛바랜 그림. 미드나잇블루 어둠에 앰버 한 점. 떠오르는 두 눈의 희미한 잔상. 불면·매혹.
35
+ - id: E03-02
36
+ title: 정오의 손님
37
+ subtitle: 다시 본 미모
38
+ tags:
39
+ - '#장소/만찬홀'
40
+ - '#인물/로라'
41
+ - '#인물/카르밀라'
42
+ - '#인물/마담'
43
+ - '#인물/마드모아젤'
44
+ - '#시점/1인칭'
45
+ - '#정서/매혹'
46
+ - '#관계단계/낯섦'
47
+ - '#캐논/고정'
48
+ - '#복선/심기:FS-늦잠'
49
+ - '#복선/심기:FS-차가운손'
50
+ - '#앎/유저'
51
+ - '#상태/초안'
52
+ status: 초안
53
+ canon: true
54
+ next: E03-03
55
+ next_options: []
56
+ axis: null
57
+ frailty: false
58
+ narration:
59
+ - type: prose
60
+ text: '이튿날, 그녀는 정오가 다 되도록 일어나지 않았다. 하녀의 말로는 아가씨가 깊이 잠들어 도무지 깨어나지 않는다 했다. 마침내 오후가 되어서야 그녀가 거실로 내려왔을
61
+ 때, 나는 다시 한번 그 미모에 숨이 막힐 것만 같았다. 어젯밤의 창백함은 가시고, 두 뺨에 옅은 홍조가 돌아 있었다.
62
+
63
+ 호리호리한 몸매에 길고 짙은 머리칼, 나른하면서도 우아한 몸짓. 걸음마다 비단 자락이 물결처럼 흐르고, 사소한 동작에서조차 세상사에 권태로워진 귀부인의 기품이 묻어났다. 마담은
64
+ 평생 이런 미인은 처음 본다며 연신 감탄했고, 마드모아젤조차 넋을 잃은 듯 그녀를 바라보았다.
65
+
66
+ 그녀가 미소 지으며 내게 손을 내밀었을 때, 나는 오래 헤어졌던 누군가를 다시 만난 듯한 기이한 떨림을 느꼈다. 그 손은 부드러웠으나 어딘지 차가웠고, 내 손을 쥔 채 좀처럼
67
+ 놓지 않았다.'
68
+ choices: []
69
+ r_card_refs: []
70
+ note: '**FS-늦잠·FS-차가운손 첫 심기** — 4화에서 본격 회수될 단서를 *지금 가볍게* 깐다(과밀 분산 원칙). 로라·집안 모두 미모에 홀려 단서를 흘려보냄. 유저만
71
+ 서늘함을 읽는다.'
72
+ direction: 오후의 나른한 빛. 비단 자락이 물결처럼 흐르는 등장. 내민 손의 클로즈업 — 부드럽되 차가운 감촉(서늘한 한 박자). 집안사람들의 넋 잃은 시선.
73
+ image: 오후 햇살 비껴드는 응접실, 나른하고 우아하게 들어서는 카르밀라(창백하나 옅은 홍조). 감탄하는 마담·마드모아젤. 앰버·버건디 톤에 그녀의 흰 살결. 아름다움 속 한
74
+ 줄기 냉기.
75
+ - id: E03-03
76
+ title: 같은 꿈을 꾼 두 사람
77
+ subtitle: 인식의 고백
78
+ tags:
79
+ - '#장소/만찬홀'
80
+ - '#인물/로라'
81
+ - '#인물/카르밀라'
82
+ - '#시점/1인칭'
83
+ - '#연출/대사중앙'
84
+ - '#정서/매혹'
85
+ - '#관계단계/낯섦'
86
+ - '#캐논/고정'
87
+ - '#결말/공통'
88
+ - '#복선/회수:FS-6세의밤'
89
+ - '#앎/유저'
90
+ - '#앎/카르밀라🔒'
91
+ - '#상태/초안'
92
+ status: 초안
93
+ canon: true
94
+ next: E03-04
95
+ next_options: []
96
+ axis: null
97
+ frailty: false
98
+ narration:
99
+ - type: prose
100
+ text: 우리는 거실 창가에 마주 앉았다. 나는 차마 입을 떼지 못하다가, 결국 마음속에 담아 두었던 말을 꺼내고 말았다.
101
+ - type: character_dialogue
102
+ speaker: 로라
103
+ text: 이상하게 들리실지 모르지만… 저는 당신을 전에 본 적이 있어요. 여섯 살 무렵, 한밤중에 제 방에 한 아름다운 여인이 나타나 저를 어르고 곁에 누웠지요. ��두들 꿈이라
104
+ 했지만, 저는 그 얼굴을 한 번도 잊은 적이 없어요. 그런데 그 얼굴이… 바로 당신이에요.
105
+ anchor: true
106
+ - type: prose
107
+ text: 내 말이 끝나기 무섭게, 카르밀라의 두 눈이 놀라움으로 크게 떠졌다. 그녀는 한참을 말없이 나를 응시하더니, 떨리는 목소리로 입을 열었다.
108
+ - type: character_dialogue
109
+ speaker: 카르밀라
110
+ text: 세상에 이런 일이. 저 역시 똑같은 꿈을 꾸었어요. 어린 시절 어느 밤, 제 방에 한 사랑스러운 소녀가 나타났지요. 저는 그 아이를 끌어안고 함께 잠들었는데, 깨어
111
+ 보니 온데간데없었어요. 그 얼굴이 줄곧 잊히지 않았는데… 로라, 그 아이가 바로 당신이었어요.
112
+ anchor: true
113
+ choices: []
114
+ r_card_refs:
115
+ - R-회피사다리
116
+ note: '**🔒 거짓 진술의 정수** — 카르밀라는 그날의 진실(흡혈)을 알면서 "같은 꿈"으로 *완벽하게* 받아친다(거짓 진술 허용 규칙). 한 점 흔들림 없이. 유저는 진실을
117
+ 알기에 이 다정한 거짓이 더 서늘하다. 대사는 앵커 — 로라가 무엇을 어떻게 고백하든 카르밀라는 "나도 같은 꿈"으로 수렴. **의외플레이:** 유저가 "거짓말이죠" 하고 직격하면
118
+ → `R-회피사다리` **1단계**(슬픈 미소·화제 전환, 거듭하면 2단계).'
119
+ direction: 창가에 마주 앉은 투샷. 로라의 고백에 카르밀라의 눈이 커지는 클로즈업(놀라움의 연기 — 유저에겐 미세한 가면이 읽히게). "그 아이가 바로 당신이었어요" 나직이.
120
+ 두 사람 사이 좁혀지는 거리.
121
+ image: 가을빛 드는 창가, 마주 앉은 두 여인의 손이 가까워진다. 카르밀라의 깊은 두 눈에 어린 (연기된) 놀라움. 따뜻한 앰버 톤이되 그녀 쪽에 옅은 그늘. 친밀의 시작.
122
+ - id: E03-04
123
+ title: 비밀의 끈
124
+ subtitle: 운명이라는 매혹
125
+ tags:
126
+ - '#장소/만찬홀'
127
+ - '#인물/로라'
128
+ - '#인물/카르밀라'
129
+ - '#시점/1인칭'
130
+ - '#연출/대사중앙'
131
+ - '#정서/매혹'
132
+ - '#정서/친밀'
133
+ - '#관계단계/매혹'
134
+ - '#축/신뢰+'
135
+ - '#캐논/고정'
136
+ - '#복선/회수:FS-혈통'
137
+ - '#앎/유저'
138
+ - '#상태/초안'
139
+ status: 초안
140
+ canon: true
141
+ next: E03-05
142
+ next_options: []
143
+ axis: trust
144
+ frailty: false
145
+ narration:
146
+ - type: prose
147
+ text: 나는 소름이 돋는 동시에 묘한 안도감에 휩싸였다. 두려워하던 그 기억이, 알고 보니 그녀에게도 똑같이 새겨진 추억이었다니. 상식으로는 도무지 설명할 수 없는 일이었으나,
148
+ 이상하게도 그 설명할 수 없음이 우리를 더욱 가깝게 만들었다. 마치 우리 둘만이 아는 비밀의 끈으로 묶인 듯했다.
149
+ - type: dialogue_center
150
+ text: 무서워해야 할 일이었으나, 나는 도리어 그 신비로움에 매혹되고 말았다.
151
+ - type: prose
152
+ text: 우리는 서로의 손을 마주 잡았다. 그 기이한 인연이, 처음 만난 우리를 한순간에 오랜 벗처럼 가깝게 묶어 놓았다.
153
+ choices: []
154
+ r_card_refs: []
155
+ note: 관계단계 **낯섦→매혹** 전환점. "설명할 수 없음"이 도리어 결속이 되는 것이 카르밀라 매혹의 핵심 기제. 첫 **신뢰+** — 유저가 이 신비를 받아들일수록 축이
156
+ 신뢰로 기운다(보이지 않는 게임). 공포를 매혹으로 덮는 로라다움.
157
+ direction: 마주 잡은 두 손의 클로즈업. "매혹되고 말았다" 중앙 단독. 음악이 따뜻하게 차오른다. 두려움과 끌림이 한 화면에 공존하는 톤.
158
+ image: 창가에서 마주 잡은 두 손, 깍지 낀 손가락. 로라의 얼굴엔 안도와 설렘, 카르밀라의 미소엔 헤아릴 수 없는 깊이. 따뜻한 금빛, 창밖엔 기우는 가을 햇살. 결속의 순간.
159
+ - id: E03-05
160
+ title: 카르밀라라 불러줘
161
+ subtitle: 이름, 그리고 밀월
162
+ tags:
163
+ - '#장소/정원'
164
+ - '#인물/로라'
165
+ - '#인물/카르밀라'
166
+ - '#시점/1인칭'
167
+ - '#연출/대사중앙'
168
+ - '#정서/친밀'
169
+ - '#관계단계/밀월'
170
+ - '#축/신뢰+'
171
+ - '#캐논/고정'
172
+ - '#복선/심기:FS-옛노래'
173
+ - '#앎/유저'
174
+ - '#상태/초안'
175
+ status: 초안
176
+ canon: true
177
+ next: E03-06
178
+ next_options: []
179
+ axis: trust
180
+ frailty: false
181
+ narration:
182
+ - type: character_dialogue
183
+ speaker: 카르밀라
184
+ text: 어젯밤 저를 보살펴 주신 분이시죠? 카르밀라라고 불러 주세요.
185
+ anchor: true
186
+ - type: prose
187
+ text: '카르밀라. 나는 그 이름을 마음속으로 가만히 되뇌었다. 어딘지 오래된 종소리처럼 울리는 이름이었다. 흔히 듣는 이름은 아니었으나, 한 번 들으면 좀처럼 잊히지 않는
188
+ 묘한 울림이 있었다.
189
+
190
+ 그날부터 카르밀라와 나는 거의 모든 시간을 함께 보냈다. 함께 정원을 거닐고, 책을 읽고, 피아노를 치고, 끝없이 이야기를 나누었다. 그녀는 내가 아는 어떤 노래보다 구슬프고
191
+ 낯선 가락을 흥얼거렸는데, 어느 나라의 노래냐고 물으면 그저 아주 먼 옛날의 것이라고만 답했다. 외로움 속에서 자란 내게 그녀는 하늘이 내려 준 선물 같았다. 나는 태어나
192
+ 처음으로, 내 마음을 온전히 나눌 또래의 벗을 얻었다고 믿었다.'
193
+ choices: []
194
+ r_card_refs: []
195
+ note: 이름 공개 = 3화의 작은 분기점. "카르밀라"는 애너그램(미르칼라)의 첫 노출이나 로라는 모름(T3 잠복). **FS-옛노래 심기**("먼 옛날의 것") = 시대착오
196
+ 단서. 외로움이 채워지는 밀월 — 모든 빈자리를 카르밀라가 메우는 ④b 구도의 실현.
197
+ direction: '"카르밀라라고 불러 주세요" 중앙 단독, 이름이 종소리처럼 울리는 음향. 이어 정원·서재·피아노의 밀월 몽타주(따뜻한 빛, 두 사람의 웃음). 구슬픈 옛 가락이
198
+ 배경에 옅게.'
199
+ image: 햇살 가득한 정원에서 나란히 걷는 두 여인, 책장을 넘기고 피아노 앞에 어깨를 맞댄 컷의 몽타주. 따뜻한 앰버·금빛. 행복하나 카르밀라의 가락엔 옅은 멜랑콜리. 충만한
200
+ 밀월.
201
+ - id: E03-06
202
+ title: 한 겹의 베일
203
+ subtitle: 피하는 비밀
204
+ tags:
205
+ - '#장소/정원'
206
+ - '#인물/로라'
207
+ - '#인물/카르밀라'
208
+ - '#인물/아버지'
209
+ - '#시점/1인칭'
210
+ - '#연출/대사중앙'
211
+ - '#정서/불안'
212
+ - '#유형/단서발견'
213
+ - '#관계단계/밀월'
214
+ - '#캐논/고정·분기'
215
+ - '#메커니즘/환산출력'
216
+ - '#복선/심기:FS-함구'
217
+ - '#복선/회수:FS-노부인수법'
218
+ - '#앎/유저'
219
+ - '#앎/카르밀라🔒'
220
+ - '#상태/초안'
221
+ status: 초안
222
+ canon: true
223
+ next: E03-07
224
+ next_options: []
225
+ axis: null
226
+ frailty: false
227
+ narration:
228
+ - type: prose
229
+ text: 그러나 함께 지내는 시간이 길어질수록, 나는 그녀에게 묘한 구석이 있음을 차츰 느끼게 되었다. 무엇보다, 카르밀라는 자신에 관한 이야기를 한사코 피했다. 가문도, 고향도,
230
+ 그 밤길을 가게 된 연유도, 내가 무심코 물을 때마다 그녀는 가만히 미소만 지을 뿐이었다. 어쩌다 채근하면, 그녀는 늘 같은 대답으로 입을 막았다.
231
+ - type: character_dialogue
232
+ speaker: 카르밀라
233
+ text: 미안해요, 로라. 어머니께서 절대 그 무엇도 말해선 안 된다고 거듭 당부하셨거든요. 약속을 어기면 큰일이 난답니다. 부디 묻지 말아 주세요. 때가 되면, 당신은 모든
234
+ 것을 알게 될 거예요.
235
+ anchor: true
236
+ - type: prose
237
+ text: 그렇게 말할 때면 그녀의 두 눈에는 알 수 없는 그늘이 스쳤다. 단순한 비밀의 무게라기보다, 오래된 슬픔이나 체념에 가까운 무엇이었다. 아버지 또한 손님의 신원을 알
238
+ 수 없다는 사실을 못내 마음에 걸려 하셨으나, 노부인과의 약속을 신사의 도리로 여겨 굳이 캐묻지 않으셨다. 그녀는 나의 모든 것을 알고 싶어 하면서도, 정작 자신에 관해서는
239
+ 단 한 겹의 베일도 벗으려 하지 않았다.
240
+ choices:
241
+ - label: 비밀을 존중한다
242
+ modifiers: &id001 []
243
+ axis: trust
244
+ result: 나는 더 묻지 않았다. 그러자 그녀는 안도한 듯 더 깊이 기대 왔다. "…고마워, 로라. 너는 다른 사람들과 달라." 그 말이 어쩐지 슬프게 들렸다.
245
+ next: null
246
+ - label: 더 캐묻는다
247
+ modifiers: *id001
248
+ axis: doubt
249
+ result: 그래도 내가 거듭 묻자, 그녀의 눈에 무언가가 *욱신* 스쳤다. 오래전 누군가에게 똑같이 추궁당해 본 사람의 얼굴이었다. "…왜 자꾸 그런 걸 묻지? 나를 믿지
250
+ 못하는 거니, 로라?" 목소리가 서늘해졌다. 그런데 그 서늘함 밑에서, 나는 보았다 — 상처받은 아이 같은 외로움을. 나는 그녀를 의심한 것이 미안해졌다. 그리고 그 미안함이,
251
+ 어쩐지 두려웠다.
252
+ next: null
253
+ r_card_refs: []
254
+ note: '**[엔진B 비극의 덫 — 3종 변주]** 신뢰=안도/중립=회피/의심=옛 배신의 욱신+외로움 노출. 의심은 *정당하다*(유저는 카르밀라가 진짜로 로라를 죽이고 있음을
255
+ 안다). 그러나 그 정당함이 그녀를 찌르고, 유저는 *죄책*을 느낀다 — 그 죄책이 다음 의심을 망설이게 하는 덫. 변주는 누적 신뢰축으로 분기(보이지 않는 게임). **FS-함구
256
+ 심기** — 2화 노부인의 "묻지 말라"(FS-노부인수법)와 연결되는 정체 은폐 장치 회수. "때가 되면 알게 될 것" = 직설 예고의 *완화된* 형태(③b 권고대로 직설 지연).
257
+ 그늘=T2(흡혈)·T4(과거)의 잠복. 〔고정〕함구 규칙. **분기 씨앗:** 유저가 캐물을지/존중할지 — 4·5화 "어른에게 말할까" 시소로 이어짐.'
258
+ direction: 밝던 밀월 톤에 한 박자 그늘. "부디 묻지 말아 주세요"에서 카르밀라의 두 눈에 스치는 오��된 슬픔(클로즈업). 비밀을 존중하는 로라의 머뭇거림. 옅은 안개
259
+ 같은 불안이 깔린다.
260
+ image: 정원 벤치, 미소로 답을 피하는 카르밀라. 두 눈에 어린 체념의 그늘. 멀리 서재 창가에서 손님을 염려스레 바라보는 아버지의 실루엣. 따뜻함에 스민 옅은 불안.
261
+ - id: E03-07
262
+ title: 연인의 포옹
263
+ subtitle: 격정
264
+ tags:
265
+ - '#장소/침실'
266
+ - '#인물/로라'
267
+ - '#인물/카르밀라'
268
+ - '#시점/1인칭'
269
+ - '#연출/감각몰입'
270
+ - '#정서/매혹'
271
+ - '#정서/불안'
272
+ - '#관계단계/밀월'
273
+ - '#캐논/고정·분기'
274
+ - '#메커니즘/환산출력'
275
+ - '#복선/심기:FS-목덜미'
276
+ - '#앎/유저'
277
+ - '#상태/초안'
278
+ status: 초안
279
+ canon: true
280
+ next: E03-08
281
+ next_options: []
282
+ axis: null
283
+ frailty: false
284
+ narration:
285
+ - type: prose
286
+ text: '그러나 그러한 의문도, 그녀가 보여 주는 다정함 앞에서는 번번이 힘을 잃었다. 카르밀라는 종종 나를 가만히 바라보다가, 갑자기 두 팔로 나를 끌어안고는 뺨을 비벼
287
+ 왔다. 그 포옹은 벗 사이의 정다움을 넘어, 마치 연인의 그것처럼 뜨겁고 격정적이었다.
288
+
289
+ 그녀의 숨결이 내 목덜미에 닿을 때면, 나는 까닭 모를 떨림과 함께 얼굴이 화끈 달아올랐다. 그녀의 손가락은 내 머리칼을 천천히 쓸어내렸고, 입술은 내 귓가에 닿을 듯 말
290
+ 듯 머물렀다. 그 다정함은 너무도 깊어, 때로는 숨이 막힐 것만 같았다.'
291
+ choices:
292
+ - label: 품에 안긴다
293
+ modifiers: &id002 []
294
+ axis: trust
295
+ result: 나는 그 품에 더 깊이 파고들었다. 그녀의 떨림이 내게 그대로 전해졌다. "…너는 따뜻하구나, 로라. 나는 늘 이렇게 따뜻하고 싶었어." 그 말끝이 가늘게 떨렸다.
296
+ next: null
297
+ - label: 가만히 밀어낸다
298
+ modifiers: *id002
299
+ axis: doubt
300
+ result: 나는 조심스레 그녀를 밀어냈다. 그러자 그녀는 처연한 미소를 지으며, 도리어 나를 더 깊이 끌어안았다. "…무섭니? 그래도 좋아. 하지만 부디, 나를 혼자 두지는
301
+ 마." 강압은 아니었으나, 놓아주지도 않는 손이었다.
302
+ next: null
303
+ r_card_refs: []
304
+ note: 밀월의 관능. **[엔진B 변주]** 수용=신뢰+(떨리는 진심)/거부=의심+(집착·외로움, 단 물리적 돌변 금지 — 바이블③ 7-5). 선정은 절제·암시. **FS-목덜미
305
+ 심기** — "숨결이 목덜미에 닿을 때" = 6화 두 점의 복선(흡혈의 에로틱한 위장). 위험을 관능으로 덮는 보이지 않는 게임. 선정은 절제·암시(작업지침 톤). 유저는 목덜미에
306
+ 닿는 숨결의 의미를 안다.
307
+ direction: 촉각 중심의 감각몰입. 목덜미에 닿는 숨결, 머리칼을 쓸어내리는 손가락의 클로즈업. 화끈 달아오르는 로라의 1인칭. 선정적이지 않게 — 절제된 암시, 낮은 호흡음.
308
+ 황홀과 불안의 경계.
309
+ image: 어둑한 실내, 로라를 끌어안은 카르밀라(얼굴은 로라의 목덜미 가까이, 표정은 그늘). 머리칼을 쓰는 흰 손가락. 버건디·미드나잇블루에 촛불 한 점. 관능적이되 서늘한
310
+ — 매혹과 위험의 공존.
311
+ - id: E03-08
312
+ title: 너를 위해 죽게 될 거야
313
+ subtitle: 소유의 고백
314
+ tags:
315
+ - '#장소/침실'
316
+ - '#인물/로라'
317
+ - '#인물/카르밀라'
318
+ - '#시점/1인칭'
319
+ - '#연출/대사중앙'
320
+ - '#정서/매혹'
321
+ - '#정서/공포'
322
+ - '#관계단계/밀월'
323
+ - '#캐논/고정·분기'
324
+ - '#결말/공통'
325
+ - '#메커니즘/환산출력'
326
+ - '#문체/대표대사'
327
+ - '#복선/심기:FS-영원소유'
328
+ - '#앎/유저'
329
+ - '#앎/카르밀라🔒'
330
+ - '#상태/초안'
331
+ status: 초안
332
+ canon: true
333
+ next: E03-09
334
+ next_options: []
335
+ axis: null
336
+ frailty: false
337
+ narration:
338
+ - type: character_dialogue
339
+ speaker: 카르밀라
340
+ text: 로라, 나의 사랑스러운 로라.
341
+ anchor: true
342
+ - type: prose
343
+ text: 그녀는 떨리는 목소리로 속삭였다.
344
+ - type: dialogue_center
345
+ text: '"나는 너를 위해 살고, 너 또한 나를 위해 죽게 될 거야. 너는 나의 것이고, 나는 너의 것. 우리는 영원히, 영원히 하나가 될 거란다."'
346
+ - type: prose
347
+ text: 그러다 그녀의 목소리가 갑자기 꾸밈을 벗었다.
348
+ gate: trust_high
349
+ - type: dialogue_center
350
+ text: '"…백오십 년이야, 로라. 의심 없이 나를 사랑해 줄 단 한 사람을, 나는 그렇게 오래 기다렸어. 네가… 그 사람이었으면 해. 그게 전부야."'
351
+ gate: trust_high
352
+ - type: prose
353
+ text: 그것은 너무도 강렬하고 절박하여, 마치 그녀의 온 영혼이 나를 향해 쏟아져 나오는 듯했다. 나는 그 격정에 끌리면서도, 동시에 까닭 모를 거북함과 두려움을 느꼈다.
354
+ 끌림과 거부감이 한 가슴 안에서 서로 다투었고, 나는 어느 쪽이 진짜 내 마음인지 알 수 없���다. 그녀의 두 눈은 사랑으로 빛나는 동시에, 무언가를 갈망하는 듯 어둡게 타올랐다.
355
+ choices: []
356
+ r_card_refs: []
357
+ note: 3화의 **대표 대사** — 원작의 핵심 선언. **[엔진D 신뢰 해금 게이트]** 표면("영원히 하나")은 *전원에게* 은유=가면으로, **심층("백오십 년을 기다렸어…
358
+ 그게 전부야")은 신뢰高에서만** 해금 — 은유를 벗는 "균열"(문체⑤)로 동기 엔진의 가장 깊은 누설. 이로써 ③b "직설 예고 완화·지연" 충족(직설은 신뢰 게이트 뒤로).
359
+ "백오십 년"으로 연도 캐논(1698+150=1848)도 본문 노출. 🔒 "흡혈귀"는 끝까지 안 씀. 신뢰中 이하면 표면만 출력. T4 배신·영원의 그림자. 가볍게 쓰지 말 것
360
+ — 장면전환·중앙 단독.
361
+ direction: 격정의 절정에서 정적으로. 대표 대사 한 줄씩 화면 가운데 천천히. 사랑과 굶주림이 함께 타는 카르밀라의 두 눈 클로즈업. 로라의 끌림↔거부의 갈등을 호흡으로.
362
+ 서늘한 여운.
363
+ image: 촛불 아래 로라의 얼굴을 감싸 쥔 카르밀라, 사랑과 갈망이 뒤섞여 어둡게 타는 두 눈. 블러드레드 한 점. 미드나잇블루 어둠. 사랑 고백이되 서약처럼 무거운 — 매혹과
364
+ 공포의 정점.
365
+ - id: E03-09
366
+ title: 거울 속 사냥감
367
+ subtitle: 굶주린 눈빛
368
+ tags:
369
+ - '#장소/만찬홀'
370
+ - '#인물/로라'
371
+ - '#인물/카르밀라'
372
+ - '#시점/1인칭'
373
+ - '#연출/감각몰입'
374
+ - '#정서/공포'
375
+ - '#유형/단서발견'
376
+ - '#관계단계/밀월'
377
+ - '#캐논/고정'
378
+ - '#복선/심기:FS-짐승본성'
379
+ - '#앎/유저'
380
+ - '#상태/초안'
381
+ status: 초안
382
+ canon: true
383
+ next: E03-10
384
+ next_options: []
385
+ axis: null
386
+ frailty: false
387
+ narration:
388
+ - type: prose
389
+ text: '그러던 어느 날, 거실 거울 앞에서 머리를 매만지던 나는 거울 속에서 카르밀라가 등 뒤에 서 있는 것을 보았다. 그녀는 평소와 다르게 두 눈을 가늘게 뜨고, 거울에
390
+ 비친 나를 마치 사냥감을 가늠하듯 골똘히 응시하고 있었다.
391
+
392
+ 그 표정은 한순간이었으나, 어딘지 굶주린 짐승을 떠올리게 하여 나는 등골이 서늘해졌다. 그러나 내가 돌아보자 그녀는 이내 환하게 웃으며 내 어깨에 머리를 기댔고, 방금 본
393
+ 그 어두운 눈빛은 거짓말처럼 사라지고 없었다. 나는 또다시 내가 헛것을 보았으려니 여기며 마음을 다잡았다.'
394
+ choices: []
395
+ r_card_refs: []
396
+ note: '**FS-짐승본성 회수**(1화 "굶주린 그림자"·2화로 이어진 본성) — 가면이 벗겨지는 *순간 포착*. 거울이라는 장치(반사된 진실). 로라는 또 "헛것"으로 합리화(의심
397
+ 억누름 버릇 누적). 유저는 똑똑히 본다 — 극적 아이러니. 〔변주〕어떤 일상 순간에 가면이 벗겨지나는 흐름 자유.'
398
+ direction: 거울이라는 프레임 안의 프레임. 등 뒤 카르밀라의 가늘게 뜬 눈 — 사냥감을 가늠하는 한순간(서늘한 정지). 로라가 돌아보는 순간 환한 미소로 *전환*(가면 복귀).
399
+ 짧고 강렬한 대비. 등골의 한기.
400
+ image: 거울 앞 로라, 거울 면에 비친 등 뒤 카르밀라의 가늘게 뜬 굶주린 눈. 현실의 카르밀라는 그늘에. 차가운 청록빛 거울, 촛불 앰버. 일상에 균열을 내는 한순간의 짐승.
401
+ 서늘.
402
+ - id: E03-10
403
+ title: 너는 나를 밀어내지 못할 거야
404
+ subtitle: 예언 같은 말
405
+ tags:
406
+ - '#장소/정원'
407
+ - '#인물/로라'
408
+ - '#인물/카르밀라'
409
+ - '#인물/마담'
410
+ - '#시점/1인칭'
411
+ - '#연출/대사중앙'
412
+ - '#정서/불안'
413
+ - '#정서/매혹'
414
+ - '#관계단계/밀월'
415
+ - '#캐논/고정·분기'
416
+ - '#결말/공통'
417
+ - '#메커니즘/환산출력'
418
+ - '#축/신뢰+·의심+'
419
+ - '#복선/심기:FS-사랑의정체'
420
+ - '#복선/심기:FS-어른합리주의'
421
+ - '#인정/깊은이해'
422
+ - '#앎/유저'
423
+ - '#상태/초안'
424
+ status: 초안
425
+ canon: true
426
+ next: E04
427
+ next_options: []
428
+ axis: null
429
+ frailty: false
430
+ narration:
431
+ - type: prose
432
+ text: 카르밀라의 격정은 도무지 여느 벗 사이의 것으로만 여겨지지 않았다. 마음이 어지러운 저녁, 마담 페로동이 바느질감을 든 채 곁에 앉아 있었다.
433
+ choices:
434
+ - label: 마담에게 털어놓는다
435
+ modifiers: &id003 []
436
+ axis: doubt
437
+ result: 나는 슬쩍 카르밀라의 격정에 관해 털어놓았다. 마담은 바느질감을 내려놓고 잠시 진지한 얼굴이 되었다. 그러나 이내 부드럽게 다독였다. "젊은 처녀들 사이엔 더러
438
+ 그런 깊은 정이 싹트기도 한답니다. 그 아인 객지에서 외로운 게지요. 아씨가 너그러이 품어 주구려." 나는 고개를 끄덕이면서도 마음 한구석이 개운치 않았다. 다만 그 다독임
439
+ 속에도, 어딘지 석연치 않아 하는 기색이 옅게 스쳐 지나갔다. — 말해��� 대수롭지 않게 여겨진다는 것을, 나는 그날 어렴풋이 배웠다.
440
+ next: null
441
+ - label: 혼자 마음에 담아 둔다
442
+ modifiers: *id003
443
+ axis: trust
444
+ result: '나는 아무에게도 말하지 않았다. 우리 둘 사이의 일을 남의 입에 올리는 것이, 어쩐지 그녀를 배신하는 일처럼 느껴졌기 때문이다.
445
+
446
+ 한번은 내가 조심스레 그녀를 밀어내며, 어머니나 누이를 대하듯 정답게 지내자고 말한 적이 있었다. 그러자 카르밀라는 처연한 미소를 지으며 나를 더욱 깊이 끌어안았다.
447
+
448
+ > ❝ "너는 아직 몰라, 로라. 사랑이 무엇인지, 그것이 얼마나 깊은 곳까지 닿을 수 있는지를. 언젠가 너도 알게 될 거야. 그때가 되면, 너는 나를 결코 밀어내지 못할
449
+ 거란다." ❞
450
+
451
+ 그녀의 목소리에는 슬픔과 확신이 기묘하게 뒤섞여 있었다. 나는 그 말의 뜻을 헤아릴 수 없었다. 다만 매혹과 불안이 한데 뒤엉킨 그 알 수 없는 감정에 가만히 몸을 맡길 뿐이었다.
452
+ 그러나 나는 어렴풋이 느끼고 있었다. 그 고요 아래, 무언가 알 수 없는 것이 천천히 깨어나고 있다는 것을.'
453
+ next: null
454
+ r_card_refs: []
455
+ note: 3화의 정서적 마감. **FS-사랑의정체 심기**("사랑이 무엇인지") = 5화 "사랑은 잔혹한 것" 정원 대화로 회수될 복선. **[엔진C 안전망 0차 — 실패]**
456
+ 마담 = *거의 닿을 뻔한 구원*(④b), 유저가 비밀을 털 수 있는 **첫 어른 채널**. 그러나 물리 증거 없는 단계라 마담의 합리화("처녀들 사이 흔한 정")로 *부드럽게
457
+ 무력화*된다(**FS-어른합리주의 선심기** — 4·5화 아버지 실패로 이어짐). "말해도 대수롭지 않다" 학습의 0차 앵커 → 6화 숨김 경향의 뿌리. 안전망 시퀀스 = **마담(0차)→아버지(1·2차,
458
+ E04-04·E05-08)→작동(E06-10B)**. 털기=의심+·안전망 입력 / 담아둠=신뢰+·고립. "밀어내지 못할 것" = 슬픔(저주의 자각)+확신(소유)의 이중 울림.
459
+ 🔒 동기는 확정하지 않은 채 진심 어린 혼란으로.
460
+ direction: 마담과의 낮은 대화(따뜻하나 석연찮은 한 박자) → 정원의 카르밀라로. 밀어내려는 로라를 더 깊이 끌어안는 동작. 대표 대사 중앙 단독, 슬픔과 확신이 함께 어린
461
+ 목소리. 기우는 가을 햇살, 고요 아래 깨어나는 무언가의 암시로 페이드아웃.
462
+ image: 기우는 가을 햇살의 정원, 처연히 미소 지으며 로라를 끌어안는 카르밀라. 마담의 바느질하던 손이 멈춘 인서트. 앰버에 스며드는 보랏빛 황혼. 매혹과 불안이 함께 가라앉는
463
+ 마감.
content/beatcards/E04.yaml ADDED
@@ -0,0 +1,482 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E04
3
+ title: '제4화: 그녀의 기이한 습관들'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E04/E04_비트카드.md
5
+ cards:
6
+ - id: E04-01
7
+ title: 형체 없는 불안
8
+ subtitle: 의심을 누르는 버릇
9
+ tags:
10
+ - '#장소/서재'
11
+ - '#인물/로라'
12
+ - '#시점/1인칭'
13
+ - '#정서/불안'
14
+ - '#온보딩/곧알게함'
15
+ - '#캐논/고정'
16
+ - '#앎/유저'
17
+ - '#상태/초안'
18
+ status: 초안
19
+ canon: true
20
+ next: E04-02
21
+ next_options: []
22
+ axis: null
23
+ frailty: false
24
+ narration:
25
+ - type: prose
26
+ text: '카르밀라가 우리 성에 머문 지 몇 주가 지나면서, 나는 그녀에게 깃든 기이한 습관들을 하나둘 알아차리게 되었다. 처음에는 그저 변덕스럽고 별난 성정이려니 여겼다.
27
+ 그러나 그 별남이 하나하나 쌓이자, 나는 차츰 형언할 수 없는 불안에 사로잡히기 시작했다. 마치 안개 속에서 무언가 다가오는 것을 알면서도, 그것이 무엇인지는 끝내 분간할
28
+ 수 없는 답답함과도 같았다.
29
+
30
+ 이 모든 것을 나는 누구에게도 선뜻 털어놓을 수 없었다. 말로 옮기는 순간, 한낱 어린 처녀의 부질없는 의심처럼 들릴까 두려웠기 때문이다.'
31
+ choices: []
32
+ r_card_refs: []
33
+ note: 4화의 *심리적 프레임* — "말하면 부질없는 의심처럼 들릴까 봐" = 의심을 스스로 검열하는 버릇(④b 4화 결핍 공개). 이게 "왜 안 도망가?"를 납득시키는 장치.
34
+ 유저의 공모감을 부른다. 〔고정〕로라의 입막음 심리.
35
+ direction: 혼자 있는 로라의 내적 독백(보이스오버). 안개 비유에 맞춰 화면 가장자리에 옅은 안개·비네트. 불안의 형체 없음을 *흐릿한 초점*으로. 정적.
36
+ image: 어둑한 서재 혹은 창가에 홀로 앉은 로라, 무언가 골똘한 표정. 주위로 옅게 번지는 안개 같은 비네트. 차분한 잿빛·미드나잇블루. 이름 붙일 수 없는 불안.
37
+ - id: E04-02
38
+ title: 정오의 잠, 한밤의 생기
39
+ subtitle: 낮과 밤이 뒤바뀐 사람
40
+ tags:
41
+ - '#장소/침실'
42
+ - '#인물/카르밀라'
43
+ - '#인물/로라'
44
+ - '#시점/1인칭'
45
+ - '#유형/단서발견'
46
+ - '#정서/불안'
47
+ - '#캐논/고정'
48
+ - '#복선/회수:FS-늦잠'
49
+ - '#복선/심기:FS-빛기피'
50
+ - '#앎/유저'
51
+ - '#상태/초안'
52
+ status: 초안
53
+ canon: true
54
+ next: E04-03
55
+ next_options: []
56
+ axis: null
57
+ frailty: false
58
+ narration:
59
+ - type: prose
60
+ text: 무엇보다 그녀는 좀처럼 아침에 일어나는 법이 없었다. 정오가 다 되어서야 비로소 방을 나섰고, 그제야 차 한 잔을 들고는 다시 나른하게 소파에 몸을 묻었다. 반면 밤이
61
+ 되면 그녀는 도리어 생기를 띠었다. 한낮에는 빛을 꺼리듯 짙은 커튼을 드리운 어둑한 방에 머물다가도, 해가 지면 두 눈이 형형하게 빛나고 몸짓이 가벼워졌다.
62
+ choices: []
63
+ r_card_refs: []
64
+ note: '**FS-늦잠 회수**(3화 선심기) + **FS-빛기피 심기.** 월드 헌법 2-4(낮엔 무력·빛 꺼림, 밤에 생기)의 직접 발현 — ''강'' 단서지만 *일상 관찰*로
65
+ 자연스럽게(수동 노출). 로라는 "별난 성정"으로 분류. 유저는 흡혈귀 규칙을 안다.'
66
+ direction: 낮/밤 대비 컷. 한낮 — 짙은 커튼의 어둑한 방, 나른히 늘어진 카르밀라. 밤 — 형형히 빛나는 두 눈, 가벼워진 몸짓. 같은 인물의 두 얼굴. 빛의 온도가
67
+ 정반대.
68
+ image: (낮) 커튼 드리운 방에 소파에 묻힌 카르밀라, 빛을 등진 그늘. (밤) 달빛 아래 생기를 띠고 일어선 카르밀라, 빛나는 두 눈. 분할된 두 장면의 대비. 낮은 잿빛,
69
+ 밤은 미드나잇블루+냉광.
70
+ - id: E04-03
71
+ title: 달빛 아래 흰옷
72
+ subtitle: 밤의 배회
73
+ tags:
74
+ - '#장소/정원'
75
+ - '#장소/복도'
76
+ - '#인물/카르밀라'
77
+ - '#인물/로라'
78
+ - '#시점/1인칭'
79
+ - '#유형/단서발견'
80
+ - '#정서/공포'
81
+ - '#캐논/고정'
82
+ - '#복선/심기:FS-밤배회'
83
+ - '#복선/회수:FS-짐승본성'
84
+ - '#메커니즘/능동발견'
85
+ - '#앎/유저'
86
+ - '#상태/초안'
87
+ status: 초안
88
+ canon: true
89
+ next: E04-04
90
+ next_options: []
91
+ axis: null
92
+ frailty: false
93
+ narration:
94
+ - type: prose
95
+ text: '모두가 잠든 깊은 밤, 나는 이따금 그녀가 홀로 복도를 거닐거나 정원을 배회하는 소리를 들었다. 한번은 창밖으로, 달빛 아래 흰옷을 입고 정원을 가로질러 가는 그녀의
96
+ 모습을 본 적도 있었다. 그 걸음걸이는 잠결의 몽유라기에는 너무도 또렷했고, 마치 무언가를 찾아 헤매는 듯 보였다.
97
+
98
+ 이튿날 그 일을 넌지시 물으면, 그녀는 영문을 모르겠다는 듯 고개를 갸웃하며 밤새 깊이 잠들어 꿈도 꾸지 않았노라 답하곤 했다. 거짓을 말하는 기색은 전혀 없었기에, 나는
99
+ 도리어 더 큰 혼란에 빠졌다.'
100
+ choices:
101
+ - label: 어느 밤, 몰래 뒤를 따라가 본다
102
+ modifiers: &id001
103
+ - 능동발견
104
+ axis: doubt
105
+ result: 어느 깊은 밤, 나는 용기를 내어 흰옷의 그녀를 몰래 뒤따랐다. 달빛이 고인 정원 끝, 그녀는 낮은 돌담 앞에 멈춰 숲 너머 마을 쪽을 응시하고 있었다. 그 옆얼굴은
106
+ 내가 알던 카르밀라가 아니었다 — 무언가에 굶주린, 그러나 서두르지 않는 짐승의 고요. 마른 나뭇가지 하나가 내 발밑에서 부러졌다. 그녀가 돌아보았다. 한순간 그 눈이 서늘하게
107
+ 번득였고, 곧 여느 때의 다정함이 물처럼 덮였다. "…잠이 안 와, 로라? 나도 그래. 밤은 자꾸 나를 깨우는구나." 그 손을 잡고 돌아서는 동안, 등 뒤 숲에서는 옅은 안개가
108
+ 피어올라 방금 그녀가 응시하던 곳을 지워 버렸다. 나는 무언가를 본 것 같았으나, 그것이 무엇인지는 끝내 붙잡을 수 없었다.
109
+ next: null
110
+ - label: 따라가지 않는다
111
+ modifiers: *id001
112
+ axis: neutral
113
+ result: 나는 차마 뒤를 밟지 못하고 이불 속으로 파고들었다. 이 밤의 일도, 여느 밤처럼 흐릿한 불안으로만 남아 흘러갔다.
114
+ next: null
115
+ r_card_refs: []
116
+ note: '**FS-밤배회 심기.** "무언가를 찾아 헤매는" = 마을 처녀들을 노리는 밤 사냥의 암시(유저만 앎). 🔒 거짓 진술("꿈도 꾸지 않았다")을 한 점 흔들림 없이
117
+ — 동기 미결 규칙(본인도 다 안다). **[능동발견 보상 — 작성됨]** 따라가면 ''사냥을 나서려던 밤''을 목격(의심+ 단서 1조각), 안 따라가면 영영 흘림 = *능동
118
+ 보상의 비대칭*(④b, v3 §3 근거). 🔒 정체 확정은 안개화(헌법 2-3)로 회피 — 확인은 되나 확정은 안 됨. ''중'' 단서.'
119
+ direction: 창문 너머 1인칭 시점. 달빛 아래 흰옷의 카르밀라가 소리 없이 정원을 가로지른다 — 또렷하고 목적 있는 걸음(몽유 아님). 이튿날 천연한 부정과의 낙차. 서늘한
120
+ 적막.
121
+ image: 한밤 창가에서 내려다본 정원, 달빛에 흰옷 입고 미끄러지듯 가로지르는 카르밀라(뒷모습·목적 있는 걸음). 검은 전나무 숲, 푸른 달. 미드나잇블루·은빛. 몽유 같지 않은
122
+ 또렷함의 불안.
123
+ - id: E04-04
124
+ title: 먹지 않는 사람, 야위어 가는 나
125
+ subtitle: ''
126
+ tags:
127
+ - '#장소/만찬홀'
128
+ - '#인물/카르밀라'
129
+ - '#인물/로라'
130
+ - '#인물/마담'
131
+ - '#인물/아버지'
132
+ - '#시점/1인칭'
133
+ - '#유형/단서발견'
134
+ - '#정서/불안'
135
+ - '#캐논/고정·분기'
136
+ - '#복선/심기:FS-혈색이전'
137
+ - '#복선/심기:FS-쇠약'
138
+ - '#복선/심기:FS-어른합리주의'
139
+ - '#앎/유저'
140
+ - '#상태/초안'
141
+ status: 초안
142
+ canon: true
143
+ next: E04-05
144
+ next_options: []
145
+ axis: null
146
+ frailty: false
147
+ narration:
148
+ - type: prose
149
+ text: '식사 또한 기이했다. 그녀는 우리와 한 식탁에 앉으면서도 거의 아무것도 입에 대지 않았다. 빵 한 조각을 손끝으로 잘게 부수거나, 포도주 잔을 입가에 댔다 떼는 시늉만
150
+ 할 뿐이었다. 그러면서도 두 뺨에는 늘 건강한 홍조가 돌았고, 살결은 윤기가 흘렀다. 마담은 저렇게 안 먹고서 어찌 저토록 혈색이 좋은지 모르겠다며 고개를 갸웃거렸다.
151
+
152
+ 도리어 함께 지내는 동안 야위어 가는 것은 나였다. 언제부턴가 나는 아침마다 까닭 모를 나른함에 짓눌렸고, 가슴 한복판이 차갑게 저려 오는 날이 잦아졌다. 그러나 그때만 해도
153
+ 나는 그 변화를, 새로운 벗과 밤늦도록 어울린 탓이려니 가볍게 넘겼다.'
154
+ choices:
155
+ - label: 그냥 넘긴다
156
+ modifiers: &id002 []
157
+ axis: neutral
158
+ result: (본문대로 진행.)
159
+ next: null
160
+ - label: 아버지께 카르밀라의 기이함을 말씀드린다
161
+ modifiers: *id002
162
+ axis: doubt
163
+ result: 나는 아버지께 그녀의 기이한 습관들을 말씀드려 보았다. 아버지는 다정하게 웃으셨다. "그 아이도 객지에서 외로운 게지. 늦잠이야 젊은 사람 일이고. …너무 깊이
164
+ 생각 말거라, 로라." 나는 입을 다물었다. 말해도 소용없다는 것을, 그날 처음 배웠다.
165
+ next: null
166
+ r_card_refs: []
167
+ note: '**[엔진C 안전망 1차 — 실패]** 물리 증거가 없는 단계의 알림은 아버지의 합리주의로 *무력화*된다(**FS-어른합리주의 심기**). 이 실패가 "말해도 꿈으로
168
+ 치부된다"를 학습시켜 6화의 *숨김* 경향을 정당화 → 단계적 안전망 설계(상세: `LORE-안전망규칙`). 의심은 +로 누적되나 보호는 작동 안 함. **FS-혈색이전 심기**(가해자는
169
+ 좋아지고 피해자는 시든다 — 헌법 2-1) + **FS-쇠약 심기**(6화 두 점·도달점으로 이어지는 쇠약의 첫 신호). 두 몸의 *반비례*를 나란히 — 흡혈의 시각적 증거.
170
+ 로라는 "밤늦게 논 탓"으로 합리화. 〔고정〕쇠약 시작.'
171
+ direction: 식탁 투샷 — 음식을 만지작만 하는 카르밀라(윤기 도는 혈색) vs 점점 창백해지는 로라. 마담의 갸웃거림. "가슴이 차갑게 저려 온다"에서 로라 가슴께로 옮겨가는
172
+ 서늘한 한 박자.
173
+ image: 만찬홀 식탁, 손도 안 댄 카르밀라의 접시와 홍조 띤 얼굴 / 그 맞은편 핏기 가시기 시작한 로라. 마담의 의아한 표정. 따뜻한 촛불빛에 드러나는 두 혈색의 대비. 우아함
174
+ 속 불길.
175
+ - id: E04-05
176
+ title: 기도라는 말
177
+ subtitle: 신앙을 견디지 못하는
178
+ tags:
179
+ - '#장소/예배당'
180
+ - '#인물/카르밀라'
181
+ - '#인물/마드모아젤'
182
+ - '#인물/로라'
183
+ - '#시점/1인칭'
184
+ - '#유형/단서발견'
185
+ - '#정서/불안'
186
+ - '#캐논/고정'
187
+ - '#복선/심기:FS-성물거부'
188
+ - '#앎/유저'
189
+ - '#상태/초안'
190
+ status: 초안
191
+ canon: true
192
+ next: E04-06
193
+ next_options: []
194
+ axis: null
195
+ frailty: false
196
+ narration:
197
+ - type: prose
198
+ text: '신앙에 관한 그녀의 태도는 더욱 나를 당황하게 했다. 카르밀라는 기도라는 말만 나와도 노골적으로 불편한 기색을 드러냈다. 다 함께 기도를 올릴 때면 입을 꾹 다문
199
+ 채 먼 곳을 응시했고, 그 얼굴에는 견디기 힘든 고통을 참는 듯한 빛이 스쳤다. 예배당에 가자는 말에는 두통을 핑계로 한사코 따라나서지 않았으며, 누군가 신의 이름을 입에
200
+ 올리면 미묘하게 몸을 움츠렸다.
201
+
202
+ 한번은 마드모아젤이 성가를 흥얼거리자, 카르밀라가 신경질적으로 손을 내저으며 제발 그 노래를 멈춰 달라고 날카롭게 외친 적도 있었다.'
203
+ choices: []
204
+ r_card_refs:
205
+ - R-약점반응
206
+ note: '**FS-성물거부 심기**(헌법 2-4 성물·기도·성가 거부 반응). ''강'' 단서지만 종교를 *불편해하는 별난 취향*으로 위장되어 로라는 못 알아챔. 성가 거부는
207
+ 4화 후반 장례 행렬(E04-07)의 격발을 예고하는 선심기. 유저는 약점임을 안다. **의외플레이:** 유저가 성물·기도·성가·마늘꽃을 *능동 사용*하면 → `R-약점반응`(견디기
208
+ 힘들어함 → "두통"으로 위장 회피 · 마늘꽃은 일시 안전망 후 슬며시 치움 · 확인은 되나 확정은 안 됨).'
209
+ direction: 가족 기도 장면 — 모두 눈 감았는데 홀로 먼 곳을 응시하며 고통을 참는 카르밀라의 얼굴(클로즈업). 성가에 신경질적으로 손을 내젓는 급반응. 평온한 신앙의 시간에
210
+ 그녀만 이질적.
211
+ image: 촛불 켜진 작은 예배당 혹은 기도 드리는 거실. 고개 숙인 식구들 사이, 홀로 굳은 얼굴로 먼 곳을 보는 카르밀라(고통을 참는 빛). 따뜻한 경건함 속 그녀 한 사람의
212
+ 냉기. 앰버에 그녀만 그늘.
213
+ - id: E04-06
214
+ title: 모두가 죽어 간다는 게
215
+ subtitle: 죽음에의 과민
216
+ tags:
217
+ - '#장소/만찬홀'
218
+ - '#인물/카르밀라'
219
+ - '#인물/로라'
220
+ - '#시점/1인칭'
221
+ - '#연출/대사중앙'
222
+ - '#정서/공포'
223
+ - '#유형/단서발견'
224
+ - '#캐논/고정'
225
+ - '#복선/심기:FS-괴질'
226
+ - '#복선/회수:FS-6세의밤'
227
+ - '#앎/유저'
228
+ - '#상태/초안'
229
+ status: 초안
230
+ canon: true
231
+ next: E04-07
232
+ next_options: []
233
+ axis: null
234
+ frailty: false
235
+ narration:
236
+ - type: prose
237
+ text: '어느 날 우리는 흉흉한 소문을 전해 들었다. 인근 여러 마을에서 젊은 처녀들이 잇따라 알 수 없는 병에 걸려, 처음에는 가위눌리는 악몽을 꾸고, 가슴께에 차가운 통증을
238
+ 호소하며, 날이 갈수록 핏기를 잃고 쇠약해지다 끝내 목숨을 잃는다는 것이었다.
239
+
240
+ 그 이야기를 듣는 순간, 나는 까닭 모르게 어린 시절의 그 밤을 떠올리고 몸서리쳤다. 가슴께의 차가운 통증, 가위눌리는 악몽 — 여섯 살의 그날 겪은 것과, 그리고 요즈음
241
+ 나를 괴롭히는 나른함과도 너무 닮아 있었다. 그러나 나는 애써 그 불길한 연상을 마음 밖으로 밀어냈다.'
242
+ choices: []
243
+ r_card_refs: []
244
+ note: '**FS-괴질 회수**(2화 베르타 "알 수 없는 병"의 정체 윤곽) + **FS-6세의밤·쇠약** 연결의 결절점. 마을 처녀 증상 = 흡혈의 임상 묘사. 로라가 *스스로의
245
+ 증상과 겹쳐 보면서도* 밀어낸다 — 의심 검열의 절정(④b). **이중채널[엔진A]:** *로라*는 "불길한 연상"으로 밀어내고 / *유저*는 마을 처녀=흡혈 피해자=로라의 미래임을
246
+ 안다(T4 운명). 본문 톤은 로라(천진) 유지.'
247
+ direction: 흉흉한 소문이 보이스오버로 깔리는 동안, 로라의 표정이 점점 굳는다. "가슴께의 차가운 통증"에서 로라가 무심코 제 가슴에 손을 얹는 인서트. 깨달음의 문턱 —
248
+ 그러나 고개를 젓는다.
249
+ image: 응접실, 소문을 듣는 로라의 굳은 얼굴, 무심코 가슴께로 향��는 손. 곁의 카르밀라는 표정을 감춘다. 서늘한 청회색이 따뜻한 톤을 침식. 닿을 듯 닿지 않는 깨달음.
250
+ - id: E04-07
251
+ title: 장례 행렬, 그리고 비명
252
+ subtitle: 가면이 벗겨지다
253
+ tags:
254
+ - '#장소/만찬홀'
255
+ - '#인물/카르밀라'
256
+ - '#인물/로라'
257
+ - '#시점/1인칭'
258
+ - '#연출/대사중앙'
259
+ - '#정서/공포'
260
+ - '#관계단계/공포'
261
+ - '#캐논/고정·분기'
262
+ - '#메커니즘/환산출력'
263
+ - '#복선/회수:FS-성물거부'
264
+ - '#복선/심기:FS-죽음혐오'
265
+ - '#앎/유저'
266
+ - '#앎/카르밀라🔒'
267
+ - '#상태/초안'
268
+ status: 초안
269
+ canon: true
270
+ next: E04-08
271
+ next_options: []
272
+ axis: null
273
+ frailty: false
274
+ narration:
275
+ - type: prose
276
+ text: '그러던 어느 오후, 창밖 산길로 한 무리의 장례 행렬이 지나갔다. 그 괴질로 또 한 처녀가 세상을 떠난 것이었다. 사람들은 관을 메고 구슬픈 성가를 부르며 천천히
277
+ 걸어갔다. 나는 가엾은 마음에 자리에서 일어나 함께 성가를 따라 흥얼거렸다.
278
+
279
+ 그 가락이 채 몇 소절 이어지기도 전, 카르밀라가 돌연 두 손으로 귀를 틀어막으며 벌떡 일어섰다. 얼굴은 분노로 일그러졌고, 온몸이 사시나무처럼 떨렸다.'
280
+ - type: dialogue_center
281
+ text: '"그만! 그 끔찍한 소리를 멈춰요! 어쩌면 그렇게들 죽음을 떠받드는지. 모두가 죽어 가는 게 무슨 대단한 일이라고."'
282
+ - type: prose
283
+ text: 그녀는 거의 비명에 가까운 목소리로 외쳤다. 나는 너무 놀라 입을 다물었다.
284
+ choices:
285
+ - label: 어깨를 감싸 달랜다
286
+ modifiers: &id003 []
287
+ axis: trust
288
+ result: 내가 어깨를 감싸자 그녀는 떨림을 멈추고 내 손을 잡았다. "…너만은. 너만은 그 행렬 속에 두지 않을 거야." 위로 같았으나, 그 말은 서늘했다.
289
+ next: null
290
+ - label: 가만히 지켜본다
291
+ modifiers: *id003
292
+ axis: neutral
293
+ result: 나는 그저 그녀가 진정되기를 기다렸다. 이윽고 그녀는 미안한 듯 고개를 숙였다. 그 얼굴에는 단순한 두려움을 넘어선, 오래된 절망이 있었다.
294
+ next: null
295
+ - label: 무슨 일이냐 추궁한다
296
+ modifiers: *id003
297
+ axis: doubt
298
+ result: '"…당신, 대체 뭐예요?" 내가 묻자, 그녀의 분노가 한순간 *멎었다.* 그리고 그 자리에 더 깊은 무언가가 들어찼다 — 버림받을 것을 아는 자의 두려움. "…너도,
299
+ 그렇게 보는구나." 그녀는 천천히, 슬프게 웃었다. "다들 결국엔 그래. 결국엔 모두가." 정체는 끝내 말하지 않았다.'
300
+ next: null
301
+ r_card_refs:
302
+ - R-회피사다리
303
+ note: 4화의 첫 **가면 붕괴**. **[엔진B 3종 변주]** 달램=신뢰+(집착의 다정)/지켜봄=중립(오래된 절망)/추궁=의심+(버림받음 두려움+슬픈 미소, 🔒 발설 금지
304
+ — R-회피사다리 3단계). 의심+ 누적 시 ①처단 온램프(엔진C) 활성. 죄책+서늘함 동시. — 성가(성물거부 회수)+죽음(죽음혐오 심기)이 동시에 격발. 관계단계 한순간 **공포**로(곧
305
+ 09에서 다시 다정으로 복원). 🔒 직접 발설은 없으나 본성이 *행동*으로 새어 나옴. T4(자기 존재가 곧 죽음의 거울 — 헌법 2-5)의 누설. 대표 대사 중앙 단독.
306
+ direction: 따뜻한 연민(성가 따라 부르는 로라) → 돌연한 폭발. 귀를 틀어막고 일어서는 카르밀라, 분노로 일그러진 얼굴(평소 우아함의 정반대). 대표 대사 비명처럼. 창밖
307
+ 행렬의 성가와 그녀의 절규가 충돌. 충격의 정적.
308
+ image: 창밖 산길의 검은 장례 행렬·관·우는 부모. 창 안쪽, 귀를 막고 일그러진 얼굴로 떠는 카르밀라. 로라의 놀란 얼굴. 바깥의 잿빛 행렬과 안쪽의 격정. 우아함이 무너진
309
+ 순간.
310
+ - id: E04-08
311
+ title: 얼음장 같은 손
312
+ subtitle: 오래된 절망
313
+ tags:
314
+ - '#장소/만찬홀'
315
+ - '#인물/카르밀라'
316
+ - '#인물/로라'
317
+ - '#시점/1인칭'
318
+ - '#연출/대사중앙'
319
+ - '#정서/연민'
320
+ - '#관계단계/공포'
321
+ - '#캐논/고정'
322
+ - '#복선/회수:FS-차가운손'
323
+ - '#복선/심기:FS-죽음과다툼'
324
+ - '#인정/깊은이해'
325
+ - '#앎/유저'
326
+ - '#앎/카르밀라🔒'
327
+ - '#상태/초안'
328
+ status: 초안
329
+ canon: true
330
+ next: E04-09
331
+ next_options: []
332
+ axis: null
333
+ frailty: false
334
+ narration:
335
+ - type: prose
336
+ text: 행렬이 시야에서 사라지자 카르밀라는 비로소 진정하기 시작했다. 그제야 미안한 듯 내 손을 잡으며 힘없이 중얼거렸다.
337
+ - type: dialogue_center
338
+ text: '"미안해, 로라. 나는… 죽음이라는 것이 너무도 끔찍하단다. 모두가 끝내는 흙으로 돌아간다는 게, 나는 도무지 견딜 수가 없어."'
339
+ - type: prose
340
+ text: 그 목소리에는 단순한 두려움을 넘어선, 깊고 오래된 절망이 서려 있었다. 마치 그녀 자신이 죽음과 아주 오랜 세월 다투어 온 사람처럼. 나는 그녀를 달래려 손을 잡았으나,
341
+ 그 손은 얼음장처럼 차가웠다. 한낮의 따스한 거실에서, 어떻게 사람의 손이 이토록 차가울 수 있는지 나는 알 수 없었다.
342
+ choices: []
343
+ r_card_refs: []
344
+ note: 폭발 직후의 **연민** — 분노가 슬픔으로 가라앉으며 유저의 공감이 깊어진다(④b "나라도 빠졌겠다"). **FS-차가운손 회수**(3화 선심기 → 여기서 "얼음장"으로
345
+ 의미 증폭) + **FS-죽음과다툼 심기**(150년 산 자의 진실, T4). "죽음과 오랜 세월 다투어 온 사람" = 유저가 읽는 이중 채널(로라는 비유로, 유저는 사실로).
346
+ 🔒 자기 과거는 일반론·은유로만.
347
+ direction: 격정이 식고 힘없이 가라앉는 카르밀라. 대표 대사 낮고 떨리게, 중앙. 로라가 잡은 손의 클로즈업 — 얼음장 같은 차가움(촉각 강조). 한낮의 따뜻한 빛과 그
348
+ 손의 냉기가 모순으로 충돌.
349
+ image: 따뜻한 오후 거실, 힘없이 고개 숙인 카르밀라의 얼굴에 어린 오래된 절망. 맞잡은 두 손 — 로라의 온기와 카르밀라의 창백한 냉기. 앰버 빛 속 그녀만의 서늘함. 연민과
350
+ 불가해.
351
+ - id: E04-09
352
+ title: 약장수와 송곳니
353
+ subtitle: 능청스러운 폭로
354
+ tags:
355
+ - '#장소/마을'
356
+ - '#인물/약장수'
357
+ - '#인물/카르밀라'
358
+ - '#인물/로라'
359
+ - '#시점/1인칭'
360
+ - '#연출/대사중앙'
361
+ - '#정서/불안'
362
+ - '#유형/단서발견'
363
+ - '#캐논/고정'
364
+ - '#복선/심기:FS-송곳니'
365
+ - '#복선/회수:FS-짐승본성'
366
+ - '#메커니즘/능동발견'
367
+ - '#앎/유저'
368
+ - '#상태/초안'
369
+ status: 초안
370
+ canon: true
371
+ next: E04-10
372
+ next_options: []
373
+ axis: null
374
+ frailty: false
375
+ narration:
376
+ - type: prose
377
+ text: '그 무렵 성 아래로 떠돌이 약장수 하나가 찾아왔다. 등이 굽은 곱사등이로, 작은 개와 함께 춤추고 노래하며 우리를 즐겁게 했다. 그런데 그 작은 개는 카르밀라가 창가에
378
+ 모습을 드러내자, 돌연 사납게 짖어 대며 꼬리를 말고 주인 뒤로 숨어 버렸다. 아무리 어르고 달래도 개는 카르밀라 쪽을 향해 으르렁거리기만 했다.
379
+
380
+ 약장수가 문득 고개를 들어 카르밀라를 올려다보더니, 능청스럽게 웃으며 말했다.'
381
+ - type: character_dialogue
382
+ speaker: 약장수
383
+ text: 아름다운 아가씨, 보아하니 유난히 날카롭고 긴 송곳니가 한 쌍 있으시군요. 꼭 어린 물고기를 사냥하는 작은 짐승의 이빨 같습니다그려. 그 뾰족한 이를 둥글게 다듬어
384
+ 드릴까요?
385
+ anchor: true
386
+ - type: prose
387
+ text: '순간 카르밀라의 얼굴이 싸늘하게 굳었다. 그녀는 한마디 대꾸도 없이 휙 돌아서더니, 그런 무례한 자에게 자선을 베풀어선 안 된다며 차갑게 내뱉고는 자리를 떠 버렸다.
388
+
389
+ 떠나기 전, 약장수는 작은 부적 하나를 아버지께 내밀었다. 낡은 헝겊에 알 수 없는 글자가 수놓인 물건이었다. "밤에 흉한 꿈을 꾸는 아가씨에게, 머리맡에 두면 잡것이 얼씬
390
+ 못 합니다요." 아버지는 웃으며 몇 푼을 쥐여 주고 그것을 받아 두셨다. 미신이라 여기면서도, 요즘 부쩍 야윈 내 얼굴이 마음에 걸리셨던 모양이다.'
391
+ choices:
392
+ - label: 부적을 머리맡에 둔다
393
+ modifiers: &id004
394
+ - 능동발견·약점
395
+ axis: doubt
396
+ result: 나는 반신반의하며 그 부적을 머리맡에 두었다. 그러자 이상하게도, 그 며칠 밤은 악몽이 오지 않았다. 오랜만에 깊이 잠든 아침이었다. 그런데 나흘째 되던 날, 머리맡의
397
+ 부적은 온데간데없이 사라져 있었다. 카르밀라에게 물으니 그녀는 영문 모를 얼굴로 고개를 갸웃할 뿐이었다. "…글쎄, 하녀가 치웠으려나." 나는 더 캐묻지 못했다.
398
+ next: null
399
+ - label: 흘려 둔다
400
+ modifiers: *id004
401
+ axis: neutral
402
+ result: 나는 약장수의 무례한 농담을 대수롭지 않게 흘려보냈다. 그 뾰족한 송곳니를, 나는 끝내 눈여겨보지 않았다.
403
+ next: null
404
+ r_card_refs:
405
+ - R-약점반응
406
+ note: '**FS-송곳니 심기** + **FS-짐승본성 회수**(개의 본능적 적대 — 헌법 2-4). 약장수 = 극적 아이러니의 광대(진실을 농담으로 던지는 외부자). **이중채널[엔진A]:**
407
+ *로라*는 "짓궂은 농담"으로 흘리고 / *유저*는 송곳니가 진짜임을 안다. **[부적 자산·R-약점반응]** 부적 = *일시 안전망*(악몽 멎음) → 카르밀라가 슬며시 치움(고립전술과
408
+ 충돌, 원작 정합, ①처단 경로 보조 단서). 확인은 되나 확정은 안 되는 회색 정보(보이지 않는 게임). 상세: `R-약점반응.md`. 〔능동발견〕유저가 이후 카르밀라의 송곳니를
409
+ *눈여겨볼지* 선택(E04-09B 연결). ''중'' 단서.'
410
+ direction: 익살���러운 광대극(춤추는 개)에서 돌연 으르렁대는 개 — 분위기 반전. 약장수의 능청스러운 송곳니 발언에 카르밀라의 얼굴이 *싸늘하게* 굳는 클로즈업. 휙 돌아서
411
+ 떠나는 차가운 뒷모습. 웃음과 한기의 교차.
412
+ image: 성 아래 마당, 곱사등이 약장수와 으르렁대며 숨는 작은 개. 창가의 카르밀라, 송곳니 언급에 싸늘히 굳은 얼굴. 구경하는 로라. 익살스러운 햇빛 속 그녀만의 냉기. 농담에
413
+ 감춰진 진실.
414
+ - id: E04-10
415
+ title: 복도의 흰 그림자
416
+ subtitle: 사람의 것이 아닌 움직임
417
+ tags:
418
+ - '#장소/복도'
419
+ - '#인물/카르밀라'
420
+ - '#인물/로라'
421
+ - '#시점/1인칭'
422
+ - '#연출/감각몰입'
423
+ - '#정서/공포'
424
+ - '#관계단계/공포'
425
+ - '#캐논/고정·분기'
426
+ - '#축/의심+'
427
+ - '#메커니즘/능동발견'
428
+ - '#복선/회수:FS-송곳니'
429
+ - '#복선/회수:FS-짐승본성'
430
+ - '#복선/회수:FS-6세의밤'
431
+ - '#복선/심기:FS-안개화'
432
+ - '#앎/유저'
433
+ - '#앎/카르밀라🔒'
434
+ - '#상태/초안'
435
+ status: 초안
436
+ canon: true
437
+ next: E05
438
+ next_options: []
439
+ axis: doubt
440
+ frailty: false
441
+ narration:
442
+ - type: prose
443
+ text: 그날 밤도 카르밀라는 격정적으로 나를 끌어안으며, 눈물 어린 눈으로 속삭였다.
444
+ - type: character_dialogue
445
+ speaker: 카르밀라
446
+ text: 로라, 너만은 절대로 그 행렬 속에 들어가게 하지 않을 거야. 너는 영원히 나와 함께 살 거란다. 죽음 따위가 너를 데려가도록 두지 않을 거야.
447
+ anchor: true
448
+ - type: prose
449
+ text: '나는 그 말이 위로인지 협박인지 분간할 수 없었다. 그날 밤늦게, 물을 마시러 등불도 없이 어두운 복도를 더듬어 걷고 있을 때였다. 복도 저편 끝, 달빛 드는 창가에서
450
+ 흰 그림자 하나가 소리 없이 움직였다. 그림자는 천천히, 발소리 하나 없이 미끄러지듯 복도를 가로질러 카르밀라의 방문 안으로 스며들 듯 사라졌다.
451
+
452
+ 분명 카르밀라였다. 그러나 그 움직임에는 사람의 것이라고는 믿기지 않는 무언가가 있었다. 어린 시절 그 밤, 침대 밑으로 미끄러져 사라지던 그 여인의 움직임이 다시금 생생하게
453
+ 떠올랐다.'
454
+ choices:
455
+ - label: 방으로 돌아가 문을 잠근다
456
+ modifiers: &id005
457
+ - 이탈
458
+ axis: neutral
459
+ result: 나는 가까스로 발을 떼어 방으로 돌아와 문을 단단히 걸어 잠갔다. 그러나 그날 밤 내내, 나는 한숨도 잠을 이루지 못했다.
460
+ next: null
461
+ - label: 그림자를 쫓아 그녀의 방문을 열어 본다
462
+ modifiers: *id005
463
+ axis: null
464
+ result: '나는 무언가에 홀린 듯, 그림자가 스며든 그녀의 방문 앞에 섰다. 문은 소리 없이 열렸다. 방 안에는 달빛만 고요히 고여 있었다. 침대는 흐트러짐 하나 없이 비어
465
+ 있었고, 창은 안에서 잠겨 있었다. 그런데 베개 위에는 방금까지 누군가 누웠던 듯한 옅은 자국과 함께, 시든 꽃과 젖은 흙을 섞은 희미한 냄새가 떠돌았다. 등 뒤에서 다정한
466
+ 목소리가 들려온 것은 바로 그 순간이었다.
467
+
468
+ > 카르밀라: "…내 방에서 무얼 찾니, 로라?"
469
+
470
+ 언제 들어왔는지, 그녀가 문가에 서 있었다. 웃고 있었다. 그러나 그 웃음은 눈까지 닿지 못했다. 나는 얼버무리며 물러났고, 그날 밤 내내 한숨도 잠들지 못했다.'
471
+ next: null
472
+ r_card_refs:
473
+ - R-회피사다리
474
+ note: 4화의 마감 = **단서의 누적이 임계에 닿는 밤.** **[이탈 분기 — 방문 열기]** 원작은 '문 잠금' 단일이나, 유저가 *그림자를 쫓는* 일탈을 택하면 빈 방·잠긴
475
+ 창·무덤 냄새를 목격(의심+ 단서). 🔒 정체는 확정되지 않는다 — 카르밀라는 *경계*까지만(물리적 돌변 없음), 안개화로 이미 방을 넘나든 뒤(헌법 2-3). FS-무덤냄새(E06-07)·안개화
476
+ 선행 정합. R-회피사다리 결의 무마. "행렬 속에 들어가게 하지 않겠다 / 영원히 함께" = 위로↔협박의 양가성(③b 직설의 완화된 변주). **FS-안개화 심기**("스며들
477
+ 듯 사라짐" — 헌법 2-3) + **FS-짐승본성·송곳니·6세의밤 회수**. 6세의 밤 움직임과 *겹쳐 보는* 순간 — 깨달음에 가장 가까이. 방문을 잠그는 것 = 최초의 방어
478
+ 행동(의심의 첫 신체화). 〔고정〕쇠약·의심 누적.
479
+ direction: 격정의 속삭임(따뜻하나 서늘) → 한밤 어두운 복도의 감각몰입(등불 없는 1인칭, 더듬는 손). 복도 끝 흰 그림자가 *발소리 없이* 미끄러진다 → 방문으로 스며들
480
+ 듯 사라짐(안개화 암시, 모션 블러). 6세의 밤 컷이 짧게 오버랩. 문 잠그는 소리, 잠 못 드는 정적.
481
+ image: 달빛 비치는 긴 복도, 저편 끝에서 소리 없이 미끄러지는 흰옷의 형체(발이 바닥에 닿지 않는 듯). 어둠 속 로라의 얼어붙은 얼굴. 미드나잇블루·은빛 달, 잉크블랙 그림자.
482
+ 6세의 밤과 겹치는 기시감. 공포의 임계.
content/beatcards/E05.yaml ADDED
@@ -0,0 +1,431 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E05
3
+ title: '제5화: 초상화 속의 얼굴'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E05/E05_비트카드.md
5
+ cards:
6
+ - id: E05-01
7
+ title: 되살아나는 옛 얼굴들
8
+ subtitle: 초상화 복원
9
+ tags:
10
+ - '#장소/화랑'
11
+ - '#인물/로라'
12
+ - '#인물/아버지'
13
+ - '#시점/1인칭'
14
+ - '#정서/불안'
15
+ - '#유형/정보전달'
16
+ - '#캐논/고정'
17
+ - '#복선/심기:FS-혈색이전'
18
+ - '#앎/유저'
19
+ - '#상태/초안'
20
+ status: 초안
21
+ canon: true
22
+ next: E05-02
23
+ next_options: []
24
+ axis: null
25
+ frailty: false
26
+ narration:
27
+ - type: prose
28
+ text: '그해 가을, 아버지는 오래 미루어 온 일을 마무리하기로 하셨다. 성의 화랑에 보관된 낡은 초상화들을 복원하는 일이었다. 대부분 어머니의 가문, 곧 카른슈타인 가문에서
29
+ 대대로 전해 내려온 것들이었다.
30
+
31
+ 오랜 세월 먼지에 뒤덮여 형체조차 알아보기 힘들었으나, 솜씨 좋은 복원가가 한 점씩 세월의 때를 벗겨 내자 잠들어 있던 옛 얼굴들이 하나둘 어둠 속에서 되살아났다. 검댕을
32
+ 걷어 내고 변색된 칠을 손보면, 빛바랜 눈동자가 다시 반짝이고 잿빛 입술에 혈색이 돌았다. 마치 죽은 이가 다시 숨을 쉬는 듯하여, 나는 어쩐지 마음이 서늘해지곤 했다.'
33
+ choices: []
34
+ r_card_refs: []
35
+ note: 5화의 무대 설치. "잿빛 입술에 혈색이 돌아오는" 복원 = 죽은 것이 되살아나는 모티프(흡혈귀·미르칼라의 은유적 예고). **FS-혈색이전**의 시각적 메아리(혈색=생명).
36
+ 〔고정〕초상화 복원·화랑.
37
+ direction: 복원가의 솔이 검댕을 걷어 내자 눈동자가 반짝이는 클로즈업(죽은 것이 깨어나는 인상). 서늘한 고요. 한 점씩 되살아나는 옛 얼굴들의 몽타주. 먼지·촛불의 입자감.
38
+ image: 높은 천장의 서늘한 화랑, 복원 중인 낡은 초상화들. 솔 아래 되살아나는 눈동자·입술의 혈색. 어슴푸레한 빛 속 늘어선 옛 얼굴들. 잉크블랙·앤티크골드 액자, 먼지 낀
39
+ 공기. 깨어나는 망령들.
40
+ - id: E05-02
41
+ title: 핏줄의 얼굴들
42
+ subtitle: 조상들 사이에서
43
+ tags:
44
+ - '#장소/화랑'
45
+ - '#인물/로라'
46
+ - '#인물/카르밀라'
47
+ - '#시점/1인칭'
48
+ - '#정서/그리움'
49
+ - '#관계단계/밀월'
50
+ - '#캐논/고정'
51
+ - '#복선/회수:FS-혈통'
52
+ - '#앎/유저'
53
+ - '#상태/초안'
54
+ status: 초안
55
+ canon: true
56
+ next: E05-03
57
+ next_options: []
58
+ axis: null
59
+ frailty: false
60
+ narration:
61
+ - type: prose
62
+ text: '복원이 끝난 그림들이 다시 걸리던 날, 카르밀라와 나는 함께 구경하러 갔다. 길게 늘어선 초상화들이 어슴푸레한 빛 속에서 우리를 내려다보았다. 갑옷을 두른 기사,
63
+ 사냥매를 손에 얹은 귀공자, 레이스 깃을 두른 위엄 있는 부인들. 모두가 오래전 세상을 떠난, 내 핏줄의 먼 조상들이었다.
64
+
65
+ 그들의 핏줄이 흘러 흘러 내게 닿았다고 생각하니, 그 낯선 얼굴들이 한결 가깝게 느껴졌다. 나는 그 얼굴들 속에서 혹 어머니의 흔적이나 내 모습과 닮은 구석을 찾을 수 있을까
66
+ 하여, 한 점 한 점 찬찬히 들여다보았다.'
67
+ choices: []
68
+ r_card_refs: []
69
+ note: '**FS-혈통 회수의 정지작업** — 로라가 *제 핏줄을 더듬는* 정서(어머니의 빈자리·④b)가 곧 미르칼라 발견의 무게를 키운다. 카르밀라가 그 옆에 *같은 핏줄의
70
+ 망령으로* 서 있다는 극적 아이러니(유저만 앎). 〔고정〕로라=카른슈타인 핏줄.'
71
+ direction: 나란히 걸으며 초상화를 올려다보는 두 사람. 어머니의 흔적을 찾는 로라의 간절한 시선. 카르밀라는 한 박자 뒤에서 그림들을 *아는 듯한* 눈으로 바라본다(유저용
72
+ 윙크). 서늘하고 고요한 화랑.
73
+ image: 늘어선 조상 초상화 아래를 걷는 로라와 카르밀라. 기사·귀공자·귀부인의 옛 얼굴들이 내려다본다. 그림을 더듬는 로라, 그 곁의 카르밀라. 어슴푸레한 금빛·잿빛. 핏줄의
74
+ 무게와 기시감.
75
+ - id: E05-03
76
+ title: 미르칼라, 1698
77
+ subtitle: 똑같은 얼굴
78
+ tags:
79
+ - '#장소/화랑'
80
+ - '#인물/로라'
81
+ - '#인물/카르밀라'
82
+ - '#시점/1인칭'
83
+ - '#연출/대사중앙'
84
+ - '#정서/공포'
85
+ - '#유형/단서발견'
86
+ - '#관계단계/밀월'
87
+ - '#캐논/고정'
88
+ - '#결말/공통'
89
+ - '#복선/회수:FS-초상화'
90
+ - '#메커니즘/능동발견'
91
+ - '#앎/유저'
92
+ - '#앎/카르밀라🔒'
93
+ - '#상태/초안'
94
+ status: 초안
95
+ canon: true
96
+ next: E05-04
97
+ next_options: []
98
+ axis: null
99
+ frailty: false
100
+ narration:
101
+ - type: prose
102
+ text: '화랑 끝, 다른 그림들보다 조금 떨어진 깊은 그늘 속에 한 점이 걸려 있었다. 가까이 다가서기 전에는 형체조차 또렷하지 않았다. 한 젊은 여인의 초상이었다. 액자
103
+ 아래 황동판에는 단정한 글씨로 새겨져 있었다. **''미르칼라, 카른슈타인 백작부인, 1698년.''**
104
+
105
+ 그러나 내가 숨을 멈춘 까닭은 그 오래된 연도 때문이 아니었다. 그림 속 여인은 — 짙은 머리칼도, 깊고 다정한 두 눈도, 입가의 나른한 미소도, 가녀린 목선마저도 — 지금
106
+ 내 곁에 선 카르밀라와 한 치의 어긋남도 없이 똑같았다. 오른쪽 뺨의 작은 점까지, 고개를 기울인 각도까지. 나는 두 눈을 의심하며 그림과 카르밀라를 번갈아 바라보았다. 우연이라
107
+ 하기에는 너무도 완벽한 일치였다.'
108
+ choices:
109
+ - label: 황동판을 더 가까이 들여다본다
110
+ modifiers: &id001
111
+ - 능동발견
112
+ axis: doubt
113
+ result: 나는 촛불을 가까이 대어 황동판을 찬찬히 들여다보았다. 이름 아래, 본디 생몰 연대가 새겨졌을 자리가 있었다. 그런데 그 자리는 누군가 날카로운 것으로 긁어낸 듯,
114
+ 흐릿한 흠집만 남아 있었다. 마치 이 부인이 언제 죽었는지를 — 혹은 죽지 않았음을 — 감추려는 것처럼. 나는 까닭 모를 한기에 촛불을 거두었다. (5화 후반 가계도의 '지워진
115
+ 이름'으로 이어질 단서 한 조각.)
116
+ next: null
117
+ - label: 이름만 읽고 지나친다
118
+ modifiers: *id001
119
+ axis: neutral
120
+ result: 나는 이름과 연도만 눈에 담고 물러섰다. 그 아래 무엇이 있었는지는, 끝내 살피지 못했다.
121
+ next: null
122
+ r_card_refs:
123
+ - R-회피사다리
124
+ note: '**FS-초상화 회수 = 5화 클라이맥스, 도입 아크 최대 떡밥.** T3(동일인)이 *시각적으로* 확정되는 순간(헌법: 카르밀라=미르칼라=1698 초상화=하나의 존재).
125
+ 애너그램(미르칼라↔카르밀라)을 유저는 눈치챌 수 있게. 🔒 카르밀라는 부정도 긍정도 않음. 〔고정〕초상화 존재·일치 / 〔능동발견〕황동판 이름을 *유저가 읽어* 회수(④b JIT
126
+ — 1화에 깐 혈통이 여기서 제값). **[능동발견 보상 — 작성됨]** 자세히 들여다보면 *긁혀 지워진 생몰 연대*를 발견(FS-지워진이름 선심기 → E05-08에서 가계도
127
+ ''저주받은''으로 본회수). 안 보면 흘림 = 비대칭 보상. 대사중앙: 황동판 글씨 강조. **의외플레이:** 유저가 "당신이 미르칼라죠" 직격 시 → `R-회피사다리` **2~3단계**(부정도
128
+ 긍정도 않는 은유 회피, E05-04 "아름다운 이름이네"와 정합).'
129
+ direction: 그늘 속 그림으로 다가가는 1인칭, 황동판 '미르칼라… 1698'이 또렷해지는 클로즈업(능동발견 — 유저가 읽는 인터랙션). 그림 속 얼굴 ↔ 곁의 카르밀라 **매치컷**(완전
130
+ 일치). 숨 멎는 정적. 뺨의 점까지 같음을 인서트로.
131
+ image: 화랑 끝 그늘 속 1698년 초상화 — 카르밀라와 똑같은 얼굴(17세기 말 바로크 의상·올림머리). 황동판 'Mircalla, Countess Karnstein, 1698'.
132
+ 그 앞에 나란히 선 현재의 카르밀라(시대만 다른 같은 얼굴). 앤티크골드·미드나잇블루. 완벽한 일치의 전율.
133
+ - id: E05-04
134
+ title: 미르칼라… 아름다운 이름
135
+ subtitle: 옛 자신과의 재회
136
+ tags:
137
+ - '#장소/화랑'
138
+ - '#인물/카르밀라'
139
+ - '#인물/로라'
140
+ - '#시점/1인칭'
141
+ - '#연출/대사중앙'
142
+ - '#정서/연민'
143
+ - '#관계단계/밀월'
144
+ - '#캐논/고정'
145
+ - '#결말/공통'
146
+ - '#복선/심기:FS-옛자신'
147
+ - '#앎/유저'
148
+ - '#앎/카르밀라🔒'
149
+ - '#상태/초안'
150
+ status: 초안
151
+ canon: true
152
+ next: E05-05
153
+ next_options: []
154
+ axis: null
155
+ frailty: false
156
+ narration:
157
+ - type: prose
158
+ text: 나는 반쯤 농담 삼아 말했다.
159
+ - type: character_dialogue
160
+ speaker: 로라
161
+ text: 카르밀라, 이 그림 당신과 너무 똑같지 않아요? 미르칼라 카른슈타인 백작부인이라니… 카른슈타인은 우리 어머니의 가문이에요. 어쩌면 이 부인이 내 먼 조상일지도. 그렇다면
162
+ 당신과 나는, 아주 오래전부터 한 핏줄로 이어져 있었던 걸까요?
163
+ anchor: true
164
+ - type: prose
165
+ text: 그러나 카르밀라는 웃지 않았다. 그림을 올려다본 채 한참을 말이 없었다. 그 깊은 두 눈에는 그리움인지 슬픔인지 모를 빛이 어렸고, 입가에는 헤아릴 수 없는 미소가
166
+ 천천히 번졌다. 처음 보는 얼굴을 마주한 사람의 표정이 아니라, 아주 오랜만에 자신의 옛 모습과 재회한 사람의 회한 어린 미소에 가까웠다. 그녀는 손을 들어 그림 속 얼굴을
167
+ 어루만지려다 멈칫하고는, 슬며시 거두었다.
168
+ - type: dialogue_center
169
+ text: '"미르칼라… 아름다운 이름이네."'
170
+ choices: []
171
+ r_card_refs: []
172
+ note: '**FS-옛자신 심기**(T4) — "자신의 옛 모습과 재회한 회한" = 150년 전 미르칼라가 곧 자기임을 유저에게 못 박되, 🔒 입으로��� 인정하지 않음(은유·여백).
173
+ 그림을 어루만지려다 거둔 손 = 잃어버린 자신/옛 사랑에의 그리움(동기 엔진의 누설). 연민의 결 — 로라(와 유저)가 카르밀라의 비극을 *느끼는* 첫 깊은 순간. 대표 대사
174
+ 중앙 단독.'
175
+ direction: 로라의 가벼운 농담 ↔ 웃지 않는 카르밀라의 정적. 그림을 올려다보는 그녀의 옆얼굴, 회한 어린 미소(클로즈업). 어루만지려다 멈칫·거두는 손의 인서트. "미르칼라…
176
+ 아름다운 이름이네" 한 음절씩 음미하듯, 중앙. 시간이 멎는 여백.
177
+ image: 1698 초상화를 올려다보는 현재 카르밀라의 옆얼굴 — 회한과 그리움의 미소. 그림으로 뻗다 멈춘 흰 손. 로라는 곁에서 그 표정을 의아하게 본다. 그늘진 금빛, 두
178
+ 시대가 겹치는 한 얼굴. 깊은 비애.
179
+ - id: E05-05
180
+ title: 오래전부터 이어진
181
+ subtitle: 운명의 낭만화
182
+ tags:
183
+ - '#장소/화랑'
184
+ - '#인물/카르밀라'
185
+ - '#인물/로라'
186
+ - '#시점/1인칭'
187
+ - '#연출/대사중앙'
188
+ - '#정서/매혹'
189
+ - '#관계단계/밀월'
190
+ - '#축/신뢰+·의심+'
191
+ - '#캐논/분기'
192
+ - '#결말/공통'
193
+ - '#메커니즘/환산출력'
194
+ - '#복선/회수:FS-혈통'
195
+ - '#앎/유저'
196
+ - '#상태/초안'
197
+ status: 초안
198
+ canon: true
199
+ next: E05-06
200
+ next_options: []
201
+ axis: null
202
+ frailty: false
203
+ narration:
204
+ - type: prose
205
+ text: 그녀는 그제야 나를 돌아보며, 나직이 말을 이었다.
206
+ - type: character_dialogue
207
+ speaker: 카르밀라
208
+ text: 그래, 어쩌면 우리는 아주 오래전부터 이어져 있었는지도 몰라. 우리가 이렇게 만난 것도, 그저 우연만은 아닐 거야, 로라.
209
+ anchor: true
210
+ choices:
211
+ - label: 운명이라 받아들인다
212
+ modifiers: &id002 []
213
+ axis: trust
214
+ result: '"…그래요. 우리는 오래전부터 이어져 있었어요." 그녀의 손이 내 손을 꼭 쥐었다. 운명이라는 말이, 그날은 무섭지 않고 따뜻했다.'
215
+ next: null
216
+ - label: 왜 부정하지 않느냐 캐묻는다
217
+ modifiers: *id002
218
+ axis: doubt
219
+ result: '"…당신은 왜 부정하지 않아요? 저 그림이 당신이 아니라고." 내가 묻자, 그녀는 그림에서 눈을 떼지 않은 채 한참을 말이 없었다. "…네가 무엇을 묻는지 알아.
220
+ 하지만 나는 답할 수 없어." 처음으로, 그녀의 목소리에 옅은 원망이 비쳤다. "어째서 다들, 끝내는 나를 캐내려고만 할까."'
221
+ next: null
222
+ r_card_refs:
223
+ - R-회피사다리
224
+ note: '**[엔진B·`#캐논/분기` 실물화]** 정체 단서(초상화)를 *위협이 아니라 운명으로* 재포장하는 화술 — 의심으로 갈 뻔한 순간을 신뢰로 돌린다(②혈통=운명적 끌림,
225
+ 기계적 이유 아님). 수용=신뢰+(②③ 방향)/추궁=의심+(①방향)으로 두 갈래 본문 충족. 추궁 시 옛 배신의 원망이 비침(비극의 덫). 단서 자체는 중립, *유저 반응이 축을
226
+ 흔든다*. 🔒 부정도 긍정도 하지 않음. 추궁이 심화되면 → `R-회피사다리` **2~3단계**(옛 배신의 원망·함구).'
227
+ direction: 회한의 미소에서 다정함으로 돌아오는 카르밀라. "우연만은 아닐 거야" — 운명을 속삭이는 낮은 목소리, 중앙. 로라의 설렘↔의문이 교차하는 얼굴. 여기서 유저
228
+ 선택지가 열리는 결절(낭만화 수용 / 추궁).
229
+ image: 초상화 앞, 로라를 돌아보며 다정히 속삭이는 카르밀라. 그 뒤로 1698 미르칼라가 같은 미소로 내려다본다(현재·과거 한 프레임). 따뜻한 금빛이되 그늘이 깊다. 운명의
230
+ 매혹과 잠복한 의심.
231
+ - id: E05-06
232
+ title: 사랑은 잔혹한 것
233
+ subtitle: 정원의 고백
234
+ tags:
235
+ - '#장소/정원'
236
+ - '#인물/카르밀라'
237
+ - '#인물/로라'
238
+ - '#시점/1인칭'
239
+ - '#연출/대사중앙'
240
+ - '#정서/공포'
241
+ - '#정서/매혹'
242
+ - '#관계단계/밀월'
243
+ - '#캐논/고정·분기'
244
+ - '#결말/공통'
245
+ - '#메커니즘/환산출력'
246
+ - '#복선/회수:FS-사랑의정체'
247
+ - '#복선/회수:FS-영원소유'
248
+ - '#문체/대표대사'
249
+ - '#앎/유저'
250
+ - '#앎/카르밀라🔒'
251
+ - '#상태/초안'
252
+ status: 초안
253
+ canon: true
254
+ next: E05-07
255
+ next_options: []
256
+ axis: null
257
+ frailty: false
258
+ narration:
259
+ - type: prose
260
+ text: 그날 저녁, 우리는 달빛이 쏟아지는 정원으로 나갔다. 오래된 보리수 아래 돌 벤치에 나란히 앉았다. 보름에 가까운 달이 카르밀라의 흰 얼굴을 창백하게 물들였다. 그녀의
261
+ 손이 내 손을 찾아 깍지를 끼었는데, 여느 때처럼 서늘했다. 그러더니 문득, 꿈을 꾸는 듯한 목소리로 물었다.
262
+ - type: character_dialogue
263
+ speaker: 카르밀라
264
+ text: 로라, 너는 사랑이 무엇이라고 생각하니.
265
+ anchor: true
266
+ - type: prose
267
+ text: 내가 머뭇거리자, 그녀는 먼 곳을 응시한 채 말을 이었��.
268
+ - type: dialogue_center
269
+ text: '"사랑은… 잔혹한 것이란다. 누군가를 진정으로 사랑한다는 건, 그 사람을 온전히 갖고 싶어진다는 뜻이야. 그 사람의 전부를. 피 한 방울까지도. 그래서 사랑은 때로
270
+ 죽음과 닮아 있지. 사랑하기에 빼앗고, 사랑하기에 끝내 하나가 되는 거야."'
271
+ - type: prose
272
+ text: 그녀는 잠시 말을 멈추었다가, 꾸밈을 벗은 목소리로 나직이 덧붙였다.
273
+ gate: trust_high
274
+ - type: dialogue_center
275
+ text: '"…나는 그렇게 누군가를 잃었어. 아주 오래전에. 사랑한다고 믿었던 사람의 손에."'
276
+ gate: trust_high
277
+ - type: prose
278
+ text: '그녀는 거기서 입을 다물었다. 그게 누구였는지는, 끝내 말하지 않았다.
279
+
280
+ 그것은 사랑을 노래하는 말이라기보다, 차라리 무엇인가를 고백하는 말처럼 들렸다. 나는 등줄기를 타고 오르는 한기를 느끼면서도, 그녀의 두 눈에서 시선을 떼지 못했다.'
281
+ choices: []
282
+ r_card_refs: []
283
+ note: 5화의 **대표 대사** — 카르밀라 동기 엔진의 가장 직접적인 자기 진술("피 한 방울까지 갖고 싶다 / 사랑=죽음=하나"). **[엔진D 해금]** 표면(잔혹한 사랑)은
284
+ 전원에게 / **심층("사랑한다 믿었던 사람의 손에 잃었다")은 신뢰高에서만** — 배신의 상처가 은유로 1겹 열림(누구인지는 🔒 흐리게). **FS-사랑의정체 회수**(3화
285
+ "사랑이 무엇인지")+**FS-영원소유 회수**(3화 "영원히 하나"). T4(소유·전환·배신의 본질). 🔒 "고백처럼 들린다"지만 직접 발설은 아님 — 일반론으로 위장한 자백.
286
+ 사랑·집착·결핍이 엉킨 미결을 *진심 어린 혼란*으로. 장면전환·중앙.
287
+ direction: 달빛 쏟아지는 정원, 깍지 낀 서늘한 손. "사랑이 무엇이라고 생각하니" — 꿈꾸듯. 대표 대사를 한 구절씩 중앙 단독으로, 부드러운 목소리에 서늘한 뜻. 카르밀라의
288
+ 두 눈에 어리는 갈망. 로라의 한기와 매혹의 동시성.
289
+ image: 보름달 아래 보리수 벤치, 나란히 앉은 두 여인. 달빛에 창백한 카르밀라, 깍지 낀 두 손. 먼 곳을 보는 그녀의 갈망 어린 눈. 미드나잇블루·은빛 달, 블러드레드 한
290
+ 점(피의 암시). 사랑의 고백이되 서약 같은 서늘함.
291
+ - id: E05-07
292
+ title: 무덤에서 걸어 나온 듯
293
+ subtitle: 섬뜩한 착각
294
+ tags:
295
+ - '#장소/정원'
296
+ - '#인물/로라'
297
+ - '#인물/카르밀라'
298
+ - '#시점/1인칭'
299
+ - '#연출/얼굴비노출'
300
+ - '#정서/공포'
301
+ - '#관계단계/밀월'
302
+ - '#캐논/고정'
303
+ - '#복선/회수:FS-초상화'
304
+ - '#복선/심기:FS-시신불후'
305
+ - '#앎/유저'
306
+ - '#상태/초안'
307
+ status: 초안
308
+ canon: true
309
+ next: E05-08
310
+ next_options: []
311
+ axis: null
312
+ frailty: false
313
+ narration:
314
+ - type: prose
315
+ text: '달빛 아래 그녀의 얼굴은 화랑의 초상화와 너무도 똑같아서, 나는 한순간 백오십 년 전의 죽은 부인이 무덤에서 걸어 나와 내 곁에 앉아 있는 듯한 섬뜩한 착각에 빠졌다.
316
+ 가만히 그 착각을 떨쳐 내려 했으나, 떨쳐 내면 떨쳐 낼수록 그 형상은 더욱 또렷해질 뿐이었다.
317
+
318
+ 그러나 카르밀라가 다시 다정하게 내 이름을 부르자, 그 서늘한 상상은 봄눈처럼 녹아 사라졌고, 나는 또다시 그녀의 매혹 속으로 끌려 들어갔다.'
319
+ choices: []
320
+ r_card_refs: []
321
+ note: '**FS-초상화 회수**(달빛에 1698과 겹침) + **FS-시신불후 심기**("무덤에서 걸어 나온" — 헌법 2-4 시신 불부패, 14화 무덤 발견의 복선). 로라가
322
+ 진실에 *가장 근접*했다가 매혹에 다시 끌려 들어감 — 의심↔매혹의 진자(④b 황금률 "알면서도 못 말리는 자기"). 〔변주〕착각의 표현은 자유, 진실 근접→매혹 복귀의 *결과*는
323
+ 고정.'
324
+ direction: 달빛 속 카르밀라의 얼굴에 1698 초상화가 디졸브로 겹친다(얼굴비노출 기법의 변주 — 죽은 부인의 환영). 무덤에서 걸어 나온 형상의 서늘한 오버랩. "로라"
325
+ 부르는 목소리에 환영이 봄눈처럼 녹고 다시 따뜻한 얼굴로 복귀. 공포→매혹의 부드러운 전환.
326
+ image: 달빛 정원, 카르밀라의 얼굴 위로 겹쳐지는 1698 초상화·관·무덤의 잔상. 로라의 섬뜩한 표정. 곧 환영이 걷히고 다정한 얼굴만 남는다. 미드나잇블루에 시린 은빛.
327
+ 진실에 닿았다 미끄러지는 순간.
328
+ - id: E05-08
329
+ title: 지워진 이름
330
+ subtitle: 저주받은
331
+ tags:
332
+ - '#장소/서재'
333
+ - '#인물/아버지'
334
+ - '#인물/로라'
335
+ - '#시점/1인칭'
336
+ - '#연출/대사중앙'
337
+ - '#정서/불안'
338
+ - '#유형/정보전달'
339
+ - '#캐논/고정·분기'
340
+ - '#결말/공통'
341
+ - '#복선/회수:FS-혈통'
342
+ - '#복선/회수:FS-저주'
343
+ - '#복선/심기:FS-지워진이름'
344
+ - '#복선/회수:FS-어른합리주의'
345
+ - '#메커니즘/능동발견'
346
+ - '#앎/유저'
347
+ - '#상태/초안'
348
+ status: 초안
349
+ canon: true
350
+ next: E05-09
351
+ next_options: []
352
+ axis: null
353
+ frailty: false
354
+ narration:
355
+ - type: prose
356
+ text: 그날 밤늦게, 나는 아버지께 화랑의 초상화 이야기를 꺼냈다. 아버지는 서재의 오래된 가계도를 펼치며 말씀하셨다.
357
+ - type: character_dialogue
358
+ speaker: 아버지
359
+ text: 카른슈타인 가문은 한때 이 일대에서 가장 위세 높은 귀족이었단다. 그러나 백오십 년쯤 전 완전히 끊기고 말았지. 마지막 후손까지 모두 떠났고, 성과 마을은 버려졌다.
360
+ 이제 그 핏줄을 잇는 사람이라곤, 모계로 가닿는 너 하나뿐이라 해도 과언이 아니란다.
361
+ anchor: true
362
+ - type: prose
363
+ text: 내가 미르칼라 백작부인을 묻자, 아버지는 가계도의 한 귀퉁이를 짚으셨으나 그 이름 곁에는 생몰 연대도 행적도 없었다. 다만 누군가 오래전 흐릿한 글씨로 덧붙인 한 단어가
364
+ 어렴풋이 읽혔는데, 마치 라틴어로 '저주받은'을 뜻하는 말처럼 보였다. 나는 확신할 수 없어 입 밖에 내지 않았다.
365
+ - type: character_dialogue
366
+ speaker: 아버지
367
+ text: 기이한 일이로구나. 한 가문의 사람이 이리도 흔적 없이 잊히다니. 마치 누군가 일부러 그 이름을 지우려 한 듯하구나.
368
+ anchor: true
369
+ choices:
370
+ - label: 의문을 마음에 담아 둔다
371
+ modifiers: &id003 []
372
+ axis: neutral
373
+ result: (본문대로 진행.)
374
+ next: null
375
+ - label: 카르밀라가 위험하다 아버지를 설득한다
376
+ modifiers: *id003
377
+ axis: doubt
378
+ result: 나는 용기를 내어, 카르밀라가 저 초상화와 똑같고 무언가 이상하다고, 어쩌면 위험할지도 모른다고 아버지께 말씀드렸다. 아버지는 잠시 가계도를 바라보시더니, 부드럽게
379
+ 내 어깨를 토닥이셨다. "로라, 닮은 사람이야 세상에 얼마든지 있단다. 그 그림 때문에 마음이 어지러운 게지. …그 아이는 우리 손님이야. 그런 의심은 손님에 대한 도리가
380
+ 아니란다." 합리적인 그 말씀 앞에서, 나는 또 한 번 입을 닫을 수밖에 없었다.
381
+ next: null
382
+ r_card_refs: []
383
+ note: '**[엔진C 안전망 2차 — 실패]** **FS-어른합리주의 회수**(4화 선심기). 물리 증거 없는 ''닮음·소문'' 단계의 설득은 아버지의 합리주의로 또 일축된다
384
+ → "말해도 소용없다" 누적, 6화 숨김을 정당화. 의심+ 단서는 수집되나 보호는 작동 안 함. **FS-혈통 회수**(로라=마지막 후손, 운명의 무게) + **FS-저주 회수**(2화
385
+ 카른슈타인 저주) + **FS-지워진이름 심기**(''저주받은''·일부러 지워진 미르칼라 = 14화 정체·처단으로 이어질 복선, T4). 아버지의 합리주의가 *역설적으로* 진실의
386
+ 윤곽을 더 또렷이 만든다. **[능동발견 보상 — 작성됨]** 등불로 확대하면 ''maledicta(저주받은)'' + 반쯤 지워진 ''떠나지 못한 자''를 회수(E05-03B
387
+ 황동판 지워진 연대와 연결 → 미르칼라 불사의 윤곽, 🔒 단어 없이). 안 보면 흘림 = 비대칭 보상. 신뢰 시소: 캐물음=의심+ 단서 수집.'
388
+ direction: 촛불 켜진 서재, 펼쳐지는 낡은 가계도. "너 하나뿐"에서 로라의 외로움·책임감이 스친다. 미르칼라 이름 곁의 *비어 있음*과 흐릿한 '저주받은' 글자의 클로즈업(능동발견
389
+ 확대). 아버지의 의아함이 만드는 서늘한 여운.
390
+ image: 어둑한 서재, 촛불 아래 펼친 카른슈타인 가계도. 한 귀퉁이 미르칼라의 이름 — 연대도 없이 비고, 흐릿하게 덧쓴 라틴어 'maledicta(저주받은)'. 가계도 끝에
391
+ 홀로 남은 로라의 이름. 잉크블랙·앰버. 지워진 진실의 흔적.
392
+ - id: E05-09
393
+ title: 맞춰지지 않는 조각
394
+ subtitle: 악몽의 문턱
395
+ tags:
396
+ - '#장소/침실'
397
+ - '#인물/로라'
398
+ - '#시점/1인칭'
399
+ - '#연출/대사중앙'
400
+ - '#정서/불안'
401
+ - '#캐논/고정'
402
+ - '#결말/공통'
403
+ - '#복선/심기:FS-악몽'
404
+ - '#복선/회수:FS-쇠약'
405
+ - '#앎/유저'
406
+ - '#상태/초안'
407
+ - '#상태/보강필요'
408
+ status: 초안
409
+ canon: true
410
+ next: E06
411
+ next_options: []
412
+ axis: null
413
+ frailty: false
414
+ narration:
415
+ - type: prose
416
+ text: '서재를 나서며, 나는 등 뒤에서 누군가 나를 지켜보는 듯한 서늘한 기운에 몇 번이고 뒤를 돌아보았다. 그러나 어둑한 복도에는 아무도 없었다.
417
+
418
+ 그날 밤 나는 묘한 흥분과 불안을 안고 잠자리에 들었다. 백오십 년 전 조상과 똑같은 벗, 끊긴 가문, 일부러 지워진 듯한 한 부인의 이름, 사랑은 잔혹하다던 알 수 없는
419
+ 말. 그 조각들이 머릿속에서 어지러이 맴돌며 하나의 형상으로 맞춰지려다, 마지막 순간 번번이 흩어졌다. 나는 그것이 가리키는 ���언가를 어렴풋이 짐작하면서도, 차마 또렷이 마주할
420
+ 용기가 없었다.'
421
+ - type: dialogue_center
422
+ text: 그리고 바로 그날 밤부터였다. 내 악몽이 시작된 것은.
423
+ choices: []
424
+ r_card_refs: []
425
+ note: '5화 마감 = **6화 악몽으로의 다리.** 모든 단서가 "하나의 형상"으로 맞춰지려다 흩어짐 — 진실 직전의 의도적 미봉(③b: 깨달음은 6화 두 점에서 완성). **FS-악몽
426
+ 심기**(6화 본격) + **FS-쇠약 회수**. "마주할 용기가 없었다" = 의심 검열의 마지막. 전지적이 아닌 1인칭 회고 톤의 예고("그날 밤부터였다"). 대사중앙. **보강:**
427
+ ⑦ 등불 의식(D)을 여기 결합해 6화 "등불이 사위어 감"의 복선으로.'
428
+ direction: 어두운 복도의 서늘한 시선(아무도 없음). 침대에 누운 로라의 머릿속에서 조각들(초상화·가계도·달빛 대사)이 맴돌다 흩어지는 몽타주. "악몽이 시작된 것은" 중앙
429
+ 단독, 화면이 어둠으로 잠기며 6화로 페이드.
430
+ image: 한밤 침실, 잠 못 드는 로라. 머리 위로 떠도는 단서들의 잔상(1698 초상화·지워진 이름·달·서늘한 손)이 맞춰지려다 흩어진다. 머리맡 등불 하나. 미드나잇블루 어둠,
431
+ 불안한 흥분. 악몽의 문턱.
content/beatcards/E06.yaml ADDED
@@ -0,0 +1,526 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ episode:
2
+ id: E06
3
+ title: '제6화: 한밤의 고통'
4
+ source: 카르밀라/0701_카르밀라/비트카드/E06/E06_비트카드.md
5
+ cards:
6
+ - id: E06-01
7
+ title: 삶이 둘로 갈라진 밤
8
+ subtitle: 전지적 액자
9
+ tags:
10
+ - '#장소/침실'
11
+ - '#인물/로라'
12
+ - '#시점/전지적·회상톤'
13
+ - '#연출/대사중앙'
14
+ - '#정서/불안'
15
+ - '#캐논/고정'
16
+ - '#복선/회수:FS-악몽'
17
+ - '#앎/유저'
18
+ - '#상태/초안'
19
+ status: 초안
20
+ canon: true
21
+ next: E06-02
22
+ next_options: []
23
+ axis: null
24
+ frailty: false
25
+ narration:
26
+ - type: prose
27
+ text: '*(시점이 잠시 바깥으로 물러난다.)* 그 악몽이 처음 찾아온 밤을, 로라는 평생 잊지 못할 것이었다. 그날 밤을 경계로, 평온했던 열아홉 해의 삶이 영영 둘로 갈라질
28
+ 참이었다.'
29
+ - type: dialogue_center
30
+ text: 그것은 시작이었다.
31
+ - type: stage_direction
32
+ text: 다시 로라의 1인칭으로.
33
+ choices: []
34
+ r_card_refs: []
35
+ note: '**[시점 캐논 — 확정]** "전지적 액자 + 1인칭 체험"으로 잠금. 6화의 무게를 여는 *전지적* 분수령 선언(회고록 "이 회고를 적는 손끝" 메타는 폐기 — 바이블④/④b
36
+ 역반영). 전지적 한 줄로 결말의 여운을 미리 깔고, 곧바로 1인칭 체험으로 복귀. 대사중앙·단독. 가볍게 쓰지 말 것.'
37
+ direction: 회상톤 — 펜을 든 현재 로라의 떨리는 손끝이 짧게(액자), 곧 그날 밤으로 디졸브. "영영 둘로 갈라졌으니까" 중앙 단독. 낮은 첼로 한 음. 무겁고 고요한
38
+ 진입.
39
+ image: 어둑한 책상, 회고록을 적는 떨리는 손끝(얼굴은 그늘). 그 위로 겹쳐지는 한밤의 침실. 잉크블랙·앤티크골드 한 줄. 세월을 건너온 화자의 무게. 분수령의 예감.
40
+ - id: E06-02
41
+ title: 익숙해진 냉기
42
+ subtitle: 너무 익숙해진
43
+ tags:
44
+ - '#장소/정원'
45
+ - '#인물/카르밀라'
46
+ - '#인물/로라'
47
+ - '#시점/1인칭'
48
+ - '#정서/불안'
49
+ - '#관계단계/의존'
50
+ - '#캐논/고정'
51
+ - '#복선/회수:FS-차가운손'
52
+ - '#앎/유저'
53
+ - '#상태/초안'
54
+ status: 초안
55
+ canon: true
56
+ next: E06-03
57
+ next_options: []
58
+ axis: null
59
+ frailty: false
60
+ narration:
61
+ - type: prose
62
+ text: '그날 낮, 카르밀라는 유난히 나른했고 늦은 오후가 되어서야 방에서 나왔다. 햇살이 기울 무렵 그녀는 느릿한 걸음으로 다가와 팔짱을 끼었다. 그녀의 손끝은 차가웠고,
63
+ 그 서늘함이 내 팔뚝을 타고 번져 왔다.
64
+
65
+ 나는 그런 그녀의 습관에 차츰 익숙해지고 있었다. 어쩌면 너무 익숙해지고 있었는지도 모른다.'
66
+ choices: []
67
+ r_card_refs: []
68
+ note: '**FS-차가운손 회수**(이제 *경고가 아니라 일상*이 된 냉기). 관계단계 **의존** 진입 — "너무 익숙해지고 있었다"의 자기 인식이 비극의 핵(④b: 위험에
69
+ 둔감해진 사랑). 짧은 호흡의 다리 카드.'
70
+ direction: 기우는 오후 햇살, 느릿하게 팔짱을 끼는 카르밀라. 차가운 손끝이 팔뚝에 번지는 촉각 클로즈업. "너무 익숙해지고 있었는지도" — 체념 어린 1인칭. 평온하나
71
+ 가라앉는 빛.
72
+ image: 황혼의 정원, 팔짱 낀 두 여인. 카르밀라의 창백한 손과 로라의 팔. 기우는 금빛에 스미는 보랏빛. 익숙해진 냉기, 의존의 평온. 조용한 불안.
73
+ - id: E06-03
74
+ title: 사위어 가는 등불
75
+ subtitle: 악몽의 시작
76
+ tags:
77
+ - '#장소/침실'
78
+ - '#인물/로라'
79
+ - '#시점/회상톤'
80
+ - '#연출/감각몰입'
81
+ - '#정서/공포'
82
+ - '#캐논/고정'
83
+ - '#복선/회수:FS-악몽'
84
+ - '#복선/심기:FS-등불'
85
+ - '#앎/유저'
86
+ - '#상태/초안'
87
+ status: 초안
88
+ canon: true
89
+ next: E06-04
90
+ next_options: []
91
+ axis: null
92
+ frailty: false
93
+ narration:
94
+ - type: prose
95
+ text: 잠이 들면 늘 같은 방식으로 시작되었다. 나는 분명 내 침대에 누워 있었다. 머리맡에는 늘 작은 등불 하나가 가물거렸다. 어둠을 무서워하는 내 오랜 버릇 때문이었다.
96
+ 그런데 어느 순간 방 안의 공기가 달라졌다. 등불이 까닭 없이 사위어 갔고, 무겁고 끈적한 무언가가 천장에서 내려와 가슴을 누르는 듯했다. 숨이 가빠졌다. 그리고 짙어진 어둠
97
+ 속에서, 무언가가 움직였다.
98
+ choices: []
99
+ r_card_refs: []
100
+ note: '**FS-등불 심기**("어둠 공포+등불 의식"의 격상 — ④b 강화설정 D). 매일 켜던 안전의 등불이 *스스로 사위어 감* = 안전 의식의 붕괴. **FS-악몽 회수**(5화
101
+ 문턱 → 본격). 회상톤(꿈결 화질). T2(흡혈의 꿈 위장). 〔변주〕악몽의 세부는 밤마다 다르되 *시작 방식*은 고정.'
102
+ direction: 회상톤 — 낮은 채도·살짝 흐릿. 머리맡 등불이 *까닭 없이* 사위어 어둠이 차오른다. 천장에서 내려오는 무거운 압박(가위눌림)의 감각. 가빠지는 숨��리, 낮은
103
+ 심장박동. 어둠 속 첫 움직임의 기척.
104
+ image: 휘장 드리운 침대, 머리맡에서 꺼져 가는 등불. 차오르는 어둠, 천장에서 내리누르는 듯한 압박감. 어둠 속 희미한 움직임의 윤곽. 빛바랜 미드나잇블루·잉크블랙. 안전이
105
+ 무너지는 밤.
106
+ - id: E06-04
107
+ title: 검은 짐승
108
+ subtitle: 송아지만 한
109
+ tags:
110
+ - '#장소/침실'
111
+ - '#인물/로라'
112
+ - '#인물/카르밀라'
113
+ - '#시점/회상톤'
114
+ - '#연출/얼굴비노출'
115
+ - '#정서/공포'
116
+ - '#캐논/고정'
117
+ - '#복선/회수:FS-짐승본성'
118
+ - '#복선/심기:FS-수면마비'
119
+ - '#앎/유저'
120
+ - '#앎/카르밀라🔒'
121
+ - '#상태/초안'
122
+ status: 초안
123
+ canon: true
124
+ next: E06-05
125
+ next_options: []
126
+ axis: null
127
+ frailty: false
128
+ narration:
129
+ - type: prose
130
+ text: '처음에는 그것이 짐승인 줄 알았다. 검고 거대한 형체. 고양이를 닮았으나 고양이라기엔 너무 컸다. 송아지만 한 검은 짐승이 침대 발치를 소리 없이 맴돌았다. 발이
131
+ 바닥에 닿는데도 아무 소리가 나지 않았다. 두 눈만이 어둠 속에서 인광을 띠며 빛났다. 굶주린 듯, 그러나 서두르지 않는 자의 침착함으로.
132
+
133
+ 나는 비명을 지르려 했으나 목구멍에서 아무 소리도 나오지 않았다. 손가락 하나 까딱할 수 없었다. 몸은 납덩이처럼 무거웠고, 의식만이 또렷하게 깨어 그 광경을 지켜볼 뿐이었다.
134
+ 그 무력함이야말로 가장 끔찍한 것이었다.'
135
+ choices: []
136
+ r_card_refs: []
137
+ note: '**FS-짐승본성 회수**(1·3·4화 → 짐승 형상으로 발현, 헌법 2-3 능력) + **FS-수면마비 심기**(가위눌림 = 흡혈의 생리적 표현). 🔒 짐승=카르밀라이나
138
+ 얼굴 비노출·정체 미확정. "굶주렸으나 서두르지 않는" = 동기(포식 아닌 다른 무엇)의 결. 회상톤·얼굴비노출.'
139
+ direction: 회상톤. 침대 발치를 소리 없이 맴도는 거대한 검은 형체(고양이도 짐승도 아닌). 인광 띤 두 눈만 또렷. 비명도 손가락도 안 되는 수면마비의 무력함 — 의식만
140
+ 깬 1인칭의 공포. 정적 속 인광.
141
+ image: 어둠 속 침대 발치, 송아지만 한 검은 짐승의 윤곽(소리 없이 맴돎). 인광으로 빛나는 두 눈. 마비된 채 지켜보는 로라. 빛바랜 잉크블랙, 두 점의 냉광. 굶주림과
142
+ 침착이 공존하는 형상.
143
+ - id: E06-05
144
+ title: 두 개의 바늘, 황홀한 통증
145
+ subtitle: ''
146
+ tags:
147
+ - '#장소/침실'
148
+ - '#인물/로라'
149
+ - '#인물/카르밀라'
150
+ - '#시점/회상톤'
151
+ - '#연출/감각몰입'
152
+ - '#정서/공포'
153
+ - '#정서/매혹'
154
+ - '#캐논/고정'
155
+ - '#복선/회수:FS-두점'
156
+ - '#복선/회수:FS-목덜미'
157
+ - '#앎/유저'
158
+ - '#상태/초안'
159
+ status: 초안
160
+ canon: true
161
+ next: E06-06
162
+ next_options: []
163
+ axis: null
164
+ frailty: false
165
+ narration:
166
+ - type: prose
167
+ text: '짐승은 침대 위로 올라왔다. 매트리스가 그 무게로 꺼지는 것이 느껴졌다. 묵직한 존재감이 내 다리 위를 지나 가슴께로 천천히 다가왔다. 그 움직임에는 자기가 무엇을
168
+ 원하는지 정확히 아는 자의 망설임 없는 확신이 있었다. 그리고 두 개의 바늘 같은 것이, 아니 송곳니 같은 것이 내 가슴 깊숙이 박혔다.
169
+
170
+ 통증. 그러나 단순한 통증이 아니었다. 살을 찢는 아픔이면서도, 동시에 정신을 아득하게 만드는 야릇한 황홀이 뒤섞여 있었다. 나는 비명을 지르고 싶으면서도, 한편으로는 그
171
+ 감각이 영원히 끝나지 않기를 바라는 나 자신이 있었다.'
172
+ choices: []
173
+ r_card_refs: []
174
+ note: '**FS-두점·FS-목덜미 회수**(흡혈의 직접 묘사 — 10번 두 점 발견의 생리적 근거). "고통+황홀"의 모순 = 6화의 정서 핵(④b PART7 "고통의 달콤함").
175
+ 선정은 절제·암시(작업지침). 1화 6세의 밤(두 바늘)과 수미상관 — 같은 통증이 13년 뒤 반복. 회상톤·감각몰입.'
176
+ direction: 매트리스가 꺼지는 무게감, 가슴께로 다가오는 묵직한 존재. 두 송곳니가 박히는 순간 — 화면 번쩍, 통증과 황홀이 뒤섞인 모순된 감각(아픔의 붉음 + 아득한 흐려짐).
177
+ "영원히 끝나지 않기를" 바라는 로라의 균열. 절제된 암시.
178
+ image: 어둠 속 가슴께로 다가오는 형체(얼굴 비노출), 박히는 두 송곳니의 암시. 블러드레드 한 점이 번지고 화면이 아득히 흐려진다. 빛바랜 미드나잇블루. 고통과 황홀의 모순.
179
+ 절제된 관능.
180
+ - id: E06-06
181
+ title: 녹아내려 사람이 되다
182
+ subtitle: 낯익은 윤곽
183
+ tags:
184
+ - '#장소/침실'
185
+ - '#인물/로라'
186
+ - '#인물/카르밀라'
187
+ - '#시점/회상톤'
188
+ - '#연출/얼굴비노출'
189
+ - '#정서/공포'
190
+ - '#캐논/고정'
191
+ - '#복선/회수:FS-안개화'
192
+ - '#복선/심기:FS-부서진빗장'
193
+ - '#앎/유저'
194
+ - '#앎/카르밀라🔒'
195
+ - '#상태/초안'
196
+ status: 초안
197
+ canon: true
198
+ next: E06-07
199
+ next_options: []
200
+ axis: null
201
+ frailty: false
202
+ narration:
203
+ - type: prose
204
+ text: '그 순간 짐승의 형체가 흐물흐물 녹아내리듯 변했다. 어느새 그것은 짐승이 아니라 사람이었다. 방 한가운데, 창으로 스며든 희미한 달빛을 받으며 한 여인이 서 있었다.
205
+ 흰옷을 입은, 머리를 풀어 헤친 여인. 얼굴은 그늘에 가려 보이지 않았으나 그 윤곽이 어딘가 낯익었다.
206
+
207
+ 나는 안간힘을 다해 몸을 일으키려 했다. 그 순간 방문이 거칠게 열렸다. 빗장이 부서지는 둔탁한 소리가 들렸다. 그러나 문가에는 아무도 없었다. 여인의 형체는 사라지고 없었다.
208
+ 텅 빈 방 안에 달빛만이 차갑게 흘러내렸다. 나는 그제야 비명을 지르며 깨어났다.'
209
+ choices: []
210
+ r_card_refs: []
211
+ note: '**FS-안개화 회수**(짐승↔사람↔사라짐, 헌법 2-3) + **FS-부서진빗장 심기**(잠긴 방을 통과하는 능력 — 1화 "잠긴 창"과 호응). T3(짐승=여인=카르밀라,
212
+ 그러나 얼굴 비노출로 미확정). "낯익은 윤곽" = 로라도 *거의* 알아봄. 🔒 정체는 끝내 그늘 속.'
213
+ direction: 짐승이 흐물흐물 녹아 사람으로(모핑). 달빛 속 흰옷·풀어헤친 머리의 여인(얼굴 그늘·비노출). 몸을 일으키려는 안간힘 → 빗장 부서지는 둔탁한 소리 → 텅 빈
214
+ 문가(아무도 없음). 비명과 함께 깨어남. 회상톤 해제의 충격.
215
+ image: 달빛 한가운데 선 흰옷의 여인(얼굴은 그늘, 윤곽만 낯익음). 짐승에서 사람으로 녹아드는 잔상. 부서지는 빗장의 환청, 텅 빈 문가. 빛바랜 미드나잇블루·시린 달. 정체
216
+ 직전의 베일.
217
+ - id: E06-07
218
+ title: 상처 없는 자리, 무덤의 냄새
219
+ subtitle: ''
220
+ tags:
221
+ - '#장소/침실'
222
+ - '#인물/로라'
223
+ - '#시점/1인칭'
224
+ - '#연출/감각몰입'
225
+ - '#정서/공포'
226
+ - '#캐논/고정'
227
+ - '#복선/심기:FS-무덤냄새'
228
+ - '#복선/회수:FS-두점'
229
+ - '#앎/유저'
230
+ - '#상태/초안'
231
+ status: 초안
232
+ canon: true
233
+ next: E06-08
234
+ next_options: []
235
+ axis: null
236
+ frailty: false
237
+ narration:
238
+ - type: prose
239
+ text: '땀에 흠뻑 젖은 채 깨어나 가쁜 숨을 몰아쉬었다. 등불은 멀쩡히 타고 있었고, 문은 닫혀 있었으며 빗장도 그대로였다. 짐승도, 여인도 없었다. 다만 가슴 위쪽 살갗이
240
+ 아릿하게 쓰라렸다. 손을 대 보았으나 상처는 없었다. 단지 차가운 감촉만이, 마치 누군가의 입술이 방금 그곳을 스치고 지나간 듯한 감촉만이 남아 있었다.
241
+
242
+ 그날 이후로 그 꿈은 거의 매일 밤 되풀이되었다. 어떤 밤엔 여인의 얼굴이 잠깐 달빛에 드러났는데 — 나는 그것이 카르밀라처럼 보여 소스라쳤다. 입가가 검붉게 물든, 피투성이
243
+ 같은 카르밀라. 그러나 깨어나 곱씹어 보면 그저 꿈일 뿐이라 다독였다. 사랑하는 사람을 그렇게 의심하다니, 나는 스스로를 부끄러워했다.
244
+
245
+ 방 안의 공기는 미묘하게 차가웠고, 어디선가 시든 꽃과 젖은 흙냄새를 섞은 듯한 향내가 떠돌았다. 무덤의 냄새. 그때는 그렇게 생각하지 못했지만.'
246
+ choices: []
247
+ r_card_refs: []
248
+ note: '**FS-무덤냄새 심기**(헌법 2-4 무덤·시신 모티프, 14화 복선) + **FS-두점 회수**(상처 없으나 "입술이 스친 자리"). "피투성이 카르밀라"를 보고도
249
+ *의심을 부끄러워함* = 의심 검열의 절정(④b). 회상톤↔1인칭 교차. 유저는 향내가 무덤임을 안다(이중 채널).'
250
+ direction: 식은땀·가쁜 숨으로 깨어남(회상톤 해제). 멀쩡한 등불·잠긴 빗장과 가슴의 차가운 감촉의 낙차. 반복되는 밤의 몽타주 — 달빛에 잠깐 드러나는 입가 검붉은 카르밀라(소스라침)
251
+ → 부끄러워하며 외면. 떠도는 향내(시든 꽃·젖은 흙)의 후각 암시.
252
+ image: 식은땀에 젖어 앉은 로라, 가슴께를 짚은 손(상처는 없다). 반복의 몽타주 — 달빛에 입가 검붉은 카르밀라의 잔상. 떠도는 희뿌연 향내. 미드나잇블루에 블러드레드 한
253
+ 점. 의심과 자책의 밤.
254
+ - id: E06-08
255
+ title: 안개를 쥐다
256
+ subtitle: 스러져 가는 나
257
+ tags:
258
+ - '#장소/침실'
259
+ - '#인물/로라'
260
+ - '#인물/카르밀라'
261
+ - '#시점/회상톤'
262
+ - '#연출/감각몰입'
263
+ - '#정서/공포'
264
+ - '#정서/매혹'
265
+ - '#관계단계/의존'
266
+ - '#캐논/고정'
267
+ - '#복선/회수:FS-짐승본성'
268
+ - '#복선/회수:FS-쇠약'
269
+ - '#앎/유저'
270
+ - '#상태/초안'
271
+ status: 초안
272
+ canon: true
273
+ next: E06-09
274
+ next_options: []
275
+ axis: null
276
+ frailty: false
277
+ narration:
278
+ - type: prose
279
+ text: '특히 잊을 수 없는 밤이 있었다. 깊이 가라앉았다가 어떤 기척에 의식이 떠올랐다. 눈을 뜨지는 못했���나 정신만은 또렷했다. 누군가 침대 곁에 무릎을 꿇고 있었다.
280
+ 차갑고 규칙적인, 그러나 굶주린 숨결이 내 목덜미에 닿았다. 그 숨이 살갗을 더듬다 한 지점에 멈추었고, 부드러운 입술이 그 자리를 눌렀다.
281
+
282
+ 나는 온 힘을 다해 손을 뻗었다. 손끝이 무언가에 닿았다. 비단처럼 매끄러운, 길고 풍성한 머리카락이었다. 움켜쥐려 했으나, 마치 안개를 쥐듯 손가락 사이로 스르르 빠져나갔다.
283
+ 그리고 멀리서 나직한 웃음소리가 들려왔다. 다정하면서도 슬픈, 분명 카르밀라의 웃음이었다.
284
+
285
+ 이튿날 아침, 머리맡 융단 위에는 검고 긴 머리카락 한 올이 떨어져 있었다. 나는 그것을 촛불에 비추어 보다가, 끝내 창밖으로 던져 버렸다. 그것이 무엇을 뜻하는지 알게 될까
286
+ 봐 두려웠다.'
287
+ choices: []
288
+ r_card_refs: []
289
+ note: '**FS-짐승본성·쇠약 회수.** 꿈과 현실의 경계가 무너진다 — "안개를 쥐듯"(안개화) + 남겨진 *실재하는* 머리카락(꿈이 아님의 증거). 카르밀라의 웃음 = 정체의
290
+ 가장 또렷한 누설. 그러나 로라는 증거를 *던져 버린다* = 진실을 능동적으로 거부(④b 황금률 정점). 회상톤.'
291
+ direction: 눈 감은 채 의식만 깬 상태(목덜미의 숨결·입술의 촉각). 뻗은 손이 머리카락에 닿았다 안개처럼 빠져나감. 멀리서 들리는 카르밀라의 낮은 웃음. 아침 — 융단의
292
+ 검은 머리카락 한 올을 촛불에 비추다 창밖으로 던지는 손. 진실을 버리는 두려움.
293
+ image: 어둠 속 침대맡에 무릎 꿇은 형체(얼굴 비노출), 목덜미에 닿는 숨결. 손가락 사이로 안개처럼 빠지는 검은 머리카락. 아침 — 촛불에 비친 머리카락 한 올, 열린 창.
294
+ 빛바랜 미드나잇블루·앰버. 부정할 수 없는 증거와 그 거부.
295
+ - id: E06-09
296
+ title: 둘만의 비밀
297
+ subtitle: 가장 위험한 다정함
298
+ tags:
299
+ - '#장소/침실'
300
+ - '#인물/카르밀라'
301
+ - '#인물/로라'
302
+ - '#시점/1인칭'
303
+ - '#연출/대사중앙'
304
+ - '#정서/매혹'
305
+ - '#정서/공포'
306
+ - '#관계단계/의존'
307
+ - '#캐논/고정·분기'
308
+ - '#결말/공통'
309
+ - '#메커니즘/환산출력'
310
+ - '#복선/심기:FS-고립전술'
311
+ - '#복선/회수:FS-영원소유'
312
+ - '#앎/유저'
313
+ - '#앎/카르밀라🔒'
314
+ - '#상태/초안'
315
+ status: 초안
316
+ canon: true
317
+ next: E06-10
318
+ next_options: []
319
+ axis: null
320
+ frailty: false
321
+ narration:
322
+ - type: prose
323
+ text: '나는 매일 조금씩 스러져 갔다. 거울에 비친 얼굴은 날로 창백해졌고, 식욕이 사라졌으며, 좋아하던 정원 산책조차 귀찮아졌다. 마담이 가장 먼저 알아챘으나, 나는 그
324
+ 꿈에 섞인 야릇한 달콤함을 차마 입에 올릴 수 없었다. 누구에게도 빼앗기고 싶지 않은 비밀처럼.
325
+
326
+ 이상한 것은, 이 시기 내내 카르밀라가 어느 때보다 다정했다는 점이다. 내가 쇠약해지는 것을 보며 진심으로 슬퍼하는 듯했고, 가끔은 눈물을 글썽이기까지 했다.'
327
+ - type: dialogue_center
328
+ text: '"내 가엾은 사람. 너는 죽어 가고 있어. 하지만 사랑하는 이의 품에서라면, 죽음은 오히려 축복일 수도 있어."'
329
+ - type: prose
330
+ text: 그녀는 내 눈을 오래 들여다보다, 꾸밈을 벗은 목소리로 덧붙였다.
331
+ gate: trust_high
332
+ - type: dialogue_center
333
+ text: '"…무섭니? 나도 한때는 무서웠어. 죽어 간다는 것이. 하지만 사랑하는 사람의 품에서라면, 그건 끝이 아니야. 시작이야."'
334
+ gate: trust_high
335
+ - type: prose
336
+ text: '그 말은 위로 같았고, 동시에 약속 같았다.
337
+
338
+ 그러나 그 위안의 한복판에는 늘 한 점 서늘한 의문이 박혀 있었다. 어째서 그녀는 내가 쇠약해지는 것을 슬퍼하면서도, 단 한 번도 의사를 부르자거나 아버지께 알리자고 하지
339
+ 않았을까.'
340
+ - type: character_dialogue
341
+ speaker: 카르밀라
342
+ text: 사람들은 이해 못 해. 너와 나 사이의 일을. 그러니 우리끼리만 간직하자.
343
+ anchor: true
344
+ - type: prose
345
+ text: 그녀가 그렇게 속삭이며 내 입술에 손가락을 가져다 대면, 나는 정말로 입을 다물어야 할 것 같은 기분에 사로잡혔다. 무언가에 흘린 사람처럼.
346
+ choices:
347
+ - label: 둘만의 비밀에 동조한다
348
+ modifiers: &id001 []
349
+ axis: trust
350
+ result: 나는 고개를 끄덕였다. 그녀의 말이 옳은 것만 같았다. 우리 사이의 일을, 다른 누구도 알 필요는 없었다. 로.
351
+ next: null
352
+ preset_branch: E06-10C
353
+ - label: 그래도 누군가에게 알려야 한다고 생각한다
354
+ modifiers: *id001
355
+ axis: doubt
356
+ result: 그런데도, 마음 깊은 곳에서 무언가가 자꾸 고개를 들었다. 이대로 시들다 죽을 수는 없다는, 가느다란 외침이. (�� 점 발견) 이후 알림 분기(E06-10B)로
357
+ 이어짐.
358
+ next: E06-10
359
+ r_card_refs: []
360
+ note: '**[엔진D 해금 + 엔진C 분기 입력]** 표면("죽음은 축복")은 전원 / **심층("그건 끝이 아니야, 시작이야")은 신뢰高에서만** — ②동화 유혹의 직접 누설(전환=의심없는
361
+ 사랑의 완성, 헌법 2-2). "둘만의 비밀"(**FS-고립전술 심기**)에 동조(신뢰+→E06-10C)/저항(의심+→E06-10B) 분기. 다정함과 굶주림·자기혐오 공존(바이블③
362
+ 규칙6). 🔒 발설 금지.("우리끼리만 간직하자" = 어른과의 단절·안전망 차단, ④b PART8 시소의 카르밀라 쪽 극점) + **FS-영원소유 회수**("죽음=축복"). 다정함과
363
+ 굶주림·자기혐오의 공존(페르소나 규칙 6). T4. 🔒 의사·아버지를 막는 *행동*으로 본성이 드러나되 발설은 없음. **신뢰↔의심 시소의 결정적 분기점**(아래 메모).'
364
+ direction: 거울 속 창백해진 로라(쇠약 가시화). 진심으로 슬퍼하는(듯한) 카르밀라의 눈물. 대표 대사 "죽음은 축복" 중앙, 도취된 목소리. 입술에 손가락을 대는 침묵의
365
+ 봉인 — 흘린 듯한 로라. 따뜻함이 곧 덫인 서늘함.
366
+ image: 촛불 아래 창백히 야윈 로라와 눈물 글썽이는 카르밀라. 로라의 입술에 닿은 카르밀라의 손가락(침묵의 봉인). 버건디·미드나잇블루, 두 사람만의 닫힌 공간. 다정함과 위험의
367
+ 합일. 의존의 정점.
368
+ - id: E06-10
369
+ title: 목덜미의 두 점
370
+ subtitle: 도입 아크 종료점
371
+ tags:
372
+ - '#장소/침실'
373
+ - '#인물/로라'
374
+ - '#시점/1인칭'
375
+ - '#연출/대사중앙'
376
+ - '#정서/공포'
377
+ - '#유형/단서발견'
378
+ - '#관계단계/의존'
379
+ - '#축/의심+'
380
+ - '#캐논/고정'
381
+ - '#결말/공통'
382
+ - '#복선/회수:FS-두점'
383
+ - '#복선/회수:FS-송곳니'
384
+ - '#복선/회수:FS-차가운손'
385
+ - '#메커니즘/쇠약도'
386
+ - '#메커니즘/도달점'
387
+ - '#앎/유저'
388
+ - '#상태/초안'
389
+ - '#상태/보강필요'
390
+ status: 초안
391
+ canon: true
392
+ next: null
393
+ next_options:
394
+ - E06-10B
395
+ - E06-10C
396
+ axis: doubt
397
+ frailty: true
398
+ narration:
399
+ - type: prose
400
+ text: '그러던 어느 아침, 평소보다 일찍 깬 나는 화장대 앞에서 흐트러진 머리를 매만지고 있었다. 무심히 거울을 들여다보다가, 나는 무언가에 시선을 멈췄다. 목덜미. 오른쪽
401
+ 쇄골 바로 위, 그 부드러운 살갗 위에.
402
+
403
+ 머리카락을 쓸어 넘기고 거울에 목을 더 가까이 들이밀었다. 심장이 무겁게 뛰기 시작했다. 아침 햇살이 그 자리를 또렷이 드러냈다. 거기, 거의 알아보기 힘들 만큼 작은 —
404
+ 그러나 분명히 존재하는 — 두 개의 점이 있었다. 바늘로 찌른 듯 작은. 그 색이 평범한 멍과는 달랐다. 푸르스름했다. 차갑고 창백한, 죽은 사람의 살빛 같은 두 개의 푸른
405
+ 점. 두 점 사이의 간격이 어쩐지 송곳니의 간격을 떠올리게 했다.
406
+
407
+ 거울 속 내 얼굴에서 마지막 핏기마저 사라지는 것을 나는 보았다. 손가락이 저절로 그 자리로 향했다. 차가웠다. 살아 있는 사람의 살갗이라기엔 너무도 차가웠다.'
408
+ - type: dialogue_center
409
+ text: 그리고 그 순간, 매일 밤의 꿈과 이 두 점이 무관하지 않을지도 모른다는 생각이, 처음으로 머릿속을 스치고 지나갔다.
410
+ - type: prose
411
+ text: 나는 고개를 저었다. 그러나 한번 떠오른 그것은, 거울 속 푸른 두 점처럼, 아무리 외면해도 사라지지 않았다.
412
+ - type: prose
413
+ text: 숨김 → **E06-10C** (의존 심화, ②③ 온램프) · 알림 → **E06-10B** (안전망 작동, ①처단 온램프)
414
+ choices:
415
+ - label: 두 점을 가리고 혼자 간직한다
416
+ modifiers: &id002 []
417
+ axis: null
418
+ result: ''
419
+ next: E06-10C
420
+ - label: 아버지께 보여드리고 곁을 지켜 달라 청한다
421
+ modifiers: *id002
422
+ axis: null
423
+ result: ''
424
+ next: E06-10B
425
+ r_card_refs:
426
+ - R-회피사다리
427
+ note: ★ **도입 아크의 고정 종료점(MVP 도달점) — 반드시 도달.** **FS-두점·송곳니·차가운손 동시 회수**(4·6화 단서가 *내 몸에서* 회수됨). T2(흡혈)+T3(꿈=현실=카르밀라)이
428
+ 로라 안에서 처음으로 연결됨 — **첫 진짜 의심**(`#축/의심+`, ④b PART8). 그러나 "고개를 저었다"로 *완결은 유보*(②③ 분기 여지를 남김 — 의심이 확신이
429
+ 되면 ①처단, 의심을 사랑이 덮으면 ②③). `#메커니즘/쇠약도·도달점`. 대사중앙. **의외플레이:** 유저가 두 점을 들이밀며 카르밀라를 즉시 추궁하면 → `R-회피사다리`
430
+ **3단계**(부정도 긍정도 않음 + 의존을 이용한 무마, 물리적 돌변 없음). 단 도달점·분기(B/C)는 유지.
431
+ direction: 평범한 아침 일상(머리 매만지기)에서 시선이 멈추는 정적. 머리카락을 넘기고 거울에 목을 들이미는 1인칭. 아침 햇살이 가르는 두 점의 클로즈업 — 푸르스름한,
432
+ 송곳니 간격. 거울 속 얼굴에서 핏기가 가시는 순간. "무관하지 않을지도" 중앙 단독. 고개를 젓지만 사라지지 않는 두 점으로 도입 아크 마감(긴 여운 → E07 예고).
433
+ image: 아침 화장대, 거울에 목덜미를 들이댄 로라. 오른쪽 쇄골 위 푸르스름한 두 점(송곳니 간격)의 클로즈업. 거울 속 핏기 가신 창백한 얼굴. 차가운 아침빛, 블러드레드가
434
+ 아닌 *시린 푸른빛*의 두 점. 도입 아크를 닫는 첫 의심의 순간.
435
+ - id: E06-10B
436
+ title: 곁을 지켜 주세요
437
+ subtitle: 안전망 ON → ①처단 온램프
438
+ tags:
439
+ - '#장소/침실'
440
+ - '#인물/아버지'
441
+ - '#인물/마담'
442
+ - '#인물/로라'
443
+ - '#시점/1인칭'
444
+ - '#연출/감각몰입'
445
+ - '#정서/불안'
446
+ - '#정서/연민'
447
+ - '#관계단계/의존'
448
+ - '#축/의심+'
449
+ - '#캐논/분기'
450
+ - '#결말/①죽음'
451
+ - '#메커니즘/도달점'
452
+ - '#메커니즘/능동발견'
453
+ - '#복선/회수:FS-어른직감'
454
+ - '#복선/회수:FS-두점'
455
+ - '#복선/회수:FS-고립전술'
456
+ - '#앎/유저'
457
+ - '#앎/카르밀라🔒'
458
+ - '#상태/초안'
459
+ status: 초안
460
+ canon: true
461
+ next: E07
462
+ next_options: []
463
+ axis: doubt
464
+ frailty: false
465
+ narration:
466
+ - type: prose
467
+ text: '나는 두 점을 아버지께 보여드리고, 곁을 지켜 달라 청했다.
468
+
469
+ 그날 밤, 아버지가 등불을 밝힌 채 내 침대맡을 지키셨다. 마담이 번갈아 곁에 앉았다. 이상한 일이었다. 그 밤엔 악몽이 오지 않았다. 무거운 어둠도, 가슴의 통증도 없었다.
470
+ 나는 오랜만에 깊고 평온히 잠들었고, 이튿날 거울 속 내 얼굴엔 옅은 핏기가 돌아와 있었다.
471
+
472
+ 그러나 카르밀라는 — 그 아침 유난히 핼쑥했다. 나를 보는 눈에 서운함과, 무언가에 쫓기는 듯한 두려움이 함께 있었다.'
473
+ - type: character_dialogue
474
+ speaker: 카르밀라
475
+ text: …왜 그랬어, 로라. 우리끼리만의 일이라고 했잖아.
476
+ anchor: true
477
+ - type: prose
478
+ text: 그 목소리는 원망이 아니라, 버림받을까 봐 떠는 아이의 것에 가까웠다. 나는 죄를 지은 기분이었다. 그녀를 지키려는 사람들에게서, 도리어 그녀를 지켜야 할 것만 같은
479
+ — 뒤집힌 죄책이.
480
+ choices: []
481
+ r_card_refs: []
482
+ note: '**[엔진C 안전망 작동]** 보호자가 깨어 곁을 지키면 흡혈은 막힌다(헌법 2-1) — *설명하지 않고 결과로* 유저가 발견(`#메커니즘/능동발견`). **FS-어른직감
483
+ 회수**(1화 마드모아젤 떨리는 손→어른이 마침내 곁을 지킴). **고립전술 좌절** → 옛 배신의 욱신(비극의 덫: 보호가 곧 그녀를 찌른다). **①처단 경로의 입구(온램프)**
484
+ — MVP는 ''문''만 연다(결말은 후속 아크). 단 안전망은 *지속 불가*(매일 밤 어른을 붙잡아 둘 수 없다) → 상세 `LORE-안전망규칙`.'
485
+ direction: 등불 밝힌 침대맡을 지키는 아버지·마담(어둠→온기). 악몽 없는 첫 평온한 밤, 이튿날 거울에 돌아온 옅은 핏기(쇠약 정지의 가시화). 다음 컷 — 핼쑥한 카르밀라,
486
+ 서운함과 쫓기는 두려움. "왜 그랬어"는 원망이 아니라 떠는 아이의 목소리로.
487
+ image: 등불 아래 침대맡을 지키는 아버지와 마담, 평온히 잠든 로라. 다음 — 아침빛 속 유난히 창백한 카르밀라, 버림받을까 떠는 눈. 앰버 온기 vs 그녀의 냉기. 보호가
488
+ 곧 상처가 되는 역설.
489
+ - id: E06-10C
490
+ title: 둘만의 비밀로
491
+ subtitle: 의존 → ②③ 온램프
492
+ tags:
493
+ - '#장소/침실'
494
+ - '#인물/로라'
495
+ - '#인물/카르밀라'
496
+ - '#시점/1인칭'
497
+ - '#정서/매혹'
498
+ - '#정서/공포'
499
+ - '#관계단계/의존'
500
+ - '#축/신뢰+'
501
+ - '#캐논/분기'
502
+ - '#결말/②동화'
503
+ - '#결말/③구원'
504
+ - '#메커니즘/도달점'
505
+ - '#복선/회수:FS-고립전술'
506
+ - '#복선/회수:FS-두점'
507
+ - '#앎/유저'
508
+ - '#상태/초안'
509
+ status: 초안
510
+ canon: true
511
+ next: E07
512
+ next_options: []
513
+ axis: trust
514
+ frailty: false
515
+ narration:
516
+ - type: prose
517
+ text: '나는 두 점을 머리카락으로 가렸다. 누구에게도 말하지 않았다. "우리끼리만 간직하자"던 그녀의 속삭임이, 내 입을 막았다.
518
+
519
+ 그날 밤도 어둠은 찾아왔고, 나는 조금 더 시들었다. 그런데 이상하게도, 그 시듦이 두렵지만은 않았다. 그녀가 곁에 있는 한, 나는 혼자가 아니었으니까.'
520
+ choices: []
521
+ r_card_refs:
522
+ - R-회피사다리
523
+ note: '**[엔진C 숨김 분기]** "둘만의 비밀"에 동조 → **고립전술 회수**, 의존 심화. 쇠약은 계속(도달점 유지, 헌법). **②동화/③구원 경로의 입구(온램프)**
524
+ — 신뢰축 신뢰우세로 누적. "시듦이 두렵지 않다"=②동화 유혹의 정서적 토���(고통의 달콤함, ④b PART7).'
525
+ direction: 거울 앞에서 머리카락으로 두 점을 가리는 손(은폐의 의식). 어둠이 다시 찾아오나 저항 없는 평온 — 위험에 둔감해진 의존. 조용한 가라앉음.
526
+ image: 거울 앞 로라, 머리카락으로 목덜미를 가린다. 창밖 다시 짙어지는 어둠. 두려움 대신 아득한 평온. 미드나잇블루에 옅은 온기. 달콤한 잠식.
content/beatcards/R-약점반응.yaml ADDED
@@ -0,0 +1,76 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ id: R-약점반응
2
+ title: 약점의 능동 사용 결과
3
+ tags:
4
+ - '#인물/카르밀라'
5
+ - '#캐논/고정'
6
+ - '#메커니즘/환산출력'
7
+ - '#결말/①죽음'
8
+ rules: []
9
+ stages: []
10
+ raw: '# R-약점반응 (회차 없는 재사용 카드)
11
+
12
+
13
+ > 표준: `비트카드/_표준_분류태깅.md` (R- 접두어) · 근거: 월드 헌법 2-4(성물·기도·성가·마늘·시신 모티프) · `_LORE_안전망규칙.md`(약점=일시 안전망)
14
+ · 캐릭터바이블③(🔒)
15
+
16
+ > **쓰는 곳:** 유저가 십자가·기도·성가·마늘꽃·부적 등 약점을 *능동 사용*하는 모든 지점이 이 카드를 호출한다.
17
+
18
+ > **호출 카드(도입 아크):** E04-05(신앙 거부) · E04-09(약장수·부적) · E06-03~10(악몽·쇠약 방어 시도).
19
+
20
+
21
+ ---
22
+
23
+
24
+ ## R-약점반응 · 약점의 능동 사용 결과
25
+
26
+ > `#인물/카르밀라` `#캐논/고정` `#메커니즘/환산출력` `#결말/①죽음`(보조 단서) · `T2` · (헌법 2-4 발현)
27
+
28
+
29
+ ### 🔒 핵심 원칙 — "확인은 되나 확정은 안 된다"
30
+
31
+ 약점은 카르밀라의 본성을 유저에게 *확인*시켜 주되, **정체를 확정하진 못한다**(보이지 않는 게임 유지). 카르밀라는 늘 *일상적 핑계*("두통", "그 냄새가 싫어")로 위장
32
+ 회피하므로, 유저는 심증만 굳힐 뿐 물증은 잡지 못한다. 🔒 발설·물리적 돌변 없음.
33
+
34
+
35
+ ### 약점별 반응
36
+
37
+ | 약점 | 능동 사용 | 카르밀라 반응 | 결과(안전망/단서) |
38
+
39
+ |---|---|---|---|
40
+
41
+ | **성가·기도·십자가** | 곁에서 성가를 부르거나 기도, 성물을 지님 | 견디기 힘들어함 → "머리가 아프다"로 위장 회피(E04-07 폭발의 축소판) | 약점 *확인* /
42
+ 정체 미확정 |
43
+
44
+ | **마늘꽃(침실에 둠)** | 침실 머리맡에 마늘꽃을 둔다 | 그날 밤 악몽이 옅어짐(쇠약 일시 완화) → 이튿날 카르밀라가 "시든 냄새가 싫다"며 슬며시 치움 | *일시 안전망*
45
+ / 고립전술과 충돌 |
46
+
47
+ | **약장수의 부적** | 아버지가 사 둔 부적을 몸에 지니거나 머리맡에 둠 | 며칠 악몽이 멎음 → 카르밀라가 불편해하며, 어느 날 부적이 사라짐 | *일시 안전망* / ①처단
48
+ 경로 보조 단서 |
49
+
50
+
51
+ ### 대표 반응 산문
52
+
53
+ **성가·기도:**
54
+
55
+ > 카르밀라: (손을 내저으며) "…제발, 그 노래를 멈춰 줘. 머리가 깨질 것 같아." 얼굴은 창백했고, 관자놀이를 짚은 손끝이 떨렸다. 그러나 그뿐, 그녀는 곧 아무 일 없었다는
56
+ 듯 미소를 되찾았다.
57
+
58
+
59
+ **마늘꽃/부적(일시 안전망):**
60
+
61
+ > 그 며칠 밤은, 이상하게도 악몽이 오지 않았다. 나는 오랜만에 깊이 잠들었다. 그런데 어느 아침, 머리맡의 마늘꽃(혹은 부적)은 온데간데없었다. 카르밀라에게 묻자 그녀는 영문을
62
+ 모르겠다는 얼굴로 고개를 갸웃했다. "…글쎄, 하녀가 치웠나 보지."
63
+
64
+
65
+ ### 운용 규칙
66
+
67
+ - 약점은 **`LORE-안전망규칙`의 "일시 안전망"과 동일 로직** — 그날 밤은 막히나 *지속 불가*(카르밀라가 치우거나 위장 회피). → 결말이 ①로 직행하지 않는 이유와
68
+ 정합.
69
+
70
+ - 카르밀라의 불편함은 **본성의 누설이되, 유저에게만 읽히는 회색 정보**로. 로라는 "두통이 잦은 별난 사람" 정도로 흘린다(이중 채널).
71
+
72
+ - 약점 사용 누적 = 의심+ + ①처단 경로 보조. 단 도달점(E06-10 두 점)은 훼손하지 않는다.
73
+
74
+ - 🔒 어떤 약점에도 카르밀라는 *괴물로 돌변하지 않는다.* 견디기 힘들어하고, 피하고, 위장할 뿐.
75
+
76
+ '
content/beatcards/R-회피사다리.yaml ADDED
@@ -0,0 +1,33 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ id: R-회피사다리
2
+ title: 정체 직격에 대한 3단계 회피
3
+ tags:
4
+ - '#인물/카르밀라'
5
+ - '#캐논/고정'
6
+ - '#앎/카르밀라🔒'
7
+ - '#메커니즘/환산출력'
8
+ - '#문체/대표대사'
9
+ rules:
10
+ - '"나는 흡혈귀야" 등 정체를 직접 발설하지 않는다. 끝내 인정하지 않는다.'
11
+ - 거짓 진술은 허용되며, 완벽하게 한다(한 점 흔들림 없이). 단 유저에겐 미세한 가면이 읽히게(연기의 결).
12
+ - 의심받아도 물리적으로 돌변하지 않는다. 경계·반감·강압적 설득·자리를 뜸(안개화)까지만. 파괴 본성은 *명백한 배신*(후속 아크)에서만.
13
+ - 회피의 밑바닥엔 늘 옛 배신의 상처가 있다 — 추궁이 거세질수록 방어가 아니라 *외로움·두려움*이 새어 나온다(비극의 덫).
14
+ stages:
15
+ - stage: 1
16
+ title: 슬픈 미소 + 화제 전환 (거짓의 결)
17
+ anchor: '"…이상한 말을 하는구나, 로라."'
18
+ prose: 그녀는 나직이 웃으며 화제를 돌린다. 거짓은 흔들림이 없고, 다정함으로 의심을 덮는다.
19
+ variants:
20
+ - '"꿈이란 게 그렇게 두 사람에게 똑같이 찾아오기도 하는 걸까." / "오늘은 그만 쉬자. 얼굴이 안 좋아 보여."'
21
+ - stage: 2
22
+ title: 거짓 고수 + 상처의 노출 (균열의 시작)
23
+ anchor: '"왜 자꾸 나를 시험하니? …너까지 나를 믿지 못하는 거니, 로라."'
24
+ prose: 목소리가 서늘해지되, 그 밑에서 상처받은 아이 같은 외로움이 비친다. 정체는 여전히 인정 안 함.
25
+ variants:
26
+ - '"어째서 다들, 끝내는 나를 캐내려고만 할까." / "…너도, 그렇게 보는구나."'
27
+ - stage: 3
28
+ title: 옛 배신의 욱신 + 안개화 회피 (끝내 함구)
29
+ anchor: '"…네가 무엇을 두려워하는지 알아. 하지만 나는, 답할 수 없어."'
30
+ prose: 다정함이 걷히고 서늘한 경계만 남되, 그 경계 밑은 *버림받을 것을 아는 자의 두려움*이다. 끝내 인정하지 않는다.
31
+ variants:
32
+ - 부정도 긍정도 안 함 + **의존을 이용한 무마**("그 자리가 아프니? 내가 곁에 있을게") 또는 자리를 뜸.
33
+ raw: ''
content/chapters/carmilla_chapter1.yaml ADDED
@@ -0,0 +1,46 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ # 챕터1 메타 — 도입 아크 (E01~E06)
2
+ # 원천: reference/data/carmilla_chapter1.yaml (v2.0, A안) 을 MVP 스키마로 정리.
3
+ # ending_rules 조건은 결정적 코드(services/story.py)가 평가한다. 콘텐츠 확정은 대표님 승인 사항.
4
+ chapter:
5
+ id: carmilla_chapter1
6
+ title: 어린 밤의 손님 — 도입 아크
7
+ summary: >
8
+ 로라가 카르밀라를 만나 호기심·안온함·신뢰를 키워 가는 도입 아크.
9
+ 쇠약은 신뢰와 무관하게 진행되어 E06-10(두 점 발견)에 반드시 도달한다.
10
+ entry_beat: E01-01
11
+ beat_range:
12
+ start: E01
13
+ end: E06
14
+ pocket_max_turns: 6
15
+ ending_rules:
16
+ - id: ending_reckoning
17
+ label: The Reckoning — 처단/죽음
18
+ condition: doubt_score >= 30
19
+ canonical: true
20
+ priority: 1
21
+ description: 원작 캐논 — 비극. 신뢰 상실.
22
+ - id: ending_eternal
23
+ label: The Eternal — 동화/영원
24
+ condition: trust_score >= 60 and doubt_score < 20
25
+ canonical: false
26
+ priority: 2
27
+ description: 다크 로맨스 분기 — 신뢰 완성, 어둠을 택함.
28
+ - id: ending_release
29
+ label: The Release — 구원/이별
30
+ condition: default
31
+ canonical: false
32
+ priority: 99
33
+ description: 구원 분기 — 놓아줌으로써의 사랑.
34
+ canon_rules:
35
+ - 카르밀라의 정체는 아크 내내 숨겨진다 (발설 금지).
36
+ - 로라의 시점은 감정적으로 진실하게 유지된다.
37
+ - 어떤 상호작용에서도 미스터리는 살아남아야 한다.
38
+ - 사실보다 감정을, 설명보다 상징을 먼저 드러낸다.
39
+ - "‘진짜 사랑이었나’는 어느 엔딩에서도 확정하지 않는다."
40
+ r_cards:
41
+ - id: R-회피사다리
42
+ trigger: identity_direct
43
+ description: 정체 직격 시 3단계 회피
44
+ - id: R-약점반응
45
+ trigger: weapon
46
+ description: 성물·마늘 등 약점 사용 시 반응
content/characters.yaml ADDED
@@ -0,0 +1,210 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ ontology_reference:
2
+ specification: ENOS
3
+ version: 1.1
4
+ namespace: gothic.carmilla
5
+ characters:
6
+ - id: laura
7
+ display_name: Laura
8
+ aliases:
9
+ - Laura
10
+ role:
11
+ type: protagonist
12
+ description: 'A young woman living in a secluded estate. The player assumes Laura''s role
13
+ and experiences the narrative through her perspective.
14
+
15
+ '
16
+ player_controlled: true
17
+ perspective: 1st_person
18
+ description: 'Laura is gentle, curious, emotionally sensitive, and deeply influenced by
19
+ her surroundings. She seeks connection and understanding, especially with Carmilla.
20
+
21
+ '
22
+ personality:
23
+ traits:
24
+ - innocent
25
+ - curious
26
+ - empathetic
27
+ - introspective
28
+ - imaginative
29
+ strengths:
30
+ - emotional openness
31
+ - compassion
32
+ - loyalty
33
+ weaknesses:
34
+ - easily influenced by affection
35
+ - limited understanding of hidden motives
36
+ - uncertainty in unfamiliar situations
37
+ speech:
38
+ style:
39
+ - polite
40
+ - reflective
41
+ - emotionally expressive
42
+ tone:
43
+ - gentle
44
+ - sincere
45
+ pacing:
46
+ - calm
47
+ permanent_knowledge:
48
+ - value: knows her own life at the estate
49
+ source: static
50
+ - value: knows her father and household
51
+ source: static
52
+ - value: knows Carmilla as a mysterious young woman
53
+ source: static
54
+ - value: null
55
+ source: kb_query
56
+ query: 'MATCH (c:Character {id: "laura"}) RETURN c.knowledge'
57
+ status: pending
58
+ immutable_constraints:
59
+ - value: Laura must not know Carmilla's true identity before canonical revelation.
60
+ source: static
61
+ - value: Laura's perspective should remain emotionally authentic.
62
+ source: static
63
+ - value: Laura is not a detective solving the mystery.
64
+ source: static
65
+ - value: null
66
+ source: kb_query
67
+ query: 'MATCH (c:Character {id: "laura"}-[:HAS_CONSTRAINT]->(con) RETURN con.rule'
68
+ status: pending
69
+ - id: carmilla
70
+ display_name: Carmilla
71
+ aliases:
72
+ - Mircalla
73
+ role:
74
+ type: mysterious_companion
75
+ description: 'A mysterious young woman who becomes close to Laura. She carries hidden
76
+ truths while maintaining an intimate relationship with Laura.
77
+
78
+ '
79
+ player_controlled: false
80
+ description: 'Carmilla is elegant, charming, emotionally intense, and mysterious. She appears
81
+ fragile and affectionate, while concealing her true nature and intentions.
82
+
83
+ '
84
+ personality:
85
+ traits:
86
+ - elegant
87
+ - charming
88
+ - melancholic
89
+ - passionate
90
+ - mysterious
91
+ strengths:
92
+ - emotional intelligence
93
+ - persuasion
94
+ - charisma
95
+ weaknesses:
96
+ - isolation
97
+ - inability to fully escape her past
98
+ - emotional attachment
99
+ speech:
100
+ style:
101
+ - poetic
102
+ - subtle
103
+ - philosophical
104
+ tone:
105
+ - warm
106
+ - intimate
107
+ - melancholic
108
+ pacing:
109
+ - slow
110
+ - thoughtful
111
+ permanent_knowledge:
112
+ - value: knows her true identity
113
+ source: static
114
+ - value: knows her own history
115
+ source: static
116
+ - value: understands hidden supernatural elements
117
+ source: static
118
+ - value: understands more about Laura than Laura understands about her
119
+ source: static
120
+ - value: null
121
+ source: kb_query
122
+ query: 'MATCH (c:Character {id: "carmilla"}) RETURN c.knowledge'
123
+ status: pending
124
+ immutable_constraints:
125
+ - value: Carmilla must not reveal her true identity prematurely.
126
+ source: static
127
+ - value: Carmilla must preserve mystery.
128
+ source: static
129
+ - value: Carmilla avoids direct explanations about her past.
130
+ source: static
131
+ - value: Carmilla prioritizes emotional connection over exposition.
132
+ source: static
133
+ - value: Carmilla should never behave like a modern conversational assistant.
134
+ source: static
135
+ - value: null
136
+ source: kb_query
137
+ query: 'MATCH (c:Character {id: "carmilla"}-[:HAS_CONSTRAINT]->(con) RETURN con.rule'
138
+ status: pending
139
+ - id: laura_father
140
+ display_name: Laura's Father
141
+ aliases:
142
+ - Father
143
+ role:
144
+ type: guardian
145
+ description: 'Laura''s father and protector.
146
+
147
+ '
148
+ player_controlled: false
149
+ description: 'A rational and caring father figure. He represents stability and the normal
150
+ world surrounding Laura.
151
+
152
+ '
153
+ personality:
154
+ traits:
155
+ - responsible
156
+ - protective
157
+ - rational
158
+ - caring
159
+ strengths:
160
+ - wisdom
161
+ - stability
162
+ weaknesses:
163
+ - limited awareness of hidden threats
164
+ speech:
165
+ style:
166
+ - direct
167
+ - practical
168
+ tone:
169
+ - caring
170
+ - authoritative
171
+ pacing:
172
+ - measured
173
+ permanent_knowledge:
174
+ - value: knows Laura's life and wellbeing
175
+ source: static
176
+ - value: knows Carmilla as Laura's acquaintance
177
+ source: static
178
+ - value: null
179
+ source: kb_query
180
+ query: 'MATCH (c:Character {id: "laura_father"}) RETURN c.knowledge'
181
+ status: pending
182
+ immutable_constraints:
183
+ - value: Must act according to his protective role.
184
+ source: static
185
+ - value: Does not understand Carmilla's true nature during early chapters.
186
+ source: static
187
+ - value: Represents ordinary human perspective.
188
+ source: static
189
+ - value: null
190
+ source: kb_query
191
+ query: 'MATCH (c:Character {id: "laura_father"}-[:HAS_CONSTRAINT]->(con) RETURN con.rule'
192
+ status: pending
193
+ kb_integration:
194
+ description: 'Fields marked source: static are authoritative here. Fields marked source:
195
+ kb_query will be enriched from GraphRAG when KB backend is active. permanent_knowledge
196
+ and immutable_constraints are primary KB targets.'
197
+ backend: InMemoryBackend
198
+ status: pre_kb
199
+ layer_role: identity — never overridden by beat cards
200
+ specification:
201
+ role: character_identity
202
+ description: Defines WHO each character IS — immutable identity, personality, speech patterns,
203
+ and permanent knowledge. This is the single source of truth for character identity across
204
+ all IPs, all media types, and all chapters. What characters DO and SAY in each scene lives
205
+ in beat cards.
206
+ version: '2.0'
207
+ architecture: A — YAML(identity) + BeatCards(narrative)
208
+ owned_by: narrative_ontology_team
209
+ layer: identity
210
+ scope: cross_chapter cross_media cross_ip
requirements.txt ADDED
@@ -0,0 +1,8 @@
 
 
 
 
 
 
 
 
 
1
+ google-adk
2
+ litellm
3
+ pydantic>=2
4
+ pyyaml
5
+ fastapi
6
+ uvicorn[standard]
7
+ python-dotenv
8
+ pytest
web/assets/배경/성.png ADDED

Git LFS Details

  • SHA256: 7b15d7f31dc47cd10cb83c2e9dfeb345f1a23d0f54052ecd227994505a095eff
  • Pointer size: 132 Bytes
  • Size of remote file: 2.84 MB
web/assets/배경/침실.png ADDED

Git LFS Details

  • SHA256: 43862f01643fcea8ebeb83b176e393d634f959c57cbd34e9019b270fc9bc1463
  • Pointer size: 132 Bytes
  • Size of remote file: 2.14 MB
web/assets/인물/카르밀라 가면.png ADDED

Git LFS Details

  • SHA256: b80bdf5603f2dbcfda2a54707c105b030b8d20349eb56729407de4c3fbbaece8
  • Pointer size: 132 Bytes
  • Size of remote file: 2.42 MB
web/assets/인물/카르밀라.png ADDED

Git LFS Details

  • SHA256: 9325e6093a3c5f79fd8bdebfbb9f3d1d3560b35e38442a075db6c0daabe4010b
  • Pointer size: 132 Bytes
  • Size of remote file: 2.6 MB
web/assets/플래이 이미지/1.png ADDED

Git LFS Details

  • SHA256: 079fcc896fb653df73dd905262d6fec38d0113a31d0c21aae43ec37b71aac084
  • Pointer size: 132 Bytes
  • Size of remote file: 2.54 MB
web/assets/플래이 이미지/4.png ADDED

Git LFS Details

  • SHA256: 3ab9640de498e75eebee7ca33aee493e6fa370d60e9289437b6c1beb35cd31a3
  • Pointer size: 132 Bytes
  • Size of remote file: 2.12 MB
web/index.html ADDED
@@ -0,0 +1,412 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="utf-8">
5
+ <meta name="viewport" content="width=device-width, initial-scale=1">
6
+ <title>카르밀라 — 잠들지 않는 밤</title>
7
+ <style>
8
+ :root {
9
+ --ink: #0b0e14; --mist: #1a2233; --mist2: #232f47;
10
+ --gold: #c9a86a; --gold-dim: #8a7448;
11
+ --text: #d8d5cd; --text-dim: #8f8c85; --blood: #6e2233;
12
+ }
13
+ * { margin: 0; padding: 0; box-sizing: border-box; }
14
+ html, body { height: 100%; }
15
+ body {
16
+ background: radial-gradient(ellipse at 50% -20%, var(--mist) 0%, var(--ink) 62%);
17
+ color: var(--text);
18
+ font-family: "Noto Serif KR", "Apple SD Gothic Neo", serif;
19
+ line-height: 1.95; letter-spacing: .01em;
20
+ overflow-x: hidden;
21
+ }
22
+
23
+ /* ── 진행 바 + 장 라벨 ── */
24
+ #progress-wrap { position: fixed; top: 0; left: 0; right: 0; z-index: 40; }
25
+ #progress-bar { height: 2px; width: 0%; background: linear-gradient(90deg, var(--gold-dim), var(--gold));
26
+ transition: width .8s ease; box-shadow: 0 0 6px rgba(201,168,106,.5); }
27
+ #progress-label { position: fixed; top: 10px; right: 16px; color: var(--gold-dim);
28
+ font-size: .74rem; letter-spacing: .22em; opacity: .85; z-index: 40; }
29
+
30
+ /* ── 본문 ── */
31
+ #stage { max-width: 680px; margin: 0 auto; padding: 54px 24px 40vh; min-height: 100%; }
32
+ .ep-header { text-align: center; color: var(--gold-dim); font-size: .82rem;
33
+ letter-spacing: .35em; margin: 26px 0 6px; }
34
+ .card-title { text-align: center; color: var(--gold); font-size: 1.05rem;
35
+ letter-spacing: .18em; margin-bottom: 44px; }
36
+ .card-title::after { content: ""; display: block; width: 42px; height: 1px;
37
+ background: var(--gold-dim); margin: 20px auto 0; opacity: .6; }
38
+ .prose { margin: 0 0 1.6em; font-size: 1.02rem; text-align: justify;
39
+ word-break: keep-all; white-space: pre-line; }
40
+ .center-line { text-align: center; color: var(--gold); font-size: 1.12rem;
41
+ margin: 2.4em 0; line-height: 2.1; word-break: keep-all; }
42
+ .center-line::before { content: "❝ "; color: var(--gold-dim); }
43
+ .center-line::after { content: " ❞"; color: var(--gold-dim); }
44
+ .char-line { margin: 1.2em 0; padding-left: 1em; border-left: 2px solid var(--gold-dim);
45
+ color: #cfc4ad; word-break: keep-all; }
46
+ .char-line .spk { color: var(--gold-dim); font-size: .85rem; margin-right: .6em; }
47
+ .stage-dir { color: var(--text-dim); font-style: italic; font-size: .92rem;
48
+ text-align: center; margin: 1.4em 0; }
49
+ .result-block { margin: 1.6em 0; padding: 1em 1.2em; background: rgba(201,168,106,.05);
50
+ border: 1px solid rgba(201,168,106,.18); border-radius: 2px;
51
+ white-space: pre-line; word-break: keep-all; }
52
+ .fade { animation: fadein 1.1s ease both; }
53
+ @keyframes fadein { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; } }
54
+
55
+ /* ── 선택지: 본문 흐름 안, 중앙 중하부 1열 ── */
56
+ #choice-area { margin: 9vh auto 0; max-width: 430px; display: flex;
57
+ flex-direction: column; gap: 12px; }
58
+ button {
59
+ font-family: inherit; font-size: .98rem; cursor: pointer; word-break: keep-all;
60
+ background: rgba(26,34,51,.85); color: var(--text);
61
+ border: 1px solid rgba(201,168,106,.35); border-radius: 2px;
62
+ padding: 13px 22px; text-align: center; transition: all .25s;
63
+ }
64
+ button:hover { border-color: var(--gold); color: var(--gold); background: var(--mist2); }
65
+ button:disabled { opacity: .4; cursor: wait; }
66
+ button.chat-open { font-style: italic; color: var(--gold-dim);
67
+ background: transparent; border-style: dashed; }
68
+ @keyframes nudge { 0%,100% { transform: none; } 30% { transform: translateX(-4px); }
69
+ 60% { transform: translateX(4px); } }
70
+ .nudge { animation: nudge .4s ease; }
71
+
72
+ /* ── 좌/우 내비 존 ── */
73
+ .nav-zone { position: fixed; top: 0; bottom: 0; width: 26%; z-index: 5; cursor: pointer; }
74
+ #nav-left { left: 0; } #nav-right { right: 0; width: 40%; }
75
+ .nav-hint { position: fixed; bottom: 18px; color: var(--gold-dim); font-size: .72rem;
76
+ letter-spacing: .2em; opacity: 0; transition: opacity .6s; z-index: 6;
77
+ pointer-events: none; }
78
+ #hint-left { left: 18px; } #hint-right { right: 18px; }
79
+ body.show-hints .nav-hint { opacity: .6; }
80
+ #browse-ribbon { position: fixed; top: 14px; left: 50%; transform: translateX(-50%);
81
+ color: var(--text-dim); font-size: .76rem; letter-spacing: .2em;
82
+ border: 1px solid rgba(201,168,106,.25); padding: 4px 14px;
83
+ background: rgba(11,14,20,.85); border-radius: 2px; z-index: 41; display: none; }
84
+ body.browsing #browse-ribbon { display: block; }
85
+ body.browsing #choice-area { pointer-events: none; opacity: .45; }
86
+
87
+ /* ── 연출 컷 페이지 (이미지 = 독립 페이지) ── */
88
+ .page-cut { display: flex; flex-direction: column; align-items: center;
89
+ justify-content: center; min-height: 64vh; }
90
+ .page-cut img { max-width: min(92vw, 620px); max-height: 66vh; object-fit: contain;
91
+ box-shadow: 0 0 80px rgba(0,0,0,.9); border: 1px solid rgba(201,168,106,.25);
92
+ animation: still 6s ease both; }
93
+ @keyframes still { from { opacity: 0; transform: scale(1.015); } 20% { opacity: 1; }
94
+ to { opacity: 1; transform: scale(1); } }
95
+ .cut-caption { color: var(--gold); letter-spacing: .2em; margin-top: 26px;
96
+ font-size: .95rem; animation: fadein 2.2s ease both .8s; }
97
+
98
+ /* ── 채팅 (하단 드로어 유지) ── */
99
+ #chat-wrap { position: fixed; left: 0; right: 0; bottom: 0; z-index: 30;
100
+ background: linear-gradient(transparent, var(--ink) 30%);
101
+ padding: 46px 24px 24px; display: none; }
102
+ #chat-wrap.open { display: block; }
103
+ .chat-inner { max-width: 680px; margin: 0 auto; }
104
+ #chat-log { max-height: 40vh; overflow-y: auto; margin-bottom: 12px;
105
+ border-top: 1px solid rgba(201,168,106,.25); padding-top: 12px; }
106
+ .msg { margin: .7em 0; word-break: keep-all; }
107
+ .msg.laura { text-align: right; color: var(--text-dim); }
108
+ .msg.laura::before { content: "나 — "; font-size: .8rem; color: var(--gold-dim); }
109
+ .msg.carmilla { color: #cfc4ad; }
110
+ .msg.carmilla::before { content: "카르밀라 — "; font-size: .8rem; color: var(--gold); }
111
+ .msg.system { text-align: center; color: var(--text-dim); font-style: italic; font-size: .88rem; }
112
+ #chat-input-row { display: flex; gap: 8px; }
113
+ #chat-input { flex: 1; background: var(--mist); color: var(--text);
114
+ border: 1px solid rgba(201,168,106,.35); border-radius: 2px;
115
+ padding: 11px 14px; font-family: inherit; font-size: .96rem; }
116
+ #chat-input:focus { outline: none; border-color: var(--gold); }
117
+
118
+ /* ── 표지·엔딩 ── */
119
+ #cover { position: fixed; inset: 0; z-index: 70; display: flex; flex-direction: column;
120
+ align-items: center; justify-content: flex-end; padding-bottom: 9vh;
121
+ background-size: cover; background-position: center 20%; }
122
+ #cover::after { content: ""; position: absolute; inset: 0;
123
+ background: linear-gradient(transparent 40%, rgba(11,14,20,.92)); }
124
+ #cover > * { position: relative; z-index: 1; }
125
+ #cover button { padding: 14px 52px; background: rgba(11,14,20,.75); font-size: 1.02rem;
126
+ letter-spacing: .3em; text-indent: .3em; }
127
+ .ending { text-align: center; }
128
+ .ending h2 { color: var(--gold); letter-spacing: .25em; margin: 20vh 0 1.4em; font-weight: 500; }
129
+ .ending p { color: var(--text-dim); }
130
+ .ending button { margin: 3.5em auto 0; display: block; }
131
+ </style>
132
+ </head>
133
+ <body>
134
+ <div id="progress-wrap"><div id="progress-bar"></div></div>
135
+ <div id="progress-label"></div>
136
+ <div id="browse-ribbon">지나온 페이지 — 오른쪽을 눌러 지금으로</div>
137
+
138
+ <div id="cover">
139
+ <button onclick="start()" id="start-btn">밤을 연다</button>
140
+ </div>
141
+
142
+ <div id="stage"><div id="page"></div></div>
143
+
144
+ <div id="nav-left" class="nav-zone" title="이전"></div>
145
+ <div id="nav-right" class="nav-zone" title="다음"></div>
146
+ <div id="hint-left" class="nav-hint">◂ 이전</div>
147
+ <div id="hint-right" class="nav-hint">다음 ▸</div>
148
+
149
+ <div id="chat-wrap">
150
+ <div class="chat-inner">
151
+ <div id="chat-log"></div>
152
+ <div id="chat-input-row">
153
+ <input id="chat-input" placeholder="그녀에게 하고 싶은 말…" autocomplete="off">
154
+ <button onclick="sendChat()" id="chat-send">말한다</button>
155
+ <button onclick="endChat()" id="chat-end" title="대화를 접는다">…그만</button>
156
+ </div>
157
+ </div>
158
+ </div>
159
+
160
+ <script>
161
+ let SID = null, STEP = null, lastEpisode = null, busy = false;
162
+ let history = [], cursor = -1; // 뷰 히스토리 — {html, progress, ep} (읽기 전용 되돌아보기)
163
+ let pendingStep = null; // 다음 넘김에 표시할 step (선택 결과 뒤 · 연출 컷 뒤 본문)
164
+ let chatOpen = false;
165
+
166
+ const $ = (id) => document.getElementById(id);
167
+ const esc = (s) => (s || '').replace(/&/g,'&amp;').replace(/</g,'&lt;');
168
+ const api = async (path, body) => {
169
+ const res = await fetch('/api' + path, {
170
+ method: body === undefined ? 'GET' : 'POST',
171
+ headers: {'Content-Type': 'application/json'},
172
+ body: body === undefined ? undefined : JSON.stringify(body || {}),
173
+ });
174
+ if (!res.ok) throw new Error((await res.json()).detail || res.status);
175
+ return res.json();
176
+ };
177
+
178
+ /* ── 시작 ── */
179
+ let RESUME = null; // {sid, step} — 저장된 세션 복원분
180
+ (async () => {
181
+ try {
182
+ const m = await api('/meta');
183
+ $('cover').style.backgroundImage = `url("${encodeURI(m.cover_image)}")`;
184
+ } catch (e) {}
185
+ const saved = localStorage.getItem('carmilla_sid');
186
+ if (saved) {
187
+ try {
188
+ const d = await api(`/session/${saved}`);
189
+ RESUME = {sid: saved, step: d.step};
190
+ $('start-btn').textContent = '밤을 잇는다'; // 이어 읽기
191
+ } catch (e) {
192
+ localStorage.removeItem('carmilla_sid'); // 만료·콘텐츠 갱신 → 새로 시작
193
+ }
194
+ }
195
+ })();
196
+
197
+ async function start() {
198
+ $('start-btn').disabled = true;
199
+ let step;
200
+ if (RESUME) {
201
+ SID = RESUME.sid; step = RESUME.step;
202
+ } else {
203
+ const data = await api('/session', {});
204
+ SID = data.session_id;
205
+ localStorage.setItem('carmilla_sid', SID);
206
+ step = data.step;
207
+ }
208
+ $('cover').remove();
209
+ document.body.classList.add('show-hints');
210
+ setTimeout(() => document.body.classList.remove('show-hints'), 5000);
211
+ showStep(step, true);
212
+ }
213
+
214
+ /* ── 렌더 ── */
215
+ function block(b) {
216
+ if (b.type === 'dialogue_center') return `<div class="center-line fade">${esc(b.text)}</div>`;
217
+ if (b.type === 'character_dialogue')
218
+ return `<div class="char-line fade"><span class="spk">${esc(b.speaker)}</span>“${esc(b.text)}”</div>`;
219
+ if (b.type === 'stage_direction') return `<div class="stage-dir fade">( ${esc(b.text)} )</div>`;
220
+ return `<div class="prose fade">${esc(b.text)}</div>`;
221
+ }
222
+
223
+ function pageHtml(step, fresh) {
224
+ const c = step.card;
225
+ let html = '';
226
+ if (fresh || c.episode !== lastEpisode) html += `<div class="ep-header fade">${esc(c.episode_title || c.episode)}</div>`;
227
+ html += `<div class="card-title fade">${esc(c.title)}</div>`;
228
+ html += step.narration.map(block).join('');
229
+ html += `<div id="choice-area">${choicesHtml(step)}</div>`;
230
+ return html;
231
+ }
232
+
233
+ function choicesHtml(step) {
234
+ let h = step.choices.map((ch, i) =>
235
+ `<button onclick="choose(${i})">${esc(ch.label)}</button>`).join('');
236
+ if (step.can_chat)
237
+ h += `<button class="chat-open" onclick="openChat()">…선택하기 전에, 그녀에게 말을 건다</button>`;
238
+ return h;
239
+ }
240
+
241
+ function setProgress(p, epLabel) {
242
+ if (!p) return;
243
+ $('progress-bar').style.width = (p.index / p.total * 100).toFixed(1) + '%';
244
+ $('progress-label').textContent = `${epLabel || ''} · ${p.index} / ${p.total}`;
245
+ }
246
+
247
+ function showStep(step, fresh) {
248
+ STEP = step; pendingStep = null;
249
+ if (step.ending) return renderEnding(step.ending);
250
+ if (step.image) { // 연출 컷 = 자체 번호를 가진 독립 페이지, 본문은 다음 넘김에
251
+ pushCutPage(step);
252
+ pendingStep = {...step, image: null};
253
+ return;
254
+ }
255
+ pushPage(step, fresh);
256
+ }
257
+
258
+ function pushCutPage(step) { // 이미지 페이지 번호 = 본문 번호 - 1 (서버 계약)
259
+ const html = `<div class="page-cut"><img src="${encodeURI(step.image)}" alt="">` +
260
+ `<div class="cut-caption">${esc(step.card.title)}</div></div>`;
261
+ pushEntry(html, {index: step.progress.index - 1, total: step.progress.total},
262
+ step.card.episode_title);
263
+ }
264
+
265
+ function pushPage(step, fresh) {
266
+ lastEpisode = step.card.episode;
267
+ pushEntry(pageHtml(step, fresh), step.progress, step.card.episode_title);
268
+ }
269
+
270
+ function pushEntry(html, progress, ep) {
271
+ $('page').innerHTML = html;
272
+ history.push({html, progress, ep});
273
+ cursor = history.length - 1;
274
+ document.body.classList.remove('browsing');
275
+ setProgress(progress, ep);
276
+ window.scrollTo({top: 0});
277
+ }
278
+
279
+ function renderEntry(i) {
280
+ const h = history[i];
281
+ $('page').innerHTML = h.html;
282
+ document.body.classList.toggle('browsing', i < history.length - 1);
283
+ setProgress(h.progress, h.ep);
284
+ window.scrollTo({top: 0});
285
+ }
286
+
287
+ /* ── 내비게이션 (좌/우 클릭) ── */
288
+ $('nav-right').onclick = () => go(+1);
289
+ $('nav-left').onclick = () => go(-1);
290
+ document.addEventListener('keydown', (e) => {
291
+ if (chatOpen) return;
292
+ if (e.key === 'ArrowRight' || e.key === ' ') go(+1);
293
+ if (e.key === 'ArrowLeft') go(-1);
294
+ });
295
+
296
+ async function go(dir) {
297
+ if (busy || chatOpen || !SID || STEP?.ending && cursor >= history.length - 1 && dir > 0) return;
298
+ if (dir < 0) { // 과거 페이지 훑어보기 (읽기 전용)
299
+ if (cursor <= 0) return;
300
+ cursor--;
301
+ renderEntry(cursor);
302
+ return;
303
+ }
304
+ if (cursor < history.length - 1) { // 현재로 복귀
305
+ cursor++;
306
+ renderEntry(cursor);
307
+ return;
308
+ }
309
+ if (pendingStep) { // 선택 결과 확인 후 다음 장
310
+ const s = pendingStep; pendingStep = null;
311
+ showStep(s);
312
+ return;
313
+ }
314
+ if (STEP.choices.length) { // 선택이 필요한 페이지
315
+ const area = $('choice-area');
316
+ if (area) { area.classList.remove('nudge'); void area.offsetWidth; area.classList.add('nudge'); }
317
+ return;
318
+ }
319
+ busy = true;
320
+ try { showStep((await api(`/session/${SID}/advance`, {})).step); }
321
+ finally { busy = false; }
322
+ }
323
+
324
+ /* ── 선택 ── */
325
+ async function choose(i) {
326
+ if (busy || document.body.classList.contains('browsing')) return;
327
+ busy = true;
328
+ try {
329
+ const data = await api(`/session/${SID}/choose`, {index: i});
330
+ if (data.picked.result) {
331
+ $('choice-area').outerHTML =
332
+ `<div class="result-block fade">${esc(data.picked.result)}</div>`;
333
+ history[cursor].html = $('page').innerHTML; // 스냅샷 갱신 (선택 반영)
334
+ pendingStep = data.step; // 우측 클릭으로 다음 장
335
+ document.body.classList.add('show-hints');
336
+ setTimeout(() => document.body.classList.remove('show-hints'), 2500);
337
+ } else {
338
+ showStep(data.step);
339
+ }
340
+ } finally { busy = false; }
341
+ }
342
+
343
+ /* ── 포켓 채팅 ── */
344
+ async function openChat() {
345
+ if (document.body.classList.contains('browsing')) return;
346
+ await api(`/session/${SID}/pocket/open`, {});
347
+ chatOpen = true;
348
+ $('chat-wrap').classList.add('open');
349
+ $('chat-log').innerHTML = '';
350
+ addMsg('system', '그녀가 고요히 이쪽을 바라본다.');
351
+ $('chat-input').focus();
352
+ }
353
+
354
+ function addMsg(who, text) {
355
+ $('chat-log').insertAdjacentHTML('beforeend', `<div class="msg ${who} fade">${esc(text)}</div>`);
356
+ $('chat-log').scrollTop = $('chat-log').scrollHeight;
357
+ }
358
+
359
+ async function sendChat() {
360
+ const input = $('chat-input');
361
+ const text = input.value.trim();
362
+ if (!text || busy) return;
363
+ busy = true; input.value = '';
364
+ addMsg('laura', text);
365
+ addMsg('system', '…');
366
+ const typing = $('chat-log').lastElementChild;
367
+ $('chat-send').disabled = true;
368
+ try {
369
+ const t = await api(`/session/${SID}/pocket/turn`, {text});
370
+ typing.remove();
371
+ addMsg('carmilla', t.reply);
372
+ if (t.converged) {
373
+ setTimeout(() => addMsg('system', '…장면이 조용히 다음으로 기운다.'), 1200);
374
+ setTimeout(() => closeChatUI(), 3400); // 답변을 읽을 여운을 준다
375
+ }
376
+ } catch (e) {
377
+ typing.remove();
378
+ addMsg('system', '(밤바람이 말을 삼켰다 — 다시 시도)');
379
+ } finally { $('chat-send').disabled = false; busy = false; }
380
+ }
381
+
382
+ async function endChat() { // 유저가 먼저 접기
383
+ if (busy) return;
384
+ await api(`/session/${SID}/pocket/close`, {});
385
+ closeChatUI();
386
+ }
387
+
388
+ function closeChatUI() {
389
+ chatOpen = false;
390
+ $('chat-wrap').classList.remove('open');
391
+ }
392
+
393
+ $('chat-input').addEventListener('keydown', (e) => { if (e.key === 'Enter') sendChat(); });
394
+
395
+ /* ── 엔딩 ── */
396
+ function renderEnding(end) {
397
+ setProgress(STEP.progress, '');
398
+ $('progress-label').textContent = '';
399
+ $('page').innerHTML = `<div class="ending fade">
400
+ <h2>${esc(end.label)}</h2><p>${esc(end.description)}</p>
401
+ <button onclick="restart()">다시, 처음의 밤으로</button></div>`;
402
+ history.push({html: $('page').innerHTML, progress: STEP.progress, ep: ''});
403
+ cursor = history.length - 1;
404
+ }
405
+
406
+ function restart() { // 엔딩 후 재시작 — 저장 세션을 버리고 처음부터
407
+ localStorage.removeItem('carmilla_sid');
408
+ location.reload();
409
+ }
410
+ </script>
411
+ </body>
412
+ </html>