diff --git a/ui/builder.html b/ui/builder.html
index e3ee7db..3113413 100644
--- a/ui/builder.html
+++ b/ui/builder.html
@@ -13,7 +13,6 @@
--accent:#4f6ef7;--accent-bg:#eef0ff;
--red:#ef4444;--red-bg:#fee2e2;
--green:#16a34a;--green-bg:#dcfce7;
- --l1:#4f6ef7;--l2:#8b5cf6;--l3:#d97706;
--r:8px;--sh:0 1px 3px rgba(0,0,0,.08),0 1px 2px rgba(0,0,0,.05);
--dk:#1e1e2e;--dk2:#181825;--dk3:#313244;--dk4:#45475a;
--dt:#cdd6f4;--dt2:#bac2de;--dt3:#6c7086;
@@ -36,29 +35,16 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
.builder-scroll::-webkit-scrollbar{width:5px}
.builder-scroll::-webkit-scrollbar-thumb{background:var(--border);border-radius:3px}
-/* ── 구분자 설정 카드 ─────────────────────── */
-.config-card{background:var(--surface-alt);border:1px solid var(--border);border-radius:var(--r);padding:11px 13px;margin-bottom:14px}
-.config-card-title{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin-bottom:10px;display:flex;align-items:center;gap:5px}
-.config-row{display:flex;align-items:center;gap:8px;margin-bottom:8px}
-.config-row:last-child{margin-bottom:0}
-.config-lbl{font-size:12px;color:var(--muted);width:48px;flex-shrink:0}
-.mark-input{width:56px;text-align:center;font-size:15px;border:1px solid var(--border);border-radius:6px;padding:3px 6px;background:var(--surface)}
-.marks-wrap{display:flex;flex-wrap:wrap;gap:5px;flex:1}
-.mark-chip{display:flex;align-items:center;gap:3px;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:2px 5px}
-.mark-chip .lvl{font-size:9px;color:var(--muted);font-weight:700}
-.mark-chip input{width:46px;font-size:14px;border:none;outline:none;text-align:center;background:transparent}
-.mark-chip .rm{cursor:pointer;color:var(--muted);font-size:11px;padding:0 2px;line-height:1}
-.mark-chip .rm:hover{color:var(--red)}
-.btn-add-mark{font-size:11px;padding:3px 9px;background:var(--accent-bg);color:var(--accent);border:1px dashed var(--accent);border-radius:6px;cursor:pointer;font-weight:600;align-self:center}
-.btn-add-mark:hover{background:var(--accent);color:#fff;border-style:solid}
+/* ── 문서 루트 노드 ───────────────────────── */
+.root-node{display:flex;align-items:center;gap:8px;background:var(--surface-alt);border:1.5px solid var(--border);border-radius:var(--r);padding:7px 11px;margin-bottom:12px;transition:border-color .15s}
+.root-node:focus-within{border-color:var(--border-focus);background:var(--surface)}
+.root-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);flex-shrink:0}
+.root-title-inp{flex:1;border:none;outline:none;font-size:13px;font-weight:500;background:transparent}
+.root-title-inp::placeholder{color:var(--muted);font-weight:400}
-/* ── 제목 입력 ────────────────────────────── */
-.field-label{font-size:11px;font-weight:600;color:var(--muted);margin-bottom:5px;letter-spacing:.04em;text-transform:uppercase}
-.title-wrap{display:flex;align-items:center;gap:7px;background:var(--surface-alt);border:1.5px solid var(--border);border-radius:var(--r);padding:7px 11px;margin-bottom:14px;transition:border-color .15s}
-.title-wrap:focus-within{border-color:var(--border-focus);background:var(--surface)}
-.title-mark{font-size:16px;flex-shrink:0}
-.title-wrap input{border:none;outline:none;font-size:13px;flex:1;background:transparent;font-weight:500}
-.title-wrap input::placeholder{color:var(--muted);font-weight:400}
+/* ── 구분자 입력 (공통) ───────────────────── */
+.node-mark-inp{width:36px;text-align:center;font-size:15px;border:1px solid var(--border);border-radius:5px;padding:2px 3px;background:var(--surface);flex-shrink:0;outline:none}
+.node-mark-inp:focus{border-color:var(--border-focus)}
/* ── 버튼 ─────────────────────────────────── */
.btn-add-sec{display:flex;align-items:center;justify-content:center;gap:7px;width:100%;padding:9px;background:var(--accent-bg);color:var(--accent);border:1.5px dashed var(--accent);border-radius:var(--r);cursor:pointer;font-size:12px;font-weight:600;margin-bottom:12px;transition:all .15s}
@@ -69,53 +55,18 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
.sBtn{font-size:11px;padding:3px 9px;border-radius:4px;border:1px solid;cursor:pointer;font-weight:600;transition:all .12s}
.sBtn.blue{background:var(--accent-bg);color:var(--accent);border-color:var(--accent)}
.sBtn.blue:hover{background:var(--accent);color:#fff}
-.sBtn.green{background:var(--green-bg);color:var(--green);border-color:var(--green)}
-.sBtn.green:hover{background:var(--green);color:#fff}
/* ── 섹션 카드 ────────────────────────────── */
.sec-list{display:flex;flex-direction:column;gap:9px}
-.sec-card{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh);overflow:visible}
-.sec-card[data-level="1"]{border-left:3px solid var(--l1)}
-.sec-card[data-level="2"]{border-left:3px solid var(--l2);margin-left:14px}
-.sec-card[data-level="3"]{border-left:3px solid var(--l3);margin-left:28px}
-.sec-head{display:flex;align-items:center;gap:7px;padding:7px 9px;background:var(--surface-alt);border-bottom:1px solid var(--border)}
-.sec-mark{font-size:13px;flex-shrink:0}
+.sec-card{border:1.5px solid var(--border);border-radius:var(--r);background:var(--surface);box-shadow:var(--sh)}
+.sec-head{display:flex;align-items:center;gap:6px;padding:7px 9px;background:var(--surface-alt);border-bottom:1px solid var(--border);border-radius:calc(var(--r) - 1.5px) calc(var(--r) - 1.5px) 0 0}
.sec-name-input{flex:1;border:none;outline:none;font-size:13px;font-weight:500;background:transparent;min-width:0}
.sec-name-input::placeholder{color:var(--muted);font-weight:400}
-.sec-body{padding:9px}
-.sec-actions{display:flex;gap:5px;flex-wrap:wrap;margin-top:2px}
-.children-list{display:flex;flex-direction:column;gap:8px;margin-top:9px}
-
-/* ── 그룹(LIST) 카드 ──────────────────────── */
-.grp{border:1px solid var(--border);border-radius:6px;padding:8px;margin-bottom:7px;background:var(--surface-alt)}
-.grp-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
-.grp-type-badge{font-size:10px;font-weight:700;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 6px;text-transform:uppercase;letter-spacing:.04em}
-.grp-cat-badge{font-size:11px;color:var(--accent);background:var(--accent-bg);border-radius:4px;padding:1px 7px;font-weight:600;white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}
-.grp-names{width:100%;min-height:44px;font-size:12px;border:1px solid var(--border);border-radius:4px;padding:5px 7px;resize:vertical;font-family:inherit;background:var(--surface);line-height:1.55}
-.grp-names:focus{outline:none;border-color:var(--border-focus)}
-
-/* ── 구분자 / 한 줄 옵션 ──────────────────── */
-.grp-opts{display:flex;flex-direction:column;gap:5px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}
-.opt-row{display:flex;align-items:center;gap:6px}
-.opt-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);width:40px;flex-shrink:0}
-.sep-chips{display:flex;gap:3px;flex-wrap:wrap}
-.sep-chip{font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500;transition:all .1s;white-space:nowrap}
-.sep-chip:hover{border-color:var(--accent);color:var(--accent)}
-.sep-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
-.sep-custom{width:52px;font-size:11px;border:1px solid var(--border);border-radius:4px;padding:2px 5px;background:var(--surface);text-align:center}
-.sep-custom:focus{outline:none;border-color:var(--border-focus)}
-.npl-input{width:46px;font-size:12px;border:1px solid var(--border);border-radius:4px;padding:2px 5px;text-align:center;background:var(--surface)}
-.npl-input:focus{outline:none;border-color:var(--border-focus)}
-.npl-input:disabled{background:var(--surface-alt);color:var(--muted)}
+.sec-body{padding:8px 9px 9px;display:flex;flex-direction:column;gap:8px}
/* ── 노드 설정 패널 ───────────────────────── */
-.node-settings{margin:6px 0}
-.ns-toggle{
- display:flex;align-items:center;gap:5px;padding:5px 9px;
- font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;
- color:var(--muted);cursor:pointer;background:var(--surface-alt);
- border:1px solid var(--border);border-radius:5px;transition:all .12s;user-select:none
-}
+.node-settings{}
+.ns-toggle{display:flex;align-items:center;gap:5px;padding:5px 9px;font-size:11px;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);cursor:pointer;background:var(--surface-alt);border:1px solid var(--border);border-radius:5px;transition:all .12s;user-select:none}
.ns-toggle:hover{color:var(--accent);border-color:var(--accent);background:var(--accent-bg)}
.ns-toggle.open{border-radius:5px 5px 0 0;border-bottom-color:transparent;color:var(--accent);background:var(--accent-bg);border-color:var(--accent)}
.ns-arrow{font-size:8px;transition:transform .15s}
@@ -140,6 +91,34 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
.ns-value-inp:focus{outline:none;border-color:var(--border-focus);background:#fff}
.ns-add-btn{font-size:10px;padding:1px 7px}
+/* ── 이름 목록 그룹 ───────────────────────── */
+.grp{border:1px solid var(--border);border-radius:6px;padding:8px;margin-bottom:7px;background:var(--surface-alt)}
+.grp:last-child{margin-bottom:0}
+.grp-head{display:flex;align-items:center;gap:6px;margin-bottom:6px}
+.grp-type-badge{font-size:10px;font-weight:700;color:var(--muted);background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:1px 6px;text-transform:uppercase;letter-spacing:.04em}
+.grp-cat-badge{font-size:11px;color:var(--accent);background:var(--accent-bg);border-radius:4px;padding:1px 7px;font-weight:600;white-space:nowrap;max-width:100px;overflow:hidden;text-overflow:ellipsis}
+.grp-names{width:100%;min-height:44px;font-size:12px;border:1px solid var(--border);border-radius:4px;padding:5px 7px;resize:vertical;font-family:inherit;background:var(--surface);line-height:1.55}
+.grp-names:focus{outline:none;border-color:var(--border-focus)}
+.grp-opts{display:flex;flex-direction:column;gap:5px;margin-top:6px;padding-top:6px;border-top:1px dashed var(--border)}
+.opt-row{display:flex;align-items:center;gap:6px}
+.opt-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted);width:40px;flex-shrink:0}
+.sep-chips{display:flex;gap:3px;flex-wrap:wrap}
+.sep-chip{font-size:11px;padding:2px 8px;border-radius:4px;border:1px solid var(--border);background:var(--surface);color:var(--muted);cursor:pointer;font-weight:500;transition:all .1s;white-space:nowrap}
+.sep-chip:hover{border-color:var(--accent);color:var(--accent)}
+.sep-chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}
+.sep-custom{width:52px;font-size:11px;border:1px solid var(--border);border-radius:4px;padding:2px 5px;background:var(--surface);text-align:center}
+.sep-custom:focus{outline:none;border-color:var(--border-focus)}
+.npl-input{width:46px;font-size:12px;border:1px solid var(--border);border-radius:4px;padding:2px 5px;text-align:center;background:var(--surface)}
+.npl-input:focus{outline:none;border-color:var(--border-focus)}
+.npl-input:disabled{background:var(--surface-alt);color:var(--muted)}
+
+/* ── 하위노드 영역 ────────────────────────── */
+.children-area{display:flex;flex-direction:column;gap:6px}
+.children-lbl{font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}
+.children-list{display:flex;flex-direction:column;gap:8px;padding-left:12px;border-left:2px solid var(--border)}
+.btn-add-child{align-self:flex-start;display:flex;align-items:center;gap:5px;font-size:11px;padding:4px 10px;background:var(--green-bg);color:var(--green);border:1px dashed var(--green);border-radius:6px;cursor:pointer;font-weight:600;transition:all .15s}
+.btn-add-child:hover{background:var(--green);color:#fff;border-style:solid}
+
/* ── 미리보기 패널 ────────────────────────── */
.preview-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--dk)}
.preview-head{display:flex;align-items:center;gap:7px;padding:9px 14px;background:var(--dk2);border-bottom:1px solid var(--dk3);flex-shrink:0}
@@ -158,13 +137,17 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
.preview-text.dim{color:var(--dt3);font-style:italic}
.j-key{color:#89b4fa}.j-str{color:#a6e3a1}.j-num{color:#fab387}.j-bool{color:#f38ba8}.j-null{color:#f38ba8;font-style:italic}
-/* ── 모달 ──────────────────────────────────── */
+/* ── 모달 ─────────────────────────────────── */
.overlay{position:fixed;inset:0;background:rgba(0,0,0,.45);display:none;align-items:center;justify-content:center;z-index:200}
.overlay.open{display:flex}
.modal{background:var(--surface);border-radius:12px;padding:20px;width:500px;max-width:92vw;box-shadow:0 20px 60px rgba(0,0,0,.25)}
.modal h2{font-size:15px;font-weight:700;margin-bottom:6px}
.modal p{font-size:12px;color:var(--muted);margin-bottom:10px}
-.modal textarea{width:100%;height:200px;font-family:monospace;font-size:12px;border:1.5px solid var(--border);border-radius:6px;padding:9px;resize:vertical;line-height:1.6}
+.modal-field{display:flex;align-items:center;gap:8px;margin-bottom:8px}
+.modal-field label{font-size:12px;color:var(--muted);width:80px;flex-shrink:0}
+.modal-field input{font-size:13px;border:1.5px solid var(--border);border-radius:6px;padding:4px 8px;flex:1;outline:none}
+.modal-field input:focus{border-color:var(--border-focus)}
+.modal textarea{width:100%;height:180px;font-family:monospace;font-size:12px;border:1.5px solid var(--border);border-radius:6px;padding:9px;resize:vertical;line-height:1.6}
.modal textarea:focus{outline:none;border-color:var(--border-focus)}
.modal-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:12px}
.mBtn{font-size:13px;padding:7px 16px;border-radius:6px;border:1px solid;cursor:pointer;font-weight:600}
@@ -172,7 +155,7 @@ body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;backgrou
.mBtn.ok:hover{background:#3a5ce0}
.mBtn.cancel{background:var(--surface);color:var(--muted);border-color:var(--border)}
.mBtn.cancel:hover{background:var(--surface-alt)}
-.sep{height:1px;background:var(--border);margin:12px 0}
+.sep{height:1px;background:var(--border);margin:10px 0}
input,textarea,button,select{font-family:inherit}
@@ -181,7 +164,7 @@ input,textarea,button,select{font-family:inherit}