diff --git a/frontend/scripts/verify-ui-contract.mjs b/frontend/scripts/verify-ui-contract.mjs
index 33b5713f..0a19f1a0 100644
--- a/frontend/scripts/verify-ui-contract.mjs
+++ b/frontend/scripts/verify-ui-contract.mjs
@@ -20,7 +20,10 @@ const requiredUnifiedTokens = [
"--unified-shell-bg",
"--unified-shell-radius",
".unified-action-bar",
- ".unified-section"
+ ".unified-section",
+ ".ctms-page-shell",
+ ".ctms-page-header-row",
+ ".ctms-page-content-grid"
];
const missing = [
diff --git a/frontend/src/components/Layout.vue b/frontend/src/components/Layout.vue
index 7fb743d1..377466b7 100644
--- a/frontend/src/components/Layout.vue
+++ b/frontend/src/components/Layout.vue
@@ -195,7 +195,9 @@
@@ -704,6 +706,10 @@ const onCommand = (cmd: string) => {
background: #f7f8fb;
}
+.ctms-route-shell {
+ min-height: 100%;
+}
+
/* 过渡动画 */
.fade-transform-enter-active,
.fade-transform-leave-active {
diff --git a/frontend/src/styles/unified-page.css b/frontend/src/styles/unified-page.css
index f985b8c2..507f9373 100644
--- a/frontend/src/styles/unified-page.css
+++ b/frontend/src/styles/unified-page.css
@@ -9,6 +9,22 @@
--unified-muted-color: #6f84a8;
}
+.ctms-page-shell {
+ padding: 16px 20px 20px;
+}
+
+.ctms-page-header-row {
+ display: flex;
+ justify-content: space-between;
+ align-items: center;
+ gap: 12px;
+}
+
+.ctms-page-content-grid {
+ display: grid;
+ gap: 12px;
+}
+
.unified-shell {
background: var(--unified-shell-bg);
border: 0;