@tienne/gestalt 0.17.0 → 0.18.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (171) hide show
  1. package/dist/package.json +1 -1
  2. package/dist/role-agents/presentation-designer/AGENT.md +211 -0
  3. package/dist/role-agents/presentation-designer/templates/broadside.html +292 -0
  4. package/dist/role-agents/presentation-designer/templates/editorial-forest.html +264 -0
  5. package/dist/role-agents/presentation-designer/templates/emerald-editorial.html +273 -0
  6. package/dist/role-agents/presentation-designer/templates/neo-grid.html +407 -0
  7. package/dist/role-agents/presentation-designer/templates/pin-and-paper.html +225 -0
  8. package/dist/role-agents/presentation-designer/templates/pink-script.html +241 -0
  9. package/dist/role-agents/presentation-designer/templates/sakura-chroma.html +293 -0
  10. package/dist/role-agents/presentation-designer/templates/signal.html +403 -0
  11. package/dist/role-agents/presentation-designer/templates/stencil-tablet.html +211 -0
  12. package/dist/role-agents/presentation-designer/templates/studio.html +379 -0
  13. package/dist/skills/agent/SKILL.md +2 -0
  14. package/dist/skills/seed/SKILL.md +92 -0
  15. package/dist/src/cli/commands/monitor.d.ts +2 -0
  16. package/dist/src/cli/commands/monitor.d.ts.map +1 -0
  17. package/dist/src/cli/commands/monitor.js +13 -0
  18. package/dist/src/cli/commands/monitor.js.map +1 -0
  19. package/dist/src/cli/commands/seed.d.ts +4 -0
  20. package/dist/src/cli/commands/seed.d.ts.map +1 -0
  21. package/dist/src/cli/commands/seed.js +34 -0
  22. package/dist/src/cli/commands/seed.js.map +1 -0
  23. package/dist/src/interview/ambiguity.d.ts +8 -0
  24. package/dist/src/interview/ambiguity.d.ts.map +1 -0
  25. package/dist/src/interview/ambiguity.js +69 -0
  26. package/dist/src/interview/ambiguity.js.map +1 -0
  27. package/dist/src/mcp/tools/seed-passthrough.d.ts +5 -0
  28. package/dist/src/mcp/tools/seed-passthrough.d.ts.map +1 -0
  29. package/dist/src/mcp/tools/seed-passthrough.js +29 -0
  30. package/dist/src/mcp/tools/seed-passthrough.js.map +1 -0
  31. package/dist/src/mcp/tools/seed.d.ts +5 -0
  32. package/dist/src/mcp/tools/seed.d.ts.map +1 -0
  33. package/dist/src/mcp/tools/seed.js +19 -0
  34. package/dist/src/mcp/tools/seed.js.map +1 -0
  35. package/dist/src/recording/agg-converter.d.ts +25 -0
  36. package/dist/src/recording/agg-converter.d.ts.map +1 -0
  37. package/dist/src/recording/agg-converter.js +80 -0
  38. package/dist/src/recording/agg-converter.js.map +1 -0
  39. package/dist/src/recording/agg-installer.d.ts +6 -0
  40. package/dist/src/recording/agg-installer.d.ts.map +1 -0
  41. package/dist/src/recording/agg-installer.js +50 -0
  42. package/dist/src/recording/agg-installer.js.map +1 -0
  43. package/dist/src/recording/asciinema-installer.d.ts +6 -0
  44. package/dist/src/recording/asciinema-installer.d.ts.map +1 -0
  45. package/dist/src/recording/asciinema-installer.js +50 -0
  46. package/dist/src/recording/asciinema-installer.js.map +1 -0
  47. package/dist/src/recording/asciinema-recorder.d.ts +26 -0
  48. package/dist/src/recording/asciinema-recorder.d.ts.map +1 -0
  49. package/dist/src/recording/asciinema-recorder.js +52 -0
  50. package/dist/src/recording/asciinema-recorder.js.map +1 -0
  51. package/dist/src/recording/cast-generator.d.ts +7 -0
  52. package/dist/src/recording/cast-generator.d.ts.map +1 -0
  53. package/dist/src/recording/cast-generator.js +97 -0
  54. package/dist/src/recording/cast-generator.js.map +1 -0
  55. package/dist/src/recording/filename-generator.d.ts +19 -0
  56. package/dist/src/recording/filename-generator.d.ts.map +1 -0
  57. package/dist/src/recording/filename-generator.js +67 -0
  58. package/dist/src/recording/filename-generator.js.map +1 -0
  59. package/dist/src/recording/gif-generator.d.ts +21 -0
  60. package/dist/src/recording/gif-generator.d.ts.map +1 -0
  61. package/dist/src/recording/gif-generator.js +121 -0
  62. package/dist/src/recording/gif-generator.js.map +1 -0
  63. package/dist/src/recording/recording-dir.d.ts +5 -0
  64. package/dist/src/recording/recording-dir.d.ts.map +1 -0
  65. package/dist/src/recording/recording-dir.js +13 -0
  66. package/dist/src/recording/recording-dir.js.map +1 -0
  67. package/dist/src/recording/recording-orchestrator.d.ts +50 -0
  68. package/dist/src/recording/recording-orchestrator.d.ts.map +1 -0
  69. package/dist/src/recording/recording-orchestrator.js +98 -0
  70. package/dist/src/recording/recording-orchestrator.js.map +1 -0
  71. package/dist/src/recording/resume-detector.d.ts +10 -0
  72. package/dist/src/recording/resume-detector.d.ts.map +1 -0
  73. package/dist/src/recording/resume-detector.js +14 -0
  74. package/dist/src/recording/resume-detector.js.map +1 -0
  75. package/dist/src/recording/segment-merger.d.ts +27 -0
  76. package/dist/src/recording/segment-merger.d.ts.map +1 -0
  77. package/dist/src/recording/segment-merger.js +65 -0
  78. package/dist/src/recording/segment-merger.js.map +1 -0
  79. package/dist/src/recording/terminal-recorder.d.ts +31 -0
  80. package/dist/src/recording/terminal-recorder.d.ts.map +1 -0
  81. package/dist/src/recording/terminal-recorder.js +111 -0
  82. package/dist/src/recording/terminal-recorder.js.map +1 -0
  83. package/dist/src/scripts/postinstall.d.ts +2 -0
  84. package/dist/src/scripts/postinstall.d.ts.map +1 -0
  85. package/dist/src/scripts/postinstall.js +29 -0
  86. package/dist/src/scripts/postinstall.js.map +1 -0
  87. package/dist/src/seed/extractor.d.ts +15 -0
  88. package/dist/src/seed/extractor.d.ts.map +1 -0
  89. package/dist/src/seed/extractor.js +88 -0
  90. package/dist/src/seed/extractor.js.map +1 -0
  91. package/dist/src/seed/generator.d.ts +12 -0
  92. package/dist/src/seed/generator.d.ts.map +1 -0
  93. package/dist/src/seed/generator.js +66 -0
  94. package/dist/src/seed/generator.js.map +1 -0
  95. package/dist/src/seed/passthrough-generator.d.ts +31 -0
  96. package/dist/src/seed/passthrough-generator.d.ts.map +1 -0
  97. package/dist/src/seed/passthrough-generator.js +80 -0
  98. package/dist/src/seed/passthrough-generator.js.map +1 -0
  99. package/dist/src/seed/schema.d.ts +145 -0
  100. package/dist/src/seed/schema.d.ts.map +1 -0
  101. package/dist/src/seed/schema.js +37 -0
  102. package/dist/src/seed/schema.js.map +1 -0
  103. package/dist/src/tui/components/TUIApp.d.ts +20 -0
  104. package/dist/src/tui/components/TUIApp.d.ts.map +1 -0
  105. package/dist/src/tui/components/TUIApp.js +84 -0
  106. package/dist/src/tui/components/TUIApp.js.map +1 -0
  107. package/dist/src/tui/hooks/event-store-reader.d.ts +28 -0
  108. package/dist/src/tui/hooks/event-store-reader.d.ts.map +1 -0
  109. package/dist/src/tui/hooks/event-store-reader.js +141 -0
  110. package/dist/src/tui/hooks/event-store-reader.js.map +1 -0
  111. package/dist/src/tui/hooks/useEventStorePoller.d.ts +12 -0
  112. package/dist/src/tui/hooks/useEventStorePoller.d.ts.map +1 -0
  113. package/dist/src/tui/hooks/useEventStorePoller.js +84 -0
  114. package/dist/src/tui/hooks/useEventStorePoller.js.map +1 -0
  115. package/dist/src/tui/screens/DashboardScreen.d.ts +4 -0
  116. package/dist/src/tui/screens/DashboardScreen.d.ts.map +1 -0
  117. package/dist/src/tui/screens/DashboardScreen.js +132 -0
  118. package/dist/src/tui/screens/DashboardScreen.js.map +1 -0
  119. package/dist/src/tui/screens/DebugScreen.d.ts +4 -0
  120. package/dist/src/tui/screens/DebugScreen.d.ts.map +1 -0
  121. package/dist/src/tui/screens/DebugScreen.js +40 -0
  122. package/dist/src/tui/screens/DebugScreen.js.map +1 -0
  123. package/dist/src/tui/screens/EvolutionScreen.d.ts +4 -0
  124. package/dist/src/tui/screens/EvolutionScreen.d.ts.map +1 -0
  125. package/dist/src/tui/screens/EvolutionScreen.js +136 -0
  126. package/dist/src/tui/screens/EvolutionScreen.js.map +1 -0
  127. package/dist/src/tui/screens/HUDPanel.d.ts +4 -0
  128. package/dist/src/tui/screens/HUDPanel.d.ts.map +1 -0
  129. package/dist/src/tui/screens/HUDPanel.js +13 -0
  130. package/dist/src/tui/screens/HUDPanel.js.map +1 -0
  131. package/dist/src/tui/screens/InterviewScreen.d.ts +4 -0
  132. package/dist/src/tui/screens/InterviewScreen.d.ts.map +1 -0
  133. package/dist/src/tui/screens/InterviewScreen.js +103 -0
  134. package/dist/src/tui/screens/InterviewScreen.js.map +1 -0
  135. package/dist/src/tui/screens/LogScreen.d.ts +4 -0
  136. package/dist/src/tui/screens/LogScreen.d.ts.map +1 -0
  137. package/dist/src/tui/screens/LogScreen.js +83 -0
  138. package/dist/src/tui/screens/LogScreen.js.map +1 -0
  139. package/dist/src/tui/screens/SessionListScreen.d.ts +4 -0
  140. package/dist/src/tui/screens/SessionListScreen.d.ts.map +1 -0
  141. package/dist/src/tui/screens/SessionListScreen.js +71 -0
  142. package/dist/src/tui/screens/SessionListScreen.js.map +1 -0
  143. package/dist/src/tui/screens/SpecViewerScreen.d.ts +4 -0
  144. package/dist/src/tui/screens/SpecViewerScreen.d.ts.map +1 -0
  145. package/dist/src/tui/screens/SpecViewerScreen.js +73 -0
  146. package/dist/src/tui/screens/SpecViewerScreen.js.map +1 -0
  147. package/dist/src/tui/widgets/DriftMeter.d.ts +15 -0
  148. package/dist/src/tui/widgets/DriftMeter.d.ts.map +1 -0
  149. package/dist/src/tui/widgets/DriftMeter.js +27 -0
  150. package/dist/src/tui/widgets/DriftMeter.js.map +1 -0
  151. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts +9 -0
  152. package/dist/src/tui/widgets/GestaltPrincipleBar.d.ts.map +1 -0
  153. package/dist/src/tui/widgets/GestaltPrincipleBar.js +35 -0
  154. package/dist/src/tui/widgets/GestaltPrincipleBar.js.map +1 -0
  155. package/dist/src/tui/widgets/TaskDAGTree.d.ts +15 -0
  156. package/dist/src/tui/widgets/TaskDAGTree.d.ts.map +1 -0
  157. package/dist/src/tui/widgets/TaskDAGTree.js +54 -0
  158. package/dist/src/tui/widgets/TaskDAGTree.js.map +1 -0
  159. package/package.json +1 -1
  160. package/role-agents/presentation-designer/AGENT.md +211 -0
  161. package/role-agents/presentation-designer/templates/broadside.html +292 -0
  162. package/role-agents/presentation-designer/templates/editorial-forest.html +264 -0
  163. package/role-agents/presentation-designer/templates/emerald-editorial.html +273 -0
  164. package/role-agents/presentation-designer/templates/neo-grid.html +407 -0
  165. package/role-agents/presentation-designer/templates/pin-and-paper.html +225 -0
  166. package/role-agents/presentation-designer/templates/pink-script.html +241 -0
  167. package/role-agents/presentation-designer/templates/sakura-chroma.html +293 -0
  168. package/role-agents/presentation-designer/templates/signal.html +403 -0
  169. package/role-agents/presentation-designer/templates/stencil-tablet.html +211 -0
  170. package/role-agents/presentation-designer/templates/studio.html +379 -0
  171. package/skills/agent/SKILL.md +2 -0
@@ -0,0 +1,273 @@
1
+ <!DOCTYPE html>
2
+ <html lang="ko">
3
+ <head>
4
+ <meta charset="utf-8" />
5
+ <title>Emerald Editorial — Reveal.js</title>
6
+ <link rel="preconnect" href="https://fonts.googleapis.com" />
7
+ <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
8
+ <link href="https://fonts.googleapis.com/css2?family=Bodoni+Moda:wght@500;700;800;900&family=Manrope:wght@400;500;600;700;800&display=swap" rel="stylesheet" />
9
+ <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/reveal.js@5/dist/reveal.css" />
10
+ <style>
11
+ :root {
12
+ --bg: #3CD896;
13
+ --bg-2: #2DC684;
14
+ --ink: #0F1A5C;
15
+ --ink-2: #1B2774;
16
+ --paper: #F1E9D6;
17
+ --rule: rgba(15, 26, 92, 0.22);
18
+ --rule-strong: rgba(15, 26, 92, 0.85);
19
+ --display-font: 'Bodoni Moda', serif;
20
+ }
21
+
22
+ .reveal { font-family: 'Manrope', sans-serif; }
23
+ .reveal .slides { text-align: left; }
24
+ .reveal .slides section {
25
+ box-sizing: border-box;
26
+ width: 100%; height: 100%;
27
+ padding: 0;
28
+ overflow: hidden;
29
+ top: 0 !important; left: 0 !important;
30
+ background: var(--bg);
31
+ color: var(--ink);
32
+ }
33
+ .reveal h1,.reveal h2,.reveal h3,.reveal p,.reveal ul,.reveal ol { margin: 0; }
34
+
35
+ /* STAGE wrapper inside each section */
36
+ .stage {
37
+ position: absolute; inset: 0;
38
+ padding: 56px 80px 70px;
39
+ display: grid;
40
+ grid-template-rows: auto 1fr auto;
41
+ }
42
+
43
+ /* CHROME */
44
+ .masthead, .footline {
45
+ display: flex;
46
+ justify-content: space-between;
47
+ align-items: center;
48
+ font-size: clamp(14px, 1.6vw, 22px);
49
+ font-weight: 700;
50
+ letter-spacing: 0.05em;
51
+ color: var(--ink);
52
+ }
53
+
54
+ /* RULE */
55
+ .rule-h { height: 4px; background: var(--ink); }
56
+ .rule-h.thin { height: 1px; background: var(--rule); }
57
+
58
+ /* ORNAMENT — double rule with word */
59
+ .ornament {
60
+ display: inline-flex;
61
+ align-items: center;
62
+ gap: 26px;
63
+ justify-content: center;
64
+ width: 100%;
65
+ }
66
+ .ornament .word {
67
+ font-family: var(--display-font);
68
+ font-weight: 800;
69
+ font-size: 0.42em;
70
+ letter-spacing: 0.02em;
71
+ padding: 0 4px;
72
+ }
73
+ .ornament .lines {
74
+ flex: 1; height: 18px; position: relative;
75
+ }
76
+ .ornament .lines::before,
77
+ .ornament .lines::after {
78
+ content: "";
79
+ position: absolute;
80
+ left: 0; right: 0;
81
+ height: 4px;
82
+ background: var(--ink);
83
+ }
84
+ .ornament .lines::before { top: 3px; }
85
+ .ornament .lines::after { bottom: 3px; }
86
+
87
+ /* TYPOGRAPHY */
88
+ .t-display {
89
+ font-family: var(--display-font);
90
+ font-weight: 900;
91
+ line-height: 0.88;
92
+ letter-spacing: -0.01em;
93
+ color: var(--ink);
94
+ }
95
+ .t-display.xl { font-size: clamp(100px, 18vw, 280px); }
96
+ .t-display.lg { font-size: clamp(60px, 10vw, 160px); }
97
+ .t-display.md { font-size: clamp(36px, 5.5vw, 88px); }
98
+ .t-head { font-family: var(--display-font); font-weight: 700; font-size: clamp(24px, 3.5vw, 52px); line-height: 1.1; color: var(--ink); }
99
+ .t-body { font-size: clamp(14px, 1.5vw, 22px); line-height: 1.6; color: var(--ink); font-weight: 400; }
100
+ .t-label { font-family: 'Manrope', sans-serif; font-size: clamp(11px, 1.1vw, 16px); font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; color: var(--ink); opacity: 0.7; }
101
+ .t-num { font-family: var(--display-font); font-weight: 900; font-size: clamp(60px, 9vw, 140px); line-height: 0.92; color: var(--ink); }
102
+
103
+ /* PAPER PANEL */
104
+ .panel-paper { background: var(--paper); }
105
+ .panel-ink { background: var(--ink); color: var(--bg); }
106
+
107
+ /* KPI CARD */
108
+ .kpi {
109
+ background: var(--ink); color: var(--bg);
110
+ padding: clamp(20px, 3vh, 36px) clamp(18px, 2.5vw, 32px);
111
+ display: flex; flex-direction: column; justify-content: space-between;
112
+ gap: 1rem; overflow: hidden;
113
+ }
114
+ .kpi.alt { background: var(--paper); color: var(--ink); }
115
+ .kpi .delta {
116
+ display: inline-block; font-weight: 800; letter-spacing: 0.08em;
117
+ font-size: clamp(11px, 1.2vw, 18px); padding: 4px 12px;
118
+ background: var(--bg); color: var(--ink); align-self: flex-start;
119
+ }
120
+
121
+ /* STEP CARD */
122
+ .step {
123
+ background: var(--ink); color: var(--bg);
124
+ padding: clamp(18px, 2.5vh, 32px) clamp(16px, 2vw, 28px);
125
+ display: flex; flex-direction: column;
126
+ }
127
+ .step.alt { background: var(--paper); color: var(--ink); }
128
+
129
+ /* MARK (inline badge) */
130
+ .mark { background: var(--ink); color: var(--bg); padding: 6px 18px; font-weight: 700; letter-spacing: 0.1em; }
131
+ </style>
132
+ </head>
133
+ <body style="margin:0;background:#1a4a38">
134
+ <div class="reveal">
135
+ <div class="slides">
136
+
137
+ <!-- COVER -->
138
+ <section>
139
+ <div class="stage" style="padding:56px 80px;text-align:center;display:flex;flex-direction:column;align-items:center;">
140
+ <div class="masthead" style="width:100%">
141
+ <span class="t-label">{{ORGANIZATION}}</span>
142
+ <span class="t-label">{{DATE}}</span>
143
+ </div>
144
+ <div style="flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1.5vh">
145
+ <div class="ornament" style="font-size:clamp(20px,2.5vw,36px)">
146
+ <div class="lines"></div>
147
+ <span class="word">{{CATEGORY}}</span>
148
+ <div class="lines"></div>
149
+ </div>
150
+ <div class="t-display xl" style="text-align:center">{{TITLE}}</div>
151
+ <div class="ornament" style="font-size:clamp(20px,2.5vw,36px)">
152
+ <div class="lines"></div>
153
+ <span class="word">{{SUBTITLE}}</span>
154
+ <div class="lines"></div>
155
+ </div>
156
+ </div>
157
+ <div class="footline" style="width:100%">
158
+ <span class="t-label">{{AUTHOR}}</span>
159
+ <span class="t-label">Vol. {{ISSUE}}</span>
160
+ </div>
161
+ </div>
162
+ </section>
163
+
164
+ <!-- SECTION OPENER (split) -->
165
+ <section style="padding:0">
166
+ <div style="position:absolute;inset:0;display:grid;grid-template-columns:1fr 1fr">
167
+ <div class="panel-ink" style="padding:clamp(40px,5vw,80px);display:flex;align-items:center;justify-content:center;overflow:hidden">
168
+ <div class="t-display xl" style="color:var(--bg);text-align:center">01</div>
169
+ </div>
170
+ <div style="padding:clamp(40px,5vw,80px);display:flex;flex-direction:column;justify-content:center;gap:1.5rem;overflow:hidden">
171
+ <span class="t-label">Chapter</span>
172
+ <div class="t-head" style="font-size:clamp(28px,4vw,62px)">섹션<br>제목</div>
173
+ <div class="rule-h" style="width:36px"></div>
174
+ <p class="t-body">서브 설명이 여기에 들어갑니다.</p>
175
+ </div>
176
+ </div>
177
+ </section>
178
+
179
+ <!-- STATEMENT + 3-COL SUPPORT -->
180
+ <section>
181
+ <div class="stage">
182
+ <div>
183
+ <div class="t-head" style="font-size:clamp(28px,4vw,60px)">핵심 주장</div>
184
+ <div class="rule-h" style="margin-top:1.5vh"></div>
185
+ </div>
186
+ <div style="display:flex;align-items:center">
187
+ <div class="t-display lg">이것이<br>핵심이다</div>
188
+ </div>
189
+ <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,50px);border-top:4px solid var(--ink);padding-top:2vh">
190
+ <div><p class="t-label" style="margin-bottom:0.5rem">근거 01</p><p class="t-body">설명 내용</p></div>
191
+ <div><p class="t-label" style="margin-bottom:0.5rem">근거 02</p><p class="t-body">설명 내용</p></div>
192
+ <div><p class="t-label" style="margin-bottom:0.5rem">근거 03</p><p class="t-body">설명 내용</p></div>
193
+ </div>
194
+ </div>
195
+ </section>
196
+
197
+ <!-- KPI GRID -->
198
+ <section>
199
+ <div class="stage">
200
+ <div style="display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(40px,5vw,80px);align-items:end">
201
+ <div class="t-head" style="font-size:clamp(28px,3.5vw,54px)">핵심 지표</div>
202
+ <p class="t-body" style="opacity:0.7">{{SECTION_LABEL}}</p>
203
+ </div>
204
+ <div style="display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,28px);margin-top:2vh">
205
+ <div class="kpi"><div class="t-num">98%</div><div><p class="t-label" style="color:var(--bg)">지표명</p><div class="delta">+12%p</div></div></div>
206
+ <div class="kpi alt"><div class="t-num">2.4s</div><div><p class="t-label">지표명</p></div></div>
207
+ <div class="kpi"><div class="t-num">41</div><div><p class="t-label" style="color:var(--bg)">지표명</p><div class="delta">+8</div></div></div>
208
+ <div class="kpi alt"><div class="t-num">86%</div><div><p class="t-label">지표명</p></div></div>
209
+ </div>
210
+ <div class="footline" style="margin-top:1.5vh">
211
+ <span class="t-label">{{ORG}}</span>
212
+ <span class="t-label">{{DATE}}</span>
213
+ </div>
214
+ </div>
215
+ </section>
216
+
217
+ <!-- PROCESS — 4 steps -->
218
+ <section>
219
+ <div class="stage">
220
+ <div style="display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(40px,5vw,80px);align-items:end">
221
+ <div class="t-head">실행 단계</div>
222
+ <p class="t-body" style="opacity:0.7">{{PERIOD}}</p>
223
+ </div>
224
+ <div style="display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(16px,2vw,28px);margin-top:2vh">
225
+ <div class="step"><p class="t-label" style="color:var(--bg);margin-bottom:1rem">01</p><p class="t-body" style="color:var(--bg)">Step 제목</p><p class="t-body" style="color:var(--bg);opacity:0.7;font-size:0.85em;margin-top:0.5rem">설명</p></div>
226
+ <div class="step alt"><p class="t-label" style="margin-bottom:1rem">02</p><p class="t-body">Step 제목</p><p class="t-body" style="opacity:0.7;font-size:0.85em;margin-top:0.5rem">설명</p></div>
227
+ <div class="step"><p class="t-label" style="color:var(--bg);margin-bottom:1rem">03</p><p class="t-body" style="color:var(--bg)">Step 제목</p><p class="t-body" style="color:var(--bg);opacity:0.7;font-size:0.85em;margin-top:0.5rem">설명</p></div>
228
+ <div class="step alt"><p class="t-label" style="margin-bottom:1rem">04</p><p class="t-body">Step 제목</p><p class="t-body" style="opacity:0.7;font-size:0.85em;margin-top:0.5rem">설명</p></div>
229
+ </div>
230
+ <div class="footline" style="margin-top:1.5vh">
231
+ <span class="t-label">{{ORG}}</span>
232
+ <span class="t-label">{{DATE}}</span>
233
+ </div>
234
+ </div>
235
+ </section>
236
+
237
+ <!-- CLOSING -->
238
+ <section>
239
+ <div class="stage" style="text-align:center;align-items:center">
240
+ <div class="masthead" style="width:100%;justify-content:center">
241
+ <span class="t-label">{{ORGANIZATION}}</span>
242
+ </div>
243
+ <div style="display:flex;flex-direction:column;align-items:center;gap:1.5vh">
244
+ <div class="ornament" style="font-size:clamp(20px,2.5vw,36px)">
245
+ <div class="lines"></div>
246
+ <span class="word">Thank You</span>
247
+ <div class="lines"></div>
248
+ </div>
249
+ <div class="t-display lg" style="text-align:center">Q&amp;A</div>
250
+ </div>
251
+ <div style="display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,40px);border-top:4px solid var(--ink);padding-top:2vh;text-align:left">
252
+ <div><p class="t-label" style="margin-bottom:0.5rem">발표자</p><p class="t-body" style="font-weight:700">{{AUTHOR}}</p></div>
253
+ <div><p class="t-label" style="margin-bottom:0.5rem">이메일</p><p class="t-body">{{EMAIL}}</p></div>
254
+ <div><p class="t-label" style="margin-bottom:0.5rem">소속</p><p class="t-body">{{ORG}}</p></div>
255
+ </div>
256
+ </div>
257
+ </section>
258
+
259
+ </div>
260
+ </div>
261
+ <script src="https://cdn.jsdelivr.net/npm/reveal.js@5/dist/reveal.js"></script>
262
+ <script src="https://cdn.jsdelivr.net/npm/reveal.js@5/plugin/notes/notes.js"></script>
263
+ <script>
264
+ Reveal.initialize({
265
+ hash: true, width: 1600, height: 900, margin: 0,
266
+ minScale: 0.1, maxScale: 1.5,
267
+ controls: true, progress: false, slideNumber: false,
268
+ transition: 'fade', backgroundTransition: 'fade',
269
+ plugins: [RevealNotes],
270
+ });
271
+ </script>
272
+ </body>
273
+ </html>