@lark-apaas/coding-miaoda-sandbox-skills 0.1.0-dev.b2f659e → 0.1.0-dev.c8cc2b5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (67) hide show
  1. package/miaoda/charts-skill/SKILL.md +1 -1
  2. package/miaoda/creative-to-fullstack/SKILL.md +105 -100
  3. package/miaoda/creative-to-fullstack/references/artifact-signals.md +2 -1
  4. package/miaoda/creative-to-fullstack/references/ui-to-function.md +5 -69
  5. package/miaoda/feishu/SKILL.md +4 -4
  6. package/miaoda/forms-skill/SKILL.md +9 -0
  7. package/miaoda/lark-apps-db/SKILL.md +3 -1
  8. package/miaoda/lark-apps-db/references/full-reference.md +13 -4
  9. package/miaoda/lark-apps-ops/SKILL.md +3 -2
  10. package/miaoda/lark-apps-ops/references/lark-apps-mcp.md +26 -0
  11. package/miaoda/lark-design-prototype/DESIGN.md +603 -0
  12. package/miaoda/lark-design-prototype/SKILL.md +85 -0
  13. package/miaoda/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
  14. package/miaoda/lark-design-prototype/references/case-matching.md +53 -0
  15. package/miaoda/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
  16. package/miaoda/lark-design-prototype/references/cases/data-table.md +30 -0
  17. package/miaoda/lark-design-prototype/references/cases/official-home.md +26 -0
  18. package/miaoda/lark-design-prototype/references/cases/workspace-home.md +34 -0
  19. package/miaoda/lark-design-prototype/references/color-roles.md +163 -0
  20. package/miaoda/lark-design-prototype/references/component-selection.md +134 -0
  21. package/miaoda/lark-design-prototype/references/design-quality-checklist.md +156 -0
  22. package/miaoda/lark-design-prototype/references/form-shell-patterns.md +77 -0
  23. package/miaoda/lark-design-prototype/references/icon-semantics.md +237 -0
  24. package/miaoda/lark-design-prototype/references/layout-interaction.md +164 -0
  25. package/miaoda/lark-design-prototype/references/page-contract.md +281 -0
  26. package/miaoda/lark-design-prototype/references/product-patterns.md +93 -0
  27. package/miaoda/lark-design-prototype/references/prompt-expansion.md +107 -0
  28. package/miaoda/lark-design-prototype/references/restoration-traps.md +113 -0
  29. package/miaoda/lark-design-prototype/references/token-semantics.md +112 -0
  30. package/miaoda/lark-design-prototype/references/visual-brief.md +125 -0
  31. package/miaoda/lark-design-prototype/references/visual-style-prompts.md +61 -0
  32. package/miaoda/lark-design-prototype/scripts/icon-query.mjs +272 -0
  33. package/miaoda/lark-design-prototype/scripts/token-query.mjs +76 -0
  34. package/miaoda/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
  35. package/miaoda/testing-guide/SKILL.md +106 -12
  36. package/miaoda-modern/charts-skill/SKILL.md +1 -1
  37. package/miaoda-modern/forms-skill/SKILL.md +33 -3
  38. package/miaoda-modern/lark-apps-ops/SKILL.md +3 -2
  39. package/miaoda-modern/lark-apps-ops/references/lark-apps-mcp.md +26 -0
  40. package/miaoda-modern/lark-design-prototype/DESIGN.md +603 -0
  41. package/miaoda-modern/lark-design-prototype/SKILL.md +85 -0
  42. package/miaoda-modern/lark-design-prototype/references/assets/card-illustration-library.md +113 -0
  43. package/miaoda-modern/lark-design-prototype/references/case-matching.md +53 -0
  44. package/miaoda-modern/lark-design-prototype/references/cases/conversational-ai-home.md +27 -0
  45. package/miaoda-modern/lark-design-prototype/references/cases/data-table.md +30 -0
  46. package/miaoda-modern/lark-design-prototype/references/cases/official-home.md +26 -0
  47. package/miaoda-modern/lark-design-prototype/references/cases/workspace-home.md +34 -0
  48. package/miaoda-modern/lark-design-prototype/references/color-roles.md +163 -0
  49. package/miaoda-modern/lark-design-prototype/references/component-selection.md +134 -0
  50. package/miaoda-modern/lark-design-prototype/references/design-quality-checklist.md +156 -0
  51. package/miaoda-modern/lark-design-prototype/references/form-shell-patterns.md +77 -0
  52. package/miaoda-modern/lark-design-prototype/references/icon-semantics.md +237 -0
  53. package/miaoda-modern/lark-design-prototype/references/layout-interaction.md +164 -0
  54. package/miaoda-modern/lark-design-prototype/references/page-contract.md +281 -0
  55. package/miaoda-modern/lark-design-prototype/references/product-patterns.md +93 -0
  56. package/miaoda-modern/lark-design-prototype/references/prompt-expansion.md +107 -0
  57. package/miaoda-modern/lark-design-prototype/references/restoration-traps.md +113 -0
  58. package/miaoda-modern/lark-design-prototype/references/token-semantics.md +112 -0
  59. package/miaoda-modern/lark-design-prototype/references/visual-brief.md +125 -0
  60. package/miaoda-modern/lark-design-prototype/references/visual-style-prompts.md +61 -0
  61. package/miaoda-modern/lark-design-prototype/scripts/icon-query.mjs +272 -0
  62. package/miaoda-modern/lark-design-prototype/scripts/token-query.mjs +76 -0
  63. package/miaoda-modern/lark-design-prototype/scripts/verify-static-html.mjs +117 -0
  64. package/miaoda-modern/reviewer-usage/SKILL.md +2 -0
  65. package/package.json +1 -1
  66. package/shared/attachment/SKILL.md +5 -1
  67. package/miaoda-modern/testing-guide/SKILL.md +0 -218
@@ -0,0 +1,603 @@
1
+ ---
2
+ version: alpha
3
+ name: Lark Design Prototype
4
+ description: A lightweight style specification for Feishu / Lark Web products. The core feel is polished, minimal, clean, tidy, low-density, and reliable: use 40px gaps between content groups, restrained content filling, light borders, rounded surfaces, UD-style controls, clear typography, and media only when needed so collaboration interfaces stay spacious, fresh, and easy to scan.
5
+
6
+ designStyleKeywords:
7
+ advanced_clean:
8
+ name: Polished Clean
9
+ guidance: White or very light neutral surfaces, low noise, little decoration, and clear information order.
10
+ spacious_precise:
11
+ name: Spacious And Precise
12
+ guidance: Use 40px vertical spacing between content groups by default, keep a clean 16–24px rhythm within groups, and use less content first when the request is vague.
13
+ soft_system:
14
+ name: Soft System Feel
15
+ guidance: 6–10px radius, 0.5px light borders, no shadows on ordinary cards, and UD-like control states.
16
+ quiet_intelligence:
17
+ name: Restrained Intelligence
18
+ guidance: AI, recommendation, and automation capabilities stay close to context and appear through light hints, local suggestions, and real visual anchors.
19
+
20
+ tokenSources:
21
+ universeTokens: "https://lf3-static.bytednsdoc.com/obj/eden-cn/pshi/lark-design-prototype/1.0.4/db71a6cd-33f97519-0d446cd5/semantic.json"
22
+ universeTokensSha256: "33f975193bcd0b5b12df9003e6f8586bf4662336e0bd5cf73ea1f362cfa4eb50"
23
+ universeTokenKeys: "https://lf3-static.bytednsdoc.com/obj/eden-cn/pshi/lark-design-prototype/1.0.4/db71a6cd-33f97519-0d446cd5/keys.json"
24
+ universeTokenKeysSha256: "0d446cd57b0beaaaa9ba485009b31a73be77d5f87a8481ec032c54f33b3bb471"
25
+
26
+ embeddedTokenPolicy:
27
+ colorPriority: P0
28
+ colorSource: "tokenSources.universeTokens"
29
+ keySource: "tokenSources.universeTokenKeys"
30
+ rule: "DESIGN.md keeps high-frequency P0 semantic colors and base visual guidance for offline use. Use node scripts/token-query.mjs for verified, on-demand lookup from tokenSources."
31
+
32
+ fixedColorOverrides:
33
+ sideNavigationBackground: "#f9f9f9"
34
+ sideNavigationSelectedBackground: "#1f23290d"
35
+ rule: "For sidebar background and selected sidebar item background, write the hex values directly during implementation. Do not look them up or remap them to color tokens, CSS variables, or theme variables."
36
+
37
+ iconSources:
38
+ catalog: "https://lf3-static.bytednsdoc.com/obj/eden-cn/pshi/lark-design-prototype/1.0.4/db71a6cd-33f97519-0d446cd5/icons.catalog.json"
39
+ catalogSha256: "db71a6cd6ac90c77629e8ce0fc0905ca1488a6601800ff7533385490b10eac9d"
40
+ svgUrlPattern: "https://cdn-tos-cn.bytedance.net/obj/archi/ee/es-design-base/svgs/{name}.{hash}.svg"
41
+ families: ["outlined", "colorful", "filled"]
42
+ rule: "Use references/icon-semantics.md for icon selection. Page UI icons must come from verified catalog retrieval, not AI-drawn shapes. Query the versioned public catalog on demand, prefer v2 icons when the semantic match is strong, keep the same area consistent by family / version / shape, preserve source visual type for Figma or screenshot restoration when identifiable, and use approved brand-colorful logotypes for Feishu / Lark identity. filled is not used in regular page UI unless source evidence or an explicit source-filled strategy supports it."
43
+
44
+ colors:
45
+ primary-content-default: "#1456f0"
46
+ primary-content-hover: "#336df4"
47
+ primary-content-pressed: "#0442d2"
48
+ primary-on-primary-fill: "#ffffff"
49
+ primary-fill-default: "#1456f0"
50
+ primary-fill-hover: "#336df4"
51
+ primary-fill-pressed: "#0442d2"
52
+ function-danger-fill-default: "#f54a45"
53
+ function-danger-fill-hover: "#ff7570"
54
+ function-danger-fill-pressed: "#e22e28"
55
+ function-success-fill-default: "#35bd4b"
56
+ function-success-fill-hover: "#5cd168"
57
+ function-success-fill-pressed: "#32a645"
58
+ function-warning-fill-default: "#ff811a"
59
+ function-warning-fill-hover: "#ff9d4c"
60
+ function-warning-fill-pressed: "#ed6d0c"
61
+ function-info-fill-default: "#1456f0"
62
+ function-info-fill-hover: "#336df4"
63
+ function-info-fill-pressed: "#0442d2"
64
+ text-title: "#1f2329"
65
+ text-caption: "#646a73"
66
+ text-placeholder: "#8f959e"
67
+ text-disabled: "#bbbfc4"
68
+ text-link-normal: "#1456f0"
69
+ text-link-hover: "#336df4"
70
+ text-link-pressed: "#0442d2"
71
+ text-link-disabled: "#bbbfc4"
72
+ line-border-card: "#dee0e3"
73
+ line-border-component: "#d0d3d6"
74
+ line-divider-default: "#1f232926"
75
+ bg-body: "#ffffff"
76
+ bg-content-base: "#f8f9fa"
77
+ bg-base: "#f2f3f5"
78
+ bg-body-overlay: "#f5f6f7"
79
+ bg-float: "#ffffff"
80
+ bg-float-base: "#f2f3f5"
81
+ bg-float-overlay: "#f5f6f7"
82
+ bg-sub-navigation: "#f9f9f9"
83
+ side-nav-bg: "#f9f9f9"
84
+ side-nav-item-hover: "#1f23290a"
85
+ side-nav-item-selected: "#1f23290d"
86
+ side-nav-item-selected-text: "#1f2329"
87
+ aux-side-nav-item-hover: "#1f23290a"
88
+ aux-side-nav-item-selected: "#1f232912"
89
+ side-nav-divider: "#1f232914"
90
+ bg-mask: "#0000008c"
91
+ icon-n1: "#2b2f36"
92
+ icon-n2: "#646a73"
93
+ icon-n3: "#8f959e"
94
+ icon-disabled: "#bbbfc4"
95
+ fill-hover: "#1f232914"
96
+ fill-pressed: "#1f23291f"
97
+ fill-active: "#1456f026"
98
+ fill-selected: "#1456f01a"
99
+ fill-disabled: "#bbbfc4"
100
+ static-black: "#000000"
101
+ static-white: "#ffffff"
102
+ static-white-hover: "#ffffff1a"
103
+ static-white-pressed: "#ffffff33"
104
+
105
+ colorModes:
106
+ dark:
107
+ primary-content-default: "#4c88ff"
108
+ primary-content-hover: "#3370eb"
109
+ primary-content-pressed: "#75a4ff"
110
+ primary-on-primary-fill: "#ffffff"
111
+ primary-fill-default: "#3370eb"
112
+ primary-fill-hover: "#275fce"
113
+ primary-fill-pressed: "#4c88ff"
114
+ function-danger-fill-default: "#d14642"
115
+ function-danger-fill-hover: "#b33a37"
116
+ function-danger-fill-pressed: "#f05b56"
117
+ function-success-fill-default: "#419e34"
118
+ function-success-fill-hover: "#35872a"
119
+ function-success-fill-pressed: "#51ba43"
120
+ function-warning-fill-default: "#f3871b"
121
+ function-warning-fill-hover: "#db7018"
122
+ function-warning-fill-pressed: "#f89e44"
123
+ function-info-fill-default: "#3370eb"
124
+ function-info-fill-hover: "#275fce"
125
+ function-info-fill-pressed: "#4c88ff"
126
+ text-title: "#ebebeb"
127
+ text-caption: "#a6a6a6"
128
+ text-placeholder: "#757575"
129
+ text-disabled: "#5f5f5f"
130
+ text-link-normal: "#4c88ff"
131
+ text-link-hover: "#3370eb"
132
+ text-link-pressed: "#75a4ff"
133
+ text-link-disabled: "#5f5f5f"
134
+ line-border-card: "#ebebeb26"
135
+ line-border-component: "#505050"
136
+ line-divider-default: "#cfcfcf26"
137
+ bg-body: "#1a1a1a"
138
+ bg-content-base: "#121212"
139
+ bg-base: "#0a0a0a"
140
+ bg-body-overlay: "#292929"
141
+ bg-float: "#292929"
142
+ bg-float-base: "#1a1a1a"
143
+ bg-float-overlay: "#373737"
144
+ bg-sub-navigation: "#262626"
145
+ side-nav-bg: "#262626"
146
+ side-nav-item-hover: "#ebebeb14"
147
+ side-nav-item-selected: "#ebebeb1f"
148
+ side-nav-item-selected-text: "#ebebeb"
149
+ aux-side-nav-item-hover: "#ebebeb14"
150
+ aux-side-nav-item-selected: "#ebebeb1f"
151
+ side-nav-divider: "#cfcfcf26"
152
+ bg-mask: "#00000099"
153
+ icon-n1: "#e8e8e8"
154
+ icon-n2: "#a6a6a6"
155
+ icon-n3: "#757575"
156
+ icon-disabled: "#5f5f5f"
157
+ fill-hover: "#ebebeb14"
158
+ fill-pressed: "#ebebeb1f"
159
+ fill-active: "#4c88ff33"
160
+ fill-selected: "#4c88ff26"
161
+ fill-disabled: "#5f5f5f"
162
+ static-black: "#000000"
163
+ static-white: "#ffffff"
164
+ static-white-hover: "#ffffff1a"
165
+ static-white-pressed: "#ffffff33"
166
+
167
+ typography:
168
+ fontFamily: "LarkCircular, -apple-system, BlinkMacSystemFont, PingFang SC, Hiragino Sans GB, Microsoft YaHei, sans-serif"
169
+ title-0:
170
+ fontSize: 30px
171
+ fontWeight: 600
172
+ lineHeight: 46px
173
+ title-1:
174
+ fontSize: 24px
175
+ fontWeight: 600
176
+ lineHeight: 36px
177
+ title-2:
178
+ fontSize: 20px
179
+ fontWeight: 500
180
+ lineHeight: 30px
181
+ title-3:
182
+ fontSize: 18px
183
+ fontWeight: 500
184
+ lineHeight: 28px
185
+ title-4:
186
+ fontSize: 16px
187
+ fontWeight: 500
188
+ lineHeight: 24px
189
+ title-5:
190
+ fontSize: 16px
191
+ fontWeight: 400
192
+ lineHeight: 24px
193
+ headline:
194
+ fontSize: 14px
195
+ fontWeight: 500
196
+ lineHeight: 22px
197
+ body-0:
198
+ fontSize: 14px
199
+ fontWeight: 400
200
+ lineHeight: 22px
201
+ body-2:
202
+ fontSize: 12px
203
+ fontWeight: 400
204
+ lineHeight: 20px
205
+ caption-0:
206
+ fontSize: 12px
207
+ fontWeight: 500
208
+ lineHeight: 20px
209
+ caption-1:
210
+ fontSize: 10px
211
+ fontWeight: 500
212
+ lineHeight: 16px
213
+ caption-3:
214
+ fontSize: 10px
215
+ fontWeight: 400
216
+ lineHeight: 16px
217
+
218
+ radius:
219
+ none: 0
220
+ s: 4px
221
+ m: 6px
222
+ l: 8px
223
+ xl: 10px
224
+ xxl: 12px
225
+ full: 9999px
226
+
227
+ spacing:
228
+ xxs: 4px
229
+ xs: 8px
230
+ sm: 12px
231
+ md: 16px
232
+ lg: 24px
233
+ xl: 32px
234
+ xxl: 40px
235
+ xxxl: 48px
236
+
237
+ responsive:
238
+ breakpoints:
239
+ compact: "<600px"
240
+ narrow: "600px-1023px"
241
+ standard: ">=1024px"
242
+
243
+ components:
244
+ app-shell:
245
+ surface: "{colors.bg-body}"
246
+ textColor: "{colors.text-title}"
247
+ radius: "{radius.none}"
248
+ density: "relaxed-enterprise"
249
+ side-navigation:
250
+ surface: "#f9f9f9"
251
+ surfaceGuidance: "fixed #f9f9f9, low presence, avoid obvious gray block"
252
+ hoverFill: "{colors.side-nav-item-hover}"
253
+ selectedFill: "#1f23290d"
254
+ selectedText: "{colors.text-title}"
255
+ selectedFontWeight: 500
256
+ dividerColor: "{colors.side-nav-divider}"
257
+ itemAlign: "left"
258
+ itemGapY: 2px
259
+ radius: "{radius.m}"
260
+ primary-button:
261
+ backgroundColor: "{colors.primary-fill-default}"
262
+ textColor: "{colors.primary-on-primary-fill}"
263
+ typography: "{typography.body-0}"
264
+ radius: "{radius.m}"
265
+ secondary-button:
266
+ backgroundColor: "{colors.bg-body}"
267
+ textColor: "{colors.text-title}"
268
+ borderColor: "{colors.line-border-component}"
269
+ typography: "{typography.body-0}"
270
+ radius: "{radius.m}"
271
+ icon-button:
272
+ backgroundColor: "transparent"
273
+ hoverBackgroundColor: "{colors.fill-hover}"
274
+ pressedBackgroundColor: "{colors.fill-pressed}"
275
+ iconColor: "{colors.icon-n2}"
276
+ radius: "{radius.m}"
277
+ content-card:
278
+ backgroundColor: "{colors.bg-body}"
279
+ borderColor: "{colors.line-border-card}"
280
+ borderWidth: 0.5px
281
+ textColor: "{colors.text-title}"
282
+ radius: "{radius.l}"
283
+ padding: "{spacing.lg}"
284
+ shadow: none
285
+ business-surface:
286
+ backgroundColor: "{colors.bg-body}"
287
+ borderColor: "{colors.line-border-card}"
288
+ borderWidth: 0.5px
289
+ radius: "{radius.l}"
290
+ shadow: none
291
+ data-table:
292
+ backgroundColor: "{colors.bg-body}"
293
+ borderColor: "{colors.line-border-card}"
294
+ borderWidth: 0.5px
295
+ dividerColor: "{colors.line-divider-default}"
296
+ typography: "{typography.body-0}"
297
+ bodyFontWeight: 400
298
+ cellTextWrap: "nowrap"
299
+ cellTextOverflow: "ellipsis"
300
+ filter-bar:
301
+ backgroundColor: "{colors.bg-body}"
302
+ controlBorderColor: "{colors.line-border-component}"
303
+ gap: "{spacing.md}"
304
+ media-card:
305
+ backgroundColor: "{colors.bg-body}"
306
+ borderColor: "{colors.line-border-card}"
307
+ borderWidth: 0.5px
308
+ radius: "{radius.l}"
309
+ mediaRadius: "{radius.l}"
310
+ shadow: none
311
+ floating-surface:
312
+ backgroundColor: "{colors.bg-float}"
313
+ nestedBackgroundColor: "{colors.bg-float-overlay}"
314
+ radius: "{radius.l}"
315
+ empty-state:
316
+ backgroundColor: "{colors.bg-body}"
317
+ textColor: "{colors.text-caption}"
318
+ illustrationRole: "confirmed-asset-or-generated-media"
319
+ ---
320
+
321
+ ## Overview
322
+
323
+ Feishu / Lark style is made of a stable product feel: white or very light neutral surfaces, a clear information spine, restrained brand blue, soft radius, light borders, generous whitespace, lower information density, restrained content filling, UD-style controls, and illustrations or product images only where they matter.
324
+
325
+ Pages should feel polished, minimal, clean, tidy, and spacious. They can organize content freely based on the user input, but they must preserve the basic order of a Feishu product: readable, scannable, operable, and responsive.
326
+
327
+ ### Style DNA
328
+
329
+ - **Light surfaces**: Large pages and workspaces (body / app-root / main-workspace / main-content / right content area) should prefer white or nearly white `bg-body`. The sidebar background must be written directly as `#f9f9f9`; low-emphasis shells or local backing surfaces may use near-white neutral `bg-base` / `bg-sub-navigation`. Avoid making the main content workspace an obvious gray area.
330
+ - **Fewer lines**: Borders only serve key boundaries, real controls, tables / lists, and necessary grouping.
331
+ - **Precise space**: First-level content groups use 40px vertical spacing by default; groups keep a clean 16–24px rhythm internally.
332
+ - **Less content**: When the request is not specific enough, first show product identity, primary task, one main visual or primary task area, one main content area, and a small set of samples. Keep the first pass airy and clean, and avoid actively filling the whole page.
333
+ - **Low noise**: Keep only one primary visual anchor in the same viewport. Use brand blue, functional colors, bold text, and light gray fills carefully so multiple areas do not fight for visual focus.
334
+ - **Restrained emphasis**: Blue and other accent colors only express primary actions, links, focus, current state, real status, and a small amount of brand identification. Do not use them as ordinary decoration, default icon color, tag clouds, or large-area backgrounds.
335
+ - **Quiet icons**: Regular page UI icons use outlined icons, with color chosen by semantic role. Ordinary navigation, tools, entries, table row actions, and category helpers default to neutral icon colors. Colorful icons are only for File v2 file-type identification, and icons in the same area / module stay the same type and shape.
336
+ - **No gradients**: Page UI does not use gradients. Backgrounds, Hero backing surfaces, cards, buttons, tags, icon backgrounds, borders, dividers, masks, and decorative blocks must not use gradients to express hierarchy.
337
+ - **Restrained weights**: Body text, descriptions, table content, card descriptions, button labels, and link-style text actions use 400 by default. Module titles, table headers, selected navigation, card primary text, and key numbers may use 500. Page titles or very few core headings may use 600.
338
+ - **Light shells**: Approval, settings, and detail-edit pages use compact product shells. Top bars identify product / space and low-emphasis utilities; page-level business actions usually stay in the page title or primary task area. Right helper rails stay auxiliary and quiet.
339
+ - **Soft radius**: Default controls use 6px, content cards 8px, and relaxed media or large panels 10–12px.
340
+ - **Restrained shadows**: Ordinary business cards, Hero, metric cards, quick entries, table containers, and right summaries do not use shadows. Shadows are only for floating layers.
341
+ - **UD-like controls**: Recognizable system controls follow Universe Design visual language, sizing, states, and interaction semantics in the generated React UI. Custom code handles composition, layout, and local styling.
342
+ - **Responsible media**: Illustrations, avatars, product images, and entry icons appear only when needed and must explain business meaning or state, not merely fill space. Hero, welcome areas, recommended content, product entries, empty states, workspace home pages, and business summaries that need first-glance intent should first evaluate whether a visual anchor is needed; when matched, check the illustration library first. Dense data pages, settings pages, audit pages, and table-first flows can use no imagery at all.
343
+
344
+ ## Subdocument Boundaries
345
+
346
+ `DESIGN.md` keeps only cross-page, high-impact, long-term stable visual rules. Read finer references only when needed:
347
+
348
+ - Color roles: `references/color-roles.md`
349
+ - Token, radius, spacing, and shadow semantics: `references/token-semantics.md`
350
+ - Icon selection and style: `references/icon-semantics.md`
351
+ - Control mapping and UD-style coverage: `references/component-selection.md`
352
+ - Figma / screenshot to responsive layout: `references/layout-interaction.md`
353
+ - Visual brief: `references/visual-brief.md`
354
+ - Form shells, top navigation, right helper rails, and emphasis budgets: `references/form-shell-patterns.md`
355
+ - Media and generated-image style: `references/assets/card-illustration-library.md`, `references/visual-style-prompts.md`
356
+ - Case-based inspiration: `references/case-matching.md` and `references/cases/*.md`
357
+ - High-fidelity restoration risks: `references/restoration-traps.md`
358
+ - Delivery check: `references/design-quality-checklist.md`
359
+
360
+ Cases and framework signatures are only decision aids. User input, Figma / screenshot evidence, the primary product task, and a reasonable current-page composition take priority.
361
+
362
+ ## Color
363
+
364
+ Use colors by role, not taste.
365
+
366
+ - Primary filled actions use `primary-fill-default`; a local area usually has only one primary filled action.
367
+ - Except for primary actions, links, focus, current state, real status, and a small amount of brand identification, keep color restrained. Do not let primary hue or over-saturated colors steal visual focus.
368
+ - Brand blue is not used for ordinary card backgrounds, decorative lines, default icon matrices, category tags, large KPI emphasis, or entries without state meaning. Avatars, icon backgrounds, decorative blocks, large backgrounds, and auxiliary entries prefer neutral or low-saturation colors.
369
+ - Within one content group, usually use only one accent color except for real status colors. Category tags, ordinary states, weak recommendations, entry icon backgrounds, KPI containers, and avatars prefer neutral or low-saturation schemes.
370
+ - Icon containers in quick entries, recommended content, and product entries may use low-saturation, low-opacity blue fills such as `rgba(20, 86, 240, 0.06–0.10)`. This only supports the icon and does not carry state or category. Current items, primary actions, and real statuses still use semantic colors.
371
+ - The first-screen accent-color budget usually contains only one primary filled button, one current state, and necessary real-status feedback. Do not simultaneously use blue, success, warning, and danger colors to distinguish ordinary entries, cards, KPIs, or decorative elements.
372
+ - Blue text, linear icons, links, and selected states use `primary-content-default` or link tokens.
373
+ - Primary text uses `text-title`; descriptions, metadata, and weak hints use `text-caption` or `text-placeholder`.
374
+ - Content cards, tables, and key container borders use `line-border-card`; control boundaries use `line-border-component`.
375
+ - Large pages and workspaces (body / app-root / main-workspace / main-content / right content area) should prefer white or nearly white `bg-body`. The sidebar background must be written directly as `#f9f9f9`; low-emphasis shells or local backing surfaces may use near-white neutral `bg-sub-navigation` / `bg-base`, stay low-presence, and avoid forming obvious gray blocks. Do not use a light-gray large background under the whole main content and then stack white cards to create hierarchy.
376
+ - The main side navigation background must be written directly as `#f9f9f9`; hover uses a light neutral fill; the current item background must be written directly as `#1f23290d`; current item text uses neutral body color and 500 weight. Auxiliary sidebars under top primary navigation use the same fixed values if they function as navigation. Sidebar selected states do not use light-blue fills or brand-blue text by default unless the product clearly uses blue navigation as an identity anchor.
377
+ - Status colors only express real semantics: danger, success, warning, and information. Category tags prefer neutral or component-provided styles.
378
+ - Icon color follows role: default icons use `icon-n2`, current or high-emphasis icons use `icon-n1`, low-emphasis icons use `icon-n3`, and disabled icons use `icon-disabled`; only primary actions, links, focus, current state, destructive actions, and real statuses use the corresponding semantic colors.
379
+
380
+ Do not use gradients in page UI, including `linear-gradient`, `radial-gradient`, `conic-gradient`, gradient image masks, gradient borders, or gradient decorative blocks. Avoid colored borders as a general pattern, brand blue as default body text, large blue fills on ordinary cards, all-blue default icon matrices, and functional colors as default category tags.
381
+
382
+ ## Typography
383
+
384
+ The default reading spec is 14px / 22px / 400. Button labels and link-style text actions use 14px / 22px / 400 by default. Emphasized rows and active labels use 14px / 22px / 500. Auxiliary text uses 12px / 20px / 400.
385
+
386
+ Keep heading hierarchy restrained:
387
+
388
+ - Page-level title: 24–30px, 600, for page identity or strong opening.
389
+ - Large section title: 16–20px, 500.
390
+ - Module title: 16px / 24px / 500.
391
+ - Card title and primary list text: 14px / 22px / 500.
392
+ - Table body: 14px / 22px / 400; table headers may use 12–14px / 20–22px / 500.
393
+ - Metadata and descriptions: 12px / 20px / 400.
394
+
395
+ Do not enlarge or bold everything to create a "premium" feel. Enterprise-product polish usually comes from alignment, whitespace, information hierarchy, and real component states.
396
+
397
+ Font weight serves hierarchy, not decoration. Body text, descriptions, table content, card descriptions, and button labels stay 400 by default. Module titles, table headers, selected navigation, card primary text, and a small number of key numbers usually use 500. 600 is only for page titles, Hero main titles, or very few core headings. Within one information group, usually emphasize only one primary text. Do not bold titles, numbers, tags, descriptions, and list rows all at the same time. Table body especially stays 400; customer names, object names, amounts, owners, times, and action links are not bold.
398
+
399
+ Action text uses regular weight by default. Primary buttons, secondary buttons, text buttons, section-header text actions, card-footer text actions, right-rail helper links, table-row action links, and inline text actions stay at 400 unless the source design clearly proves a stronger emphasis. Filled buttons express priority through fill color, size, and placement; text actions such as "查看全部", "了解能力", "View all", and "Learn more" express clickability through link color, placement, hover state, and concise wording.
400
+
401
+ For form, approval, settings, and detail-edit pages, write an explicit emphasis budget before implementation when typography affects quality. The default budget is: one page title at 600; section titles, form labels, selected navigation, and approval step owners at 500; descriptions, helper text, input values, button labels, links, metadata, bullet bodies, and approval step descriptions at 400. One local information group usually has only one 500-weight layer.
402
+
403
+ ## Layout
404
+
405
+ ### Spacing System
406
+
407
+ The base unit is 4px. All layouts should align to the 4px base grid. Dimensions, spacing, radius, and container offsets should not use random values. Common rhythm:
408
+
409
+ - 4px: icon-to-text and tag internals;
410
+ - 8px: compact control internals and inline binding;
411
+ - 12px: icon groups, auxiliary descriptions, and local binding;
412
+ - 16px: title-to-content, filters, same-group card grids;
413
+ - 24px: card padding, left-right columns, large side-by-side blocks;
414
+ - 40px: between first-level content groups;
415
+ - 48px: strong separation for first screens or relaxed onboarding.
416
+
417
+ Feishu style uses large spacing to separate modules and reduces unnecessary dividers. First-level content groups use 40px by default; groups keep 16–24px internally to stay clean. Only local structures such as table rows, menu items, and tag groups use tight 4–12px spacing.
418
+
419
+ In implementation, write grids as page-level variables or reusable constants instead of hand-writing different values in every module. Recommended values: `--page-x: 32–40px / 24px / 16px`, `--section-gap: 40px`, `--module-gap: 16px`, `--card-gap: 16px or 24px`, `--rail-gap: 24px`. Except for font line-height, 0.5px borders, and optical icon corrections, layout values should sit on the 4px grid.
420
+
421
+ ### Grid And Containers
422
+
423
+ - Main content uses responsive containers, not copied Figma canvas coordinates.
424
+ - Work pages prefer a vertical main spine. Left-right columns are only for main content plus clearly defined auxiliary information.
425
+ - The main workspace uses responsive width and fills the available space after the navigation shell. `main-workspace`, `main-content`, and the right content area use `width: 100%`, responsive page margins, grid / flex / minmax, and breakpoints.
426
+ - Max reading width is only for local reading content such as long-form text, settings forms, and detail descriptions. Workspaces, tables, boards, CRM, admin pages, and data pages must not apply a fixed `max-width` to the whole main workspace.
427
+ - At standard width, the main content container usually uses 32–40px horizontal page margins; `narrow` uses 24px; `compact` uses 16px. Content stacks, module headers, card grids, and table left edges should align to the same container line.
428
+ - The page main spine uses one content container line. Page title, module title, Hero, quick entry, card grid, table container, and right rail inherit padding from the same wrapper. Do not use a single module's `margin-left`, temporary `width`, or offset value to force alignment.
429
+ - A right auxiliary rail appears only when the primary task needs it. Common width is 320–384px, with a 24px gap from the main content. Do not add a right rail just to fill a wide screen.
430
+ - In forms and detail pages, the right rail uses `plain_helper_rail`, `light_panel_rail`, or `drawer_on_demand`. It explains rules, approval flow, permission risk, or contextual help, and should not compete with the main form through strong borders, shadows, large titles, bold body text, or stacked cards.
431
+ - Responsive columns use stable tracks. Common main column: `minmax(0, 1fr)`, right auxiliary rail: `320–384px`, column gap: 24px. At `narrow`, the right rail merges into the main content flow; at `compact`, use a single column.
432
+ - Card grids use stable column width and fixed gap. Common entry cards or summary cards may use `repeat(auto-fit, minmax(240px, 1fr))` or equivalent responsive column tracks, with 16–24px gap. Ordinary content cards prefer `align-items: start`; quick entries, app entries, and lightweight recommendation entries use equal height within the same row: `grid-auto-rows: auto`, allowing cards in one row to stretch to the tallest card in that row. Hover, selected, loading text, and dynamic numbers must not change card height, column width, or the overall layout.
433
+ - Inside one module, use a card grid, table, or list. Avoid horizontally stitching modules with different responsibilities. A single card or summary block should carry one main conclusion and a small amount of supporting information.
434
+ - When the natural-language request does not specify module count, data volume, or a complete business flow, keep the page lightweight: the first screen prefers 1 main visual or primary task area, 1 main content area, and at most 1 auxiliary area; overall it usually has only 2–3 visible content groups. Table / list samples stay within 5–8 rows, card samples stay within 3–4 items, and KPIs appear only when the primary task needs them, with 1–3 items. When the scene needs welcome, task reminders, smart suggestions, high-value summaries, or empty-state guidance, the main visual can use `hero-card`.
435
+ - Do not proactively add a KPI wall, long list, right-side insights, recommended content, recent visits, quick entries, or multi-level navigation to make the page look complete. Add them only when the user goal, source evidence, or primary product task needs them. In the first pass, clear whitespace is preferable to unfounded content.
436
+ - First-level content sections use an external section header by default. The title sits above the bordered content container and contains the module title, optional description, and right-side tools. The table, list, card grid, or business surface sits below. Hero, floating layers, navigation, and a single detail card may be exceptions.
437
+ - Page-level search goes by default at the leftmost position of the `top-nav` right tool group. Content sections only keep search with a clearly local scope, such as searching the current table or current list.
438
+ - Filters, Tabs, view switches, and local actions should align as one toolbar group. At standard width, the toolbar stays on one row. Select / DatePicker uses content-sized widths, usually 160–220px; do not set `width: 100%` or `flex: 1` to stretch filters across the full row.
439
+ - When a module header contains filters, Select, Tabs, or action buttons, it should wrap or switch to a vertical layout at narrow widths, never compress title or button text into one-character columns. When space is tight, filters first collapse into an icon button, Dropdown, Popover, or Drawer rather than using a full-row long selector.
440
+ - Non-table long text needs a readable width, end ellipsis, a two-line limit, or earlier breakpoint wrapping. Avoid `word-break: break-all` and very narrow fixed widths. Tables follow the table-specific single-line rule.
441
+
442
+ ### Shell Patterns
443
+
444
+ First determine which navigation owns the main frame, then design the top bar, sidebar, and content area. Do not mix the visual rules of two shell patterns.
445
+
446
+ #### side-nav-primary
447
+
448
+ Suitable for CRM, workspaces, back-office systems, admin consoles, data lists, and products where a left primary entry rail carries persistent navigation.
449
+
450
+ - Side navigation is the main app anchor and usually starts at the page top edge with `100vh` height.
451
+ - At standard width, the sidebar is expanded by default and is usually 224–280px wide. Use 280px when the information architecture is richer; compact back-office products can use 224–240px.
452
+ - The right workspace still prefers `bg-body`. Content is centered within the available workspace and uses 40px content-group spacing, title areas, and 0.5px light borders for hierarchy.
453
+ - Do not force the right main content to get a large rounded shell, 8px shell offset, or extra backing layer just because the page uses primary side navigation.
454
+
455
+ #### top-nav-primary
456
+
457
+ Suitable for Docs, tables, knowledge bases, collaboration spaces, canvases, AI assistants, and products where the top bar carries global identity and tool entry points.
458
+
459
+ - Top navigation spans `100vw`, is usually 64px high, uses a `bg-body` surface, and has a 0.5px `line-divider-default` or equally weak bottom divider.
460
+ - Page main content starts below the top bar, and the background continues to use `bg-body`. Use cards, tables, lists, panels, or `bg-body-overlay` only when local hierarchy is needed. Do not wrap the page in an extra page-level rounded shell.
461
+ - If there is still a sidebar under the top primary navigation, it is auxiliary navigation: it starts below the top bar, has height `calc(100vh - 64px)`, is usually 280px wide, uses `bg-body`, and is separated from content by a 0.5px vertical divider.
462
+ - The menu / collapse control on the top left controls the auxiliary sidebar. At compact widths, it can switch to a drawer or explicit entry.
463
+
464
+ ### Whitespace Philosophy
465
+
466
+ Space expresses hierarchy. Use 40px large spacing between content groups and a clean 16–24px rhythm inside modules. Dividers are only for table / list rows, table headers, navigation boundaries, complex form groups, permission / audit information, floating-layer boundaries, and necessary information grouping.
467
+
468
+ If most modules in the same viewport have full frames, the page feels heavy. Prefer whitespace, titles, white surfaces, light fills, and hover states to distinguish modules.
469
+
470
+ The standard section structure is "header area + content container". The header area and content container usually keep 12–16px spacing; content groups still keep about 40px. Borders only wrap the real content container, not the section title.
471
+
472
+ Surface hierarchy starts from `bg-body`. One area usually keeps at most two layers: page base and content surface. Introduce `bg-body-overlay` / `bg-base` only for clear backing, nested editing areas, or floating-layer relationships. Avoid gray backing with white cards, white cards with gray blocks, gray blocks with smaller cards, card-in-card layouts, and full-page walls of cards. When content needs subdivision, prefer headings, whitespace, row structure, light dividers, or hover / selected states.
473
+
474
+ ## Responsive Behavior
475
+
476
+ Handle responsiveness by viewport and information density:
477
+
478
+ | Name | Width | Handling |
479
+ | --- | --- | --- |
480
+ | compact | `<600px` | Single-column content flow; sidebar becomes an explicit entry; complex filters collapse; tables keep key columns and a details entry. |
481
+ | narrow | `600px-1023px` | Reduce multi-column count; right auxiliary rail merges into the main flow; header and tool areas may wrap or stack. |
482
+ | standard | `>=1024px` | Keep the full shell, multi-column content, and necessary right auxiliary area; the main workspace fills available space, using local max reading width only for long-form text, forms, and detail descriptions. |
483
+
484
+ Sidebar, top bar, tables, filters, drawers, and dialogs must stay usable. When the responsive layout shrinks, protect the current page identity, primary action, and main content first. Do not collapse navigation into an unlabeled or hard-to-understand state.
485
+
486
+ ## Controls
487
+
488
+ ### UD-Style System Controls
489
+
490
+ Buttons, inputs, form controls, tables, tabs, tags, menus, dropdowns, popovers, drawers, dialogs, empty states, uploads, pagination, and feedback controls follow Universe Design visual language and state behavior.
491
+
492
+ Entries in control planning describe visual responsibility. Reproduce UD-like appearance, state behavior, and accessibility semantics in React. Page-generated icons use `iconSources.catalog` `description`, `name`, and `hash` to choose semantically close icons and assemble SVG URLs.
493
+
494
+ ### Custom Areas
495
+
496
+ Custom areas are allowed for:
497
+
498
+ - page shells, responsive grids, and business composition containers;
499
+ - media slots, image cropping, and illustration placement;
500
+ - composite business cards not directly covered by UD;
501
+ - local sizes, spacing, and states needed to match Figma / screenshot sources.
502
+
503
+ Inside custom areas, Button, Input, Tag, Avatar, Dropdown, Tabs, Table, Drawer, Dialog, and similar controls should still follow UD visual language, sizing, and state behavior.
504
+
505
+ ### Tables
506
+
507
+ Tables are for efficient scanning and comparison. Row information must be light, stable, and single-line.
508
+
509
+ - Table body cells show one line by default: `white-space: nowrap; overflow: hidden; text-overflow: ellipsis;`. Do not stack "primary title + subtitle", "customer name + industry", "time + note", or similar two-line structures in the same cell.
510
+ - When auxiliary information is needed, prefer separate columns, hover tooltip, right-side detail drawer, or row detail. Do not squeeze it into a second line inside the cell.
511
+ - Table body uses 14px / 22px / 400; table headers may use 12–14px / 20–22px / 500. Row customer names, object names, amounts, owners, times, and action links all stay 400, preventing the table from turning into a bold list.
512
+ - Status Tags, Badges, and progress bars express state by component semantics and may use component-default weight; they must not make other text in the same row bold.
513
+ - Table row height stays stable. Recommended regular row height is 48–56px. Hover, selected, loading, edit state, and long-text ellipsis must not change row height.
514
+
515
+ ### Framework Signatures
516
+
517
+ Use these style signatures only when the page truly needs the corresponding framework:
518
+
519
+ #### top-nav
520
+
521
+ - Suitable for global product identity, space name, tool button group (search, notification, help, settings), and avatar in Feishu / tool / information products.
522
+ - Surface uses white or `bg-body`, with an optional 0.5px light boundary at the bottom; normal height is 56–64px, and `top-nav-primary` tends to use 64px.
523
+ - Left side expresses current product, space, page identity, or collapse control; right side carries search, refresh, export, notifications, help, settings, avatar, and similar tool buttons.
524
+ - Page-level search goes at the leftmost position of the right tool button group. Standard width can use a 280–360px search input; tight space or many tools should use a 28px icon button. Do not show both a search input and a search icon button in the same top bar.
525
+ - Right tool icon buttons use one size: 28px container + 20px linear icon. Dense toolbars may use 18px icons, but the same group must be consistent. Avatar entry is usually 32px.
526
+ - Tool icons use `outlined` SVG from `iconSources.catalog`, matched by catalog description and exact action semantics. Keep one outlined style within the same tool group, and avoid text characters, punctuation, or emoji as icons for search, refresh, more, collapse, create, notification, and similar actions.
527
+ - Tool group horizontal rhythm is usually 36px; use 16px gap or a 0.5px vertical divider at meaning changes.
528
+ - The top bar does not carry a large business primary CTA. Create-type primary buttons fit better in the page title area, Hero, or primary task area, unless user input or source evidence clearly places it in the top tool group.
529
+ - Form and approval pages should avoid repeating the page title in the top bar. The top bar identifies the product, space, or workflow center; the page header identifies the current task.
530
+ - Top-nav text entries such as help, records, and settings default to 14px / 22px / 400. Use 500 only for the current entry or proven active state.
531
+
532
+ #### side-navigation
533
+
534
+ - Suitable for stable primary entries, space switching, or long-running workflows.
535
+ - Sidebar background must be written directly as `#f9f9f9`, stay low-presence, and not look like an obvious gray block. During implementation, write the hex value directly and do not call `side-nav-bg`, `bg-sub-navigation`, or any other color token. Auxiliary sidebars under `top-nav-primary` use `#f9f9f9` if they function as navigation; if they only support content, they can use `bg-body` and a 0.5px vertical divider.
536
+ - Standard expanded width is usually 224–280px. Full product navigation prefers 280px, while compact back-office products can use 224–240px. Collapsed width is 64–72px and keeps only items with clear icon semantics.
537
+ - The top brand / space area is usually 56–64px high. Without search or a top CTA, the first navigation group starts right below the title area and does not add large extra whitespace.
538
+ - Menu items are left-aligned with an icon + label structure. Default row height is 38–40px, radius 6px, horizontal padding 8px, icon size 18–24px, and icon-to-label gap 10–12px.
539
+ - Within the same navigation group, keep 2px vertical spacing between items. Hover / selected background blocks must not touch vertically, and increased row height must not replace this spacing.
540
+ - Text defaults to 14px / 22px / 400; selected items use 14px / 22px / 500. Default icons use `icon-n2`; important current items may rise to `icon-n1`.
541
+ - Hover uses a lighter neutral fill, with neutral text and icons, and must not look like a second selected state. Current item background must be written directly as `#1f23290d`; selected item text uses 500 weight and neutral body color. During implementation, write the hex value directly and do not call `side-nav-item-selected` or selected-state color tokens. Only when the product clearly uses blue navigation as its primary identity may it use light-blue selected fill and brand-blue text.
542
+ - Keep only one primary current item in the same sidebar at the same time. Multiple selected groups weaken page-location clarity.
543
+ - Group headings are about 28px high, left-indented 8px, text 12px / 20px / 400, and color `text-placeholder`. Only the second and later groups need group headings. When needed, group gaps may use a 0.5px `side-nav-divider` with about 8px before and after the divider.
544
+ - Do not place centered Button components in the sidebar. If a create entry must appear in the sidebar, style it as a normal navigation row or entry row. Global primary actions belong in the page title area, Hero, or primary task area.
545
+ - Collapsed state must not compress text navigation into initials, single characters, or meaningless abbreviations. Items without clear icon semantics should be hidden, moved into a menu, or become a drawer on mobile.
546
+
547
+ #### quick-action-module
548
+
549
+ - Suitable for short paths into objects, apps, workflows, imports, approvals, generation, or sync.
550
+ - Entries prefer Card / List row semantics and horizontal left alignment: icon on the left, title and description on the right.
551
+ - Icon containers are usually 36–40px with about 8px radius. By default, they may use low-saturation, low-opacity blue fills; icons use small-area semantic colors such as `icon-n1` / `primary-content-default`. Do not turn the whole entry group into high-saturation color blocks.
552
+ - Card height is determined by content within the same row. Regular quick entries use 16px vertical padding and 20–24px horizontal padding; the grid parent uses `grid-auto-rows: auto` and may use `align-items: stretch` or card `height: 100%` so all entries in the same row take the height of that row's tallest card. Do not set fixed `height`, excessive `min-height`, `aspect-ratio`, `grid-auto-rows: 1fr`, `grid-auto-rows: minmax(...)`, `place-items: center`, or fixed height classes such as `h-24 / h-28 / h-32`. Description text is capped at 2 lines, and real content line-height shapes the card; short-copy cards only follow the tallest card in the same row and do not create extra bottom whitespace on their own.
553
+ - Title: 14px / 22px / 500. Description: 12–14px / 20–22px / 400. Short descriptions stay one line; long descriptions use up to 2 lines with ellipsis.
554
+ - Do not replace quick entry cards with outline Buttons or centered button groups.
555
+
556
+ #### hero-card
557
+
558
+ Suitable for opening welcomes, key task reminders, smart suggestions, high-value summaries, empty-state guidance, and proposal first screens. `hero-card` usually occupies one row. Workspaces, portals, home pages, launch pages, AI assistants, CRM / sales summaries, data-insight entries, and recommendation scenes can actively introduce `hero-card` based on the primary task to help users understand the page at first glance. Table directories, settings, audits, approval details, member permissions, and strong operation forms default to a title area + tool area opening unless user input, Figma / screenshot, or empty-state evidence clearly requires Hero.
559
+
560
+ Hero should feel like an in-product workspace opening, not a marketing first screen. Title is usually 24px / 36px / 600, description 14px / 22px / 400, up to 2 lines. Content area: left text container width 368px, left padding 40px. Keep copy concise: one main message, one description, and 1–2 actions. Do not make Hero carry a KPI wall, long list, or multiple recommendation groups. Hero does not force an illustration every time, but welcome, personal greeting, smart suggestion, business summary, sales growth, data insight, recommendation, and empty-state Hero scenes need a visual anchor by default. When a visual anchor is needed, write `media_decision` and `media_plan`, then first read `references/assets/card-illustration-library.md` to match an asset. When the library has no suitable asset, generate a bitmap according to the generated-media fallback rules or use another accessible asset.
561
+
562
+ ## Iteration Guidelines
563
+
564
+ Add only high-impact guardrails: surfaces, whitespace, borders, radius, typography, UD-style controls, media responsibility, responsive behavior, and text safety. Leave one-off business details to the current task. After editing, check that the main entry, reference map, token data, and quality checklist still align with each other.
565
+
566
+ ## Known Gaps
567
+
568
+ The following topics currently keep only lightweight boundaries and should expand only when official materials or stable samples are available: motion, elevation, complex responsiveness, copy tone, and a complete media asset system.
569
+
570
+ ## Do And Avoid
571
+
572
+ Do:
573
+
574
+ - Use UD-style controls and semantic tokens;
575
+ - Make pages look like real Feishu product surfaces;
576
+ - Use large whitespace and module titles to reduce unnecessary dividers;
577
+ - Use 0.5px light borders and no shadows on ordinary business cards;
578
+ - Left-align entries, navigation, lists, and summaries by default;
579
+ - Look for existing assets before considering generated imagery when images are needed;
580
+ - Respect source section order, density, and component evidence in Figma / screenshot restoration;
581
+ - Preserve the model's freedom to organize content based on the task.
582
+
583
+ Avoid:
584
+
585
+ - Treating cases as fixed page templates;
586
+ - Adding top navigation, sidebar, quick entries, or Hero just to fit a framework when the user did not ask for them;
587
+ - Rendering standard controls such as Button, Input, Table, Menu, Tabs, Drawer, or Dialog as unstyled ordinary elements;
588
+ - Using heavy gray backgrounds, strong shadows, or excessive borders to create hierarchy;
589
+ - Using blue or other accent colors to decorate ordinary cards, icon matrices, category tags, KPIs, or large-area backgrounds;
590
+ - Using gradients in page UI;
591
+ - Using filled icons without source evidence or an explicit `source-filled` strategy, or using AI-drawn icons, emoji, text characters, CSS / canvas drawing, hand-written SVG, or third-party icon libraries instead of catalog-retrieved icons in page UI;
592
+ - Using colorful as ordinary decoration, or mixing icon family / version / shape within the same explicit area;
593
+ - Applying a fixed max width to the whole main workspace on workspaces, tables, boards, CRM, admin pages, or data pages, causing abnormal whitespace or cramped content on wide screens;
594
+ - Making multiple layers of text bold in the same list, table, card, or navigation group;
595
+ - Making button labels or link-style text actions such as "查看全部" or "了解能力" bold by default;
596
+ - Creating hierarchy with gray backing plus white cards, white cards plus gray blocks, or gray blocks plus smaller cards;
597
+ - Using high-saturation colors for top-nav avatars, table avatars, and member avatars, creating noise;
598
+ - Stacking two lines of text inside table cells, or using bold body text in tables;
599
+ - Centering quick entries, app entries, or navigation items as a whole;
600
+ - Treating illustrations as decorative corner marks or gray placeholders;
601
+ - Generating a full page UI as a Hero image;
602
+ - Nesting cards inside cards, or turning the whole page into a wall of cards;
603
+ - Using random spacing, random column widths, or temporary sizes off the 4px grid.