@helixui/library 3.2.0 → 3.3.0-next.111

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 (294) hide show
  1. package/custom-elements.json +175 -326
  2. package/dist/components/hx-accordion/hx-accordion-item.styles.d.ts.map +1 -1
  3. package/dist/components/hx-accordion/index.js +1 -1
  4. package/dist/components/hx-alert/hx-alert.styles.d.ts.map +1 -1
  5. package/dist/components/hx-alert/index.js +1 -1
  6. package/dist/components/hx-banner/hx-banner.styles.d.ts.map +1 -1
  7. package/dist/components/hx-banner/index.js +1 -1
  8. package/dist/components/hx-breadcrumb/hx-breadcrumb-item.styles.d.ts.map +1 -1
  9. package/dist/components/hx-breadcrumb/index.js +1 -1
  10. package/dist/components/hx-button/hx-button.d.ts +46 -49
  11. package/dist/components/hx-button/hx-button.d.ts.map +1 -1
  12. package/dist/components/hx-button/hx-button.styles.d.ts.map +1 -1
  13. package/dist/components/hx-button/index.js +1 -1
  14. package/dist/components/hx-card/hx-card.styles.d.ts.map +1 -1
  15. package/dist/components/hx-card/index.js +1 -1
  16. package/dist/components/hx-carousel/index.js +1 -1
  17. package/dist/components/hx-checkbox/hx-checkbox.styles.d.ts.map +1 -1
  18. package/dist/components/hx-checkbox/index.js +1 -1
  19. package/dist/components/hx-clinical-status/hx-clinical-status.styles.d.ts.map +1 -1
  20. package/dist/components/hx-clinical-status/index.js +1 -1
  21. package/dist/components/hx-code-snippet/hx-code-snippet.styles.d.ts.map +1 -1
  22. package/dist/components/hx-code-snippet/index.js +1 -1
  23. package/dist/components/hx-color-picker/hx-color-picker.styles.d.ts.map +1 -1
  24. package/dist/components/hx-color-picker/index.js +1 -1
  25. package/dist/components/hx-combobox/hx-combobox.styles.d.ts.map +1 -1
  26. package/dist/components/hx-combobox/index.js +1 -1
  27. package/dist/components/hx-data-table/hx-data-table.styles.d.ts.map +1 -1
  28. package/dist/components/hx-data-table/index.js +1 -1
  29. package/dist/components/hx-date-picker/hx-date-picker.styles.d.ts.map +1 -1
  30. package/dist/components/hx-date-picker/index.js +1 -1
  31. package/dist/components/hx-dialog/hx-dialog.styles.d.ts.map +1 -1
  32. package/dist/components/hx-dialog/index.js +1 -1
  33. package/dist/components/hx-drawer/hx-drawer.styles.d.ts.map +1 -1
  34. package/dist/components/hx-drawer/index.js +1 -1
  35. package/dist/components/hx-file-upload/hx-file-upload.styles.d.ts.map +1 -1
  36. package/dist/components/hx-file-upload/index.js +1 -1
  37. package/dist/components/hx-icon-button/hx-icon-button.styles.d.ts.map +1 -1
  38. package/dist/components/hx-icon-button/index.js +1 -1
  39. package/dist/components/hx-link/hx-link.styles.d.ts.map +1 -1
  40. package/dist/components/hx-link/index.js +1 -1
  41. package/dist/components/hx-list/hx-list-item.styles.d.ts.map +1 -1
  42. package/dist/components/hx-list/index.js +1 -1
  43. package/dist/components/hx-menu/hx-menu-item.styles.d.ts.map +1 -1
  44. package/dist/components/hx-menu/index.js +1 -1
  45. package/dist/components/hx-meter/hx-meter.styles.d.ts.map +1 -1
  46. package/dist/components/hx-meter/index.js +1 -1
  47. package/dist/components/hx-nav/hx-nav.styles.d.ts.map +1 -1
  48. package/dist/components/hx-nav/index.js +1 -1
  49. package/dist/components/hx-overflow-menu/hx-overflow-menu.styles.d.ts.map +1 -1
  50. package/dist/components/hx-overflow-menu/index.js +1 -1
  51. package/dist/components/hx-pagination/hx-pagination.styles.d.ts.map +1 -1
  52. package/dist/components/hx-pagination/index.js +1 -1
  53. package/dist/components/hx-phi-field/hx-phi-field.styles.d.ts.map +1 -1
  54. package/dist/components/hx-phi-field/index.js +1 -1
  55. package/dist/components/hx-popover/hx-popover.styles.d.ts.map +1 -1
  56. package/dist/components/hx-popover/index.js +1 -1
  57. package/dist/components/hx-radio-group/hx-radio.styles.d.ts.map +1 -1
  58. package/dist/components/hx-radio-group/index.js +1 -1
  59. package/dist/components/hx-rating/hx-rating.styles.d.ts.map +1 -1
  60. package/dist/components/hx-rating/index.js +1 -1
  61. package/dist/components/hx-select/hx-select.styles.d.ts.map +1 -1
  62. package/dist/components/hx-select/index.js +1 -1
  63. package/dist/components/hx-side-nav/hx-nav-item.d.ts +7 -5
  64. package/dist/components/hx-side-nav/hx-nav-item.d.ts.map +1 -1
  65. package/dist/components/hx-side-nav/hx-nav-item.styles.d.ts.map +1 -1
  66. package/dist/components/hx-side-nav/hx-side-nav.d.ts +10 -23
  67. package/dist/components/hx-side-nav/hx-side-nav.d.ts.map +1 -1
  68. package/dist/components/hx-side-nav/hx-side-nav.styles.d.ts.map +1 -1
  69. package/dist/components/hx-side-nav/index.js +1 -1
  70. package/dist/components/hx-slider/hx-slider.styles.d.ts.map +1 -1
  71. package/dist/components/hx-slider/index.js +1 -1
  72. package/dist/components/hx-split-button/hx-split-button.d.ts +1 -1
  73. package/dist/components/hx-split-button/hx-split-button.styles.d.ts.map +1 -1
  74. package/dist/components/hx-split-button/index.js +1 -1
  75. package/dist/components/hx-split-panel/hx-split-panel.styles.d.ts.map +1 -1
  76. package/dist/components/hx-split-panel/index.js +1 -1
  77. package/dist/components/hx-steps/hx-step.styles.d.ts.map +1 -1
  78. package/dist/components/hx-steps/index.js +1 -1
  79. package/dist/components/hx-switch/hx-switch.styles.d.ts.map +1 -1
  80. package/dist/components/hx-switch/index.js +1 -1
  81. package/dist/components/hx-table/hx-table.styles.d.ts.map +1 -1
  82. package/dist/components/hx-table/index.js +1 -1
  83. package/dist/components/hx-tabs/hx-tab-panel.styles.d.ts.map +1 -1
  84. package/dist/components/hx-tabs/hx-tab.styles.d.ts.map +1 -1
  85. package/dist/components/hx-tabs/index.js +1 -1
  86. package/dist/components/hx-text-input/hx-text-input.d.ts +18 -35
  87. package/dist/components/hx-text-input/hx-text-input.d.ts.map +1 -1
  88. package/dist/components/hx-text-input/hx-text-input.styles.d.ts.map +1 -1
  89. package/dist/components/hx-text-input/index.js +1 -1
  90. package/dist/components/hx-textarea/hx-textarea.styles.d.ts.map +1 -1
  91. package/dist/components/hx-textarea/index.js +1 -1
  92. package/dist/components/hx-theme/hx-theme.d.ts +14 -2
  93. package/dist/components/hx-theme/hx-theme.d.ts.map +1 -1
  94. package/dist/components/hx-theme/index.js +1 -1
  95. package/dist/components/hx-time-picker/index.js +1 -1
  96. package/dist/components/hx-toast/hx-toast.d.ts +12 -8
  97. package/dist/components/hx-toast/hx-toast.d.ts.map +1 -1
  98. package/dist/components/hx-toast/hx-toast.styles.d.ts.map +1 -1
  99. package/dist/components/hx-toast/index.js +1 -1
  100. package/dist/components/hx-toggle-button/hx-toggle-button.styles.d.ts.map +1 -1
  101. package/dist/components/hx-toggle-button/index.js +1 -1
  102. package/dist/components/hx-top-nav/hx-top-nav.styles.d.ts.map +1 -1
  103. package/dist/components/hx-top-nav/index.js +1 -1
  104. package/dist/components/hx-tree-view/hx-tree-item.styles.d.ts.map +1 -1
  105. package/dist/components/hx-tree-view/hx-tree-view.styles.d.ts.map +1 -1
  106. package/dist/components/hx-tree-view/index.js +1 -1
  107. package/dist/css/helix-all.css +351 -308
  108. package/dist/css/helix-core.css +180 -56
  109. package/dist/css/helix-data.css +23 -16
  110. package/dist/css/helix-feedback.css +30 -29
  111. package/dist/css/helix-forms.css +53 -120
  112. package/dist/css/helix-layout.css +2 -8
  113. package/dist/css/helix-media.css +3 -3
  114. package/dist/css/helix-navigation.css +49 -45
  115. package/dist/css/helix-overlay.css +3 -12
  116. package/dist/css/helix-tokens.css +60 -5
  117. package/dist/css/helix-utility.css +5 -11
  118. package/dist/css/hx-alert.css +1 -4
  119. package/dist/css/hx-banner.css +2 -8
  120. package/dist/css/hx-button.css +176 -43
  121. package/dist/css/hx-card.css +1 -4
  122. package/dist/css/hx-carousel.css +3 -3
  123. package/dist/css/hx-checkbox.css +2 -5
  124. package/dist/css/hx-clinical-status.css +2 -4
  125. package/dist/css/hx-code-snippet.css +20 -6
  126. package/dist/css/hx-color-picker.css +3 -13
  127. package/dist/css/hx-combobox.css +7 -13
  128. package/dist/css/hx-data-table.css +2 -8
  129. package/dist/css/hx-date-picker.css +7 -23
  130. package/dist/css/hx-dialog.css +1 -4
  131. package/dist/css/hx-drawer.css +1 -4
  132. package/dist/css/hx-file-upload.css +4 -13
  133. package/dist/css/hx-icon-button.css +2 -5
  134. package/dist/css/hx-link.css +1 -4
  135. package/dist/css/hx-meter.css +1 -2
  136. package/dist/css/hx-nav.css +2 -8
  137. package/dist/css/hx-overflow-menu.css +2 -8
  138. package/dist/css/hx-pagination.css +2 -8
  139. package/dist/css/hx-phi-field.css +1 -4
  140. package/dist/css/hx-popover.css +1 -4
  141. package/dist/css/hx-rating.css +3 -4
  142. package/dist/css/hx-select.css +3 -7
  143. package/dist/css/hx-side-nav.css +41 -15
  144. package/dist/css/hx-slider.css +4 -7
  145. package/dist/css/hx-split-button.css +5 -11
  146. package/dist/css/hx-split-panel.css +2 -8
  147. package/dist/css/hx-switch.css +3 -6
  148. package/dist/css/hx-table.css +1 -2
  149. package/dist/css/hx-text-input.css +8 -14
  150. package/dist/css/hx-textarea.css +2 -5
  151. package/dist/css/hx-time-picker.css +3 -3
  152. package/dist/css/hx-toast.css +26 -15
  153. package/dist/css/hx-toggle-button.css +4 -7
  154. package/dist/css/hx-top-nav.css +1 -4
  155. package/dist/css/hx-tree-view.css +1 -2
  156. package/dist/css/index.css +1 -1
  157. package/dist/css/manifest.json +63 -46
  158. package/dist/index.js +46 -46
  159. package/dist/shared/{hx-accordion-cnKg4_la.js → hx-accordion-ZVzgDzTG.js} +4 -5
  160. package/dist/shared/hx-accordion-ZVzgDzTG.js.map +1 -0
  161. package/dist/shared/{hx-alert-BZH8iHQf.js → hx-alert-CLn7CstP.js} +2 -5
  162. package/dist/shared/hx-alert-CLn7CstP.js.map +1 -0
  163. package/dist/shared/{hx-banner-DT7Zn9Bo.js → hx-banner-D3DzpfcP.js} +7 -13
  164. package/dist/shared/hx-banner-D3DzpfcP.js.map +1 -0
  165. package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js → hx-breadcrumb-item-3tKppF9h.js} +2 -5
  166. package/dist/shared/{hx-breadcrumb-item-COeYcB2x.js.map → hx-breadcrumb-item-3tKppF9h.js.map} +1 -1
  167. package/dist/shared/{hx-button-modUSOpY.js → hx-button-DPY6SPVT.js} +201 -69
  168. package/dist/shared/hx-button-DPY6SPVT.js.map +1 -0
  169. package/dist/shared/{hx-card-CU1QnjNb.js → hx-card-qNAM2QNV.js} +6 -9
  170. package/dist/shared/hx-card-qNAM2QNV.js.map +1 -0
  171. package/dist/shared/{hx-carousel-item-BaE4hpLl.js → hx-carousel-item-z1Lc24op.js} +4 -4
  172. package/dist/shared/hx-carousel-item-z1Lc24op.js.map +1 -0
  173. package/dist/shared/{hx-checkbox-C46TyXhM.js → hx-checkbox-D7xma9YH.js} +7 -10
  174. package/dist/shared/hx-checkbox-D7xma9YH.js.map +1 -0
  175. package/dist/shared/{hx-clinical-status-BmSjfSEN.js → hx-clinical-status-D3XQIOqX.js} +3 -5
  176. package/dist/shared/hx-clinical-status-D3XQIOqX.js.map +1 -0
  177. package/dist/shared/{hx-code-snippet-CJ0FbQYG.js → hx-code-snippet-fVV3Z2DZ.js} +55 -41
  178. package/dist/shared/hx-code-snippet-fVV3Z2DZ.js.map +1 -0
  179. package/dist/shared/{hx-color-picker-DiDLZyvK.js → hx-color-picker-uRc865FJ.js} +23 -33
  180. package/dist/shared/hx-color-picker-uRc865FJ.js.map +1 -0
  181. package/dist/shared/{hx-combobox-DaA5dBC4.js → hx-combobox-DDzqNKEW.js} +11 -17
  182. package/dist/shared/hx-combobox-DDzqNKEW.js.map +1 -0
  183. package/dist/shared/{hx-data-table-Cq3t86Ic.js → hx-data-table-CLqVqdxr.js} +3 -9
  184. package/dist/shared/hx-data-table-CLqVqdxr.js.map +1 -0
  185. package/dist/shared/{hx-date-picker-DMqRQNSB.js → hx-date-picker-2iRG1p74.js} +14 -30
  186. package/dist/shared/hx-date-picker-2iRG1p74.js.map +1 -0
  187. package/dist/shared/{hx-dialog-eIS8tcDm.js → hx-dialog-DRN_1-Y-.js} +2 -5
  188. package/dist/shared/hx-dialog-DRN_1-Y-.js.map +1 -0
  189. package/dist/shared/{hx-drawer-DDhDz7RI.js → hx-drawer-Y1Ui2IWJ.js} +2 -5
  190. package/dist/shared/hx-drawer-Y1Ui2IWJ.js.map +1 -0
  191. package/dist/shared/{hx-file-upload-zTDbjsRw.js → hx-file-upload-D3rKROK5.js} +17 -26
  192. package/dist/shared/hx-file-upload-D3rKROK5.js.map +1 -0
  193. package/dist/shared/{hx-icon-button-BmV97nqz.js → hx-icon-button-CGNdQSFM.js} +3 -6
  194. package/dist/shared/hx-icon-button-CGNdQSFM.js.map +1 -0
  195. package/dist/shared/{hx-link-DmiV-mPw.js → hx-link-C-O6vq0Q.js} +5 -8
  196. package/dist/shared/hx-link-C-O6vq0Q.js.map +1 -0
  197. package/dist/shared/{hx-list-CkphGi9T.js → hx-list-MyEhh8c7.js} +3 -5
  198. package/dist/shared/hx-list-MyEhh8c7.js.map +1 -0
  199. package/dist/shared/{hx-menu-divider-j__TZjH2.js → hx-menu-divider-C2omnPtj.js} +2 -5
  200. package/dist/shared/hx-menu-divider-C2omnPtj.js.map +1 -0
  201. package/dist/shared/{hx-meter-Cm7k_Ro8.js → hx-meter-BPscsw5t.js} +2 -3
  202. package/dist/shared/hx-meter-BPscsw5t.js.map +1 -0
  203. package/dist/shared/{hx-nav-item-D8xHLVOs.js → hx-nav-item-xqRPOCWX.js} +172 -110
  204. package/dist/shared/hx-nav-item-xqRPOCWX.js.map +1 -0
  205. package/dist/shared/{hx-nav-LoyEKZQC.js → hx-nav-ldFM3Fle.js} +37 -43
  206. package/dist/shared/hx-nav-ldFM3Fle.js.map +1 -0
  207. package/dist/shared/{hx-overflow-menu-BmKyAp5D.js → hx-overflow-menu-DCLsdIBy.js} +3 -9
  208. package/dist/shared/hx-overflow-menu-DCLsdIBy.js.map +1 -0
  209. package/dist/shared/{hx-pagination-Dqw5dorC.js → hx-pagination-C7y8GVyU.js} +54 -60
  210. package/dist/shared/hx-pagination-C7y8GVyU.js.map +1 -0
  211. package/dist/shared/{hx-phi-field-Bf9TdtC1.js → hx-phi-field-C19oxlrr.js} +2 -5
  212. package/dist/shared/hx-phi-field-C19oxlrr.js.map +1 -0
  213. package/dist/shared/{hx-popover-B93rTAfr.js → hx-popover-B-FP3-wW.js} +8 -11
  214. package/dist/shared/hx-popover-B-FP3-wW.js.map +1 -0
  215. package/dist/shared/{hx-radio-N8xgDd_5.js → hx-radio-CJvNU2yP.js} +4 -7
  216. package/dist/shared/{hx-radio-N8xgDd_5.js.map → hx-radio-CJvNU2yP.js.map} +1 -1
  217. package/dist/shared/{hx-rating-i2FL1WUN.js → hx-rating-C3QP53k9.js} +4 -5
  218. package/dist/shared/hx-rating-C3QP53k9.js.map +1 -0
  219. package/dist/shared/{hx-select-vgaBo1Ai.js → hx-select-C8fEHQhC.js} +4 -8
  220. package/dist/shared/hx-select-C8fEHQhC.js.map +1 -0
  221. package/dist/shared/{hx-slider-ydBamYhd.js → hx-slider-Blmv_rwS.js} +26 -29
  222. package/dist/shared/hx-slider-Blmv_rwS.js.map +1 -0
  223. package/dist/shared/{hx-split-button-BeMsmS6N.js → hx-split-button-Djnc5Aeg.js} +6 -12
  224. package/dist/shared/hx-split-button-Djnc5Aeg.js.map +1 -0
  225. package/dist/shared/{hx-split-panel-BVG1VWNT.js → hx-split-panel-B-u0Z3mm.js} +3 -9
  226. package/dist/shared/hx-split-panel-B-u0Z3mm.js.map +1 -0
  227. package/dist/shared/{hx-step-DL3PbOzm.js → hx-step-R2rjp1fT.js} +2 -5
  228. package/dist/shared/hx-step-R2rjp1fT.js.map +1 -0
  229. package/dist/shared/{hx-switch-Dougzsgp.js → hx-switch-BrZFaRue.js} +8 -11
  230. package/dist/shared/hx-switch-BrZFaRue.js.map +1 -0
  231. package/dist/shared/{hx-tab-panel-CbkO9VKu.js → hx-tab-panel-DspCrKqo.js} +3 -9
  232. package/dist/shared/{hx-tab-panel-CbkO9VKu.js.map → hx-tab-panel-DspCrKqo.js.map} +1 -1
  233. package/dist/shared/{hx-td-1zwTFLRw.js → hx-td-DnnEMIuA.js} +2 -3
  234. package/dist/shared/hx-td-DnnEMIuA.js.map +1 -0
  235. package/dist/shared/{hx-text-input-B-caO5fI.js → hx-text-input-D6FlOZM-.js} +24 -31
  236. package/dist/shared/hx-text-input-D6FlOZM-.js.map +1 -0
  237. package/dist/shared/{hx-textarea-D9O4U8cb.js → hx-textarea-CNG590KY.js} +3 -6
  238. package/dist/shared/hx-textarea-CNG590KY.js.map +1 -0
  239. package/dist/shared/{hx-theme-BiyQ7UUK.js → hx-theme-BsefFWTO.js} +83 -113
  240. package/dist/shared/hx-theme-BsefFWTO.js.map +1 -0
  241. package/dist/shared/{hx-time-picker-m0z4nFB-.js → hx-time-picker-BoEIZwzv.js} +4 -4
  242. package/dist/shared/{hx-time-picker-m0z4nFB-.js.map → hx-time-picker-BoEIZwzv.js.map} +1 -1
  243. package/dist/shared/{hx-toggle-button-Dd8clXB4.js → hx-toggle-button-iLiYrMbD.js} +24 -27
  244. package/dist/shared/hx-toggle-button-iLiYrMbD.js.map +1 -0
  245. package/dist/shared/{hx-top-nav-CchPYaiV.js → hx-top-nav-DP6OFS8C.js} +11 -14
  246. package/dist/shared/hx-top-nav-DP6OFS8C.js.map +1 -0
  247. package/dist/shared/{hx-tree-item-DtMC3DTa.js → hx-tree-item-C2CiWuDE.js} +4 -11
  248. package/dist/shared/hx-tree-item-C2CiWuDE.js.map +1 -0
  249. package/dist/shared/{toast-factory-DvDRAh0l.js → toast-factory-YSznocIV.js} +66 -56
  250. package/dist/shared/toast-factory-YSznocIV.js.map +1 -0
  251. package/figma-inventory.json +283 -420
  252. package/package.json +2 -2
  253. package/dist/shared/hx-accordion-cnKg4_la.js.map +0 -1
  254. package/dist/shared/hx-alert-BZH8iHQf.js.map +0 -1
  255. package/dist/shared/hx-banner-DT7Zn9Bo.js.map +0 -1
  256. package/dist/shared/hx-button-modUSOpY.js.map +0 -1
  257. package/dist/shared/hx-card-CU1QnjNb.js.map +0 -1
  258. package/dist/shared/hx-carousel-item-BaE4hpLl.js.map +0 -1
  259. package/dist/shared/hx-checkbox-C46TyXhM.js.map +0 -1
  260. package/dist/shared/hx-clinical-status-BmSjfSEN.js.map +0 -1
  261. package/dist/shared/hx-code-snippet-CJ0FbQYG.js.map +0 -1
  262. package/dist/shared/hx-color-picker-DiDLZyvK.js.map +0 -1
  263. package/dist/shared/hx-combobox-DaA5dBC4.js.map +0 -1
  264. package/dist/shared/hx-data-table-Cq3t86Ic.js.map +0 -1
  265. package/dist/shared/hx-date-picker-DMqRQNSB.js.map +0 -1
  266. package/dist/shared/hx-dialog-eIS8tcDm.js.map +0 -1
  267. package/dist/shared/hx-drawer-DDhDz7RI.js.map +0 -1
  268. package/dist/shared/hx-file-upload-zTDbjsRw.js.map +0 -1
  269. package/dist/shared/hx-icon-button-BmV97nqz.js.map +0 -1
  270. package/dist/shared/hx-link-DmiV-mPw.js.map +0 -1
  271. package/dist/shared/hx-list-CkphGi9T.js.map +0 -1
  272. package/dist/shared/hx-menu-divider-j__TZjH2.js.map +0 -1
  273. package/dist/shared/hx-meter-Cm7k_Ro8.js.map +0 -1
  274. package/dist/shared/hx-nav-LoyEKZQC.js.map +0 -1
  275. package/dist/shared/hx-nav-item-D8xHLVOs.js.map +0 -1
  276. package/dist/shared/hx-overflow-menu-BmKyAp5D.js.map +0 -1
  277. package/dist/shared/hx-pagination-Dqw5dorC.js.map +0 -1
  278. package/dist/shared/hx-phi-field-Bf9TdtC1.js.map +0 -1
  279. package/dist/shared/hx-popover-B93rTAfr.js.map +0 -1
  280. package/dist/shared/hx-rating-i2FL1WUN.js.map +0 -1
  281. package/dist/shared/hx-select-vgaBo1Ai.js.map +0 -1
  282. package/dist/shared/hx-slider-ydBamYhd.js.map +0 -1
  283. package/dist/shared/hx-split-button-BeMsmS6N.js.map +0 -1
  284. package/dist/shared/hx-split-panel-BVG1VWNT.js.map +0 -1
  285. package/dist/shared/hx-step-DL3PbOzm.js.map +0 -1
  286. package/dist/shared/hx-switch-Dougzsgp.js.map +0 -1
  287. package/dist/shared/hx-td-1zwTFLRw.js.map +0 -1
  288. package/dist/shared/hx-text-input-B-caO5fI.js.map +0 -1
  289. package/dist/shared/hx-textarea-D9O4U8cb.js.map +0 -1
  290. package/dist/shared/hx-theme-BiyQ7UUK.js.map +0 -1
  291. package/dist/shared/hx-toggle-button-Dd8clXB4.js.map +0 -1
  292. package/dist/shared/hx-top-nav-CchPYaiV.js.map +0 -1
  293. package/dist/shared/hx-tree-item-DtMC3DTa.js.map +0 -1
  294. package/dist/shared/toast-factory-DvDRAh0l.js.map +0 -1
@@ -309,10 +309,7 @@
309
309
 
310
310
  .alert__close-button:focus-visible {
311
311
  outline: var(--hx-focus-ring-width, 2px) solid
312
- var(
313
- --hx-alert-close-btn-focus-ring-color,
314
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
315
- );
312
+ var(--hx-alert-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
316
313
  outline-offset: var(--hx-focus-ring-offset, 2px);
317
314
  opacity: 1;
318
315
  }
@@ -832,10 +829,7 @@
832
829
 
833
830
  .banner__action:focus-visible {
834
831
  outline: var(--hx-focus-ring-width, 2px) solid
835
- var(
836
- --hx-banner-action-focus-ring-color,
837
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
838
- );
832
+ var(--hx-banner-action-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
839
833
  outline-offset: var(--hx-focus-ring-offset, 2px);
840
834
  border-radius: var(--hx-border-radius-sm, 0.25rem);
841
835
  }
@@ -876,10 +870,7 @@
876
870
 
877
871
  .banner__close-button:focus-visible {
878
872
  outline: var(--hx-focus-ring-width, 2px) solid
879
- var(
880
- --hx-banner-close-btn-focus-ring-color,
881
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
882
- );
873
+ var(--hx-banner-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
883
874
  outline-offset: var(--hx-focus-ring-offset, 2px);
884
875
  opacity: 1;
885
876
  }
@@ -1072,10 +1063,7 @@
1072
1063
 
1073
1064
  .button:focus-visible {
1074
1065
  outline: var(--hx-focus-ring-width, 2px) solid
1075
- var(
1076
- --hx-button-focus-ring-color,
1077
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
1078
- );
1066
+ var(--hx-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1079
1067
  outline-offset: var(--hx-focus-ring-offset, 2px);
1080
1068
  }
1081
1069
 
@@ -1113,21 +1101,24 @@
1113
1101
  /* ─── Style Variants ─── */
1114
1102
 
1115
1103
  .button--primary {
1116
- --hx-button-bg: var(--hx-color-primary-500, #429797);
1117
- --hx-button-color: var(--hx-color-text-on-primary, #ffffff);
1104
+ --hx-button-bg: var(--hx-color-action-primary-bg, #429797);
1105
+ /* Inline #0d1825 matches text.on-primary's resolved primitive (neutral-900);
1106
+ cold-start without the semantic still paints AA-tuned dark-on-primary
1107
+ rather than white-on-primary (3.43:1 fail). */
1108
+ --hx-button-color: var(--hx-color-text-on-primary, #0d1825);
1118
1109
  --hx-button-border-color: transparent;
1119
1110
  }
1120
1111
 
1121
1112
  .button--secondary {
1122
1113
  --hx-button-bg: transparent;
1123
- /* primary-500 (#429797) text on white surface = 3.43:1 — fails AA.
1124
- primary-600 (#0F7078) on white = 6.06:1 — AA pass. */
1125
- --hx-button-color: var(--hx-color-primary-600, #0f7078);
1126
- --hx-button-border-color: var(--hx-color-primary-600, #0f7078);
1114
+ /* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
1115
+ primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
1116
+ --hx-button-color: var(--hx-color-action-secondary-fg, #0f7078);
1117
+ --hx-button-border-color: var(--hx-color-action-secondary-border, #0f7078);
1127
1118
  }
1128
1119
 
1129
1120
  .button--secondary:hover {
1130
- --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-surface-raised, #f5f8f3));
1121
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-secondary-bg-hover, #ebf8f8));
1131
1122
  }
1132
1123
 
1133
1124
  .button--tertiary {
@@ -1141,36 +1132,52 @@
1141
1132
  }
1142
1133
 
1143
1134
  .button--danger {
1144
- --hx-button-bg: var(--hx-color-error-500, #e5493e);
1145
- --hx-button-color: var(--hx-color-text-on-error, #ffffff);
1135
+ --hx-button-bg: var(--hx-color-action-danger-bg, #e5493e);
1136
+ /* Inline #0d1825 matches text.on-error's resolved primitive (neutral-900);
1137
+ cold-start without the semantic still paints AA-tuned dark-on-error
1138
+ rather than white-on-error (3.92:1 fail). */
1139
+ --hx-button-color: var(--hx-color-text-on-error, #0d1825);
1146
1140
  --hx-button-border-color: transparent;
1147
1141
  }
1148
1142
 
1149
1143
  /* on-error tokens are tuned for error-500 (neutral-900 on #E5493E ≈ 4.59:1).
1150
- error-600 (#C92A2A) drops that to 2.25:1 — AA fail. Hold fg at neutral-0
1151
- directly so darker hover fills stay legible. Mirrors hx-toast precedent
1152
- (commit 300e21ab0). */
1144
+ error-600 (#C92A2A) drops that to 3.28:1 — AA fail. text.on-error-strong
1145
+ resolves to neutral-0 across modes (no dark flip) so the darker hover fill
1146
+ stays legible. Mirrors hx-toast precedent (commit 300e21ab0); routed
1147
+ through the semantic tier in 3.2.1 token-cascade remediation. */
1153
1148
  .button--danger:hover {
1154
- --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-error-600, #c92a2a));
1155
- --hx-button-color: var(--hx-color-neutral-0, #ffffff);
1149
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-hover, #c92a2a));
1150
+ --hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
1151
+ }
1152
+
1153
+ /* Pressed state binds explicitly to action.danger.bg-active (error-700,
1154
+ #A21312) + text.on-error-strong (neutral-0) = 7.96:1 AA. Base
1155
+ .button:active filter:brightness(0.8) would compound on top of bg-hover
1156
+ (#C92A2A) and produce ~3.3:1 sub-AA on the bound colors. Override the
1157
+ filter to none. HC override on action.danger.bg-active flips to HC
1158
+ error-500 so the on-error-strong (HC = #000) pair is AA in HC too. */
1159
+ .button--danger:active {
1160
+ --hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-danger-bg-active, #a21312));
1161
+ --hx-button-color: var(--hx-color-text-on-error-strong, #ffffff);
1162
+ filter: none;
1156
1163
  }
1157
1164
 
1158
1165
  .button--ghost {
1159
1166
  --hx-button-bg: transparent;
1160
- /* primary-500 (#429797) text on white surface = 3.43:1 — fails AA.
1161
- primary-600 (#0F7078) on white = 6.06:1 — AA pass. */
1162
- --hx-button-color: var(--hx-color-primary-600, #0f7078);
1167
+ /* primary-500 (#429797) text on white surface = 3.44:1 — fails AA.
1168
+ primary-600 (#0F7078) on white = 5.82:1 — AA pass. */
1169
+ --hx-button-color: var(--hx-color-action-ghost-fg, #0f7078);
1163
1170
  --hx-button-border-color: transparent;
1164
1171
  }
1165
1172
 
1166
1173
  .button--ghost:hover {
1167
- --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-surface-raised, #f5f8f3));
1174
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-ghost-bg-hover, #ebf8f8));
1168
1175
  }
1169
1176
 
1170
1177
  .button--outline {
1171
1178
  --hx-button-bg: transparent;
1172
1179
  --hx-button-color: var(--hx-color-text-primary, #0d1825);
1173
- --hx-button-border-color: var(--hx-color-border-strong, #8e9c98);
1180
+ --hx-button-border-color: var(--hx-color-border-strong, #66787b);
1174
1181
  }
1175
1182
 
1176
1183
  .button--outline:hover {
@@ -1178,12 +1185,24 @@
1178
1185
  }
1179
1186
 
1180
1187
  /* on-primary token resolves to neutral-900 (#0D1825) — tuned for primary-500.
1181
- primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail. Pin fg at
1182
- neutral-0 for the darker hover fill. Mirrors hx-toast precedent
1183
- (commit 300e21ab0). */
1188
+ primary-600 (#0F7078) drops the pair to 3.07:1 — AA fail. text.on-primary-strong
1189
+ resolves to neutral-0 across modes (no dark flip) for the darker hover fill.
1190
+ Mirrors hx-toast precedent (commit 300e21ab0); routed through the semantic
1191
+ tier in 3.2.1 token-cascade remediation. */
1184
1192
  .button--primary:hover {
1185
- --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-primary-600, #0f7078));
1186
- --hx-button-color: var(--hx-color-neutral-0, #ffffff);
1193
+ --hx-button-bg: var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-hover, #0f7078));
1194
+ --hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
1195
+ }
1196
+
1197
+ /* Pressed state binds explicitly to action.primary.bg-active (primary-700,
1198
+ #0F6363) + text.on-primary-strong (neutral-0) = 7.03:1 AA. The base
1199
+ .button:active filter:brightness(0.8) would compound on top of bg-hover
1200
+ (#0F7078) and produce ~3.7:1 sub-AA on the bound colors. Override the
1201
+ filter to none so the action.*.bg-active token is what actually paints. */
1202
+ .button--primary:active {
1203
+ --hx-button-bg: var(--hx-button-active-bg, var(--hx-color-action-primary-bg-active, #0f6363));
1204
+ --hx-button-color: var(--hx-color-text-on-primary-strong, #ffffff);
1205
+ filter: none;
1187
1206
  }
1188
1207
 
1189
1208
  /* ─── Disabled ─── */
@@ -1227,9 +1246,20 @@
1227
1246
 
1228
1247
  /* ─── Inverted Mode ─── */
1229
1248
 
1249
+ /* Inline-fallback contract for the on-dark-* tokens in this section:
1250
+ the literal rgba(255, 255, 255, 0.X) arms are a LIGHT-MODE-only last
1251
+ resort (cold-start, CSS-not-loaded). At runtime, hx-theme injects
1252
+ the dark.* override (overlay-black-* for the strong border and the
1253
+ surface.on-dark-overlay-* fills) so dark-mode inverted buttons stay
1254
+ visible on the now-light surface.inverse (#EBEEE9). The inline white
1255
+ overlays would render invisible (≈1.1:1) on a light surface, but
1256
+ they never paint when the theme is mounted. If a future change
1257
+ moves these into a context where hx-theme is not guaranteed,
1258
+ replace with mode-aware tokens. */
1259
+
1230
1260
  /* Override text color and filter-based hover/active for all variants */
1231
1261
  :host([inverted]) .button {
1232
- color: var(--hx-button-inverted-color, var(--hx-color-neutral-0, #ffffff));
1262
+ color: var(--hx-button-inverted-color, var(--hx-color-text-inverse, #ffffff));
1233
1263
  filter: none;
1234
1264
  }
1235
1265
 
@@ -1242,37 +1272,115 @@
1242
1272
  }
1243
1273
 
1244
1274
  :host([inverted]) .button:focus-visible {
1275
+ /* WCAG 1.4.11: focus indicator needs ≥3:1 against adjacent colors.
1276
+ border-on-dark-strong (overlay-white-70) ≈ 5:1 on neutral-900 — passes.
1277
+ The lower-alpha siblings used to live in border.* but were sub-3:1
1278
+ against any plausible surface and could not honour a border contract;
1279
+ they're now surface.on-dark-overlay-{default,subtle} (translucent
1280
+ fills, not borders) and used elsewhere in this file. See
1281
+ tokens.json color.surface.on-dark-overlay-* for canonical ratios. */
1245
1282
  outline-color: var(
1246
1283
  --hx-button-inverted-focus-ring-color,
1247
- var(--hx-overlay-white-50, rgba(255, 255, 255, 0.5))
1284
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
1285
+ );
1286
+ }
1287
+
1288
+ /* Primary inverted — resting bg routes through action.primary.bg-inverted-rest
1289
+ so dark mode can flip the fill to primary-600. surface.inverse becomes light
1290
+ (#EBEEE9) in dark mode; primary-500 on #EBEEE9 = 2.94:1 (sub-3:1 UI floor
1291
+ fail for the inverted-button boundary). primary-600 on #EBEEE9 = 4.97:1
1292
+ (AA pass). Light mode tracks action.primary.bg-inverted-rest's base value
1293
+ (primary-500, 5.20:1 on dark surface.inverse).
1294
+
1295
+ Override path note (codex round-11): this binds --hx-button-bg directly,
1296
+ matching the cascade convention every other .button--{variant} rule uses
1297
+ (light primary at line 89, danger at 120, secondary, tertiary, ghost). The
1298
+ consumer override path for inverted-primary rest is
1299
+ --hx-color-action-primary-bg-inverted-rest, NOT --hx-button-bg — the same
1300
+ pattern as light primary (consumers override --hx-color-action-primary-bg).
1301
+ Pinned by dark-mode-resolution.test.ts:185-197 across both modes. */
1302
+ :host([inverted]) .button--primary {
1303
+ --hx-button-bg: var(--hx-color-action-primary-bg-inverted-rest, #429797);
1304
+ }
1305
+
1306
+ /* Primary inverted — hover/pressed lift to action.primary.bg-inverted-hover
1307
+ (primary-400, light teal). The base :host([inverted]) .button rule binds
1308
+ color to text.inverse, which flips by mode (neutral-0 in light, neutral-900
1309
+ in dark). On a permanent light-teal fill, white text drops to 2.4:1 in
1310
+ light mode (AA fail). Pin color to text.on-primary (neutral-900, no
1311
+ dark-mode flip) for both hover and active so the foreground is dark in
1312
+ both modes — neutral-900 on primary-400 = 7.27:1 (AA pass).
1313
+ Pressed === hover visually in inverted mode is acceptable UX (the
1314
+ transient absence of pointer over the button signals release).
1315
+ The fallback chain wraps --hx-button-active-bg (highest precedence) and
1316
+ --hx-button-hover-bg so consumer overrides on either prop apply under
1317
+ :host([inverted]) — the two share a paint here, so either knob is
1318
+ honored, with active-bg winning when both are set. */
1319
+ :host([inverted]) .button--primary:hover,
1320
+ :host([inverted]) .button--primary:active {
1321
+ --hx-button-bg: var(
1322
+ --hx-button-active-bg,
1323
+ var(--hx-button-hover-bg, var(--hx-color-action-primary-bg-inverted-hover, #6ab1b1))
1324
+ );
1325
+ color: var(
1326
+ --hx-button-inverted-primary-interactive-color,
1327
+ var(--hx-color-text-on-primary, #0d1825)
1248
1328
  );
1249
1329
  }
1250
1330
 
1251
- /* Primary inverted — slight transparent white overlay on hover */
1252
- :host([inverted]) .button--primary:hover {
1253
- --hx-button-bg: var(--hx-color-primary-400, #6ab1b1);
1331
+ /* Danger inverted — sister to primary. Hover/pressed lift to
1332
+ action.danger.bg-inverted-hover (error-400, #FC7264). Same foreground
1333
+ contract: text.inverse fails in light mode (white on light red ≈ 2.6:1);
1334
+ pin to text.on-error (neutral-900, no dark-mode flip) for 6.58:1 in both
1335
+ modes. Same active-bg → hover-bg → semantic fallback chain as primary. */
1336
+ :host([inverted]) .button--danger:hover,
1337
+ :host([inverted]) .button--danger:active {
1338
+ --hx-button-bg: var(
1339
+ --hx-button-active-bg,
1340
+ var(--hx-button-hover-bg, var(--hx-color-action-danger-bg-inverted-hover, #fc7264))
1341
+ );
1342
+ color: var(
1343
+ --hx-button-inverted-danger-interactive-color,
1344
+ var(--hx-color-text-on-error, #0d1825)
1345
+ );
1254
1346
  }
1255
1347
 
1256
- /* Secondary inverted — white border and text */
1348
+ /* Secondary inverted — white border and translucent hover fill */
1257
1349
  :host([inverted]) .button--secondary {
1258
- --hx-button-border-color: var(--hx-overlay-white-70, rgba(255, 255, 255, 0.7));
1350
+ --hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
1259
1351
  }
1260
1352
 
1353
+ /* Inverted overlay fills read both names so consumer overrides reach paint
1354
+ regardless of which token they target: the deprecated --hx-color-border-on-dark-*
1355
+ names (3.2.0/3.2.1 public API, scheduled for removal in 4.0.0) and the canonical
1356
+ --hx-color-surface-on-dark-overlay-* names (round-8 rename). Deprecated name
1357
+ wins when set; otherwise resolves through the canonical alias chain. */
1261
1358
  :host([inverted]) .button--secondary:hover {
1262
- --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
1359
+ --hx-button-bg: var(
1360
+ --hx-color-border-on-dark-default,
1361
+ var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
1362
+ );
1263
1363
  }
1264
1364
 
1265
- /* Tertiary inverted */
1365
+ /* Tertiary inverted — resting at the subtle overlay (10%) lifts to the default
1366
+ overlay (30%) on hover so the runtime hover delta is visually distinct, not
1367
+ collapsed onto a single token. */
1266
1368
  :host([inverted]) .button--tertiary {
1267
- --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
1369
+ --hx-button-bg: var(
1370
+ --hx-color-border-on-dark-subtle,
1371
+ var(--hx-color-surface-on-dark-overlay-subtle, rgba(255, 255, 255, 0.1))
1372
+ );
1268
1373
  --hx-button-border-color: transparent;
1269
1374
  }
1270
1375
 
1271
1376
  :host([inverted]) .button--tertiary:hover {
1272
- --hx-button-bg: var(--hx-overlay-white-25, rgba(255, 255, 255, 0.25));
1377
+ --hx-button-bg: var(
1378
+ --hx-color-border-on-dark-default,
1379
+ var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
1380
+ );
1273
1381
  }
1274
1382
 
1275
- /* Ghost inverted — transparent base, white hover bg */
1383
+ /* Ghost inverted — transparent base, translucent hover bg */
1276
1384
  :host([inverted]) .button--ghost {
1277
1385
  --hx-button-bg: transparent;
1278
1386
  --hx-button-border-color: transparent;
@@ -1281,17 +1389,23 @@
1281
1389
  :host([inverted]) .button--ghost:hover {
1282
1390
  --hx-button-bg: var(
1283
1391
  --hx-button-inverted-ghost-hover-bg,
1284
- var(--hx-overlay-white-20, rgba(255, 255, 255, 0.2))
1392
+ var(
1393
+ --hx-color-border-on-dark-default,
1394
+ var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
1395
+ )
1285
1396
  );
1286
1397
  }
1287
1398
 
1288
1399
  /* Outline inverted — white border */
1289
1400
  :host([inverted]) .button--outline {
1290
- --hx-button-border-color: var(--hx-overlay-white-70, rgba(255, 255, 255, 0.7));
1401
+ --hx-button-border-color: var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
1291
1402
  }
1292
1403
 
1293
1404
  :host([inverted]) .button--outline:hover {
1294
- --hx-button-bg: var(--hx-overlay-white-15, rgba(255, 255, 255, 0.15));
1405
+ --hx-button-bg: var(
1406
+ --hx-color-border-on-dark-default,
1407
+ var(--hx-color-surface-on-dark-overlay-default, rgba(255, 255, 255, 0.3))
1408
+ );
1295
1409
  }
1296
1410
 
1297
1411
  /* ─── Prefix / Suffix / Label ─── */
@@ -1319,6 +1433,16 @@
1319
1433
  border: 2px solid ButtonText;
1320
1434
  }
1321
1435
 
1436
+ .button:hover {
1437
+ /* Hover affordance must survive in HC. Highlight/HighlightText is the
1438
+ OS-level "selected" pair, mirroring the forcedColorsInteractive mixin's
1439
+ hover contract — kept inline since this component owns its bespoke HC
1440
+ block (XOR rule). */
1441
+ background-color: Highlight;
1442
+ color: HighlightText;
1443
+ border-color: Highlight;
1444
+ }
1445
+
1322
1446
  .button:focus-visible {
1323
1447
  outline: 3px solid Highlight;
1324
1448
  outline-offset: 2px;
@@ -1547,10 +1671,7 @@
1547
1671
 
1548
1672
  .card--interactive:focus-visible {
1549
1673
  outline: var(--hx-focus-ring-width, 2px) solid
1550
- var(
1551
- --hx-card-focus-ring-color,
1552
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
1553
- );
1674
+ var(--hx-card-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1554
1675
  outline-offset: var(--hx-focus-ring-offset, 2px);
1555
1676
  }
1556
1677
 
@@ -1712,7 +1833,7 @@
1712
1833
 
1713
1834
  .nav-btn:focus-visible {
1714
1835
  outline: var(--hx-focus-ring-width, 2px) solid
1715
- var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
1836
+ var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1716
1837
  outline-offset: var(--hx-focus-ring-offset, 2px);
1717
1838
  }
1718
1839
 
@@ -1754,7 +1875,7 @@
1754
1875
 
1755
1876
  .play-pause-btn:focus-visible {
1756
1877
  outline: var(--hx-focus-ring-width, 2px) solid
1757
- var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
1878
+ var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1758
1879
  outline-offset: var(--hx-focus-ring-offset, 2px);
1759
1880
  }
1760
1881
 
@@ -1826,7 +1947,7 @@
1826
1947
 
1827
1948
  .pagination-item:focus-visible {
1828
1949
  outline: var(--hx-focus-ring-width, 2px) solid
1829
- var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
1950
+ var(--hx-carousel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1830
1951
  outline-offset: var(--hx-focus-ring-offset, 2px);
1831
1952
  border-radius: var(--hx-border-radius-full, 9999px);
1832
1953
  }
@@ -1947,7 +2068,7 @@
1947
2068
  width: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
1948
2069
  height: var(--hx-checkbox-size, var(--hx-size-5, 1.25rem));
1949
2070
  border: var(--hx-border-width-medium, 2px) solid
1950
- var(--hx-checkbox-border-color, var(--hx-color-border-strong, #8e9c98));
2071
+ var(--hx-checkbox-border-color, var(--hx-color-border-strong, #66787b));
1951
2072
  border-radius: var(--hx-checkbox-border-radius, var(--hx-border-radius-sm, 0.25rem));
1952
2073
  background-color: var(--hx-checkbox-bg, var(--hx-color-surface-default, #ffffff));
1953
2074
  transition:
@@ -1961,10 +2082,7 @@
1961
2082
 
1962
2083
  .checkbox__input:focus-visible ~ .checkbox__box {
1963
2084
  outline: var(--hx-checkbox-focus-ring-width, var(--hx-focus-ring-width, 2px)) solid
1964
- var(
1965
- --hx-checkbox-focus-ring-color,
1966
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
1967
- );
2085
+ var(--hx-checkbox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
1968
2086
  outline-offset: var(--hx-checkbox-focus-ring-offset, var(--hx-focus-ring-offset, 2px));
1969
2087
  }
1970
2088
 
@@ -2467,8 +2585,7 @@
2467
2585
  }
2468
2586
 
2469
2587
  .clinical-status__dismiss-button:focus-visible {
2470
- outline: var(--hx-focus-ring-width, 2px) solid
2471
- var(--hx-focus-ring-color, var(--hx-color-focus, #429797));
2588
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
2472
2589
  outline-offset: var(--hx-focus-ring-offset, 2px);
2473
2590
  opacity: 1;
2474
2591
  }
@@ -2513,8 +2630,7 @@
2513
2630
  }
2514
2631
 
2515
2632
  .clinical-status__acknowledge-button:focus-visible {
2516
- outline: var(--hx-focus-ring-width, 2px) solid
2517
- var(--hx-focus-ring-color, var(--hx-color-focus, #429797));
2633
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
2518
2634
  outline-offset: var(--hx-focus-ring-offset, 2px);
2519
2635
  }
2520
2636
 
@@ -2632,7 +2748,8 @@
2632
2748
  min-width: var(--hx-touch-target-min, 2.75rem);
2633
2749
  min-height: var(--hx-touch-target-min, 2.75rem);
2634
2750
  padding: var(--hx-space-1, 0.25rem) var(--hx-space-2, 0.5rem);
2635
- border: var(--hx-border-width-thin, 1px) solid var(--hx-color-border-strong, #8e9c98);
2751
+ border: var(--hx-border-width-thin, 1px) solid
2752
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
2636
2753
  border-radius: var(--hx-border-radius-sm, 0.25rem);
2637
2754
  /* Copy button sits on the always-dark block snippet surface; uses inverse family for contrast on the terminal background. */
2638
2755
  background-color: var(--hx-color-surface-inverse, #0d1825);
@@ -2657,8 +2774,14 @@
2657
2774
  }
2658
2775
 
2659
2776
  .code-snippet__copy-button:focus-visible {
2660
- outline: var(--hx-focus-ring-width, 2px) solid
2661
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1));
2777
+ /* Always-dark terminal surface — uses primary-400 (#6AB1B1, 7.27:1 on #0d1825)
2778
+ instead of the light-mode --hx-focus-ring-color (primary-600, 3.07:1 — razor
2779
+ above the 3:1 UI floor with no headroom). Deliberate primitive-tier consumption:
2780
+ there is no semantic focus-ring-on-dark alias today — the dark.color.focus-ring
2781
+ override at tokens.json only fires under theme=dark, but this surface is dark in
2782
+ every theme. Tracked for promotion to a semantic alias in a future token-cascade
2783
+ follow-up. */
2784
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-color-primary-400, #6ab1b1);
2662
2785
  outline-offset: var(--hx-focus-ring-offset, 2px);
2663
2786
  }
2664
2787
 
@@ -2677,7 +2800,8 @@
2677
2800
  min-height: var(--hx-touch-target-min, 2.75rem);
2678
2801
  padding: var(--hx-space-2, 0.5rem) var(--hx-space-4, 1rem);
2679
2802
  border: none;
2680
- border-top: var(--hx-border-width-thin, 1px) solid var(--hx-color-border-strong, #8e9c98);
2803
+ border-top: var(--hx-border-width-thin, 1px) solid
2804
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7));
2681
2805
  /* Expand button is attached to the always-dark block snippet — inverse family maintains the terminal aesthetic. */
2682
2806
  background-color: var(--hx-color-surface-inverse, #0d1825);
2683
2807
  color: var(--hx-color-text-inverse, #ffffff);
@@ -2698,8 +2822,14 @@
2698
2822
  }
2699
2823
 
2700
2824
  .code-snippet__expand-button:focus-visible {
2701
- outline: var(--hx-focus-ring-width, 2px) solid
2702
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1));
2825
+ /* Always-dark terminal surface — uses primary-400 (#6AB1B1, 7.27:1 on #0d1825)
2826
+ instead of the light-mode --hx-focus-ring-color (primary-600, 3.07:1 — razor
2827
+ above the 3:1 UI floor with no headroom). Deliberate primitive-tier consumption:
2828
+ there is no semantic focus-ring-on-dark alias today — the dark.color.focus-ring
2829
+ override at tokens.json only fires under theme=dark, but this surface is dark in
2830
+ every theme. Tracked for promotion to a semantic alias in a future token-cascade
2831
+ follow-up. */
2832
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-color-primary-400, #6ab1b1);
2703
2833
  outline-offset: var(--hx-focus-ring-offset, 2px);
2704
2834
  }
2705
2835
 
@@ -2789,10 +2919,7 @@
2789
2919
  }
2790
2920
  :is(.trigger, .gradient-grid, .slider-track, .swatch-btn, .format-btn):focus-visible {
2791
2921
  outline: var(--hx-focus-ring-width, 2px) solid
2792
- var(
2793
- --hx-color-picker-focus-ring-color,
2794
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
2795
- );
2922
+ var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
2796
2923
  outline-offset: var(--hx-focus-ring-offset, 2px);
2797
2924
  }
2798
2925
  .trigger-swatch {
@@ -2967,18 +3094,11 @@
2967
3094
  outline: none;
2968
3095
  }
2969
3096
  .color-input:focus-visible {
2970
- border-color: var(
2971
- --hx-color-picker-focus-ring-color,
2972
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
2973
- );
3097
+ border-color: var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
2974
3098
  box-shadow: 0 0 0 2px
2975
3099
  color-mix(
2976
3100
  in srgb,
2977
- var(
2978
- --hx-color-picker-focus-ring-color,
2979
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
2980
- )
2981
- 20%,
3101
+ var(--hx-color-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078)) 20%,
2982
3102
  transparent
2983
3103
  );
2984
3104
  }
@@ -3089,7 +3209,7 @@
3089
3209
  display: flex;
3090
3210
  align-items: center;
3091
3211
  border: var(--hx-border-width-thin, 1px) solid
3092
- var(--hx-combobox-border-color, var(--hx-color-border-strong, #8e9c98));
3212
+ var(--hx-combobox-border-color, var(--hx-color-border-strong, #66787b));
3093
3213
  border-radius: var(--hx-combobox-border-radius, var(--hx-border-radius-md, 0.375rem));
3094
3214
  background-color: var(--hx-combobox-bg, var(--hx-color-surface-default, #ffffff));
3095
3215
  transition:
@@ -3097,17 +3217,11 @@
3097
3217
  box-shadow var(--hx-transition-fast, 150ms ease);
3098
3218
  }
3099
3219
  .field__input-wrapper:focus-within {
3100
- border-color: var(
3101
- --hx-combobox-focus-ring-color,
3102
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
3103
- );
3220
+ border-color: var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3104
3221
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
3105
3222
  color-mix(
3106
3223
  in srgb,
3107
- var(
3108
- --hx-combobox-focus-ring-color,
3109
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
3110
- )
3224
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
3111
3225
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
3112
3226
  transparent
3113
3227
  );
@@ -3183,7 +3297,7 @@
3183
3297
  }
3184
3298
  .field__clear-button:focus-visible {
3185
3299
  outline: var(--hx-focus-ring-width, 2px) solid
3186
- var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
3300
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3187
3301
  outline-offset: var(--hx-focus-ring-offset, 2px);
3188
3302
  }
3189
3303
  .field__loading-indicator {
@@ -3216,7 +3330,7 @@
3216
3330
  z-index: var(--hx-z-index-dropdown, 1000);
3217
3331
  background-color: var(--hx-combobox-listbox-bg, var(--hx-color-surface-default, #ffffff));
3218
3332
  border: var(--hx-border-width-thin, 1px) solid
3219
- var(--hx-combobox-border-color, var(--hx-color-border-strong, #8e9c98));
3333
+ var(--hx-combobox-border-color, var(--hx-color-border-strong, #66787b));
3220
3334
  border-radius: var(--hx-combobox-border-radius, var(--hx-border-radius-md, 0.375rem));
3221
3335
  box-shadow: var(
3222
3336
  --hx-combobox-listbox-shadow,
@@ -3257,7 +3371,7 @@
3257
3371
  .field__option--focused {
3258
3372
  background-color: var(--hx-combobox-option-hover-bg, var(--hx-color-primary-50, #ebf8f8));
3259
3373
  outline: var(--hx-focus-ring-width, 2px) solid
3260
- var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
3374
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3261
3375
  outline-offset: var(--hx-combobox-option-focus-ring-offset, -2px);
3262
3376
  }
3263
3377
  .field__option--focused.field__option--selected {
@@ -3441,7 +3555,7 @@
3441
3555
  }
3442
3556
  .field__chip-remove:focus-visible {
3443
3557
  outline: var(--hx-focus-ring-width, 2px) solid
3444
- var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, var(--hx-color-primary-500)));
3558
+ var(--hx-combobox-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3445
3559
  outline-offset: var(--hx-focus-ring-offset, 2px);
3446
3560
  opacity: 1;
3447
3561
  }
@@ -3838,10 +3952,7 @@
3838
3952
 
3839
3953
  .sort-btn:focus-visible {
3840
3954
  outline: var(--hx-focus-ring-width, 2px) solid
3841
- var(
3842
- --hx-data-table-focus-ring-color,
3843
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
3844
- );
3955
+ var(--hx-data-table-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3845
3956
  outline-offset: var(--hx-focus-ring-offset, 2px);
3846
3957
  border-radius: var(--hx-border-radius-sm, 2px);
3847
3958
  }
@@ -3943,10 +4054,7 @@
3943
4054
  [part~='td']:focus-visible,
3944
4055
  [part~='th']:focus-visible {
3945
4056
  outline: var(--hx-focus-ring-width, 2px) solid
3946
- var(
3947
- --hx-data-table-focus-ring-color,
3948
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
3949
- );
4057
+ var(--hx-data-table-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
3950
4058
  outline-offset: var(--hx-focus-ring-offset, -2px);
3951
4059
  border-radius: var(--hx-border-radius-sm, 2px);
3952
4060
  }
@@ -4039,7 +4147,7 @@
4039
4147
  display: flex;
4040
4148
  align-items: stretch;
4041
4149
  border: var(--hx-border-width-thin, 1px) solid
4042
- var(--hx-date-picker-border-color, var(--hx-color-border-strong, #8e9c98));
4150
+ var(--hx-date-picker-border-color, var(--hx-color-border-strong, #66787b));
4043
4151
  border-radius: var(--hx-date-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
4044
4152
  background-color: var(--hx-date-picker-bg, var(--hx-color-surface-default, #ffffff));
4045
4153
  transition:
@@ -4049,17 +4157,11 @@
4049
4157
  }
4050
4158
 
4051
4159
  .field__input-wrapper:focus-within {
4052
- border-color: var(
4053
- --hx-date-picker-focus-ring-color,
4054
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
4055
- );
4160
+ border-color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4056
4161
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
4057
4162
  color-mix(
4058
4163
  in srgb,
4059
- var(
4060
- --hx-date-picker-focus-ring-color,
4061
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
4062
- )
4164
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
4063
4165
  calc(var(--hx-focus-ring-opacity, 0.25) * 100%),
4064
4166
  transparent
4065
4167
  );
@@ -4118,7 +4220,7 @@
4118
4220
  padding: 0 var(--hx-space-3, 0.75rem);
4119
4221
  border: none;
4120
4222
  border-left: var(--hx-border-width-thin, 1px) solid
4121
- var(--hx-date-picker-border-color, var(--hx-color-border-strong, #8e9c98));
4223
+ var(--hx-date-picker-border-color, var(--hx-color-border-strong, #66787b));
4122
4224
  background: transparent;
4123
4225
  color: var(--hx-date-picker-trigger-color, var(--hx-color-text-muted, #4a5362));
4124
4226
  cursor: pointer;
@@ -4128,17 +4230,10 @@
4128
4230
  }
4129
4231
 
4130
4232
  .field__trigger:focus-visible {
4131
- color: var(
4132
- --hx-date-picker-focus-ring-color,
4133
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
4134
- );
4233
+ color: var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4135
4234
  background-color: color-mix(
4136
4235
  in srgb,
4137
- var(
4138
- --hx-date-picker-focus-ring-color,
4139
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
4140
- )
4141
- 8%,
4236
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078)) 8%,
4142
4237
  transparent
4143
4238
  );
4144
4239
  }
@@ -4235,10 +4330,7 @@
4235
4330
 
4236
4331
  :is(.calendar__nav-btn, .calendar__day):focus-visible {
4237
4332
  box-shadow: 0 0 0 var(--hx-focus-ring-width, 2px)
4238
- var(
4239
- --hx-date-picker-focus-ring-color,
4240
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
4241
- );
4333
+ var(--hx-date-picker-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4242
4334
  z-index: 1;
4243
4335
  }
4244
4336
 
@@ -4573,10 +4665,7 @@
4573
4665
 
4574
4666
  .dialog__close-btn:focus-visible {
4575
4667
  outline: var(--hx-focus-ring-width, 2px) solid
4576
- var(
4577
- --hx-dialog-close-btn-focus-ring-color,
4578
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
4579
- );
4668
+ var(--hx-dialog-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4580
4669
  outline-offset: var(--hx-focus-ring-offset, 2px);
4581
4670
  }
4582
4671
 
@@ -4943,10 +5032,7 @@
4943
5032
 
4944
5033
  .drawer-close-button:focus-visible {
4945
5034
  outline: var(--hx-focus-ring-width, 2px) solid
4946
- var(
4947
- --hx-drawer-close-btn-focus-ring-color,
4948
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
4949
- );
5035
+ var(--hx-drawer-close-btn-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
4950
5036
  outline-offset: var(--hx-focus-ring-offset, 2px);
4951
5037
  }
4952
5038
 
@@ -5326,7 +5412,7 @@
5326
5412
  min-height: var(--hx-space-32, 8rem);
5327
5413
  padding: var(--hx-space-6, 1.5rem) var(--hx-space-4, 1rem);
5328
5414
  border: var(--hx-border-width-thin, 1px) dashed
5329
- var(--hx-file-upload-dropzone-border-color, var(--hx-color-border-strong, #8e9c98));
5415
+ var(--hx-file-upload-dropzone-border-color, var(--hx-color-border-strong, #66787b));
5330
5416
  border-radius: var(--hx-file-upload-dropzone-border-radius, var(--hx-border-radius-lg, 0.5rem));
5331
5417
  background-color: var(--hx-file-upload-dropzone-bg, var(--hx-color-surface-raised, #f5f8f3));
5332
5418
  cursor: pointer;
@@ -5342,15 +5428,9 @@
5342
5428
 
5343
5429
  .dropzone:focus-visible {
5344
5430
  outline: var(--hx-focus-ring-width, 2px) solid
5345
- var(
5346
- --hx-file-upload-focus-ring-color,
5347
- var(--hx-focus-ring-color, var(--hx-color-primary-500))
5348
- );
5431
+ var(--hx-file-upload-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
5349
5432
  outline-offset: var(--hx-focus-ring-offset, 2px);
5350
- border-color: var(
5351
- --hx-file-upload-focus-ring-color,
5352
- var(--hx-focus-ring-color, var(--hx-color-primary-500))
5353
- );
5433
+ border-color: var(--hx-file-upload-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
5354
5434
  }
5355
5435
 
5356
5436
  .dropzone--drag-over {
@@ -5465,10 +5545,7 @@
5465
5545
 
5466
5546
  .file-item__remove:focus-visible {
5467
5547
  outline: var(--hx-focus-ring-width, 2px) solid
5468
- var(
5469
- --hx-file-upload-focus-ring-color,
5470
- var(--hx-focus-ring-color, var(--hx-color-primary-500))
5471
- );
5548
+ var(--hx-file-upload-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
5472
5549
  outline-offset: var(--hx-focus-ring-offset, 2px);
5473
5550
  }
5474
5551
 
@@ -5799,10 +5876,7 @@ export const helixGridItemStyles = css`
5799
5876
 
5800
5877
  .button:focus-visible {
5801
5878
  outline: var(--hx-focus-ring-width, 2px) solid
5802
- var(
5803
- --hx-icon-button-focus-ring-color,
5804
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
5805
- );
5879
+ var(--hx-icon-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
5806
5880
  outline-offset: var(--hx-focus-ring-offset, 2px);
5807
5881
  }
5808
5882
 
@@ -5872,7 +5946,7 @@ export const helixGridItemStyles = css`
5872
5946
  .button--tertiary {
5873
5947
  --hx-icon-button-bg: transparent;
5874
5948
  --hx-icon-button-color: var(--hx-color-text-strong, #202b39);
5875
- --hx-icon-button-border-color: var(--hx-color-border-strong, #8e9c98);
5949
+ --hx-icon-button-border-color: var(--hx-color-border-strong, #66787b);
5876
5950
  }
5877
5951
 
5878
5952
  .button--tertiary:hover {
@@ -6045,10 +6119,7 @@ export const helixGridItemStyles = css`
6045
6119
 
6046
6120
  .link:focus-visible {
6047
6121
  outline: var(--hx-focus-ring-width, 2px) solid
6048
- var(
6049
- --hx-link-focus-ring-color,
6050
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
6051
- );
6122
+ var(--hx-link-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
6052
6123
  outline-offset: var(--hx-focus-ring-offset, 2px);
6053
6124
  border-radius: var(--hx-border-radius-sm, 0.25rem);
6054
6125
  }
@@ -6234,8 +6305,7 @@ export const helixGridItemStyles = css`
6234
6305
  }
6235
6306
 
6236
6307
  .meter:focus-visible {
6237
- outline: var(--hx-focus-ring-width, 2px) solid
6238
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));
6308
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
6239
6309
  outline-offset: var(--hx-focus-ring-offset, 2px);
6240
6310
  }
6241
6311
 
@@ -6388,10 +6458,7 @@ export const helixGridItemStyles = css`
6388
6458
 
6389
6459
  [part='toggle']:focus-visible {
6390
6460
  outline: var(--hx-focus-ring-width, 2px) solid
6391
- var(
6392
- --hx-nav-focus-ring-color,
6393
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
6394
- );
6461
+ var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
6395
6462
  outline-offset: var(--hx-focus-ring-offset, 2px);
6396
6463
  }
6397
6464
 
@@ -6444,10 +6511,7 @@ export const helixGridItemStyles = css`
6444
6511
 
6445
6512
  .nav__link:focus-visible {
6446
6513
  outline: var(--hx-focus-ring-width, 2px) solid
6447
- var(
6448
- --hx-nav-focus-ring-color,
6449
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
6450
- );
6514
+ var(--hx-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
6451
6515
  outline-offset: var(--hx-focus-ring-offset, 2px);
6452
6516
  }
6453
6517
 
@@ -6965,10 +7029,7 @@ export const helixGridItemStyles = css`
6965
7029
 
6966
7030
  .trigger:focus-visible {
6967
7031
  outline: var(--hx-focus-ring-width, 2px) solid
6968
- var(
6969
- --hx-overflow-menu-focus-ring-color,
6970
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
6971
- );
7032
+ var(--hx-overflow-menu-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
6972
7033
  outline-offset: var(--hx-focus-ring-offset, 2px);
6973
7034
  }
6974
7035
 
@@ -7061,10 +7122,7 @@ export const helixGridItemStyles = css`
7061
7122
  ::slotted([role='menuitemcheckbox']:focus-visible),
7062
7123
  ::slotted([role='menuitemradio']:focus-visible) {
7063
7124
  outline: var(--hx-focus-ring-width, 2px) solid
7064
- var(
7065
- --hx-overflow-menu-focus-ring-color,
7066
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
7067
- );
7125
+ var(--hx-overflow-menu-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7068
7126
  outline-offset: 0;
7069
7127
  }
7070
7128
 
@@ -7168,10 +7226,7 @@ export const helixGridItemStyles = css`
7168
7226
 
7169
7227
  .button:focus-visible {
7170
7228
  outline: var(--hx-focus-ring-width, 2px) solid
7171
- var(
7172
- --hx-pagination-focus-ring-color,
7173
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
7174
- );
7229
+ var(--hx-pagination-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7175
7230
  outline-offset: var(--hx-focus-ring-offset, 2px);
7176
7231
  }
7177
7232
 
@@ -7238,10 +7293,7 @@ export const helixGridItemStyles = css`
7238
7293
 
7239
7294
  .page-size-select:focus-visible {
7240
7295
  outline: var(--hx-focus-ring-width, 2px) solid
7241
- var(
7242
- --hx-pagination-focus-ring-color,
7243
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
7244
- );
7296
+ var(--hx-pagination-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7245
7297
  outline-offset: var(--hx-focus-ring-offset, 2px);
7246
7298
  }
7247
7299
 
@@ -7532,10 +7584,7 @@ export const helixGridItemStyles = css`
7532
7584
 
7533
7585
  .phi-field__toggle:focus-visible {
7534
7586
  outline: var(--hx-focus-ring-width, 2px) solid
7535
- var(
7536
- --hx-phi-field-focus-ring-color,
7537
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
7538
- );
7587
+ var(--hx-phi-field-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7539
7588
  outline-offset: var(--hx-focus-ring-offset, 2px);
7540
7589
  }
7541
7590
 
@@ -7628,10 +7677,7 @@ export const helixGridItemStyles = css`
7628
7677
 
7629
7678
  [part='body']:focus-visible {
7630
7679
  outline: var(--hx-focus-ring-width, 2px) solid
7631
- var(
7632
- --hx-popover-focus-ring-color,
7633
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
7634
- );
7680
+ var(--hx-popover-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
7635
7681
  outline-offset: var(--hx-focus-ring-offset, 2px);
7636
7682
  }
7637
7683
 
@@ -8147,7 +8193,7 @@ export const helixGridItemStyles = css`
8147
8193
  justify-content: center;
8148
8194
  position: relative;
8149
8195
  cursor: pointer;
8150
- color: var(--hx-rating-empty-color, var(--hx-color-border-strong, #8e9c98));
8196
+ color: var(--hx-rating-empty-color, var(--hx-color-border-strong, #66787b));
8151
8197
  line-height: 1;
8152
8198
  min-width: var(--hx-touch-target-min, 2.75rem);
8153
8199
  min-height: var(--hx-touch-target-min, 2.75rem);
@@ -8155,8 +8201,7 @@ export const helixGridItemStyles = css`
8155
8201
  }
8156
8202
 
8157
8203
  .symbol:focus-visible {
8158
- outline: var(--hx-focus-ring-width, 2px) solid
8159
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1));
8204
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
8160
8205
  outline-offset: var(--hx-focus-ring-offset, 2px);
8161
8206
  border-radius: var(--hx-border-radius-sm, 0.25rem);
8162
8207
  }
@@ -8198,7 +8243,7 @@ export const helixGridItemStyles = css`
8198
8243
  position: absolute;
8199
8244
  left: 0;
8200
8245
  top: 0;
8201
- color: var(--hx-rating-empty-color, var(--hx-color-border-strong, #8e9c98));
8246
+ color: var(--hx-rating-empty-color, var(--hx-color-border-strong, #66787b));
8202
8247
  /* Clip to right 50% for the empty half */
8203
8248
  clip-path: inset(0 0 0 50%);
8204
8249
  }
@@ -8266,14 +8311,11 @@ export const helixGridItemStyles = css`
8266
8311
  --_label-color: var(--hx-select-label-color, var(--hx-color-text-strong, #202b39));
8267
8312
 
8268
8313
  /* Border */
8269
- --_border-color: var(--hx-select-border-color, var(--hx-color-border-strong, #8e9c98));
8314
+ --_border-color: var(--hx-select-border-color, var(--hx-color-border-strong, #66787b));
8270
8315
  --_border-radius: var(--hx-select-border-radius, var(--hx-border-radius-md, 0.375rem));
8271
8316
 
8272
8317
  /* Focus ring */
8273
- --_focus-ring-color: var(
8274
- --hx-select-focus-ring-color,
8275
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
8276
- );
8318
+ --_focus-ring-color: var(--hx-select-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
8277
8319
 
8278
8320
  /* Error */
8279
8321
  --_error-color: var(--hx-select-error-color, var(--hx-color-error-500, #e5493e));
@@ -8485,8 +8527,7 @@ export const helixGridItemStyles = css`
8485
8527
 
8486
8528
  .field__option--focused {
8487
8529
  background-color: var(--_option-hover-bg);
8488
- outline: var(--hx-focus-ring-width, 2px) solid
8489
- var(--_focus-ring-color, var(--hx-color-primary-500));
8530
+ outline: var(--hx-focus-ring-width, 2px) solid var(--_focus-ring-color);
8490
8531
  outline-offset: var(--hx-select-option-focus-ring-offset, -2px);
8491
8532
  }
8492
8533
 
@@ -8637,7 +8678,7 @@ export const helixGridItemStyles = css`
8637
8678
  and evaluates their text against the page white background, producing
8638
8679
  false-positive color-contrast violations (WCAG 2.1 AA). */
8639
8680
  background-color: var(--hx-side-nav-bg, var(--hx-color-surface-inverse, #0d1825));
8640
- color: var(--hx-side-nav-color, var(--hx-color-text-inverse, #ebeee9));
8681
+ color: var(--hx-side-nav-color, var(--hx-color-text-inverse, #ffffff));
8641
8682
  }
8642
8683
 
8643
8684
  * {
@@ -8652,11 +8693,14 @@ export const helixGridItemStyles = css`
8652
8693
  height: 100%;
8653
8694
  width: var(--hx-side-nav-width, 16rem);
8654
8695
  background-color: var(--hx-side-nav-bg, var(--hx-color-surface-inverse, #0d1825));
8655
- color: var(--hx-side-nav-color, var(--hx-color-text-inverse, #ebeee9));
8696
+ color: var(--hx-side-nav-color, var(--hx-color-text-inverse, #ffffff));
8656
8697
  transition: width var(--hx-transition-normal, 300ms) ease;
8657
8698
  overflow: hidden;
8658
8699
  border-inline-end: var(--hx-border-width-thin, 1px) solid
8659
- var(--hx-side-nav-border-color, var(--hx-color-border-strong, #313e4b));
8700
+ var(
8701
+ --hx-side-nav-border-color,
8702
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
8703
+ );
8660
8704
  }
8661
8705
 
8662
8706
  /* ─── Collapsed State ─── */
@@ -8674,7 +8718,10 @@ export const helixGridItemStyles = css`
8674
8718
  flex-shrink: 0;
8675
8719
  min-height: var(--hx-space-14, 3.5rem);
8676
8720
  border-bottom: var(--hx-border-width-thin, 1px) solid
8677
- var(--hx-side-nav-border-color, var(--hx-color-border-strong, #313e4b));
8721
+ var(
8722
+ --hx-side-nav-border-color,
8723
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
8724
+ );
8678
8725
  overflow: hidden;
8679
8726
  }
8680
8727
 
@@ -8701,7 +8748,10 @@ export const helixGridItemStyles = css`
8701
8748
  flex-shrink: 0;
8702
8749
  min-height: var(--hx-space-14, 3.5rem);
8703
8750
  border-top: var(--hx-border-width-thin, 1px) solid
8704
- var(--hx-side-nav-border-color, var(--hx-color-border-strong, #313e4b));
8751
+ var(
8752
+ --hx-side-nav-border-color,
8753
+ var(--hx-color-border-on-dark-strong, rgba(255, 255, 255, 0.7))
8754
+ );
8705
8755
  overflow: hidden;
8706
8756
  }
8707
8757
 
@@ -8724,7 +8774,7 @@ export const helixGridItemStyles = css`
8724
8774
  border: none;
8725
8775
  border-radius: var(--hx-border-radius-sm, 0.25rem);
8726
8776
  background: transparent;
8727
- color: var(--hx-side-nav-toggle-color, var(--hx-color-text-inverse, #b6bfb9));
8777
+ color: var(--hx-side-nav-toggle-color, var(--hx-color-text-inverse, #ffffff));
8728
8778
  cursor: pointer;
8729
8779
  transition:
8730
8780
  background-color var(--hx-transition-fast, 150ms) ease,
@@ -8732,25 +8782,34 @@ export const helixGridItemStyles = css`
8732
8782
  }
8733
8783
 
8734
8784
  .side-nav__toggle:hover {
8785
+ /* Read both deprecated --hx-color-border-on-dark-subtle (3.2.0/3.2.1 API)
8786
+ and canonical --hx-color-surface-on-dark-overlay-subtle so consumer
8787
+ overrides on either name reach paint. Deprecated removal: 4.0.0.
8788
+ Hex fallback for browsers without color-mix(). */
8735
8789
  background-color: var(
8736
- --hx-overlay-white-10,
8737
- rgba(255, 255, 255, 0.1)
8738
- ); /* fallback for browsers without color-mix() */
8739
- color: var(--hx-color-text-inverse, #ebeee9);
8790
+ --hx-color-border-on-dark-subtle,
8791
+ var(--hx-color-surface-on-dark-overlay-subtle, rgba(255, 255, 255, 0.1))
8792
+ );
8793
+ color: var(--hx-side-nav-toggle-hover-color, var(--hx-color-text-inverse, #ffffff));
8740
8794
  }
8741
8795
 
8742
8796
  @supports (color: color-mix(in srgb, red 50%, blue)) {
8797
+ /* Fold color-mix() into the same deprecated-first chain so consumer
8798
+ overrides on either token reach paint on the modern path too. */
8743
8799
  .side-nav__toggle:hover {
8744
- background-color: color-mix(in srgb, currentColor 15%, transparent);
8800
+ background-color: var(
8801
+ --hx-color-border-on-dark-subtle,
8802
+ var(
8803
+ --hx-color-surface-on-dark-overlay-subtle,
8804
+ color-mix(in srgb, currentColor 15%, transparent)
8805
+ )
8806
+ );
8745
8807
  }
8746
8808
  }
8747
8809
 
8748
8810
  .side-nav__toggle:focus-visible {
8749
8811
  outline: var(--hx-focus-ring-width, 2px) solid
8750
- var(
8751
- --hx-side-nav-focus-ring-color,
8752
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
8753
- );
8812
+ var(--hx-side-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
8754
8813
  outline-offset: var(--hx-focus-ring-offset, 2px);
8755
8814
  }
8756
8815
 
@@ -8796,10 +8855,18 @@ export const helixGridItemStyles = css`
8796
8855
  }
8797
8856
 
8798
8857
  .side-nav__toggle {
8858
+ forced-color-adjust: none;
8859
+ background-color: ButtonFace;
8799
8860
  color: ButtonText;
8800
8861
  border: 1px solid ButtonText;
8801
8862
  }
8802
8863
 
8864
+ .side-nav__toggle:hover {
8865
+ background-color: Highlight;
8866
+ color: HighlightText;
8867
+ border-color: Highlight;
8868
+ }
8869
+
8803
8870
  .side-nav__toggle:focus-visible {
8804
8871
  outline: 3px solid Highlight;
8805
8872
  outline-offset: 2px;
@@ -9100,10 +9167,7 @@ export const helixGridItemStyles = css`
9100
9167
  .slider__input:focus-visible ~ .slider__thumb-visual {
9101
9168
  box-shadow:
9102
9169
  0 0 0 var(--hx-focus-ring-width, 2px)
9103
- var(
9104
- --hx-slider-focus-ring-color,
9105
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
9106
- ),
9170
+ var(--hx-slider-focus-ring-color, var(--hx-focus-ring-color, #0f7078)),
9107
9171
  var(--hx-slider-thumb-shadow, var(--hx-shadow-sm, 0 1px 2px 0 rgb(0 0 0 / 0.05)));
9108
9172
  }
9109
9173
 
@@ -9159,7 +9223,7 @@ export const helixGridItemStyles = css`
9159
9223
  top: 0;
9160
9224
  width: var(--hx-border-width-thin, 1px);
9161
9225
  height: 100%;
9162
- background-color: var(--hx-slider-tick-color, var(--hx-color-border-strong, #8e9c98));
9226
+ background-color: var(--hx-slider-tick-color, var(--hx-color-border-strong, #66787b));
9163
9227
  transform: translateX(-50%);
9164
9228
  }
9165
9229
 
@@ -9185,13 +9249,13 @@ export const helixGridItemStyles = css`
9185
9249
  /* ─── Disabled state ─── */
9186
9250
 
9187
9251
  .slider--disabled .slider__fill {
9188
- background-color: var(--hx-slider-disabled-fill-bg, var(--hx-color-border-strong, #8e9c98));
9252
+ background-color: var(--hx-slider-disabled-fill-bg, var(--hx-color-border-strong, #66787b));
9189
9253
  }
9190
9254
 
9191
9255
  .slider--disabled .slider__thumb-visual {
9192
9256
  border-color: var(
9193
9257
  --hx-slider-disabled-thumb-border-color,
9194
- var(--hx-color-border-strong, #8e9c98)
9258
+ var(--hx-color-border-strong, #66787b)
9195
9259
  );
9196
9260
  }
9197
9261
  /* ── hx-spinner ── */
@@ -9372,10 +9436,7 @@ export const helixGridItemStyles = css`
9372
9436
 
9373
9437
  .split-button__primary:focus-visible {
9374
9438
  outline: var(--hx-focus-ring-width, 2px) solid
9375
- var(
9376
- --hx-split-button-focus-ring-color,
9377
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
9378
- );
9439
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
9379
9440
  outline-offset: var(--hx-focus-ring-offset, 2px);
9380
9441
  z-index: 1;
9381
9442
  position: relative;
@@ -9402,7 +9463,7 @@ export const helixGridItemStyles = css`
9402
9463
  flex-shrink: 0;
9403
9464
  border: var(--hx-border-width-thin, 1px) solid var(--hx-split-button-border-color, transparent);
9404
9465
  border-inline-start: var(--hx-border-width-thin, 1px) solid
9405
- var(--hx-split-button-divider-color, var(--hx-color-primary-400, #6ab1b1));
9466
+ var(--hx-split-button-divider-color, var(--hx-color-primary-900, #0b3232));
9406
9467
  border-radius: 0 var(--hx-split-button-border-radius, var(--hx-border-radius-md, 0.375rem))
9407
9468
  var(--hx-split-button-border-radius, var(--hx-border-radius-md, 0.375rem)) 0;
9408
9469
  background-color: var(--hx-split-button-bg, var(--hx-color-primary-500, #429797));
@@ -9417,10 +9478,7 @@ export const helixGridItemStyles = css`
9417
9478
 
9418
9479
  .split-button__trigger:focus-visible {
9419
9480
  outline: var(--hx-focus-ring-width, 2px) solid
9420
- var(
9421
- --hx-split-button-focus-ring-color,
9422
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
9423
- );
9481
+ var(--hx-split-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
9424
9482
  outline-offset: var(--hx-focus-ring-offset, 2px);
9425
9483
  z-index: 1;
9426
9484
  position: relative;
@@ -9496,7 +9554,7 @@ export const helixGridItemStyles = css`
9496
9554
  --hx-split-button-bg: var(--hx-color-primary-500, #429797);
9497
9555
  --hx-split-button-color: var(--hx-color-text-on-primary, #ffffff);
9498
9556
  --hx-split-button-border-color: transparent;
9499
- --hx-split-button-divider-color: var(--hx-color-primary-400, #6ab1b1);
9557
+ --hx-split-button-divider-color: var(--hx-color-primary-900, #0b3232);
9500
9558
  }
9501
9559
 
9502
9560
  /* primary:hover — replace the universal brightness(0.9) filter (which would
@@ -9583,7 +9641,7 @@ export const helixGridItemStyles = css`
9583
9641
  .split-button--outline .split-button__trigger {
9584
9642
  --hx-split-button-bg: transparent;
9585
9643
  --hx-split-button-color: var(--hx-color-text-primary, #0d1825);
9586
- --hx-split-button-border-color: var(--hx-color-border-strong, #8e9c98);
9644
+ --hx-split-button-border-color: var(--hx-color-border-strong, #66787b);
9587
9645
  --hx-split-button-divider-color: var(--hx-color-border-default, #d6dbd5);
9588
9646
  }
9589
9647
 
@@ -9774,10 +9832,7 @@ export const helixGridItemStyles = css`
9774
9832
 
9775
9833
  .divider:focus-visible {
9776
9834
  outline: var(--hx-focus-ring-width, 2px) solid
9777
- var(
9778
- --hx-split-panel-focus-ring-color,
9779
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
9780
- );
9835
+ var(--hx-split-panel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
9781
9836
  outline-offset: var(--hx-focus-ring-offset, 2px);
9782
9837
  box-shadow: 0 0 0 4px color-mix(in srgb, var(--_divider-hover-color) 30%, transparent);
9783
9838
  }
@@ -9839,10 +9894,7 @@ export const helixGridItemStyles = css`
9839
9894
 
9840
9895
  .collapse-btn:focus-visible {
9841
9896
  outline: var(--hx-focus-ring-width, 2px) solid
9842
- var(
9843
- --hx-split-panel-focus-ring-color,
9844
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
9845
- );
9897
+ var(--hx-split-panel-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
9846
9898
  outline-offset: var(--hx-focus-ring-offset, 2px);
9847
9899
  }
9848
9900
 
@@ -10484,7 +10536,7 @@ export const helixStructuredListRowStyles = css`
10484
10536
  border: none;
10485
10537
  padding: 0;
10486
10538
  border-radius: var(--hx-border-radius-full, 9999px);
10487
- background-color: var(--hx-switch-track-bg, var(--hx-color-border-strong, #8e9c98));
10539
+ background-color: var(--hx-switch-track-bg, var(--hx-color-border-strong, #66787b));
10488
10540
  cursor: pointer;
10489
10541
  transition: background-color var(--hx-transition-fast, 150ms ease);
10490
10542
  outline: none;
@@ -10494,10 +10546,7 @@ export const helixStructuredListRowStyles = css`
10494
10546
 
10495
10547
  .switch__track:focus-visible {
10496
10548
  outline: var(--hx-focus-ring-width, 2px) solid
10497
- var(
10498
- --hx-switch-focus-ring-color,
10499
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
10500
- );
10549
+ var(--hx-switch-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
10501
10550
  outline-offset: var(--hx-focus-ring-offset, 2px);
10502
10551
  }
10503
10552
 
@@ -10506,7 +10555,7 @@ export const helixStructuredListRowStyles = css`
10506
10555
  }
10507
10556
 
10508
10557
  .switch:not(.switch--checked) .switch__track:hover {
10509
- background-color: var(--hx-switch-track-hover-bg, var(--hx-color-border-strong, #8e9c98));
10558
+ background-color: var(--hx-switch-track-hover-bg, var(--hx-color-border-strong, #66787b));
10510
10559
  }
10511
10560
 
10512
10561
  .switch--checked .switch__track:hover {
@@ -10766,8 +10815,7 @@ export const helixStructuredListRowStyles = css`
10766
10815
  /* ─── Focus ─── */
10767
10816
 
10768
10817
  ::slotted(:focus-visible) {
10769
- outline: var(--hx-focus-ring-width, 2px) solid
10770
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797));
10818
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
10771
10819
  outline-offset: var(--hx-focus-ring-offset, -2px);
10772
10820
  }
10773
10821
 
@@ -11269,18 +11317,15 @@ export const helixTableSectionBaseStyles = css`
11269
11317
  /* Border */
11270
11318
  --_text-input-border-color: var(
11271
11319
  --hx-text-input-border-color,
11272
- var(--hx-input-border-color, var(--hx-color-border-strong, #8e9c98))
11320
+ var(--hx-input-border-color, var(--hx-color-border-strong, #66787b))
11273
11321
  );
11274
11322
  --_text-input-border-color-hover: var(
11275
11323
  --hx-text-input-border-color-hover,
11276
- var(--hx-color-border-strong, #8e9c98)
11324
+ var(--hx-color-border-strong, #66787b)
11277
11325
  );
11278
11326
  --_text-input-border-color-focus: var(
11279
11327
  --hx-text-input-border-color-focus,
11280
- var(
11281
- --hx-input-focus-ring-color,
11282
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
11283
- )
11328
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
11284
11329
  );
11285
11330
  --_text-input-border-color-invalid: var(
11286
11331
  --hx-text-input-border-color-invalid,
@@ -11306,10 +11351,7 @@ export const helixTableSectionBaseStyles = css`
11306
11351
  /* Focus ring */
11307
11352
  --_text-input-focus-ring-color: var(
11308
11353
  --hx-text-input-focus-ring-color,
11309
- var(
11310
- --hx-input-focus-ring-color,
11311
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
11312
- )
11354
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
11313
11355
  );
11314
11356
  --_text-input-focus-ring-width: var(
11315
11357
  --hx-text-input-focus-ring-width,
@@ -11539,10 +11581,10 @@ export const helixTableSectionBaseStyles = css`
11539
11581
 
11540
11582
  /* ─── High Contrast Mode (forced-colors) ───
11541
11583
  *
11542
- * Component-specific overrides that complement the shared forcedColorsField
11543
- * mixin (composed in static styles). The mixin handles the input/wrapper
11544
- * core; the rules below extend it to the label / error / help-text /
11545
- * disabled-host surfaces unique to hx-text-input.
11584
+ * Bespoke block sole owner of forced-colors deference for hx-text-input.
11585
+ * Covers wrapper/input/placeholder/focus/disabled/error/label/help-text;
11586
+ * strictly more than forcedColorsField. The mixin is intentionally NOT
11587
+ * composed (XOR rule see styles/forced-colors.ts COMPOSITION RULES).
11546
11588
  */
11547
11589
 
11548
11590
  @media (forced-colors: active) {
@@ -11615,14 +11657,11 @@ export const helixTableSectionBaseStyles = css`
11615
11657
  );
11616
11658
  --_textarea-border-color: var(
11617
11659
  --hx-textarea-border-color,
11618
- var(--hx-input-border-color, var(--hx-color-border-strong, #8e9c98))
11660
+ var(--hx-input-border-color, var(--hx-color-border-strong, #66787b))
11619
11661
  );
11620
11662
  --_textarea-border-color-focus: var(
11621
11663
  --hx-textarea-border-color-focus,
11622
- var(
11623
- --hx-input-focus-ring-color,
11624
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
11625
- )
11664
+ var(--hx-input-focus-ring-color, var(--hx-focus-ring-color, #0f7078))
11626
11665
  );
11627
11666
  --_textarea-border-color-invalid: var(
11628
11667
  --hx-textarea-border-color-invalid,
@@ -11945,7 +11984,7 @@ export const helixTableSectionBaseStyles = css`
11945
11984
  display: flex;
11946
11985
  align-items: center;
11947
11986
  border: var(--hx-border-width-thin, 1px) solid
11948
- var(--hx-time-picker-border-color, var(--hx-color-border-strong, #8e9c98));
11987
+ var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
11949
11988
  border-radius: var(--hx-time-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
11950
11989
  background-color: var(--hx-time-picker-bg, var(--hx-color-surface-default, #ffffff));
11951
11990
  transition:
@@ -12009,7 +12048,7 @@ export const helixTableSectionBaseStyles = css`
12009
12048
  min-height: var(--hx-size-10, 2.5rem);
12010
12049
  flex-shrink: 0;
12011
12050
  border-inline-start: var(--hx-border-width-thin, 1px) solid
12012
- var(--hx-time-picker-border-color, var(--hx-color-border-strong, #8e9c98));
12051
+ var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
12013
12052
  }
12014
12053
  .field__toggle:focus-visible {
12015
12054
  outline: var(--hx-focus-ring-width, 2px) solid
@@ -12025,7 +12064,7 @@ export const helixTableSectionBaseStyles = css`
12025
12064
  z-index: var(--hx-z-index-dropdown, 1000);
12026
12065
  background-color: var(--hx-time-picker-listbox-bg, var(--hx-color-surface-default, #ffffff));
12027
12066
  border: var(--hx-border-width-thin, 1px) solid
12028
- var(--hx-time-picker-border-color, var(--hx-color-border-strong, #8e9c98));
12067
+ var(--hx-time-picker-border-color, var(--hx-color-border-strong, #66787b));
12029
12068
  border-radius: var(--hx-time-picker-border-radius, var(--hx-border-radius-md, 0.375rem));
12030
12069
  box-shadow: var(
12031
12070
  --hx-time-picker-listbox-shadow,
@@ -12191,33 +12230,38 @@ export const helixTableSectionBaseStyles = css`
12191
12230
  * error-600) because the lighter -500 fills can't pass AA against white
12192
12231
  * text in the precision-cool palette. The neutral-900 on-{role} tokens
12193
12232
  * are tuned for the lighter -500 surfaces and would fail here (e.g.
12194
- * neutral-900 on primary-600 = 3.07:1), so we hold fg at neutral-0
12195
- * directly for primary/success/danger.
12196
- * - neutral-0 on primary-600 (#0F7078) = 5.39:1 — AA pass
12197
- * - neutral-0 on success-700 (#146831) = 6.88:1 — AA pass
12198
- * (success-600 #0E8A4A on white = 4.41:1 — drifts under AA at 14px)
12199
- * - neutral-0 on error-600 (#C92A2A) = 5.92:1 — AA pass
12200
- * - neutral-900 on warning-500 (#C2711C) = 4.83:1 — AA pass
12233
+ * neutral-900 on primary-600 = 3.07:1), so the on-{role}-strong tokens
12234
+ * (neutral-0, no dark-mode flip) keep fg legible on the darker fills.
12235
+ * - text.on-primary-strong on info.bg-strong (primary-600, #0F7078) = 5.82:1
12236
+ * - text.on-success-strong on success.bg-strong (success-700, #146831) = 6.88:1
12237
+ * (success-600 #0E8A4A on white = 4.42:1 — drifts under AA at 14px)
12238
+ * - text.on-error-strong on danger.bg-strong (error-600, #C92A2A) = 5.46:1
12239
+ * - text.on-warning on warning.bg-strong (warning-500, #C2711C) = 4.83:1
12201
12240
  * (warning stays on the lighter -500 surface so on-warning works)
12241
+ *
12242
+ * 3.2.1 token-cascade: bg variants now route through surface.{role}-strong
12243
+ * semantics; fg variants route through text.on-{role}-strong (or on-warning
12244
+ * for the warning variant). Component-tier tokens are NOT bypassed — the
12245
+ * --hx-toast-bg / --hx-toast-color slots remain the single override point.
12202
12246
  */
12203
12247
  .toast--success {
12204
- --hx-toast-bg: var(--hx-color-success-700, #146831);
12205
- --hx-toast-color: var(--hx-color-neutral-0, #ffffff);
12248
+ --hx-toast-bg: var(--hx-color-surface-success-strong, #146831);
12249
+ --hx-toast-color: var(--hx-color-text-on-success-strong, #ffffff);
12206
12250
  }
12207
12251
 
12208
12252
  .toast--warning {
12209
- --hx-toast-bg: var(--hx-color-warning-500, #c2711c);
12253
+ --hx-toast-bg: var(--hx-color-surface-warning-strong, #c2711c);
12210
12254
  --hx-toast-color: var(--hx-color-text-on-warning, #0d1825);
12211
12255
  }
12212
12256
 
12213
12257
  .toast--danger {
12214
- --hx-toast-bg: var(--hx-color-error-600, #c92a2a);
12215
- --hx-toast-color: var(--hx-color-neutral-0, #ffffff);
12258
+ --hx-toast-bg: var(--hx-color-surface-danger-strong, #c92a2a);
12259
+ --hx-toast-color: var(--hx-color-text-on-error-strong, #ffffff);
12216
12260
  }
12217
12261
 
12218
12262
  .toast--info {
12219
- --hx-toast-bg: var(--hx-color-primary-600, #0f7078);
12220
- --hx-toast-color: var(--hx-color-neutral-0, #ffffff);
12263
+ --hx-toast-bg: var(--hx-color-surface-info-strong, #0f7078);
12264
+ --hx-toast-color: var(--hx-color-text-on-primary-strong, #ffffff);
12221
12265
  }
12222
12266
 
12223
12267
  /* ─── Severity Label (WCAG 1.4.1) ─── */
@@ -12310,10 +12354,16 @@ export const helixTableSectionBaseStyles = css`
12310
12354
  }
12311
12355
 
12312
12356
  /* ─── Forced Colors (Windows High Contrast) ─── */
12313
- /* Belt-and-suspenders: rich per-class HC overrides PLUS the forcedColorsSurface mixin. */
12357
+ /* Sole owner: bespoke per-class HC overrides on .toast and .toast__close.
12358
+ The shared forcedColorsSurface mixin was dropped in 3.2.1 (XOR rule);
12359
+ this block now carries the surface contract the mixin used to provide
12360
+ (background:Canvas + color:CanvasText + border:1px solid CanvasText)
12361
+ plus the per-class affordances the mixin never touched. */
12314
12362
 
12315
12363
  @media (forced-colors: active) {
12316
12364
  .toast {
12365
+ background: Canvas;
12366
+ color: CanvasText;
12317
12367
  border: 1px solid CanvasText;
12318
12368
  }
12319
12369
 
@@ -12435,10 +12485,7 @@ export const helixToastStackStyles = css`
12435
12485
 
12436
12486
  .button:focus-visible {
12437
12487
  outline: var(--hx-focus-ring-width, 2px) solid
12438
- var(
12439
- --hx-toggle-button-focus-ring-color,
12440
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1))
12441
- );
12488
+ var(--hx-toggle-button-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
12442
12489
  outline-offset: var(--hx-focus-ring-offset, 2px);
12443
12490
  }
12444
12491
 
@@ -12520,7 +12567,7 @@ export const helixToastStackStyles = css`
12520
12567
  .button--outline {
12521
12568
  --hx-toggle-button-bg: transparent;
12522
12569
  --hx-toggle-button-color: var(--hx-color-text-primary, #0d1825);
12523
- --hx-toggle-button-border-color: var(--hx-color-border-strong, #8e9c98);
12570
+ --hx-toggle-button-border-color: var(--hx-color-border-strong, #66787b);
12524
12571
  }
12525
12572
 
12526
12573
  .button--outline:hover {
@@ -12569,8 +12616,8 @@ export const helixToastStackStyles = css`
12569
12616
  --hx-toggle-button-pressed-color,
12570
12617
  var(--hx-color-primary-700, #0f6363)
12571
12618
  );
12572
- --hx-toggle-button-border-color: var(--hx-color-primary-400, #6ab1b1);
12573
- box-shadow: inset 0 0 0 1px var(--hx-color-primary-400, #6ab1b1);
12619
+ --hx-toggle-button-border-color: var(--hx-color-primary-600, #0f7078);
12620
+ box-shadow: inset 0 0 0 1px var(--hx-color-primary-600, #0f7078);
12574
12621
  }
12575
12622
 
12576
12623
  /* Ghost pressed: subtle neutral fill, matching hover behavior as a baseline. */
@@ -12796,10 +12843,7 @@ export const helixToastStackStyles = css`
12796
12843
 
12797
12844
  .mobile-toggle:focus-visible {
12798
12845
  outline: var(--hx-focus-ring-width, 2px) solid
12799
- var(
12800
- --hx-top-nav-focus-ring-color,
12801
- var(--hx-focus-ring-color, var(--hx-color-primary-500, #429797))
12802
- );
12846
+ var(--hx-top-nav-focus-ring-color, var(--hx-focus-ring-color, #0f7078));
12803
12847
  outline-offset: var(--hx-focus-ring-offset, 2px);
12804
12848
  }
12805
12849
 
@@ -12965,8 +13009,7 @@ export const helixToastStackStyles = css`
12965
13009
  }
12966
13010
 
12967
13011
  .tree:focus-visible {
12968
- outline: var(--hx-focus-ring-width, 2px) solid
12969
- var(--hx-focus-ring-color, var(--hx-color-primary-400, #6ab1b1));
13012
+ outline: var(--hx-focus-ring-width, 2px) solid var(--hx-focus-ring-color, #0f7078);
12970
13013
  outline-offset: var(--hx-focus-ring-offset, 2px);
12971
13014
  border-radius: var(--hx-border-radius-sm, 0.25rem);
12972
13015
  }