@cyberskill/design 2.8.0 → 2.9.0

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 (383) hide show
  1. package/DESIGN.md +7 -7
  2. package/README.md +14 -8
  3. package/SECURITY.md +4 -4
  4. package/SKILL.md +1 -1
  5. package/VERSION +1 -1
  6. package/_ds_bundle.js +2 -2
  7. package/_ds_bundle.js.map +1 -1
  8. package/_ds_manifest.json +210 -200
  9. package/_esm/cs.mjs +2 -2
  10. package/base/a11y.css +18 -2
  11. package/base/ai.css +2 -2
  12. package/base/collections.css +6 -3
  13. package/base/components.css +107 -20
  14. package/base/controls.css +55 -27
  15. package/base/data.css +17 -5
  16. package/base/feedback.css +8 -0
  17. package/base/forms.css +7 -4
  18. package/base/glass.css +95 -0
  19. package/base/navigation.css +9 -1
  20. package/base/responsive.css +9 -4
  21. package/components/contracts.json +202 -62
  22. package/components/css-index.json +145 -41
  23. package/components/data/data.card.html +1 -1
  24. package/components/prompt-api.json +2 -2
  25. package/components/release-compatibility.json +1 -1
  26. package/components/specifications.json +204 -64
  27. package/components/static-html-reference.json +20 -20
  28. package/dist/esm/build.json +1 -1
  29. package/dist/styles.css +385 -86
  30. package/dist/styles.min.css +1 -1
  31. package/docs/benchmark-rubric.md +1 -1
  32. package/docs/consuming.md +1 -1
  33. package/docs/contrast-report.md +8 -8
  34. package/docs/conventions.md +5 -5
  35. package/docs/decisions.md +2 -2
  36. package/docs/deploy.md +1 -1
  37. package/docs/design-styles.md +9 -8
  38. package/docs/doctrine.md +1 -1
  39. package/docs/four-axes.md +3 -3
  40. package/docs/quality-gates.md +3 -1
  41. package/docs/reference-catalog.json +52 -52
  42. package/docs/release-notes.md +18 -2
  43. package/docs/static-html-reference.md +18 -18
  44. package/docs/storybook.md +1 -1
  45. package/docs/template-inventory.json +35 -35
  46. package/docs/vi/benchmark-rubric.md +1 -1
  47. package/docs/vi/consuming.md +1 -1
  48. package/docs/vi/contrast-report.md +8 -8
  49. package/docs/vi/conventions.md +5 -5
  50. package/docs/vi/decisions.md +2 -2
  51. package/docs/vi/deploy.md +1 -1
  52. package/docs/vi/design-styles.md +9 -8
  53. package/docs/vi/doctrine.md +1 -1
  54. package/docs/vi/entrypoints/CONTRIBUTING.md +9 -2
  55. package/docs/vi/entrypoints/DESIGN.md +7 -7
  56. package/docs/vi/entrypoints/README.md +14 -8
  57. package/docs/vi/entrypoints/SKILL.md +1 -1
  58. package/docs/vi/entrypoints/llms.txt +1 -1
  59. package/docs/vi/four-axes.md +3 -3
  60. package/docs/vi/quality-gates.md +3 -1
  61. package/docs/vi/release-notes.md +18 -2
  62. package/docs/vi/static-html-reference.md +18 -18
  63. package/docs/vi/storybook.md +1 -1
  64. package/guidance/agent-contract.json +3 -3
  65. package/guidelines/atomic-view.html +7 -7
  66. package/guidelines/brand-imagery.html +1 -1
  67. package/guidelines/colors-surfaces.html +4 -4
  68. package/guidelines/colors-text.html +4 -4
  69. package/guidelines/elements-components.html +3 -3
  70. package/guidelines/elements-concept.html +1 -1
  71. package/guidelines/guideline-language.js +1 -1
  72. package/guidelines/motion.html +4 -4
  73. package/guidelines/responsive-bilingual.html +4 -4
  74. package/llms.txt +1 -1
  75. package/package.json +1 -1
  76. package/styles/components/manifest.json +179 -139
  77. package/styles.layered.css +245 -59
  78. package/styles.layered.provenance.json +16 -16
  79. package/templates/_vendor/doc-export.js +8 -1
  80. package/templates/ai-cluster-demo.html +2 -2
  81. package/templates/app-shell/AppShell.dc.html +2 -2
  82. package/templates/bod-deck/BodDeck.dc.html +3 -3
  83. package/templates/bod-investor-update/BodInvestorUpdate.dc.html +1 -1
  84. package/templates/dashboard/Dashboard.dc.html +2 -2
  85. package/templates/delivery-qbr-deck/DeliveryQbrDeck.dc.html +2 -2
  86. package/templates/delivery-status-email/DeliveryStatusEmail.dc.html +1 -1
  87. package/templates/email/Email-VN-standalone.html +2 -2
  88. package/templates/email-safe/email-announcement.html +5 -5
  89. package/templates/email-safe/email-dunning.html +5 -5
  90. package/templates/email-safe/email-investor.html +5 -5
  91. package/templates/email-safe/email-launch.html +5 -5
  92. package/templates/email-safe/email-newsletter.html +6 -6
  93. package/templates/email-safe/email-status.html +5 -5
  94. package/templates/email-safe/email-transactional.html +5 -5
  95. package/templates/kitchen-sink.html +10 -6
  96. package/templates/marketing-newsletter/MarketingNewsletter.dc.html +4 -4
  97. package/templates/marketing-page/MarketingPage.dc.html +4 -2
  98. package/templates/playground.html +5 -4
  99. package/templates/sales-proposal-deck/SalesProposalDeck.dc.html +5 -5
  100. package/tokens/colors.css +1 -1
  101. package/tokens/declarations.json +1851 -1355
  102. package/tokens/element-seeds.json +1 -1
  103. package/tokens/elements.css +40 -10
  104. package/tokens/elevation.css +2 -2
  105. package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
  106. package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
  107. package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
  108. package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
  109. package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  110. package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  111. package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
  112. package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
  113. package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  114. package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  115. package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
  116. package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  117. package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
  118. package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
  119. package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
  120. package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
  121. package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
  122. package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  123. package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
  124. package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
  125. package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  126. package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  127. package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
  128. package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
  129. package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
  130. package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
  131. package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
  132. package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
  133. package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  134. package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  135. package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
  136. package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  137. package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
  138. package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  139. package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
  140. package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
  141. package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
  142. package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
  143. package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
  144. package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
  145. package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
  146. package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  147. package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
  148. package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
  149. package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
  150. package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  151. package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
  152. package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
  153. package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
  154. package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
  155. package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
  156. package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
  157. package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  158. package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  159. package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
  160. package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
  161. package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  162. package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  163. package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
  164. package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  165. package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
  166. package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
  167. package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
  168. package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
  169. package/tokens/modes/index.json +275 -275
  170. package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
  171. package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
  172. package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
  173. package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
  174. package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
  175. package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  176. package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
  177. package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
  178. package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  179. package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  180. package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
  181. package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
  182. package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
  183. package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
  184. package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
  185. package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
  186. package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
  187. package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
  188. package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
  189. package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
  190. package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
  191. package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  192. package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
  193. package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
  194. package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
  195. package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
  196. package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
  197. package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
  198. package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  199. package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  200. package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
  201. package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
  202. package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
  203. package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
  204. package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
  205. package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
  206. package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
  207. package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
  208. package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
  209. package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
  210. package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
  211. package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
  212. package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
  213. package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
  214. package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
  215. package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
  216. package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
  217. package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
  218. package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
  219. package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
  220. package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
  221. package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
  222. package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
  223. package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  224. package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
  225. package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
  226. package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  227. package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  228. package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
  229. package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
  230. package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
  231. package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
  232. package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
  233. package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
  234. package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
  235. package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
  236. package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
  237. package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
  238. package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  239. package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  240. package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
  241. package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
  242. package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  243. package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  244. package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
  245. package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  246. package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
  247. package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
  248. package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
  249. package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
  250. package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
  251. package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  252. package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
  253. package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
  254. package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  255. package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  256. package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
  257. package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
  258. package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
  259. package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
  260. package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
  261. package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
  262. package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  263. package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  264. package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
  265. package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  266. package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
  267. package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  268. package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
  269. package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
  270. package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
  271. package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
  272. package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
  273. package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
  274. package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
  275. package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  276. package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
  277. package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
  278. package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
  279. package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  280. package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
  281. package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
  282. package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
  283. package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
  284. package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
  285. package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
  286. package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  287. package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  288. package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
  289. package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
  290. package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  291. package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  292. package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
  293. package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  294. package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
  295. package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
  296. package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
  297. package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
  298. package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
  299. package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
  300. package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
  301. package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
  302. package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
  303. package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  304. package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
  305. package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
  306. package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  307. package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  308. package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
  309. package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
  310. package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
  311. package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
  312. package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
  313. package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
  314. package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
  315. package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
  316. package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
  317. package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
  318. package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
  319. package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  320. package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
  321. package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
  322. package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
  323. package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
  324. package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
  325. package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
  326. package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  327. package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  328. package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
  329. package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
  330. package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
  331. package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
  332. package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
  333. package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
  334. package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
  335. package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
  336. package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
  337. package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
  338. package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
  339. package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
  340. package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
  341. package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
  342. package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
  343. package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
  344. package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
  345. package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
  346. package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
  347. package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
  348. package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
  349. package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
  350. package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
  351. package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  352. package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
  353. package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
  354. package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  355. package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  356. package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
  357. package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
  358. package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
  359. package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
  360. package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
  361. package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
  362. package/tokens/native/CSModes.kt +129 -125
  363. package/tokens/native/CSModes.swift +129 -125
  364. package/tokens/native/CSTokens.kt +8 -8
  365. package/tokens/native/CSTokens.swift +8 -8
  366. package/tokens/native/cs_modes.dart +129 -125
  367. package/tokens/native/cs_tokens.dart +8 -8
  368. package/tokens/native/mode-provenance.json +11 -11
  369. package/tokens/provenance.json +6 -6
  370. package/tokens/styles.css +8 -4
  371. package/tokens/tokens.dtcg.json +26 -26
  372. package/tokens/tokens.js +12 -12
  373. package/tokens/tokens.json +11 -11
  374. package/tokens/variables.css +48 -15
  375. package/tokens/viewer.html +1 -0
  376. package/ui_kits/status-hub/login.html +3 -3
  377. package/ui_kits/status-hub/project.html +4 -6
  378. package/ui_kits/status-hub/settings.html +2 -3
  379. package/ui_kits/status-hub/status.css +24 -15
  380. package/ui_kits/website/careers.html +10 -17
  381. package/ui_kits/website/chat.html +14 -3
  382. package/ui_kits/website/site.css +21 -21
  383. package/ui_kits/website/work.html +4 -10
@@ -19,7 +19,7 @@ Storybook **10** là **site sản phẩm** cho operator trên `design.cyberskill
19
19
  - `States` (hoặc subsection Matrix) cho `disabled` / `loading` / `error` / `busy` khi có argTypes
20
20
  - Mọi option enum `size` / `variant` gắn trong story họ matrix
21
21
  - `FullMatrix` khi ≥1 trong {size enums, variant enums, state keys} — tích size × variant × key-state qua helper `stories/lib/matrix.jsx`
22
- - Toolbar globals: Theme (light · dark · **system**) × Element × Language × Style (cùng trục với templates / Atomic View). Element liệt kê **đủ 15** pack Ngũ Hành. Style chỉ có **liquid-glass**.
22
+ - Toolbar globals: Theme (light · dark · **system**) × Element × Language (`vi` · `en`) × Style (`liquid-glass` · `matte-paper`; cùng trục với templates / Atomic View). Element liệt kê **đủ 15** pack Ngũ Hành.
23
23
  - **Docs/** tài liệu operator đã xuất bản — **Start / Guides / Maintainers**, MDX curated, một story sidebar mỗi trang markdown trong danh mục công khai, và iframe Thư viện tài liệu `/docs/viewer.html` (EN·VI). Prose canonical vẫn `docs/*.md`. **Release Notes/** prose curated (**không CHANGELOG.md**); **Status/** embed `_audit/run.html` full-bleed
24
24
  - **Templates/** điểm bắt đầu công khai — Gallery (tier Templates của Atomic View + kitchen-sink/playground) và mọi template manifest theo category Atomic View (gồm **HR** / `vn-*`). Regen CSF bằng `node scripts/generate-template-stories.mjs` sau khi đổi tên template
25
25
  - **Pages/** UI kit công khai (Status Hub, Marketing site, Slide deck)
@@ -3,7 +3,7 @@
3
3
  "interpretation": "Generated policy/routing projection, not runtime, host-loading, human acceptance or release certification.",
4
4
  "sourceHashes": {
5
5
  "scripts/guidance-source.json": "1e8d71a99895dac5a42b41424a42e3b6b8b82cd421e04c553c52581d33d44b9e",
6
- "docs/doctrine.md": "25b5c51ba0bb38b8486b625124dcf6b90af8ac97e7518ab2cd92ff10b84eef54"
6
+ "docs/doctrine.md": "bc1a734b83fdb24da396a57099bdb1a5ff5ecb04d4034e98169dd99090c3aca0"
7
7
  },
8
8
  "authorities": {
9
9
  "entry": "SKILL.md",
@@ -65,11 +65,11 @@
65
65
  "Language": "Vietnamese-first; every UI string ships an EN + VN pair",
66
66
  "Accessibility floor": "APCA Lc ≥ 75 body text; focus rings never removed; ≥ 44px touch targets",
67
67
  "Axes": "Theme × Element × Language × Style (independent)",
68
- "Style pack": "liquid-glass (sole pack; absent ≡ default)"
68
+ "Style pack": "liquid-glass (default; absent ≡ default) · matte-paper"
69
69
  },
70
70
  "normative": {
71
71
  "Expansion rule": "When **anything** in this system grows, update **every deliverable in the same change**:\n\n1. Tokens and source (`tokens/`, component `.jsx` + `.d.ts` + `.prompt.md`).\n2. Specimen cards (guidelines plus the component group card) **and any related guideline pages**.\n3. **All** templates (tweak enums, EL/EX maps, swept accents).\n4. UI kits — Thổ-faithful kit pages; axis demos via Storybook toolbar and Atomic View (Identity Lab is retired).\n5. Docs: README (counts follow `docs/reference-catalog.json`), `SKILL.md`, this file, `docs/conventions.md`, **and every related document the change touches** (kit READMEs, `docs/products.md`, `docs/contrast-report.md` regeneration after token changes). Publish the same pages through Storybook Docs (see `docs/storybook.md`). **Do not maintain a changelog file** — track `VERSION`. Continuity is git history plus curated Release Notes.\n6. Browsable and health surfaces: a new or changed component gets an Atomic View story in `guidelines/atomic-view.html` (plus a live playground if it has tweakable props — `_audit/story-coverage.html` enforces the story) and behavior coverage in `_audit/component-behavior-test.html` if interactive; any new axis, tool, or tab is wired into `_audit/index.html` and Storybook **Status** (full-bleed `_audit/run.html` — `dashboard.html` is redirect-only); the matching deterministic gate is added or updated (`contrast-guard` for new colour rules, `token-contract` plus the contrast matrix for tokens, `story-coverage` for components, `docs-storybook-coverage` for published docs).\n\n**Gate:** `_audit/run.html` (all fast gates, including `docs-consistency`) green **plus** `npm run test:unit` **plus** a source search for the old enum or list to prove nothing was left behind. Sessions with an external Design Components compiler additionally run its `check_design_system`; this is not an in-repository command.\n\nDocumented scope boundaries (doctrine, not gaps): UI-kit pages remain Thổ-faithful recreations; bilingual EN·VN covers emails plus team, legal, and finance docs (client and media collateral is EN-first); text never sits on the mid-tone `-accent`.",
72
72
  "Verification depth": "Deep checks, never surface spot-checks. Cover the **whole set and every relevant state** — not a sample. Prefer deterministic, programmatic scans that touch **every** item (for example EN/VI key-parity, hole-coverage, and leak scan across all templates; computed-style and overflow probes at every breakpoint via the `_audit/` harnesses using `__dcSetProps` for each declared language/theme prop and verifying the rendered state; `__dc_theme` changes only the optional authoring canvas background), then add representative visual or export confirmation on top. A few screenshots are evidence, not proof. Never call work verified because it was “spot-checked” when a complete check is feasible; if a full check truly is not feasible, say so explicitly and state what was and was not covered. Language, theme, and responsive states each get their own pass — one language, width, or theme rendering cleanly is not evidence for the others.",
73
- "Immutables": "| Immutable | Value |\n|---|---|\n| Slogan | *Turn Your Will Into Real* / *Hiện Thực Hoá Ý Chí* |\n| Primary brand | Umber `#45210E` |\n| Primary accent | Ochre `#F4BA17` |\n| Voice | warm · direct · honest · respectful (all four at once) |\n| Language | Vietnamese-first; every UI string ships an EN + VN pair |\n| Accessibility floor | APCA Lc ≥ 75 body text; focus rings never removed; ≥ 44px touch targets |\n| Axes | Theme × Element × Language × Style (independent) |\n| Style pack | liquid-glass (sole pack; absent ≡ default) |\n\nOne accent per surface. Semantic statuses and the composite focus indicator (text-primary contour + ochre halo) are never elemental. Lumi stays golden in every element."
73
+ "Immutables": "| Immutable | Value |\n|---|---|\n| Slogan | *Turn Your Will Into Real* / *Hiện Thực Hoá Ý Chí* |\n| Primary brand | Umber `#45210E` |\n| Primary accent | Ochre `#F4BA17` |\n| Voice | warm · direct · honest · respectful (all four at once) |\n| Language | Vietnamese-first; every UI string ships an EN + VN pair |\n| Accessibility floor | APCA Lc ≥ 75 body text; focus rings never removed; ≥ 44px touch targets |\n| Axes | Theme × Element × Language × Style (independent) |\n| Style pack | liquid-glass (default; absent ≡ default) · matte-paper |\n\nOne accent per surface. Semantic statuses and the composite focus indicator (text-primary contour + ochre halo) are never elemental. Lumi stays golden in every element."
74
74
  }
75
75
  }
@@ -31,8 +31,9 @@
31
31
  .motion-embed{border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-lg);overflow:hidden;background:var(--cs-color-surface-panel);margin:16px 0}
32
32
  .motion-embed iframe{width:100%;height:352px;border:0;display:block;background:var(--cs-color-surface-page)}
33
33
  main{min-width:0}
34
- .toolbar{position:sticky;top:1px;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;padding:12px 22px;background:color-mix(in oklab,var(--cs-color-surface-panel) 88%,transparent);backdrop-filter:blur(8px);border-block-end:1px solid var(--cs-color-border-default)}
35
- @media (prefers-reduced-transparency: reduce){.toolbar{backdrop-filter:none;background:var(--cs-color-surface-panel)}}
34
+ .toolbar{position:sticky;top:1px;z-index:20;display:flex;flex-wrap:wrap;align-items:center;gap:14px 18px;padding:12px 22px;background:color-mix(in oklab,var(--cs-color-surface-panel) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-block-end:1px solid var(--cs-color-border-default)}
35
+ @media (prefers-reduced-transparency: reduce){.toolbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--cs-color-surface-panel)}}
36
+ [data-cs-style="matte-paper"] .toolbar{-webkit-backdrop-filter:none;backdrop-filter:none;background:var(--cs-color-surface-panel)}
36
37
  .toolbar h1{font-size:15px;margin:0;letter-spacing:-.01em}
37
38
  .ctl{display:flex;align-items:center;gap:7px;font-size:12px;color:var(--cs-color-text-muted)}
38
39
  .ctl select{font:inherit;font-size:12.5px;padding:5px 8px;border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-sm);background:var(--cs-color-surface-panel);color:var(--cs-color-text-primary)}
@@ -56,7 +57,6 @@
56
57
  .framed .cs-dialog{top:22px}
57
58
  .srow{display:flex;flex-wrap:wrap;align-items:flex-start;gap:12px}
58
59
  #canvas button:not(.cs-switch){min-block-size:32px;max-block-size:52px}
59
- @media (max-width:768px),(min-width:1024px){:root,body,#canvas{--cs-font-weight-medium:600;--cs-font-weight-semibold:600;--cs-font-weight-extrabold:700}.brand,.navtier,.navsub,.grphead,.tierhead,.cs-stat__value{font-weight:700}.cs-combobox input,.cs-igroup>input,.cs-taginput>input,.cs-cal__grid button,.cs-datepicker__field,.cs-treeselect__field,.cs-cascader__opt,.cs-terminal__body,[style*="font-weight: 500"],[style*="font-weight:500"]{font-weight:600!important}[style*="font-weight: 800"],[style*="font-weight:800"]{font-weight:700!important}}
60
60
  .srow .cs-slider{inline-size:160px;flex:none!important}
61
61
  .srow button,.srow a,.cs-datagrid__sort,.cs-navmenu__top{white-space:nowrap}
62
62
  .cs-datagrid thead th{inset-block-start:1px}
@@ -389,7 +389,7 @@ const STORIES = [
389
389
  { tier:"Organism", name:"DataGrid", grp:"Data", render:(L)=> <GridD L={L}/> },
390
390
  { tier:"Organism", name:"TreeTable", grp:"Data", render:(L)=> has(TreeTable)?<TreeTable defaultExpanded={["p"]} columns={[{key:"name",header:L==="vi"?"Hạng mục":"Item"},{key:"pct",header:L==="vi"?"Tiến độ":"Progress"}]} nodes={[{key:"p",name:L==="vi"?"Nền tảng":"Platform",pct:"70%",children:[{key:"ds",name:"Design System",pct:"72%"},{key:"tok",name:"Token Pipeline",pct:"66%"}]},{key:"ai",name:"AI",pct:"58%",children:[{key:"lumi",name:"Lumi Genie",pct:"58%"}]}]}/>:<Miss n="TreeTable"/> },
391
391
  { tier:"Organism", name:"Sortable", grp:"Data", render:(L)=> <SortD L={L}/> },
392
- { tier:"Organism", name:"Masonry", grp:"Data", render:(L)=> has(Masonry)?<Masonry columns={3} gap={12}>{[64,110,80,140,72,96].map((h,i)=><div key={i} style={{height:h,background:"var(--cs-accent-tint)",border:"1px solid var(--cs-color-border-default)",borderRadius:"var(--cs-radius-md)",display:"grid",placeItems:"center",fontSize:12,color:"var(--cs-color-text-muted)"}}>{(L==="vi"?"Thẻ ":"Card ")+(i+1)}</div>)}</Masonry>:<Miss n="Masonry"/> },
392
+ { tier:"Organism", name:"Masonry", grp:"Data", render:(L)=> has(Masonry)?<Masonry columns={3} gap={12}>{[64,110,80,140,72,96].map((h,i)=><div key={i} style={{height:h,background:"var(--cs-color-surface-raised)",border:"1px solid var(--cs-color-border-default)",borderRadius:"var(--cs-radius-md)",display:"grid",placeItems:"center",fontSize:12,color:"var(--cs-color-text-muted)"}}>{(L==="vi"?"Thẻ ":"Card ")+(i+1)}</div>)}</Masonry>:<Miss n="Masonry"/> },
393
393
  { tier:"Organism", name:"Splitter", grp:"Data", render:(L)=> has(Splitter)?<Splitter height={170} initial={45} start={<div style={{fontSize:13,color:"var(--cs-color-text-muted)"}}>{L==="vi"?"Khung trái — kéo thanh chia.":"Left pane — drag the divider."}</div>} end={<div style={{fontSize:13,color:"var(--cs-color-text-muted)"}}>{L==="vi"?"Khung phải.":"Right pane."}</div>}/>:<Miss n="Splitter"/> },
394
394
  { tier:"Organism", name:"HotKeys", grp:"Navigation", render:(L)=> has(HotKeys,Kbd)?<HotKeys bindings={[{keys:"mod+k",description:L==="vi"?"Bảng lệnh":"Command palette"},{keys:"mod+s",description:L==="vi"?"Lưu":"Save"}]}><span style={{fontSize:13,color:"var(--cs-color-text-muted)"}}>{L==="vi"?"Nhấn ":"Press "}<Kbd>?</Kbd>{L==="vi"?" để xem phím tắt.":" for the shortcut sheet."}</span></HotKeys>:<Miss n="HotKeys"/> },
395
395
  { tier:"Organism", name:"Dock", grp:"Navigation", render:(L)=> has(Dock,Icon)?<Dock label="Apps" items={[{icon:<Icon name="chat"/>,label:"Lumi",active:true},{icon:<Icon name="calendar"/>,label:L==="vi"?"Lịch":"Calendar"},{icon:<Icon name="sliders"/>,label:L==="vi"?"Cài đặt":"Settings"},{icon:<Icon name="search"/>,label:L==="vi"?"Tìm kiếm":"Search"}]}/>:<Miss n="Dock"/> },
@@ -418,7 +418,7 @@ const STORIES = [
418
418
 
419
419
  { tier:"Organism", name:"OverlayProvider", grp:"Overlays", framed:true, render:(L)=> has(OverlayProvider,Dialog,Button)?<OverlayProvider><p style={{fontSize:13,color:"var(--cs-color-text-muted)",maxInlineSize:"var(--cs-prose-measure,45rem)"}}>{L==="vi"?"Provider gắn #cs-overlay-root và xếp chồng Escape/scroll-lock cho modal lồng nhau.":"Provider mounts #cs-overlay-root and stacks Escape/scroll-lock for nested modals."}</p><DialogDemo title="Nested-safe dialog" startOpen={false}/></OverlayProvider>:<Miss n="OverlayProvider"/> },
420
420
 
421
- { tier:"Organism", name:"Popover", grp:"Overlays", framed:true, controls:[{k:"trigger",type:"text",def:"Filter ▾"}], renderC:(v)=> has(Popover,Button,RadioGroup)?<div style={{padding:16}}><Popover open={true} onOpenChange={()=>{}} trigger={<Button variant="secondary" size="sm">{v.trigger}</Button>}><RadioGroup legend="Status" defaultValue="active" options={[{value:"active",label:"In progress"},{value:"done",label:"Shipped"}]}/></Popover></div>:<Miss n="Popover"/>, render:(L)=> has(Popover,Button,RadioGroup)?<div style={{padding:16}}><Popover open={true} onOpenChange={()=>{}} trigger={<Button variant="secondary" size="sm">{L==="vi"?"Lọc ▾":"Filter ▾"}</Button>}><RadioGroup legend={L==="vi"?"Trạng thái":"Status"} defaultValue="active" options={L==="vi"?[{value:"active",label:"Đang làm"},{value:"done",label:"Đã ra mắt"},{value:"hold",label:"Bị chặn"}]:[{value:"active",label:"In progress"},{value:"done",label:"Shipped"},{value:"hold",label:"Blocked"}]}/></Popover></div>:<Miss n="Popover"/> },
421
+ { tier:"Organism", name:"Popover", grp:"Overlays", framed:true, controls:[{k:"trigger",type:"text",def:"Filter ▾"}], renderC:(v)=> has(Popover,Button,RadioGroup)?<div style={{padding:16}}><Popover portal={false} open={true} onOpenChange={()=>{}} trigger={<Button variant="secondary" size="sm">{v.trigger}</Button>}><RadioGroup legend="Status" defaultValue="active" options={[{value:"active",label:"In progress"},{value:"done",label:"Shipped"}]}/></Popover></div>:<Miss n="Popover"/>, render:(L)=> has(Popover,Button,RadioGroup)?<div style={{padding:16}}><Popover portal={false} open={true} onOpenChange={()=>{}} trigger={<Button variant="secondary" size="sm">{L==="vi"?"Lọc ▾":"Filter ▾"}</Button>}><RadioGroup legend={L==="vi"?"Trạng thái":"Status"} defaultValue="active" options={L==="vi"?[{value:"active",label:"Đang làm"},{value:"done",label:"Đã ra mắt"},{value:"hold",label:"Bị chặn"}]:[{value:"active",label:"In progress"},{value:"done",label:"Shipped"},{value:"hold",label:"Blocked"}]}/></Popover></div>:<Miss n="Popover"/> },
422
422
  { tier:"Organism", name:"Conversation (PromptInput + ChatMessage)", grp:"AI-native", render:(L)=> has(ChatMessage)?<div style={{maxWidth:520}}><div className="cs-chat" style={{marginBottom:12}}><ChatMessage role="lumi">{L==="vi"?"Xin chào, mình là Lumi. Hãy nói điều ước của bạn — mình sẽ tư vấn thẳng thắn trước khi hỏi bất kỳ điều gì.":"Hello, I'm Lumi. Tell me a wish, and I'll share plain advice before asking for anything."}</ChatMessage><ChatMessage role="user">{L==="vi"?"Một trang thanh toán nhanh hơn.":"A faster checkout."}</ChatMessage><ChatMessage role="lumi">{L==="vi"?"Một điều ước đáng thực hiện — mình nên gọi bạn là gì?":"A wish worth granting — what should I call you?"}</ChatMessage></div><PromptD L={L}/></div>:<Miss n="ChatMessage"/> },
423
423
  { tier:"Organism", name:"HumanReviewGate", grp:"AI-native", controls:[{k:"risk",type:"text",def:"High-stakes · billing change"},{k:"summary",type:"text",def:"Move client to annual + prorated credit."},{k:"reviewer",type:"text",def:"Ops on call"}], renderC:(v)=> has(HumanReviewGate)?<div style={{maxWidth:520}}><HumanReviewGate risk={v.risk} summary={v.summary} reviewer={v.reviewer}/></div>:<Miss n="HumanReviewGate"/>, render:()=> has(HumanReviewGate)?<div style={{maxWidth:520}}><HumanReviewGate risk="High-stakes · billing change" summary="Lumi proposes moving this client to the annual plan and issuing a prorated credit." reviewer="Ops on call"/></div>:<Miss n="HumanReviewGate"/> },
424
424
  ];
@@ -435,7 +435,7 @@ const ELEMENTS = [
435
435
  ["moc|","Mộc · leaf (middle)"],["moc|bamboo","Mộc · bamboo (soft)"],["moc|forest","Mộc · forest (deep)"],
436
436
  ["kim|","Kim · champagne (middle)"],["kim|titanium","Kim · titanium (soft)"],["kim|steel","Kim · steel (deep)"],
437
437
  ];
438
- const LANGS = [["","Default"],["en","English"],["vi","Tiếng Việt"],["ja","日本語 (spike)"]];
438
+ const LANGS = [["vi","Tiếng Việt"],["en","English"]];
439
439
  const DENSITIES = [["comfortable","Comfortable"],["compact","Compact"]];
440
440
  const CONTRASTS = [["standard","Standard"],["high","High"]];
441
441
  const PAGES = [
@@ -607,7 +607,7 @@ function App(){
607
607
  <select value={el} onChange={(e)=>setEl(e.target.value)}>{ELEMENTS.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select>
608
608
  </label>
609
609
  <label className="ctl">Style
610
- <select value={style} onChange={(e)=>setStyle(e.target.value)}><option value="liquid-glass">Liquid glass</option></select>
610
+ <select value={style} onChange={(e)=>setStyle(e.target.value)}><option value="liquid-glass">Liquid glass</option><option value="matte-paper">Matte paper</option></select>
611
611
  </label>
612
612
  <label className="ctl">Language
613
613
  <select value={lang} onChange={(e)=>setLang(e.target.value)}>{LANGS.map(([v,l])=><option key={v} value={v}>{l}</option>)}</select>
@@ -5,7 +5,7 @@
5
5
  <link rel="stylesheet" href="../dist/styles.css" />
6
6
  <style>
7
7
  body { margin: 0; font-family: var(--cs-font-family-ui); }
8
- .stage { position: relative; min-height: 260px; background-image: url("../assets/aurora-tho.webp"); background-size: cover; background-position: center; overflow: hidden; }
8
+ .stage { position: relative; min-height: 260px; background-color: var(--cs-color-brand-umber); background-image: url("../assets/aurora-tho.webp"); background-size: cover; background-position: center; overflow: hidden; }
9
9
  .lumi { position: absolute; right: 34px; bottom: -6px; height: 250px; filter: drop-shadow(0 18px 40px rgba(0,0,0,.45)); }
10
10
  .copy { position: absolute; left: 26px; top: 24px; max-width: 340px; color: #fff; }
11
11
  .k { font: 600 11px/1 var(--cs-font-family-ui); text-transform: uppercase; letter-spacing: .1em; color: var(--cs-color-brand-ochre); }
@@ -16,9 +16,9 @@
16
16
  </head>
17
17
  <body>
18
18
  <div class="row">
19
- <div class="sw" style="background:#FFFDF8"><div class="nm">surface-page</div><div class="hex">#FFFDF8</div></div>
20
- <div class="sw" style="background:#FFFFFF"><div class="nm">surface-panel</div><div class="hex">#FFFFFF</div></div>
21
- <div class="sw" style="background:#FBF4E9"><div class="nm">surface-raised</div><div class="hex">#FBF4E9</div></div>
22
- <div class="sw" style="background:#E7D9C6"><div class="nm">border-default</div><div class="hex">#E7D9C6</div></div>
19
+ <div class="sw" style="background:var(--cs-color-surface-page)"><div class="nm">surface-page</div><div class="hex">#FFFDF8</div></div>
20
+ <div class="sw" style="background:var(--cs-color-surface-panel)"><div class="nm">surface-panel</div><div class="hex">#FFFFFF</div></div>
21
+ <div class="sw" style="background:var(--cs-color-surface-raised)"><div class="nm">surface-raised</div><div class="hex">#FBF4E9</div></div>
22
+ <div class="sw" style="background:var(--cs-color-border-default)"><div class="nm">border-default</div><div class="hex">#E7D9C6</div></div>
23
23
  </div>
24
24
  </body></html>
@@ -17,9 +17,9 @@
17
17
  </head>
18
18
  <body>
19
19
  <div class="grid">
20
- <div class="item"><span class="chip" style="background:#45210E"></span><div><div class="t" style="color:#45210E">text-primary · Aa</div><div class="m">#45210E</div></div></div>
21
- <div class="item"><span class="chip" style="background:#6E5A4C"></span><div><div class="t" style="color:#6E5A4C">text-muted · Aa</div><div class="m">#6E5A4C</div></div></div>
22
- <div class="item"><span class="chip" style="background:#6E3B0E"></span><div><div class="t" style="color:#6E3B0E">text-accent · Aa</div><div class="m">#6E3B0E · links</div></div></div>
23
- <div class="item"><span class="chip" style="background:#45210E;display:grid;place-items:center;color:#fff;font-weight:700">Aa</span><div><div class="t" style="color:#45210E">text-inverse</div><div class="m">#FFFFFF on umber</div></div></div>
20
+ <div class="item"><span class="chip" style="background:var(--cs-color-text-primary)"></span><div><div class="t" style="color:var(--cs-color-text-primary)">text-primary · Aa</div><div class="m">#45210E</div></div></div>
21
+ <div class="item"><span class="chip" style="background:var(--cs-color-text-muted)"></span><div><div class="t" style="color:var(--cs-color-text-muted)">text-muted · Aa</div><div class="m">#5E4436</div></div></div>
22
+ <div class="item"><span class="chip" style="background:var(--cs-color-text-accent)"></span><div><div class="t" style="color:var(--cs-color-text-accent)">text-accent · Aa</div><div class="m">#6E3B0E · links</div></div></div>
23
+ <div class="item"><span class="chip" style="background:var(--cs-color-text-primary);display:grid;place-items:center;color:var(--cs-color-text-inverse);font-weight:700">Aa</span><div><div class="t" style="color:var(--cs-color-text-primary)">text-inverse</div><div class="m">#FFFFFF on umber</div></div></div>
24
24
  </div>
25
25
  </body></html>
@@ -5,12 +5,12 @@
5
5
  <link rel="stylesheet" href="../dist/styles.css">
6
6
  <style>
7
7
  body{margin:0;background:var(--cs-color-surface-page);width:1280px;height:420px;overflow:clip;box-sizing:border-box;padding:28px 40px;font-family:var(--cs-font-family-ui);color:var(--cs-color-text-primary)}
8
- .col{border:1px solid #E7D9C6;border-radius:12px;background:#fff;padding:14px;display:grid;gap:10px;align-content:start}
8
+ .col{border:1px solid var(--cs-color-border-default);border-radius:12px;background:var(--cs-color-surface-panel);padding:14px;display:grid;gap:10px;align-content:start}
9
9
  .el{font-weight:800;font-size:14px}
10
- .cta{display:inline-flex;align-items:center;justify-content:center;background:var(--cs-accent-bright);color:var(--cs-accent-ink);font-weight:700;font-size:12.5px;padding:9px 14px;border-radius:999px}
10
+ .cta{display:inline-flex;align-items:center;justify-content:center;background:var(--cs-accent-bright);color:var(--_cs-light-accent-ink,var(--cs-color-brand-umber));font-weight:700;font-size:12.5px;padding:9px 14px;border-radius:999px}
11
11
  .lbl{font-size:10px;text-transform:uppercase;letter-spacing:0.1em;font-weight:700;color:var(--cs-color-text-accent)}
12
12
  .badge{display:inline-block;background:var(--_cs-light,var(--cs-accent-tint)) var(--_cs-dark,color-mix(in oklab,var(--cs-accent) 22%,var(--cs-color-surface-panel)));color:var(--_cs-light,var(--cs-color-text-accent)) var(--_cs-dark,var(--cs-accent-bright));font-weight:700;font-size:11px;padding:4px 10px;border-radius:999px;width:fit-content}
13
- .bar{height:8px;border-radius:99px;background:#FBF4E9;overflow:hidden}
13
+ .bar{height:8px;border-radius:99px;background:var(--cs-color-surface-raised);overflow:hidden}
14
14
  .bar span{display:block;height:100%;width:64%;background:var(--cs-accent);border-radius:99px}
15
15
  .dark{background:var(--cs-accent-strong);color:var(--cs-accent-on-strong);border-radius:9px;padding:10px 12px;font-size:12px}
16
16
  .dark b{color:inherit}
@@ -44,7 +44,7 @@ a{color:var(--cs-color-link)}a:hover{color:var(--cs-color-brand-umber)}
44
44
  <div style="display:flex;align-items:center;gap:10px"><span style="height:14px;flex:1;border-radius:99px;background:linear-gradient(90deg,#F4BA17,#BFB29B)"></span><span style="font-size:12px;font-weight:700;width:96px">Thổ → Kim</span></div>
45
45
  <div style="display:flex;align-items:center;gap:10px"><span style="height:14px;flex:1;border-radius:99px;background:linear-gradient(90deg,#BFB29B,#4E8E9B)"></span><span style="font-size:12px;font-weight:700;width:96px">Kim → Thủy</span></div>
46
46
  <div style="display:flex;align-items:center;gap:10px"><span style="height:14px;flex:1;border-radius:99px;background:linear-gradient(90deg,#4E8E9B,#7A9B57)"></span><span style="font-size:12px;font-weight:700;width:96px">Thủy → Mộc</span></div>
47
- <div style="display:flex;align-items:center;gap:10px"><span style="height:14px;flex:1;border-radius:99px;background:linear-gradient(90deg,#E0632B,#4E8E9B);position:relative"><span style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;letter-spacing:0.08em" lang="vi">TƯƠNG KHẮC — KHÔNG DÙNG</span></span><span style="font-size:12px;font-weight:700;width:96px;text-decoration:line-through">Hỏa × Thủy</span></div>
47
+ <div style="display:flex;align-items:center;gap:10px"><span style="height:14px;flex:1;border-radius:99px;background:linear-gradient(90deg,#E0632B,#4E8E9B);position:relative"><span style="position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:10px;font-weight:800;color:#fff;letter-spacing:0.08em;background:color-mix(in oklab,var(--cs-color-brand-umber) 68%,transparent);border-radius:99px" lang="vi">TƯƠNG KHẮC — KHÔNG DÙNG</span></span><span style="font-size:12px;font-weight:700;width:96px;text-decoration:line-through">Hỏa × Thủy</span></div>
48
48
  </div>
49
49
  <div style="font-size:12px;color:var(--cs-color-text-muted);margin-top:10px;line-height:1.5">Tương sinh pairs may share a gradient wash. Tương khắc pairs never mix.</div>
50
50
  </div>