diff --git a/frontend/src/lib/components/AnalysisPanel.svelte b/frontend/src/lib/components/AnalysisPanel.svelte
new file mode 100644
index 0000000..8181dc5
--- /dev/null
+++ b/frontend/src/lib/components/AnalysisPanel.svelte
@@ -0,0 +1,120 @@
+
+
+
+
+
+
+
+ 이드 분석
+
+ {#if data?.cached}
+ 캐시
+ {/if}
+
+
+ {#if !data && !loading && !error}
+
+
+
+ 약 10초 소요. 문서 전문을 Gemma 4로 구조화합니다.
+
+ {:else if loading}
+
+
+
+
+
+
+
+
+ 분석 중…
+
+ {:else if error}
+
{error}
+
+ {:else if data}
+
+ {#each data.layers as layer}
+
+
+ {layer.title}
+
+
+ {layer.content}
+
+
+ {/each}
+
+ {#if data.truncated}
+
+ 원문이 15,000자를 초과하여 앞부분만 분석했습니다.
+
+ {/if}
+
+
+ {Math.round(data.elapsed_ms)}ms · {data.layers.length}개 층
+
+
+
+ {/if}
+
diff --git a/frontend/src/routes/documents/[id]/+page.svelte b/frontend/src/routes/documents/[id]/+page.svelte
index 34f8e85..dabd921 100644
--- a/frontend/src/routes/documents/[id]/+page.svelte
+++ b/frontend/src/routes/documents/[id]/+page.svelte
@@ -22,6 +22,7 @@
import ProcessingStatusView from '$lib/components/editors/ProcessingStatusView.svelte';
import LibraryPathEditor from '$lib/components/editors/LibraryPathEditor.svelte';
import DocumentDangerZone from '$lib/components/editors/DocumentDangerZone.svelte';
+ import AnalysisPanel from '$lib/components/AnalysisPanel.svelte';
marked.use({ mangle: false, headerIds: false });
function renderMd(text) {
@@ -244,6 +245,9 @@