@cyberskill/design 2.1.0 → 2.3.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 (333) hide show
  1. package/DESIGN.md +70 -3
  2. package/README.md +3 -3
  3. package/VERSION +1 -1
  4. package/_ds_bundle.js +2 -2
  5. package/_ds_bundle.js.map +1 -1
  6. package/_ds_manifest.json +32 -32
  7. package/_esm/cs.mjs +2 -2
  8. package/base/collections.css +3 -3
  9. package/base/components.css +10 -5
  10. package/base/controls.css +8 -8
  11. package/base/data.css +4 -2
  12. package/base/feedback.css +5 -3
  13. package/base/forms.css +2 -2
  14. package/base/glass.css +5 -2
  15. package/base/interaction.css +1 -1
  16. package/base/navigation.css +4 -4
  17. package/base/responsive.css +4 -0
  18. package/base/shell.css +9 -9
  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/lifecycle.json +13 -13
  23. package/components/prompt-api.json +2 -2
  24. package/components/release-compatibility.json +2 -28
  25. package/components/scenarios.json +321 -28
  26. package/components/specifications.json +7546 -3515
  27. package/components/static-html-reference.json +19 -19
  28. package/dist/esm/build.json +1 -1
  29. package/dist/styles.min.css +1 -1
  30. package/docs/component-scenarios.md +1 -1
  31. package/docs/consuming.md +1 -1
  32. package/docs/contrast-report.md +196 -1
  33. package/docs/conventions.md +1 -1
  34. package/docs/manual-at-matrix.md +3 -3
  35. package/docs/reference-catalog.json +23 -23
  36. package/docs/release-notes.md +14 -1
  37. package/docs/releasing.md +4 -2
  38. package/docs/static-html-reference.md +18 -18
  39. package/docs/template-inventory.json +1 -1
  40. package/docs/vi/component-scenarios.md +1 -1
  41. package/docs/vi/consuming.md +1 -1
  42. package/docs/vi/contrast-report.md +196 -1
  43. package/docs/vi/conventions.md +1 -1
  44. package/docs/vi/decisions/component-specification-evidence.md +1 -1
  45. package/docs/vi/entrypoints/DESIGN.md +70 -3
  46. package/docs/vi/entrypoints/README.md +3 -3
  47. package/docs/vi/manual-at-matrix.md +3 -3
  48. package/docs/vi/release-notes.md +14 -1
  49. package/docs/vi/releasing.md +4 -2
  50. package/docs/vi/static-html-reference.md +18 -18
  51. package/docs/viewer.html +76 -25
  52. package/guidance/agent-contract.json +2 -2
  53. package/guidelines/atomic-view.html +4 -3
  54. package/guidelines/elements-variants.html +14 -14
  55. package/guidelines/guideline-language.js +1 -1
  56. package/package.json +2 -1
  57. package/styles/components/manifest.json +148 -137
  58. package/styles.layered.css +365 -353
  59. package/styles.layered.provenance.json +15 -15
  60. package/tokens/declarations.json +423 -375
  61. package/tokens/element-seeds.json +41 -39
  62. package/tokens/elements.css +333 -333
  63. package/tokens/modes/dark__default__comfortable__high.dtcg.json +1 -1
  64. package/tokens/modes/dark__default__comfortable__standard.dtcg.json +1 -1
  65. package/tokens/modes/dark__default__compact__high.dtcg.json +1 -1
  66. package/tokens/modes/dark__default__compact__standard.dtcg.json +1 -1
  67. package/tokens/modes/dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  68. package/tokens/modes/dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  69. package/tokens/modes/dark__hoa-lava__compact__high.dtcg.json +1 -1
  70. package/tokens/modes/dark__hoa-lava__compact__standard.dtcg.json +1 -1
  71. package/tokens/modes/dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  72. package/tokens/modes/dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  73. package/tokens/modes/dark__hoa-plasma__compact__high.dtcg.json +1 -1
  74. package/tokens/modes/dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  75. package/tokens/modes/dark__hoa__comfortable__high.dtcg.json +1 -1
  76. package/tokens/modes/dark__hoa__comfortable__standard.dtcg.json +1 -1
  77. package/tokens/modes/dark__hoa__compact__high.dtcg.json +1 -1
  78. package/tokens/modes/dark__hoa__compact__standard.dtcg.json +1 -1
  79. package/tokens/modes/dark__kim-steel__comfortable__high.dtcg.json +1 -1
  80. package/tokens/modes/dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  81. package/tokens/modes/dark__kim-steel__compact__high.dtcg.json +1 -1
  82. package/tokens/modes/dark__kim-steel__compact__standard.dtcg.json +1 -1
  83. package/tokens/modes/dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  84. package/tokens/modes/dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  85. package/tokens/modes/dark__kim-titanium__compact__high.dtcg.json +1 -1
  86. package/tokens/modes/dark__kim-titanium__compact__standard.dtcg.json +1 -1
  87. package/tokens/modes/dark__kim__comfortable__high.dtcg.json +1 -1
  88. package/tokens/modes/dark__kim__comfortable__standard.dtcg.json +1 -1
  89. package/tokens/modes/dark__kim__compact__high.dtcg.json +1 -1
  90. package/tokens/modes/dark__kim__compact__standard.dtcg.json +1 -1
  91. package/tokens/modes/dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  92. package/tokens/modes/dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  93. package/tokens/modes/dark__moc-bamboo__compact__high.dtcg.json +1 -1
  94. package/tokens/modes/dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  95. package/tokens/modes/dark__moc-forest__comfortable__high.dtcg.json +1 -1
  96. package/tokens/modes/dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  97. package/tokens/modes/dark__moc-forest__compact__high.dtcg.json +1 -1
  98. package/tokens/modes/dark__moc-forest__compact__standard.dtcg.json +1 -1
  99. package/tokens/modes/dark__moc__comfortable__high.dtcg.json +1 -1
  100. package/tokens/modes/dark__moc__comfortable__standard.dtcg.json +1 -1
  101. package/tokens/modes/dark__moc__compact__high.dtcg.json +1 -1
  102. package/tokens/modes/dark__moc__compact__standard.dtcg.json +1 -1
  103. package/tokens/modes/dark__tho-clay__comfortable__high.dtcg.json +1 -1
  104. package/tokens/modes/dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  105. package/tokens/modes/dark__tho-clay__compact__high.dtcg.json +1 -1
  106. package/tokens/modes/dark__tho-clay__compact__standard.dtcg.json +1 -1
  107. package/tokens/modes/dark__tho-sand__comfortable__high.dtcg.json +1 -1
  108. package/tokens/modes/dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  109. package/tokens/modes/dark__tho-sand__compact__high.dtcg.json +1 -1
  110. package/tokens/modes/dark__tho-sand__compact__standard.dtcg.json +1 -1
  111. package/tokens/modes/dark__tho__comfortable__high.dtcg.json +1 -1
  112. package/tokens/modes/dark__tho__comfortable__standard.dtcg.json +1 -1
  113. package/tokens/modes/dark__tho__compact__high.dtcg.json +1 -1
  114. package/tokens/modes/dark__tho__compact__standard.dtcg.json +1 -1
  115. package/tokens/modes/dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  116. package/tokens/modes/dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  117. package/tokens/modes/dark__thuy-mist__compact__high.dtcg.json +1 -1
  118. package/tokens/modes/dark__thuy-mist__compact__standard.dtcg.json +1 -1
  119. package/tokens/modes/dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  120. package/tokens/modes/dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  121. package/tokens/modes/dark__thuy-ocean__compact__high.dtcg.json +1 -1
  122. package/tokens/modes/dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  123. package/tokens/modes/dark__thuy__comfortable__high.dtcg.json +1 -1
  124. package/tokens/modes/dark__thuy__comfortable__standard.dtcg.json +1 -1
  125. package/tokens/modes/dark__thuy__compact__high.dtcg.json +1 -1
  126. package/tokens/modes/dark__thuy__compact__standard.dtcg.json +1 -1
  127. package/tokens/modes/index.json +1548 -1548
  128. package/tokens/modes/light__default__comfortable__high.dtcg.json +1 -1
  129. package/tokens/modes/light__default__comfortable__standard.dtcg.json +1 -1
  130. package/tokens/modes/light__default__compact__high.dtcg.json +1 -1
  131. package/tokens/modes/light__default__compact__standard.dtcg.json +1 -1
  132. package/tokens/modes/light__hoa-lava__comfortable__high.dtcg.json +1 -1
  133. package/tokens/modes/light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  134. package/tokens/modes/light__hoa-lava__compact__high.dtcg.json +1 -1
  135. package/tokens/modes/light__hoa-lava__compact__standard.dtcg.json +1 -1
  136. package/tokens/modes/light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  137. package/tokens/modes/light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  138. package/tokens/modes/light__hoa-plasma__compact__high.dtcg.json +1 -1
  139. package/tokens/modes/light__hoa-plasma__compact__standard.dtcg.json +1 -1
  140. package/tokens/modes/light__hoa__comfortable__high.dtcg.json +1 -1
  141. package/tokens/modes/light__hoa__comfortable__standard.dtcg.json +1 -1
  142. package/tokens/modes/light__hoa__compact__high.dtcg.json +1 -1
  143. package/tokens/modes/light__hoa__compact__standard.dtcg.json +1 -1
  144. package/tokens/modes/light__kim-steel__comfortable__high.dtcg.json +1 -1
  145. package/tokens/modes/light__kim-steel__comfortable__standard.dtcg.json +1 -1
  146. package/tokens/modes/light__kim-steel__compact__high.dtcg.json +1 -1
  147. package/tokens/modes/light__kim-steel__compact__standard.dtcg.json +1 -1
  148. package/tokens/modes/light__kim-titanium__comfortable__high.dtcg.json +1 -1
  149. package/tokens/modes/light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  150. package/tokens/modes/light__kim-titanium__compact__high.dtcg.json +1 -1
  151. package/tokens/modes/light__kim-titanium__compact__standard.dtcg.json +1 -1
  152. package/tokens/modes/light__kim__comfortable__high.dtcg.json +1 -1
  153. package/tokens/modes/light__kim__comfortable__standard.dtcg.json +1 -1
  154. package/tokens/modes/light__kim__compact__high.dtcg.json +1 -1
  155. package/tokens/modes/light__kim__compact__standard.dtcg.json +1 -1
  156. package/tokens/modes/light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  157. package/tokens/modes/light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  158. package/tokens/modes/light__moc-bamboo__compact__high.dtcg.json +1 -1
  159. package/tokens/modes/light__moc-bamboo__compact__standard.dtcg.json +1 -1
  160. package/tokens/modes/light__moc-forest__comfortable__high.dtcg.json +1 -1
  161. package/tokens/modes/light__moc-forest__comfortable__standard.dtcg.json +1 -1
  162. package/tokens/modes/light__moc-forest__compact__high.dtcg.json +1 -1
  163. package/tokens/modes/light__moc-forest__compact__standard.dtcg.json +1 -1
  164. package/tokens/modes/light__moc__comfortable__high.dtcg.json +1 -1
  165. package/tokens/modes/light__moc__comfortable__standard.dtcg.json +1 -1
  166. package/tokens/modes/light__moc__compact__high.dtcg.json +1 -1
  167. package/tokens/modes/light__moc__compact__standard.dtcg.json +1 -1
  168. package/tokens/modes/light__tho-clay__comfortable__high.dtcg.json +1 -1
  169. package/tokens/modes/light__tho-clay__comfortable__standard.dtcg.json +1 -1
  170. package/tokens/modes/light__tho-clay__compact__high.dtcg.json +1 -1
  171. package/tokens/modes/light__tho-clay__compact__standard.dtcg.json +1 -1
  172. package/tokens/modes/light__tho-sand__comfortable__high.dtcg.json +1 -1
  173. package/tokens/modes/light__tho-sand__comfortable__standard.dtcg.json +1 -1
  174. package/tokens/modes/light__tho-sand__compact__high.dtcg.json +1 -1
  175. package/tokens/modes/light__tho-sand__compact__standard.dtcg.json +1 -1
  176. package/tokens/modes/light__tho__comfortable__high.dtcg.json +1 -1
  177. package/tokens/modes/light__tho__comfortable__standard.dtcg.json +1 -1
  178. package/tokens/modes/light__tho__compact__high.dtcg.json +1 -1
  179. package/tokens/modes/light__tho__compact__standard.dtcg.json +1 -1
  180. package/tokens/modes/light__thuy-mist__comfortable__high.dtcg.json +1 -1
  181. package/tokens/modes/light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  182. package/tokens/modes/light__thuy-mist__compact__high.dtcg.json +1 -1
  183. package/tokens/modes/light__thuy-mist__compact__standard.dtcg.json +1 -1
  184. package/tokens/modes/light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  185. package/tokens/modes/light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  186. package/tokens/modes/light__thuy-ocean__compact__high.dtcg.json +1 -1
  187. package/tokens/modes/light__thuy-ocean__compact__standard.dtcg.json +1 -1
  188. package/tokens/modes/light__thuy__comfortable__high.dtcg.json +1 -1
  189. package/tokens/modes/light__thuy__comfortable__standard.dtcg.json +1 -1
  190. package/tokens/modes/light__thuy__compact__high.dtcg.json +1 -1
  191. package/tokens/modes/light__thuy__compact__standard.dtcg.json +1 -1
  192. package/tokens/modes/system-dark__default__comfortable__high.dtcg.json +1 -1
  193. package/tokens/modes/system-dark__default__comfortable__standard.dtcg.json +1 -1
  194. package/tokens/modes/system-dark__default__compact__high.dtcg.json +1 -1
  195. package/tokens/modes/system-dark__default__compact__standard.dtcg.json +1 -1
  196. package/tokens/modes/system-dark__hoa-lava__comfortable__high.dtcg.json +1 -1
  197. package/tokens/modes/system-dark__hoa-lava__comfortable__standard.dtcg.json +1 -1
  198. package/tokens/modes/system-dark__hoa-lava__compact__high.dtcg.json +1 -1
  199. package/tokens/modes/system-dark__hoa-lava__compact__standard.dtcg.json +1 -1
  200. package/tokens/modes/system-dark__hoa-plasma__comfortable__high.dtcg.json +1 -1
  201. package/tokens/modes/system-dark__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  202. package/tokens/modes/system-dark__hoa-plasma__compact__high.dtcg.json +1 -1
  203. package/tokens/modes/system-dark__hoa-plasma__compact__standard.dtcg.json +1 -1
  204. package/tokens/modes/system-dark__hoa__comfortable__high.dtcg.json +1 -1
  205. package/tokens/modes/system-dark__hoa__comfortable__standard.dtcg.json +1 -1
  206. package/tokens/modes/system-dark__hoa__compact__high.dtcg.json +1 -1
  207. package/tokens/modes/system-dark__hoa__compact__standard.dtcg.json +1 -1
  208. package/tokens/modes/system-dark__kim-steel__comfortable__high.dtcg.json +1 -1
  209. package/tokens/modes/system-dark__kim-steel__comfortable__standard.dtcg.json +1 -1
  210. package/tokens/modes/system-dark__kim-steel__compact__high.dtcg.json +1 -1
  211. package/tokens/modes/system-dark__kim-steel__compact__standard.dtcg.json +1 -1
  212. package/tokens/modes/system-dark__kim-titanium__comfortable__high.dtcg.json +1 -1
  213. package/tokens/modes/system-dark__kim-titanium__comfortable__standard.dtcg.json +1 -1
  214. package/tokens/modes/system-dark__kim-titanium__compact__high.dtcg.json +1 -1
  215. package/tokens/modes/system-dark__kim-titanium__compact__standard.dtcg.json +1 -1
  216. package/tokens/modes/system-dark__kim__comfortable__high.dtcg.json +1 -1
  217. package/tokens/modes/system-dark__kim__comfortable__standard.dtcg.json +1 -1
  218. package/tokens/modes/system-dark__kim__compact__high.dtcg.json +1 -1
  219. package/tokens/modes/system-dark__kim__compact__standard.dtcg.json +1 -1
  220. package/tokens/modes/system-dark__moc-bamboo__comfortable__high.dtcg.json +1 -1
  221. package/tokens/modes/system-dark__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  222. package/tokens/modes/system-dark__moc-bamboo__compact__high.dtcg.json +1 -1
  223. package/tokens/modes/system-dark__moc-bamboo__compact__standard.dtcg.json +1 -1
  224. package/tokens/modes/system-dark__moc-forest__comfortable__high.dtcg.json +1 -1
  225. package/tokens/modes/system-dark__moc-forest__comfortable__standard.dtcg.json +1 -1
  226. package/tokens/modes/system-dark__moc-forest__compact__high.dtcg.json +1 -1
  227. package/tokens/modes/system-dark__moc-forest__compact__standard.dtcg.json +1 -1
  228. package/tokens/modes/system-dark__moc__comfortable__high.dtcg.json +1 -1
  229. package/tokens/modes/system-dark__moc__comfortable__standard.dtcg.json +1 -1
  230. package/tokens/modes/system-dark__moc__compact__high.dtcg.json +1 -1
  231. package/tokens/modes/system-dark__moc__compact__standard.dtcg.json +1 -1
  232. package/tokens/modes/system-dark__tho-clay__comfortable__high.dtcg.json +1 -1
  233. package/tokens/modes/system-dark__tho-clay__comfortable__standard.dtcg.json +1 -1
  234. package/tokens/modes/system-dark__tho-clay__compact__high.dtcg.json +1 -1
  235. package/tokens/modes/system-dark__tho-clay__compact__standard.dtcg.json +1 -1
  236. package/tokens/modes/system-dark__tho-sand__comfortable__high.dtcg.json +1 -1
  237. package/tokens/modes/system-dark__tho-sand__comfortable__standard.dtcg.json +1 -1
  238. package/tokens/modes/system-dark__tho-sand__compact__high.dtcg.json +1 -1
  239. package/tokens/modes/system-dark__tho-sand__compact__standard.dtcg.json +1 -1
  240. package/tokens/modes/system-dark__tho__comfortable__high.dtcg.json +1 -1
  241. package/tokens/modes/system-dark__tho__comfortable__standard.dtcg.json +1 -1
  242. package/tokens/modes/system-dark__tho__compact__high.dtcg.json +1 -1
  243. package/tokens/modes/system-dark__tho__compact__standard.dtcg.json +1 -1
  244. package/tokens/modes/system-dark__thuy-mist__comfortable__high.dtcg.json +1 -1
  245. package/tokens/modes/system-dark__thuy-mist__comfortable__standard.dtcg.json +1 -1
  246. package/tokens/modes/system-dark__thuy-mist__compact__high.dtcg.json +1 -1
  247. package/tokens/modes/system-dark__thuy-mist__compact__standard.dtcg.json +1 -1
  248. package/tokens/modes/system-dark__thuy-ocean__comfortable__high.dtcg.json +1 -1
  249. package/tokens/modes/system-dark__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  250. package/tokens/modes/system-dark__thuy-ocean__compact__high.dtcg.json +1 -1
  251. package/tokens/modes/system-dark__thuy-ocean__compact__standard.dtcg.json +1 -1
  252. package/tokens/modes/system-dark__thuy__comfortable__high.dtcg.json +1 -1
  253. package/tokens/modes/system-dark__thuy__comfortable__standard.dtcg.json +1 -1
  254. package/tokens/modes/system-dark__thuy__compact__high.dtcg.json +1 -1
  255. package/tokens/modes/system-dark__thuy__compact__standard.dtcg.json +1 -1
  256. package/tokens/modes/system-light__default__comfortable__high.dtcg.json +1 -1
  257. package/tokens/modes/system-light__default__comfortable__standard.dtcg.json +1 -1
  258. package/tokens/modes/system-light__default__compact__high.dtcg.json +1 -1
  259. package/tokens/modes/system-light__default__compact__standard.dtcg.json +1 -1
  260. package/tokens/modes/system-light__hoa-lava__comfortable__high.dtcg.json +1 -1
  261. package/tokens/modes/system-light__hoa-lava__comfortable__standard.dtcg.json +1 -1
  262. package/tokens/modes/system-light__hoa-lava__compact__high.dtcg.json +1 -1
  263. package/tokens/modes/system-light__hoa-lava__compact__standard.dtcg.json +1 -1
  264. package/tokens/modes/system-light__hoa-plasma__comfortable__high.dtcg.json +1 -1
  265. package/tokens/modes/system-light__hoa-plasma__comfortable__standard.dtcg.json +1 -1
  266. package/tokens/modes/system-light__hoa-plasma__compact__high.dtcg.json +1 -1
  267. package/tokens/modes/system-light__hoa-plasma__compact__standard.dtcg.json +1 -1
  268. package/tokens/modes/system-light__hoa__comfortable__high.dtcg.json +1 -1
  269. package/tokens/modes/system-light__hoa__comfortable__standard.dtcg.json +1 -1
  270. package/tokens/modes/system-light__hoa__compact__high.dtcg.json +1 -1
  271. package/tokens/modes/system-light__hoa__compact__standard.dtcg.json +1 -1
  272. package/tokens/modes/system-light__kim-steel__comfortable__high.dtcg.json +1 -1
  273. package/tokens/modes/system-light__kim-steel__comfortable__standard.dtcg.json +1 -1
  274. package/tokens/modes/system-light__kim-steel__compact__high.dtcg.json +1 -1
  275. package/tokens/modes/system-light__kim-steel__compact__standard.dtcg.json +1 -1
  276. package/tokens/modes/system-light__kim-titanium__comfortable__high.dtcg.json +1 -1
  277. package/tokens/modes/system-light__kim-titanium__comfortable__standard.dtcg.json +1 -1
  278. package/tokens/modes/system-light__kim-titanium__compact__high.dtcg.json +1 -1
  279. package/tokens/modes/system-light__kim-titanium__compact__standard.dtcg.json +1 -1
  280. package/tokens/modes/system-light__kim__comfortable__high.dtcg.json +1 -1
  281. package/tokens/modes/system-light__kim__comfortable__standard.dtcg.json +1 -1
  282. package/tokens/modes/system-light__kim__compact__high.dtcg.json +1 -1
  283. package/tokens/modes/system-light__kim__compact__standard.dtcg.json +1 -1
  284. package/tokens/modes/system-light__moc-bamboo__comfortable__high.dtcg.json +1 -1
  285. package/tokens/modes/system-light__moc-bamboo__comfortable__standard.dtcg.json +1 -1
  286. package/tokens/modes/system-light__moc-bamboo__compact__high.dtcg.json +1 -1
  287. package/tokens/modes/system-light__moc-bamboo__compact__standard.dtcg.json +1 -1
  288. package/tokens/modes/system-light__moc-forest__comfortable__high.dtcg.json +1 -1
  289. package/tokens/modes/system-light__moc-forest__comfortable__standard.dtcg.json +1 -1
  290. package/tokens/modes/system-light__moc-forest__compact__high.dtcg.json +1 -1
  291. package/tokens/modes/system-light__moc-forest__compact__standard.dtcg.json +1 -1
  292. package/tokens/modes/system-light__moc__comfortable__high.dtcg.json +1 -1
  293. package/tokens/modes/system-light__moc__comfortable__standard.dtcg.json +1 -1
  294. package/tokens/modes/system-light__moc__compact__high.dtcg.json +1 -1
  295. package/tokens/modes/system-light__moc__compact__standard.dtcg.json +1 -1
  296. package/tokens/modes/system-light__tho-clay__comfortable__high.dtcg.json +1 -1
  297. package/tokens/modes/system-light__tho-clay__comfortable__standard.dtcg.json +1 -1
  298. package/tokens/modes/system-light__tho-clay__compact__high.dtcg.json +1 -1
  299. package/tokens/modes/system-light__tho-clay__compact__standard.dtcg.json +1 -1
  300. package/tokens/modes/system-light__tho-sand__comfortable__high.dtcg.json +1 -1
  301. package/tokens/modes/system-light__tho-sand__comfortable__standard.dtcg.json +1 -1
  302. package/tokens/modes/system-light__tho-sand__compact__high.dtcg.json +1 -1
  303. package/tokens/modes/system-light__tho-sand__compact__standard.dtcg.json +1 -1
  304. package/tokens/modes/system-light__tho__comfortable__high.dtcg.json +1 -1
  305. package/tokens/modes/system-light__tho__comfortable__standard.dtcg.json +1 -1
  306. package/tokens/modes/system-light__tho__compact__high.dtcg.json +1 -1
  307. package/tokens/modes/system-light__tho__compact__standard.dtcg.json +1 -1
  308. package/tokens/modes/system-light__thuy-mist__comfortable__high.dtcg.json +1 -1
  309. package/tokens/modes/system-light__thuy-mist__comfortable__standard.dtcg.json +1 -1
  310. package/tokens/modes/system-light__thuy-mist__compact__high.dtcg.json +1 -1
  311. package/tokens/modes/system-light__thuy-mist__compact__standard.dtcg.json +1 -1
  312. package/tokens/modes/system-light__thuy-ocean__comfortable__high.dtcg.json +1 -1
  313. package/tokens/modes/system-light__thuy-ocean__comfortable__standard.dtcg.json +1 -1
  314. package/tokens/modes/system-light__thuy-ocean__compact__high.dtcg.json +1 -1
  315. package/tokens/modes/system-light__thuy-ocean__compact__standard.dtcg.json +1 -1
  316. package/tokens/modes/system-light__thuy__comfortable__high.dtcg.json +1 -1
  317. package/tokens/modes/system-light__thuy__comfortable__standard.dtcg.json +1 -1
  318. package/tokens/modes/system-light__thuy__compact__high.dtcg.json +1 -1
  319. package/tokens/modes/system-light__thuy__compact__standard.dtcg.json +1 -1
  320. package/tokens/native/CSModes.kt +631 -588
  321. package/tokens/native/CSModes.swift +631 -588
  322. package/tokens/native/CSTokens.kt +301 -301
  323. package/tokens/native/CSTokens.swift +301 -301
  324. package/tokens/native/cs_modes.dart +631 -588
  325. package/tokens/native/cs_tokens.dart +301 -301
  326. package/tokens/native/mode-provenance.json +11 -11
  327. package/tokens/provenance.json +6 -6
  328. package/tokens/tokens.dtcg.json +268 -268
  329. package/tokens/tokens.js +160 -160
  330. package/tokens/tokens.json +159 -159
  331. package/tokens/typography.css +2 -3
  332. package/tokens/variables.css +336 -333
  333. package/ui_kits/website/site.css +2 -2
package/docs/viewer.html CHANGED
@@ -21,32 +21,43 @@
21
21
  .searchhit b{color:var(--_cs-light,var(--cs-color-brand-umber)) var(--_cs-dark,var(--cs-color-brand-ochre))}
22
22
  .searchhit .snip{display:block;font-size:12px;color:var(--cs-color-text-muted);font-weight:400;margin-top:2px}
23
23
  mark{background:var(--cs-color-brand-ochre);color:var(--cs-color-brand-umber);border-radius:2px;padding:0 1px}
24
- main{overflow:auto;padding:30px 38px}
25
- article{max-width:820px;line-height:1.62;font-size:14.5px}
26
- article h1{font-size:24px;letter-spacing:-.015em;margin:0 0 12px}
27
- article h2{font-size:18px;margin:28px 0 8px;padding-top:10px;border-top:1px solid var(--cs-color-border-default)}
28
- article h3{font-size:15px;margin:20px 0 6px}
29
- article code{font-family:var(--cs-font-family-mono);font-size:.86em;background:var(--cs-color-surface-raised);border-radius:4px;padding:1px 5px}
30
- article pre{background:var(--cs-color-surface-raised);border:1px solid var(--cs-color-border-default);border-radius:10px;padding:12px 14px;overflow:auto}
31
- article pre code{background:none;padding:0;font-size:12px;line-height:1.55}
32
- article table{border-collapse:collapse;margin:10px 0;width:100%}
33
- article th,article td{border:1px solid var(--cs-color-border-default);padding:7px 10px;text-align:start;font-size:13px;vertical-align:top}
34
- article th{background:var(--cs-color-surface-raised)}
35
- article blockquote{margin:10px 0;padding:6px 14px;border-inline-start:3px solid var(--cs-color-brand-ochre);color:var(--cs-color-text-muted);background:var(--cs-color-surface-raised);border-radius:0 8px 8px 0}
24
+ main{overflow:auto;padding:clamp(24px,3vw,40px) clamp(20px,4vw,52px) 72px;min-width:0}
25
+ article{max-width:min(1160px,100%);width:100%;margin:0 auto;line-height:1.65;font-size:14.5px;min-width:0}
26
+ article h1{font-size:28px;letter-spacing:-.02em;line-height:1.25;margin:0 0 14px;padding-bottom:10px;border-bottom:2px solid color-mix(in oklab,var(--cs-accent) 45%,var(--cs-color-border-default))}
27
+ article h2{font-size:19px;letter-spacing:-.01em;line-height:1.35;margin:30px 0 10px;padding-top:12px;border-top:1px solid var(--cs-color-border-default);color:var(--cs-color-text-accent)}
28
+ article h3{font-size:15.5px;line-height:1.4;margin:22px 0 6px}
29
+ article h4{font-size:14px;line-height:1.4;margin:18px 0 4px;color:var(--cs-color-text-muted)}
30
+ article code{font-family:var(--cs-font-family-mono);font-size:.86em;background:var(--cs-color-surface-raised);color:var(--cs-color-text-primary);border:1px solid color-mix(in oklab,var(--cs-accent) 28%,var(--cs-color-border-default));border-radius:4px;padding:1px 5px}
31
+ article pre{background:var(--cs-color-surface-raised);border:1px solid var(--cs-color-border-default);border-radius:10px;padding:12px 14px;overflow:auto;max-width:100%}
32
+ article pre code{background:none;border:0;padding:0;font-size:12px;line-height:1.55;white-space:pre}
33
+ .tbl-wrap{width:100%;max-width:100%;overflow-x:auto;margin:14px 0;border:1px solid var(--cs-color-border-default);border-radius:var(--cs-radius-md);background:var(--cs-color-surface-panel)}
34
+ article table{border-collapse:collapse;margin:0;width:100%}
35
+ article th,article td{border-bottom:1px solid var(--cs-color-border-default);border-inline-end:1px solid var(--cs-color-border-default);padding:9px 12px;text-align:start;font-size:13px;vertical-align:top;line-height:1.5}
36
+ article th:last-child,article td:last-child{border-inline-end:0}
37
+ article tr:last-child td{border-bottom:0}
38
+ article th{background:var(--cs-color-surface-raised);color:var(--cs-color-text-primary);font-weight:700;border-bottom:2px solid color-mix(in oklab,var(--cs-accent) 50%,var(--cs-color-border-default))}
39
+ article blockquote{margin:12px 0;padding:10px 16px;border-inline-start:3px solid var(--cs-accent);color:var(--cs-color-text-primary);background:var(--cs-color-surface-raised);border-radius:0 8px 8px 0}
40
+ .md-badge{display:inline;font:700 11.5px/1.2 var(--cs-font-family-mono);padding:3px 10px;border-radius:999px;background:var(--cs-accent-tint);color:var(--cs-accent-ink);border:1px solid color-mix(in oklab,var(--cs-accent) 45%,var(--cs-color-border-default));text-decoration:none}
41
+ html.embed article pre[data-source-metadata]{display:none}
42
+ html.embed[data-cs-density="compact"] main{padding:18px 24px 48px}
43
+ html.embed[data-cs-density="compact"] article{font-size:13.5px;line-height:1.52}
44
+ html.embed[data-cs-density="compact"] article h1{font-size:22px;margin-bottom:8px;padding-bottom:6px}
45
+ html.embed[data-cs-density="compact"] article h2{font-size:16.5px;margin:20px 0 6px;padding-top:8px}
46
+ html.embed[data-cs-density="compact"] article th,html.embed[data-cs-density="compact"] article td{padding:5px 8px;font-size:12px}
36
47
  article ul,article ol{padding-inline-start:22px}
37
- article li{margin:3px 0;overflow-wrap:anywhere}
48
+ article li{margin:4px 0;overflow-wrap:anywhere}
38
49
  article p,article blockquote{overflow-wrap:anywhere}
39
50
  article code{white-space:break-spaces;overflow-wrap:anywhere}
40
- article hr{border:0;border-top:1px dashed var(--cs-color-border-default);margin:20px 0}
51
+ article hr{border:0;border-top:1px dashed var(--cs-color-border-default);margin:22px 0}
41
52
  article a{color:var(--cs-color-link)}article a:hover{color:var(--cs-color-link-hover)}
42
53
  #err{color:#B42318;font-family:var(--cs-font-family-mono);font-size:13px}
43
54
  html.embed body{grid-template-columns:1fr}
44
55
  html.embed aside{display:none}
45
- html.embed main{padding:24px 32px}
56
+ html.embed main{padding:clamp(24px,3vw,40px) clamp(24px,4vw,56px) 72px}
46
57
  @media (pointer:coarse){
47
58
  .langtog button,#docsearch,aside a{min-inline-size:44px;min-block-size:44px}
48
59
  #navlinks a[data-p]{display:flex;align-items:center}
49
- article a{display:inline-flex;align-items:center;min-inline-size:44px;min-block-size:44px;max-inline-size:100%;overflow-wrap:anywhere}
60
+ article a,article a.md-badge{display:inline-flex;align-items:center;min-inline-size:44px;min-block-size:44px;max-inline-size:100%;overflow-wrap:anywhere}
50
61
  }
51
62
  @media (max-width:640px){
52
63
  body{grid-template-columns:1fr}
@@ -80,7 +91,18 @@ const UI={
80
91
  // Language persistence is optional; privacy settings can expose null storage.
81
92
  function savedLanguage(){ try{ return localStorage.getItem('cs-docs-lang'); }catch{ return null; } }
82
93
  function saveLanguage(value){ try{ localStorage.setItem('cs-docs-lang',value); }catch{} }
83
- let lang=savedLanguage()==='en'?'en':'vi';
94
+ function initialLanguage(){
95
+ const q=new URLSearchParams(location.search).get('lang');
96
+ if(q==='en'||q==='vi') return q;
97
+ if(document.documentElement.classList.contains('embed') && window.parent && window.parent!==window){
98
+ try{
99
+ const pLang=window.parent.document.documentElement.getAttribute('lang');
100
+ if(pLang==='en'||pLang==='vi') return pLang;
101
+ }catch{}
102
+ }
103
+ return savedLanguage()==='en'?'en':'vi';
104
+ }
105
+ let lang=initialLanguage();
84
106
  function contentLanguage(path,language=lang){ return path.startsWith('docs/') || Object.hasOwn(ENTRANCE_VI,path) ? language : 'en'; }
85
107
  function DOCS(){ return lang==='vi'?DOCS_VI:DOCS_EN; }
86
108
  const ALL=DOCS_EN.flatMap(g=>g[1].map(d=>d[0]));
@@ -98,20 +120,32 @@ function syncLangUi(){
98
120
  : 'Guides and entrance documents have paired VI/EN views';
99
121
  document.getElementById('docsearch').placeholder=UI[lang].search+'…';
100
122
  document.getElementById('docsearch').setAttribute('aria-label',UI[lang].search);
101
- document.documentElement.lang=lang==='vi'?'vi':'en';
123
+ const nextDocLang=lang==='vi'?'vi':'en';
124
+ if(document.documentElement.lang!==nextDocLang) document.documentElement.lang=nextDocLang;
102
125
  }
103
126
  function renderNav(){ nav.innerHTML=''; for(const [g,items] of DOCS()){ const h=document.createElement('div'); h.className='grp'; h.textContent=g; nav.appendChild(h);
104
127
  for(const [p,label] of items){ const a=document.createElement('a'); a.href='#'+p; a.dataset.p=p; a.textContent=label; nav.appendChild(a); } } }
105
128
  syncLangUi(); renderNav();
106
- document.querySelector('.langtog').addEventListener('click',(e)=>{
107
- const b=e.target.closest('button[data-lang]'); if(!b) return;
108
- lang=b.dataset.lang; saveLanguage(lang);
129
+ function setViewerLanguage(next,persist=true){
130
+ const norm=next==='en'?'en':next==='vi'?'vi':null;
131
+ if(!norm || norm===lang) return;
132
+ lang=norm;
133
+ if(persist) saveLanguage(lang);
109
134
  syncLangUi(); renderNav(); markActive();
110
135
  docCache=null; // refetch under new language
111
136
  cancelSearch();
112
137
  load(cur||'README.md');
113
138
  const q=searchBox.value.trim();
114
139
  if(q.length>=2) runSearch(q);
140
+ }
141
+ window.__csSetDocLang=(next)=>setViewerLanguage(next,false);
142
+ new MutationObserver(()=>{
143
+ const attr=document.documentElement.getAttribute('lang');
144
+ if((attr==='en'||attr==='vi') && attr!==lang) setViewerLanguage(attr,false);
145
+ }).observe(document.documentElement,{attributes:true,attributeFilter:['lang']});
146
+ document.querySelector('.langtog').addEventListener('click',(e)=>{
147
+ const b=e.target.closest('button[data-lang]'); if(!b) return;
148
+ setViewerLanguage(b.dataset.lang,true);
115
149
  });
116
150
  function esc(s){ return s.replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;'); }
117
151
  function labelsNow(){ const L={}; for(const [,items] of DOCS()) for(const [p,l] of items) L[p]=l; return L; }
@@ -153,6 +187,8 @@ function inline(s){ return esc(s)
153
187
  .replace(/`([^`]+)`/g,(m,c)=>'<code>'+c+'</code>')
154
188
  .replace(/\*\*([^*]+)\*\*/g,'<b>$1</b>')
155
189
  .replace(/(^|[\s(])\*([^*\n]+)\*/g,'$1<i>$2</i>')
190
+ .replace(/\[!\[([^\]]*)\]\(([^)\s]+)\)\]\(([^)\s]+)\)/g,'<a class="md-badge" href="$3">$1 ↗</a>')
191
+ .replace(/!\[([^\]]*)\]\(([^)\s]+)\)/g,'<a class="md-badge" href="$2">$1</a>')
156
192
  .replace(/\[([^\]]+)\]\(([^)\s]+)\)/g,'<a href="$2">$1</a>'); }
157
193
  function md(src){
158
194
  src=src.replace(/\r/g,''); const fences=[];
@@ -168,7 +204,7 @@ function md(src){
168
204
  if(/^\s*(-{3,}|\*{3,})\s*$/.test(L)){ out.push('<hr>'); i++; continue; }
169
205
  if(/^\|/.test(L)){ const rows=grab(/^\|/); const cells=r=>r.replace(/^\||\|$/g,'').split('|').map(c=>inline(c.trim()));
170
206
  let hd=null,body=rows; if(rows.length>1&&/^[\s|:\-]+$/.test(rows[1])){ hd=cells(rows[0]); body=rows.slice(2); }
171
- out.push('<table>'+(hd?'<thead><tr>'+hd.map(c=>'<th>'+c+'</th>').join('')+'</tr></thead>':'')+'<tbody>'+body.map(r=>'<tr>'+cells(r).map(c=>'<td>'+c+'</td>').join('')+'</tr>').join('')+'</tbody></table>'); continue; }
207
+ out.push('<div class="tbl-wrap"><table>'+(hd?'<thead><tr>'+hd.map(c=>'<th>'+c+'</th>').join('')+'</tr></thead>':'')+'<tbody>'+body.map(r=>'<tr>'+cells(r).map(c=>'<td>'+c+'</td>').join('')+'</tr>').join('')+'</tbody></table></div>'); continue; }
172
208
  if(/^\s*[-*+]\s+/.test(L)){
173
209
  const li=[];
174
210
  while(i<lines.length){
@@ -240,9 +276,24 @@ async function fetchDoc(p){
240
276
  lastErr = new Error('hosting intercepted '+u+' (got HTML, not markdown)');
241
277
  continue;
242
278
  }
243
- // Count metadata is generated source syntax, not visible prose. Strip only
244
- // complete numeric markers before rendering and indexing search snippets.
245
- return text.replace(/<!-- cs-count:[A-Za-z]+ -->(\d+)<!-- \/cs-count -->/g, '$1');
279
+ // Count and source-version metadata are generated source syntax, not visible prose.
280
+ // Strip complete markers and bilingual entrypoint banners before rendering and indexing.
281
+ return text
282
+ .replace(/<!-- cs-count:[A-Za-z]+ -->(\d+)<!-- \/cs-count -->/g, '$1')
283
+ .replace(/<!-- cs-source-version:[a-z0-9-]+ -->([^<>\r\n]*)<!-- \/cs-source-version -->/g, '$1')
284
+ .replace(
285
+ /<!-- BEGIN PINNED TOOLCHAIN BOOTSTRAP -->\s*([\s\S]*?)\s*<!-- END PINNED TOOLCHAIN BOOTSTRAP -->/g,
286
+ (_, body) => body.trim().split(/\n\s*\n/)[0] || ''
287
+ )
288
+ .replace(
289
+ /<!-- BEGIN GENERATED ENTRY LANGUAGE ROUTE v1 -->\s*([\s\S]*?)\s*<!-- END GENERATED ENTRY LANGUAGE ROUTE v1 -->\s*/g,
290
+ (_, body) => (document.documentElement.classList.contains('embed') ? '' : body.trim() + '\n\n')
291
+ )
292
+ .replace(/^[ \t]*<!--\s*(?:BEGIN|END|Generated by)\b[\s\S]*?-->[ \t]*\r?\n?/gm, '')
293
+ .replace(
294
+ /^\*\*(?:English|Tiếng Việt)\*\*\s*·\s*\[(?:English|Tiếng Việt)\]\([^)]+\)[ \t]*\r?\n+/m,
295
+ (m) => (document.documentElement.classList.contains('embed') ? '' : m)
296
+ );
246
297
  }catch(e){ lastErr = e; }
247
298
  }
248
299
  throw lastErr || new Error('all fetch paths failed');
@@ -2,7 +2,7 @@
2
2
  "schemaVersion": 1,
3
3
  "interpretation": "Generated policy/routing projection, not runtime, host-loading, human acceptance or release certification.",
4
4
  "sourceHashes": {
5
- "scripts/guidance-source.json": "bc5a38c55150db896a2e93d47da1f3a8811ddedd6bed73e306f5abc21dd205eb",
5
+ "scripts/guidance-source.json": "1e8d71a99895dac5a42b41424a42e3b6b8b82cd421e04c553c52581d33d44b9e",
6
6
  "docs/doctrine.md": "25b5c51ba0bb38b8486b625124dcf6b90af8ac97e7518ab2cd92ff10b84eef54"
7
7
  },
8
8
  "authorities": {
@@ -21,7 +21,7 @@
21
21
  },
22
22
  "acceptance": {
23
23
  "productVisualReview": "separate-required",
24
- "manualAccessibility": "separate-required",
24
+ "manualAccessibility": "automated-and-manual-supported",
25
25
  "pushDeployMerge": "explicit-operator-instruction"
26
26
  },
27
27
  "portableValidation": {
@@ -456,11 +456,12 @@ function applyAxis(ifr, ax){
456
456
  h.setAttribute("data-cs-density",ax.density||"comfortable");
457
457
  h.setAttribute("data-cs-contrast",ax.contrast||"standard");
458
458
  const w=ifr.contentWindow;
459
- if(ax.lang && w && w.__dcSetProps && w.__dcRootName){
459
+ if(w && w.__dcSetProps && w.__dcRootName){
460
460
  const r=w.__dcRootName&&w.__dcRootName();
461
461
  if(r){
462
- const language = ax.lang==="vi"?"Tiếng Việt":ax.lang==="ja"?"日本語":"English";
463
- w.__dcSetProps(r,{language});
462
+ const nextProps={theme:ax.theme||"light",element:ax.elm||"tho"};
463
+ if(ax.lang) nextProps.language=ax.lang==="vi"?"Tiếng Việt":ax.lang==="ja"?"日本語":"English";
464
+ w.__dcSetProps(r,nextProps);
464
465
  }
465
466
  }
466
467
  }catch(e){}
@@ -23,25 +23,25 @@ a{color:var(--cs-color-link)}a:hover{color:var(--cs-color-link-hover)}
23
23
  <body>
24
24
  <div style="display:grid;grid-template-columns:repeat(5,1fr);gap:14px;margin-bottom:16px">
25
25
  <div class="col"><div class="el">Mộc · Wood</div>
26
- <div class="v"><span class="sw" style="background:#ADD386"></span><div><div class="vn">leaf ·middle</div><div class="vx">#ADD386</div></div></div>
27
- <div class="v"><span class="sw" style="background:#C7E2AC"></span><div><div class="vn">bamboo</div><div class="vx">#C7E2AC</div></div></div>
28
- <div class="v"><span class="sw" style="background:#668643"></span><div><div class="vn">forest</div><div class="vx">#668643</div></div></div></div>
26
+ <div class="v"><span class="sw" style="background:#82CF66"></span><div><div class="vn">leaf ·middle</div><div class="vx">#82CF66</div></div></div>
27
+ <div class="v"><span class="sw" style="background:#DAEFAA"></span><div><div class="vn">bamboo</div><div class="vx">#DAEFAA</div></div></div>
28
+ <div class="v"><span class="sw" style="background:#105C36"></span><div><div class="vn">forest</div><div class="vx">#105C36</div></div></div></div>
29
29
  <div class="col"><div class="el">Hỏa · Fire</div>
30
- <div class="v"><span class="sw" style="background:#FFAD8E"></span><div><div class="vn">ember ·middle</div><div class="vx">#FFAD8E</div></div></div>
31
- <div class="v"><span class="sw" style="background:#BB5A32"></span><div><div class="vn">lava</div><div class="vx">#BB5A32</div></div></div>
32
- <div class="v"><span class="sw" style="background:#FFC7CC"></span><div><div class="vn">plasma</div><div class="vx">#FFC7CC</div></div></div></div>
30
+ <div class="v"><span class="sw" style="background:#FC9C69"></span><div><div class="vn">ember ·middle</div><div class="vx">#FC9C69</div></div></div>
31
+ <div class="v"><span class="sw" style="background:#93050F"></span><div><div class="vn">lava</div><div class="vx">#93050F</div></div></div>
32
+ <div class="v"><span class="sw" style="background:#FEDBDC"></span><div><div class="vn">plasma</div><div class="vx">#FEDBDC</div></div></div></div>
33
33
  <div class="col" style="outline:2px solid var(--cs-color-brand-ochre);outline-offset:2px"><div class="el">Thổ · Earth</div>
34
34
  <div class="v"><span class="sw" style="background:#F4BA17"></span><div><div class="vn">ochre ·middle</div><div class="vx">#F4BA17</div></div></div>
35
- <div class="v"><span class="sw" style="background:#98741A"></span><div><div class="vn">clay</div><div class="vx">#98741A</div></div></div>
36
- <div class="v"><span class="sw" style="background:#F6D389"></span><div><div class="vn">sand</div><div class="vx">#F6D389</div></div></div></div>
35
+ <div class="v"><span class="sw" style="background:#723E06"></span><div><div class="vn">clay</div><div class="vx">#723E06</div></div></div>
36
+ <div class="v"><span class="sw" style="background:#F9E3A7"></span><div><div class="vn">sand</div><div class="vx">#F9E3A7</div></div></div></div>
37
37
  <div class="col"><div class="el">Kim · Metal</div>
38
- <div class="v"><span class="sw" style="background:#D1C2A8"></span><div><div class="vn">champagne ·middle</div><div class="vx">#D1C2A8</div></div></div>
39
- <div class="v"><span class="sw" style="background:#707D7E"></span><div><div class="vn">steel</div><div class="vx">#707D7E</div></div></div>
40
- <div class="v"><span class="sw" style="background:#E1D6C3"></span><div><div class="vn">titanium</div><div class="vx">#E1D6C3</div></div></div></div>
38
+ <div class="v"><span class="sw" style="background:#C4B78F"></span><div><div class="vn">champagne ·middle</div><div class="vx">#C4B78F</div></div></div>
39
+ <div class="v"><span class="sw" style="background:#384D72"></span><div><div class="vn">steel</div><div class="vx">#384D72</div></div></div>
40
+ <div class="v"><span class="sw" style="background:#D3E7FC"></span><div><div class="vn">titanium</div><div class="vx">#D3E7FC</div></div></div></div>
41
41
  <div class="col"><div class="el">Thủy · Water</div>
42
- <div class="v"><span class="sw" style="background:#87D2E1"></span><div><div class="vn">river ·middle</div><div class="vx">#87D2E1</div></div></div>
43
- <div class="v"><span class="sw" style="background:#428693"></span><div><div class="vn">ocean</div><div class="vx">#428693</div></div></div>
44
- <div class="v"><span class="sw" style="background:#AEE2ED"></span><div><div class="vn">mist</div><div class="vx">#AEE2ED</div></div></div></div>
42
+ <div class="v"><span class="sw" style="background:#00CEE4"></span><div><div class="vn">river ·middle</div><div class="vx">#00CEE4</div></div></div>
43
+ <div class="v"><span class="sw" style="background:#06556F"></span><div><div class="vn">ocean</div><div class="vx">#06556F</div></div></div>
44
+ <div class="v"><span class="sw" style="background:#9DF7F5"></span><div><div class="vn">mist</div><div class="vx">#9DF7F5</div></div></div></div>
45
45
  </div>
46
46
  <div style="display:grid;grid-template-columns:repeat(5,1fr);gap:14px">
47
47
  <div class="wash"><img src="../assets/aurora-moc.webp" alt="Mộc aurora wash"><span class="wl">Mộc</span></div>