diff --git a/mobile-h5/App.vue b/mobile-h5/App.vue
new file mode 100644
index 00000000..29fe9ac9
--- /dev/null
+++ b/mobile-h5/App.vue
@@ -0,0 +1,25 @@
+
+
+
diff --git a/mobile-h5/styles/app.scss b/mobile-h5/styles/app.scss
new file mode 100644
index 00000000..dd29301d
--- /dev/null
+++ b/mobile-h5/styles/app.scss
@@ -0,0 +1,27 @@
+@import './tokens.scss';
+
+page {
+ @include token-css-vars;
+ background-color: var(--bg-page);
+ color: var(--text-primary);
+ font-family: -apple-system, BlinkMacSystemFont, 'PingFang SC', 'Helvetica Neue', sans-serif;
+ font-size: 28rpx;
+ line-height: 1.5;
+ box-sizing: border-box;
+}
+
+view, text {
+ box-sizing: border-box;
+}
+
+.page-shell {
+ min-height: 100vh;
+ background:
+ radial-gradient(840rpx 440rpx at 100% 0%, rgba(214, 163, 67, 0.14), transparent 55%),
+ radial-gradient(760rpx 400rpx at 0% 20%, rgba(10, 159, 109, 0.1), transparent 50%),
+ linear-gradient(180deg, #e8f5ef 0%, #f4f7f6 40%, #f7f9f8 100%);
+}
+
+.safe-bottom {
+ padding-bottom: calc(24rpx + env(safe-area-inset-bottom));
+}
diff --git a/mobile-h5/styles/components/attach.scss b/mobile-h5/styles/components/attach.scss
new file mode 100644
index 00000000..710ddc7d
--- /dev/null
+++ b/mobile-h5/styles/components/attach.scss
@@ -0,0 +1 @@
+// Task 4: attachment styles (.d-attach-list, .d-attach-upload, .d-attach-card, file type classes)
diff --git a/mobile-h5/styles/components/detail.scss b/mobile-h5/styles/components/detail.scss
new file mode 100644
index 00000000..7215d023
--- /dev/null
+++ b/mobile-h5/styles/components/detail.scss
@@ -0,0 +1 @@
+// Task 4: detail page styles (.detail-page, .detail-hero, .detail-metric-dock, .detail-section, .detail-footer)
diff --git a/mobile-h5/styles/components/flow.scss b/mobile-h5/styles/components/flow.scss
new file mode 100644
index 00000000..0e801396
--- /dev/null
+++ b/mobile-h5/styles/components/flow.scss
@@ -0,0 +1 @@
+// Task 4: flow timeline styles (.flow-list, .flow-item, .flow-dot, .flow-card)
diff --git a/mobile-h5/styles/components/form-shell.scss b/mobile-h5/styles/components/form-shell.scss
new file mode 100644
index 00000000..52ec05e1
--- /dev/null
+++ b/mobile-h5/styles/components/form-shell.scss
@@ -0,0 +1 @@
+// Task 4: form shell styles (.form-page, .form-section-title, .form-footer)
diff --git a/mobile-h5/styles/components/list.scss b/mobile-h5/styles/components/list.scss
new file mode 100644
index 00000000..d1799715
--- /dev/null
+++ b/mobile-h5/styles/components/list.scss
@@ -0,0 +1 @@
+// Task 4: list page styles (.list-hero, .list-filter-dock, .seg-tabs, .biz-card, status variants)
diff --git a/mobile-h5/styles/components/menu-grid.scss b/mobile-h5/styles/components/menu-grid.scss
new file mode 100644
index 00000000..bae6d08c
--- /dev/null
+++ b/mobile-h5/styles/components/menu-grid.scss
@@ -0,0 +1 @@
+// Task 4: menu-grid styles (.menu-grid, .menu-card, .menu-icon, .menu-title)
diff --git a/mobile-h5/styles/components/todo.scss b/mobile-h5/styles/components/todo.scss
new file mode 100644
index 00000000..9b30bb01
--- /dev/null
+++ b/mobile-h5/styles/components/todo.scss
@@ -0,0 +1 @@
+// Task 4: todo panel styles (.todo-panel, .todo-stats, .todo-stat, .todo-list, .todo-item)
diff --git a/mobile-h5/styles/mixins.scss b/mobile-h5/styles/mixins.scss
new file mode 100644
index 00000000..c014eddc
--- /dev/null
+++ b/mobile-h5/styles/mixins.scss
@@ -0,0 +1,14 @@
+@mixin hero-green {
+ background: linear-gradient(155deg, #066647 0%, #0a9f6d 48%, #12b37a 100%);
+ color: #ffffff;
+ border-radius: 0 0 56rpx 56rpx;
+ position: relative;
+ overflow: hidden;
+}
+
+@mixin surface-card {
+ background: var(--surface, #ffffff);
+ border: 1rpx solid var(--border, #dcebe4);
+ border-radius: var(--radius-card, 28rpx);
+ box-shadow: var(--shadow-soft);
+}
diff --git a/mobile-h5/styles/tokens.scss b/mobile-h5/styles/tokens.scss
new file mode 100644
index 00000000..de8793e4
--- /dev/null
+++ b/mobile-h5/styles/tokens.scss
@@ -0,0 +1,35 @@
+// 唯一 Token 源 — 对齐三墙 / Demo,禁止 #10b981
+$brand-green: #0a9f6d;
+$brand-green-dark: #087f57;
+$brand-green-soft: #e9f9f2;
+$barley-yellow: #d6a343;
+$barley-yellow-soft: #fff7e8;
+$bg-page: #f5f8f7;
+$surface: #ffffff;
+$text-primary: #1f2a26;
+$text-muted: #6b7b74;
+$border: #dcebe4;
+$danger: #d14343;
+$warning: #cf8a19;
+$success: #189b65;
+$radius-card: 28rpx;
+$radius-lg: 40rpx;
+
+@mixin token-css-vars {
+ --brand-green: #{$brand-green};
+ --brand-green-dark: #{$brand-green-dark};
+ --brand-green-soft: #{$brand-green-soft};
+ --barley-yellow: #{$barley-yellow};
+ --barley-yellow-soft: #{$barley-yellow-soft};
+ --bg-page: #{$bg-page};
+ --surface: #{$surface};
+ --text-primary: #{$text-primary};
+ --text-muted: #{$text-muted};
+ --border: #{$border};
+ --danger: #{$danger};
+ --warning: #{$warning};
+ --success: #{$success};
+ --radius-card: #{$radius-card};
+ --radius-lg: #{$radius-lg};
+ --shadow-soft: 0 8rpx 32rpx rgba(8, 127, 87, 0.08);
+}
diff --git a/mobile-h5/styles/vant-theme.scss b/mobile-h5/styles/vant-theme.scss
new file mode 100644
index 00000000..feb1c114
--- /dev/null
+++ b/mobile-h5/styles/vant-theme.scss
@@ -0,0 +1,16 @@
+page {
+ --button-primary-background-color: #0a9f6d;
+ --button-primary-border-color: #0a9f6d;
+ --button-primary-color: #ffffff;
+ --nav-bar-background-color: transparent;
+ --nav-bar-title-text-color: #ffffff;
+ --nav-bar-icon-color: #ffffff;
+ --tabs-bottom-bar-color: #0a9f6d;
+ --tag-primary-color: #0a9f6d;
+ --tag-success-color: #189b65;
+ --tag-danger-color: #d14343;
+ --tag-warning-color: #cf8a19;
+ --steps-active-color: #0a9f6d;
+ --notice-bar-background-color: #e9f9f2;
+ --notice-bar-text-color: #087f57;
+}
diff --git a/mobile-h5/uni.scss b/mobile-h5/uni.scss
new file mode 100644
index 00000000..668785d9
--- /dev/null
+++ b/mobile-h5/uni.scss
@@ -0,0 +1,78 @@
+/**
+ * 这里是uni-app内置的常用样式变量
+ *
+ * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量
+ * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App
+ *
+ */
+
+/**
+ * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能
+ *
+ * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件
+ */
+
+@import './styles/tokens.scss';
+
+/* 颜色变量 */
+
+/* 行为相关颜色 */
+$uni-color-primary: $brand-green;
+$uni-color-success: $success;
+$uni-color-warning: $warning;
+$uni-color-error: $danger;
+
+/* 文字基本颜色 */
+$uni-text-color:#333;//基本色
+$uni-text-color-inverse:#fff;//反色
+$uni-text-color-grey:#999;//辅助灰色,如加载更多的提示信息
+$uni-text-color-placeholder: #808080;
+$uni-text-color-disable:#c0c0c0;
+
+/* 背景颜色 */
+$uni-bg-color:#ffffff;
+$uni-bg-color-grey:#f8f8f8;
+$uni-bg-color-hover:#f1f1f1;//点击状态颜色
+$uni-bg-color-mask:rgba(0, 0, 0, 0.4);//遮罩颜色
+
+/* 边框颜色 */
+$uni-border-color:#c8c7cc;
+
+/* 尺寸变量 */
+
+/* 文字尺寸 */
+$uni-font-size-sm:12px;
+$uni-font-size-base:14px;
+$uni-font-size-lg:16px;
+
+/* 图片尺寸 */
+$uni-img-size-sm:20px;
+$uni-img-size-base:26px;
+$uni-img-size-lg:40px;
+
+/* Border Radius */
+$uni-border-radius-sm: 2px;
+$uni-border-radius-base: 3px;
+$uni-border-radius-lg: 6px;
+$uni-border-radius-circle: 50%;
+
+/* 水平间距 */
+$uni-spacing-row-sm: 5px;
+$uni-spacing-row-base: 10px;
+$uni-spacing-row-lg: 15px;
+
+/* 垂直间距 */
+$uni-spacing-col-sm: 4px;
+$uni-spacing-col-base: 8px;
+$uni-spacing-col-lg: 12px;
+
+/* 透明度 */
+$uni-opacity-disabled: 0.3; // 组件禁用态的透明度
+
+/* 文章场景相关 */
+$uni-color-title: #2C405A; // 文章标题颜色
+$uni-font-size-title:20px;
+$uni-color-subtitle: #555555; // 二级标题颜色
+$uni-font-size-subtitle:26px;
+$uni-color-paragraph: #3F536E; // 文章段落颜色
+$uni-font-size-paragraph:15px;