@nguyenphp/antigravity-marketing 1.0.18 → 1.0.20

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 (231) hide show
  1. package/README.md +130 -78
  2. package/package.json +4 -3
  3. package/templates/.agent/skills/marketing-report-expert/SKILL.md +70 -0
  4. package/templates/.agent/skills/minimax-docx/LICENSE +21 -0
  5. package/templates/.agent/skills/minimax-docx/SKILL.md +274 -0
  6. package/templates/.agent/skills/minimax-docx/assets/styles/academic_styles.xml +250 -0
  7. package/templates/.agent/skills/minimax-docx/assets/styles/corporate_styles.xml +284 -0
  8. package/templates/.agent/skills/minimax-docx/assets/styles/default_styles.xml +449 -0
  9. package/templates/.agent/skills/minimax-docx/assets/xsd/aesthetic-rules.xsd +470 -0
  10. package/templates/.agent/skills/minimax-docx/assets/xsd/business-rules.xsd +130 -0
  11. package/templates/.agent/skills/minimax-docx/assets/xsd/common-types.xsd +159 -0
  12. package/templates/.agent/skills/minimax-docx/assets/xsd/wml-subset.xsd +589 -0
  13. package/templates/.agent/skills/minimax-docx/references/cjk_typography.md +357 -0
  14. package/templates/.agent/skills/minimax-docx/references/cjk_university_template_guide.md +184 -0
  15. package/templates/.agent/skills/minimax-docx/references/comments_guide.md +191 -0
  16. package/templates/.agent/skills/minimax-docx/references/design_good_bad_examples.md +829 -0
  17. package/templates/.agent/skills/minimax-docx/references/design_principles.md +819 -0
  18. package/templates/.agent/skills/minimax-docx/references/openxml_element_order.md +308 -0
  19. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part1.md +4061 -0
  20. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part2.md +2820 -0
  21. package/templates/.agent/skills/minimax-docx/references/openxml_encyclopedia_part3.md +3381 -0
  22. package/templates/.agent/skills/minimax-docx/references/openxml_namespaces.md +82 -0
  23. package/templates/.agent/skills/minimax-docx/references/openxml_units.md +72 -0
  24. package/templates/.agent/skills/minimax-docx/references/scenario_a_create.md +284 -0
  25. package/templates/.agent/skills/minimax-docx/references/scenario_b_edit_content.md +295 -0
  26. package/templates/.agent/skills/minimax-docx/references/scenario_c_apply_template.md +456 -0
  27. package/templates/.agent/skills/minimax-docx/references/track_changes_guide.md +200 -0
  28. package/templates/.agent/skills/minimax-docx/references/troubleshooting.md +506 -0
  29. package/templates/.agent/skills/minimax-docx/references/typography_guide.md +294 -0
  30. package/templates/.agent/skills/minimax-docx/references/xsd_validation_guide.md +158 -0
  31. package/templates/.agent/skills/minimax-docx/scripts/doc_to_docx.sh +40 -0
  32. package/templates/.agent/skills/minimax-docx/scripts/docx_preview.sh +37 -0
  33. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/MiniMaxAIDocx.Cli.csproj +19 -0
  34. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Cli/Program.cs +18 -0
  35. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/AnalyzeCommand.cs +147 -0
  36. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ApplyTemplateCommand.cs +322 -0
  37. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/CreateCommand.cs +324 -0
  38. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/DiffCommand.cs +155 -0
  39. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/EditContentCommand.cs +487 -0
  40. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/FixOrderCommand.cs +108 -0
  41. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/MergeRunsCommand.cs +122 -0
  42. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Commands/ValidateCommand.cs +107 -0
  43. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/MiniMaxAIDocx.Core.csproj +15 -0
  44. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/CommentSynchronizer.cs +169 -0
  45. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/ElementOrder.cs +80 -0
  46. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/NamespaceConstants.cs +42 -0
  47. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/RunMerger.cs +81 -0
  48. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/StyleAnalyzer.cs +81 -0
  49. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/TrackChangesHelper.cs +99 -0
  50. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/OpenXml/UnitConverter.cs +23 -0
  51. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples.cs +1832 -0
  52. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch1.cs +910 -0
  53. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch2.cs +999 -0
  54. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch3.cs +1048 -0
  55. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/AestheticRecipeSamples_Batch4.cs +1038 -0
  56. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/CharacterFormattingSamples.cs +1020 -0
  57. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/DocumentCreationSamples.cs +1121 -0
  58. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FieldAndTocSamples.cs +624 -0
  59. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/FootnoteAndCommentSamples.cs +675 -0
  60. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/HeaderFooterSamples.cs +838 -0
  61. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ImageSamples.cs +917 -0
  62. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ListAndNumberingSamples.cs +826 -0
  63. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/ParagraphFormattingSamples.cs +1199 -0
  64. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/StyleSystemSamples.cs +1487 -0
  65. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TableSamples.cs +1163 -0
  66. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Samples/TrackChangesSamples.cs +595 -0
  67. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/CjkHelper.cs +39 -0
  68. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/FontDefaults.cs +24 -0
  69. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Typography/PageSizes.cs +20 -0
  70. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/BusinessRuleValidator.cs +224 -0
  71. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/GateCheckValidator.cs +148 -0
  72. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/ValidationResult.cs +23 -0
  73. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.Core/Validation/XsdValidator.cs +69 -0
  74. package/templates/.agent/skills/minimax-docx/scripts/dotnet/MiniMaxAIDocx.slnx +4 -0
  75. package/templates/.agent/skills/minimax-docx/scripts/env_check.sh +196 -0
  76. package/templates/.agent/skills/minimax-docx/scripts/setup.ps1 +274 -0
  77. package/templates/.agent/skills/minimax-docx/scripts/setup.sh +504 -0
  78. package/templates/.agent/skills/minimax-multimodal-toolkit/SKILL.md +359 -0
  79. package/templates/.agent/skills/minimax-pdf/README.md +222 -0
  80. package/templates/.agent/skills/minimax-pdf/SKILL.md +201 -0
  81. package/templates/.agent/skills/minimax-pdf/design/design.md +381 -0
  82. package/templates/.agent/skills/minimax-pdf/scripts/cover.py +1579 -0
  83. package/templates/.agent/skills/minimax-pdf/scripts/fill_inspect.py +200 -0
  84. package/templates/.agent/skills/minimax-pdf/scripts/fill_write.py +242 -0
  85. package/templates/.agent/skills/minimax-pdf/scripts/make.sh +491 -0
  86. package/templates/.agent/skills/minimax-pdf/scripts/merge.py +112 -0
  87. package/templates/.agent/skills/minimax-pdf/scripts/palette.py +559 -0
  88. package/templates/.agent/skills/minimax-pdf/scripts/reformat_parse.py +374 -0
  89. package/templates/.agent/skills/minimax-pdf/scripts/render_body.py +1055 -0
  90. package/templates/.agent/skills/minimax-pdf/scripts/render_cover.cjs +111 -0
  91. package/templates/.agent/skills/minimax-xlsx/SKILL.md +138 -0
  92. package/templates/.agent/skills/minimax-xlsx/references/create.md +691 -0
  93. package/templates/.agent/skills/minimax-xlsx/references/edit.md +684 -0
  94. package/templates/.agent/skills/minimax-xlsx/references/fix.md +37 -0
  95. package/templates/.agent/skills/minimax-xlsx/references/format.md +768 -0
  96. package/templates/.agent/skills/minimax-xlsx/references/ooxml-cheatsheet.md +231 -0
  97. package/templates/.agent/skills/minimax-xlsx/references/read-analyze.md +97 -0
  98. package/templates/.agent/skills/minimax-xlsx/references/validate.md +772 -0
  99. package/templates/.agent/skills/minimax-xlsx/scripts/formula_check.py +422 -0
  100. package/templates/.agent/skills/minimax-xlsx/scripts/libreoffice_recalc.py +248 -0
  101. package/templates/.agent/skills/minimax-xlsx/scripts/shared_strings_builder.py +163 -0
  102. package/templates/.agent/skills/minimax-xlsx/scripts/style_audit.py +575 -0
  103. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_add_column.py +395 -0
  104. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_insert_row.py +274 -0
  105. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_pack.py +87 -0
  106. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_reader.py +362 -0
  107. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_shift_rows.py +396 -0
  108. package/templates/.agent/skills/minimax-xlsx/scripts/xlsx_unpack.py +130 -0
  109. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/[Content_Types].xml +9 -0
  110. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/_rels/.rels +6 -0
  111. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/_rels/workbook.xml.rels +19 -0
  112. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/sharedStrings.xml +33 -0
  113. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/styles.xml +160 -0
  114. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/workbook.xml +30 -0
  115. package/templates/.agent/skills/minimax-xlsx/templates/minimal_xlsx/xl/worksheets/sheet1.xml +70 -0
  116. package/templates/.agent/skills/pptx-generator/SKILL.md +249 -0
  117. package/templates/.agent/skills/pptx-generator/references/design-system.md +392 -0
  118. package/templates/.agent/skills/pptx-generator/references/editing.md +162 -0
  119. package/templates/.agent/skills/pptx-generator/references/pitfalls.md +112 -0
  120. package/templates/.agent/skills/pptx-generator/references/pptxgenjs.md +420 -0
  121. package/templates/.agent/skills/pptx-generator/references/slide-types.md +413 -0
  122. package/templates/.agent/skills/tutorial-video-expert/SKILL.md +88 -0
  123. package/templates/.agent/skills/ui-ux-pro-max/SKILL.md +170 -585
  124. package/templates/.agent/skills/vision-analysis/SKILL.md +174 -0
  125. package/templates/.agent/workflows/analyze.md +3 -0
  126. package/templates/.agent/workflows/brand-report.md +44 -0
  127. package/templates/.agent/workflows/report.md +49 -0
  128. package/templates/.agent/agents/backend-specialist.md +0 -263
  129. package/templates/.agent/agents/database-architect.md +0 -226
  130. package/templates/.agent/agents/debugger.md +0 -225
  131. package/templates/.agent/agents/devops-engineer.md +0 -242
  132. package/templates/.agent/agents/frontend-specialist.md +0 -527
  133. package/templates/.agent/agents/game-developer.md +0 -162
  134. package/templates/.agent/agents/mobile-developer.md +0 -377
  135. package/templates/.agent/agents/penetration-tester.md +0 -188
  136. package/templates/.agent/agents/security-auditor.md +0 -170
  137. package/templates/.agent/agents/test-engineer.md +0 -158
  138. package/templates/.agent/skills/api-patterns/SKILL.md +0 -81
  139. package/templates/.agent/skills/api-patterns/api-style.md +0 -42
  140. package/templates/.agent/skills/api-patterns/auth.md +0 -24
  141. package/templates/.agent/skills/api-patterns/documentation.md +0 -26
  142. package/templates/.agent/skills/api-patterns/graphql.md +0 -41
  143. package/templates/.agent/skills/api-patterns/rate-limiting.md +0 -31
  144. package/templates/.agent/skills/api-patterns/response.md +0 -37
  145. package/templates/.agent/skills/api-patterns/rest.md +0 -40
  146. package/templates/.agent/skills/api-patterns/scripts/api_validator.py +0 -211
  147. package/templates/.agent/skills/api-patterns/security-testing.md +0 -122
  148. package/templates/.agent/skills/api-patterns/trpc.md +0 -41
  149. package/templates/.agent/skills/api-patterns/versioning.md +0 -22
  150. package/templates/.agent/skills/app-builder/SKILL.md +0 -75
  151. package/templates/.agent/skills/app-builder/agent-coordination.md +0 -71
  152. package/templates/.agent/skills/app-builder/feature-building.md +0 -53
  153. package/templates/.agent/skills/app-builder/project-detection.md +0 -34
  154. package/templates/.agent/skills/app-builder/scaffolding.md +0 -118
  155. package/templates/.agent/skills/app-builder/tech-stack.md +0 -40
  156. package/templates/.agent/skills/app-builder/templates/SKILL.md +0 -39
  157. package/templates/.agent/skills/app-builder/templates/astro-static/TEMPLATE.md +0 -76
  158. package/templates/.agent/skills/app-builder/templates/chrome-extension/TEMPLATE.md +0 -92
  159. package/templates/.agent/skills/app-builder/templates/cli-tool/TEMPLATE.md +0 -88
  160. package/templates/.agent/skills/app-builder/templates/electron-desktop/TEMPLATE.md +0 -88
  161. package/templates/.agent/skills/app-builder/templates/express-api/TEMPLATE.md +0 -83
  162. package/templates/.agent/skills/app-builder/templates/flutter-app/TEMPLATE.md +0 -90
  163. package/templates/.agent/skills/app-builder/templates/monorepo-turborepo/TEMPLATE.md +0 -90
  164. package/templates/.agent/skills/app-builder/templates/nextjs-fullstack/TEMPLATE.md +0 -82
  165. package/templates/.agent/skills/app-builder/templates/nextjs-saas/TEMPLATE.md +0 -100
  166. package/templates/.agent/skills/app-builder/templates/nextjs-static/TEMPLATE.md +0 -106
  167. package/templates/.agent/skills/app-builder/templates/nuxt-app/TEMPLATE.md +0 -101
  168. package/templates/.agent/skills/app-builder/templates/python-fastapi/TEMPLATE.md +0 -83
  169. package/templates/.agent/skills/app-builder/templates/react-native-app/TEMPLATE.md +0 -93
  170. package/templates/.agent/skills/architecture/SKILL.md +0 -55
  171. package/templates/.agent/skills/architecture/context-discovery.md +0 -43
  172. package/templates/.agent/skills/architecture/examples.md +0 -94
  173. package/templates/.agent/skills/architecture/pattern-selection.md +0 -68
  174. package/templates/.agent/skills/architecture/patterns-reference.md +0 -50
  175. package/templates/.agent/skills/architecture/trade-off-analysis.md +0 -77
  176. package/templates/.agent/skills/bash-linux/SKILL.md +0 -199
  177. package/templates/.agent/skills/behavioral-modes/SKILL.md +0 -242
  178. package/templates/.agent/skills/clean-code/SKILL.md +0 -201
  179. package/templates/.agent/skills/code-review-checklist/SKILL.md +0 -109
  180. package/templates/.agent/skills/database-design/SKILL.md +0 -52
  181. package/templates/.agent/skills/database-design/database-selection.md +0 -43
  182. package/templates/.agent/skills/database-design/indexing.md +0 -39
  183. package/templates/.agent/skills/database-design/migrations.md +0 -48
  184. package/templates/.agent/skills/database-design/optimization.md +0 -36
  185. package/templates/.agent/skills/database-design/orm-selection.md +0 -30
  186. package/templates/.agent/skills/database-design/schema-design.md +0 -56
  187. package/templates/.agent/skills/database-design/scripts/schema_validator.py +0 -172
  188. package/templates/.agent/skills/deployment-procedures/SKILL.md +0 -241
  189. package/templates/.agent/skills/docker-expert/SKILL.md +0 -409
  190. package/templates/.agent/skills/game-development/2d-games/SKILL.md +0 -119
  191. package/templates/.agent/skills/game-development/3d-games/SKILL.md +0 -135
  192. package/templates/.agent/skills/game-development/SKILL.md +0 -167
  193. package/templates/.agent/skills/game-development/game-art/SKILL.md +0 -185
  194. package/templates/.agent/skills/game-development/game-audio/SKILL.md +0 -190
  195. package/templates/.agent/skills/game-development/game-design/SKILL.md +0 -129
  196. package/templates/.agent/skills/game-development/mobile-games/SKILL.md +0 -108
  197. package/templates/.agent/skills/game-development/multiplayer/SKILL.md +0 -132
  198. package/templates/.agent/skills/game-development/pc-games/SKILL.md +0 -144
  199. package/templates/.agent/skills/game-development/vr-ar/SKILL.md +0 -123
  200. package/templates/.agent/skills/game-development/web-games/SKILL.md +0 -150
  201. package/templates/.agent/skills/lint-and-validate/SKILL.md +0 -45
  202. package/templates/.agent/skills/lint-and-validate/scripts/lint_runner.py +0 -172
  203. package/templates/.agent/skills/lint-and-validate/scripts/type_coverage.py +0 -173
  204. package/templates/.agent/skills/mcp-builder/SKILL.md +0 -176
  205. package/templates/.agent/skills/nestjs-expert/SKILL.md +0 -552
  206. package/templates/.agent/skills/nextjs-best-practices/SKILL.md +0 -203
  207. package/templates/.agent/skills/nodejs-best-practices/SKILL.md +0 -333
  208. package/templates/.agent/skills/parallel-agents/SKILL.md +0 -175
  209. package/templates/.agent/skills/performance-profiling/SKILL.md +0 -143
  210. package/templates/.agent/skills/performance-profiling/scripts/lighthouse_audit.py +0 -76
  211. package/templates/.agent/skills/powershell-windows/SKILL.md +0 -167
  212. package/templates/.agent/skills/prisma-expert/SKILL.md +0 -355
  213. package/templates/.agent/skills/python-patterns/SKILL.md +0 -441
  214. package/templates/.agent/skills/react-patterns/SKILL.md +0 -198
  215. package/templates/.agent/skills/red-team-tactics/SKILL.md +0 -199
  216. package/templates/.agent/skills/server-management/SKILL.md +0 -161
  217. package/templates/.agent/skills/systematic-debugging/SKILL.md +0 -109
  218. package/templates/.agent/skills/tdd-workflow/SKILL.md +0 -149
  219. package/templates/.agent/skills/testing-patterns/SKILL.md +0 -178
  220. package/templates/.agent/skills/testing-patterns/scripts/test_runner.py +0 -219
  221. package/templates/.agent/skills/typescript-expert/SKILL.md +0 -429
  222. package/templates/.agent/skills/vue-expert/SKILL.md +0 -374
  223. package/templates/.agent/skills/vulnerability-scanner/SKILL.md +0 -276
  224. package/templates/.agent/skills/vulnerability-scanner/checklists.md +0 -121
  225. package/templates/.agent/skills/vulnerability-scanner/scripts/security_scan.py +0 -458
  226. package/templates/.agent/skills/webapp-testing/SKILL.md +0 -187
  227. package/templates/.agent/skills/webapp-testing/scripts/playwright_runner.py +0 -173
  228. package/templates/.agent/workflows/debug.md +0 -103
  229. package/templates/.agent/workflows/deploy.md +0 -176
  230. package/templates/.agent/workflows/enhance.md +0 -63
  231. package/templates/.agent/workflows/test.md +0 -144
@@ -0,0 +1,829 @@
1
+ # GOOD vs BAD Document Design — Concrete OpenXML Examples
2
+
3
+ A side-by-side reference showing common design mistakes and their fixes, with exact OpenXML parameter values. Use this to develop an intuitive sense of what makes a document look professional versus amateur.
4
+
5
+ Format: Each comparison shows the **BAD** version first (the mistake), then the **GOOD** version (the fix), with OpenXML markup and a short explanation.
6
+
7
+ ---
8
+
9
+ ## 1. Font Size Disasters
10
+
11
+ ### 1a. No Hierarchy — Everything the Same Size
12
+
13
+ **BAD: Body=12pt, H1=12pt bold**
14
+ ```
15
+ ┌──────────────────────────────────┐
16
+ │ INTRODUCTION │ ← 12pt bold... same visual weight
17
+ │ This is the body text of the │ ← 12pt regular
18
+ │ report. It discusses findings │
19
+ │ from the quarterly review. │
20
+ │ METHODOLOGY │ ← Where does the section start?
21
+ │ We collected data from three │
22
+ │ sources across the enterprise. │
23
+ └──────────────────────────────────┘
24
+ ```
25
+ ```xml
26
+ <!-- H1: bold but same size as body — no visual separation -->
27
+ <w:rPr><w:b/><w:sz w:val="24"/></w:rPr>
28
+ <!-- Body -->
29
+ <w:rPr><w:sz w:val="24"/></w:rPr>
30
+ ```
31
+
32
+ **GOOD: Modular scale — body=11pt, H3=13pt, H2=16pt, H1=20pt**
33
+ ```
34
+ ┌──────────────────────────────────┐
35
+ │ │
36
+ │ Introduction │ ← 20pt, clearly a title
37
+ │ │
38
+ │ This is the body text of the │ ← 11pt, comfortable reading size
39
+ │ report. It discusses findings │
40
+ │ from the quarterly review. │
41
+ │ │
42
+ │ Methodology │ ← 20pt, section break is obvious
43
+ │ │
44
+ │ We collected data from three │
45
+ │ sources across the enterprise. │
46
+ └──────────────────────────────────┘
47
+ ```
48
+ ```xml
49
+ <!-- H1: 20pt = w:sz 40 -->
50
+ <w:rPr><w:rFonts w:ascii="Calibri Light"/><w:sz w:val="40"/></w:rPr>
51
+ <!-- H2: 16pt = w:sz 32 -->
52
+ <w:rPr><w:rFonts w:ascii="Calibri Light"/><w:sz w:val="32"/></w:rPr>
53
+ <!-- H3: 13pt = w:sz 26, bold -->
54
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:b/><w:sz w:val="26"/></w:rPr>
55
+ <!-- Body: 11pt = w:sz 22 -->
56
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:sz w:val="22"/></w:rPr>
57
+ ```
58
+ **Why better:** A clear size progression (ratio ~1.25x per step) lets readers instantly identify structure without reading a word.
59
+
60
+ ---
61
+
62
+ ### 1b. Too Much Contrast — Children's Book Look
63
+
64
+ **BAD: H1=28pt with body=10pt (ratio 2.8x)**
65
+ ```
66
+ ┌──────────────────────────────────┐
67
+ │ │
68
+ │ QUARTERLY REPORT │ ← 28pt, dominates the page
69
+ │ │
70
+ │ This is body text set very small │ ← 10pt, straining to read
71
+ │ and the contrast with the title │
72
+ │ makes it feel like a poster. │
73
+ └──────────────────────────────────┘
74
+ ```
75
+ ```xml
76
+ <w:rPr><w:b/><w:sz w:val="56"/></w:rPr> <!-- 28pt heading -->
77
+ <w:rPr><w:sz w:val="20"/></w:rPr> <!-- 10pt body -->
78
+ ```
79
+
80
+ **GOOD: H1=20pt with body=11pt (ratio ~1.8x)**
81
+ ```xml
82
+ <w:rPr><w:sz w:val="40"/></w:rPr> <!-- 20pt heading -->
83
+ <w:rPr><w:sz w:val="22"/></w:rPr> <!-- 11pt body -->
84
+ ```
85
+ **Why better:** A heading-to-body ratio between 1.5x and 2.0x reads as "structured" rather than "shouting."
86
+
87
+ ---
88
+
89
+ ## 2. Spacing Crimes
90
+
91
+ ### 2a. Wall of Text — No Paragraph or Line Spacing
92
+
93
+ **BAD: Single line spacing, 0pt between paragraphs**
94
+ ```
95
+ ┌──────────────────────────────────┐
96
+ │The findings indicate a strong │
97
+ │correlation between training hours│
98
+ │and performance metrics. │
99
+ │Further analysis revealed that │ ← No gap — where does the new
100
+ │departments with higher budgets │ paragraph start?
101
+ │achieved better outcomes in all │
102
+ │measured categories. │
103
+ └──────────────────────────────────┘
104
+ ```
105
+ ```xml
106
+ <w:pPr>
107
+ <w:spacing w:line="240" w:lineRule="auto"/> <!-- 1.0 spacing (240/240) -->
108
+ <w:spacing w:after="0"/> <!-- no paragraph gap -->
109
+ </w:pPr>
110
+ ```
111
+
112
+ **GOOD: 1.15x line spacing, 8pt after each paragraph**
113
+ ```
114
+ ┌──────────────────────────────────┐
115
+ │The findings indicate a strong │
116
+ │correlation between training │ ← Slightly more air between lines
117
+ │hours and performance metrics. │
118
+ │ │ ← 8pt gap signals new paragraph
119
+ │Further analysis revealed that │
120
+ │departments with higher budgets │
121
+ │achieved better outcomes in all │
122
+ │measured categories. │
123
+ └──────────────────────────────────┘
124
+ ```
125
+ ```xml
126
+ <w:pPr>
127
+ <w:spacing w:line="276" w:lineRule="auto"/> <!-- 1.15x (276/240) -->
128
+ <w:spacing w:after="160"/> <!-- 8pt = 160 twips -->
129
+ </w:pPr>
130
+ ```
131
+ **Why better:** Line spacing gives each line room to breathe; paragraph spacing separates ideas without wasting a full blank line.
132
+
133
+ ---
134
+
135
+ ### 2b. Floating Headings — Same Space Above and Below
136
+
137
+ **BAD: 12pt before and 12pt after heading**
138
+ ```
139
+ ┌──────────────────────────────────┐
140
+ │ ...end of previous section. │
141
+ │ │ ← 12pt gap
142
+ │ Section Two │ ← Heading floats in the middle
143
+ │ │ ← 12pt gap
144
+ │ Start of section two content. │
145
+ └──────────────────────────────────┘
146
+ ```
147
+ ```xml
148
+ <w:pPr>
149
+ <w:spacing w:before="240" w:after="240"/> <!-- 12pt both sides -->
150
+ </w:pPr>
151
+ ```
152
+
153
+ **GOOD: 24pt before, 8pt after heading**
154
+ ```
155
+ ┌──────────────────────────────────┐
156
+ │ ...end of previous section. │
157
+ │ │
158
+ │ │ ← 24pt gap — clear section break
159
+ │ Section Two │ ← Heading is close to its content
160
+ │ │ ← 8pt gap
161
+ │ Start of section two content. │
162
+ └──────────────────────────────────┘
163
+ ```
164
+ ```xml
165
+ <w:pPr>
166
+ <w:spacing w:before="480" w:after="160"/> <!-- 24pt before, 8pt after -->
167
+ </w:pPr>
168
+ ```
169
+ **Why better:** Proximity principle: a heading belongs to the text that follows it, so more space above and less space below anchors it to its content.
170
+
171
+ ---
172
+
173
+ ### 2c. Wasteful Gaps — Huge Spacing Everywhere
174
+
175
+ **BAD: 24pt after every paragraph, including body text**
176
+ ```
177
+ ┌──────────────────────────────────┐
178
+ │ First paragraph of text here. │
179
+ │ │
180
+ │ │ ← 24pt gap after every paragraph
181
+ │ │
182
+ │ Second paragraph of text here. │
183
+ │ │
184
+ │ │
185
+ │ │
186
+ │ Third paragraph. │ ← Document looks mostly white space
187
+ └──────────────────────────────────┘
188
+ ```
189
+ ```xml
190
+ <w:spacing w:after="480"/> <!-- 24pt = 480 twips after every paragraph -->
191
+ ```
192
+
193
+ **GOOD: Proportional spacing — body=8pt, H2=6pt after, H1=10pt after**
194
+ ```xml
195
+ <!-- Body paragraph -->
196
+ <w:spacing w:after="160"/> <!-- 8pt after body -->
197
+ <!-- H1 -->
198
+ <w:spacing w:before="480" w:after="200"/> <!-- 24pt before, 10pt after -->
199
+ <!-- H2 -->
200
+ <w:spacing w:before="320" w:after="120"/> <!-- 16pt before, 6pt after -->
201
+ ```
202
+ **Why better:** Spacing should vary by element role, creating a visual rhythm rather than uniform gaps.
203
+
204
+ ---
205
+
206
+ ## 3. Margin Mistakes
207
+
208
+ ### 3a. Cramped Margins — Text Running to the Edge
209
+
210
+ **BAD: 0.5in margins all around**
211
+ ```
212
+ ┌────────────────────────────────────────────────┐
213
+ │Text starts almost at the paper edge and runs │
214
+ │all the way across making extremely long lines │
215
+ │that are hard to track from end back to start. │
216
+ │The eye loses its place on every line return. │
217
+ └────────────────────────────────────────────────┘
218
+ ```
219
+ ```xml
220
+ <w:pgMar w:top="720" w:right="720" w:bottom="720" w:left="720"/>
221
+ <!-- 720 twips = 0.5in — line length ~7.5in on letter paper -->
222
+ ```
223
+
224
+ **GOOD: 1in margins (standard)**
225
+ ```xml
226
+ <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/>
227
+ <!-- 1440 twips = 1.0in — line length ~6.5in, ideal for 11pt body -->
228
+ ```
229
+ **Why better:** Optimal line length is 60-75 characters. At 11pt Calibri, 6.5in width achieves roughly 70 characters per line.
230
+
231
+ ---
232
+
233
+ ### 3b. Over-Padded Margins — Looks Like the Content is Hiding
234
+
235
+ **BAD: 2in margins on a short document**
236
+ ```xml
237
+ <w:pgMar w:top="2880" w:right="2880" w:bottom="2880" w:left="2880"/>
238
+ <!-- 2880 twips = 2.0in — only 4.5in of text width, looks padded -->
239
+ ```
240
+
241
+ **GOOD: 1in standard, or 1.25in for formal documents**
242
+ ```xml
243
+ <!-- Standard -->
244
+ <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/>
245
+ <!-- Formal / bound documents with gutter -->
246
+ <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1800" w:gutter="0"/>
247
+ <!-- 1800 twips = 1.25in left for binding margin -->
248
+ ```
249
+ **Why better:** Margins should frame the content, not overwhelm it. 1-1.25in works for virtually all business and academic documents.
250
+
251
+ ---
252
+
253
+ ## 4. Table Ugliness
254
+
255
+ ### 4a. Prison Grid — Full Borders on Every Cell
256
+
257
+ **BAD: Every cell with 1pt borders on all four sides**
258
+ ```
259
+ ┌───────┬───────┬───────┬───────┐
260
+ │ Name │ Dept │ Score │ Grade │
261
+ ├───────┼───────┼───────┼───────┤
262
+ │ Alice │ Eng │ 92 │ A │
263
+ ├───────┼───────┼───────┼───────┤
264
+ │ Bob │ Sales │ 85 │ B │
265
+ ├───────┼───────┼───────┼───────┤
266
+ │ Carol │ Eng │ 78 │ C+ │
267
+ └───────┴───────┴───────┴───────┘
268
+ ```
269
+ ```xml
270
+ <w:tcBorders>
271
+ <w:top w:val="single" w:sz="4" w:color="000000"/>
272
+ <w:left w:val="single" w:sz="4" w:color="000000"/>
273
+ <w:bottom w:val="single" w:sz="4" w:color="000000"/>
274
+ <w:right w:val="single" w:sz="4" w:color="000000"/>
275
+ </w:tcBorders>
276
+ ```
277
+
278
+ **GOOD: Three-line table (三线表) — top thick, header-bottom medium, table-bottom thick**
279
+ ```
280
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ← 1.5pt top border
281
+ Name Dept Score Grade
282
+ ────────────────────────────────── ← 0.75pt header separator
283
+ Alice Eng 92 A
284
+ Bob Sales 85 B
285
+ Carol Eng 78 C+
286
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ ← 1.5pt bottom border
287
+ ```
288
+ ```xml
289
+ <!-- Top border of header row cells -->
290
+ <w:top w:val="single" w:sz="12" w:color="000000"/> <!-- 1.5pt -->
291
+ <w:left w:val="nil"/><w:right w:val="nil"/>
292
+ <w:bottom w:val="single" w:sz="6" w:color="000000"/> <!-- 0.75pt -->
293
+
294
+ <!-- Data row cells: no left/right/top borders -->
295
+ <w:top w:val="nil"/><w:left w:val="nil"/><w:right w:val="nil"/>
296
+ <w:bottom w:val="nil"/>
297
+
298
+ <!-- Last row bottom border -->
299
+ <w:bottom w:val="single" w:sz="12" w:color="000000"/> <!-- 1.5pt -->
300
+ ```
301
+ **Why better:** Removing inner borders lets the eye scan data freely. Three lines provide structure without visual clutter.
302
+
303
+ ---
304
+
305
+ ### 4b. Text Touching Borders — No Cell Padding
306
+
307
+ **BAD: Zero cell margins**
308
+ ```
309
+ ┌──────────┬──────────┐
310
+ │Name │Department│ ← Text cramped against borders
311
+ ├──────────┼──────────┤
312
+ │Alice │Engineering│
313
+ └──────────┴──────────┘
314
+ ```
315
+ ```xml
316
+ <w:tcMar>
317
+ <w:top w:w="0" w:type="dxa"/>
318
+ <w:start w:w="0" w:type="dxa"/>
319
+ <w:bottom w:w="0" w:type="dxa"/>
320
+ <w:end w:w="0" w:type="dxa"/>
321
+ </w:tcMar>
322
+ ```
323
+
324
+ **GOOD: 0.08in vertical, 0.12in horizontal padding**
325
+ ```xml
326
+ <w:tcMar>
327
+ <w:top w:w="115" w:type="dxa"/> <!-- ~0.08in = 115 twips -->
328
+ <w:start w:w="173" w:type="dxa"/> <!-- ~0.12in = 173 twips -->
329
+ <w:bottom w:w="115" w:type="dxa"/>
330
+ <w:end w:w="173" w:type="dxa"/>
331
+ </w:tcMar>
332
+ ```
333
+ **Why better:** Padding gives text breathing room inside cells, making every value easier to read.
334
+
335
+ ---
336
+
337
+ ### 4c. Invisible Headers — Header Row Same Style as Data
338
+
339
+ **BAD: Header row indistinguishable from data**
340
+ ```xml
341
+ <!-- Header cell run properties — identical to data -->
342
+ <w:rPr><w:sz w:val="22"/></w:rPr>
343
+ ```
344
+
345
+ **GOOD: Bold header text, subtle background fill, bottom border**
346
+ ```xml
347
+ <!-- Header cell run properties -->
348
+ <w:rPr><w:b/><w:sz w:val="22"/><w:color w:val="333333"/></w:rPr>
349
+
350
+ <!-- Header cell shading -->
351
+ <w:tcPr>
352
+ <w:shd w:val="clear" w:color="auto" w:fill="F2F2F2"/> <!-- light gray bg -->
353
+ <w:tcBorders>
354
+ <w:bottom w:val="single" w:sz="8" w:color="666666"/> <!-- 1pt separator -->
355
+ </w:tcBorders>
356
+ </w:tcPr>
357
+
358
+ <!-- Mark row as header (repeats on page break) -->
359
+ <w:trPr><w:tblHeader/></w:trPr>
360
+ ```
361
+ **Why better:** Distinct header styling lets readers instantly locate column meanings, especially in long tables that span pages. The `w:tblHeader` element ensures the header row repeats on every page.
362
+
363
+ ---
364
+
365
+ ## 5. Font Pairing Failures
366
+
367
+ ### 5a. Visual Chaos — Too Many Fonts
368
+
369
+ **BAD: 4+ fonts in one document**
370
+ ```xml
371
+ <!-- H1 in Impact -->
372
+ <w:rPr><w:rFonts w:ascii="Impact"/><w:sz w:val="40"/></w:rPr>
373
+ <!-- H2 in Georgia -->
374
+ <w:rPr><w:rFonts w:ascii="Georgia"/><w:sz w:val="32"/></w:rPr>
375
+ <!-- Body in Verdana -->
376
+ <w:rPr><w:rFonts w:ascii="Verdana"/><w:sz w:val="22"/></w:rPr>
377
+ <!-- Captions in Courier New -->
378
+ <w:rPr><w:rFonts w:ascii="Courier New"/><w:sz w:val="18"/></w:rPr>
379
+ ```
380
+
381
+ **GOOD: One font family with weight variation, or two complementary families**
382
+ ```xml
383
+ <!-- H1: Calibri Light (thin weight of Calibri family) -->
384
+ <w:rPr><w:rFonts w:ascii="Calibri Light"/><w:sz w:val="40"/></w:rPr>
385
+ <!-- H2: Calibri Light -->
386
+ <w:rPr><w:rFonts w:ascii="Calibri Light"/><w:sz w:val="32"/></w:rPr>
387
+ <!-- Body: Calibri (regular weight) -->
388
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:sz w:val="22"/></w:rPr>
389
+ <!-- Captions: Calibri -->
390
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:sz w:val="18"/></w:rPr>
391
+ ```
392
+ **Why better:** Limiting to one or two font families creates visual coherence. Vary by size and weight, not by font.
393
+
394
+ ---
395
+
396
+ ### 5b. Mismatched Personality — Comic Sans Meets Times New Roman
397
+
398
+ **BAD:**
399
+ ```xml
400
+ <w:rPr><w:rFonts w:ascii="Comic Sans MS"/><w:sz w:val="36"/></w:rPr> <!-- heading -->
401
+ <w:rPr><w:rFonts w:ascii="Times New Roman"/><w:sz w:val="24"/></w:rPr> <!-- body -->
402
+ ```
403
+
404
+ **GOOD: Fonts with compatible character**
405
+ ```xml
406
+ <w:rPr><w:rFonts w:ascii="Calibri Light"/><w:sz w:val="36"/></w:rPr> <!-- heading -->
407
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:sz w:val="22"/></w:rPr> <!-- body -->
408
+ ```
409
+ **Why better:** Paired fonts should share a similar level of formality and geometric character. Comic Sans is playful/informal; Times New Roman is formal/traditional. They clash.
410
+
411
+ ---
412
+
413
+ ### 5c. Everything Bold — Nothing Stands Out
414
+
415
+ **BAD: Bold on body, headings, captions, everything**
416
+ ```xml
417
+ <w:rPr><w:b/><w:sz w:val="40"/></w:rPr> <!-- heading: bold -->
418
+ <w:rPr><w:b/><w:sz w:val="22"/></w:rPr> <!-- body: also bold -->
419
+ <w:rPr><w:b/><w:sz w:val="18"/></w:rPr> <!-- caption: still bold -->
420
+ ```
421
+
422
+ **GOOD: Bold reserved for headings and key terms only**
423
+ ```xml
424
+ <w:rPr><w:b/><w:sz w:val="40"/></w:rPr> <!-- H1: bold -->
425
+ <w:rPr><w:sz w:val="32"/></w:rPr> <!-- H2: size alone is enough -->
426
+ <w:rPr><w:sz w:val="22"/></w:rPr> <!-- body: regular weight -->
427
+ <w:rPr><w:b/><w:sz w:val="22"/></w:rPr> <!-- key term inline: bold -->
428
+ <w:rPr><w:sz w:val="18"/></w:rPr> <!-- caption: regular, small -->
429
+ ```
430
+ **Why better:** When everything is emphasized, nothing is emphasized. Bold should be a signal, not a default.
431
+
432
+ ---
433
+
434
+ ## 6. Color Abuse
435
+
436
+ ### 6a. Rainbow Headings
437
+
438
+ **BAD: Each heading level a different bright color**
439
+ ```xml
440
+ <w:rPr><w:color w:val="FF0000"/><w:sz w:val="40"/></w:rPr> <!-- H1: red -->
441
+ <w:rPr><w:color w:val="00AA00"/><w:sz w:val="32"/></w:rPr> <!-- H2: green -->
442
+ <w:rPr><w:color w:val="0000FF"/><w:sz w:val="26"/></w:rPr> <!-- H3: blue -->
443
+ ```
444
+
445
+ **GOOD: Single accent color for headings, black or dark gray for body**
446
+ ```xml
447
+ <!-- All headings use the same muted accent -->
448
+ <w:rPr><w:color w:val="1F4E79"/><w:sz w:val="40"/></w:rPr> <!-- H1: dark blue -->
449
+ <w:rPr><w:color w:val="1F4E79"/><w:sz w:val="32"/></w:rPr> <!-- H2: same blue -->
450
+ <w:rPr><w:color w:val="1F4E79"/><w:sz w:val="26"/></w:rPr> <!-- H3: same blue -->
451
+ <!-- Body in near-black -->
452
+ <w:rPr><w:color w:val="333333"/><w:sz w:val="22"/></w:rPr>
453
+ ```
454
+ **Why better:** A single accent color establishes brand consistency. Multiple bright colors compete for attention and look unprofessional.
455
+
456
+ ---
457
+
458
+ ### 6b. Low Contrast — Light Gray on White
459
+
460
+ **BAD: #CCCCCC text on white background**
461
+ ```xml
462
+ <w:rPr><w:color w:val="CCCCCC"/></w:rPr>
463
+ <!-- Contrast ratio: ~1.6:1 — fails WCAG AA (minimum 4.5:1) -->
464
+ ```
465
+
466
+ **GOOD: #333333 text on white**
467
+ ```xml
468
+ <w:rPr><w:color w:val="333333"/></w:rPr>
469
+ <!-- Contrast ratio: ~12:1 — passes WCAG AAA -->
470
+ ```
471
+ **Why better:** Sufficient contrast is not just an accessibility requirement; it makes text physically easier to read for everyone, especially in printed documents.
472
+
473
+ ---
474
+
475
+ ### 6c. Bright Body Text
476
+
477
+ **BAD: Body text in a saturated color**
478
+ ```xml
479
+ <w:rPr><w:color w:val="0066FF"/><w:sz w:val="22"/></w:rPr> <!-- blue body text -->
480
+ ```
481
+
482
+ **GOOD: Color reserved for headings and inline accents only**
483
+ ```xml
484
+ <!-- Body: neutral dark -->
485
+ <w:rPr><w:color w:val="333333"/><w:sz w:val="22"/></w:rPr>
486
+ <!-- Hyperlink: color is functional here -->
487
+ <w:rPr><w:color w:val="0563C1"/><w:u w:val="single"/></w:rPr>
488
+ ```
489
+ **Why better:** Colored body text causes eye fatigue over long reading. Reserve color for elements that need to attract attention (headings, links, warnings).
490
+
491
+ ---
492
+
493
+ ## 7. List Formatting Issues
494
+
495
+ ### 7a. Bullet at the Margin — No Indent
496
+
497
+ **BAD: List items start at the left margin**
498
+ ```
499
+ ┌──────────────────────────────────┐
500
+ │Here is a paragraph of text. │
501
+ │• First item │ ← Bullet at margin, no indent
502
+ │• Second item │
503
+ │• Third item │
504
+ │Next paragraph continues here. │
505
+ └──────────────────────────────────┘
506
+ ```
507
+ ```xml
508
+ <w:pPr>
509
+ <w:ind w:left="0" w:hanging="0"/>
510
+ </w:pPr>
511
+ ```
512
+
513
+ **GOOD: 0.25in left indent with hanging indent for the bullet**
514
+ ```
515
+ ┌──────────────────────────────────┐
516
+ │Here is a paragraph of text. │
517
+ │ • First item │ ← Indented, clearly a list
518
+ │ • Second item │
519
+ │ • Third item │
520
+ │Next paragraph continues here. │
521
+ └──────────────────────────────────┘
522
+ ```
523
+ ```xml
524
+ <w:pPr>
525
+ <w:ind w:left="360" w:hanging="360"/> <!-- 0.25in = 360 twips -->
526
+ <w:numPr>
527
+ <w:ilvl w:val="0"/>
528
+ <w:numId w:val="1"/>
529
+ </w:numPr>
530
+ </w:pPr>
531
+ ```
532
+ For nested lists, increment by 360 twips per level:
533
+ ```xml
534
+ <!-- Level 1 -->
535
+ <w:ind w:left="720" w:hanging="360"/> <!-- 0.5in left -->
536
+ <!-- Level 2 -->
537
+ <w:ind w:left="1080" w:hanging="360"/> <!-- 0.75in left -->
538
+ ```
539
+ **Why better:** Indentation visually separates lists from body text and makes nesting levels clear.
540
+
541
+ ---
542
+
543
+ ### 7b. List Items with Full Paragraph Spacing
544
+
545
+ **BAD: List items have the same 8-10pt spacing as body paragraphs**
546
+ ```
547
+ ┌──────────────────────────────────┐
548
+ │ • First item │
549
+ │ │ ← 10pt gap — looks like separate
550
+ │ • Second item │ paragraphs, not a list
551
+ │ │
552
+ │ • Third item │
553
+ └──────────────────────────────────┘
554
+ ```
555
+ ```xml
556
+ <w:spacing w:after="200"/> <!-- 10pt after each list item -->
557
+ ```
558
+
559
+ **GOOD: Tight spacing between list items (2-4pt)**
560
+ ```
561
+ ┌──────────────────────────────────┐
562
+ │ • First item │
563
+ │ • Second item │ ← 2pt gap — cohesive list
564
+ │ • Third item │
565
+ └──────────────────────────────────┘
566
+ ```
567
+ ```xml
568
+ <w:spacing w:after="40" w:line="276" w:lineRule="auto"/> <!-- 2pt after -->
569
+ <!-- Or 4pt: -->
570
+ <w:spacing w:after="80"/>
571
+ ```
572
+ **Why better:** Tight spacing groups list items as a single unit, matching how readers expect a list to behave.
573
+
574
+ ---
575
+
576
+ ## 8. Header/Footer Problems
577
+
578
+ ### 8a. Header Text Too Large — Competes with Body
579
+
580
+ **BAD: Header in 12pt, same as body**
581
+ ```
582
+ ┌──────────────────────────────────┐
583
+ │ Quarterly Report - Q3 2025 │ ← 12pt header, same as body
584
+ │──────────────────────────────────│
585
+ │ Introduction │
586
+ │ This is the body text... │ ← 12pt body — header distracts
587
+ └──────────────────────────────────┘
588
+ ```
589
+ ```xml
590
+ <!-- Header paragraph -->
591
+ <w:rPr><w:sz w:val="24"/></w:rPr> <!-- 12pt, same as body -->
592
+ ```
593
+
594
+ **GOOD: Header in 9pt, gray color, subtle**
595
+ ```
596
+ ┌──────────────────────────────────┐
597
+ │ Quarterly Report - Q3 2025 │ ← 9pt, gray — present but quiet
598
+ │──────────────────────────────────│
599
+ │ Introduction │
600
+ │ This is the body text... │ ← Body stands out as primary
601
+ └──────────────────────────────────┘
602
+ ```
603
+ ```xml
604
+ <!-- Header paragraph -->
605
+ <w:rPr>
606
+ <w:sz w:val="18"/> <!-- 9pt -->
607
+ <w:color w:val="808080"/> <!-- medium gray -->
608
+ </w:rPr>
609
+ <w:pPr>
610
+ <w:pBdr>
611
+ <w:bottom w:val="single" w:sz="4" w:color="D9D9D9"/> <!-- subtle separator -->
612
+ </w:pBdr>
613
+ </w:pPr>
614
+ ```
615
+ **Why better:** Headers are reference information, not primary content. They should be legible but visually subordinate.
616
+
617
+ ---
618
+
619
+ ### 8b. No Page Numbers on a Long Document
620
+
621
+ **BAD: 20-page document with no page numbers**
622
+ ```xml
623
+ <!-- Footer section: empty or missing -->
624
+ ```
625
+
626
+ **GOOD: Page numbers in footer, right-aligned or centered**
627
+ ```xml
628
+ <!-- Footer paragraph with page number field -->
629
+ <w:p>
630
+ <w:pPr>
631
+ <w:jc w:val="center"/>
632
+ <w:rPr><w:sz w:val="18"/><w:color w:val="808080"/></w:rPr>
633
+ </w:pPr>
634
+ <w:r>
635
+ <w:rPr><w:sz w:val="18"/><w:color w:val="808080"/></w:rPr>
636
+ <w:fldChar w:fldCharType="begin"/>
637
+ </w:r>
638
+ <w:r>
639
+ <w:instrText> PAGE </w:instrText>
640
+ </w:r>
641
+ <w:r>
642
+ <w:fldChar w:fldCharType="separate"/>
643
+ </w:r>
644
+ <w:r>
645
+ <w:t>1</w:t>
646
+ </w:r>
647
+ <w:r>
648
+ <w:fldChar w:fldCharType="end"/>
649
+ </w:r>
650
+ </w:p>
651
+ ```
652
+ **Why better:** Page numbers are essential for navigation in any document over ~3 pages. Readers need to reference specific pages, and printed documents need an ordering mechanism.
653
+
654
+ ---
655
+
656
+ ## 9. CJK-Specific Mistakes
657
+
658
+ ### 9a. Using Italic for Chinese Emphasis
659
+
660
+ **BAD: Italic applied to Chinese text**
661
+ ```xml
662
+ <w:rPr>
663
+ <w:i/>
664
+ <w:rFonts w:eastAsia="SimSun"/>
665
+ <w:sz w:val="24"/>
666
+ </w:rPr>
667
+ ```
668
+ CJK glyphs have no true italic form. The renderer applies a synthetic slant that looks broken and ugly — characters appear to lean awkwardly.
669
+
670
+ **GOOD: Use bold or emphasis dots (着重号) for Chinese emphasis**
671
+ ```xml
672
+ <!-- Option A: Bold emphasis -->
673
+ <w:rPr>
674
+ <w:b/>
675
+ <w:rFonts w:eastAsia="SimHei"/> <!-- Switch to bold-capable font -->
676
+ <w:sz w:val="24"/>
677
+ </w:rPr>
678
+
679
+ <!-- Option B: Emphasis marks (dots under characters) -->
680
+ <w:rPr>
681
+ <w:em w:val="dot"/>
682
+ <w:rFonts w:eastAsia="SimSun"/>
683
+ <w:sz w:val="24"/>
684
+ </w:rPr>
685
+ ```
686
+ **Why better:** Chinese typography has its own emphasis traditions. Bold and emphasis dots are native CJK conventions; italic is a Latin-script concept that does not translate.
687
+
688
+ ---
689
+
690
+ ### 9b. Latin Font for Chinese Characters
691
+
692
+ **BAD: Only ASCII font set, no EastAsia font specified**
693
+ ```xml
694
+ <w:rPr>
695
+ <w:rFonts w:ascii="Arial"/> <!-- No eastAsia attribute -->
696
+ <w:sz w:val="24"/>
697
+ </w:rPr>
698
+ <!-- Word falls back to a random font. Chinese characters may render
699
+ with wrong metrics, inconsistent stroke widths, or missing glyphs. -->
700
+ ```
701
+
702
+ **GOOD: Explicit EastAsia font alongside ASCII font**
703
+ ```xml
704
+ <w:rPr>
705
+ <w:rFonts w:ascii="Calibri" w:hAnsi="Calibri" w:eastAsia="Microsoft YaHei"/>
706
+ <w:sz w:val="22"/>
707
+ </w:rPr>
708
+ ```
709
+ For formal/academic Chinese documents:
710
+ ```xml
711
+ <w:rPr>
712
+ <w:rFonts w:ascii="Times New Roman" w:hAnsi="Times New Roman"
713
+ w:eastAsia="SimSun"/>
714
+ <w:sz w:val="24"/> <!-- 小四 12pt -->
715
+ </w:rPr>
716
+ ```
717
+ **Why better:** Setting `w:eastAsia` ensures Chinese characters render in a font designed for CJK glyphs, with correct stroke widths, spacing, and metrics.
718
+
719
+ ---
720
+
721
+ ### 9c. English Line Spacing for Dense CJK Text
722
+
723
+ **BAD: 1.15x line spacing for Chinese body text**
724
+ ```xml
725
+ <w:spacing w:line="276" w:lineRule="auto"/> <!-- 1.15x — too tight for CJK -->
726
+ ```
727
+ CJK characters are taller and denser than Latin letters. At 1.15x, lines of Chinese text feel cramped and hard to read.
728
+
729
+ **GOOD: 1.5x line spacing or fixed 28pt for CJK body at 12pt (小四)**
730
+ ```xml
731
+ <!-- Option A: 1.5x proportional -->
732
+ <w:spacing w:line="360" w:lineRule="auto"/> <!-- 360/240 = 1.5x -->
733
+
734
+ <!-- Option B: Fixed 28pt (standard for 小四/12pt CJK body) -->
735
+ <w:spacing w:line="560" w:lineRule="exact"/> <!-- 28pt = 560 twips -->
736
+ ```
737
+ For 公文 (government documents) at 三号/16pt body:
738
+ ```xml
739
+ <w:spacing w:line="580" w:lineRule="exact"/> <!-- 29pt fixed line spacing -->
740
+ ```
741
+ **Why better:** CJK characters occupy a full em square with no ascenders/descenders providing natural gaps. Extra line spacing compensates, improving readability of dense text blocks.
742
+
743
+ ---
744
+
745
+ ## 10. Overall Document Feel
746
+
747
+ ### Student Homework vs Professional Document
748
+
749
+ **BAD: "Student homework" — every setting is Word's default, no intentional choices**
750
+ ```xml
751
+ <!-- Default everything: Calibri 11pt, no heading styles, 1.08 spacing -->
752
+ <w:rPr><w:rFonts w:ascii="Calibri"/><w:sz w:val="22"/></w:rPr>
753
+ <w:pPr><w:spacing w:after="160" w:line="259" w:lineRule="auto"/></w:pPr>
754
+ <!-- Headings: just bold body text, no style applied -->
755
+ <w:rPr><w:b/><w:sz w:val="22"/></w:rPr>
756
+ <!-- No section breaks, no headers/footers, no page numbers -->
757
+ <!-- Tables with default full grid borders -->
758
+ <!-- No intentional color or spacing variations -->
759
+ ```
760
+
761
+ **GOOD: Intentional design at every level**
762
+ ```xml
763
+ <!-- Theme fonts defined -->
764
+ <w:rFonts w:asciiTheme="minorHAnsi" w:hAnsiTheme="minorHAnsi"/>
765
+
766
+ <!-- H1: Calibri Light 20pt, dark blue, generous spacing -->
767
+ <w:pPr>
768
+ <w:pStyle w:val="Heading1"/>
769
+ <w:spacing w:before="480" w:after="200"/>
770
+ </w:pPr>
771
+ <w:rPr>
772
+ <w:rFonts w:ascii="Calibri Light"/>
773
+ <w:color w:val="1F4E79"/>
774
+ <w:sz w:val="40"/>
775
+ </w:rPr>
776
+
777
+ <!-- H2: Calibri Light 16pt, same blue -->
778
+ <w:pPr>
779
+ <w:pStyle w:val="Heading2"/>
780
+ <w:spacing w:before="320" w:after="120"/>
781
+ </w:pPr>
782
+ <w:rPr>
783
+ <w:rFonts w:ascii="Calibri Light"/>
784
+ <w:color w:val="1F4E79"/>
785
+ <w:sz w:val="32"/>
786
+ </w:rPr>
787
+
788
+ <!-- Body: Calibri 11pt, dark gray, 1.15 spacing, 8pt after -->
789
+ <w:pPr>
790
+ <w:spacing w:after="160" w:line="276" w:lineRule="auto"/>
791
+ </w:pPr>
792
+ <w:rPr>
793
+ <w:rFonts w:ascii="Calibri"/>
794
+ <w:color w:val="333333"/>
795
+ <w:sz w:val="22"/>
796
+ </w:rPr>
797
+
798
+ <!-- Tables: three-line style, padded cells, repeated headers -->
799
+ <!-- Headers/footers: 9pt gray with page numbers -->
800
+ <!-- Margins: 1in all around -->
801
+ <w:pgMar w:top="1440" w:right="1440" w:bottom="1440" w:left="1440"/>
802
+ ```
803
+ **Why better:** Professional documents result from deliberate, consistent choices across all design dimensions. Each element reinforces the same visual language. The reader may not consciously notice good typography, but they feel the difference in credibility and readability.
804
+
805
+ ---
806
+
807
+ ## Quick Reference: Safe Defaults
808
+
809
+ A cheat sheet of values that produce a professional result for most Western business documents:
810
+
811
+ | Element | Value | OpenXML |
812
+ |---------|-------|---------|
813
+ | Body font | Calibri 11pt | `w:sz="22"` |
814
+ | H1 | Calibri Light 20pt | `w:sz="40"` |
815
+ | H2 | Calibri Light 16pt | `w:sz="32"` |
816
+ | H3 | Calibri 13pt bold | `w:sz="26"`, `w:b` |
817
+ | Body color | #333333 | `w:color="333333"` |
818
+ | Heading color | #1F4E79 | `w:color="1F4E79"` |
819
+ | Line spacing | 1.15x | `w:line="276" w:lineRule="auto"` |
820
+ | Para spacing after | 8pt | `w:after="160"` |
821
+ | H1 spacing | 24pt before, 10pt after | `w:before="480" w:after="200"` |
822
+ | H2 spacing | 16pt before, 6pt after | `w:before="320" w:after="120"` |
823
+ | Margins | 1in all around | `w:pgMar` all `"1440"` |
824
+ | Table cell padding | 0.08in / 0.12in | `w:w="115"` / `w:w="173"` |
825
+ | Header/footer size | 9pt gray | `w:sz="18" w:color="808080"` |
826
+ | List indent | 0.25in per level | `w:left="360" w:hanging="360"` |
827
+ | List item spacing | 2pt after | `w:after="40"` |
828
+
829
+ For CJK documents, adjust: body font to SimSun/YaHei, line spacing to 1.5x (`w:line="360"`), and set `w:eastAsia` on all `w:rFonts`.