diff --git a/B07_DesignDetail/B07_DesignDetail_UI_Style.css b/B07_DesignDetail/B07_DesignDetail_UI_Style.css
index db3eca1fa..0a8c0ef65 100644
--- a/B07_DesignDetail/B07_DesignDetail_UI_Style.css
+++ b/B07_DesignDetail/B07_DesignDetail_UI_Style.css
@@ -357,9 +357,10 @@ html.is-bm-route .b07-cad-stack > .cad-tabs {
padding-block: 2px;
}
-/* ⚙ 설정 모달(280-5 · 523-1) — 공용 모달 폭 절반 · 그룹 상자 · 맨 아래 단추 줄 하나 */
+/* ⚙ 설정 모달(280-5 · 523-1) — 공용 모달 폭 절반 · 그룹 상자 · 맨 아래 단추 줄 하나
+ 폭 400 = 가장 긴 제목 「토적도(유토곡선) 설정」 + [원본에서 다시 그리기] · [닫기] 한 줄(557-1) */
.ui-modal.b07-settings {
- width: min(360px, 92vw);
+ width: min(400px, 92vw);
}
/* 좁은 폭 — 제목 · 머리 단추 한 줄(줄바꿈 없음) */
diff --git a/B07_DesignDetail/openwebcad/src/App.css b/B07_DesignDetail/openwebcad/src/App.css
index 994e1d59c..bff47f1b1 100644
--- a/B07_DesignDetail/openwebcad/src/App.css
+++ b/B07_DesignDetail/openwebcad/src/App.css
@@ -185,6 +185,10 @@ body > canvas[data-id="canvas"] {
min-width: 170px;
max-height: 72vh;
}
+/* 리본(position: fixed)이 쌓임 맥락이라 메뉴 z 가 그 안에 갇힘 — 메뉴 연 동안 리본을 왼쪽 판(3) 위로(557-1) */
+.cad-ribbon:has(.cad-ribbon-overflow) {
+ z-index: 10;
+}
.cad-ribbon-overflow > .ui-ctx-menu__item {
display: flex;
gap: 8px;
@@ -203,6 +207,15 @@ body > canvas[data-id="canvas"] {
align-items: stretch;
justify-content: flex-start;
}
+/* 한 줄에 칸 둘(557-1 · 문자 스타일) — 뒤 칸 라벨은 글 폭만 */
+.cad-prop-row {
+ display: flex;
+ gap: 8px;
+ align-items: center;
+}
+.cad-prop-row > .cad-prop + .cad-prop > span {
+ width: auto;
+}
/* 위젯 패널은 한 줄에 라벨+입력을 놓고 세로로 쌓는다 (리본 높이 안에 들어가야 한다) */
.cad-prop {
display: flex;
diff --git a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx
index 11555c878..d72152fe7 100644
--- a/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx
+++ b/B07_DesignDetail/openwebcad/src/components/RibbonWidgets.tsx
@@ -157,43 +157,48 @@ export const TextStyleWidget: FC = () => {
))}
-
-
-
-
+ {/* 칸 다섯 = 세 줄(리본 높이 66 안 · 557-1) — 글꼴 / 크기 · 색상 / 굵게 · 기울임 */}
+
+
+
+
+
+
+
+
);
};
diff --git a/resources/tester/test_557_1_b07_cad_fixes.py b/resources/tester/test_557_1_b07_cad_fixes.py
new file mode 100644
index 000000000..2cd028475
--- /dev/null
+++ b/resources/tester/test_557_1_b07_cad_fixes.py
@@ -0,0 +1,32 @@
+"""557-1 B07 · CAD 작은 흠 — 화면 없이 소스로 지킴.
+
+⚙ 설정 모달 폭 400(토적도 제목 · 머리 단추 한 줄) · 리본 문자 스타일 칸 다섯 = 세 줄(리본 높이 안) ·
+넘침 메뉴 연 동안 리본이 왼쪽 판(z 3) 위.
+"""
+
+import re
+from pathlib import Path
+
+ROOT = Path(__file__).resolve().parents[2]
+CAD = ROOT / "B07_DesignDetail" / "openwebcad" / "src"
+
+
+def test_settings_modal_width():
+ css = (ROOT / "B07_DesignDetail" / "B07_DesignDetail_UI_Style.css").read_text("utf-8")
+ assert re.search(r"\.ui-modal\.b07-settings \{\s*width: min\(400px, 92vw\);", css)
+
+
+def test_text_style_three_rows():
+ src = (CAD / "components" / "RibbonWidgets.tsx").read_text("utf-8")
+ widget = src[src.index("export const TextStyleWidget") :]
+ assert widget.count('className="cad-prop-row"') == 2
+ assert (
+ widget.count("cad-prop") - widget.count("cad-prop-row") == 6
+ ) # 글꼴(--wide 포함 2) + 칸 넷
+
+
+def test_overflow_menu_above_inspector():
+ css = (CAD / "App.css").read_text("utf-8")
+ z = re.search(r"\.cad-ribbon:has\(\.cad-ribbon-overflow\) \{\s*z-index: (\d+);", css)
+ inspector = re.search(r"\.cad-inspector \{[^}]*z-index: (\d+);", css)
+ assert z and inspector and int(z.group(1)) > int(inspector.group(1))