diff --git a/src/view/footing-section-svg.ts b/src/view/footing-section-svg.ts
index a50078f..e372bd8 100644
--- a/src/view/footing-section-svg.ts
+++ b/src/view/footing-section-svg.ts
@@ -99,13 +99,23 @@ export function footingSectionSvg(model: PierModel): string {
parts.push(text(xr, y(H) + 10, `${fs.cTop}`, 'start', COLOR.dim));
parts.push(text(xr, (y(H) + y(0)) / 2, `${levels - 1}@${fs.sV}=${(levels - 1) * fs.sV}`, 'start', COLOR.dim));
parts.push(text(xr, y(0) - 4, `${fs.cBottom}`, 'start', COLOR.dim));
- parts.push(text(X0, y(0) + 36, `높이 방향 축소 (×${SCALE_Y}) · 다리 생략 · 기준: 확대기초 하면 0`, 'start', COLOR.outline));
+ parts.push(text(X0, 292, `높이 방향 축소 (×${SCALE_Y}) · 다리 생략 · 기준: 확대기초 하면 0`, 'start', COLOR.outline));
- // Bubbles: one per bar family, linked to its marks through data-bar (click to highlight, in the panel).
- const bubbles: [string, number, number][] = [['B5', xa + 6, 24], ['B1', x(xs[1]), 40], ['B11', xb - 6, 56], ['B2', x(xs[1]), y(0) + 40], ['B4', x(xs[2]), y(0) + 40], ['B3', x(xs[3]), y(0) + 40], ['B10-1', X0 - 16, y(fs.cBottom) - 6]];
- for (const [name, bx, by] of bubbles) {
- parts.push(`${name}`);
- }
+ // Bubbles outside the outline, spread apart, each with a leader to its bar (the leader carries the same data-bar, so it highlights too).
+ const bubble = (name: string, bx: number, by: number, tx: number, ty: number) => {
+ const edgeY = by < ty ? by + 11 : by - 11;
+ return `${name}`;
+ };
+ const yTop = 52;
+ const yBot = y(0) + 50;
+ parts.push(bubble('B5', xa + 40, yTop, xa + 40, y(z.B5)));
+ parts.push(bubble('B1', x(xs[1]) + 30, yTop, x(xs[1]), y(z.B1)));
+ const zB11 = js.length > 0 ? fs.cBottom + js[0] * fs.sV : fs.cBottom;
+ parts.push(bubble('B11', xb - 30, yTop, xb, y(zB11)));
+ parts.push(bubble('B10-1', X0 - 18, y(fs.cBottom + (levels - 1) * fs.sV / 2), X0 + 2, y(fs.cBottom + (levels - 1) * fs.sV / 2)));
+ parts.push(bubble('B2', cx - 70, yBot, x(xs[1]), y(z.B24)));
+ parts.push(bubble('B4', cx, yBot, x(xs[2]), y(z.B24)));
+ parts.push(bubble('B3', cx + 70, yBot, x(xs[3]), y(z.B3)));
- return ``;
+ return ``;
}