diff --git a/.gitignore b/.gitignore
index 4328ac1..d42b7b8 100644
--- a/.gitignore
+++ b/.gitignore
@@ -51,3 +51,13 @@ nbdist/
robots.txt
sitemap.xml
+
+# Regenerable local output and audit caches
+**/node_modules/
+/tmp/
+/unpackage/
+/.vite/
+/design-pipeline/generated/
+/docs/design/screens/runtime/
+/docs/superpowers/specs/design/
+/tmp-g01-icon-audit.png
diff --git a/components/AppButton.vue b/components/AppButton.vue
index 89db12e..1164a35 100644
--- a/components/AppButton.vue
+++ b/components/AppButton.vue
@@ -1,10 +1,12 @@
-
@@ -12,7 +14,7 @@
{{ label }}
-
+
diff --git a/pages/family/f04-article-list.vue b/pages/family/f04-article-list.vue
index b3cb585..66f475a 100644
--- a/pages/family/f04-article-list.vue
+++ b/pages/family/f04-article-list.vue
@@ -1,5 +1,117 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ category }}
+
+
+
+
+
+ {{ article.category }}
+ {{ article.title }}
+ {{ article.summary }}
+ {{ article.author }}{{ article.updatedAt }}
+
+
+
+
+
+ {{ keyword || activeCategory !== '全部' ? '没有找到相关谱文' : '还没有谱文' }}
+ {{ keyword || activeCategory !== '全部' ? '换一个关键词或分类继续查找。' : '从第一篇家训、序言或家族往事开始记录。' }}
+
+
+
+
+
+ {{ listState === 'empty' ? '还没有谱文' : '谱文列表暂不可用' }}
+ {{ listState === 'empty' ? '记录第一篇家风家训或家族往事。' : '请稍后重新查看,已有谱文不会受到影响。' }}
+
+
+
+
+
+
+
+
diff --git a/pages/family/f05-article-detail.vue b/pages/family/f05-article-detail.vue
index fe083e9..5562b44 100644
--- a/pages/family/f05-article-detail.vue
+++ b/pages/family/f05-article-detail.vue
@@ -1,5 +1,113 @@
-
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+ {{ article.category }}
+ {{ article.title }}
+ {{ article.author }}{{ article.updatedAt }}
+
+ {{ paragraph }}
+
+
+
+
+
+
+
+
+
+ {{ stateCopy.title }}
+ {{ stateCopy.copy }}
+
+
+
+
+
+
+
+
+
diff --git a/pages/family/f06-article-editor.vue b/pages/family/f06-article-editor.vue
index d66b3c3..2fe48e0 100644
--- a/pages/family/f06-article-editor.vue
+++ b/pages/family/f06-article-editor.vue
@@ -47,7 +47,6 @@
class="editor-control"
:class="{ 'editor-control--error': fieldErrors.title }"
>
-
-
-