@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
package/dist/styles.css CHANGED
@@ -1,4 +1,4 @@
1
- /* CyberSkill Design System v2.8.0 — flattened build of ../styles.css (same closure, same order, no @import chain).
1
+ /* CyberSkill Design System v2.9.0 — flattened build of ../styles.css (same closure, same order, no @import chain).
2
2
  * Link THIS file from cards, kits and templates; keep editing the modular sources under tokens/ and base/ and
3
3
  * regenerate this file after any change. url() paths are already relative to dist/ (../fonts, ../assets). */
4
4
 
@@ -87,7 +87,7 @@
87
87
  --cs-color-text-primary: #45210E; /* = Umber */
88
88
  --cs-color-text-inverse: #FFFFFF;
89
89
  --cs-color-text-accent: #6E3B0E; /* accessible ochre-adjacent link/accent text */
90
- --cs-color-text-muted: #3F2D21; /* Secondary text: APCA75 on page/panel/raised, including all element variants */
90
+ --cs-color-text-muted: #5E4436; /* Secondary text: warm umber-taupe, APCA75+ on neutral/soft/middle; deep packs solve per-surface */
91
91
 
92
92
  /* ---- Semantic fills + paired foregrounds (literal-on-semantic, UX-008) ---- */
93
93
  --cs-color-semantic-success: #166534;
@@ -331,9 +331,9 @@ a:hover { color: var(--cs-color-link-hover); }
331
331
  /* ---- Shadow scale (warm; umber-tinted) ---- */
332
332
  --cs-shadow-xs: 0 1px 2px rgba(69, 33, 14, 0.06);
333
333
  --cs-shadow-sm: 0 1px 3px rgba(69, 33, 14, 0.04), 0 8px 24px rgba(69, 33, 14, 0.06); /* standard glass card */
334
- --cs-shadow-md: 0 12px 30px rgba(31, 19, 11, 0.18); /* popover / AI panel */
334
+ --cs-shadow-md: 0 12px 30px rgba(69, 33, 14, 0.14); /* popover / AI panel */
335
335
  --cs-shadow-lg: 0 20px 60px rgba(69, 33, 14, 0.18); /* heavy glass */
336
- --cs-shadow-xl: 0 24px 80px rgba(31, 19, 11, 0.26); /* dialog */
336
+ --cs-shadow-xl: 0 24px 80px rgba(69, 33, 14, 0.24); /* dialog */
337
337
  }
338
338
 
339
339
  /* Dark theme: warm-umber shadows vanish on dark surfaces, so switch to deeper
@@ -469,7 +469,7 @@ a:hover { color: var(--cs-color-link-hover); }
469
469
  * Generative cycle (Tương sinh) only for grad-b: Mộc→Hỏa→Thổ→Kim→Thủy→Mộc. */
470
470
  :root {
471
471
  --cs-accent: #F4BA17;
472
- --cs-accent-strong: #916D11;
472
+ --cs-accent-strong: #A4631E;
473
473
  --cs-accent-bright: #F4BA17;
474
474
  --cs-accent-on: #45210E;
475
475
  --cs-accent-on-strong: #FFFFFF;
@@ -512,7 +512,7 @@ a:hover { color: var(--cs-color-link-hover); }
512
512
  --_cs-dark-color-text-inverse: #1a1108;
513
513
  --_cs-light-color-text-accent: #6E3B0E;
514
514
  --_cs-dark-color-text-accent: #FECD5D;
515
- --_cs-light-color-text-muted: #3F2D21;
515
+ --_cs-light-color-text-muted: #5E4436;
516
516
  --_cs-dark-color-text-muted: #E9D6C2;
517
517
  --_cs-light-color-semantic-success: #166534;
518
518
  --_cs-dark-color-semantic-success: #4ADE80;
@@ -564,16 +564,16 @@ a:hover { color: var(--cs-color-link-hover); }
564
564
  --_cs-dark-shadow-xs: 0 1px 2px rgba(0, 0, 0, 0.40);
565
565
  --_cs-light-shadow-sm: 0 1px 3px rgba(69, 33, 14, 0.04), 0 8px 24px rgba(69, 33, 14, 0.06);
566
566
  --_cs-dark-shadow-sm: 0 1px 3px rgba(0, 0, 0, 0.34), 0 8px 24px rgba(0, 0, 0, 0.42);
567
- --_cs-light-shadow-md: 0 12px 30px rgba(31, 19, 11, 0.18);
567
+ --_cs-light-shadow-md: 0 12px 30px rgba(69, 33, 14, 0.14);
568
568
  --_cs-dark-shadow-md: 0 12px 30px rgba(0, 0, 0, 0.50);
569
569
  --_cs-light-shadow-lg: 0 20px 60px rgba(69, 33, 14, 0.18);
570
570
  --_cs-dark-shadow-lg: 0 20px 60px rgba(0, 0, 0, 0.55);
571
- --_cs-light-shadow-xl: 0 24px 80px rgba(31, 19, 11, 0.26);
571
+ --_cs-light-shadow-xl: 0 24px 80px rgba(69, 33, 14, 0.24);
572
572
  --_cs-dark-shadow-xl: 0 24px 80px rgba(0, 0, 0, 0.62);
573
573
  --_cs-light-accent: #F4BA17;
574
574
  --_cs-dark-accent: #F4BA17;
575
- --_cs-light-accent-strong: #916D11;
576
- --_cs-dark-accent-strong: #916D11;
575
+ --_cs-light-accent-strong: #A4631E;
576
+ --_cs-dark-accent-strong: #A4631E;
577
577
  --_cs-light-accent-bright: #F4BA17;
578
578
  --_cs-dark-accent-bright: #F4BA17;
579
579
  --_cs-light-accent-on: #45210E;
@@ -630,6 +630,8 @@ a:hover { color: var(--cs-color-link-hover); }
630
630
  --_cs-dark-color-text-accent: #F9E5AE;
631
631
  --_cs-light-color-link: #695300;
632
632
  --_cs-dark-color-link: #F9E5AE;
633
+ --_cs-light-color-text-muted: #5E4436;
634
+ --_cs-dark-color-text-muted: #EBD8C4;
633
635
  --_cs-light-color-link-hover: #45210E;
634
636
  --_cs-dark-color-link-hover: #f5ead9;
635
637
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -649,8 +651,8 @@ a:hover { color: var(--cs-color-link-hover); }
649
651
  [data-cs-element="tho"] {
650
652
  --_cs-light-accent: #F4BA17;
651
653
  --_cs-dark-accent: #E9B321;
652
- --_cs-light-accent-strong: #916D11;
653
- --_cs-dark-accent-strong: #6E5205;
654
+ --_cs-light-accent-strong: #A4631E;
655
+ --_cs-dark-accent-strong: #7D480C;
654
656
  --_cs-light-accent-bright: #F4BA17;
655
657
  --_cs-dark-accent-bright: #FDD378;
656
658
  --_cs-light-accent-on: #45210E;
@@ -669,8 +671,10 @@ a:hover { color: var(--cs-color-link-hover); }
669
671
  --_cs-dark-accent-grad-b: #C4B78F;
670
672
  --_cs-light-color-text-accent: #6E3B0E;
671
673
  --_cs-dark-color-text-accent: #FFD57A;
672
- --_cs-light-color-link: #644A05;
674
+ --_cs-light-color-link: #744000;
673
675
  --_cs-dark-color-link: #FFD57A;
676
+ --_cs-light-color-text-muted: #5E4436;
677
+ --_cs-dark-color-text-muted: #E9D6C2;
674
678
  --_cs-light-color-link-hover: #45210E;
675
679
  --_cs-dark-color-link-hover: #f5ead9;
676
680
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -682,7 +686,7 @@ a:hover { color: var(--cs-color-link-hover); }
682
686
  --_cs-light-color-border-default: color-mix(in oklab, var(--_cs-light-accent) 40%, #E7D9C6);
683
687
  --_cs-dark-color-border-default: color-mix(in oklab, var(--_cs-dark-accent) 40%, #4a3a2c);
684
688
  --_cs-light-component-button-primary-bg: #45210E;
685
- --_cs-dark-component-button-primary-bg: #6E5205;
689
+ --_cs-dark-component-button-primary-bg: #7D480C;
686
690
  --_cs-light-component-button-primary-fg: #FFFFFF;
687
691
  --_cs-dark-component-button-primary-fg: #FFFFFF;
688
692
  }
@@ -712,6 +716,8 @@ a:hover { color: var(--cs-color-link-hover); }
712
716
  --_cs-dark-color-text-accent: #FFD2AF;
713
717
  --_cs-light-color-link: #462402;
714
718
  --_cs-dark-color-link: #FFD2AF;
719
+ --_cs-light-color-text-muted: #442B1E;
720
+ --_cs-dark-color-text-muted: #E9D6C2;
715
721
  --_cs-light-color-link-hover: #45210E;
716
722
  --_cs-dark-color-link-hover: #f5ead9;
717
723
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -753,6 +759,8 @@ a:hover { color: var(--cs-color-link-hover); }
753
759
  --_cs-dark-color-text-accent: #FDDDDE;
754
760
  --_cs-light-color-link: #714B4D;
755
761
  --_cs-dark-color-link: #FDDDDE;
762
+ --_cs-light-color-text-muted: #5E4436;
763
+ --_cs-dark-color-text-muted: #E9D6C2;
756
764
  --_cs-light-color-link-hover: #45210E;
757
765
  --_cs-dark-color-link-hover: #f5ead9;
758
766
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -794,6 +802,8 @@ a:hover { color: var(--cs-color-link-hover); }
794
802
  --_cs-dark-color-text-accent: #FFD1BA;
795
803
  --_cs-light-color-link: #793609;
796
804
  --_cs-dark-color-link: #FFD1BA;
805
+ --_cs-light-color-text-muted: #5E4436;
806
+ --_cs-dark-color-text-muted: #E9D6C2;
797
807
  --_cs-light-color-link-hover: #45210E;
798
808
  --_cs-dark-color-link-hover: #f5ead9;
799
809
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -835,6 +845,8 @@ a:hover { color: var(--cs-color-link-hover); }
835
845
  --_cs-dark-color-text-accent: #FDD0CA;
836
846
  --_cs-light-color-link: #550306;
837
847
  --_cs-dark-color-link: #FDD0CA;
848
+ --_cs-light-color-text-muted: #422A1D;
849
+ --_cs-dark-color-text-muted: #E9D6C2;
838
850
  --_cs-light-color-link-hover: #45210E;
839
851
  --_cs-dark-color-link-hover: #f5ead9;
840
852
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -876,6 +888,8 @@ a:hover { color: var(--cs-color-link-hover); }
876
888
  --_cs-dark-color-text-accent: #A6F8F6;
877
889
  --_cs-light-color-link: #116060;
878
890
  --_cs-dark-color-link: #A6F8F6;
891
+ --_cs-light-color-text-muted: #5E4436;
892
+ --_cs-dark-color-text-muted: #EBD8C4;
879
893
  --_cs-light-color-link-hover: #45210E;
880
894
  --_cs-dark-color-link-hover: #f5ead9;
881
895
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -917,6 +931,8 @@ a:hover { color: var(--cs-color-link-hover); }
917
931
  --_cs-dark-color-text-accent: #79EDFF;
918
932
  --_cs-light-color-link: #0D535C;
919
933
  --_cs-dark-color-link: #79EDFF;
934
+ --_cs-light-color-text-muted: #5E4436;
935
+ --_cs-dark-color-text-muted: #E9D6C2;
920
936
  --_cs-light-color-link-hover: #45210E;
921
937
  --_cs-dark-color-link-hover: #f5ead9;
922
938
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -958,6 +974,8 @@ a:hover { color: var(--cs-color-link-hover); }
958
974
  --_cs-dark-color-text-accent: #AFE2FA;
959
975
  --_cs-light-color-link: #003142;
960
976
  --_cs-dark-color-link: #AFE2FA;
977
+ --_cs-light-color-text-muted: #452D1F;
978
+ --_cs-dark-color-text-muted: #E9D6C2;
961
979
  --_cs-light-color-link-hover: #45210E;
962
980
  --_cs-dark-color-link-hover: #f5ead9;
963
981
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -999,6 +1017,8 @@ a:hover { color: var(--cs-color-link-hover); }
999
1017
  --_cs-dark-color-text-accent: #DCF0B1;
1000
1018
  --_cs-light-color-link: #4A5B02;
1001
1019
  --_cs-dark-color-link: #DCF0B1;
1020
+ --_cs-light-color-text-muted: #5E4436;
1021
+ --_cs-dark-color-text-muted: #EBD8C4;
1002
1022
  --_cs-light-color-link-hover: #45210E;
1003
1023
  --_cs-dark-color-link-hover: #f5ead9;
1004
1024
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1040,6 +1060,8 @@ a:hover { color: var(--cs-color-link-hover); }
1040
1060
  --_cs-dark-color-text-accent: #B2EC9E;
1041
1061
  --_cs-light-color-link: #24570B;
1042
1062
  --_cs-dark-color-link: #B2EC9E;
1063
+ --_cs-light-color-text-muted: #5E4436;
1064
+ --_cs-dark-color-text-muted: #E9D6C2;
1043
1065
  --_cs-light-color-link-hover: #45210E;
1044
1066
  --_cs-dark-color-link-hover: #f5ead9;
1045
1067
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1081,6 +1103,8 @@ a:hover { color: var(--cs-color-link-hover); }
1081
1103
  --_cs-dark-color-text-accent: #B0E7C3;
1082
1104
  --_cs-light-color-link: #04361D;
1083
1105
  --_cs-dark-color-link: #B0E7C3;
1106
+ --_cs-light-color-text-muted: #452D1F;
1107
+ --_cs-dark-color-text-muted: #E9D6C2;
1084
1108
  --_cs-light-color-link-hover: #45210E;
1085
1109
  --_cs-dark-color-link-hover: #f5ead9;
1086
1110
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1122,6 +1146,8 @@ a:hover { color: var(--cs-color-link-hover); }
1122
1146
  --_cs-dark-color-text-accent: #D6E9FD;
1123
1147
  --_cs-light-color-link: #3D5670;
1124
1148
  --_cs-dark-color-link: #D6E9FD;
1149
+ --_cs-light-color-text-muted: #5E4436;
1150
+ --_cs-dark-color-text-muted: #EBD8C4;
1125
1151
  --_cs-light-color-link-hover: #45210E;
1126
1152
  --_cs-dark-color-link-hover: #f5ead9;
1127
1153
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1163,6 +1189,8 @@ a:hover { color: var(--cs-color-link-hover); }
1163
1189
  --_cs-dark-color-text-accent: #E5DBBA;
1164
1190
  --_cs-light-color-link: #564B27;
1165
1191
  --_cs-dark-color-link: #E5DBBA;
1192
+ --_cs-light-color-text-muted: #5E4436;
1193
+ --_cs-dark-color-text-muted: #E9D6C2;
1166
1194
  --_cs-light-color-link-hover: #45210E;
1167
1195
  --_cs-dark-color-link-hover: #f5ead9;
1168
1196
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1204,6 +1232,8 @@ a:hover { color: var(--cs-color-link-hover); }
1204
1232
  --_cs-dark-color-text-accent: #C8DBFD;
1205
1233
  --_cs-light-color-link: #1B2E4C;
1206
1234
  --_cs-dark-color-link: #C8DBFD;
1235
+ --_cs-light-color-text-muted: #442B1E;
1236
+ --_cs-dark-color-text-muted: #E9D6C2;
1207
1237
  --_cs-light-color-link-hover: #45210E;
1208
1238
  --_cs-dark-color-link-hover: #f5ead9;
1209
1239
  --_cs-light-color-surface-panel: color-mix(in oklab, var(--_cs-light-accent) 4%, #FFFFFF);
@@ -1274,10 +1304,10 @@ a:hover { color: var(--cs-color-link-hover); }
1274
1304
  /* ===== tokens/styles.css ===== */
1275
1305
  /* Style axis — data-cs-style packs.
1276
1306
  *
1277
- * Sole pack today: liquid-glass ≡ current elevation + base/glass.css materials.
1278
- * Absent attribute ≡ liquid-glass (same default pattern as light theme / Thổ middle).
1279
- * Future packs override glass scalars / material composition only and must consume
1280
- * the existing 10 --cs-accent-* roles (including on-strong) — never invent parallel Element packs.
1307
+ * Supported packs:
1308
+ * - liquid-glass (default; absent ≡ liquid-glass) — frosted optical depth + base/glass.css materials.
1309
+ * - matte-paper — opaque crisp paper/ledger surfaces with zero backdrop blur for dense/editorial views.
1310
+ * All style packs consume the existing 10 --cs-accent-* roles (including on-strong) — never invent parallel Element packs.
1281
1311
  */
1282
1312
 
1283
1313
  :root {
@@ -1288,6 +1318,10 @@ a:hover { color: var(--cs-color-link-hover); }
1288
1318
  --cs-style-pack: liquid-glass; /* @kind other */
1289
1319
  }
1290
1320
 
1321
+ [data-cs-style="matte-paper"] {
1322
+ --cs-style-pack: matte-paper; /* @kind other */
1323
+ }
1324
+
1291
1325
  /* ===== tokens/theme-attributes.css ===== */
1292
1326
  /* CyberSkill — Theme attributes: density + contrast (TASK-IMP-027 / CDS-THEME-002).
1293
1327
  * NOT a fifth product identity axis. Compose with data-theme only.
@@ -1515,11 +1549,12 @@ body {
1515
1549
  min-width: var(--cs-component-button-md-minHeight, 44px);
1516
1550
  padding-block: var(--cs-component-button-md-paddingY, 12px);
1517
1551
  padding-inline: var(--cs-component-button-md-paddingX, 20px);
1552
+ text-decoration: none;
1518
1553
  transition: background var(--cs-duration-fast, 120ms) var(--cs-ease-standard, ease),
1519
1554
  border-color var(--cs-duration-fast, 120ms) var(--cs-ease-standard, ease),
1520
1555
  filter var(--cs-duration-fast, 120ms) var(--cs-ease-standard, ease);
1521
1556
  }
1522
- .cs-button:hover { filter: brightness(1.08); }
1557
+ .cs-button:hover { color: var(--cs-component-button-primary-fg, #ffffff); filter: brightness(1.08); text-decoration: none; }
1523
1558
  .cs-button:active { transform: translateY(0.5px); }
1524
1559
 
1525
1560
  .cs-button:focus-visible,
@@ -1535,20 +1570,32 @@ body {
1535
1570
  border-color: var(--_cs-light, var(--cs-accent-strong, #45210e))var(--_cs-dark, var(--cs-accent, #f4ba17));
1536
1571
  color: var(--_cs-light, var(--cs-color-text-accent, #45210e))var(--_cs-dark, var(--cs-color-text-accent, #f4ba17));
1537
1572
  }
1538
- .cs-button--secondary:hover { background: var(--cs-color-surface-raised, #fbf4e9); filter: none; }
1573
+ .cs-button--secondary:hover {
1574
+ background: var(--cs-color-surface-raised, #fbf4e9);
1575
+ color: var(--_cs-light, var(--cs-color-text-accent, #45210e))var(--_cs-dark, var(--cs-color-text-accent, #f4ba17));
1576
+ filter: none;
1577
+ }
1539
1578
 
1540
1579
  .cs-button--tertiary {
1541
1580
  background: var(--cs-color-surface-raised, #fbf4e9);
1542
1581
  border-color: transparent;
1543
1582
  color: var(--_cs-light, var(--cs-color-brand-umber, #45210e))var(--_cs-dark, var(--cs-color-text-primary));
1544
1583
  }
1545
- .cs-button--tertiary:hover { filter: none; border-color: var(--cs-color-border-default, #e7d9c6); }
1584
+ .cs-button--tertiary:hover {
1585
+ border-color: var(--cs-color-border-default, #e7d9c6);
1586
+ color: var(--_cs-light, var(--cs-color-brand-umber, #45210e))var(--_cs-dark, var(--cs-color-text-primary));
1587
+ filter: none;
1588
+ }
1546
1589
 
1547
1590
  .cs-button--ghost {
1548
1591
  background: transparent;
1549
1592
  color: var(--_cs-light, var(--cs-color-brand-umber, #45210e))var(--_cs-dark, var(--cs-color-text-primary));
1550
1593
  }
1551
- .cs-button--ghost:hover { background: var(--cs-color-surface-raised, #fbf4e9); filter: none; }
1594
+ .cs-button--ghost:hover {
1595
+ background: var(--cs-color-surface-raised, #fbf4e9);
1596
+ color: var(--_cs-light, var(--cs-color-brand-umber, #45210e))var(--_cs-dark, var(--cs-color-text-primary));
1597
+ filter: none;
1598
+ }
1552
1599
 
1553
1600
  /* Dark theme: umber text/border on the low-emphasis buttons is invisible on dark surfaces —
1554
1601
  remap so secondary reads as an ochre outline and tertiary/ghost use the light body colour. */
@@ -1557,12 +1604,17 @@ body {
1557
1604
  background: var(--cs-color-semantic-danger, #b42318);
1558
1605
  color: var(--cs-color-semantic-danger-fg, #ffffff);
1559
1606
  }
1607
+ .cs-button--danger:hover { color: var(--cs-color-semantic-danger-fg, #ffffff); }
1560
1608
 
1561
1609
  .cs-button--danger-ghost {
1562
1610
  background: transparent;
1563
1611
  color: var(--cs-color-semantic-danger-text, #4b0502);
1564
1612
  }
1565
- .cs-button--danger-ghost:hover { background: color-mix(in oklab, var(--cs-color-semantic-danger, #b42318) 3%, transparent); filter: none; }
1613
+ .cs-button--danger-ghost:hover {
1614
+ background: color-mix(in oklab, var(--cs-color-semantic-danger, #b42318) 3%, transparent);
1615
+ color: var(--cs-color-semantic-danger-text, #4b0502);
1616
+ filter: none;
1617
+ }
1566
1618
 
1567
1619
  .cs-button--xs {
1568
1620
  min-height: var(--cs-component-button-xs-minHeight, 28px);
@@ -1582,6 +1634,8 @@ body {
1582
1634
  padding-block: var(--cs-component-button-lg-paddingY, 16px);
1583
1635
  padding-inline: var(--cs-component-button-lg-paddingX, 28px);
1584
1636
  }
1637
+ .cs-button--md { min-height: var(--cs-component-button-md-minHeight, 44px); }
1638
+ .cs-button__icon, .cs-button__label { display: inline; }
1585
1639
  .cs-button--full { inline-size: 100%; }
1586
1640
 
1587
1641
  .cs-button.is-disabled,
@@ -1606,7 +1660,7 @@ body {
1606
1660
  /* ---- TextField ---- */
1607
1661
  .cs-field { align-content: start; color: var(--cs-color-text-primary, #45210e); display: grid; gap: 0.375rem; }
1608
1662
  .cs-field__label { font-weight: 700; }
1609
- .cs-field__description { color: var(--cs-color-text-muted, #3f2d21); font-size: 0.875rem; }
1663
+ .cs-field__description { color: var(--cs-color-text-muted, #5e4436); font-size: 0.875rem; }
1610
1664
  .cs-field__control {
1611
1665
  border: 1px solid var(--cs-component-textfield-border-default, #bfa58f);
1612
1666
  border-radius: var(--cs-radius-md, 8px);
@@ -1617,7 +1671,7 @@ body {
1617
1671
  padding-block: var(--cs-component-textfield-paddingY, 10px);
1618
1672
  padding-inline: var(--cs-component-textfield-paddingX, 12px);
1619
1673
  }
1620
- .cs-field__control::placeholder { color: var(--cs-color-text-muted, #3f2d21); opacity: 0.7; }
1674
+ .cs-field__control::placeholder { color: var(--cs-color-text-muted, #5e4436); opacity: 0.7; }
1621
1675
  .cs-field.is-invalid .cs-field__control, .cs-field__control.is-invalid, .cs-field__control[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger, #b42318); }
1622
1676
  .cs-field__error { color: var(--cs-color-semantic-danger-text, #4b0502); font-size: 0.875rem; }
1623
1677
 
@@ -1627,7 +1681,7 @@ body {
1627
1681
  .cs-dialog {
1628
1682
  background: var(--cs-color-surface-panel, #ffffff);
1629
1683
  border-radius: var(--cs-radius-lg, 14px);
1630
- box-shadow: var(--cs-shadow-xl, 0 24px 80px rgba(31, 19, 11, 0.26));
1684
+ box-shadow: var(--cs-shadow-xl, 0 24px 80px rgba(69, 33, 14, 0.24));
1631
1685
  color: var(--cs-color-text-primary, #45210e);
1632
1686
  left: 0;
1633
1687
  right: 0;
@@ -1644,7 +1698,8 @@ body {
1644
1698
  }
1645
1699
  .cs-dialog__header,
1646
1700
  .cs-dialog__actions,
1647
- .cs-review-gate__actions {
1701
+ .cs-review-gate__actions,
1702
+ .cs-human-review-gate__actions {
1648
1703
  align-items: center; display: flex; flex-wrap: wrap; gap: 0.75rem; justify-content: space-between;
1649
1704
  }
1650
1705
  .cs-dialog__actions { justify-content: flex-end; }
@@ -1652,10 +1707,12 @@ body {
1652
1707
  .cs-dialog__body { margin-block: 1rem; }
1653
1708
  /* AlertDialog — confirm/destructive modal (shares dialog layer; tighter panel) */
1654
1709
  .cs-alert-dialog { max-inline-size: min(28rem, calc(100vw - 2rem)); }
1710
+ .cs-alert-dialog__cancel, .cs-alert-dialog__confirm { box-sizing: border-box; }
1655
1711
  .cs-alert-dialog--destructive .cs-dialog__title { color: var(--cs-color-semantic-danger-text, #4b0502); }
1656
1712
  @media (max-width: 640px) {
1657
1713
  .cs-dialog { max-inline-size: calc(100vw - 1rem); top: 4vh; padding: var(--cs-space-4, 16px); }
1658
- .cs-dialog__actions .cs-button, .cs-review-gate__actions .cs-button { flex: 1 1 auto; }
1714
+ .cs-dialog__actions .cs-button, .cs-review-gate__actions .cs-button, .cs-human-review-gate__actions .cs-button { flex: 1 1 auto; }
1715
+ .cs-review-gate, .cs-human-review-gate { padding: var(--cs-space-3, 12px); gap: 0.5rem; }
1659
1716
  }
1660
1717
 
1661
1718
 
@@ -1694,10 +1751,10 @@ body {
1694
1751
  }
1695
1752
  .cs-table thead th {
1696
1753
  font-size: var(--cs-font-size-xs, 0.75rem); text-transform: uppercase;
1697
- letter-spacing: var(--cs-letter-spacing-caps, 0.08em); color: var(--cs-color-text-muted, #3f2d21);
1754
+ letter-spacing: var(--cs-letter-spacing-caps, 0.08em); color: var(--cs-color-text-muted, #5e4436);
1698
1755
  }
1699
1756
  .cs-table caption { font-weight: 700; margin-block-end: 0.5rem; text-align: start; }
1700
- .cs-table__empty { color: var(--cs-color-text-muted, #3f2d21); }
1757
+ .cs-table__empty { color: var(--cs-color-text-muted, #5e4436); }
1701
1758
 
1702
1759
  /* ---- AIDisclosureBadge ---- */
1703
1760
  .cs-ai-disclosure { display: inline-block; position: relative; }
@@ -1710,35 +1767,99 @@ body {
1710
1767
  background: var(--cs-color-surface-panel, #ffffff);
1711
1768
  color: var(--cs-color-text-primary, #45210e);
1712
1769
  border: 1px solid var(--cs-color-border-subtle, var(--_cs-border-subtle)); border-radius: var(--cs-radius-md, 8px);
1713
- box-shadow: var(--cs-shadow-xs, 0 1px 2px rgba(31, 19, 11, 0.08));
1770
+ box-shadow: var(--cs-shadow-xs, 0 1px 2px rgba(69, 33, 14, 0.06));
1714
1771
  display: grid; gap: 0.375rem; inset-block-start: calc(100% + 0.375rem); inset-inline-start: 0;
1715
1772
  min-inline-size: 18rem; padding: 0.75rem; position: absolute; z-index: var(--cs-depth-dropdown, 60);
1716
1773
  }
1717
- .cs-ai-disclosure__sources { color: var(--cs-color-text-muted, #3f2d21); font-size: 0.8125rem; }
1774
+ .cs-ai-disclosure__details { margin: 0; }
1775
+ .cs-ai-disclosure__sources { color: var(--cs-color-text-muted, #5e4436); font-size: 0.8125rem; }
1718
1776
 
1719
1777
  /* ---- HumanReviewGate ---- */
1720
- .cs-review-gate {
1778
+ .cs-review-gate,
1779
+ .cs-human-review-gate {
1721
1780
  border: 1px solid var(--cs-color-semantic-warning, #92400e);
1722
1781
  border-radius: var(--cs-radius-md, 8px); color: var(--cs-color-text-primary, #45210e);
1723
1782
  display: grid; gap: 0.75rem; padding: var(--cs-space-4, 16px);
1724
1783
  background: color-mix(in oklab, var(--cs-color-semantic-warning, #92400e) 5%, var(--cs-color-surface-panel, #fff));
1725
1784
  }
1726
- .cs-review-gate__risk {
1785
+ .cs-review-gate__risk,
1786
+ .cs-human-review-gate__risk {
1727
1787
  color: var(--cs-color-semantic-warning-text, #441801); font-weight: 700;
1728
1788
  text-transform: uppercase; letter-spacing: 0.04em; font-size: 0.8125rem;
1729
1789
  }
1730
- .cs-review-gate__summary { margin: 0; }
1731
- .cs-review-gate__reviewer { margin: 0; color: var(--cs-color-text-muted, #3f2d21); font-size: 0.875rem; }
1790
+ .cs-review-gate__summary,
1791
+ .cs-human-review-gate__summary { margin: 0; }
1792
+ .cs-review-gate__reviewer,
1793
+ .cs-human-review-gate__reviewer { margin: 0; color: var(--cs-color-text-muted, #5e4436); font-size: 0.875rem; }
1732
1794
 
1733
- /* ---- Logo ---- */
1795
+ /* ---- Logo & Icon ---- */
1734
1796
  .cs-logo { block-size: auto; display: inline-block; vertical-align: middle; }
1797
+ .cs-icon { vertical-align: middle; flex: none; }
1798
+
1799
+ /* ---- Legal / A4 Document Sheet Primitives (.cs-doc-*) ---- */
1800
+ .cs-doc-sheet {
1801
+ background: var(--cs-color-surface-panel, #ffffff);
1802
+ border: 1px solid var(--cs-color-border-default, #e7d9c6);
1803
+ border-radius: var(--cs-radius-lg, 12px);
1804
+ box-shadow: var(--cs-shadow-md);
1805
+ color: var(--cs-color-text-primary, #45210e);
1806
+ inline-size: 100%;
1807
+ max-inline-size: 860px;
1808
+ margin-inline: auto;
1809
+ padding: clamp(20px, 4vw, 48px) clamp(20px, 4.5vw, 56px);
1810
+ box-sizing: border-box;
1811
+ }
1812
+ .cs-doc-motto {
1813
+ text-align: center;
1814
+ padding-block-end: var(--cs-space-4, 16px);
1815
+ margin-block-end: var(--cs-space-4, 16px);
1816
+ border-block-end: 2px double var(--cs-color-border-strong, var(--cs-color-border-default));
1817
+ }
1818
+ .cs-doc-section-bar {
1819
+ display: flex;
1820
+ align-items: center;
1821
+ justify-content: space-between;
1822
+ gap: var(--cs-space-3, 12px);
1823
+ padding: 8px 12px;
1824
+ margin-block: var(--cs-space-4, 16px) var(--cs-space-3, 12px);
1825
+ background: var(--cs-color-surface-raised, #fbf4e9);
1826
+ border-inline-start: 3px solid var(--cs-accent, #f4ba17);
1827
+ border-radius: 0 var(--cs-radius-sm, 6px) var(--cs-radius-sm, 6px) 0;
1828
+ font-weight: 700;
1829
+ }
1830
+ .cs-doc-blank,
1831
+ .cs-doc-field {
1832
+ display: inline-flex;
1833
+ align-items: baseline;
1834
+ gap: 4px;
1835
+ min-inline-size: 5rem;
1836
+ padding-inline: 6px;
1837
+ padding-block: 1px;
1838
+ border-block-end: 1.5px dotted var(--cs-color-text-accent, var(--cs-accent-strong));
1839
+ background: color-mix(in oklab, var(--cs-accent, #f4ba17) 14%, transparent);
1840
+ border-radius: 3px 3px 0 0;
1841
+ font-weight: 600;
1842
+ color: var(--cs-color-text-primary, #45210e);
1843
+ }
1735
1844
 
1736
1845
  /* ---- UI font binding: components consume the brand UI-font token ---- */
1737
1846
  .cs-button, .cs-field, .cs-field__control, .cs-dialog, .cs-table,
1738
- .cs-ai-disclosure, .cs-review-gate, .cs-logo {
1847
+ .cs-ai-disclosure, .cs-review-gate, .cs-human-review-gate, .cs-logo, .cs-doc-sheet {
1739
1848
  font-family: var(--cs-font-family-ui, ui-sans-serif, system-ui);
1740
1849
  }
1741
1850
 
1851
+ /* ---- Compact density scope (44px interactive touch floors remain intact) ---- */
1852
+ [data-cs-density="compact"] :is(.cs-table th, .cs-table td) { padding: 6px 10px; }
1853
+ [data-cs-density="compact"] .cs-dialog { padding: var(--cs-density-space-6, 18px); }
1854
+ [data-cs-density="compact"] .cs-dialog__body { margin-block: var(--cs-density-space-4, 12px); }
1855
+ [data-cs-density="compact"] .cs-field { gap: 4px; }
1856
+ [data-cs-density="compact"] :is(.cs-review-gate, .cs-human-review-gate) { padding: var(--cs-density-space-4, 12px); gap: var(--cs-density-space-2, 6px); }
1857
+ [data-cs-density="compact"] [data-cs-density="comfortable"] :is(.cs-table th, .cs-table td) { padding: 0.625rem 0.75rem; }
1858
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-dialog { padding: var(--cs-space-6, 24px); }
1859
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-dialog__body { margin-block: 1rem; }
1860
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-field { gap: 0.375rem; }
1861
+ [data-cs-density="compact"] [data-cs-density="comfortable"] :is(.cs-review-gate, .cs-human-review-gate) { padding: var(--cs-space-4, 16px); gap: 0.75rem; }
1862
+
1742
1863
  /* ===== base/forms.css ===== */
1743
1864
  /* CyberSkill — form controls (.cs-*). Built on the design tokens; native
1744
1865
  * controls use accent-color for brand-tinted checks/radios (accessible + minimal). */
@@ -1746,10 +1867,13 @@ body {
1746
1867
  /* Select — reuses .cs-field label/description/error */
1747
1868
  .cs-select { position: relative; display: block; }
1748
1869
  .cs-select select.cs-field__control { appearance: none; -webkit-appearance: none; width: 100%; padding-inline-end: 38px; cursor: pointer; background: var(--cs-color-surface-panel); }
1870
+ .cs-select__trigger { display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; inline-size: 100%; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 8px 12px; cursor: pointer; box-sizing: border-box; }
1749
1871
  .cs-select__chevron { position: absolute; inset-inline-end: 12px; inset-block-start: 50%; transform: translateY(-50%); pointer-events: none; color: var(--cs-color-text-muted); display: grid; place-items: center; }
1750
- .cs-select select.cs-field__control:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; border-color: var(--cs-color-brand-ochre); box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
1872
+ .cs-select select.cs-field__control:focus-visible, .cs-select__trigger:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; border-color: var(--cs-color-brand-ochre); box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
1873
+ .cs-select.is-invalid .cs-select__trigger, .is-invalid .cs-select__trigger, .cs-select__trigger.is-invalid, .cs-select__trigger[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
1751
1874
 
1752
1875
  /* NativeSelect — lean progressive-enhancement companion beside Select */
1876
+ .cs-native-select-field { display: grid; }
1753
1877
  .cs-native-select { position: relative; display: block; }
1754
1878
  .cs-native-select select.cs-field__control { appearance: none; -webkit-appearance: none; width: 100%; padding-inline-end: 38px; cursor: pointer; background: var(--cs-color-surface-panel); }
1755
1879
  .cs-native-select__chevron { position: absolute; inset-inline-end: 12px; inset-block-start: 50%; transform: translateY(-50%); pointer-events: none; color: var(--cs-color-text-muted); display: grid; place-items: center; }
@@ -1768,13 +1892,13 @@ body {
1768
1892
 
1769
1893
  /* Switch — custom track/knob */
1770
1894
  .cs-switch { display: inline-flex; align-items: center; gap: 10px; cursor: pointer; font-family: var(--cs-font-family-ui); color: var(--cs-color-text-primary); }
1895
+ .cs-switch__label { font: inherit; color: inherit; }
1771
1896
  .cs-switch input { position: absolute; opacity: 0; width: 0; height: 0; }
1772
- .cs-switch__track { inline-size: 44px; block-size: 26px; border-radius: 999px; background: var(--cs-color-border-default); position: relative; transition: background var(--cs-duration-fast) var(--cs-ease-standard); flex: none; }
1897
+ .cs-switch__track { inline-size: 44px; block-size: 26px; border-radius: 999px; background: var(--cs-color-border-default); box-shadow: inset 0 0 0 1px var(--cs-component-textfield-border-default, var(--cs-color-border-default)); position: relative; transition: background var(--cs-duration-fast) var(--cs-ease-standard), box-shadow var(--cs-duration-fast) var(--cs-ease-standard); flex: none; }
1773
1898
  .cs-switch__track::after { content: ""; position: absolute; inset-block-start: 3px; inset-inline-start: 3px; inline-size: 20px; block-size: 20px; border-radius: 50%; background: var(--cs-color-surface-panel, #fff); box-shadow: var(--cs-shadow-xs); transition: transform var(--cs-duration-fast) var(--cs-ease-standard); }
1774
- .cs-switch input:checked + .cs-switch__track { background: var(--_cs-light, var(--cs-accent-strong))var(--_cs-dark, var(--cs-accent)); }
1899
+ .cs-switch input:checked + .cs-switch__track { background: var(--_cs-light, var(--cs-accent-strong))var(--_cs-dark, var(--cs-accent)); box-shadow: none; }
1775
1900
  .cs-switch input:checked + .cs-switch__track::after { transform: translateX(18px); }
1776
1901
  .cs-switch input:focus-visible + .cs-switch__track { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
1777
- .cs-switch:focus-within { outline-style: solid; outline-width: 2px; outline-color: var(--cs-color-text-primary); outline-offset: 4px; border-radius: 6px; }
1778
1902
  .cs-switch.is-disabled { opacity: 0.55; cursor: not-allowed; }
1779
1903
 
1780
1904
  /* Textarea reuses .cs-field; give it sane sizing */
@@ -1850,11 +1974,19 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
1850
1974
  @keyframes cs-shimmer { from { background-position: 100% 0; } to { background-position: 0 0; } }
1851
1975
  @media (prefers-reduced-motion: reduce) { .cs-skeleton { animation: none; } }
1852
1976
 
1977
+ /* Compact density scope (resets cleanly under nested [data-cs-density="comfortable"]) */
1978
+ [data-cs-density="compact"] .cs-alert { padding: 10px 12px; gap: 8px; }
1979
+ [data-cs-density="compact"] .cs-toast { padding: 9px 12px; gap: 8px; }
1980
+ [data-cs-density="compact"] .cs-tag { padding: 3px 8px; }
1981
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-alert { padding: 14px 16px; gap: 12px; }
1982
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-toast { padding: 12px 14px; gap: 12px; }
1983
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-tag { padding: 5px 10px; }
1984
+
1853
1985
  /* ===== base/data.css ===== */
1854
1986
  /* CyberSkill — data display + layout (.cs-*). */
1855
1987
 
1856
1988
  /* Card */
1857
- .cs-card { background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); box-shadow: var(--cs-shadow-sm); color: var(--cs-color-text-primary); overflow: hidden; }
1989
+ .cs-card { background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); box-shadow: var(--cs-shadow-sm); color: var(--cs-color-text-primary); overflow: hidden; min-inline-size: 0; }
1858
1990
  .cs-card--flat { box-shadow: none; }
1859
1991
  .cs-card--raised { background: var(--cs-color-surface-raised); }
1860
1992
  .cs-card--featured { background: color-mix(in oklab, var(--cs-accent) 12%, var(--cs-color-surface-raised)); border-color: var(--cs-accent); box-shadow: var(--cs-shadow-md); }
@@ -1864,10 +1996,10 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
1864
1996
  .cs-card--flat.cs-card--interactive:focus-visible { box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
1865
1997
  .cs-card--interactive:active { transform: translateY(1px); }
1866
1998
  .cs-card__media { display: block; inline-size: 100%; }
1867
- .cs-card__header { padding: 18px 20px 0; }
1868
- .cs-card__title { margin: 0; font-size: var(--cs-text-h4); font-weight: 700; line-height: var(--cs-font-lineHeight-heading); }
1869
- .cs-card__subtitle { margin: 4px 0 0; color: var(--cs-color-text-muted); font-size: var(--cs-font-size-sm); }
1870
- .cs-card__body { padding: 16px 20px; }
1999
+ .cs-card__header { padding: 18px 20px 0; min-inline-size: 0; }
2000
+ .cs-card__title { margin: 0; font-size: var(--cs-text-h4); font-weight: 700; line-height: var(--cs-font-lineHeight-heading); overflow-wrap: anywhere; }
2001
+ .cs-card__subtitle { margin: 4px 0 0; color: var(--cs-color-text-muted); font-size: var(--cs-font-size-sm); overflow-wrap: anywhere; }
2002
+ .cs-card__body { padding: 16px 20px; min-inline-size: 0; }
1871
2003
  .cs-card__body > :first-child { margin-block-start: 0; }
1872
2004
  .cs-card__body > :last-child { margin-block-end: 0; }
1873
2005
  .cs-card__footer { padding: 12px 20px 18px; display: flex; gap: 10px; align-items: center; flex-wrap: wrap; }
@@ -1957,6 +2089,18 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
1957
2089
  [data-cs-floating-root][data-open="true"] > .cs-tooltip__bubble { opacity: 1; pointer-events: auto; }
1958
2090
  [data-cs-floating-root][data-managed] > .cs-tooltip__bubble::before { content: ""; position: absolute; top: 100%; left: 0; right: 0; height: 8px; }
1959
2091
 
2092
+ /* Compact density scope (resets cleanly under nested [data-cs-density="comfortable"]) */
2093
+ [data-cs-density="compact"] .cs-card__header { padding: var(--cs-density-space-4, 12px) var(--cs-density-space-5, 16px) 0; }
2094
+ [data-cs-density="compact"] .cs-card__body { padding: var(--cs-density-space-4, 12px) var(--cs-density-space-5, 16px); }
2095
+ [data-cs-density="compact"] .cs-card__footer { padding: var(--cs-density-space-3, 9px) var(--cs-density-space-5, 16px) var(--cs-density-space-4, 12px); gap: var(--cs-density-space-2, 6px); }
2096
+ [data-cs-density="compact"] .cs-stat { gap: 1px; }
2097
+ [data-cs-density="compact"] .cs-divider { margin-block: var(--cs-density-space-3, 9px); }
2098
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-card__header { padding: 18px 20px 0; }
2099
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-card__body { padding: 16px 20px; }
2100
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-card__footer { padding: 12px 20px 18px; gap: 10px; }
2101
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-stat { gap: 3px; }
2102
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-divider { margin-block: var(--cs-space-4); }
2103
+
1960
2104
  /* ===== base/navigation.css ===== */
1961
2105
  /* CyberSkill — navigation (.cs-*). */
1962
2106
 
@@ -1973,7 +2117,7 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
1973
2117
  .cs-breadcrumb li { display: inline-flex; align-items: center; gap: 8px; }
1974
2118
  .cs-breadcrumb a { color: var(--cs-color-text-muted); text-decoration: none; }
1975
2119
  .cs-breadcrumb a:hover { color: var(--cs-color-text-accent); }
1976
- .cs-breadcrumb__sep { color: var(--cs-color-border-default); }
2120
+ .cs-breadcrumb__sep { color: var(--cs-color-text-muted); }
1977
2121
  .cs-breadcrumb__current { color: var(--cs-color-text-primary); font-weight: 600; }
1978
2122
 
1979
2123
  /* Pagination */
@@ -1996,13 +2140,21 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
1996
2140
  .cs-menu__sep { block-size: 1px; background: var(--cs-color-border-default); margin: 4px 2px; }
1997
2141
  .cs-menu__label { font-size: var(--cs-font-size-xs); text-transform: uppercase; letter-spacing: var(--cs-letter-spacing-caps); color: var(--cs-color-text-muted); padding: 6px 10px 2px; }
1998
2142
 
2143
+ /* Compact density scope (coarse-pointer 44px hit floors in base/a11y.css still apply) */
2144
+ [data-cs-density="compact"] .cs-tab { padding: 7px 10px; gap: 5px; }
2145
+ [data-cs-density="compact"] .cs-menu__list { padding: 4px; }
2146
+ [data-cs-density="compact"] .cs-menu__item { padding: 6px 8px; gap: 8px; }
2147
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-tab { padding: 10px 14px; gap: 7px; }
2148
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-menu__list { padding: 6px; }
2149
+ [data-cs-density="compact"] [data-cs-density="comfortable"] .cs-menu__item { padding: 8px 10px; gap: 10px; }
2150
+
1999
2151
  /* ===== base/ai.css ===== */
2000
2152
  /* CyberSkill — AI-native surfaces (.cs-*). The brand is AI-native: Lumi (the
2001
2153
  * golden genie) converses, then hands clear wishes to a human. These pair with
2002
2154
  * AIDisclosureBadge + HumanReviewGate (base/components.css). */
2003
2155
 
2004
2156
  /* PromptInput */
2005
- .cs-prompt { border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); background: var(--cs-color-surface-panel); padding: 10px 12px; display: grid; gap: 8px; }
2157
+ .cs-prompt { border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-lg); background: var(--cs-color-surface-panel); padding: 10px 12px; display: grid; gap: 8px; }
2006
2158
  .cs-prompt.is-invalid, .is-invalid .cs-prompt, .cs-prompt[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2007
2159
  .cs-prompt:focus-within {
2008
2160
  border-color: var(--cs-color-text-primary);
@@ -2047,7 +2199,7 @@ textarea.cs-field__control { min-height: 96px; resize: vertical; line-height: va
2047
2199
  .cs-suggest button svg { color: var(--cs-color-brand-ochre); }
2048
2200
 
2049
2201
  /* TypingIndicator */
2050
- .cs-typing { display: inline-flex; align-items: center; gap: 5px; padding: 12px 16px; background: var(--cs-color-surface-raised); border: 1px solid var(--cs-color-border-default); border-radius: 14px; border-end-start-radius: 4px; }
2202
+ .cs-typing { display: inline-flex; justify-self: start; inline-size: fit-content; align-items: center; gap: 5px; padding: 12px 16px; background: var(--cs-color-surface-raised); border: 1px solid var(--cs-color-border-default); border-radius: 14px; border-end-start-radius: 4px; }
2051
2203
  .cs-typing span { inline-size: 7px; block-size: 7px; border-radius: 50%; background: var(--cs-color-text-muted); animation: cs-typing 1.2s var(--cs-ease-standard) infinite; }
2052
2204
  .cs-typing span:nth-child(2) { animation-delay: 0.18s; }
2053
2205
  .cs-typing span:nth-child(3) { animation-delay: 0.36s; }
@@ -2105,7 +2257,7 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2105
2257
  .cs-stepper input::-webkit-outer-spin-button, .cs-stepper input::-webkit-inner-spin-button { -webkit-appearance: none; margin: 0; }
2106
2258
 
2107
2259
  /* Slider (native range) */
2108
- .cs-slider { inline-size: 100%; accent-color: var(--_cs-light, var(--cs-accent-strong))var(--_cs-dark, var(--cs-accent)); block-size: 22px; cursor: pointer; }
2260
+ .cs-slider { inline-size: 100%; max-inline-size: 100%; margin: 0; box-sizing: border-box; accent-color: var(--_cs-light, var(--cs-accent-strong))var(--_cs-dark, var(--cs-accent)); block-size: 22px; cursor: pointer; }
2109
2261
  .cs-slider:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 4px; border-radius: var(--cs-radius-full); box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2110
2262
 
2111
2263
  /* FileUpload / dropzone */
@@ -2144,11 +2296,12 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2144
2296
  .cs-rating button.on { color: var(--cs-color-text-accent); }
2145
2297
  .cs-rating[data-readonly="true"] button { cursor: default; }
2146
2298
  .cs-rating button:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; border-radius: 4px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2147
- .cs-otp { display: inline-flex; gap: 8px; }
2148
- .cs-otp input { inline-size: 44px; block-size: 52px; text-align: center; font: 700 22px var(--cs-font-family-mono); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); }
2149
- .cs-otp.is-invalid input, .is-invalid .cs-otp input, .cs-otp input.is-invalid, .cs-otp input[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2150
- .cs-otp input:focus { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; border-color: var(--cs-accent); box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2151
- .cs-otp input:disabled { opacity: .5; cursor: not-allowed; background: var(--cs-color-surface-raised); }
2299
+ .cs-otp, .cs-input-otp { display: inline-flex; justify-content: space-between; gap: 8px; max-inline-size: 100%; }
2300
+ .cs-otp input, .cs-input-otp input, .cs-otp__slot, .cs-input-otp__slot { inline-size: 44px; block-size: 52px; min-inline-size: 44px; min-block-size: 44px; text-align: center; font: 700 22px var(--cs-font-family-mono); font-variant-numeric: tabular-nums; color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); box-sizing: border-box; }
2301
+ .cs-otp__slot, .cs-input-otp__slot { display: inline-flex; align-items: center; justify-content: center; }
2302
+ .cs-otp.is-invalid input, .cs-input-otp.is-invalid input, .is-invalid :is(.cs-otp, .cs-input-otp) input, :is(.cs-otp, .cs-input-otp) input.is-invalid, :is(.cs-otp, .cs-input-otp) input[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2303
+ .cs-otp input:focus, .cs-input-otp input:focus { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; border-color: var(--cs-accent); box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2304
+ .cs-otp input:disabled, .cs-input-otp input:disabled { opacity: .5; cursor: not-allowed; background: var(--cs-color-surface-raised); }
2152
2305
  .cs-btngroup { display: inline-flex; }
2153
2306
  .cs-btngroup .cs-button { border-radius: 0; }
2154
2307
  .cs-btngroup .cs-button:first-child { border-start-start-radius: var(--cs-component-button-radius, 8px); border-end-start-radius: var(--cs-component-button-radius, 8px); }
@@ -2156,28 +2309,28 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2156
2309
  .cs-btngroup .cs-button + .cs-button { margin-inline-start: -1px; }
2157
2310
 
2158
2311
  /* ---- v3 Batch 2 part 2 (Jul 2026): Combobox · InputGroup · TagInput ---- */
2159
- .cs-combobox { position: relative; display: inline-block; min-inline-size: 260px; }
2160
- .cs-combobox input { inline-size: 100%; box-sizing: border-box; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: 10px 34px 10px var(--cs-space-3); min-block-size: 44px; }
2312
+ .cs-combobox { position: relative; display: inline-block; min-inline-size: 260px; max-inline-size: 100%; box-sizing: border-box; }
2313
+ .cs-combobox input { inline-size: 100%; box-sizing: border-box; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 10px 34px 10px var(--cs-space-3); min-block-size: 44px; }
2161
2314
  .is-invalid .cs-combobox input, .cs-combobox.is-invalid input, .cs-combobox input.is-invalid, .cs-combobox[aria-invalid="true"] input, .cs-combobox input[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger, #b42318); }
2162
- .cs-combobox input:focus { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2315
+ .cs-combobox input:focus { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2163
2316
  .cs-combobox__caret { position: absolute; inset-inline-end: 10px; inset-block-start: 50%; translate: 0 -50%; pointer-events: none; color: var(--cs-color-text-muted); }
2164
2317
  .cs-combobox__popup { color: var(--cs-color-text-primary); position: absolute; z-index: var(--cs-depth-dropdown, 60); inset-inline: 0; inset-block-start: calc(100% + 6px); max-block-size: 240px; overflow: auto; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); box-shadow: var(--cs-shadow-md); padding: 6px; margin: 0; }
2165
2318
  .cs-combobox__list { padding: 0; margin: 0; list-style: none; }
2166
2319
  .cs-combobox__opt { padding: 8px 10px; border-radius: var(--cs-radius-sm); cursor: pointer; font-size: var(--cs-font-size-sm); }
2167
2320
  .cs-combobox__opt[aria-selected="true"], .cs-combobox__opt.hl { 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-primary))var(--_cs-dark, var(--cs-accent-bright)); }
2168
2321
  .cs-combobox__empty { padding: 10px; color: var(--cs-color-text-muted); font-size: var(--cs-font-size-sm); }
2169
- .cs-igroup { display: inline-flex; align-items: stretch; min-inline-size: 260px; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); overflow: hidden; }
2322
+ .cs-igroup { display: inline-flex; align-items: stretch; min-inline-size: 260px; max-inline-size: 100%; box-sizing: border-box; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); overflow: hidden; }
2170
2323
  .cs-igroup.is-invalid, .is-invalid .cs-igroup, .cs-igroup[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2171
- .cs-igroup:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2324
+ .cs-igroup:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2172
2325
  .cs-igroup > input { flex: 1; min-inline-size: 0; border: 0; background: transparent; color: var(--cs-color-text-primary); font: 500 14px var(--cs-font-family-ui); padding: 10px 12px; min-block-size: 44px; box-sizing: border-box; }
2173
2326
  .cs-igroup > input:focus { outline: none; }
2174
2327
  .cs-igroup__fix { display: flex; align-items: center; padding: 0 10px; color: var(--cs-color-text-muted); background: var(--cs-color-surface-raised); border-inline-end: 1px solid var(--cs-color-border-default); font-size: var(--cs-font-size-sm); }
2175
2328
  .cs-igroup__fix--suffix { border-inline-end: 0; border-inline-start: 1px solid var(--cs-color-border-default); }
2176
2329
  .cs-igroup__btn { border: 0; background: none; color: var(--cs-color-text-muted); cursor: pointer; display: grid; place-items: center; padding: 0 10px; }
2177
2330
  .cs-igroup__btn:hover { color: var(--cs-color-text-primary); }
2178
- .cs-taginput { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-inline-size: 280px; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: 6px var(--cs-space-2); min-block-size: 44px; box-sizing: border-box; }
2331
+ .cs-taginput { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; min-inline-size: 280px; max-inline-size: 100%; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 6px var(--cs-space-2); min-block-size: 44px; box-sizing: border-box; }
2179
2332
  .cs-taginput.is-invalid, .is-invalid .cs-taginput, .cs-taginput[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2180
- .cs-taginput:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2333
+ .cs-taginput:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2181
2334
  .cs-taginput > input { flex: 1; min-inline-size: 120px; border: 0; background: transparent; color: var(--cs-color-text-primary); font: 500 14px var(--cs-font-family-ui); padding: 6px var(--cs-space-1); }
2182
2335
  .cs-taginput > input:focus { outline: none; }
2183
2336
  /* Disabled editing must not dim already committed, noninteractive values. */
@@ -2197,15 +2350,16 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2197
2350
  .cs-cal__grid button.sel { background: var(--cs-accent-bright); color: var(--cs-color-brand-umber); font-weight: 700; box-shadow: inset 0 0 0 2px var(--cs-accent-strong); }
2198
2351
  .cs-cal__grid button:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2199
2352
  .cs-datepicker { position: relative; display: inline-block; max-inline-size: 100%; }
2200
- .cs-datepicker__field, .cs-datepicker__trigger { display: inline-flex; align-items: center; gap: var(--cs-space-2); min-inline-size: 220px; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: var(--cs-space-2) var(--cs-space-3); cursor: pointer; }
2353
+ .cs-datepicker__field { display: inline-flex; align-items: center; gap: var(--cs-space-2); min-inline-size: 220px; max-inline-size: 100%; box-sizing: border-box; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: var(--cs-space-2) var(--cs-space-3); cursor: pointer; }
2354
+ .cs-datepicker__trigger { display: inline-flex; align-items: center; gap: var(--cs-space-2); min-inline-size: 220px; max-inline-size: 100%; box-sizing: border-box; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: var(--cs-space-2) var(--cs-space-3); cursor: pointer; }
2201
2355
  .cs-datepicker.is-invalid .cs-datepicker__field, .cs-datepicker.is-invalid .cs-datepicker__trigger, .is-invalid .cs-datepicker__field, .is-invalid .cs-datepicker__trigger, .cs-datepicker__field.is-invalid, .cs-datepicker__trigger.is-invalid, .cs-datepicker__field[aria-invalid="true"], .cs-datepicker__trigger[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2202
- .cs-datepicker__field:focus-visible, .cs-datepicker__trigger:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2356
+ .cs-datepicker__field:focus-visible, .cs-datepicker__trigger:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2203
2357
  .cs-datepicker__field .ph, .cs-datepicker__trigger .ph { color: var(--cs-color-text-muted); }
2204
2358
  .cs-datepicker__pop { position: absolute; z-index: var(--cs-depth-dropdown, 60); inset-block-start: calc(100% + 6px); inset-inline-start: var(--_cs-panel-inline-offset, 0px); inline-size: max-content; max-inline-size: var(--_cs-panel-max-inline-size, calc(100vw - 16px)); }
2205
2359
  .cs-datepicker__pop .cs-cal { min-inline-size: 0; max-inline-size: 100%; box-sizing: border-box; overflow-x: auto; }
2206
- .cs-timepicker { display: inline-flex; align-items: center; gap: 8px; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: 0 10px; min-block-size: 44px; color: var(--cs-color-text-muted); }
2360
+ .cs-timepicker { display: inline-flex; align-items: center; gap: 8px; max-inline-size: 100%; box-sizing: border-box; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 0 10px; min-block-size: 44px; color: var(--cs-color-text-muted); }
2207
2361
  .cs-timepicker.is-invalid, .is-invalid .cs-timepicker, .cs-timepicker[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2208
- .cs-timepicker:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2362
+ .cs-timepicker:focus-within { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2209
2363
  .cs-timepicker select { border: 0; background: transparent; color: var(--cs-color-text-primary); font: 600 14px var(--cs-font-family-mono); padding: 8px 2px; cursor: pointer; }
2210
2364
  .cs-timepicker select:focus { outline: none; }
2211
2365
 
@@ -2299,6 +2453,7 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2299
2453
  .cs-carousel__dots button[aria-current="true"]::before { background: var(--cs-color-text-accent); }
2300
2454
  @media (prefers-reduced-motion: reduce) { .cs-carousel__track { transition: none; } }
2301
2455
  .cs-comment { display: flex; gap: 10px; }
2456
+ .cs-comment__avatar { flex: none; }
2302
2457
  .cs-comment__main { flex: 1; min-inline-size: 0; }
2303
2458
  .cs-comment__head { display: flex; align-items: baseline; gap: 8px; font-size: var(--cs-font-size-sm); color: var(--cs-color-text-primary); }
2304
2459
  .cs-comment__meta { color: var(--cs-color-text-muted); font-size: var(--cs-font-size-xs); }
@@ -2309,6 +2464,10 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2309
2464
 
2310
2465
  /* ---- v3 Batch 6a (Jul 2026): Form · Tree · BackTop · Watermark ---- */
2311
2466
  .cs-form { display: grid; gap: var(--cs-space-4); }
2467
+ .cs-form-array { border: 0; padding: 0; margin: 0; }
2468
+ .cs-form-array__rows { display: grid; gap: 8px; }
2469
+ .cs-form-array__row { display: flex; gap: 8px; align-items: center; }
2470
+ .cs-form-wizard, .cs-form-wizard__steps, .cs-form-wizard__body, .cs-form-wizard__nav { box-sizing: border-box; }
2312
2471
  /* FIND-015 — visible pending + interaction lock while asyncRules / submit run. */
2313
2472
  .cs-form.is-pending { opacity: 0.72; }
2314
2473
  .cs-form.is-pending :is(button, input, select, textarea, [role="button"]) {
@@ -2334,12 +2493,13 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2334
2493
  .cs-tree__label { border: 0; background: none; color: var(--cs-color-text-primary); font: inherit; padding: 4px 6px; cursor: pointer; border-radius: var(--cs-radius-sm); }
2335
2494
  .cs-backtop { position: fixed; inset-inline-end: 24px; inset-block-end: 84px; z-index: var(--cs-depth-overlay, 80); inline-size: 44px; block-size: 44px; border-radius: 999px; border: 1px solid var(--cs-color-border-default); background: var(--cs-color-surface-panel); color: var(--cs-color-text-primary); display: grid; place-items: center; cursor: pointer; box-shadow: var(--cs-shadow-md); }
2336
2495
  .cs-backtop:hover { border-color: var(--cs-accent); }
2496
+ .cs-watermark { position: relative; }
2337
2497
 
2338
2498
  /* ---- v3 Batch 6b (Jul 2026): TreeSelect · Cascader · Transfer · Mentions ---- */
2339
- .cs-treeselect, .cs-cascader { position: relative; display: inline-block; min-inline-size: 240px; }
2340
- .cs-treeselect__field, .cs-treeselect__trigger, .cs-cascader__field, .cs-cascader__trigger { display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; inline-size: 100%; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: 8px 12px; cursor: pointer; box-sizing: border-box; }
2499
+ .cs-treeselect, .cs-cascader { position: relative; display: inline-block; min-inline-size: 240px; max-inline-size: 100%; box-sizing: border-box; }
2500
+ .cs-treeselect__field, .cs-treeselect__trigger, .cs-cascader__field, .cs-cascader__trigger { display: inline-flex; align-items: center; justify-content: space-between; gap: 10px; inline-size: 100%; min-block-size: 44px; font: 500 14px var(--cs-font-family-ui); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 8px 12px; cursor: pointer; box-sizing: border-box; }
2341
2501
  .cs-treeselect.is-invalid :is(.cs-treeselect__field, .cs-treeselect__trigger), .cs-cascader.is-invalid :is(.cs-treeselect__field, .cs-cascader__field, .cs-cascader__trigger), .is-invalid :is(.cs-treeselect__field, .cs-treeselect__trigger, .cs-cascader__field, .cs-cascader__trigger), :is(.cs-treeselect__field, .cs-treeselect__trigger, .cs-cascader__field, .cs-cascader__trigger).is-invalid, :is(.cs-treeselect__field, .cs-treeselect__trigger, .cs-cascader__field, .cs-cascader__trigger)[aria-invalid="true"] { border-color: var(--cs-color-semantic-danger); }
2342
- .cs-treeselect__field:focus-visible, .cs-treeselect__trigger:focus-visible, .cs-cascader__field:focus-visible, .cs-cascader__trigger:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2502
+ .cs-treeselect__field:focus-visible, .cs-treeselect__trigger:focus-visible, .cs-cascader__field:focus-visible, .cs-cascader__trigger:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2343
2503
  .cs-treeselect__field .ph, .cs-treeselect__trigger .ph, .cs-cascader__field .ph, .cs-cascader__trigger .ph { color: var(--cs-color-text-muted); }
2344
2504
  .cs-treeselect__pop, .cs-cascader__pop { position: absolute; z-index: var(--cs-depth-dropdown, 60); inset-block-start: calc(100% + 6px); inset-inline-start: 0; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); box-shadow: var(--cs-shadow-md); padding: 8px; min-inline-size: 100%; }
2345
2505
  .cs-cascader__pop { display: flex; padding: 0; overflow: hidden; }
@@ -2361,15 +2521,16 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2361
2521
 
2362
2522
  /* ---- v3 Batch 6c (Jul 2026): ColorPicker · Tour · QRCode ---- */
2363
2523
  .cs-colorpicker { position: relative; display: inline-block; }
2364
- .cs-colorpicker__field { display: inline-flex; align-items: center; gap: 9px; min-block-size: 44px; font: 600 13px var(--cs-font-family-mono); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); padding: 8px 12px; cursor: pointer; }
2524
+ .cs-colorpicker__field { display: inline-flex; align-items: center; gap: 9px; min-block-size: 44px; font: 600 13px var(--cs-font-family-mono); color: var(--cs-color-text-primary); background: var(--cs-color-surface-panel); border: 1px solid var(--cs-component-textfield-border-default, var(--cs-color-border-default)); border-radius: var(--cs-radius-md); padding: 8px 12px; cursor: pointer; }
2365
2525
  .cs-colorpicker__field i { inline-size: 20px; block-size: 20px; border-radius: 6px; border: 1px solid var(--cs-color-border-default); }
2366
- .cs-colorpicker__field:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 1px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2526
+ .cs-colorpicker__field:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2367
2527
  .cs-colorpicker__pop { position: absolute; z-index: var(--cs-depth-dropdown, 60); inset-block-start: calc(100% + 6px); inset-inline-start: 0; display: grid; gap: 10px; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); box-shadow: var(--cs-shadow-md); padding: 12px; }
2368
2528
  .cs-colorpicker__grid { display: grid; grid-template-columns: repeat(5, 26px); gap: 8px; }
2369
2529
  .cs-colorpicker__grid button { inline-size: 26px; block-size: 26px; border-radius: 7px; border: 1px solid var(--cs-color-border-default); cursor: pointer; }
2370
2530
  .cs-colorpicker__grid button.on { outline: var(--cs-focus-ring, 3px) solid var(--cs-color-accent-ochre); outline-offset: 1px; }
2371
2531
  .cs-colorpicker__grid button:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2372
2532
  .cs-colorpicker__hex input { inline-size: 110px; font: 600 13px var(--cs-font-family-mono); color: var(--cs-color-text-primary); background: var(--cs-color-surface-raised); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-sm); padding: 6px 8px; }
2533
+ .cs-tour { display: inline-block; }
2373
2534
  .cs-tour__scrim { position: fixed; inset: 0; z-index: var(--cs-depth-modal, 100); background: var(--cs-color-surface-scrim, var(--_cs-surface-scrim)); }
2374
2535
  .cs-tour__hole { position: fixed; z-index: calc(var(--cs-depth-modal, 100) + 1); border-radius: var(--cs-radius-md); box-shadow: 0 0 0 4000px var(--cs-color-surface-scrim, var(--_cs-surface-scrim)); outline: var(--cs-focus-ring, 3px) solid var(--cs-color-brand-ochre); pointer-events: none; background: transparent; }
2375
2536
  .cs-tour__pop { position: fixed; z-index: calc(var(--cs-depth-modal, 100) + 2); inline-size: 280px; background: var(--cs-color-surface-panel); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); box-shadow: var(--cs-shadow-xl); padding: 14px 16px; }
@@ -2381,24 +2542,31 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2381
2542
  .cs-qrcode { display: inline-block; padding: 10px; background: var(--cs-color-surface-panel, #fff); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); line-height: 0; }
2382
2543
 
2383
2544
  /* ---- v3 Batch 7a (Jul 2026): Masonry · Splitter · HotKeys · Dock ---- */
2545
+ .cs-masonry { display: block; }
2384
2546
  .cs-masonry__item { break-inside: avoid; }
2385
2547
  .cs-splitter { display: flex; align-items: stretch; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); overflow: hidden; background: var(--cs-color-surface-panel); }
2386
- .cs-splitter__pane { overflow: auto; padding: 14px; min-inline-size: 0; }
2548
+ .cs-splitter__pane { overflow: auto; padding: 14px; min-inline-size: 0; min-block-size: 0; scroll-padding-block-end: var(--cs-space-6, 24px); }
2387
2549
  .cs-splitter__bar { inline-size: 8px; cursor: col-resize; background: var(--cs-color-surface-raised); border-inline: 1px solid var(--cs-color-border-default); touch-action: none; }
2388
2550
  .cs-splitter__bar:hover { background: color-mix(in oklab, var(--cs-accent) 18%, var(--cs-color-surface-panel)); }
2389
2551
  .cs-splitter__bar:focus-visible { background: var(--cs-color-surface-raised); outline: 2px solid var(--cs-color-text-primary); outline-offset: -2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2552
+ .cs-hotkeys { display: inline-block; }
2390
2553
  .cs-hotkeys__sheet { position: fixed; inset: 0; z-index: var(--cs-depth-modal, 100); background: var(--cs-color-surface-scrim, var(--_cs-surface-scrim)); display: grid; place-items: center; }
2391
2554
  .cs-hotkeys__card { background: var(--cs-color-surface-panel); color: var(--cs-color-text-primary); border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-lg); box-shadow: var(--cs-shadow-xl); padding: 18px 20px; min-inline-size: 300px; }
2392
2555
  .cs-hotkeys__card b { font-size: var(--cs-font-size-sm); color: var(--cs-color-text-primary); }
2393
2556
  .cs-hotkeys__card ul { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; }
2394
2557
  .cs-hotkeys__card li { display: flex; justify-content: space-between; gap: 20px; font-size: var(--cs-font-size-sm); color: var(--cs-color-text-primary); }
2395
- .cs-dock { display: inline-flex; align-items: flex-end; gap: 8px; background: color-mix(in oklab, var(--cs-color-surface-panel) 82%, transparent); border: 1px solid var(--cs-color-border-default); border-radius: 18px; padding: 8px 12px; backdrop-filter: blur(10px); }
2558
+ .cs-dock { display: inline-flex; align-items: flex-end; gap: 8px; background: color-mix(in oklab, var(--cs-color-surface-panel) 82%, transparent); border: 1px solid var(--cs-color-border-default); border-radius: 18px; padding: 8px 12px; -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); }
2559
+ @media (prefers-reduced-transparency: reduce) { .cs-dock { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--cs-color-surface-panel); } }
2560
+ [data-cs-style="matte-paper"] .cs-dock { -webkit-backdrop-filter: none; backdrop-filter: none; background: var(--cs-color-surface-panel); box-shadow: var(--cs-shadow-xs); }
2561
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-dock { background: color-mix(in oklab, var(--cs-color-surface-panel) 82%, transparent); -webkit-backdrop-filter: blur(10px); backdrop-filter: blur(10px); box-shadow: none; }
2396
2562
  .cs-dock__item { inline-size: 44px; block-size: 44px; border-radius: 12px; border: 1px solid var(--cs-color-border-default); background: var(--cs-color-surface-panel); color: var(--cs-color-text-primary); display: grid; place-items: center; cursor: pointer; transition: transform var(--cs-duration-fast, 120ms); position: relative; }
2397
2563
  .cs-dock__item.is-active::after { content: ""; position: absolute; inset-block-end: -6px; inline-size: 4px; block-size: 4px; border-radius: 999px; background: var(--cs-color-text-accent); }
2398
2564
  @media (prefers-reduced-motion: reduce) { .cs-dock__item { transition: none; } }
2399
2565
 
2400
2566
  /* ---- v3 Batch 7b (Jul 2026): DataGrid · TreeTable · Sortable ---- */
2401
- .cs-datagrid { overflow: auto; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-panel); }
2567
+ .cs-datagrid { overflow: auto; max-inline-size: 100%; min-inline-size: 0; border: 1px solid var(--cs-color-border-default); border-radius: var(--cs-radius-md); background: var(--cs-color-surface-panel); }
2568
+ .cs-datagrid--virtual { position: relative; overflow: auto; }
2569
+ .cs-datagrid__pinned { position: sticky; inset-inline-start: 0; z-index: 2; background: inherit; }
2402
2570
  .cs-datagrid .cs-table { margin: 0; }
2403
2571
  .cs-datagrid thead th { position: sticky; inset-block-start: 0; background: var(--cs-color-surface-raised); z-index: 1; }
2404
2572
  .cs-datagrid__check { display: inline-flex; align-items: center; justify-content: center; }
@@ -2431,8 +2599,8 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2431
2599
  --cs-term-dot: #5b4331;
2432
2600
  --cs-term-bg: #1a1108;
2433
2601
  --cs-term-fg: #f5ead9;
2434
- --cs-term-muted: #c9b7a3;
2435
- max-inline-size: 480px; border-radius: var(--cs-radius-lg); overflow: hidden; border: 1px solid var(--cs-term-border); box-shadow: var(--cs-shadow-md);
2602
+ --cs-term-muted: #e9d6c2;
2603
+ color-scheme: dark; background: var(--cs-term-bg); color: var(--cs-term-fg); max-inline-size: 480px; border-radius: var(--cs-radius-lg); overflow: hidden; border: 1px solid var(--cs-term-border); box-shadow: var(--cs-shadow-md);
2436
2604
  }
2437
2605
  .cs-terminal__bar { display: flex; align-items: center; gap: 6px; background: var(--cs-term-bar); color: var(--cs-term-muted); font: 600 11px var(--cs-font-family-mono); padding: 8px 12px; }
2438
2606
  .cs-terminal__bar i { inline-size: 10px; block-size: 10px; border-radius: 999px; background: var(--cs-term-dot); }
@@ -2449,6 +2617,18 @@ a.cs-citation:hover .cs-citation__text { color: var(--cs-color-text-accent); }
2449
2617
  }
2450
2618
  .cs-terminal__out { color: var(--cs-term-muted); white-space: pre-wrap; }
2451
2619
 
2620
+ /* ---- Composed .cs-field alignment + narrow container containment ---- */
2621
+ .cs-field > :is(.cs-timepicker, .cs-colorpicker, .cs-segmented, .cs-toggle) {
2622
+ justify-self: start;
2623
+ }
2624
+ @media (max-width: 360px) {
2625
+ .cs-combobox, .cs-igroup, .cs-taginput, .cs-treeselect, .cs-cascader,
2626
+ .cs-datepicker__field, .cs-datepicker__trigger {
2627
+ min-inline-size: 0;
2628
+ max-inline-size: 100%;
2629
+ }
2630
+ }
2631
+
2452
2632
  /* ===== base/collections.css ===== */
2453
2633
  /* CyberSkill — collections + content wave 2 (.cs-*). */
2454
2634
 
@@ -2480,7 +2660,10 @@ button.cs-item--interactive { border: 1px solid transparent; background: var(--c
2480
2660
  }
2481
2661
  .cs-item--interactive:focus-visible { outline: 2px solid var(--cs-color-text-primary); outline-offset: 2px; box-shadow: 0 0 0 5px var(--cs-color-accent-ochre); }
2482
2662
  .cs-item.is-selected { border-color: var(--cs-color-text-accent); background: color-mix(in oklab, var(--cs-accent) 18%, var(--cs-color-surface-panel)); }
2483
- .cs-item.is-selected .cs-item__description { color: var(--_cs-light, var(--cs-color-text-muted))var(--_cs-dark, var(--cs-color-text-primary)); }
2663
+ .cs-item.is-selected .cs-item__description { color: var(--cs-color-text-primary); }
2664
+ tr.cs-item { display: table-row; }
2665
+ tr.cs-item.is-selected > td, tr.cs-item.is-selected > th { background: color-mix(in oklab, var(--cs-accent) 18%, var(--cs-color-surface-panel)); }
2666
+ tr.cs-item.is-selected > td:first-child, tr.cs-item.is-selected > th:first-child { box-shadow: inset 3px 0 0 var(--cs-color-text-accent); }
2484
2667
  .cs-item.is-disabled, .cs-item[aria-disabled="true"] { opacity: 0.55; cursor: not-allowed; pointer-events: none; }
2485
2668
  /* Static Item text remains information, rather than an inactive control. */
2486
2669
  div.cs-item.is-disabled { opacity: 1; }
@@ -2533,8 +2716,8 @@ div.cs-item.is-disabled { opacity: 1; }
2533
2716
  --cs-code-bg: #2b1e14;
2534
2717
  --cs-code-fg: #f5ead9;
2535
2718
  --cs-code-border: #4a3a2c;
2536
- --cs-code-muted: #c9b7a3;
2537
- position: relative; background: var(--cs-code-bg); color: var(--cs-code-fg); border-radius: var(--cs-radius-lg); overflow: hidden; border: 1px solid var(--cs-code-border);
2719
+ --cs-code-muted: #e9d6c2;
2720
+ color-scheme: dark; position: relative; background: var(--cs-code-bg); color: var(--cs-code-fg); border-radius: var(--cs-radius-lg); overflow: hidden; border: 1px solid var(--cs-code-border);
2538
2721
  }
2539
2722
  .cs-code__bar { display: flex; align-items: center; justify-content: space-between; padding: 8px 14px; border-block-end: 1px solid var(--cs-code-border); font-family: var(--cs-font-family-mono); font-size: var(--cs-font-size-xs); color: var(--cs-code-muted); }
2540
2723
  .cs-code__copy { border: 0; background: transparent; color: var(--cs-code-muted); cursor: pointer; font: inherit; font-family: var(--cs-font-family-ui); font-weight: 600; min-block-size: 32px; padding-inline: 8px; border-radius: var(--cs-radius-sm); }
@@ -2745,6 +2928,101 @@ div.cs-item.is-disabled { opacity: 1; }
2745
2928
  }
2746
2929
  .cs-overlay-surface::before { display: none; }
2747
2930
 
2931
+ /* ---- 7. Perceptual-chroma semantic variant aliases (gold, champagne, silver, jade, leaf, ember, river, studio, ochre) ----
2932
+ * Canonical [data-cs-element] rules in tokens/elements.css provide the base elemental tokens;
2933
+ * these variant selectors boost primary CTA, active segment, selected row and badge vibrancy. */
2934
+ :is([data-cs-element="kim"][data-cs-variant="gold"], [data-cs-element="kim"][data-cs-variant="champagne"]) :is(.cs-button:not(.cs-button--secondary):not(.cs-button--tertiary):not(.cs-button--ghost):not(.cs-button--danger):not(.cs-button--danger-ghost), .cs-segmented button[aria-selected="true"], .cs-segmented button[aria-pressed="true"], .cs-segmented button[aria-checked="true"]) {
2935
+ background: color-mix(in oklab, var(--cs-color-brand-ochre, #f4ba17) 64%, var(--cs-component-button-primary-bg, #374151));
2936
+ border-color: color-mix(in oklab, var(--cs-color-brand-ochre, #f4ba17) 75%, var(--cs-color-border-default));
2937
+ }
2938
+ :is([data-cs-element="kim"][data-cs-variant="gold"], [data-cs-element="kim"][data-cs-variant="champagne"]) :is(.cs-item.is-selected, .cs-datagrid tr.is-selected td, .cs-table tr.is-selected td, tr.cs-item.is-selected > td) {
2939
+ background: color-mix(in oklab, var(--cs-color-brand-ochre, #f4ba17) 20%, var(--cs-color-surface-panel));
2940
+ border-color: color-mix(in oklab, var(--cs-color-brand-ochre, #f4ba17) 72%, var(--cs-color-border-default));
2941
+ }
2942
+ :is([data-cs-element="moc"][data-cs-variant="jade"], [data-cs-element="moc"][data-cs-variant="leaf"]) :is(.cs-button:not(.cs-button--secondary):not(.cs-button--tertiary):not(.cs-button--ghost):not(.cs-button--danger):not(.cs-button--danger-ghost), .cs-segmented button[aria-selected="true"], .cs-segmented button[aria-pressed="true"], .cs-segmented button[aria-checked="true"]) {
2943
+ background: color-mix(in oklab, #109464 58%, var(--cs-component-button-primary-bg, #1f5c3a));
2944
+ }
2945
+ :is([data-cs-element="moc"][data-cs-variant="jade"], [data-cs-element="moc"][data-cs-variant="leaf"]) :is(.cs-item.is-selected, .cs-datagrid tr.is-selected td, .cs-table tr.is-selected td, tr.cs-item.is-selected > td) {
2946
+ background: color-mix(in oklab, #109464 20%, var(--cs-color-surface-panel));
2947
+ border-color: color-mix(in oklab, #109464 72%, var(--cs-color-border-default));
2948
+ }
2949
+ [data-cs-element="hoa"][data-cs-variant="ember"] :is(.cs-button:not(.cs-button--secondary):not(.cs-button--tertiary):not(.cs-button--ghost):not(.cs-button--danger):not(.cs-button--danger-ghost), .cs-segmented button[aria-selected="true"], .cs-segmented button[aria-pressed="true"], .cs-segmented button[aria-checked="true"]) {
2950
+ background: color-mix(in oklab, #e04819 55%, var(--cs-component-button-primary-bg, #992515));
2951
+ }
2952
+ [data-cs-element="thuy"][data-cs-variant="river"] :is(.cs-button:not(.cs-button--secondary):not(.cs-button--tertiary):not(.cs-button--ghost):not(.cs-button--danger):not(.cs-button--danger-ghost), .cs-segmented button[aria-selected="true"], .cs-segmented button[aria-pressed="true"], .cs-segmented button[aria-checked="true"]) {
2953
+ background: color-mix(in oklab, #0284c7 55%, var(--cs-component-button-primary-bg, #0d5a8a));
2954
+ }
2955
+
2956
+ /* ---- 8. Style pack: matte-paper (opaque crisp paper/ledger surfaces, zero backdrop blur) ----
2957
+ * Consumes the exact 10 --cs-accent-* roles and nested theme tokens; nested [data-cs-style="liquid-glass"]
2958
+ * cleanly restores frosted glass composition. */
2959
+ [data-cs-style="matte-paper"] :is(.cs-surface-whisper, .cs-surface-light, .cs-surface-standard, .cs-glass-card, .cs-surface-heavy, .cs-overlay-surface) {
2960
+ -webkit-backdrop-filter: none;
2961
+ backdrop-filter: none;
2962
+ }
2963
+ [data-cs-style="matte-paper"] .cs-surface-whisper {
2964
+ background: var(--cs-color-surface-page, #fffdf8);
2965
+ border: 1px solid var(--cs-color-border-default, #e7d9c6);
2966
+ }
2967
+ [data-cs-style="matte-paper"] :is(.cs-surface-light, .cs-surface-standard, .cs-glass-card) {
2968
+ background: var(--cs-color-surface-panel, #ffffff);
2969
+ border: 1px solid var(--cs-color-border-default, #e7d9c6);
2970
+ box-shadow: var(--cs-shadow-xs);
2971
+ }
2972
+ [data-cs-style="matte-paper"] .cs-surface-heavy {
2973
+ background: var(--cs-color-surface-raised, #fbf4e9);
2974
+ border: 1px solid var(--cs-color-border-default, #e7d9c6);
2975
+ box-shadow: var(--cs-shadow-sm);
2976
+ }
2977
+ [data-cs-style="matte-paper"] :is(.cs-surface-standard, .cs-surface-heavy, .cs-glass-card)::before {
2978
+ display: none;
2979
+ }
2980
+ [data-cs-style="matte-paper"] .cs-card:not(.cs-card--flat) {
2981
+ box-shadow: var(--cs-shadow-xs);
2982
+ }
2983
+ [data-cs-style="matte-paper"] .cs-aurora {
2984
+ background-image: linear-gradient(180deg, color-mix(in oklab, var(--cs-accent, var(--cs-color-brand-ochre)) 18%, var(--cs-color-brand-umber)), var(--cs-color-brand-umber));
2985
+ }
2986
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-surface-whisper {
2987
+ background: var(--cs-glass-whisper-bg);
2988
+ border: 0;
2989
+ -webkit-backdrop-filter: blur(var(--cs-glass-whisper-blur, 8px)) saturate(var(--cs-glass-whisper-saturate, 110%));
2990
+ backdrop-filter: blur(var(--cs-glass-whisper-blur, 8px)) saturate(var(--cs-glass-whisper-saturate, 110%));
2991
+ }
2992
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-surface-light {
2993
+ background: var(--cs-glass-light-bg);
2994
+ border-color: var(--cs-glass-light-border);
2995
+ box-shadow: none;
2996
+ -webkit-backdrop-filter: blur(var(--cs-glass-light-blur, 12px)) saturate(var(--cs-glass-light-saturate, 130%));
2997
+ backdrop-filter: blur(var(--cs-glass-light-blur, 12px)) saturate(var(--cs-glass-light-saturate, 130%));
2998
+ }
2999
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] :is(.cs-surface-standard, .cs-glass-card) {
3000
+ background: var(--cs-glass-standard-bg);
3001
+ border-color: var(--cs-glass-standard-border);
3002
+ box-shadow: var(--cs-shadow-sm);
3003
+ -webkit-backdrop-filter: blur(var(--cs-glass-standard-blur, 16px)) saturate(var(--cs-glass-standard-saturate, 150%));
3004
+ backdrop-filter: blur(var(--cs-glass-standard-blur, 16px)) saturate(var(--cs-glass-standard-saturate, 150%));
3005
+ }
3006
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-surface-heavy {
3007
+ background: var(--cs-glass-heavy-bg);
3008
+ border-color: var(--cs-glass-heavy-border);
3009
+ box-shadow: var(--cs-shadow-lg);
3010
+ -webkit-backdrop-filter: blur(var(--cs-glass-heavy-blur, 24px)) saturate(var(--cs-glass-heavy-saturate, 180%));
3011
+ backdrop-filter: blur(var(--cs-glass-heavy-blur, 24px)) saturate(var(--cs-glass-heavy-saturate, 180%));
3012
+ }
3013
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] :is(.cs-surface-standard, .cs-surface-heavy, .cs-glass-card)::before {
3014
+ display: block;
3015
+ }
3016
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-card:not(.cs-card--flat) {
3017
+ box-shadow: var(--cs-shadow-sm);
3018
+ }
3019
+ [data-cs-style="matte-paper"] [data-cs-style="liquid-glass"] .cs-aurora {
3020
+ background-image:
3021
+ radial-gradient(90% 120% at 12% -10%, color-mix(in oklab, var(--cs-accent, var(--cs-color-brand-ochre)) 46%, transparent), transparent 55%),
3022
+ radial-gradient(70% 90% at 88% 8%, color-mix(in oklab, var(--cs-accent-grad-b, #ffcf5c) 32%, transparent), transparent 60%),
3023
+ radial-gradient(120% 120% at 50% 120%, color-mix(in oklab, #1a1108 60%, transparent), transparent 60%);
3024
+ }
3025
+
2748
3026
  /* ===== base/interaction.css ===== */
2749
3027
  /* CyberSkill — interaction layer: hover depth, focus glow, entrance motion.
2750
3028
  * Additive layer loaded after component sheets so it enhances base components without changing
@@ -2955,8 +3233,24 @@ div.cs-item.is-disabled { opacity: 1; }
2955
3233
  * --cs-color-border-default / --cs-color-text-muted from the --_cs-standard /
2956
3234
  * --_cs-high channel toggles, which flip to high under prefers-contrast: more
2957
3235
  * (light #9a8060 / #45210e · dark #7a6450 / #f5ead9) unless a scope sets
2958
- * data-cs-contrast explicitly. The former contextual overrides here were
2959
- * already superseded by that resolver's higher specificity. */
3236
+ * data-cs-contrast explicitly. Below, explicit [data-cs-contrast="high"] also
3237
+ * reinforces field controls, glass borders and table cell dividers, with a
3238
+ * clean nested [data-cs-contrast="standard"] reset. */
3239
+ [data-cs-contrast="high"] :is(.cs-field__control, .cs-select, .cs-combobox, .cs-search, .cs-taginput, .cs-otp__slot, .cs-datepicker__field, .cs-surface-light, .cs-surface-standard, .cs-glass-card, .cs-surface-heavy) {
3240
+ border-color: color-mix(in oklab, var(--cs-color-text-primary) 54%, var(--cs-color-surface-panel));
3241
+ }
3242
+ [data-cs-contrast="high"] :is(.cs-table th, .cs-table td, .cs-datagrid th, .cs-datagrid td) {
3243
+ border-block-end-color: color-mix(in oklab, var(--cs-color-text-primary) 42%, var(--cs-color-surface-panel));
3244
+ }
3245
+ [data-cs-contrast="high"] [data-cs-contrast="standard"] :is(.cs-field__control, .cs-select, .cs-combobox, .cs-search, .cs-taginput, .cs-otp__slot, .cs-datepicker__field) {
3246
+ border-color: var(--cs-component-textfield-border-default, #bfa58f);
3247
+ }
3248
+ [data-cs-contrast="high"] [data-cs-contrast="standard"] .cs-surface-light { border-color: var(--cs-glass-light-border); }
3249
+ [data-cs-contrast="high"] [data-cs-contrast="standard"] :is(.cs-surface-standard, .cs-glass-card) { border-color: var(--cs-glass-standard-border); }
3250
+ [data-cs-contrast="high"] [data-cs-contrast="standard"] .cs-surface-heavy { border-color: var(--cs-glass-heavy-border); }
3251
+ [data-cs-contrast="high"] [data-cs-contrast="standard"] :is(.cs-table th, .cs-table td, .cs-datagrid th, .cs-datagrid td) {
3252
+ border-block-end-color: var(--cs-color-border-subtle, var(--_cs-border-subtle));
3253
+ }
2960
3254
 
2961
3255
  /* Forced colors removes authored backgrounds and shadows. State must survive
2962
3256
  * that substitution using real borders, system colors and knob position. */
@@ -3140,7 +3434,7 @@ img, svg, video, canvas { max-width: 100%; height: auto; }
3140
3434
  * ordinary prose is untouched. Scoped to the print-doc wrapper; the print @page is
3141
3435
  * wide, so this screen breakpoint never fires during export. */
3142
3436
  @media screen and (max-width: 768px) {
3143
- .cs-desk, .cs-sheet { overflow-wrap: anywhere; }
3437
+ .cs-desk, .cs-sheet, .cs-avoid { overflow-wrap: anywhere; }
3144
3438
  }
3145
3439
 
3146
3440
  /* 10 — App-shell layout: sidebar + main is a fixed two-column INLINE grid
@@ -3156,7 +3450,12 @@ img, svg, video, canvas { max-width: 100%; height: auto; }
3156
3450
  [style*="grid-template-columns:248px 1fr"] { grid-template-columns: 1fr !important; }
3157
3451
  main { min-width: 0; }
3158
3452
  main > * { min-width: 0; }
3159
- .cs-table-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
3453
+ .cs-table-wrap, main .cs-card { overflow-x: auto; -webkit-overflow-scrolling: touch; }
3454
+ .cs-steps { flex-wrap: wrap; }
3455
+ }
3456
+
3457
+ @media (max-width: 640px) {
3458
+ .cs-otp, .cs-input-otp { display: flex; inline-size: 100%; justify-content: space-between; }
3160
3459
  }
3161
3460
 
3162
3461
  /* ---- 320 reflow (UX-003 / WCAG 1.4.10) ---- */
@@ -3164,7 +3463,7 @@ img, svg, video, canvas { max-width: 100%; height: auto; }
3164
3463
  .cs-tabs { overflow-x: auto; overscroll-behavior-x: contain; }
3165
3464
  .cs-pagination { flex-wrap: wrap; max-inline-size: 100%; }
3166
3465
  /* Keep the inherited 44px coarse-pointer floor; wrap controls instead of shrinking targets. */
3167
- .cs-otp { flex-wrap: wrap; gap: 4px; }
3466
+ .cs-otp, .cs-input-otp { flex-wrap: wrap; gap: 4px; }
3168
3467
  .cs-dl { grid-template-columns: 1fr; }
3169
3468
  .cs-field { min-inline-size: 0; }
3170
3469
  .cs-field__control { min-inline-size: 0; }
@@ -3174,5 +3473,5 @@ img, svg, video, canvas { max-width: 100%; height: auto; }
3174
3473
  /* Preserve the narrow fine-pointer scrollbar without overriding coarse hit regions. */
3175
3474
  @media (max-width: 360px) and (pointer: fine) {
3176
3475
  .cs-tabs { scrollbar-width: thin; }
3177
- .cs-otp input { inline-size: 36px; block-size: 40px; font-size: var(--cs-font-size-base); }
3476
+ .cs-otp input, .cs-input-otp input { inline-size: 44px; block-size: 44px; font-size: var(--cs-font-size-base); }
3178
3477
  }