diff --git a/client/src/components/base/AppPageHeader.vue b/client/src/components/base/AppPageHeader.vue
index 015d5ca..9ce8688 100644
--- a/client/src/components/base/AppPageHeader.vue
+++ b/client/src/components/base/AppPageHeader.vue
@@ -1,21 +1,59 @@
-
+
+
+
-
{{ title }}
-
{{ subtitle }}
+
+ {{ title }}
+ {{ subtitle }}
+
+
@@ -49,9 +87,53 @@ withDefaults(
gap: var(--space-3);
flex: none;
}
+
+/* 返回按钮(左段) */
+.page-head__back {
+ display: grid;
+ place-items: center;
+ width: 36px;
+ height: 36px;
+ flex: none;
+ border-radius: 50%;
+ background: var(--bg-card);
+ border: 1px solid var(--border-subtle);
+ color: var(--text-secondary);
+ cursor: pointer;
+ transition: background var(--motion-hover-fast) var(--ease-default);
+}
+.page-head__back:hover {
+ background: var(--bg-soft);
+}
+
+/* 详情/子页返回头:紧凑行内布局 */
+.page-head--detail {
+ align-items: center;
+ gap: var(--space-3);
+}
+.page-head--detail .page-head__title {
+ display: flex;
+ align-items: center;
+ gap: var(--space-3);
+}
+.page-head--detail h1 {
+ font-size: var(--fs-h3);
+ font-weight: var(--fw-h1);
+}
+
@media (max-width: 767px) {
.page-head--stack {
flex-direction: column;
}
+ /* 吸顶(替代原 layout topbar;负边距让背景铺满屏宽) */
+ .page-head--sticky-mobile {
+ position: sticky;
+ top: 0;
+ z-index: 30;
+ margin-left: calc(-1 * var(--padding-mobile));
+ margin-right: calc(-1 * var(--padding-mobile));
+ padding: var(--space-2) var(--padding-mobile);
+ background: var(--bg-canvas);
+ }
}
diff --git a/client/src/layouts/MobileLayout.vue b/client/src/layouts/MobileLayout.vue
index 545e35b..b1b9c6c 100644
--- a/client/src/layouts/MobileLayout.vue
+++ b/client/src/layouts/MobileLayout.vue
@@ -1,22 +1,13 @@
-