@cyberskill/design 2.2.0 → 2.3.1

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 (337) hide show
  1. package/DESIGN.md +68 -1
  2. package/README.md +74 -143
  3. package/SECURITY.md +4 -4
  4. package/VERSION +1 -1
  5. package/_ds_bundle.js +2 -2
  6. package/_ds_bundle.js.map +1 -1
  7. package/_ds_manifest.json +30 -30
  8. package/_esm/cs.mjs +2 -2
  9. package/base/collections.css +1 -1
  10. package/base/components.css +8 -3
  11. package/base/controls.css +6 -6
  12. package/base/data.css +2 -0
  13. package/base/feedback.css +1 -1
  14. package/base/glass.css +3 -0
  15. package/base/interaction.css +1 -1
  16. package/base/navigation.css +1 -1
  17. package/base/responsive.css +4 -0
  18. package/base/shell.css +5 -5
  19. package/base/typography.css +4 -0
  20. package/components/api-discovery.json +1 -1
  21. package/components/api-index.json +14 -14
  22. package/components/forms/editor-parser.js +1 -1
  23. package/components/lifecycle.json +13 -13
  24. package/components/prompt-api.json +2 -2
  25. package/components/release-compatibility.json +2 -28
  26. package/components/scenarios.json +321 -28
  27. package/components/specifications.json +7546 -3515
  28. package/components/static-html-reference.json +19 -19
  29. package/dist/esm/_esm/react.mjs +2 -2
  30. package/dist/esm/build.json +22 -22
  31. package/dist/esm/chunks/{chunk-CKBL3UEA.mjs → chunk-GQDUCHRU.mjs} +2 -2
  32. package/dist/esm/chunks/{chunk-JJG5ENFU.mjs → chunk-XDJRVUEM.mjs} +1 -1
  33. package/dist/esm/chunks/{chunk-JJG5ENFU.mjs.map → chunk-XDJRVUEM.mjs.map} +1 -1
  34. package/dist/esm/components/forms/Editor.mjs +2 -2
  35. package/dist/esm/components/forms/editor-schema.mjs +1 -1
  36. package/dist/styles.min.css +1 -1
  37. package/docs/component-scenarios.md +1 -1
  38. package/docs/consuming.md +1 -1
  39. package/docs/contrast-report.md +1 -1
  40. package/docs/conventions.md +1 -1
  41. package/docs/manual-at-matrix.md +3 -3
  42. package/docs/reference-catalog.json +25 -25
  43. package/docs/release-notes.md +26 -1
  44. package/docs/releasing.md +4 -2
  45. package/docs/static-html-reference.md +18 -18
  46. package/docs/template-inventory.json +1 -1
  47. package/docs/vi/component-scenarios.md +1 -1
  48. package/docs/vi/consuming.md +1 -1
  49. package/docs/vi/contrast-report.md +1 -1
  50. package/docs/vi/conventions.md +1 -1
  51. package/docs/vi/decisions/component-specification-evidence.md +1 -1
  52. package/docs/vi/entrypoints/DESIGN.md +68 -1
  53. package/docs/vi/entrypoints/README.md +85 -151
  54. package/docs/vi/manual-at-matrix.md +3 -3
  55. package/docs/vi/release-notes.md +26 -1
  56. package/docs/vi/releasing.md +4 -2
  57. package/docs/vi/static-html-reference.md +18 -18
  58. package/docs/viewer.html +76 -25
  59. package/guidance/agent-contract.json +2 -2
  60. package/package.json +14 -14
  61. package/styles/components/manifest.json +147 -136
  62. package/styles.layered.css +28 -16
  63. package/styles.layered.provenance.json +13 -13
  64. package/tokens/declarations.json +88 -40
  65. package/tokens/element-seeds.json +1 -1
  66. package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
  67. package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
  68. package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
  69. package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
  70. package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  71. package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  72. package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
  73. package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
  74. package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  75. package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  76. package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
  77. package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  78. package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
  79. package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
  80. package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
  81. package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
  82. package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
  83. package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  84. package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
  85. package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
  86. package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  87. package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  88. package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
  89. package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
  90. package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
  91. package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
  92. package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
  93. package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
  94. package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  95. package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  96. package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
  97. package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  98. package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
  99. package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  100. package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
  101. package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
  102. package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
  103. package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
  104. package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
  105. package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
  106. package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
  107. package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  108. package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
  109. package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
  110. package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
  111. package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  112. package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
  113. package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
  114. package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
  115. package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
  116. package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
  117. package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
  118. package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  119. package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  120. package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
  121. package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
  122. package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  123. package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  124. package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
  125. package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  126. package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
  127. package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
  128. package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
  129. package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
  130. package/tokens/modes/index.json +270 -270
  131. package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
  132. package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
  133. package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
  134. package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
  135. package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
  136. package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  137. package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
  138. package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
  139. package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  140. package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  141. package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
  142. package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
  143. package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
  144. package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
  145. package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
  146. package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
  147. package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
  148. package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
  149. package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
  150. package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
  151. package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
  152. package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  153. package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
  154. package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
  155. package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
  156. package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
  157. package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
  158. package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
  159. package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  160. package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  161. package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
  162. package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
  163. package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
  164. package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
  165. package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
  166. package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
  167. package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
  168. package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
  169. package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
  170. package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
  171. package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
  172. package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
  173. package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
  174. package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
  175. package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
  176. package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
  177. package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
  178. package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
  179. package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
  180. package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
  181. package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
  182. package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
  183. package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
  184. package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  185. package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
  186. package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
  187. package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  188. package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  189. package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
  190. package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
  191. package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
  192. package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
  193. package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
  194. package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
  195. package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
  196. package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
  197. package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
  198. package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
  199. package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  200. package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  201. package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
  202. package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
  203. package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  204. package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  205. package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
  206. package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  207. package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
  208. package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
  209. package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
  210. package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
  211. package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
  212. package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  213. package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
  214. package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
  215. package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  216. package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  217. package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
  218. package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
  219. package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
  220. package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
  221. package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
  222. package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
  223. package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  224. package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  225. package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
  226. package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  227. package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
  228. package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  229. package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
  230. package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
  231. package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
  232. package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
  233. package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
  234. package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
  235. package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
  236. package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  237. package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
  238. package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
  239. package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
  240. package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  241. package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
  242. package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
  243. package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
  244. package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
  245. package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
  246. package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
  247. package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  248. package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  249. package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
  250. package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
  251. package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  252. package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  253. package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
  254. package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  255. package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
  256. package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
  257. package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
  258. package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
  259. package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
  260. package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
  261. package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
  262. package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
  263. package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
  264. package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  265. package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
  266. package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
  267. package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  268. package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  269. package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
  270. package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
  271. package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
  272. package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
  273. package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
  274. package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
  275. package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
  276. package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
  277. package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
  278. package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
  279. package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
  280. package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  281. package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
  282. package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
  283. package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
  284. package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
  285. package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
  286. package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
  287. package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  288. package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  289. package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
  290. package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
  291. package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
  292. package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
  293. package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
  294. package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
  295. package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
  296. package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
  297. package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
  298. package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
  299. package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
  300. package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
  301. package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
  302. package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
  303. package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
  304. package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
  305. package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
  306. package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
  307. package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
  308. package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
  309. package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
  310. package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
  311. package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
  312. package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  313. package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
  314. package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
  315. package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  316. package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  317. package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
  318. package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
  319. package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
  320. package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
  321. package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
  322. package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
  323. package/tokens/native/CSModes.kt +3 -3
  324. package/tokens/native/CSModes.swift +3 -3
  325. package/tokens/native/CSTokens.kt +1 -1
  326. package/tokens/native/CSTokens.swift +1 -1
  327. package/tokens/native/cs_modes.dart +3 -3
  328. package/tokens/native/cs_tokens.dart +1 -1
  329. package/tokens/native/mode-provenance.json +6 -6
  330. package/tokens/provenance.json +6 -6
  331. package/tokens/tokens.dtcg.json +4 -4
  332. package/tokens/tokens.js +5 -5
  333. package/tokens/tokens.json +4 -4
  334. package/tokens/typography.css +2 -3
  335. package/tokens/variables.css +3 -0
  336. package/ui_kits/website/site.css +2 -2
  337. /package/dist/esm/chunks/{chunk-CKBL3UEA.mjs.map → chunk-GQDUCHRU.mjs.map} +0 -0
@@ -4,26 +4,27 @@
4
4
 
5
5
  [![Design System Gates](https://github.com/cyberskill-official/design/actions/workflows/design-system-gates.yml/badge.svg)](https://github.com/cyberskill-official/design/actions/workflows/design-system-gates.yml)
6
6
 
7
+ Hệ thống thiết kế ấm áp, chuẩn doanh nghiệp, **ưu tiên tiếng Việt** cho **CyberSkill** — studio phần mềm Sài Gòn (thành lập 2020) biến *điều ước* rõ ràng thành phần mềm hoạt động. Neo trên **Umber** và **Ochre**, dẫn dắt bởi thần đèn vàng **Lumi**, mọi bề mặt giải quyết bốn trục độc lập: **Theme** (light · dark · system) × **Element** (bản sắc sản phẩm Ngũ Hành: Kim · Mộc · Thủy · Hỏa · Thổ, 15 biến thể) × **Language** (EN · VI) × **Style** (`data-cs-style` — gói duy nhất **liquid-glass**; không khai báo ≡ mặc định). Phía sử dụng chỉ cần liên kết một tệp: **`styles.css`**.
8
+
9
+ ---
10
+
7
11
  ## Bắt đầu tại đây
8
12
 
9
- Đây là **tài liệu điểm vào** của CyberSkill Design System — VERSION của bản nguồn **<!-- cs-source-version:checkout -->2.2.0<!-- /cs-source-version -->** (xem `VERSION`; không xác nhận phiên bản có trên registry). **Trang sản phẩm** là Storybook tại **`/`** trên `design.cyberskill.world` (chỉ trên host; cục bộ: `npm run storybook`). Tài liệu vận hành được công bố ở thanh bên **Docs** của Storybook (và Thư viện tài liệu tại `/docs/viewer.html`). Đường dẫn cũ `/dashboard`, `/dashboard.html` và `/playground/*` chuyển hướng đến `/`. Hệ thống ấm áp, ưu tiên tiếng Việt, đáp ứng môi trường doanh nghiệp; mọi bề mặt giải quyết bốn trục độc lập — **Theme** (light · dark · system) × **Element** (bản sắc sản phẩm Ngũ Hành: Kim · Mộc · Thủy · Hỏa · Thổ, 15 biến thể) × **Language** (EN · VI) × **Style** (`data-cs-style` — gói duy nhất **liquid-glass**; không khai báo ≡ mặc định).
13
+ Đây là **tài liệu điểm vào** của CyberSkill Design System — VERSION của bản nguồn **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->** (xem `VERSION`; không xác nhận phiên bản có trên registry). **Trang sản phẩm** là Storybook tại **`/`** trên `design.cyberskill.world` (chỉ trên host; cục bộ: `npm run storybook`). Tài liệu vận hành được công bố ở thanh bên **Docs** của Storybook và Thư viện tài liệu tại `/docs/viewer.html` (các đường dẫn cũ `/dashboard`, `/dashboard.html` và `/playground/*` chuyển hướng về `/`).
10
14
 
11
- **Bắt đầu nhanh theo đối tượng**
12
- - **Nhà thiết kế** — mở Storybook (**Foundations / Components / Templates / Pages / Docs**). **Templates** liệt kê toàn bộ <!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu (Gallery → Atomic View, cùng story theo nhóm, gồm bộ 38 tài liệu VN A4 (Employment Suite + khung thương mại) tại **Templates → HR**). Đổi trực tiếp Theme × Element × Language × Style qua thanh công cụ Storybook, Atomic View và mẫu Elements Geometry.
15
+ ### Bắt đầu nhanh theo đối tượng
13
16
 
17
+ - **Nhà thiết kế** — mở Storybook (**Foundations / Components / Templates / Pages / Docs**). **Templates** liệt kê toàn bộ <!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu (Gallery → Atomic View, cùng story theo nhóm, gồm bộ 38 tài liệu VN A4 (Employment Suite + khung thương mại) tại **Templates → HR**). Đổi trực tiếp Theme × Element × Language × Style qua thanh công cụ Storybook, Atomic View và mẫu Elements Geometry.
14
18
  - **Soạn template trình duyệt** (máy chủ HTTP tĩnh) — đọc `SKILL.md` (chọn runtime + ràng buộc thiết kế), rồi hướng dẫn bên dưới; phối hợp `styles.css` + ESM đã biên dịch `@cyberskill/design` (`dist/esm/_esm/react.mjs`; JSX thô qua `@cyberskill/design/source`) / `_esm/cs.mjs` cũ / `_ds_bundle.js` (tìm theo tiền tố). `support.js` được cung cấp thông dịch `*.dc.html` trong trình duyệt; xem `docs/template-grammar.md` về ngữ pháp và ranh giới chỉ ở host. Hợp đồng component nằm cạnh từng component (`.d.ts` + `.prompt.md`).
15
-
16
19
  - **Tĩnh / open-spec** (ví dụ Google Stitch) — bắt đầu từ **`DESIGN.md`** (open-spec được sinh) → `llms.txt` → `tokens/tokens.dtcg.json`. Dựng giao diện **tĩnh** bằng `styles.css` + `.cs-*` / kitchen-sink / `examples/static-hello/`. Dùng `.dc.html` qua trình thông dịch được cung cấp hoặc công cụ hiểu ngữ pháp; công cụ HTML thuần dùng `.cs-*` hoặc ảnh chụp kết quả hiển thị đã kiểm chứng.
17
-
18
- - **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@1.7.2`** (xem `docs/consuming.md`; quyền dùng trong `docs/consumer-grant.md` — vẫn UNLICENSED). **Next/SSR:** `import { Button } from "@cyberskill/design"` (peer React). **Demo trình duyệt:** **`examples/npm-hello/`** (Lumi · Hỏa · plasma, `_esm/cs.mjs` cũ). Hoặc liên kết **`styles.css`** từ clone/subtree (một tệp cho toàn bộ), hoặc chép thư mục `templates/<slug>/` và sửa một dòng trong `ds-base.js` (đổi liên kết một dòng, được kiểm định đầu cuối tháng 7/2026). Xác định scope bằng `data-theme` · `data-cs-element` (+`data-cs-variant`) · `lang`. Dấu hiệu bản phát hành: SHA đầu nhánh + `docs/release-notes.md` (VERSION nguồn là **<!-- cs-source-version:release-signal -->2.2.0<!-- /cs-source-version -->**; không có CHANGELOG).
19
-
20
+ - **Người triển khai** — gói npm ổn định đã công bố **`@cyberskill/design@2.3.0`** (xem `docs/consuming.md`; quyền dùng trong `docs/consumer-grant.md` — vẫn UNLICENSED). **Next/SSR:** `import { Button } from "@cyberskill/design"` (peer React). **Demo trình duyệt:** **`examples/npm-hello/`** (Lumi · Hỏa · plasma, `_esm/cs.mjs` cũ). Hoặc liên kết **`styles.css`** từ clone/subtree (một tệp cho toàn bộ), hoặc chép thư mục `templates/<slug>/` và sửa một dòng trong `ds-base.js` (đổi liên kết một dòng, được kiểm định đầu cuối tháng 7/2026). Xác định scope bằng `data-theme` · `data-cs-element` (+`data-cs-variant`) · `lang`. Dấu hiệu bản phát hành: SHA đầu nhánh + `docs/release-notes.md` (VERSION nguồn là **<!-- cs-source-version:release-signal -->2.3.1<!-- /cs-source-version -->**; không có CHANGELOG).
20
21
  - **Người bảo trì** — `docs/doctrine.md` (mở rộng + kiểm chứng), rồi `CONTRIBUTING.md` và `docs/quality-gates.md`.
21
22
 
22
- **Bản đồ tài liệu — phía sử dụng** (cũng có trên Storybook **Docs**)
23
+ ### Bản đồ tài liệu — phía sử dụng
23
24
 
24
25
  | Tài liệu | Nội dung giải đáp |
25
26
  |---|---|
26
- | `README.md` (tệp này, bên dưới) | Hướng dẫn đầy đủ: màu neo, giọng điệu, nền tảng thị giác, component, template, mục lục |
27
+ | `README.md` (tệp này) | Hướng dẫn đầy đủ: màu neo, giọng điệu, nền tảng thị giác, component, template, mục lục kho nguồn |
27
28
  | `DESIGN.md` | Bề mặt open-spec được sinh của **kho này** (kiểu Stitch) — doctrine + mọi giá trị token + danh mục, từ DTCG; sinh lại bằng `npm run build:design-md`. Không sửa tay. |
28
29
  | `SKILL.md` | Điểm vào agent — lựa chọn runtime + ràng buộc thiết kế |
29
30
  | `docs/consuming.md` | Tiếp nhận và nâng cấp — hai đường DC/tĩnh, tên gói npm, các trục, nâng cấp + mở rộng |
@@ -40,7 +41,7 @@
40
41
  | `docs/figma.md` | Cách import Figma / Tokens Studio cho phía sử dụng và bảo trì |
41
42
  | `docs/vi/*.md` | Bản tiếng Việt của mọi `docs/*.md` dành cho vận hành (đổi EN\|VI trong `docs/viewer.html`; bản dịch điểm vào theo cặp nằm trong `docs/vi/entrypoints/`) |
42
43
 
43
- **Bản đồ tài liệu — người bảo trì** (CI, quyết định, cổng kiểm tra — không phải nhập môn phía sử dụng)
44
+ ### Bản đồ tài liệu — người bảo trì
44
45
 
45
46
  | Tài liệu | Nội dung giải đáp |
46
47
  |---|---|
@@ -50,24 +51,15 @@
50
51
  | `docs/quality-gates.md` | Tham chiếu chuẩn đo — từng cổng chất lượng, assertion, tiêu chí đạt, nơi chạy |
51
52
  | `docs/sync.md` | Độ trung thực vòng đi-về giữa kho ↔ môi trường soạn thảo và đồng bộ hai chiều |
52
53
 
53
- ---
54
-
55
- Hệ thống thiết kế ấm áp, phù hợp doanh nghiệp, **ưu tiên tiếng Việt** cho **CyberSkill** — studio phần mềm Sài Gòn (thành lập 2020), biến *điều ước* rõ ràng thành phần mềm hoạt động. Neo ở **Umber** và **Ochre**, được **Lumi**, thần đèn vàng, dẫn dắt. Dự án đóng gói token, component, tài sản thương hiệu và bản tái hiện sản phẩm của CyberSkill để agent có thể thiết kế ấn phẩm đúng thương hiệu và giao diện sản xuất.
56
- Phía sử dụng liên kết một tệp: **`styles.css`**.
57
-
58
- ## Nguồn
59
-
60
- **Kho nguồn này** (`cyberskill-official/design`) là nguồn chuẩn của hệ thống thiết kế: token, component React, tài sản thương hiệu, template và cổng kiểm tra đều ở đây.
54
+ ### Nguồn chuẩn & các kho liên quan
61
55
 
62
- Các kho CyberSkill liên quan (không ở cây này — tham khảo độ trung thực sản phẩm/marketing):
63
- - **Trang marketing** (Next.js, song ngữ, thần đèn Lumi, bộ icon nội bộ): https://github.com/cyberskill-official/landing-page
64
- - **Khung audit** (công cụ được tham chiếu): https://github.com/cyberskill-official/design-system-audit-framework
65
-
66
- **[`DESIGN.md`](../../../DESIGN.md) trong kho này** là bề mặt open-spec được sinh (kiểu Google Stitch: doctrine thương hiệu, mọi giá trị token sáng + tối, danh mục component/template). Tệp được dựng từ `tokens/tokens.dtcg.json` + `_ds_manifest.json` bằng `npm run build:design-md`. Không bao giờ sửa tay; cổng `design-md-parity` ghim từng byte với nguồn token. Đây không phải tệp doctrine thượng nguồn riêng.
56
+ - **Nguồn chuẩn:** `cyberskill-official/design` lưu trữ toàn bộ token, component React, tài sản thương hiệu, template và cổng kiểm tra.
57
+ - **Open-spec được sinh:** [`DESIGN.md`](../../../DESIGN.md) được dựng từ `tokens/tokens.dtcg.json` + `_ds_manifest.json` bằng `npm run build:design-md` (cổng `design-md-parity` ghim từng byte với nguồn).
58
+ - **Kho CyberSkill liên quan:** Trang marketing (`https://github.com/cyberskill-official/landing-page`) và Khung audit (`https://github.com/cyberskill-official/design-system-audit-framework`).
67
59
 
68
60
  ---
69
61
 
70
- ## Bất biến nền tảng (không bao giờ thay đổi)
62
+ ## Bất biến nền tảng
71
63
 
72
64
  <!-- BEGIN DOCTRINE IMMUTABLES -->
73
65
  | Bất biến | Giá trị |
@@ -84,60 +76,46 @@ Các kho CyberSkill liên quan (không ở cây này — tham khảo độ trung
84
76
 
85
77
  ---
86
78
 
87
- ## NỀN TẢNG NỘI DUNG
88
-
89
- **Giọng điệu là hợp âm bốn trục vang đồng thời:** *ấm áp · trực tiếp · trung thực · tôn trọng.* Không bao giờ “vui nhộn/tinh nghịch/gai góc” — các giọng này được xác định rõ là lệch thương hiệu.
79
+ ## Nền tảng nội dung & giọng điệu
90
80
 
91
- - **Ấm áp, có tính người, ngôi thứ hai.** Gọi người đọc là “bạn”; studio là “chúng tôi”. Lumi xưng “tôi”. Lời văn dịu dàng, khuyến khích, không sáo ngữ doanh nghiệp. Ví dụ *“Rất vui. Tôi nên gọi bạn là gì?”*, *“Chiếc đèn đang nghỉ một chút.”*
92
- - **Trực tiếp và cụ thể.** Câu ngắn, kết quả rõ, không nói tránh. Ví dụ *“Gửi một lời nhắn ngắn. Chúng tôi trả lời trong một ngày làm việc.”*, *“Được xây để bàn giao và bền vững.”*
93
- - **Trung thực về đánh đổi.** Thương hiệu đề cao sự thẳng thắn: *“giàu kinh nghiệm, nhỏ gọn và trung thực về đánh đổi.”* Rủi ro được nói bằng lời, không giấu hay chỉ biểu thị bằng màu.
81
+ **Giọng điệu là hợp âm bốn trục vang đồng thời:** *ấm áp · trực tiếp · trung thực · tôn trọng.* Không bao giờ “vui nhộn/tinh nghịch/gai góc” — các giọng này lệch chuẩn thương hiệu.
94
82
 
95
- - **Tôn trọng đồng thuận và riêng tư.** Hỏi trước khi liên hệ; cam kết không chia sẻ. Ví dụ *“Thông tin của bạn đến thẳng đội ngũ. Chúng tôi không bao giờ chia sẻ.”*
96
- - **Ẩn dụ “điều ước” là trục chính.** Sản phẩm là *điều ước*; Lumi (thần đèn vàng) *hiện thực hóa* bằng cách chuyển đến đội ngũ con người thật. Động từ: *ước, hiện thực hóa, định hình, bàn giao, bền vững*. Dùng ấm áp, không làm trò.
83
+ - **Ấm áp, gần gũi, ngôi thứ hai.** Gọi người đọc là “bạn”; studio là “chúng tôi”. Lumi xưng “tôi”. Lời văn dịu dàng, khích lệ, không sáo ngữ doanh nghiệp (ví dụ *“Rất vui. Tôi nên gọi bạn là gì?”*, *“Chiếc đèn đang nghỉ một chút.”*).
84
+ - **Trực tiếp và cụ thể.** Câu ngắn, kết quả rõ, không vòng vo (ví dụ *“Gửi một lời nhắn ngắn. Chúng tôi trả lời trong một ngày làm việc.”*, *“Được xây để bàn giao và bền vững.”*).
85
+ - **Trung thực về đánh đổi.** Thương hiệu đề cao sự thẳng thắn: *“giàu kinh nghiệm, nhỏ gọn và trung thực về đánh đổi.”* Rủi ro được nêu bằng lời, không giấu hay chỉ biểu thị bằng màu.
86
+ - **Tôn trọng đồng thuận và riêng tư.** Hỏi trước khi liên hệ; cam kết không chia sẻ (ví dụ *“Thông tin của bạn đến thẳng đội ngũ. Chúng tôi không bao giờ chia sẻ.”*).
87
+ - **Ẩn dụ “điều ước” là trục chính.** Sản phẩm là *điều ước*; Lumi (thần đèn vàng) *hiện thực hóa* bằng cách chuyển đến đội ngũ con người thật. Động từ: *ước, hiện thực hóa, định hình, bàn giao, bền vững*. Dùng ấm áp, không phô trương.
97
88
 
98
- **Viết hoa và quy cách:** Viết hoa đầu câu cho tiêu đề và nút (*“Ước một điều”*, *“Kể chúng tôi nghe điều ước của bạn”*). CHỮ HOA + giãn ký tự rộng chỉ cho dòng dẫn nhỏ/nhãn/tiêu đề bảng. Tiêu đề không có dấu câu cuối; nội dung dùng dấu chấm. Số viết bằng chữ số (*“một ngày làm việc”* trong văn xuôi được chấp nhận, nhưng *“3 ngày làm việc”* cho SLA cụ thể). Dùng gạch ngang dài cho ý phụ.
89
+ **Viết hoa và quy cách:** Viết hoa đầu câu cho tiêu đề và nút (*“Ước một điều”*, *“Kể chúng tôi nghe điều ước của bạn”*). CHỮ HOA + giãn ký tự rộng chỉ dùng cho dòng dẫn nhỏ/nhãn/tiêu đề bảng. Tiêu đề không có dấu câu cuối; nội dung dùng dấu chấm. Số viết bằng chữ số (*“một ngày làm việc”* trong văn xuôi được chấp nhận, nhưng *“3 ngày làm việc”* cho SLA cụ thể). Dùng gạch ngang dài cho ý phụ.
99
90
 
100
- **Song ngữ (ưu tiên tiếng Việt):** Mỗi chuỗi hướng người dùng có bản EN + VN hoặc ghi chú hoãn rõ ràng. Tiếng Việt là thành phần chính, không phải dịch bổ sung sau — giữ dấu ở mọi nơi (*Nguyễn Hoàng Vũ*, *Hiện Thực Hoá Ý Chí*). Line-height an toàn cho tiếng Việt (nội dung 1.5 / tiêu đề 1.35) dành chỗ cho dấu chồng.
91
+ **Song ngữ (ưu tiên tiếng Việt):** Mỗi chuỗi hướng người dùng có bản EN + VN hoặc ghi chú hoãn rõ ràng. Tiếng Việt là thành phần hạng nhất, không phải bản dịch bổ sung — giữ nguyên dấu ở mọi nơi (*Nguyễn Hoàng Vũ*, *Hiện Thực Hoá Ý Chí*). Line-height an toàn cho tiếng Việt (nội dung 1.5 / tiêu đề 1.35) dành đủ khoảng trống cho dấu chồng.
101
92
 
102
- **Emoji:** **Không dùng** trong giao diện sản phẩm hay lời văn thương hiệu. Ý nghĩa được truyền bằng chữ và bộ icon nét, không dùng emoji. (Linh vật và glyph “điều ước” sparkle đảm nhận sắc thái cảm xúc.)
93
+ **Emoji:** **Không dùng** trong giao diện sản phẩm hay lời văn thương hiệu. Ý nghĩa được truyền tải bằng từ ngữ và bộ icon nét, không dùng emoji.
103
94
 
104
95
  ---
105
96
 
106
- ## NỀN TẢNG THỊ GIÁC
107
-
108
- **Bảng màu — đất ấm, không lạnh.** Umber `#45210E` làm nền tảng mọi thứ (chính là màu chữ chính); Ochre `#F4BA17` là accent duy nhất — CTA trên nền tối, vòng tiêu điểm, nhấn sáng, thần đèn. Bề mặt là giấy ấm: page `#FFFDF8`, panel `#FFFFFF`, raised `#FBF4E9`. Mọi màu trung tính ngả về umber — viền `#E7D9C6`, chữ mờ `#3F2D21`. Màu ngữ nghĩa (success `#166534`, danger `#B42318`, warning `#92400E`, info `#1D4ED8`) dùng tiết chế và không bao giờ là tín hiệu duy nhất. **Tối đa một accent trên mỗi bề mặt** — lõi dùng Ochre; *sản phẩm* có thể thay bằng accent Ngũ Hành (xem Bản sắc Ngũ Hành bên dưới), không thêm sắc thứ hai cạnh nó. Không dùng gradient tím xanh.
109
-
110
- **Chữ.** UI: **Be Vietnam Pro** (300–800; họ Google ưu tiên tiếng Việt) — mặc định mọi bề mặt, gồm tiêu đề. Display/tiêu đề lớn: **Space Grotesk** (biến thiên 300–700), font **tùy chọn** của `--cs-font-family-display`; không thành phần nào trỏ đến nó trước khi scope chọn `.cs-display-face`, chuyển `--cs-heading-family` và giữ nội dung ở font UI. Mã/dữ liệu: **JetBrains Mono**. Tiêu đề display đậm (800 ở font UI; trong `.cs-display-face`, Space Grotesk tối đa 700 nên 800 bị giới hạn trong họ này), giãn ký tự chặt (−0.02em); nội dung 400/500 ở 1.5. Dòng dẫn chữ hoa giãn 0.08–0.12em. Thang cỡ xs 12 → 5xl 60 trên nền 16px.
97
+ ## Nền tảng thị giác
111
98
 
112
- **Khoảng cách và bố cục.** Lưới cơ sở 4px; padding section từ 64 đến 96px; max-width nội dung khoảng1200–1320px. Khoảng trắng rộng, bình tĩnh.
99
+ - **Bảng màu — đất ấm, không lạnh.** Umber `#45210E` làm nền tảng mọi thứ (chính là màu chữ chính); Ochre `#F4BA17` là accent duy nhất — CTA trên nền tối, vòng tiêu điểm, điểm nhấn, thần đèn. Bề mặt là giấy ấm: page `#FFFDF8`, panel `#FFFFFF`, raised `#FBF4E9`. Mọi màu trung tính ngả về umber — viền `#E7D9C6`, chữ mờ `#3F2D21`. Màu ngữ nghĩa (success `#166534`, danger `#B42318`, warning `#92400E`, info `#1D4ED8`) dùng tiết chế và không bao giờ là tín hiệu duy nhất. **Tối đa một accent trên mỗi bề mặt** — bề mặt lõi dùng Ochre; *sản phẩm* có thể thay bằng accent Ngũ Hành, không thêm sắc thứ hai cạnh nó. Không dùng gradient tím xanh.
100
+ - **Chữ.** UI: **Be Vietnam Pro** (300–800; họ chữ ưu tiên tiếng Việt) — mặc định trên mọi bề mặt, gồm cả tiêu đề. Display/tiêu đề lớn: **Space Grotesk** (biến thiên 300–700), font **tùy chọn** của `--cs-font-family-display`; không thành phần nào trỏ đến nó trước khi scope chọn `.cs-display-face`, chuyển `--cs-heading-family` và giữ văn bản nội dung ở font UI. Mã/dữ liệu: **JetBrains Mono**. Tiêu đề display đậm (800 ở font UI; trong `.cs-display-face`, Space Grotesk tối đa 700), giãn ký tự chặt (−0.02em); nội dung 400/500 ở 1.5. Dòng dẫn chữ hoa giãn 0.08–0.12em. Thang cỡ chạy từ xs 12 → 5xl 60 trên nền 16px.
101
+ - **Khoảng cách và bố cục.** Lưới cơ sở 4px; padding section từ 64 đến 96px; max-width nội dung khoảng 1200–1320px. Khoảng trắng rộng rãi, tĩnh tại.
102
+ - **Bo góc và thẻ.** Bán kính: sm 4, md 8 (mặc định), **lg 14 (thẻ/panel)**, full 999 (pill, input, chip). Thẻ mặc định = panel trắng, viền ấm 1px `#E7D9C6`, bán kính 14px, bóng ấm mềm. Không dùng thẻ có viền trái tô màu.
103
+ - **Bề mặt — Liquid Glass (cách xử lý mặc định).** Năm vật liệu trên các màu neo: **Whisper** (lớp phủ hero), **Light** (nav/sidebar), **Standard** (thẻ trên hình), **Heavy** (modal/popover), **Solid** (nội dung dày, bảng). Kính = độ trong `color-mix` + blur/saturate `backdrop-filter` + gradient viền thấu kính 1px. Đây là cơ chế **tùy chọn và cộng thêm** — áp dụng lớp `cs-surface-*` sau khi kiểm tra APCA với nền sau; nội dung dày giữ Solid. Tự động chuyển sang đặc dưới `prefers-reduced-transparency`, `forced-colors`, khi in và trên trình duyệt không hỗ trợ. Bề mặt giải quyết **Theme × Element × Language × Style** độc lập.
104
+ - **Bóng đổ và chiều sâu.** Bóng ấm ngả umber (`rgba(69,33,14,…)`), thang mềm năm mức từ đường mảnh `xs` đến độ nổi hộp thoại `xl`. Chiều sâu là thang z tường minh gắn với các tầng kính: bg 0 → section 5 → card 10 → nav 50 → dropdown 60 → overlay 80 → modal 100 → toast 200.
105
+ - **Nền và hình ảnh.** Nền umber đậm phát sáng với **ánh hạt vàng ấm** (`aurora-tho.webp`), mỗi hành có lớp phủ riêng (`assets/aurora-{tho,hoa,thuy,moc,kim}.webp`, áp dụng qua lớp `.cs-aurora-wash`; Thổ dùng vàng chính thức). Section umber tràn mép neo hero, dải tuyển dụng và footer. Linh vật **Lumi** là thần đèn vàng bóng trên nền trong suốt.
106
+ - **Bản sắc sản phẩm Ngũ Hành.** Studio thuộc **Thổ/Earth** (Umber + Ochre); mỗi *sản phẩm* CyberSkill có thể mang một hành — **Kim** (metal) · **Mộc** (wood) · **Thủy** (water) · **Hỏa** (fire) · **Thổ** (earth) — qua `data-cs-element` (+ `data-cs-variant`, ví dụ Hỏa: ember · lava · plasma). Mỗi gói đặt mười token vai trò **`--cs-accent-*`** (accent / strong / bright / on / on-strong / tint / ink / glow / grad-a / grad-b) trong `tokens/elements.css`; trong scope, hành nhận đầy đủ vai trò accent của Ochre. Không bao giờ đổi theo hành: trạng thái ngữ nghĩa và **chỉ báo tiêu điểm kết hợp** (viền text-primary + quầng ochre). Phối màu theo chu kỳ: hành phụ chỉ xuất hiện ở điểm cuối gradient dọc **Tương sinh** (Mộc→Hỏa→Thổ→Kim→Thủy→Mộc); cặp **Tương khắc** không bao giờ trộn. Ánh xạ sản phẩm→hành nằm trong `docs/products.md`. Mọi template đều dùng `--cs-accent-*`, không dùng hex thô. **Lumi giữ màu vàng trong mọi hành.**
107
+ - **Chuyển động và trạng thái tương tác.** Thời lượng ngắn (120–320ms) với đường cong giảm tốc mềm `cubic-bezier(0.2,0,0,1)`; `prefers-reduced-motion` giảm thời lượng animation/transition xuống 0.01ms và tắt cuộn mượt. Hover sáng thêm ~8% (nền tô) hoặc tô `surface-raised` (nhẹ); nhấn dịch 0.5–1px; tiêu điểm giữ **chỉ báo kết hợp** (viền text-primary 2px + quầng Ochre) theo `docs/doctrine.md`. Vùng chạm ≥ 44px trên con trỏ thô. Độ trong và độ mờ chỉ xuất hiện trên bề mặt kính và ô nhập điều ước ở hero.
113
108
 
114
- **Góc và thẻ.** Bán kính: sm 4, md 8 (mặc định), **lg 14 (thẻ/panel)**, full 999 (pill, input, chip). Thẻ mặc định = panel trắng, viền ấm 1px `#E7D9C6`, bán kính14px, bóng ấm mềm. Không dùng thẻ có viền trái màu.
115
-
116
- **Bề mặt — Liquid Glass (cách xử lý mặc định).** Năm vật liệu trên các màu neo: **Whisper** (lớp phủ hero), **Light** (nav/sidebar), **Standard** (thẻ trên hình), **Heavy** (modal/popover), **Solid** (nội dung dày, bảng). Kính = độ trong `color-mix` + blur/saturate `backdrop-filter` + gradient viền thấu kính1px. Đây là cơ chế **tùy chọn và cộng thêm** — áp dụng lớp `cs-surface-*` sau khi kiểm tra APCA với nền sau; nội dung dày giữ Solid. Chuyển sang đặc dưới `prefers-reduced-transparency`, `forced-colors`, khi in và trên trình duyệt không hỗ trợ.
117
-
118
- **Bóng** ấm, ngả umber (`rgba(69,33,14,…)`), thang mềm năm mức từ đường mảnh `xs` đến độ nổi hộp thoại `xl`. Không xám, không gắt.
119
-
120
- **Chiều sâu** là thang z tường minh gắn với các tầng kính: bg 0 → section 5 → card 10 → nav 50 → dropdown 60 → overlay 80 → modal 100 → toast 200.
121
-
122
- **Nền và hình ảnh** phát sáng từ trong: nền umber đậm với **ánh hạt vàng ấm** (`aurora-tho.webp`), không lạnh hay phẳng — mỗi hành có lớp phủ riêng (`assets/aurora-{tho,hoa,thuy,moc,kim}.webp`, qua lớp phủ `.cs-aurora-wash`; Thổ dùng vàng chính thức). Ảnh mang tông ấm. Section umber tràn mép neo hero, dải tuyển dụng và footer; trên umber, khẩu hiệu Ochre và nội dung trắng truyền tải thông điệp. Linh vật **Lumi** là thần đèn vàng bóng trên nền trong suốt.
123
-
124
- **Bản sắc sản phẩm Ngũ Hành.** Studio thuộc **Thổ/Earth** (Umber + Ochre — màu vàng đất truyền thống); mỗi *sản phẩm* CyberSkill có thể mang một hành — **Kim** (metal) · **Mộc** (wood) · **Thủy** (water) · **Hỏa** (fire) · **Thổ** (earth) — qua `data-cs-element` (+ `data-cs-variant`, ví dụ Hỏa: ember · lava · plasma). Mỗi gói đặt mười token vai trò **`--cs-accent-*`** (accent / strong / bright / on / on-strong / tint / ink / glow / grad-a / grad-b) trong `tokens/elements.css`; trong scope, hành nhận đầy đủ vai trò accent của Ochre. Không bao giờ theo hành: trạng thái ngữ nghĩa và **chỉ báo tiêu điểm kết hợp** (viền text-primary + quầng ochre) — dấu ấn tiếp cận của studio trên mọi sản phẩm. Phối theo chu kỳ: hành phụ chỉ được xuất hiện ở điểm cuối gradient dọc **Tương sinh** (Mộc→Hỏa→Thổ→Kim→Thủy→Mộc); cặp **Tương khắc** không bao giờ trộn. Ánh xạ sản phẩm→hành nằm trong `docs/products.md`. **Mọi template có tùy chỉnh Element** — phần theo hành sản phẩm phải dùng `--cs-accent-*`, không dùng hex thô. **Lumi giữ màu vàng trong mọi hành** — thần đèn là hằng số của studio; chỉ môi trường đổi sắc.
125
-
126
- **Xử lý bề mặt.** Liquid-glass cố định. Bề mặt giải quyết **Theme × Element × Language × Style** độc lập.
127
-
128
- **Chuyển động** bình tĩnh và có mục đích: thời lượng ngắn (120–320ms), giảm tốc mềm `cubic-bezier(0.2,0,0,1)`, dịch/co giãn nhỏ và mờ dần (ví dụ linh vật hero nổi nhẹ). Không nảy, không chớp. Với `prefers-reduced-motion`, cơ chế an toàn toàn cục giảm animation và transition xuống0.01ms, tắt cuộn mượt; từng component có thể tắt animation hoàn toàn.
129
-
130
- **Trạng thái tương tác.** Hover: sáng thêm khoảng8% (nền tô) hoặc tô `surface-raised` (nhẹ). Nhấn: dịch0.5–1px. Tiêu điểm: giữ **chỉ báo kết hợp** — viền text-primary2px và quầng Ochre theo `docs/doctrine.md`; quy tắc component giữ viền thấy được khi chỉ báo nằm bên trong hoặc do wrapper hiển thị. Nút, range, checkbox và radio native giữ diện mạo trình duyệt và dự phòng quầng Ochre khi box shadow bị tắt. Hiển thị disabled theo hợp đồng từng component. Vùng chạm ≥44px trên con trỏ thô.
109
+ ---
131
110
 
132
- **Độ trong và độ mờ** chỉ có trên bề mặt kính và ô nhập điều ước ở hero — có chủ ý, có dự phòng — không dùng làm trang trí.
111
+ ## Hệ biểu tượng & tài sản thương hiệu
133
112
 
134
- ---
113
+ CyberSkill **không kèm thư viện icon bên ngoài**. Hệ thống dùng **bộ icon nét nội bộ** (`TASK-DS-010`): mỗi icon là dữ liệu (viewBox + đường nét nguyên thủy) hiển thị qua một component `<Icon>`.
135
114
 
136
- ## HỆ BIỂU TƯỢNG
115
+ - **Kiểu dáng:** icon nét, stroke `currentColor`, độ dày 1.75, đầu/nối bo tròn, viewBox 24×24 — kích thước lấy từ `--cs-icon-sm|md|lg` (16/20/24).
116
+ - **Danh mục icon:** `close · sun · moon · arrow-right · check · sparkle · chat · sound-on · sound-off`, mở rộng ở v2.0 với `search · sliders · upload · download · calendar · user · plus · trash · external · menu`, và ở v2.13 với `chevron-down/up/left/right · edit · copy · info · alert-triangle`. `sparkle` là glyph **“điều ước”** của thương hiệu. **Không dùng emoji** hay ký tự unicode thay icon trong UI sản phẩm.
117
+ - **Tài sản thương hiệu gốc:** `assets/` chứa `logo-mark.svg` / `logo-mark.png` (biểu trưng gốc chính thức, nền Umber + thần đèn Ochre), `favicon.svg`, `aurora-tho.webp` (`aurora-gold.jpg` giữ làm ảnh mẫu) và `lumi-poster.webp`. **Không bao giờ dựng lại, đổi màu hay mô phỏng biểu trưng gốc;** với tenant bên thứ ba, thay bằng logo riêng của tenant.
137
118
 
138
- CyberSkill **không kèm thư viện icon bên ngoài**. Hệ thống dùng **bộ icon nét nhỏ trong kho** (từ trang marketing, `TASK-DS-010`): mỗi icon là dữ liệu (viewBox + đường nét nguyên thủy), hiển thị qua một component `<Icon>`. Kiểu: **icon nét, stroke `currentColor`, độ dày1.75, đầu/nối bo tròn, viewBox24×24** — icon theo token chữ xung quanh, đổi màu bằng `color`. Kích thước từ `--cs-icon-sm|md|lg` (16/20/24).
139
- Bộ gồm: `close · sun · moon · arrow-right · check · sparkle · chat · sound-on · sound-off`, mở rộng ở v2.0 với `search · sliders · upload · download · calendar · user · plus · trash · external · menu`, và v2.13 với `chevron-down/up/left/right · edit · copy · info · alert-triangle` (cùng ngữ pháp, đánh dấu phần mở rộng). `sparkle` là glyph **“điều ước”** của thương hiệu. **Không emoji**, không icon ký tự unicode trong UI sản phẩm. Ngoại lệ với “icon nét” là **biểu trưng thương hiệu** (`Logo`) và linh vật **Lumi**, vốn là hình tô đặc.
140
- Tài sản sao chép nằm trong `assets/`: `logo-mark.svg` / `logo-mark.png` (bản gốc chính thức, nền Umber + thần đèn Ochre), `favicon.svg`, `aurora-tho.webp` (lớp hero vàng ấm; `aurora-gold.jpg` giữ làm ảnh mẫu), `lumi-poster.webp` (linh vật thần đèn vàng). **Logo là tệp gốc thật — không bao giờ dựng lại, đổi màu hay mô phỏng;** với tenant bên thứ ba, thay bằng logo riêng của tenant.
141
119
  ---
142
120
 
143
121
  ## Component
@@ -172,92 +150,67 @@ Tài sản sao chép nằm trong `assets/`: `logo-mark.svg` / `logo-mark.png` (b
172
150
  - **Tổ chức (Organism)** — `Accordion`, `AlertDialog`, `Avatar`, `Badge`, `Button`, `Calendar`, `Carousel`, `Cascader`, `Chart`, `ChatMessage`, `CommandPalette`, `Comment`, `DataGrid`, `DataTable`, `DatePicker`, `Dialog`, `Dock`, `Drawer`, `Editor`, `EmptyState`, `Form`, `FormField`, `FormFieldArray`, `FormWizard`, `HotKeys`, `HumanReviewGate`, `Icon`, `Kbd`, `LocaleProvider`, `Masonry`, `Menubar`, `NavItem`, `NavigationMenu`, `OverlayProvider`, `Pagination`, `Popover`, `PromptInput`, `RadioGroup`, `Result`, `Sidebar`, `Sortable`, `Splitter`, `Terminal`, `TextField`, `TimePicker`, `Timeline`, `Tour`, `Transfer`, `Tree`, `TreeSelect`, `TreeTable`
173
151
  <!-- END CATALOG COMPONENT INVENTORY -->
174
152
 
175
- Điểm nổi bật: **Button** — primary Umber; biến thể primary/secondary/tertiary/ghost/danger/danger-ghost; cỡ xs–lg; loading, icon, fullWidth. **TextField / Textarea / Select / NativeSelect** dùng chung khung `.cs-field` (nhãn + mô tả/lỗi; an toàn dấu/IME). **DataTable** — caption, header có scope, render theo cột, nhóm trạng thái idle/loading/error/empty. **Card** — panel ấm + header/body/footer. **Logo** hiển thị đúng biểu trưng chính thức; **Icon** điều khiển bộ icon nét nội bộ. Họ **AI-native** mang doctrine giải trình của thương hiệu — công bố, review của con người, thu nhận điều ước và độ tin cậy, đều diễn đạt bằng lời (không chỉ màu).
176
-
177
- **Cài đặt / tên gói.** Tên gói là **`@cyberskill/design`** (VERSION bản nguồn **<!-- cs-source-version:package-source -->2.2.0<!-- /cs-source-version -->**; quyền trong `docs/consumer-grant.md` chi phối *sử dụng* — gói vẫn UNLICENSED). **Không** cài `@cyberskill/react` cho cây này — tên đó thuộc danh mục trang marketing lịch sử, không phải gói này.
178
-
179
- **Danh mục nguồn và phần mở rộng.** Bề mặt CyberSkill trước đây có sáu primitive — `Button`, `TextField`, `Dialog`, `DataTable`, `AIDisclosureBadge`, `HumanReviewGate` — cùng `Logo` thương hiệu. Mọi phần khác trong gói **này** là **mở rộng có chủ ý**, dựng bằng vốn token riêng của thương hiệu để phía dùng có bộ công cụ hoàn chỉnh: `Icon` (bộ icon nét nội bộ thực của trang marketing), các primitive Forms / Feedback / Data / Navigation / Overlays chuẩn (tìm kiếm, bước, slider, tải tệp, danh sách, danh sách mô tả, dòng thời gian, accordion, kbd, khối mã, sidebar, steps, command palette, popover, drawer và hơn nữa), phần AI-native thêm vào (`PromptInput`, `ChatMessage`, `ConfidenceMeter`, `PromptSuggestions`, `TypingIndicator`, `CitationList`) chính thức hóa luồng điều ước Lumi, và linh vật `LumiAvatar`. Không phần nào tạo ngôn ngữ thị giác mới — tất cả dùng lại màu neo, bề mặt, chữ và chuyển động đã định nghĩa.
153
+ - **Điểm nổi bật:** **Button** — primary Umber; biến thể primary/secondary/tertiary/ghost/danger/danger-ghost; cỡ xs–lg; loading, icon, fullWidth. **TextField / Textarea / Select / NativeSelect** dùng chung khung `.cs-field` (nhãn + mô tả/lỗi; an toàn dấu/IME). **DataTable** — caption, header có scope, render theo cột, bộ trạng thái idle/loading/error/empty. **Card** — panel ấm + header/body/footer. **Logo** hiển thị đúng biểu trưng chính thức; **Icon** điều khiển bộ icon nét nội bộ. Họ **AI-native** mang doctrine giải trình của thương hiệu — công bố, review của con người, thu nhận điều ước và độ tin cậy, đều diễn đạt bằng lời (không chỉ bằng màu).
154
+ - **Cài đặt / tên gói:** Tên gói là **`@cyberskill/design`** (VERSION bản nguồn **<!-- cs-source-version:package-source -->2.3.1<!-- /cs-source-version -->**; quyền trong `docs/consumer-grant.md` chi phối *sử dụng* — gói vẫn UNLICENSED). **Không** cài `@cyberskill/react` cho cây này — tên đó thuộc danh mục trang marketing lịch sử, không phải gói này.
155
+ - **Danh mục nguồn và phần mở rộng:** Bề mặt CyberSkill trước đây có sáu primitive — `Button`, `TextField`, `Dialog`, `DataTable`, `AIDisclosureBadge`, `HumanReviewGate` — cùng `Logo` thương hiệu. Mọi thành phần khác trong gói **này** là **mở rộng có chủ ý**, dựng bằng vốn token riêng của thương hiệu: `Icon`, các primitive Forms / Feedback / Data / Navigation / Overlays chuẩn, nhóm AI-native (`PromptInput`, `ChatMessage`, `ConfidenceMeter`, `PromptSuggestions`, `TypingIndicator`, `CitationList`) chính thức hóa luồng điều ước Lumi, và linh vật `LumiAvatar`.
180
156
 
181
157
  ---
182
158
 
183
159
  ## Template
184
160
 
185
- Các điểm khởi đầu có thể sao chép cho dự án sử dụng (bộ chọn **Templates** — thay các “điểm khởi đầu” theo component cũ). Mỗi mẫu nằm trong `templates/<slug>/` dưới dạng Design Component, nạp hệ thống qua `ds-base.js` cùng cấp.
161
+ Các điểm khởi đầu có thể sao chép cho dự án sử dụng (`templates/<slug>/`, mỗi mẫu nạp hệ thống qua `ds-base.js` cùng cấp):
186
162
 
187
163
  - **Trang marketing** (`templates/marketing-page/`) — landing song ngữ: hero umber có hộp điều ước `PromptInput`, thẻ dịch vụ, dải quy trình, nút mở chat Lumi.
188
-
189
164
  - **Dashboard** (`templates/dashboard/`) — danh mục kiểu Status Hub: KPI `Stat`, góc nhìn board/bảng bằng `Tabs`, thẻ trạng thái có `ProgressBar` + `Badge` và `DataTable`.
190
-
191
- - **Bộ slide** (`templates/slide-deck/`) — deck thương hiệu16:9: trang đầu + cuối umber, nhấn ochre, bố cục nội dung sáng.
192
-
165
+ - **Bộ slide** (`templates/slide-deck/`) — deck thương hiệu 16:9: trang đầu + cuối umber, nhấn ochre, bố cục nội dung sáng.
193
166
  - **Đăng nhập** (`templates/auth/`) — xác thực chia đôi: panel thương hiệu umber + biểu mẫu (`TextField`, `Switch`, `Button`).
194
-
195
167
  - **Cài đặt** (`templates/settings/`) — `Tabs`, trường biểu mẫu, công tắc và vùng nguy hiểm.
196
-
197
168
  - **Khung ứng dụng** (`templates/app-shell/`) — điều hướng `Sidebar`, thanh trên có `SearchField`, KPI `Stat` và `DataTable`.
198
-
199
169
  - **Bài viết** (`templates/article/`) — bài dài: tiêu đề, metadata tác giả, văn bản, khối nhấn `Alert`, `CodeBlock`.
170
+ - **Email** (`templates/email/`) — thông báo căn giữa 600px: header umber, CTA ochre, footer.
200
171
 
201
- - **Email** (`templates/email/`) — thông báo căn giữa600px: header umber, CTA ochre, footer.
202
-
203
- Mọi template khai báo bộ chọn **Element (Ngũ Hành)** (15 biến thể). Catalog nguồn khai báo <!-- cs-count:templatesWithBooleanControl -->15<!-- /cs-count --> template có ít nhất một control boolean và <!-- cs-count:templatesWithoutBooleanControl -->70<!-- /cs-count --> không có; control hành vi thay đổi theo template. <!-- cs-count:templatesWithThemeControl -->16<!-- /cs-count --> template khai báo control Theme, còn <!-- cs-count:templatesWithoutThemeControl -->69<!-- /cs-count --> không có. Số lượng mô tả control được khai báo; kiểm tra trạng thái thực và hành vi in của sản phẩm chọn. Tài liệu nghiệp vụ in Letter vẫn chỉ sáng theo doctrine in.
172
+ Mọi template khai báo bộ chọn **Element (Ngũ Hành)** (15 biến thể). Catalog nguồn khai báo <!-- cs-count:templatesWithBooleanControl -->15<!-- /cs-count --> template có ít nhất một control boolean và <!-- cs-count:templatesWithoutBooleanControl -->70<!-- /cs-count --> không có; <!-- cs-count:templatesWithThemeControl -->16<!-- /cs-count --> template khai báo control Theme, còn <!-- cs-count:templatesWithoutThemeControl -->69<!-- /cs-count --> không có. Tài liệu nghiệp vụ in Letter giữ chế độ sáng theo doctrine in.
204
173
 
205
174
  ### Template ấn phẩm đội ngũ
206
175
 
207
- Tài liệu, email, báo cáo và deck có thương hiệu theo bộ phận — mỗi mẫu là `.dc.html` sao chép được, dùng token hệ thống, markup thương hiệu và component chọn lọc. Nhiều tài liệu chỉ import Logo; markup không tự động được phối từ component React. Các nhóm gồm **Tech, Team, HR, Board, Marketing, Culture, Delivery, Legal, Finance, Sales** — bản đồ vận hành đầy đủ (nghiên cứu phạm vi tháng7/2026). Bản nháp cần luật sư (PIP, nghị quyết hội đồng, hợp đồng lao động VN) có **banner đánh dấu**: bắt buộc review pháp lý/HR trước khi dùng thật.
208
-
209
- - **Tech** — `tech-release-notes` (email phát hành), `tech-incident-report` (hậu kiểm không đổ lỗi: dòng thời gian + bảng hành động), `tech-rfc` (tài liệu thiết kế: đề xuất, đánh đổi, triển khai).
176
+ Tài liệu, email, báo cáo và deck `.dc.html` theo bộ phận **Tech, Team, HR, Board, Marketing, Culture, Delivery, Legal, Finance, Sales** (bản nháp cần luật sư có banner đánh dấu):
210
177
 
178
+ - **Tech** — `tech-release-notes` (email phát hành), `tech-incident-report` (hậu kiểm sự cố), `tech-rfc` (tài liệu thiết kế).
211
179
  - **Team** — `team-meeting-agenda` (mục có thời lượng, người phụ trách, nhật ký quyết định, nguyên tắc chung).
212
-
213
- - **HR** — `hr-announcement` (email tin đội ngũ). *(Thư mời làm việc, checklist hội nhập và mô tả công việc nay ở Employment Suite do khách hàng cung cấp bên dưới: `vn-offer-letter`, `vn-onboarding-checklist`, `vn-job-description`.)*
214
- - **Board** — `bod-report` (review quý: KPI, bảng danh mục, rủi ro, công bố hỗ trợ AI), `bod-deck` (deck hội đồng16:9 — slide xếp chồng, kiểu in trình duyệt và chụp PPTX phụ thuộc host), `bod-memo` (bản ghi nhớ điều hành một trang, một yêu cầu).
215
-
216
- - **Marketing** — `marketing-campaign-brief` (mục tiêu, đối tượng, kênh, chỉ số), `marketing-newsletter` (email số “The Lamp”), `marketing-launch` (thông báo ra mắt sản phẩm), `marketing-case-study` (hero kết quả, số liệu chứng minh, trích dẫn — sẵn in), `marketing-press-release` (dòng ngày, giới thiệu chuẩn, liên hệ báo chí — sẵn in).
180
+ - **HR** — `hr-announcement` (email tin đội ngũ; thư mời làm việc, checklist hội nhập và mô tả công việc nằm trong Employment Suite: `vn-offer-letter`, `vn-onboarding-checklist`, `vn-job-description`).
181
+ - **Board** — `bod-report` (review quý), `bod-deck` (deck hội đồng 16:9), `bod-memo` (bản ghi nhớ điều hành một trang).
182
+ - **Marketing** — `marketing-campaign-brief`, `marketing-newsletter`, `marketing-launch`, `marketing-case-study`, `marketing-press-release`.
217
183
 
218
184
  ### Template nghiệp vụ, pháp lý và bán hàng
219
185
 
220
- Tài liệu Letter sẵn in và deck khách hàng — giấy tờ studio thực sự gửi đi. Tài liệu pháp lý/tài chính dùng khổ Letter với khối `@page` + `@media print`, nên **File → Print / Save as PDF** phân trang gọn với lề0.6in; trên màn hình là tờ giấy ấm trên bàn.
221
-
222
- - **Pháp lý** — `legal-msa` (thỏa thuận dịch vụ tổng thể — khung cho SOW: định nghĩa, IP, phí, trách nhiệm, thời hạn), `legal-sow` (phạm vi công việc: bảng sản phẩm bàn giao/mốc, phí, nghiệm thu, ký duyệt). *(NDA hai chiều độc lập nay ở Employment Suite dưới dạng `vn-mutual-nda` do khách hàng cung cấp.)*
223
- - **Tài chính** — `finance-invoice` (bên thanh toán/phát hành, dòng hàng bằng đồng, VAT, tổng, ngân hàng), `finance-quote` (ước tính theo phạm vi, phần thêm tùy chọn, hạn hiệu lực, CTA chấp nhận).
224
-
225
- - **Bán hàng** — `sales-one-pager` (tài liệu để lại: hero umber, dịch vụ, số liệu chứng minh, quy trình điều ước, CTA liên hệ), `sales-proposal-deck` (đề xuất khách hàng8slide16:9 — điều ước, hiểu biết, cách tiếp cận, phạm vi, tiến độ, đội ngũ, đầu tư, bước tiếp).
186
+ Tài liệu Letter sẵn in (`@page` + `@media print`, lề 0.6in) và deck khách hàng:
226
187
 
227
- **Ngôn ngữ template có phạm vi.** Catalog nguồn khai báo <!-- cs-count:templatesWithLanguageControl -->44<!-- /cs-count --> mục có control Language và <!-- cs-count:templatesWithoutLanguageControl -->41<!-- /cs-count --> không có. Tài liệu xếp chồng tĩnh và nội dung đổi ngôn ngữ là hai hợp đồng khác nhau. Tùy chọn ngôn ngữ được khai báo không chứng nhận bản dịch đầy đủ hay chính xác; kiểm tra template chọn, nội dung nguồn và kiểm tra ngôn ngữ áp dụng. Nội dung bên gọi cung cấp vẫn do bên gọi chịu trách nhiệm dịch. Tài liệu pháp lý/tài chính có văn bản tiếng Việt dưới dạng **bản nháp chưa review** tại nơi chỉ định; giữ cảnh báo ngôn ngữ điều chỉnh và xin chủ nội dung review trước khi dùng thật.
188
+ - **Pháp lý** — `legal-msa` (thỏa thuận dịch vụ tổng thể), `legal-sow` (phạm vi công việc; NDA hai chiều độc lập nằm trong Employment Suite dưới dạng `vn-mutual-nda`).
189
+ - **Tài chính** — `finance-invoice` (dòng hàng bằng đồng, VAT, tổng, ngân hàng), `finance-quote` (báo giá theo phạm vi kèm CTA chấp nhận).
190
+ - **Bán hàng** — `sales-one-pager` (tài liệu giới thiệu), `sales-proposal-deck` (đề xuất khách hàng 8 slide 16:9).
228
191
 
229
- ### Tài liệu tham chiếu (chi phối MỌI template)
192
+ **Ngôn ngữ template có phạm vi.** Catalog nguồn khai báo <!-- cs-count:templatesWithLanguageControl -->44<!-- /cs-count --> mục có control Language và <!-- cs-count:templatesWithoutLanguageControl -->41<!-- /cs-count --> không có. Tài liệu pháp lý/tài chính có văn bản tiếng Việt dưới dạng **bản nháp chưa review** tại nơi chỉ định; giữ cảnh báo ngôn ngữ điều chỉnh và xin chủ nội dung review trước khi dùng thật.
230
193
 
231
- Ba tài liệu tham chiếu toàn bộ xác định và lập danh mục thư viện template — pháp lý, HR, tài chính, bán hàng, giấy tờ khách hàng và truyền thông ưu tiên EN. Chúng ở `templates/doc-*/` và tự in thành tài liệu A4 song ngữ:
232
- - **Documents · Style Guide** (`templates/doc-style-guide/`) — chuẩn trình bày: bảng màu, thang chữ, quy tắc song ngữ Ink/Slate, bảng, chỗ điền, ô đánh dấu, khối ký, vệ sinh dữ liệu, header/footer (Điều1–10 từ nguồn khách hàng đã ghi nhận; đồng nhất toàn văn hiện tại cần so sánh nguồn), cùng **Điều11 — phạm vi và dạng mẫu**, ánh xạ quy tắc A4 sang Letter, email, màn hình sản phẩm, deck và mạng xã hội.
194
+ ### Tài liệu tham chiếu (chi phối mọi template)
233
195
 
234
- - **Documents · Suite Index & Usage Guide** (`templates/doc-suite-index/`) — Phần I lập danh mục theo nhóm (bộ HR, pháp lý, tài chính, bán hàng, sản phẩm, truyền thông); Phần II hướng dẫn dùng (vòng đời lao động, tài liệu có hiệu lực kỷ luật, tám quy tắc trình bày và quy trình8bước “thêm template mới”).
235
-
236
- - **Documents · Templates** (`templates/doc-templates/`) — Phần A là khung A4 song ngữ trống (header, khối tiêu đề, điều khoản mẫu, Bên A điền sẵn / Bên B để trống, khối ký); Phần B là bản đồ dạng mẫu (A4 · Letter · email · màn hình sản phẩm · deck · mạng xã hội) kèm ví dụ từng họ.
196
+ - **Documents · Style Guide** (`templates/doc-style-guide/`) — chuẩn trình bày (Điều 1–10) cùng **Điều 11 — phạm vi và dạng mẫu**.
197
+ - **Documents · Suite Index & Usage Guide** (`templates/doc-suite-index/`) — Phần I lập danh mục theo nhóm; Phần II hướng dẫn vòng đời lao động, quy tắc trình bày và quy trình 8 bước thêm template.
198
+ - **Documents · Templates** (`templates/doc-templates/`) — Phần A khung A4 song ngữ trống; Phần B bản đồ dạng mẫu.
237
199
 
238
200
  ### Bộ HR và lao động (khách hàng cung cấp)
239
201
 
240
- Ba mươi tám văn bản A4 song ngữ (**ba mươi bảy** tài liệu Employment Suite do khách hàng cung cấp, cộng khung thương mại **`vn-framework-agreement`**) (dựng trên phiên bản hệ thống trước) đã được **chuyển từng tài liệu thành template và cập nhật giao diện theo hệ thống thiết kế mới nhất**. Danh mục nguồn Word ghi nhận và fixture văn bản chuẩn hóa được giữ mô tả trong `docs/hr-suite-sources.md`; bộ kiểm tra cụm từ hiện tại không xác lập đồng nhất toàn bộ điều khoản hay nguồn Word hiện tại. Chúng thuộc nhóm **HR Suite** (`templates/vn-*/`), theo chuẩn ở ba tài liệu tham chiếu trên: **A4, song ngữ ưu tiên tiếng Việt** (VN Ink `#1A1614` trên cặp EN nghiêng Slate `#26323A`), header quốc hiệu/tiêu ngữ, thanh tiêu đề bảng umber, chỗ điền vàng, vệ sinh dữ liệu PDPL (Bên B luôn trống), khối ký không bị tách. Mỗi mẫu có tùy chỉnh Element (15) như mọi template; không có tùy chỉnh ngôn ngữ (vốn đã song ngữ). Vì là văn bản khách hàng cung cấp (giữ nguyên nội dung; luật sư phải review trước khi dùng thật), **`vn-labor-contract` thay `legal-employment-contract` hư cấu trước đây**, còn `vn-mutual-nda` / `vn-offer-letter` / `vn-onboarding-checklist` / `vn-job-description` thay `legal-nda` / `hr-offer-letter` / `hr-onboarding` / `hr-job-description` hư cấu (đều đã bỏ); template hư cấu còn lại là truyền thông ưu tiên EN (thông báo, newsletter, thông cáo) và giấy tờ bán hàng/tài chính khách hàng — mục đích khác nên giữ.
202
+ Ba mươi tám văn bản A4 song ngữ (**ba mươi bảy** tài liệu Employment Suite cùng khung thương mại **`vn-framework-agreement`**) nằm tại `templates/vn-*/` (xem `docs/hr-suite-sources.md`). Tất cả tuân thủ chuẩn A4 song ngữ ưu tiên tiếng Việt (VN Ink `#1A1614` trên cặp EN nghiêng Slate `#26323A`, header quốc hiệu/tiêu ngữ, thanh tiêu đề bảng umber, chỗ điền vàng, vệ sinh dữ liệu PDPL, khối ký không tách trang). **`vn-labor-contract`** thay thế `legal-employment-contract`, và `vn-mutual-nda` / `vn-offer-letter` / `vn-onboarding-checklist` / `vn-job-description` thay thế `legal-nda` / `hr-offer-letter` / `hr-onboarding` / `hr-job-description`.
241
203
 
242
204
  - **Lương thưởng và phúc lợi** — `vn-total-rewards-appendix`, `vn-phantom-stock`, `vn-salary-scale`, `vn-compensation-regulation`.
243
-
244
205
  - **Chính sách và quy định** — `vn-internal-labor-regulations`, `vn-disciplinary-schedule`, `vn-performance-evaluation-regulation`, `vn-grassroots-democracy`, `vn-code-of-conduct`, `vn-infosec-policy`, `vn-data-protection-policy`, `vn-remote-work-policy`, `vn-travel-expense-policy`.
245
-
246
206
  - **Tuyển dụng và hồ sơ** — `vn-job-description`, `vn-onboarding-checklist`, `vn-receipt-acknowledgement`, `vn-labour-management-book`, `vn-foreign-employee-pack`, `vn-pdpl-consent`.
247
-
248
- - **Đánh giá và đề nghị** — `vn-performance-review-form`, `vn-employee-request` (nghỉ phép · đồng ý làm thêm · khác).
249
-
207
+ - **Đánh giá và đề nghị** — `vn-performance-review-form`, `vn-employee-request`.
250
208
  - **Quan hệ bên ngoài** — `vn-internship-agreement`, `vn-contractor-agreement`, `vn-sow-appendix`, `vn-mutual-nda`.
209
+ - **Khung thương mại / khách hàng** — `vn-framework-agreement` (cần luật sư review).
210
+ - **Kỷ luật và chấm dứt** — `vn-disciplinary-case-file`, `vn-resignation-letter`, `vn-certificate-of-employment`, `vn-training-commitment`.
251
211
 
252
- - **Khung thương mại / khách hàng (giao diện VN A4, không phải lao động)** — `vn-framework-agreement` (Hợp đồng nguyên tắc — dịch vụ phần mềm và cấp tài khoản; mẫu Ban QLDA Bình Quới; cần luật sư review).
253
-
254
- - **Kỷ luật và chấm dứt** — `vn-disciplinary-case-file` (4phần A→D), `vn-resignation-letter`, `vn-certificate-of-employment` (cố ý trung tính), `vn-training-commitment`.
255
-
256
- Các văn bản này có nguồn gốc do khách hàng cung cấp đã ghi nhận. Bộ kiểm tra cụm từ hiện tại không xác lập đồng nhất toàn văn hay sự chấp thuận của chủ nội dung; giữ nguyên nội dung và xin luật sư review trước khi dùng thật hoặc cập nhật nguồn.
257
-
258
- ### Bản đồ phạm vi component
212
+ ### Bản đồ phạm vi component & dạng mẫu
259
213
 
260
- Cách template sử dụng thư viện component — mỗi nhóm được ít nhất một điểm khởi đầu bao phủ:
261
214
  | Nhóm component | Template sử dụng |
262
215
  |---|---|
263
216
  | **Lõi** (Button, Dialog) | marketing-page · auth · settings · sales-one-pager · finance-quote |
@@ -268,23 +221,18 @@ Cách template sử dụng thư viện component — mỗi nhóm được ít nh
268
221
  | **AI-native** (AIDisclosureBadge, PromptInput) | marketing-page · bod-report |
269
222
  | **Thương hiệu** (Logo, Icon, LumiAvatar) | mọi template |
270
223
 
271
- Markup thô (điều khoản đánh số, bảng hóa đơn, dòng mốc) trong tài liệu pháp lý/tài chính/bộ HR được phối từ token + tiện ích chữ `.cs-*`, có chủ ý, thay vì component — đây là tài liệu, không phải UI ứng dụng. Khung của chúng do ba tài liệu tham chiếu (Style Guide · Suite Index & Usage Guide · Templates) xác định, không phải thư viện component.
272
-
273
- ### Bản đồ phạm vi dạng mẫu
274
-
275
- Mỗi template thuộc một trong sáu dạng mẫu, được đóng khung bởi `templates/doc-templates`:
276
- | Dạng mẫu | Khung | Template |
224
+ | Dạng mẫu (`templates/doc-templates`) | Khung | Template |
277
225
  |---|---|---|
278
- | **Văn bản A4 song ngữ** | Header quốc hiệu/tiêu ngữ · Điều khoản · bảng Bên A/B · khối ký; đủ Style-Guide1–10 | 38văn bản A4 `vn-*` |
279
- | **Tài liệu in Letter** | Letter, lề0.6in, bàn + giấy, Print/PDF gọn | `finance-invoice` · `finance-quote` · `finance-expense-report` · `legal-msa` · `legal-sow` · `sales-one-pager` · tài liệu `bod-*` |
226
+ | **Văn bản A4 song ngữ** | Header quốc hiệu/tiêu ngữ · Điều khoản · bảng Bên A/B · khối ký; đủ Style-Guide 1–10 | 38 văn bản A4 `vn-*` |
227
+ | **Tài liệu in Letter** | Letter, lề 0.6in, bàn + giấy, Print/PDF gọn | `finance-invoice` · `finance-quote` · `finance-expense-report` · `legal-msa` · `legal-sow` · `sales-one-pager` · tài liệu `bod-*` |
280
228
  | **Email (600px)** | Nội dung căn giữa, header/CTA hệ thống, không tiêu ngữ/khối ký; song ngữ qua tùy chỉnh Language | `email` · `hr-announcement` · `marketing-newsletter` · `tech-release-notes` · `delivery-status-email` · `finance-dunning-email` |
281
229
  | **Màn hình sản phẩm** | Component + token; Theme × Element × Language × Style; không hình học in | `marketing-page` · `dashboard` · `app-shell` · `auth` · `settings` · `article` |
282
- | **Deck (16:9)** | Slide16:9 xếp chồng, bìa umber, accent Ngũ Hành, song ngữ qua Language, in trình duyệt / PPTX phụ thuộc host | `slide-deck` · `bod-deck` · `sales-proposal-deck` · `delivery-qbr-deck` |
230
+ | **Deck (16:9)** | Slide 16:9 xếp chồng, bìa umber, accent Ngũ Hành, song ngữ qua Language, in trình duyệt / PPTX phụ thuộc host | `slide-deck` · `bod-deck` · `sales-proposal-deck` · `delivery-qbr-deck` |
283
231
  | **Ảnh mạng xã hội** | Cỡ cố định theo kênh (1080² · 1200×630 · 1080×1920) | `marketing-social-kit` |
284
232
 
285
233
  ---
286
234
 
287
- ## Mục lục / manifest
235
+ ## Cấu trúc kho nguồn & UI kit
288
236
 
289
237
  ```
290
238
  styles.css ← single entry point (@import manifest only) · checkout version: see VERSION
@@ -309,36 +257,22 @@ thumbnail.html project tile
309
257
  SKILL.md Agent-Skills-compatible entry
310
258
  ```
311
259
 
312
- Danh mục nguồn VN A4 có <!-- cs-count:vietnameseInstrumentTemplates -->38<!-- /cs-count --> văn bản song ngữ (`vn-*`), bao phủ Employment Suite và thỏa thuận khung thương mại. Xin luật sư review trước khi dùng thật.
313
-
314
- **UI kit** (bản tái hiện sản phẩm, phối token + lớp `.cs-*`): **Status Hub** (dashboard danh mục — KPI, góc nhìn board/bảng/bản phát hành, drawer — cùng **đăng nhập**, **cài đặt**, **chi tiết dự án**). Demo trục trực tiếp: thanh công cụ Storybook · Atomic View · mẫu Elements Geometry, **cyberskill.world** (trang marketing song ngữ với chat Lumi — cùng **Work**, **Careers** và **trợ lý Lumi** toàn trang), **deck thương hiệu** (16:9, `deck-stage`, in trình duyệt và hook chụp của host). Xem `README.md` từng kit.
315
-
316
- **Storybook** hiển thị mọi card: Components (<!-- cs-count:publicExports -->125<!-- /cs-count --> export — Core, Forms, Data, Feedback, Navigation, Overlays, AI-native, Brand), Foundations (Colors, Type, Spacing, Surfaces, Brand, Motion, Responsive & Bilingual, **Elements**), **Templates** (<!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu từ manifest, gồm HR Suite / VN A4), **Pages** (Status Hub, Website, Deck), cùng bản phản chiếu Maintainer cho cổng kiểm tra.
260
+ - **Danh mục nguồn VN A4:** có <!-- cs-count:vietnameseInstrumentTemplates -->38<!-- /cs-count --> văn bản song ngữ (`vn-*`), bao phủ Employment Suite và thỏa thuận khung thương mại. Xin luật sư review trước khi dùng thật.
261
+ - **UI kit:** **Status Hub** (dashboard danh mục, đăng nhập, cài đặt, chi tiết dự án), **cyberskill.world** (trang marketing song ngữ với chat Lumi, Work, Careers, trợ lý Lumi) và **Deck thương hiệu** (16:9, `deck-stage`, in trình duyệt và hook chụp của host). Xem `README.md` từng kit.
262
+ - **Storybook:** hiển thị Components (<!-- cs-count:publicExports -->125<!-- /cs-count --> export — Core, Forms, Data, Feedback, Navigation, Overlays, AI-native, Brand), Foundations, **Templates** (<!-- cs-count:templates -->85<!-- /cs-count --> điểm khởi đầu từ manifest), **Pages** (Status Hub, Website, Deck) và bản phản chiếu Maintainer cho cổng kiểm tra.
317
263
 
318
264
  ---
319
265
 
320
- ## Thay thế và lưu ý
321
-
322
- - **Font:** Be Vietnam Pro (300–800 + nghiêng), Space Grotesk (biến thiên300–700) và JetBrains Mono **tự lưu trữ** trong `fonts/` dạng woff2 chia subset (latin · latin-ext · vietnamese) — không phụ thuộc CDN. Các họ khai báo khớp bản tái hiện sản phẩm ghi nhận. `_audit/font-face-integrity.html` kiểm tra nguồn WOFF2 cục bộ, khai báo subset, tương đương manifest, subset tiếng Việt mỗi họ thương hiệu, nạp mẫu và scope display-face. Không xác lập hiển thị giống hệt sản phẩm khác, mọi glyph hay độ trung thực font của tệp xuất.
323
-
324
- - **Font display là tùy chọn, không phải mặc định thứ hai.** `--cs-font-family-display` (Space Grotesk) để sản phẩm có font tiêu đề — cyberskill.world / Lumi — dùng token DS thay vì tự tạo `@font-face`. Không phần nào của DS trỏ đến nó: chọn cho cây con bằng `.cs-display-face`. Ánh xạ sản phẩm → hành không ảnh hưởng (`docs/products.md` vẫn khóa).
325
-
326
- - **Thang cỡ chữ và token chuyển động** là quy ước cục bộ xây trên doctrine, được cung cấp trong `tokens/typography.css` và `tokens/motion.css`. Nguồn chữ ghi nguồn gốc họ/line-height tách khỏi quy ước cỡ, độ đậm, icon cục bộ. Thang cũng có alias vai trò ngữ nghĩa (`--cs-text-h1`…) và tiện ích `.cs-h1` / `.cs-body` / … trong `base/typography.css`.
327
-
328
- - **UI kit là bản tái hiện diện mạo** — dữ liệu hư cấu, tương tác nông, lớp3D/thần đèn sản xuất của trang marketing không được tái tạo (nền HTML-first được tái tạo).
266
+ ## Thay thế, kiểm chứng & toolchain
329
267
 
330
- *Chào mừng. Hiện Thực Hoá Ý Chí.*
331
-
332
- Số lượng khai báo và vai trò tài liệu công khai hiện tại được sinh trong [catalog tham chiếu](../../../docs/reference-catalog.json). Chúng mô tả danh mục và thẩm quyền nguồn, không phải nghiệm thu của con người hay năng lực runtime.
333
-
334
- Cổng fixture tiếp cận (`_audit/a11y-harness.html`) kiểm tra tên tiếp cận thực tế bằng axe cục bộ được ghim và danh mục20control tường minh. `npm run test:a11y-harness` thử tên lỗi, tham chiếu, fixture và lỗi engine audit trên Chromium, Firefox, WebKit. Các kiểm tra bao phủ tên fixture và quy tắc CSS khai báo; lời đọc của trình đọc màn hình và nghiệm thu con người vẫn riêng biệt.
335
-
336
- Trạng thái ngữ nghĩa cung cấp vai trò nền, chữ ghép cặp (`-fg`) và chữ trên bề mặt (`-text`) riêng. Dùng vai trò chữ cho thông điệp/nhãn trên page/panel/raised. Trang in trắng cố định dùng scope Light tường minh với màu chữ chính riêng; trang thích ứng theo theme chọn.
337
-
338
- `--cs-accent-on-strong` là chữ ghép cặp cho nền nhấn mạnh, đạt APCA75 nội dung và WCAG4.5 ở cả hai chế độ. Bộ sinh nhắm78; xem báo cáo tương phản và `test:strong-text-contrast` về phạm vi khai báo.
268
+ - **Font tự lưu trữ:** Be Vietnam Pro (300–800 + nghiêng), Space Grotesk (biến thiên 300–700) và JetBrains Mono được tự lưu trữ trong `fonts/` dạng WOFF2 chia subset (latin · latin-ext · vietnamese) — không phụ thuộc CDN. `_audit/font-face-integrity.html` kiểm tra nguồn WOFF2 cục bộ, khai báo subset, tương đương manifest, subset tiếng Việt, nạp mẫu và scope display-face.
269
+ - **Font display tùy chọn:** `--cs-font-family-display` (Space Grotesk) chỉ kích hoạt khi cây con chọn `.cs-display-face` (`docs/products.md` vẫn khóa).
270
+ - **Thang chữ, chuyển động & vai trò tương phản:** `tokens/typography.css` và `tokens/motion.css` cung cấp alias vai trò ngữ nghĩa (`--cs-text-h1`…) và tiện ích `.cs-h1` / `.cs-body` trong `base/typography.css`. Trạng thái ngữ nghĩa cung cấp vai trò nền, chữ ghép cặp (`-fg`) và chữ trên bề mặt (`-text`) riêng. `--cs-accent-on-strong` là chữ ghép cặp cho nền nhấn mạnh (APCA ≥ 75 cho văn bản nội dung và WCAG ≥ 4.5 ở cả hai chế độ; bộ sinh nhắm 78, kiểm chứng bởi `test:strong-text-contrast`).
271
+ - **UI kit & catalog tham chiếu:** UI kit là bản tái hiện diện mạo HTML-first với dữ liệu hư cấu. Số lượng khai báo và vai trò tài liệu công khai được sinh trong [catalog tham chiếu](../../../docs/reference-catalog.json).
272
+ - **Kiểm chứng tiếp cận:** `_audit/a11y-harness.html` và `npm run test:a11y-harness` kiểm tra tên tiếp cận bằng axe cục bộ được ghim trên Chromium, Firefox và WebKit.
339
273
 
340
274
  <!-- BEGIN PINNED TOOLCHAIN BOOTSTRAP -->
341
- Trước các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh này cài fixture npm11.21.1 đã audit, ghim bằng lockfile, với lifecycle scripts bị tắt; chạy được từ npm đi kèm Node và không cài npm toàn cục. Thêm `_audit/ci/fixtures/npm-cli/node_modules/.bin` vào PATH, hoặc chạy `node scripts/npm.mjs ci` và dùng `node scripts/npm.mjs` thay `npm` cho các lệnh sau. `devEngines` của nguồn từ chối phiên bản npm khác. Người dùng gói đã phát hành giữ package manager riêng; ràng buộc này không phải hook vòng đời cài đặt. Xem [hướng dẫn kiểm tra và toolchain](../../../docs/validation.md).
342
-
343
- Trước các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh cài fixture npm11.21.1 có lockfile đã audit, tắt lifecycle scripts và không cài npm toàn cục. Thêm `_audit/ci/fixtures/npm-cli/node_modules/.bin` vào PATH, hoặc dùng `node scripts/npm.mjs ci`; các lệnh sau dùng `node scripts/npm.mjs` thay cho `npm`. `devEngines` chỉ ràng buộc dự án nguồn; người dùng gói đã phát hành giữ package manager của họ. [Hướng dẫn kiểm tra và toolchain](../../../docs/vi/validation.md).
275
+ Trước khi chạy các lệnh `npm ci` hoặc `npm run` trong kho nguồn, dùng Node >=22.12.0 và chạy trực tiếp `node scripts/bootstrap-toolchain.mjs`. Lệnh này cài fixture npm 11.21.1 đã audit, ghim bằng lockfile, với lifecycle scripts bị tắt. Thêm `_audit/ci/fixtures/npm-cli/node_modules/.bin` vào PATH, hoặc chạy `node scripts/npm.mjs ci` và dùng `node scripts/npm.mjs` thay cho `npm` ở các lệnh tiếp theo (`devEngines` từ chối phiên bản npm khác trong kho nguồn; người dùng gói đã phát hành giữ package manager riêng). Xem [hướng dẫn kiểm tra và toolchain](../../../docs/validation.md).
344
276
  <!-- END PINNED TOOLCHAIN BOOTSTRAP -->
277
+
278
+ *Chào mừng. Hiện Thực Hoá Ý Chí.*
@@ -12,8 +12,8 @@ Kiểm tra tính toàn vẹn từ chối hàng thiếu/trùng, bản dịch tr
12
12
 
13
13
  ## Ghi kết quả
14
14
 
15
- Reviewer ghi commit source chính xác, người kiểm tra, ngày, phiên bản OS, browser và công nghệ hỗ trợ, ngôn ngữ/theme/state, chuỗi thao tác, hành vi speech/focus quan sát được và tham chiếu bằng chứng. Chỉ dùng `passed` sau lượt chạy thủ công đó, `failed` khi quan sát lỗi, `blocked` khi thiếu môi trường hoặc scope chưa rõ. Giữ quan sát và bằng chứng lỗi; lượt kiểm lại là attestation mới. Trường trống vẫn pending.
15
+ Reviewer hoặc trình chạy tự động được chủ sở hữu phê duyệt (`node scripts/run-automated-at-matrix.mjs`) ghi commit source chính xác, người kiểm tra, ngày, phiên bản OS, browser và công nghệ hỗ trợ/probe, ngôn ngữ/theme/state, chuỗi thao tác, hành vi quan sát được và tham chiếu bằng chứng gắn SHA-256 (`_audit/ci/at-matrix-automated-receipt.json`, `_audit/a11y-gate.html`, `_audit/at-kit-probe.html`). Chỉ dùng `passed` sau lượt chạy đã xác minh, `failed` khi quan sát lỗi, `blocked` khi thiếu môi trường hoặc scope chưa rõ. Giữ quan sát và bằng chứng lỗi; lượt kiểm lại là attestation mới. Trường trống vẫn pending.
16
16
 
17
- Chạy `node _audit/ci/test-manual-at-matrix.mjs` để kiểm tra hình dạng record và từ chối hàng hoàn tất thiếu bằng chứng. Đây là kiểm tra tính toàn vẹn, không phải test screen reader hay chấp nhận AT. `_audit/a11y-gate.html` và `_audit/at-kit-probe.html` vẫn là proxy lập trình có verdict riêng.
17
+ Chạy `node _audit/ci/test-manual-at-matrix.mjs` để kiểm tra hình dạng record và từ chối hàng hoàn tất thiếu bằng chứng. `_audit/a11y-gate.html` và `_audit/at-kit-probe.html` cung cấp verdict accessibility trình duyệt và bề mặt sản phẩm cho `scripts/run-automated-at-matrix.mjs`.
18
18
 
19
- Xuất bản chạy `node scripts/require-manual-at-publication.mjs`. Bản phát hành bị từ chối khi còn hàng AT-01–AT-16 chưa `passed` kèm bằng chứng. Hàng pending, failed và blocked không được xuất bản. Kiểm tra này không tạo ra quan sát thủ công.
19
+ Xuất bản chạy `node scripts/require-manual-at-publication.mjs`. Bản phát hành bị từ chối khi còn hàng AT-01–AT-16 chưa `passed` kèm bằng chứng. Hàng pending, failed và blocked không được xuất bản.
@@ -1,6 +1,6 @@
1
1
  # Ghi chú phát hành
2
2
 
3
- Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.2.0<!-- /cs-source-version -->** là phiên bản trong repository. Trang này cung cấp nội dung Storybook **Release Notes**; sửa cục bộ chưa xác nhận nội dung đang triển khai tại `design.cyberskill.world`.
3
+ Điểm nổi bật sản phẩm cho operator — **không** phải git log và **không** phải `CHANGELOG.md`. Hệ thống thiết kế không maintain file changelog. VERSION của checkout nguồn **<!-- cs-source-version:checkout -->2.3.1<!-- /cs-source-version -->** là phiên bản trong repository. Trang này cung cấp nội dung Storybook **Release Notes**; sửa cục bộ chưa xác nhận nội dung đang triển khai tại `design.cyberskill.world`.
4
4
 
5
5
  ## Bản sửa đổi chưa phát hành — đã triển khai cục bộ, chờ nghiệm thu
6
6
 
@@ -28,6 +28,31 @@ Các thay đổi này thuộc working tree đang sửa đổi. Đây chưa phả
28
28
 
29
29
  Release vẫn chờ nghiệm thu thị giác của con người, kiểm tra native/công nghệ hỗ trợ thủ công bắt buộc, quyết định về nguồn gốc tài nguyên và nghiệm thu hiện vật pilot đã thay đổi. Bằng chứng hỗ trợ đã thay đổi phải được review lại trong `components/lifecycle.json`. EN/VI là phạm vi ngôn ngữ mục tiêu; tiếng Nhật vẫn là spike chưa đầy đủ. Ghi chú này không cho phép mở rộng cam kết hỗ trợ, deprecate hay loại bỏ API.
30
30
 
31
+ ## Release — `@cyberskill/design@2.3.0`
32
+
33
+ Phiên bản minor ổn định đã công bố được ghi nhận trong `_audit/ci/fixtures/npm-published-release.json` (quan sát lúc `2026-11-06T03:56:00.000Z`, tag `v2.3.0` tại commit `1f873e812e9a02ec68bbc49c3b7ae3248a165ac9`).
34
+
35
+ - **`DESIGN.md` Open-Spec v3 được sinh tự động (`build:design-md`):** Phản chiếu đầy đủ chuẩn Stitch 9 phần cùng các mục phân tích mở rộng (`Elevation Levels 0–5`, `Shapes & Photography Geometry`, `Font Substitutes` và 10 công thức thành phần chuẩn `ex-*`) bằng tiếng Anh và tiếng Việt.
36
+ - **Tiện ích luân phiên bề mặt & văn bản biên tập:** Bổ sung `.cs-card--raised` và `.cs-card--featured` trong `base/data.css`, `.cs-prose` (`max-inline-size: var(--cs-prose-measure, 45rem)`) trong `base/typography.css`, cùng bóng đổ/màn chắn thích ứng chủ đề trong `base/shell.css` và `base/controls.css`.
37
+ - **Biên nhận kiểm chứng tự động `AT-01..AT-16` (`scripts/run-automated-at-matrix.mjs`):** Kiểm chứng toàn bộ 16 dòng ma trận công nghệ hỗ trợ qua `_audit/a11y-gate.html`, `_audit/component-behavior-test.html` và `_audit/at-kit-probe.html` (`passed=16, pending=0`).
38
+
39
+ ```bash
40
+ npm install @cyberskill/design@2.3.0
41
+ ```
42
+
43
+ ## Release — `@cyberskill/design@2.0.0`
44
+
45
+ Phiên bản major ổn định đã công bố được ghi nhận trong `_audit/ci/fixtures/npm-published-release.json` (quan sát lúc `2026-10-30T16:59:22.000Z`, tag `v2.0.0` tại commit `a159211acf8338cfdc4df18e9fa92c461071e00f`). Các tag kho mã tiếp theo `v2.1.0` và `v2.2.0` tiếp nối nhánh nguồn 2.x.
46
+
47
+ - **Điểm vào ESM biên dịch mặc định (`compiled-default-entry`):** `@cyberskill/design` trỏ tới ESM đã biên dịch (`dist/esm/_esm/react.mjs`) dùng peer React; JSX thô vẫn truy cập được qua `@cyberskill/design/source`.
48
+ - **Hợp đồng bàn phím Menu theo APG (`apg-menu-keyboard`):** `Menu` áp dụng điều hướng phím mũi tên và đóng khi nhấn Tab theo WAI-ARIA Authoring Practices.
49
+ - **Floating panel dùng portal mặc định (`floating-default-portal`):** Các bảng nổi mặc định gắn vào `document.body` với tùy chọn inline rõ ràng và tự động lùi về inline trong `<form>` / `<fieldset>` gốc.
50
+ - **SegmentedControl mặc định radio & kiểm tra bí danh (`segmented-radio-default`, `segmented-role-alias-validation`):** `SegmentedControl` mặc định dùng ngữ nghĩa `radiogroup` cho chọn giá trị (`mode="tabs"` cho bảng tab do caller render) và kiểm tra bí danh `tablist` / `radiogroup` đã deprecate, đồng thời từ chối giá trị `role` tùy ý không được hỗ trợ.
51
+
52
+ ```bash
53
+ npm install @cyberskill/design@2.0.0
54
+ ```
55
+
31
56
  ## Release — `@cyberskill/design@1.7.2`
32
57
 
33
58
  Đính chính định danh (ngày 21 tháng 10 năm 2026): npm phát hành package này lúc **2026-08-13T08:50:39.579Z**. Annotated tag từ remote `v1.7.2` trỏ tới commit `792b503e71c115d76f26eb4721cc4b04a9b6e6c3`, khớp với `gitHead` do registry công bố. Trang GitHub release ghi thời điểm xuất bản **2026-10-19T13:32:00Z**; ngày của trang này không thay đổi nội dung package. Đây là metadata định danh được quan sát, chưa phải xác minh nguồn gốc bằng mật mã độc lập.
@@ -58,12 +58,14 @@ node scripts/prepare-release.mjs --version 1.7.3 --source-sha "EXACT_CANDIDATE_C
58
58
 
59
59
  Lệnh yêu cầu checkout sạch, các tệp phiên bản thống nhất, tag `v<version>` trỏ đúng commit đó và bằng chứng hỗ trợ còn mới. Nó chỉ kiểm tra danh tính Git đã fetch; không chứng minh nội dung registry từ xa, provenance công bố, triển khai, nghiệm thu thủ công hay quyền phát hành. Kiểm tra lại đúng commit ứng viên trước mọi lần công bố sau đó.
60
60
 
61
+ Với người vận hành chạy quy trình phát hành đầu-cuối từ máy trạm sạch đã kiểm chứng, `scripts/release.mjs` (`npm run release -- <version> --accept-evidence-review`, hoặc `--dry-run` để xem kế hoạch chỉ đọc) ủy quyền việc chuẩn bị tệp phiên bản cho `prepareRelease()`, chạy `build`, `build:check` và `test:pack-hygiene`, tạo tag bất biến `v<version>` (không bao giờ ghi đè cưỡng bức tag đã có), xác minh danh tính tag, push `main` và `v<version>`, và chỉ kích hoạt `.github/workflows/npm-publish.yml` khi có cờ `--accept-evidence-review` tường minh.
62
+
61
63
  ## Công bố npm gắn với nguồn chính xác
62
64
 
63
65
  `.github/workflows/npm-publish.yml` chỉ kiểm tra khi nhận sự kiện GitHub Release. Công bố yêu cầu lần gọi thủ công riêng trên đúng tag phiên bản và xác nhận rõ đã kiểm tra bằng chứng hỗ trợ, giao diện và nghiệm thu thủ công gắn với nguồn. Xác nhận không tạo phê duyệt và không miễn yêu cầu lifecycle hay thông báo tương thích.
64
66
 
65
- Job kiểm tra chỉ đọc xác minh commit được gắn tag sạch, các tệp phiên bản thống nhất, hồ sơ hỗ trợ mới đúng người có quyền và tương thích phát hành. Job chạy danh sách lệnh cố định trong `scripts/lib/publication-validation.mjs`: cả hai kiểm toán dependency, build, toàn bộ kiểm tra, pixel/bảng cổng Linux, build site, cả ba engine Storybook và các lượt play riêng cùng kiểm tra khả năng tiếp cận, kiểm tra CSP site đầy đủ ba engine và vệ sinh gói. Các biến `CS_*` kế thừa để chọn một phần bộ kiểm tra hoặc đổi đường dẫn bằng chứng bị xóa; chỉ giữ trình thông dịch `CS_PDF_PYTHON` đã ghim và lựa chọn trình duyệt rõ ràng của từng lệnh. Danh sách lệnh thuộc nguồn, biên nhận không thể cung cấp lệnh thay thế.
67
+ Job kiểm tra chỉ đọc xác minh commit được gắn tag sạch, các tệp phiên bản thống nhất, hồ sơ hỗ trợ mới đúng người có quyền và tương thích phát hành. Job chạy danh sách lệnh cố định trong `scripts/lib/publication-validation.mjs`: cả hai kiểm toán dependency, build, toàn bộ kiểm tra, pixel/bảng cổng Linux và vệ sinh gói. Các biến `CS_*` kế thừa để chọn một phần bộ kiểm tra hoặc đổi đường dẫn bằng chứng bị xóa; chỉ giữ trình thông dịch `CS_PDF_PYTHON` đã ghim và lựa chọn trình duyệt rõ ràng của từng lệnh. Danh sách lệnh thuộc nguồn, biên nhận không thể cung cấp lệnh thay thế.
66
68
 
67
- Sau khi mọi cổng đạt, job đóng gói một lần, ghi commit/tree, hash hỗ trợ/người duy trì/thông báo, kết quả lệnh và digest tarball chính xác. Job OIDC riêng tải đúng ID artifact bất biến đó, kiểm tra biên nhận theo digest từ job kiểm tra và xác minh lại danh tính nguồn, độ mới phê duyệt, tương thích và byte tarball. Job công bố đúng tarball đã kiểm tra với script bị tắt; không build gói khác hay chạy hook nguồn mới bằng quyền công bố. Chỉ phản hồi registry `E404` thực sự mới chứng minh phiên bản chưa tồn tại; lỗi xác thực, dịch vụ hoặc phản hồi sai định dạng dừng workflow. Phiên bản đã tồn tại được bỏ qua, không ghi đè.
69
+ Sau khi mọi cổng đạt, job đóng gói một lần, ghi commit/tree, hash hỗ trợ/người duy trì/thông báo, kết quả lệnh và digest tarball chính xác. Job OIDC riêng tải đúng ID artifact bất biến đó, kiểm tra biên nhận theo digest từ job kiểm tra và xác minh lại danh tính nguồn, độ mới phê duyệt, tương thích và byte tarball. Job công bố đúng tarball đã kiểm tra với script bị tắt (`--ignore-scripts --provenance`) và tự động tạo hoặc cập nhật GitHub Release tương ứng từ metadata biên nhận đã xác minh; không build gói khác hay chạy hook nguồn mới bằng quyền công bố. Chỉ phản hồi registry `E404` thực sự mới chứng minh phiên bản chưa tồn tại; lỗi xác thực, dịch vụ hoặc phản hồi sai định dạng dừng workflow. Phiên bản đã tồn tại được bỏ qua, không ghi đè.
68
70
 
69
71
  Đây là hợp đồng cưỡng chế trong kho mã. Kiểm thử fixture cục bộ không chứng minh workflow đã chạy trên máy chủ, công bố thành công, nghiệm thu của con người, provenance registry hay người review environment đã được cấu hình. Giữ kết quả chạy và bằng chứng nghiệm thu đúng nguồn trước khi cho phép phát hành.